http://packetstormsecurity.org/UNIX/admin/xscreensaver-3.28.tar.gz
authorZygo Blaxell <zblaxell@hungrycats.org>
Mon, 2 Mar 2009 05:42:44 +0000 (00:42 -0500)
committerZygo Blaxell <zblaxell@faye.furryterror.org>
Fri, 8 Feb 2013 17:53:35 +0000 (12:53 -0500)
-rw-r--r-- 1 zblaxell zblaxell 1497039 Feb  2  2001 xscreensaver-3.28.tar.gz
c1a0de2966f30d56c1660519d450b87e4892c95a  xscreensaver-3.28.tar.gz

65 files changed:
README
configure
configure.in
driver/Makefile.in
driver/XScreenSaver.ad.in
driver/XScreenSaver_ad.h
driver/demo-Gtk-widgets.c
driver/demo-Gtk.c
driver/demo-Xm.c
driver/dpms.c [new file with mode: 0644]
driver/lock.c
driver/prefs.c
driver/prefs.h
driver/splash.c
driver/test-passwd.c
driver/timers.c
driver/windows.c
driver/xscreensaver-command.man
driver/xscreensaver-demo.glade
driver/xscreensaver-demo.man
driver/xscreensaver.c
driver/xscreensaver.h
driver/xscreensaver.kss
driver/xscreensaver.man
hacks/Makefile.in
hacks/bsod.c
hacks/bsod.man
hacks/compile_axp.com
hacks/compile_decc.com
hacks/glx/Makefile.in
hacks/glx/glut_roman.h [new file with mode: 0644]
hacks/glx/glut_stroke.c [new file with mode: 0644]
hacks/glx/glut_swidth.c [new file with mode: 0644]
hacks/glx/glutstroke.h [new file with mode: 0644]
hacks/glx/stairs.c
hacks/glx/starwars.c [new file with mode: 0644]
hacks/glx/starwars.man [new file with mode: 0644]
hacks/glx/stonerview-move.c [new file with mode: 0644]
hacks/glx/stonerview-move.h [new file with mode: 0644]
hacks/glx/stonerview-osc.c [new file with mode: 0644]
hacks/glx/stonerview-osc.h [new file with mode: 0644]
hacks/glx/stonerview-view.c [new file with mode: 0644]
hacks/glx/stonerview.c [new file with mode: 0644]
hacks/grav.c
hacks/grav.man
hacks/hyperball.man [new file with mode: 0644]
hacks/link_axp.com
hacks/link_decc.com
hacks/maze.c
hacks/xroger-hack.c [deleted file]
hacks/xroger.man [deleted file]
hacks/zoom.c
setup.com
utils/Makefile.in
utils/compile_axp.com
utils/compile_decc.com
utils/logo.c [new file with mode: 0644]
utils/logo.eps [new file with mode: 0644]
utils/logo.gif [new file with mode: 0644]
utils/logo.xpm [new file with mode: 0644]
utils/version.h
utils/visual-gl.c
utils/xroger.c [deleted file]
xscreensaver.lsm
xscreensaver.spec

diff --git a/README b/README
index b5f48828059be3baef791bd05ab5f0ca3622cb54..b81c5d33f46b9d260562bd841edb82e47dde61ac 100644 (file)
--- a/README
+++ b/README
@@ -38,14 +38,11 @@ Getting Started:
 You can try out xscreensaver like so:
 
        xscreensaver &
-       xscreensaver-command -demo
-
-After a few seconds, the screen should go black, and a dialog box should
-appear in the upper right corner.  This is "Demo Mode".
+       xscreensaver-demo
 
 Note: unlike `xlock', xscreensaver has a client-server model: the
 `xscreensaver' process is a daemon that runs in the background; it is
-controlled by the foreground `xscreensaver-command' program.
+controlled by the foreground `xscreensaver-demo' program.
 
 xscreensaver has an extensive manual -- please read it!
 
@@ -77,6 +74,21 @@ http://www.jwz.org/xscreensaver/.
 
                               ============
 
+Changes since 3.27:   * New logo for xscreensaver!
+                      * New hacks, `starwars' and `stonerview'.
+                      * Made the motion of the bouncing ball in `stairs' be a
+                        little less jerky.
+                      * Made newly-added screenhacks be added to .xscreensaver
+                        automatically: if there are hacks in the app-defaults
+                        file that are not also in ~/.xscreensaver, they will
+                        be added to the end of the list.
+                      * Redid the `Screensaver Options' part of the control
+                        panel; xscreensaver now lets you configure your DPMS
+                        settings.
+                      * Fixed some Makefile problems with non-GL builds.
+                      * Fixed detection of MesaGL for version 3.3.
+                      * Better workaround to Red Hat 7.0's broken gcc.
+                      * Added Sparc Solaris kernel panic to `bsod'.
 Changes since 3.26:   * New hacks: `zoom' and `whirlwindwarp'.
                       * Fixed a free-memory-reference bug in `sonar'.
                       * Better error handling when there are no suitable GL
index ff66add4e8ab01731fae8dbed89d7a38f54ea016..44721d4aa43f887888fcdee71c5f0ba95cb3d9c3 100755 (executable)
--- a/configure
+++ b/configure
@@ -636,13 +636,20 @@ done
 
 ###############################################################################
 #
-#       Function to work around the fucked up gcc 2.96 included in Red Hat 7.0
+#       Functions to figure out how to disable // comments in ANSI C code.
+#
+#       (With recent gcc, this is done with "-std=c89".  With older gcc, this
+#       is done by passing "-lang-c89" to cpp, by passing "-Wp,-lang-c89" to
+#       gcc.  Old gcc doesn't support -std, and new gcc doesn't support -lang.
+#       so much for compatibility!)
 #
 ###############################################################################
 
 
 
 
+
+
 ###############################################################################
 #
 #       Function to figure out how to create directory trees.
@@ -806,7 +813,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:821: checking host system type" >&5
+echo "configure:828: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -829,7 +836,7 @@ echo "$ac_t""$host" 1>&6
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:844: checking for $ac_word" >&5
+echo "configure:851: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -859,7 +866,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:874: checking for $ac_word" >&5
+echo "configure:881: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -910,7 +917,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:925: checking for $ac_word" >&5
+echo "configure:932: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -942,7 +949,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:957: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:964: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -953,12 +960,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 968 "configure"
+#line 975 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -984,12 +991,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:999: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1006: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1004: checking whether we are using GNU C" >&5
+echo "configure:1011: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -998,7 +1005,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1017,7 +1024,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1032: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1039: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1051,7 +1058,7 @@ fi
 
   if test -z "$GCC"; then
     echo $ac_n "checking how to request ANSI compilation""... $ac_c" 1>&6
-echo "configure:1066: checking how to request ANSI compilation" >&5
+echo "configure:1073: checking how to request ANSI compilation" >&5
     case "$host" in
       *-hpux* )
         echo "$ac_t""HPUX: adding -Ae" 1>&6
@@ -1074,16 +1081,16 @@ echo "configure:1066: checking how to request ANSI compilation" >&5
   fi
 
   echo $ac_n "checking whether the compiler works on ANSI C""... $ac_c" 1>&6
-echo "configure:1089: checking whether the compiler works on ANSI C" >&5
+echo "configure:1096: checking whether the compiler works on ANSI C" >&5
   if test "$cross_compiling" = yes; then
   { echo "configure: error: Couldn't build even a trivial ANSI C program: check CC." 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 1094 "configure"
+#line 1101 "configure"
 #include "confdefs.h"
  main(int ac, char **av) { return 0; } 
 EOF
-if { (eval echo configure:1098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "$ac_t""yes" 1>&6
 else
@@ -1100,8 +1107,6 @@ fi
   if test -n "$GCC"; then
     echo "$ac_t""Turning on gcc compiler warnings." 1>&6
     CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
-    echo "$ac_t""Disabling C++ comments in ANSI C code." 1>&6
-    CC="$CC -Wp,-lang-c89"
   else
     case "$host" in
       *-irix5* |*-irix6.0-3* )
     esac
   fi
 
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1133: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    # This must be in double quotes, not single quotes, because CPP may get
-  # substituted into the Makefile and "${CC-cc}" will confuse make.
-  CPP="${CC-cc} -E"
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp.
-  cat > conftest.$ac_ext <<EOF
-#line 1148 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -E -traditional-cpp"
-  cat > conftest.$ac_ext <<EOF
-#line 1165 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -nologo -E"
-  cat > conftest.$ac_ext <<EOF
-#line 1182 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-  ac_cv_prog_CPP="$CPP"
-fi
-  CPP="$ac_cv_prog_CPP"
-else
-  ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
 if test -n "$GCC"; then
-   echo $ac_n "checking for Red Hat GCC lossage""... $ac_c" 1>&6
-echo "configure:1214: checking for Red Hat GCC lossage" >&5
-   if eval "test \"`echo '$''{'ac_cv_red_hat_gcc_lossage'+set}'`\" = set"; then
+   if test -n "$GCC"; then
+   echo $ac_n "checking whether gcc accepts -std""... $ac_c" 1>&6
+echo "configure:1140: checking whether gcc accepts -std" >&5
+if eval "test \"`echo '$''{'ac_cv_gcc_accepts_std'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  ac_cv_red_hat_gcc_lossage=no
-      cat > conftest.$ac_ext <<EOF
-#line 1220 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-      #if !defined(__USE_POSIX) || !defined(__USE_SVID) || !defined(__USE_BSD)
-        lossage
-      #endif
-     
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "lossage" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_red_hat_gcc_lossage=yes
-fi
-rm -f conftest*
-
-    
+  if ( gcc -E -std=c89 - </dev/null 2>&1 >/dev/null | \
+          grep unrecognized >/dev/null ); then
+       ac_cv_gcc_accepts_std=no
+     else
+       ac_cv_gcc_accepts_std=yes
+     fi
 fi
 
+echo "$ac_t""$ac_cv_gcc_accepts_std" 1>&6
+   ac_gcc_accepts_std="$ac_cv_gcc_accepts_std"
+  fi
 
-    ac_red_hat_gcc_lossage=$ac_cv_red_hat_gcc_lossage
-    if test "$ac_cv_red_hat_gcc_lossage" = yes ; then
-      rh_defines="-D_POSIX_SOURCE -D_SVID_SOURCE -D_BSD_SOURCE";
-      CC="$CC $rh_defines"
-      echo "$ac_t""yes: need $rh_defines" 1>&6
-    else
-      echo "$ac_t""no" 1>&6
-    fi
+   echo "$ac_t""Disabling C++ comments in ANSI C code." 1>&6
+   if test "$ac_gcc_accepts_std" = yes ; then
+     #
+     # -std=c89 defines __STRICT_ANSI__, which we don't want.
+     # (That appears to be the only additional preprocessor symbol
+     # it defines, in addition to the syntax changes it makes.)
+     #
+     # -std=gnu89 is no good, because // comments were a GNU
+     # extension before they were in the ANSI C 99 spec...
+     #
+     CC="$CC -std=c89 -U__STRICT_ANSI__"
+   else
+     # The old way:
+     CC="$CC -Wp,-lang-c89"
+   fi
   fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1250: checking how to run the C preprocessor" >&5
+echo "configure:1174: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1250,13 +1174,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1265 "configure"
+#line 1189 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1195: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1267,13 +1191,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1282 "configure"
+#line 1206 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1212: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1284,13 +1208,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1299 "configure"
+#line 1223 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1315,12 +1239,12 @@ fi
 echo "$ac_t""$CPP" 1>&6
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1330: checking for working const" >&5
+echo "configure:1254: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1335 "configure"
+#line 1259 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1369,7 +1293,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:1384: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1308: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -1390,21 +1314,21 @@ EOF
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1405: checking for inline" >&5
+echo "configure:1329: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 1412 "configure"
+#line 1336 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:1419: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1343: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -1431,7 +1355,7 @@ esac
 
 ac_bc_result=`echo 6+9 | bc 2>/dev/null`
   echo $ac_n "checking for bc""... $ac_c" 1>&6
-echo "configure:1446: checking for bc" >&5
+echo "configure:1370: checking for bc" >&5
   if test "$ac_bc_result" = "15" ; then
     echo "$ac_t""yes" 1>&6
   else
@@ -1456,7 +1380,7 @@ echo "configure:1446: checking for bc" >&5
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1471: checking for a BSD compatible install" >&5
+echo "configure:1395: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1509,7 +1433,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 echo $ac_n "checking whether \"\${INSTALL} -d\" creates intermediate directories""... $ac_c" 1>&6
-echo "configure:1524: checking whether \"\${INSTALL} -d\" creates intermediate directories" >&5
+echo "configure:1448: checking whether \"\${INSTALL} -d\" creates intermediate directories" >&5
 if eval "test \"`echo '$''{'ac_cv_install_d_creates_dirs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1531,7 +1455,7 @@ echo "$ac_t""$ac_cv_install_d_creates_dirs" 1>&6
 
   if test "$ac_cv_install_d_creates_dirs" = no ; then
     echo $ac_n "checking whether \"mkdir -p\" creates intermediate directories""... $ac_c" 1>&6
-echo "configure:1546: checking whether \"mkdir -p\" creates intermediate directories" >&5
+echo "configure:1470: checking whether \"mkdir -p\" creates intermediate directories" >&5
 if eval "test \"`echo '$''{'ac_cv_mkdir_p_creates_dirs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1562,7 +1486,7 @@ echo "$ac_t""$ac_cv_mkdir_p_creates_dirs" 1>&6
   fi
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1577: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1501: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1591,12 +1515,12 @@ fi
 
 # random libc stuff
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1606: checking for ANSI C header files" >&5
+echo "configure:1530: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1611 "configure"
+#line 1535 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1604,7 +1528,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1619: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1543: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1621,7 +1545,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1636 "configure"
+#line 1560 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1639,7 +1563,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1654 "configure"
+#line 1578 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1660,7 +1584,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1675 "configure"
+#line 1599 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1671,7 +1595,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:1686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1698,17 +1622,17 @@ for ac_hdr in unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1713: checking for $ac_hdr" >&5
+echo "configure:1637: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1718 "configure"
+#line 1642 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1723: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1735,12 +1659,12 @@ fi
 done
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:1750: checking for mode_t" >&5
+echo "configure:1674: checking for mode_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1755 "configure"
+#line 1679 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1768,12 +1692,12 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:1783: checking for pid_t" >&5
+echo "configure:1707: checking for pid_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1788 "configure"
+#line 1712 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1801,12 +1725,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1816: checking for size_t" >&5
+echo "configure:1740: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1821 "configure"
+#line 1745 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1834,12 +1758,12 @@ EOF
 fi
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:1849: checking return type of signal handlers" >&5
+echo "configure:1773: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1854 "configure"
+#line 1778 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -1856,7 +1780,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:1871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -1875,12 +1799,12 @@ EOF
 
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:1890: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:1814: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1895 "configure"
+#line 1819 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -1889,7 +1813,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:1904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -1910,12 +1834,12 @@ EOF
 fi
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:1925: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:1849: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1930 "configure"
+#line 1854 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -1931,7 +1855,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:1946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -1956,12 +1880,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:1971: checking for $ac_hdr that defines DIR" >&5
+echo "configure:1895: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1976 "configure"
+#line 1900 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -1969,7 +1893,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:1984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -1994,7 +1918,7 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:2009: checking for opendir in -ldir" >&5
+echo "configure:1933: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2002,7 +1926,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2017 "configure"
+#line 1941 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2013,7 +1937,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:2028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2035,7 +1959,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:2050: checking for opendir in -lx" >&5
+echo "configure:1974: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2043,7 +1967,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2058 "configure"
+#line 1982 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2054,7 +1978,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:2069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2077,12 +2001,12 @@ fi
 fi
 
 echo $ac_n "checking how to call gettimeofday""... $ac_c" 1>&6
-echo "configure:2092: checking how to call gettimeofday" >&5
+echo "configure:2016: checking how to call gettimeofday" >&5
   if eval "test \"`echo '$''{'ac_cv_gettimeofday_args'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2097 "configure"
+#line 2021 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
                     #include <sys/time.h>
@@ -2091,7 +2015,7 @@ struct timeval tv; struct timezone tzp;
                     gettimeofday(&tv, &tzp);
 ; return 0; }
 EOF
-if { (eval echo configure:2106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_gettimeofday_args=2
 else
@@ -2099,7 +2023,7 @@ else
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 2114 "configure"
+#line 2038 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
                                     #include <sys/time.h>
@@ -2107,7 +2031,7 @@ int main() {
 struct timeval tv; gettimeofday(&tv);
 ; return 0; }
 EOF
-if { (eval echo configure:2122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_gettimeofday_args=1
 else
@@ -2146,12 +2070,12 @@ EOF
 for ac_func in select fcntl uname nice setpriority getcwd getwd putenv
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2161: checking for $ac_func" >&5
+echo "configure:2085: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2166 "configure"
+#line 2090 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2174,7 +2098,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2202,12 +2126,12 @@ done
 for ac_func in sigaction syslog realpath
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2217: checking for $ac_func" >&5
+echo "configure:2141: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2222 "configure"
+#line 2146 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2230,7 +2154,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2255,12 +2179,12 @@ fi
 done
 
 echo $ac_n "checking for struct icmp""... $ac_c" 1>&6
-echo "configure:2270: checking for struct icmp" >&5
+echo "configure:2194: checking for struct icmp" >&5
 if eval "test \"`echo '$''{'ac_cv_have_icmp'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2275 "configure"
+#line 2199 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
                    #include <stdio.h>
@@ -2295,7 +2219,7 @@ struct icmp i;
                    ip.ip_hl = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:2310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2234: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_icmp=yes
 else
@@ -2315,12 +2239,12 @@ EOF
 
  fi
 echo $ac_n "checking for struct icmphdr""... $ac_c" 1>&6
-echo "configure:2330: checking for struct icmphdr" >&5
+echo "configure:2254: checking for struct icmphdr" >&5
 if eval "test \"`echo '$''{'ac_cv_have_icmphdr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2335 "configure"
+#line 2259 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
                    #include <stdio.h>
@@ -2355,7 +2279,7 @@ struct icmphdr i;
                    ip.ip_hl = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:2370: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_icmphdr=yes
 else
@@ -2378,17 +2302,17 @@ for ac_hdr in crypt.h sys/select.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2393: checking for $ac_hdr" >&5
+echo "configure:2317: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2398 "configure"
+#line 2322 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2327: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2419,7 +2343,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2434: checking for $ac_word" >&5
+echo "configure:2358: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2458,7 +2382,7 @@ done
     PERL_VERSION=0
   else
     echo $ac_n "checking perl version""... $ac_c" 1>&6
-echo "configure:2473: checking perl version" >&5
+echo "configure:2397: checking perl version" >&5
 if eval "test \"`echo '$''{'ac_cv_perl_version'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2480,7 +2404,7 @@ fi
 # Uses ac_ vars as temps to allow command line to override cache and checks.
 # --without-x overrides everything else, but does not touch the cache.
 echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:2495: checking for X" >&5
+echo "configure:2419: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -2542,12 +2466,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 2557 "configure"
+#line 2481 "configure"
 #include "confdefs.h"
 #include <$x_direct_test_include>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2616,14 +2540,14 @@ if test "$ac_x_libraries" = NO; then
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2631 "configure"
+#line 2555 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:2638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -2729,17 +2653,17 @@ else
     case "`(uname -sr) 2>/dev/null`" in
     "SunOS 5"*)
       echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
-echo "configure:2744: checking whether -R must be followed by a space" >&5
+echo "configure:2668: checking whether -R must be followed by a space" >&5
       ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
       cat > conftest.$ac_ext <<EOF
-#line 2747 "configure"
+#line 2671 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -2755,14 +2679,14 @@ rm -f conftest*
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 2770 "configure"
+#line 2694 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -2794,7 +2718,7 @@ rm -f conftest*
     # libraries were built with DECnet support.  And karl@cs.umb.edu says
     # the Alpha needs dnet_stub (dnet does not exist).
     echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:2809: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:2733: checking for dnet_ntoa in -ldnet" >&5
 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2802,7 +2726,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2817 "configure"
+#line 2741 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2813,7 +2737,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2835,7 +2759,7 @@ fi
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
       echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
-echo "configure:2850: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:2774: checking for dnet_ntoa in -ldnet_stub" >&5
 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2843,7 +2767,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet_stub  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2858 "configure"
+#line 2782 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2854,7 +2778,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2883,12 +2807,12 @@ fi
     # The nsl library prevents programs from opening the X display
     # on Irix 5.2, according to dickey@clark.net.
     echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:2898: checking for gethostbyname" >&5
+echo "configure:2822: checking for gethostbyname" >&5
 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2903 "configure"
+#line 2827 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -2911,7 +2835,7 @@ gethostbyname();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -2932,7 +2856,7 @@ fi
 
     if test $ac_cv_func_gethostbyname = no; then
       echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:2947: checking for gethostbyname in -lnsl" >&5
+echo "configure:2871: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2940,7 +2864,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2955 "configure"
+#line 2879 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2951,7 +2875,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:2966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2981,12 +2905,12 @@ fi
     # -lsocket must be given before -lnsl if both are needed.
     # We assume that if connect needs -lnsl, so does gethostbyname.
     echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:2996: checking for connect" >&5
+echo "configure:2920: checking for connect" >&5
 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3001 "configure"
+#line 2925 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -3009,7 +2933,7 @@ connect();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -3030,7 +2954,7 @@ fi
 
     if test $ac_cv_func_connect = no; then
       echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:3045: checking for connect in -lsocket" >&5
+echo "configure:2969: checking for connect in -lsocket" >&5
 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3038,7 +2962,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3053 "configure"
+#line 2977 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3049,7 +2973,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:3064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3073,12 +2997,12 @@ fi
 
     # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
     echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:3088: checking for remove" >&5
+echo "configure:3012: checking for remove" >&5
 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3093 "configure"
+#line 3017 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -3101,7 +3025,7 @@ remove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -3122,7 +3046,7 @@ fi
 
     if test $ac_cv_func_remove = no; then
       echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:3137: checking for remove in -lposix" >&5
+echo "configure:3061: checking for remove in -lposix" >&5
 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3130,7 +3054,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3145 "configure"
+#line 3069 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3141,7 +3065,7 @@ int main() {
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:3156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3165,12 +3089,12 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:3180: checking for shmat" >&5
+echo "configure:3104: checking for shmat" >&5
 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3185 "configure"
+#line 3109 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -3193,7 +3117,7 @@ shmat();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -3214,7 +3138,7 @@ fi
 
     if test $ac_cv_func_shmat = no; then
       echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:3229: checking for shmat in -lipc" >&5
+echo "configure:3153: checking for shmat in -lipc" >&5
 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3222,7 +3146,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lipc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3237 "configure"
+#line 3161 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3233,7 +3157,7 @@ int main() {
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:3248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3266,7 +3190,7 @@ fi
   # libraries we check for below, so use a different variable.
   #  --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
   echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
-echo "configure:3281: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:3205: checking for IceConnectionNumber in -lICE" >&5
 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3274,7 +3198,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3289 "configure"
+#line 3213 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3285,7 +3209,7 @@ int main() {
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:3300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3316,7 +3240,7 @@ fi
 
 
     echo $ac_n "checking for X app-defaults directory""... $ac_c" 1>&6
-echo "configure:3331: checking for X app-defaults directory" >&5
+echo "configure:3255: checking for X app-defaults directory" >&5
 if eval "test \"`echo '$''{'ac_cv_x_app_defaults'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3515,7 +3439,7 @@ case "$host" in
 
         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
         echo $ac_n "checking for regcmp in -lgen""... $ac_c" 1>&6
-echo "configure:3530: checking for regcmp in -lgen" >&5
+echo "configure:3454: checking for regcmp in -lgen" >&5
 ac_lib_var=`echo gen'_'regcmp | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3523,7 +3447,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgen  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3538 "configure"
+#line 3462 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3534,7 +3458,7 @@ int main() {
 regcmp()
 ; return 0; }
 EOF
-if { (eval echo configure:3549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3558,7 +3482,7 @@ fi
     ;;
   esac
 echo $ac_n "checking for XPointer""... $ac_c" 1>&6
-echo "configure:3573: checking for XPointer" >&5
+echo "configure:3497: checking for XPointer" >&5
 if eval "test \"`echo '$''{'ac_cv_xpointer'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3569,14 +3493,14 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 3584 "configure"
+#line 3508 "configure"
 #include "confdefs.h"
 #include <X11/Xlib.h>
 int main() {
 XPointer foo = (XPointer) 0;
 ; return 0; }
 EOF
-if { (eval echo configure:3591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_xpointer=yes
 else
@@ -3614,17 +3538,17 @@ have_xmu=no
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/Xmu/Error.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xmu/Error.h""... $ac_c" 1>&6
-echo "configure:3629: checking for X11/Xmu/Error.h" >&5
+echo "configure:3553: checking for X11/Xmu/Error.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3634 "configure"
+#line 3558 "configure"
 #include "confdefs.h"
 #include <X11/Xmu/Error.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3639: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3675,7 +3599,7 @@ if test "$have_xmu" = yes ; then
   case "$host" in
     *-sunos4*)
     echo $ac_n "checking for the SunOS 4.1.x _get_wmShellWidgetClass bug""... $ac_c" 1>&6
-echo "configure:3690: checking for the SunOS 4.1.x _get_wmShellWidgetClass bug" >&5
+echo "configure:3614: checking for the SunOS 4.1.x _get_wmShellWidgetClass bug" >&5
 if eval "test \"`echo '$''{'ac_cv_sunos_xmu_bug'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3688,14 +3612,14 @@ else
                     # with X libraries because we know it's SunOS.
                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
                     cat > conftest.$ac_ext <<EOF
-#line 3703 "configure"
+#line 3627 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_sunos_xmu_bug=no
 else
@@ -3711,21 +3635,21 @@ fi
 echo "$ac_t""$ac_cv_sunos_xmu_bug" 1>&6
     if test "$ac_cv_sunos_xmu_bug" = yes ; then
       echo $ac_n "checking whether the compiler understands -static""... $ac_c" 1>&6
-echo "configure:3726: checking whether the compiler understands -static" >&5
+echo "configure:3650: checking whether the compiler understands -static" >&5
 if eval "test \"`echo '$''{'ac_cv_ld_static'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LDFLAGS="$LDFLAGS"
                       LDFLAGS="$LDFLAGS -static"
                       cat > conftest.$ac_ext <<EOF
-#line 3733 "configure"
+#line 3657 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_ld_static=yes
 else
@@ -3808,7 +3732,7 @@ fi
 
     /*)
      echo $ac_n "checking for SGI SCREEN_SAVER headers""... $ac_c" 1>&6
-echo "configure:3823: checking for SGI SCREEN_SAVER headers" >&5
+echo "configure:3747: checking for SGI SCREEN_SAVER headers" >&5
      d=$with_sgi/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -3818,7 +3742,7 @@ echo "configure:3823: checking for SGI SCREEN_SAVER headers" >&5
      fi
 
      echo $ac_n "checking for SGI SCREEN_SAVER libs""... $ac_c" 1>&6
-echo "configure:3833: checking for SGI SCREEN_SAVER libs" >&5
+echo "configure:3757: checking for SGI SCREEN_SAVER libs" >&5
      d=$with_sgi/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -3851,17 +3775,17 @@ if test "$with_sgi" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/XScreenSaver.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/XScreenSaver.h""... $ac_c" 1>&6
-echo "configure:3866: checking for X11/extensions/XScreenSaver.h" >&5
+echo "configure:3790: checking for X11/extensions/XScreenSaver.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3871 "configure"
+#line 3795 "configure"
 #include "confdefs.h"
 #include <X11/extensions/XScreenSaver.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3876: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3800: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3918,7 +3842,7 @@ fi
 
     /*)
      echo $ac_n "checking for MIT-SCREEN-SAVER headers""... $ac_c" 1>&6
-echo "configure:3933: checking for MIT-SCREEN-SAVER headers" >&5
+echo "configure:3857: checking for MIT-SCREEN-SAVER headers" >&5
      d=$with_mit/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -3928,7 +3852,7 @@ echo "configure:3933: checking for MIT-SCREEN-SAVER headers" >&5
      fi
 
      echo $ac_n "checking for MIT-SCREEN-SAVER libs""... $ac_c" 1>&6
-echo "configure:3943: checking for MIT-SCREEN-SAVER libs" >&5
+echo "configure:3867: checking for MIT-SCREEN-SAVER libs" >&5
      d=$with_mit/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -3961,17 +3885,17 @@ if test "$with_mit" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/scrnsaver.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/scrnsaver.h""... $ac_c" 1>&6
-echo "configure:3976: checking for X11/extensions/scrnsaver.h" >&5
+echo "configure:3900: checking for X11/extensions/scrnsaver.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3981 "configure"
+#line 3905 "configure"
 #include "confdefs.h"
 #include <X11/extensions/scrnsaver.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3910: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4016,7 +3940,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for XScreenSaverRegister in -lXext""... $ac_c" 1>&6
-echo "configure:4031: checking for XScreenSaverRegister in -lXext" >&5
+echo "configure:3955: checking for XScreenSaverRegister in -lXext" >&5
 ac_lib_var=`echo Xext'_'XScreenSaverRegister | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4024,7 +3948,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4039 "configure"
+#line 3963 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4035,7 +3959,7 @@ int main() {
 XScreenSaverRegister()
 ; return 0; }
 EOF
-if { (eval echo configure:4050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4082,7 +4006,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for XScreenSaverRegister in -lXExExt""... $ac_c" 1>&6
-echo "configure:4097: checking for XScreenSaverRegister in -lXExExt" >&5
+echo "configure:4021: checking for XScreenSaverRegister in -lXExExt" >&5
 ac_lib_var=`echo XExExt'_'XScreenSaverRegister | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4090,7 +4014,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXExExt -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4105 "configure"
+#line 4029 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4101,7 +4025,7 @@ int main() {
 XScreenSaverRegister()
 ; return 0; }
 EOF
-if { (eval echo configure:4116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4151,7 +4075,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for XScreenSaverRegister in -lXss""... $ac_c" 1>&6
-echo "configure:4166: checking for XScreenSaverRegister in -lXss" >&5
+echo "configure:4090: checking for XScreenSaverRegister in -lXss" >&5
 ac_lib_var=`echo Xss'_'XScreenSaverRegister | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4159,7 +4083,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXss -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4174 "configure"
+#line 4098 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4170,7 +4094,7 @@ int main() {
 XScreenSaverRegister()
 ; return 0; }
 EOF
-if { (eval echo configure:4185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4236,7 +4160,7 @@ fi
 
     /*)
      echo $ac_n "checking for XIDLE headers""... $ac_c" 1>&6
-echo "configure:4251: checking for XIDLE headers" >&5
+echo "configure:4175: checking for XIDLE headers" >&5
      d=$with_xidle/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -4246,7 +4170,7 @@ echo "configure:4251: checking for XIDLE headers" >&5
      fi
 
      echo $ac_n "checking for XIDLE libs""... $ac_c" 1>&6
-echo "configure:4261: checking for XIDLE libs" >&5
+echo "configure:4185: checking for XIDLE libs" >&5
      d=$with_xidle/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -4279,17 +4203,17 @@ if test "$with_xidle" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/xidle.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/xidle.h""... $ac_c" 1>&6
-echo "configure:4294: checking for X11/extensions/xidle.h" >&5
+echo "configure:4218: checking for X11/extensions/xidle.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4299 "configure"
+#line 4223 "configure"
 #include "confdefs.h"
 #include <X11/extensions/xidle.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4304: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4228: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4345,7 +4269,7 @@ fi
 
     /*)
      echo $ac_n "checking for SGI-VIDEO-CONTROL headers""... $ac_c" 1>&6
-echo "configure:4360: checking for SGI-VIDEO-CONTROL headers" >&5
+echo "configure:4284: checking for SGI-VIDEO-CONTROL headers" >&5
      d=$with_sgivc/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -4355,7 +4279,7 @@ echo "configure:4360: checking for SGI-VIDEO-CONTROL headers" >&5
      fi
 
      echo $ac_n "checking for SGI-VIDEO-CONTROL libs""... $ac_c" 1>&6
-echo "configure:4370: checking for SGI-VIDEO-CONTROL libs" >&5
+echo "configure:4294: checking for SGI-VIDEO-CONTROL libs" >&5
      d=$with_sgivc/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -4390,17 +4314,17 @@ if test "$with_sgivc" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/XSGIvc.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/XSGIvc.h""... $ac_c" 1>&6
-echo "configure:4405: checking for X11/extensions/XSGIvc.h" >&5
+echo "configure:4329: checking for X11/extensions/XSGIvc.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4410 "configure"
+#line 4334 "configure"
 #include "confdefs.h"
 #include <X11/extensions/XSGIvc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4415: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4444,7 +4368,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for XSGIvcQueryGammaMap in -lXsgivc""... $ac_c" 1>&6
-echo "configure:4459: checking for XSGIvcQueryGammaMap in -lXsgivc" >&5
+echo "configure:4383: checking for XSGIvcQueryGammaMap in -lXsgivc" >&5
 ac_lib_var=`echo Xsgivc'_'XSGIvcQueryGammaMap | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4452,7 +4376,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXsgivc -lXext -lX11 $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4467 "configure"
+#line 4391 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4463,7 +4387,7 @@ int main() {
 XSGIvcQueryGammaMap()
 ; return 0; }
 EOF
-if { (eval echo configure:4478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4528,7 +4452,7 @@ fi
 
     /*)
      echo $ac_n "checking for DPMS headers""... $ac_c" 1>&6
-echo "configure:4543: checking for DPMS headers" >&5
+echo "configure:4467: checking for DPMS headers" >&5
      d=$with_dpms/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -4538,7 +4462,7 @@ echo "configure:4543: checking for DPMS headers" >&5
      fi
 
      echo $ac_n "checking for DPMS libs""... $ac_c" 1>&6
-echo "configure:4553: checking for DPMS libs" >&5
+echo "configure:4477: checking for DPMS libs" >&5
      d=$with_dpms/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -4573,17 +4497,17 @@ if test "$with_dpms" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/dpms.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/dpms.h""... $ac_c" 1>&6
-echo "configure:4588: checking for X11/extensions/dpms.h" >&5
+echo "configure:4512: checking for X11/extensions/dpms.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4593 "configure"
+#line 4517 "configure"
 #include "confdefs.h"
 #include <X11/extensions/dpms.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4598: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4629,7 +4553,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for DPMSInfo in -lXext""... $ac_c" 1>&6
-echo "configure:4644: checking for DPMSInfo in -lXext" >&5
+echo "configure:4568: checking for DPMSInfo in -lXext" >&5
 ac_lib_var=`echo Xext'_'DPMSInfo | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4637,7 +4561,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXext -lXext -lX11 $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4652 "configure"
+#line 4576 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4648,7 +4572,7 @@ int main() {
 DPMSInfo()
 ; return 0; }
 EOF
-if { (eval echo configure:4663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4694,7 +4618,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for DPMSInfo in -lXdpms""... $ac_c" 1>&6
-echo "configure:4709: checking for DPMSInfo in -lXdpms" >&5
+echo "configure:4633: checking for DPMSInfo in -lXdpms" >&5
 ac_lib_var=`echo Xdpms'_'DPMSInfo | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4702,7 +4626,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXdpms -lXext -lX11 $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4717 "configure"
+#line 4641 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4713,7 +4637,7 @@ int main() {
 DPMSInfo()
 ; return 0; }
 EOF
-if { (eval echo configure:4728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4728,7 +4652,7 @@ LIBS="$ac_save_LIBS"
 fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"
+  have_dpms=yes; XDPMS_LIBS="-lXdpms"
 else
   echo "$ac_t""no" 1>&6
 true
@@ -4780,7 +4704,7 @@ fi
 
     /*)
      echo $ac_n "checking for xf86vmode headers""... $ac_c" 1>&6
-echo "configure:4795: checking for xf86vmode headers" >&5
+echo "configure:4719: checking for xf86vmode headers" >&5
      d=$with_xf86vmode/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -4790,7 +4714,7 @@ echo "configure:4795: checking for xf86vmode headers" >&5
      fi
 
      echo $ac_n "checking for xf86vmode libs""... $ac_c" 1>&6
-echo "configure:4805: checking for xf86vmode libs" >&5
+echo "configure:4729: checking for xf86vmode libs" >&5
      d=$with_xf86vmode/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -4825,17 +4749,17 @@ if test "$with_xf86vmode" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/xf86vmode.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/xf86vmode.h""... $ac_c" 1>&6
-echo "configure:4840: checking for X11/extensions/xf86vmode.h" >&5
+echo "configure:4764: checking for X11/extensions/xf86vmode.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4845 "configure"
+#line 4769 "configure"
 #include "confdefs.h"
 #include <X11/extensions/xf86vmode.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4850: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4774: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4879,7 +4803,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for XF86VidModeGetViewPort in -lXxf86vm""... $ac_c" 1>&6
-echo "configure:4894: checking for XF86VidModeGetViewPort in -lXxf86vm" >&5
+echo "configure:4818: checking for XF86VidModeGetViewPort in -lXxf86vm" >&5
 ac_lib_var=`echo Xxf86vm'_'XF86VidModeGetViewPort | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4887,7 +4811,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXxf86vm -lXext -lX11 $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4902 "configure"
+#line 4826 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4898,7 +4822,7 @@ int main() {
 XF86VidModeGetViewPort()
 ; return 0; }
 EOF
-if { (eval echo configure:4913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4952,7 +4876,7 @@ fi
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 4967 "configure"
+#line 4891 "configure"
 #include "confdefs.h"
 #include <X11/XHPlib.h>
 EOF
@@ -4990,7 +4914,7 @@ fi
 if test "$with_proc_interrupts" = yes; then
 
    echo $ac_n "checking whether /proc/interrupts contains keyboard data""... $ac_c" 1>&6
-echo "configure:5005: checking whether /proc/interrupts contains keyboard data" >&5
+echo "configure:4929: checking whether /proc/interrupts contains keyboard data" >&5
 if eval "test \"`echo '$''{'ac_cv_have_proc_interrupts'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5123,7 +5047,7 @@ fi
 
     /*)
      echo $ac_n "checking for PAM headers""... $ac_c" 1>&6
-echo "configure:5138: checking for PAM headers" >&5
+echo "configure:5062: checking for PAM headers" >&5
      d=$with_pam/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -5133,7 +5057,7 @@ echo "configure:5138: checking for PAM headers" >&5
      fi
 
      echo $ac_n "checking for PAM libs""... $ac_c" 1>&6
-echo "configure:5148: checking for PAM libs" >&5
+echo "configure:5072: checking for PAM libs" >&5
      d=$with_pam/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -5159,7 +5083,7 @@ echo "configure:5148: checking for PAM libs" >&5
 
 if test "$enable_locking" = yes -a "$with_pam" = yes; then
   echo $ac_n "checking for PAM""... $ac_c" 1>&6
-echo "configure:5174: checking for PAM" >&5
+echo "configure:5098: checking for PAM" >&5
 if eval "test \"`echo '$''{'ac_cv_pam'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5170,14 +5094,14 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5185 "configure"
+#line 5109 "configure"
 #include "confdefs.h"
 #include <security/pam_appl.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_pam=yes
 else
@@ -5202,7 +5126,7 @@ EOF
     # libpam typically requires dlopen and dlsym.  On FreeBSD,
     # those are in libc.  On Linux and Solaris, they're in libdl.
     echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:5217: checking for dlopen in -ldl" >&5
+echo "configure:5141: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5210,7 +5134,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5225 "configure"
+#line 5149 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5221,7 +5145,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:5236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5243,12 +5167,12 @@ fi
 
 
     echo $ac_n "checking how to call pam_strerror""... $ac_c" 1>&6
-echo "configure:5258: checking how to call pam_strerror" >&5
+echo "configure:5182: checking how to call pam_strerror" >&5
     if eval "test \"`echo '$''{'ac_cv_pam_strerror_args'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5263 "configure"
+#line 5187 "configure"
 #include "confdefs.h"
 #include <stdio.h>
                       #include <stdlib.h>
@@ -5258,7 +5182,7 @@ pam_handle_t *pamh = 0;
                       char *s = pam_strerror(pamh, PAM_SUCCESS);
 ; return 0; }
 EOF
-if { (eval echo configure:5273: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_pam_strerror_args=2
 else
@@ -5266,7 +5190,7 @@ else
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 5281 "configure"
+#line 5205 "configure"
 #include "confdefs.h"
 #include <stdio.h>
                                       #include <stdlib.h>
@@ -5276,7 +5200,7 @@ char *s =
                                        pam_strerror(PAM_SUCCESS);
 ; return 0; }
 EOF
-if { (eval echo configure:5291: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_pam_strerror_args=1
 else
@@ -5333,7 +5257,7 @@ fi
 
     /*)
      echo $ac_n "checking for Kerberos headers""... $ac_c" 1>&6
-echo "configure:5348: checking for Kerberos headers" >&5
+echo "configure:5272: checking for Kerberos headers" >&5
      d=$with_kerberos/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -5343,7 +5267,7 @@ echo "configure:5348: checking for Kerberos headers" >&5
      fi
 
      echo $ac_n "checking for Kerberos libs""... $ac_c" 1>&6
-echo "configure:5358: checking for Kerberos libs" >&5
+echo "configure:5282: checking for Kerberos libs" >&5
      d=$with_kerberos/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -5369,7 +5293,7 @@ echo "configure:5358: checking for Kerberos libs" >&5
 
 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
   echo $ac_n "checking for Kerberos 4""... $ac_c" 1>&6
-echo "configure:5384: checking for Kerberos 4" >&5
+echo "configure:5308: checking for Kerberos 4" >&5
 if eval "test \"`echo '$''{'ac_cv_kerberos'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5380,14 +5304,14 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5395 "configure"
+#line 5319 "configure"
 #include "confdefs.h"
 #include <krb.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_kerberos=yes
 else
@@ -5402,7 +5326,7 @@ fi
 
 echo "$ac_t""$ac_cv_kerberos" 1>&6
   echo $ac_n "checking for Kerberos 5""... $ac_c" 1>&6
-echo "configure:5417: checking for Kerberos 5" >&5
+echo "configure:5341: checking for Kerberos 5" >&5
 if eval "test \"`echo '$''{'ac_cv_kerberos5'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5413,14 +5337,14 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5428 "configure"
+#line 5352 "configure"
 #include "confdefs.h"
 #include <kerberosIV/krb.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5359: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_kerberos5=yes
 else
@@ -5467,12 +5391,12 @@ EOF
 
   if test "$have_kerberos" = yes ; then
     echo $ac_n "checking for res_search""... $ac_c" 1>&6
-echo "configure:5482: checking for res_search" >&5
+echo "configure:5406: checking for res_search" >&5
 if eval "test \"`echo '$''{'ac_cv_func_res_search'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5487 "configure"
+#line 5411 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char res_search(); below.  */
@@ -5495,7 +5419,7 @@ res_search();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_res_search=yes"
 else
@@ -5513,7 +5437,7 @@ if eval "test \"`echo '$ac_cv_func_'res_search`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for res_search in -lresolv""... $ac_c" 1>&6
-echo "configure:5528: checking for res_search in -lresolv" >&5
+echo "configure:5452: checking for res_search in -lresolv" >&5
 ac_lib_var=`echo resolv'_'res_search | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5521,7 +5445,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5536 "configure"
+#line 5460 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5532,7 +5456,7 @@ int main() {
 res_search()
 ; return 0; }
 EOF
-if { (eval echo configure:5547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5587,7 +5511,7 @@ fi
 
     /*)
      echo $ac_n "checking for shadow password headers""... $ac_c" 1>&6
-echo "configure:5602: checking for shadow password headers" >&5
+echo "configure:5526: checking for shadow password headers" >&5
      d=$with_shadow/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -5597,7 +5521,7 @@ echo "configure:5602: checking for shadow password headers" >&5
      fi
 
      echo $ac_n "checking for shadow password libs""... $ac_c" 1>&6
-echo "configure:5612: checking for shadow password libs" >&5
+echo "configure:5536: checking for shadow password libs" >&5
      d=$with_shadow/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -5635,7 +5559,7 @@ fi
 
 if test "$with_shadow" = yes ; then
   echo $ac_n "checking for Sun-style shadow passwords""... $ac_c" 1>&6
-echo "configure:5650: checking for Sun-style shadow passwords" >&5
+echo "configure:5574: checking for Sun-style shadow passwords" >&5
 if eval "test \"`echo '$''{'ac_cv_sun_adjunct'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5646,7 +5570,7 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5661 "configure"
+#line 5585 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
                                     #include <unistd.h>
@@ -5659,7 +5583,7 @@ struct passwd_adjunct *p = getpwanam("nobody");
                        const char *pw = p->pwa_passwd;
 ; return 0; }
 EOF
-if { (eval echo configure:5674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sun_adjunct=yes
 else
@@ -5689,7 +5613,7 @@ fi
 
 if test "$with_shadow" = yes ; then
   echo $ac_n "checking for DEC-style shadow passwords""... $ac_c" 1>&6
-echo "configure:5704: checking for DEC-style shadow passwords" >&5
+echo "configure:5628: checking for DEC-style shadow passwords" >&5
 if eval "test \"`echo '$''{'ac_cv_enhanced_passwd'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5700,7 +5624,7 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5715 "configure"
+#line 5639 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
                                     #include <unistd.h>
@@ -5717,7 +5641,7 @@ struct pr_passwd *p;
                        pw = p->ufld.fd_encrypt;
 ; return 0; }
 EOF
-if { (eval echo configure:5732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_enhanced_passwd=yes
 else
@@ -5741,7 +5665,7 @@ echo "$ac_t""$ac_cv_enhanced_passwd" 1>&6
     # But on DEC, it's in -lsecurity.
     #
     echo $ac_n "checking for getprpwnam in -lprot""... $ac_c" 1>&6
-echo "configure:5756: checking for getprpwnam in -lprot" >&5
+echo "configure:5680: checking for getprpwnam in -lprot" >&5
 ac_lib_var=`echo prot'_'getprpwnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5749,7 +5673,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lprot -lx $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5764 "configure"
+#line 5688 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5760,7 +5684,7 @@ int main() {
 getprpwnam()
 ; return 0; }
 EOF
-if { (eval echo configure:5775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5779,7 +5703,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for getprpwnam in -lsecurity""... $ac_c" 1>&6
-echo "configure:5794: checking for getprpwnam in -lsecurity" >&5
+echo "configure:5718: checking for getprpwnam in -lsecurity" >&5
 ac_lib_var=`echo security'_'getprpwnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5787,7 +5711,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsecurity  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5802 "configure"
+#line 5726 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5798,7 +5722,7 @@ int main() {
 getprpwnam()
 ; return 0; }
 EOF
-if { (eval echo configure:5813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5831,7 +5755,7 @@ fi
 
 if test "$with_shadow" = yes ; then
   echo $ac_n "checking for HP-style shadow passwords""... $ac_c" 1>&6
-echo "configure:5846: checking for HP-style shadow passwords" >&5
+echo "configure:5770: checking for HP-style shadow passwords" >&5
 if eval "test \"`echo '$''{'ac_cv_hpux_passwd'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5842,7 +5766,7 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5857 "configure"
+#line 5781 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
                                     #include <unistd.h>
@@ -5855,7 +5779,7 @@ struct s_passwd *p = getspwnam("nobody");
                        const char *pw = p->pw_passwd;
 ; return 0; }
 EOF
-if { (eval echo configure:5870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5794: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_hpux_passwd=yes
 else
@@ -5876,7 +5800,7 @@ echo "$ac_t""$ac_cv_hpux_passwd" 1>&6
 
     # on HPUX, bigcrypt is in -lsec
     echo $ac_n "checking for bigcrypt in -lsec""... $ac_c" 1>&6
-echo "configure:5891: checking for bigcrypt in -lsec" >&5
+echo "configure:5815: checking for bigcrypt in -lsec" >&5
 ac_lib_var=`echo sec'_'bigcrypt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5884,7 +5808,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsec  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5899 "configure"
+#line 5823 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5895,7 +5819,7 @@ int main() {
 bigcrypt()
 ; return 0; }
 EOF
-if { (eval echo configure:5910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5933,7 +5857,7 @@ fi
 
 if test "$with_shadow" = yes ; then
   echo $ac_n "checking for FreeBSD-style shadow passwords""... $ac_c" 1>&6
-echo "configure:5948: checking for FreeBSD-style shadow passwords" >&5
+echo "configure:5872: checking for FreeBSD-style shadow passwords" >&5
 if eval "test \"`echo '$''{'ac_cv_master_passwd'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5959,7 +5883,7 @@ fi
 
 if test "$with_shadow" = yes ; then
   echo $ac_n "checking for generic shadow passwords""... $ac_c" 1>&6
-echo "configure:5974: checking for generic shadow passwords" >&5
+echo "configure:5898: checking for generic shadow passwords" >&5
 if eval "test \"`echo '$''{'ac_cv_shadow'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5970,7 +5894,7 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5985 "configure"
+#line 5909 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
                                     #include <unistd.h>
@@ -5982,7 +5906,7 @@ struct spwd *p = getspnam("nobody");
                        const char *pw = p->sp_pwdp;
 ; return 0; }
 EOF
-if { (eval echo configure:5997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_shadow=yes
 else
@@ -6003,7 +5927,7 @@ echo "$ac_t""$ac_cv_shadow" 1>&6
     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
     have_getspnam=no
     echo $ac_n "checking for getspnam in -lc""... $ac_c" 1>&6
-echo "configure:6018: checking for getspnam in -lc" >&5
+echo "configure:5942: checking for getspnam in -lc" >&5
 ac_lib_var=`echo c'_'getspnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6011,7 +5935,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6026 "configure"
+#line 5950 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6022,7 +5946,7 @@ int main() {
 getspnam()
 ; return 0; }
 EOF
-if { (eval echo configure:6037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6044,7 +5968,7 @@ fi
 
     if test "$have_getspnam" = no ; then
       echo $ac_n "checking for getspnam in -lgen""... $ac_c" 1>&6
-echo "configure:6059: checking for getspnam in -lgen" >&5
+echo "configure:5983: checking for getspnam in -lgen" >&5
 ac_lib_var=`echo gen'_'getspnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6052,7 +5976,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgen  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6067 "configure"
+#line 5991 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6063,7 +5987,7 @@ int main() {
 getspnam()
 ; return 0; }
 EOF
-if { (eval echo configure:6078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6099,7 +6023,7 @@ if test "$enable_locking" = yes ; then
   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
   have_crypt=no
   echo $ac_n "checking for crypt in -lc""... $ac_c" 1>&6
-echo "configure:6114: checking for crypt in -lc" >&5
+echo "configure:6038: checking for crypt in -lc" >&5
 ac_lib_var=`echo c'_'crypt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6107,7 +6031,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6122 "configure"
+#line 6046 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6118,7 +6042,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:6133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6140,7 +6064,7 @@ fi
 
   if test "$have_crypt" = no ; then
     echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:6155: checking for crypt in -lcrypt" >&5
+echo "configure:6079: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6148,7 +6072,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6163 "configure"
+#line 6087 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6159,7 +6083,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:6174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6243,7 +6167,7 @@ fi
 
     /*)
      echo $ac_n "checking for Motif headers""... $ac_c" 1>&6
-echo "configure:6258: checking for Motif headers" >&5
+echo "configure:6182: checking for Motif headers" >&5
      d=$with_motif/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -6253,7 +6177,7 @@ echo "configure:6258: checking for Motif headers" >&5
      fi
 
      echo $ac_n "checking for Motif libs""... $ac_c" 1>&6
-echo "configure:6268: checking for Motif libs" >&5
+echo "configure:6192: checking for Motif libs" >&5
      d=$with_motif/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -6292,17 +6216,17 @@ if test "$with_motif" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:6307: checking for Xm/Xm.h" >&5
+echo "configure:6231: checking for Xm/Xm.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6312 "configure"
+#line 6236 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6241: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6341,17 +6265,17 @@ if test "$have_motif" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "Xm/ComboBox.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/ComboBox.h""... $ac_c" 1>&6
-echo "configure:6356: checking for Xm/ComboBox.h" >&5
+echo "configure:6280: checking for Xm/ComboBox.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6361 "configure"
+#line 6285 "configure"
 #include "confdefs.h"
 #include <Xm/ComboBox.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6290: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6414,7 +6338,7 @@ esac
 
     /*)
      echo $ac_n "checking for Gtk headers""... $ac_c" 1>&6
-echo "configure:6429: checking for Gtk headers" >&5
+echo "configure:6353: checking for Gtk headers" >&5
      d=$with_gtk/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -6424,7 +6348,7 @@ echo "configure:6429: checking for Gtk headers" >&5
      fi
 
      echo $ac_n "checking for Gtk libs""... $ac_c" 1>&6
-echo "configure:6439: checking for Gtk libs" >&5
+echo "configure:6363: checking for Gtk libs" >&5
      d=$with_gtk/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -6482,7 +6406,7 @@ esac
 
     /*)
      echo $ac_n "checking for Gnome headers""... $ac_c" 1>&6
-echo "configure:6497: checking for Gnome headers" >&5
+echo "configure:6421: checking for Gnome headers" >&5
      d=$with_gnome/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -6492,7 +6416,7 @@ echo "configure:6497: checking for Gnome headers" >&5
      fi
 
      echo $ac_n "checking for Gnome libs""... $ac_c" 1>&6
-echo "configure:6507: checking for Gnome libs" >&5
+echo "configure:6431: checking for Gnome libs" >&5
      d=$with_gnome/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -6548,7 +6472,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6563: checking for $ac_word" >&5
+echo "configure:6487: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_glib_config'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6588,7 +6512,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6603: checking for $ac_word" >&5
+echo "configure:6527: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_gtk_config'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6630,7 +6554,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6645: checking for $ac_word" >&5
+echo "configure:6569: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_gnome_config'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6676,7 +6600,7 @@ done
 
   if test "$have_gtk" = yes; then
     echo $ac_n "checking Gtk version number""... $ac_c" 1>&6
-echo "configure:6691: checking Gtk version number" >&5
+echo "configure:6615: checking Gtk version number" >&5
 if eval "test \"`echo '$''{'ac_cv_gtk_version_string'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6705,7 +6629,7 @@ echo "$ac_t""$ac_cv_gtk_version_string" 1>&6
 
   if test "$have_gtk" = yes; then
     echo $ac_n "checking for Gtk includes""... $ac_c" 1>&6
-echo "configure:6720: checking for Gtk includes" >&5
+echo "configure:6644: checking for Gtk includes" >&5
 if eval "test \"`echo '$''{'ac_cv_gtk_config_cflags'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6714,7 +6638,7 @@ fi
 
 echo "$ac_t""$ac_cv_gtk_config_cflags" 1>&6
     echo $ac_n "checking for Gtk libs""... $ac_c" 1>&6
-echo "configure:6729: checking for Gtk libs" >&5
+echo "configure:6653: checking for Gtk libs" >&5
 if eval "test \"`echo '$''{'ac_cv_gtk_config_libs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6731,7 +6655,7 @@ echo "$ac_t""$ac_cv_gtk_config_libs" 1>&6
   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
     gnome_config_libs="capplet gnomeui"
     echo $ac_n "checking for Gnome capplet includes""... $ac_c" 1>&6
-echo "configure:6746: checking for Gnome capplet includes" >&5
+echo "configure:6670: checking for Gnome capplet includes" >&5
     if eval "test \"`echo '$''{'ac_cv_gnome_config_cflags'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6754,7 +6678,7 @@ fi
 
   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
     echo $ac_n "checking for Gnome capplet libs""... $ac_c" 1>&6
-echo "configure:6769: checking for Gnome capplet libs" >&5
+echo "configure:6693: checking for Gnome capplet libs" >&5
     if eval "test \"`echo '$''{'ac_cv_gnome_config_libs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6815,7 +6739,7 @@ fi
 have_lesstif=no
 if test "$have_motif" = yes ; then
   echo $ac_n "checking whether Motif is really LessTif""... $ac_c" 1>&6
-echo "configure:6830: checking whether Motif is really LessTif" >&5
+echo "configure:6754: checking whether Motif is really LessTif" >&5
 if eval "test \"`echo '$''{'ac_cv_have_lesstif'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6826,14 +6750,14 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 6841 "configure"
+#line 6765 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 int main() {
 long vers = LesstifVersion;
 ; return 0; }
 EOF
-if { (eval echo configure:6848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_lesstif=yes
 else
@@ -6858,7 +6782,7 @@ if test "$have_lesstif" = yes ; then
   ltv=unknown
   echo unknown > conftest-lt
   echo $ac_n "checking LessTif version number""... $ac_c" 1>&6
-echo "configure:6873: checking LessTif version number" >&5
+echo "configure:6797: checking LessTif version number" >&5
 if eval "test \"`echo '$''{'ac_cv_lesstif_version_string'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6873,7 +6797,7 @@ else
                      ac_cv_lesstif_version_string=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 6888 "configure"
+#line 6812 "configure"
 #include "confdefs.h"
 #include <stdio.h>
                      #include <Xm/Xm.h>
@@ -6886,7 +6810,7 @@ else
                        exit(0);
                      }
 EOF
-if { (eval echo configure:6901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ltv=`cat conftest-lt`
                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
@@ -6916,7 +6840,7 @@ if test "$have_motif" = yes ; then
   mtv=unknown
   echo unknown > conftest-mt
   echo $ac_n "checking Motif version number""... $ac_c" 1>&6
-echo "configure:6931: checking Motif version number" >&5
+echo "configure:6855: checking Motif version number" >&5
 if eval "test \"`echo '$''{'ac_cv_motif_version_string'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6931,7 +6855,7 @@ else
                      ac_cv_motif_version_string=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 6946 "configure"
+#line 6870 "configure"
 #include "confdefs.h"
 #include <stdio.h>
                      #include <Xm/Xm.h>
@@ -6944,7 +6868,7 @@ else
                        exit(0);
                      }
 EOF
-if { (eval echo configure:6959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   mtv=`cat conftest-mt`
                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
@@ -6988,7 +6912,7 @@ fi
 motif_requires_xpm=no
 if test "$have_motif" = yes ; then
    echo $ac_n "checking whether Motif requires XPM""... $ac_c" 1>&6
-echo "configure:7003: checking whether Motif requires XPM" >&5
+echo "configure:6927: checking whether Motif requires XPM" >&5
    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
    then
      motif_requires_xpm=yes
@@ -7030,7 +6954,7 @@ if test "$have_motif" = yes ; then
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for XpQueryExtension in -lXp""... $ac_c" 1>&6
-echo "configure:7045: checking for XpQueryExtension in -lXp" >&5
+echo "configure:6969: checking for XpQueryExtension in -lXp" >&5
 ac_lib_var=`echo Xp'_'XpQueryExtension | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7038,7 +6962,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXp -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7053 "configure"
+#line 6977 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7049,7 +6973,7 @@ int main() {
 XpQueryExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:7064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7103,7 +7027,7 @@ if test "$have_motif" = yes ; then
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for _Xsetlocale in -lXintl""... $ac_c" 1>&6
-echo "configure:7118: checking for _Xsetlocale in -lXintl" >&5
+echo "configure:7042: checking for _Xsetlocale in -lXintl" >&5
 ac_lib_var=`echo Xintl'_'_Xsetlocale | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7111,7 +7035,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXintl -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7126 "configure"
+#line 7050 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7122,7 +7046,7 @@ int main() {
 _Xsetlocale()
 ; return 0; }
 EOF
-if { (eval echo configure:7137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7179,7 +7103,7 @@ fi
 
     /*)
      echo $ac_n "checking for GL headers""... $ac_c" 1>&6
-echo "configure:7194: checking for GL headers" >&5
+echo "configure:7118: checking for GL headers" >&5
      d=$with_gl/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -7189,7 +7113,7 @@ echo "configure:7194: checking for GL headers" >&5
      fi
 
      echo $ac_n "checking for GL libs""... $ac_c" 1>&6
-echo "configure:7204: checking for GL libs" >&5
+echo "configure:7128: checking for GL libs" >&5
      d=$with_gl/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -7225,17 +7149,17 @@ if test "$with_gl" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "GL/gl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for GL/gl.h""... $ac_c" 1>&6
-echo "configure:7240: checking for GL/gl.h" >&5
+echo "configure:7164: checking for GL/gl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7245 "configure"
+#line 7169 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7250: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7174: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7266,17 +7190,17 @@ fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "GL/glx.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for GL/glx.h""... $ac_c" 1>&6
-echo "configure:7281: checking for GL/glx.h" >&5
+echo "configure:7205: checking for GL/glx.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7286 "configure"
+#line 7210 "configure"
 #include "confdefs.h"
 #include <GL/glx.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7308,7 +7232,7 @@ fi
     # to link against.
     #
     echo $ac_n "checking whether GL is really MesaGL""... $ac_c" 1>&6
-echo "configure:7323: checking whether GL is really MesaGL" >&5
+echo "configure:7247: checking whether GL is really MesaGL" >&5
 if eval "test \"`echo '$''{'ac_cv_have_mesa_gl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7320,12 +7244,12 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 7335 "configure"
+#line 7259 "configure"
 #include "confdefs.h"
 #include <GL/glx.h>
 EOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "Mesa" >/dev/null 2>&1; then
+  egrep "Mesa|MESA" >/dev/null 2>&1; then
   rm -rf conftest*
   ac_cv_have_mesa_gl=yes
 fi
@@ -7349,7 +7273,7 @@ echo "$ac_t""$ac_cv_have_mesa_gl" 1>&6
     #
     if test "$ac_have_mesa_gl" = yes; then
       echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
-echo "configure:7364: checking for pthread_create in -lpthread" >&5
+echo "configure:7288: checking for pthread_create in -lpthread" >&5
 ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7357,7 +7281,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7372 "configure"
+#line 7296 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7368,7 +7292,7 @@ int main() {
 pthread_create()
 ; return 0; }
 EOF
-if { (eval echo configure:7383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7415,7 +7339,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for glXCreateContext in -lMesaGL""... $ac_c" 1>&6
-echo "configure:7430: checking for glXCreateContext in -lMesaGL" >&5
+echo "configure:7354: checking for glXCreateContext in -lMesaGL" >&5
 ac_lib_var=`echo MesaGL'_'glXCreateContext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7423,7 +7347,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lMesaGL -lMesaGLU $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7438 "configure"
+#line 7362 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7434,7 +7358,7 @@ int main() {
 glXCreateContext()
 ; return 0; }
 EOF
-if { (eval echo configure:7449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7480,7 +7404,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for glXCreateContext in -lGL""... $ac_c" 1>&6
-echo "configure:7495: checking for glXCreateContext in -lGL" >&5
+echo "configure:7419: checking for glXCreateContext in -lGL" >&5
 ac_lib_var=`echo GL'_'glXCreateContext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7488,7 +7412,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lGL -lGLU $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7503 "configure"
+#line 7427 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7499,7 +7423,7 @@ int main() {
 glXCreateContext()
 ; return 0; }
 EOF
-if { (eval echo configure:7514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7557,14 +7481,19 @@ EOF
     if test "$ac_have_mesa_gl" = yes; then
 
       echo $ac_n "checking MesaGL version number""... $ac_c" 1>&6
-echo "configure:7572: checking MesaGL version number" >&5
+echo "configure:7496: checking MesaGL version number" >&5
 if eval "test \"`echo '$''{'ac_cv_mesagl_version_string'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7577 "configure"
+#line 7501 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
+#ifndef MESA_MAJOR_VERSION
+# include <GL/xmesa.h>
+# define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
+# define MESA_MINOR_VERSION XMESA_MINOR_VERSION
+#endif
 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
 EOF
 
@@ -7628,7 +7557,7 @@ echo "$ac_t""$ac_cv_mesagl_version_string" 1>&6
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for glBindTexture in -l$gl_lib_1""... $ac_c" 1>&6
-echo "configure:7643: checking for glBindTexture in -l$gl_lib_1" >&5
+echo "configure:7572: checking for glBindTexture in -l$gl_lib_1" >&5
 ac_lib_var=`echo $gl_lib_1'_'glBindTexture | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7636,7 +7565,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$gl_lib_1 $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7651 "configure"
+#line 7580 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7647,7 +7576,7 @@ int main() {
 glBindTexture()
 ; return 0; }
 EOF
-if { (eval echo configure:7662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7708,7 +7637,7 @@ fi
 
     /*)
      echo $ac_n "checking for GLE headers""... $ac_c" 1>&6
-echo "configure:7723: checking for GLE headers" >&5
+echo "configure:7652: checking for GLE headers" >&5
      d=$with_gle/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -7718,7 +7647,7 @@ echo "configure:7723: checking for GLE headers" >&5
      fi
 
      echo $ac_n "checking for GLE libs""... $ac_c" 1>&6
-echo "configure:7733: checking for GLE libs" >&5
+echo "configure:7662: checking for GLE libs" >&5
      d=$with_gle/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -7754,17 +7683,17 @@ if test "$with_gle" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "GL/gle.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for GL/gle.h""... $ac_c" 1>&6
-echo "configure:7769: checking for GL/gle.h" >&5
+echo "configure:7698: checking for GL/gle.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7774 "configure"
+#line 7703 "configure"
 #include "confdefs.h"
 #include <GL/gle.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7779: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7708: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7797,17 +7726,17 @@ fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "GL/gutil.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for GL/gutil.h""... $ac_c" 1>&6
-echo "configure:7812: checking for GL/gutil.h" >&5
+echo "configure:7741: checking for GL/gutil.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7817 "configure"
+#line 7746 "configure"
 #include "confdefs.h"
 #include <GL/gutil.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7822: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7838,17 +7767,17 @@ fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "GL/tube.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for GL/tube.h""... $ac_c" 1>&6
-echo "configure:7853: checking for GL/tube.h" >&5
+echo "configure:7782: checking for GL/tube.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7858 "configure"
+#line 7787 "configure"
 #include "confdefs.h"
 #include <GL/tube.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7792: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7894,7 +7823,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for gleCreateGC in -lgle""... $ac_c" 1>&6
-echo "configure:7909: checking for gleCreateGC in -lgle" >&5
+echo "configure:7838: checking for gleCreateGC in -lgle" >&5
 ac_lib_var=`echo gle'_'gleCreateGC | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7902,7 +7831,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7917 "configure"
+#line 7846 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7913,7 +7842,7 @@ int main() {
 gleCreateGC()
 ; return 0; }
 EOF
-if { (eval echo configure:7928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7973,7 +7902,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for uview_direction in -lgle""... $ac_c" 1>&6
-echo "configure:7988: checking for uview_direction in -lgle" >&5
+echo "configure:7917: checking for uview_direction in -lgle" >&5
 ac_lib_var=`echo gle'_'uview_direction | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7981,7 +7910,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7996 "configure"
+#line 7925 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7992,7 +7921,7 @@ int main() {
 uview_direction()
 ; return 0; }
 EOF
-if { (eval echo configure:8007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8037,7 +7966,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for uview_direction_d in -lmatrix""... $ac_c" 1>&6
-echo "configure:8052: checking for uview_direction_d in -lmatrix" >&5
+echo "configure:7981: checking for uview_direction_d in -lmatrix" >&5
 ac_lib_var=`echo matrix'_'uview_direction_d | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8045,7 +7974,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmatrix $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8060 "configure"
+#line 7989 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8056,7 +7985,7 @@ int main() {
 uview_direction_d()
 ; return 0; }
 EOF
-if { (eval echo configure:8071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8129,7 +8058,7 @@ fi
 
     /*)
      echo $ac_n "checking for XPM headers""... $ac_c" 1>&6
-echo "configure:8144: checking for XPM headers" >&5
+echo "configure:8073: checking for XPM headers" >&5
      d=$with_xpm/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -8139,7 +8068,7 @@ echo "configure:8144: checking for XPM headers" >&5
      fi
 
      echo $ac_n "checking for XPM libs""... $ac_c" 1>&6
-echo "configure:8154: checking for XPM libs" >&5
+echo "configure:8083: checking for XPM libs" >&5
      d=$with_xpm/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -8172,17 +8101,17 @@ if test "$with_xpm" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/xpm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/xpm.h""... $ac_c" 1>&6
-echo "configure:8187: checking for X11/xpm.h" >&5
+echo "configure:8116: checking for X11/xpm.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8192 "configure"
+#line 8121 "configure"
 #include "confdefs.h"
 #include <X11/xpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8197: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8126: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8248,7 +8177,7 @@ fi
 
     /*)
      echo $ac_n "checking for XSHM headers""... $ac_c" 1>&6
-echo "configure:8263: checking for XSHM headers" >&5
+echo "configure:8192: checking for XSHM headers" >&5
      d=$with_xshm/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -8258,7 +8187,7 @@ echo "configure:8263: checking for XSHM headers" >&5
      fi
 
      echo $ac_n "checking for XSHM libs""... $ac_c" 1>&6
-echo "configure:8273: checking for XSHM libs" >&5
+echo "configure:8202: checking for XSHM libs" >&5
      d=$with_xshm/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -8293,17 +8222,17 @@ if test "$with_xshm" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/XShm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/XShm.h""... $ac_c" 1>&6
-echo "configure:8308: checking for X11/extensions/XShm.h" >&5
+echo "configure:8237: checking for X11/extensions/XShm.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8313 "configure"
+#line 8242 "configure"
 #include "confdefs.h"
 #include <X11/extensions/XShm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8337,17 +8266,17 @@ fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6
-echo "configure:8352: checking for sys/ipc.h" >&5
+echo "configure:8281: checking for sys/ipc.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8357 "configure"
+#line 8286 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8382,17 +8311,17 @@ fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "sys/shm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/shm.h""... $ac_c" 1>&6
-echo "configure:8397: checking for sys/shm.h" >&5
+echo "configure:8326: checking for sys/shm.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8402 "configure"
+#line 8331 "configure"
 #include "confdefs.h"
 #include <sys/shm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8407: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8444,7 +8373,7 @@ fi
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   echo $ac_n "checking for XShmQueryExtension in -lXextSam""... $ac_c" 1>&6
-echo "configure:8459: checking for XShmQueryExtension in -lXextSam" >&5
+echo "configure:8388: checking for XShmQueryExtension in -lXextSam" >&5
 ac_lib_var=`echo XextSam'_'XShmQueryExtension | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8452,7 +8381,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXextSam -lX11 -lXext -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8467 "configure"
+#line 8396 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8463,7 +8392,7 @@ int main() {
 XShmQueryExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:8478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8530,7 +8459,7 @@ fi
 
     /*)
      echo $ac_n "checking for DOUBLE-BUFFER headers""... $ac_c" 1>&6
-echo "configure:8545: checking for DOUBLE-BUFFER headers" >&5
+echo "configure:8474: checking for DOUBLE-BUFFER headers" >&5
      d=$with_xdbe/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -8540,7 +8469,7 @@ echo "configure:8545: checking for DOUBLE-BUFFER headers" >&5
      fi
 
      echo $ac_n "checking for DOUBLE-BUFFER libs""... $ac_c" 1>&6
-echo "configure:8555: checking for DOUBLE-BUFFER libs" >&5
+echo "configure:8484: checking for DOUBLE-BUFFER libs" >&5
      d=$with_xdbe/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -8574,17 +8503,17 @@ if test "$with_xdbe" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/Xdbe.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/Xdbe.h""... $ac_c" 1>&6
-echo "configure:8589: checking for X11/extensions/Xdbe.h" >&5
+echo "configure:8518: checking for X11/extensions/Xdbe.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8594 "configure"
+#line 8523 "configure"
 #include "confdefs.h"
 #include <X11/extensions/Xdbe.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8528: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8647,7 +8576,7 @@ fi
 
     /*)
      echo $ac_n "checking for XReadDisplay headers""... $ac_c" 1>&6
-echo "configure:8662: checking for XReadDisplay headers" >&5
+echo "configure:8591: checking for XReadDisplay headers" >&5
      d=$with_readdisplay/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -8657,7 +8586,7 @@ echo "configure:8662: checking for XReadDisplay headers" >&5
      fi
 
      echo $ac_n "checking for XReadDisplay libs""... $ac_c" 1>&6
-echo "configure:8672: checking for XReadDisplay libs" >&5
+echo "configure:8601: checking for XReadDisplay libs" >&5
      d=$with_readdisplay/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -8690,17 +8619,17 @@ if test "$with_readdisplay" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "X11/extensions/readdisplay.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/readdisplay.h""... $ac_c" 1>&6
-echo "configure:8705: checking for X11/extensions/readdisplay.h" >&5
+echo "configure:8634: checking for X11/extensions/readdisplay.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8710 "configure"
+#line 8639 "configure"
 #include "confdefs.h"
 #include <X11/extensions/readdisplay.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8644: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8755,7 +8684,7 @@ fi
 
     /*)
      echo $ac_n "checking for Iris Video headers""... $ac_c" 1>&6
-echo "configure:8770: checking for Iris Video headers" >&5
+echo "configure:8699: checking for Iris Video headers" >&5
      d=$with_sgivideo/include
      if test -d $d; then
        X_CFLAGS="-I$d $X_CFLAGS"
@@ -8765,7 +8694,7 @@ echo "configure:8770: checking for Iris Video headers" >&5
      fi
 
      echo $ac_n "checking for Iris Video libs""... $ac_c" 1>&6
-echo "configure:8780: checking for Iris Video libs" >&5
+echo "configure:8709: checking for Iris Video libs" >&5
      d=$with_sgivideo/lib
      if test -d $d; then
        X_LIBS="-L$d $X_LIBS"
@@ -8798,17 +8727,17 @@ if test "$with_sgivideo" = yes; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   ac_safe=`echo "dmedia/vl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dmedia/vl.h""... $ac_c" 1>&6
-echo "configure:8813: checking for dmedia/vl.h" >&5
+echo "configure:8742: checking for dmedia/vl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8818 "configure"
+#line 8747 "configure"
 #include "confdefs.h"
 #include <dmedia/vl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8833,7 +8762,7 @@ fi
   if test "$have_sgivideo" = yes; then
     have_sgivideo=no
     echo $ac_n "checking for vlOpenVideo in -lvl""... $ac_c" 1>&6
-echo "configure:8848: checking for vlOpenVideo in -lvl" >&5
+echo "configure:8777: checking for vlOpenVideo in -lvl" >&5
 ac_lib_var=`echo vl'_'vlOpenVideo | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8841,7 +8770,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lvl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8856 "configure"
+#line 8785 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8852,7 +8781,7 @@ int main() {
 vlOpenVideo()
 ; return 0; }
 EOF
-if { (eval echo configure:8867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8923,7 +8852,7 @@ if test -n "$with_zippy_req" ; then
   case "$with_zippy_req" in
     /*)
       echo $ac_n "checking for $with_zippy_req""... $ac_c" 1>&6
-echo "configure:8938: checking for $with_zippy_req" >&5
+echo "configure:8867: checking for $with_zippy_req" >&5
       if test -x "$with_zippy_req" ; then
         echo "$ac_t""yes" 1>&6
       else
@@ -8937,7 +8866,7 @@ echo "configure:8938: checking for $with_zippy_req" >&5
       # Extract the first word of "$with_zippy_req", so it can be a program name with args.
 set dummy $with_zippy_req; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8952: checking for $ac_word" >&5
+echo "configure:8881: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_zip2'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8987,7 +8916,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:9002: checking for $ac_word" >&5
+echo "configure:8931: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_emacs_exe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9021,7 +8950,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:9036: checking for $ac_word" >&5
+echo "configure:8965: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_xemacs_exe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9056,7 +8985,7 @@ done
 
   if test -n "$emacs_exe" ; then
     echo $ac_n "checking for emacs yow""... $ac_c" 1>&6
-echo "configure:9071: checking for emacs yow" >&5
+echo "configure:9000: checking for emacs yow" >&5
     #
     # get emacs to tell us where the libexec directory is.
     #
@@ -9078,7 +9007,7 @@ echo "configure:9071: checking for emacs yow" >&5
 
   if test -z "$ac_cv_zippy_program" ; then
     echo $ac_n "checking for xemacs yow""... $ac_c" 1>&6
-echo "configure:9093: checking for xemacs yow" >&5
+echo "configure:9022: checking for xemacs yow" >&5
     if test -n "$xemacs_exe" ; then
       #
       # get xemacs to tell us where the libexec directory is.
@@ -9137,7 +9066,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:9152: checking for $ac_word" >&5
+echo "configure:9081: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_fortune'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9173,7 +9102,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:9188: checking for $ac_word" >&5
+echo "configure:9117: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_fortune'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9344,6 +9273,7 @@ fi
 
 
 
+
 
 
 APPDEFAULTS=$ac_x_app_defaults
@@ -9525,6 +9455,7 @@ s%@HACK_LIBS@%$HACK_LIBS%g
 s%@XPM_LIBS@%$XPM_LIBS%g
 s%@GL_LIBS@%$GL_LIBS%g
 s%@GLE_LIBS@%$GLE_LIBS%g
+s%@XDPMS_LIBS@%$XDPMS_LIBS%g
 s%@PASSWD_LIBS@%$PASSWD_LIBS%g
 s%@INSTALL_SETUID@%$INSTALL_SETUID%g
 s%@INSTALL_DIRS@%$INSTALL_DIRS%g
index 164e6d8e739ff73cc043ea779894e1a0aeb4b9ff..8dae53f587149f56cf2d4f86ca746c7bb564b881 100644 (file)
@@ -66,8 +66,6 @@ AC_DEFUN(AC_PROG_CC_ANSI,
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
     CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
-    AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
-    CC="$CC -Wp,-lang-c89"
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
@@ -87,31 +85,47 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 
 ###############################################################################
 #
-#       Function to work around the fucked up gcc 2.96 included in Red Hat 7.0
+#       Functions to figure out how to disable // comments in ANSI C code.
+#
+#       (With recent gcc, this is done with "-std=c89".  With older gcc, this
+#       is done by passing "-lang-c89" to cpp, by passing "-Wp,-lang-c89" to
+#       gcc.  Old gcc doesn't support -std, and new gcc doesn't support -lang.
+#       so much for compatibility!)
 #
 ###############################################################################
 
-AC_DEFUN(AC_ESCHEW_REDHAT_GCC_LOSSAGE,
+AC_DEFUN(AC_GCC_ACCEPTS_STD,
  [if test -n "$GCC"; then
-   AC_MSG_CHECKING(for Red Hat GCC lossage)
-   AC_CACHE_VAL(ac_cv_red_hat_gcc_lossage,
-    [ac_cv_red_hat_gcc_lossage=no
-      AC_EGREP_CPP(lossage,
-     [#include <stdlib.h>
-      #if !defined(__USE_POSIX) || !defined(__USE_SVID) || !defined(__USE_BSD)
-        lossage
-      #endif
-     ], ac_cv_red_hat_gcc_lossage=yes)
-    ])
+   AC_CACHE_CHECK([whether gcc accepts -std],
+     ac_cv_gcc_accepts_std,
+    [if ( gcc -E -std=c89 - </dev/null 2>&1 >/dev/null | \
+          grep unrecognized >/dev/null ); then
+       ac_cv_gcc_accepts_std=no
+     else
+       ac_cv_gcc_accepts_std=yes
+     fi])
+   ac_gcc_accepts_std="$ac_cv_gcc_accepts_std"
+  fi
+])
 
-    ac_red_hat_gcc_lossage=$ac_cv_red_hat_gcc_lossage
-    if test "$ac_cv_red_hat_gcc_lossage" = yes ; then
-      rh_defines="-D_POSIX_SOURCE -D_SVID_SOURCE -D_BSD_SOURCE";
-      CC="$CC $rh_defines"
-      AC_MSG_RESULT(yes: need $rh_defines)
-    else
-      AC_MSG_RESULT(no)
-    fi
+AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
+ [if test -n "$GCC"; then
+   AC_GCC_ACCEPTS_STD
+   AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
+   if test "$ac_gcc_accepts_std" = yes ; then
+     #
+     # -std=c89 defines __STRICT_ANSI__, which we don't want.
+     # (That appears to be the only additional preprocessor symbol
+     # it defines, in addition to the syntax changes it makes.)
+     #
+     # -std=gnu89 is no good, because // comments were a GNU
+     # extension before they were in the ANSI C 99 spec...
+     #
+     CC="$CC -std=c89 -U__STRICT_ANSI__"
+   else
+     # The old way:
+     CC="$CC -Wp,-lang-c89"
+   fi
   fi
 ])
 
@@ -705,7 +719,7 @@ AC_DEFUN(HANDLE_X_PATH_ARG, [
 # random compiler setup
 AC_CANONICAL_HOST
 AC_PROG_CC_ANSI
-AC_ESCHEW_REDHAT_GCC_LOSSAGE
+AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
@@ -1039,7 +1053,7 @@ if test "$with_dpms" = yes; then
     # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
     if test "$have_dpms" = no; then
       AC_CHECK_X_LIB(Xdpms, DPMSInfo,
-                    [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [true],
+                    [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
                     -lXext -lX11)
     fi
   fi
@@ -1946,7 +1960,7 @@ if test "$with_gl" = yes; then
     #
     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
       [ac_cv_have_mesa_gl=no
-       AC_EGREP_X_HEADER(Mesa, GL/glx.h, [ac_cv_have_mesa_gl=yes])
+       AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
       ])
     ac_have_mesa_gl=$ac_cv_have_mesa_gl
  
@@ -2012,6 +2026,11 @@ if test "$with_gl" = yes; then
 #line __oline__ "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
+#ifndef MESA_MAJOR_VERSION
+# include <GL/xmesa.h>
+# define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
+# define MESA_MINOR_VERSION XMESA_MINOR_VERSION
+#endif
 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
 EOF
 
@@ -2582,6 +2601,7 @@ AC_SUBST(HACK_LIBS)
 AC_SUBST(XPM_LIBS)
 AC_SUBST(GL_LIBS)
 AC_SUBST(GLE_LIBS)
+AC_SUBST(XDPMS_LIBS)
 AC_SUBST(PASSWD_LIBS)
 AC_SUBST(INSTALL_SETUID)
 AC_SUBST(INSTALL_DIRS)
index b56e7c658c012ad10bbd54df6efdad78c89ade7b..dee86900b69456efad9b80ba9264ec93f05844b7 100644 (file)
@@ -19,6 +19,8 @@ mansuffix     = 1
 GNOME_DATADIR  = @GNOME_DATADIR@
 GNOME_CCDIR    = $(GNOME_DATADIR)/control-center/Desktop
 GNOME_PANELDIR = $(GNOME_DATADIR)/gnome/apps/Settings/Desktop
+GNOME_ICONDIR  = $(GNOME_DATADIR)/pixmaps
+GNOME_BINDIR   = $(bindir)
 
 CC             = @CC@
 CFLAGS         = @CFLAGS@
@@ -90,10 +92,14 @@ NOLOCK_OBJS_1       = lock.o
 
 TEST_SRCS      = test-passwd.c test-uid.c test-xdpms.c test-grab.c \
                  test-apm.c xdpyinfo.c
+TEST_EXES      = test-passwd   test-uid   test-xdpms   test-grab \
+                 test-apm   xdpyinfo
 
 MOTIF_LIBS     = @MOTIF_LIBS@ @XPM_LIBS@
 GTK_LIBS       = @GTK_LIBS@
 
+XDPMS_LIBS     = @XDPMS_LIBS@
+
 PASSWD_SRCS    = @PASSWD_SRCS@
 PASSWD_OBJS    = @PASSWD_OBJS@
 PASSWD_LIBS    = @PASSWD_LIBS@
@@ -108,17 +114,18 @@ GL_SRCS           = @SAVER_GL_SRCS@
 GL_OBJS                = @SAVER_GL_OBJS@
 GL_LIBS                = @SAVER_GL_LIBS@
 
+LOGO           = $(UTILS_SRC)/logo.xpm
 DEMO_UTIL_SRCS = $(UTILS_SRC)/resources.c $(UTILS_SRC)/usleep.c \
                  $(UTILS_SRC)/visual.c
 DEMO_UTIL_OBJS = $(UTILS_BIN)/resources.o $(UTILS_BIN)/usleep.o \
                  $(UTILS_BIN)/visual.o
 
 SAVER_UTIL_SRCS        = $(UTILS_SRC)/fade.c $(UTILS_SRC)/overlay.c \
-                 $(UTILS_SRC)/xroger.c $(UTILS_SRC)/spline.c \
+                 $(UTILS_SRC)/logo.c $(UTILS_SRC)/spline.c \
                  $(UTILS_SRC)/yarandom.c \
                  $(DEMO_UTIL_SRCS)
 SAVER_UTIL_OBJS        = $(UTILS_BIN)/fade.o $(UTILS_BIN)/overlay.o \
-                 $(UTILS_BIN)/xroger.o $(UTILS_BIN)/spline.o \
+                 $(UTILS_BIN)/logo.o $(UTILS_BIN)/spline.o \
                  $(UTILS_BIN)/yarandom.o \
                  $(DEMO_UTIL_OBJS)
 
@@ -127,29 +134,28 @@ SAVER_SRCS_1      = xscreensaver.c windows.c timers.c subprocs.c \
 SAVER_OBJS_1   = xscreensaver.o windows.o timers.o subprocs.o \
                  xset.o splash.o setuid.o stderr.o
 
-SAVER_SRCS     = $(SAVER_SRCS_1) prefs.c $(LOCK_SRCS) \
+SAVER_SRCS     = $(SAVER_SRCS_1) prefs.c dpms.c $(LOCK_SRCS) \
                  $(SAVER_UTIL_SRCS) $(GL_SRCS) $(XMU_SRCS)
-SAVER_OBJS     = $(SAVER_OBJS_1) prefs.o $(LOCK_OBJS) \
+SAVER_OBJS     = $(SAVER_OBJS_1) prefs.o dpms.o $(LOCK_OBJS) \
                  $(SAVER_UTIL_OBJS) $(GL_OBJS) $(XMU_OBJS)
 
 CMD_SRCS       = remote.c xscreensaver-command.c
 CMD_OBJS       = remote.o xscreensaver-command.o
 
-DEMO_SRCS_1    = prefs.c $(XMU_SRCS)
-DEMO_OBJS_1    = prefs.o $(XMU_OBJS)
+DEMO_SRCS_1    = prefs.c dpms.c $(XMU_SRCS)
+DEMO_OBJS_1    = prefs.o dpms.o $(XMU_OBJS)
 
-DEMO_SRCS      = prefs.c remote.c $(DEMO_UTIL_SRCS)
-DEMO_OBJS      = prefs.o remote.o $(DEMO_UTIL_OBJS)
+DEMO_SRCS      = prefs.c dpms.c remote.c $(DEMO_UTIL_SRCS)
+DEMO_OBJS      = prefs.o dpms.o remote.o $(DEMO_UTIL_OBJS)
 
-SAVER_LIBS     = $(LIBS) $(X_LIBS) @SAVER_LIBS@ $(GL_LIBS) \
+SAVER_LIBS     = $(LIBS) $(X_LIBS) @SAVER_LIBS@ $(XDPMS_LIBS) $(GL_LIBS) \
                  $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS) \
                  $(PASSWD_LIBS)
 
 CMD_LIBS       = $(LIBS) $(X_LIBS) \
                  $(X_PRE_LIBS) -lX11 -lXext $(X_EXTRA_LIBS)
 
-EXES           = xscreensaver xscreensaver-command xscreensaver-demo \
-                 screensaver-properties-capplet
+EXES           = xscreensaver xscreensaver-command xscreensaver-demo
 EXES2          = @ALL_DEMO_PROGRAMS@
 
 HDRS           = XScreenSaver_ad.h xscreensaver.h prefs.h remote.h \
@@ -175,6 +181,7 @@ TARFILES    = $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) \
 
 default: $(EXES)
 all: $(EXES) $(EXES2)
+tests: $(TEST_EXES)
 
 install:   install-program   install-ad   install-gnome   install-kde   \
           install-man   @INSTALL_PAM@
@@ -348,7 +355,7 @@ install-pam:
          fi ;                                                          \
        fi
 
-install-gnome: screensaver-properties.desktop
+install-gnome:: screensaver-properties.desktop
        @lost1=""                                                            ;\
          lost2=""                                                            ;\
          if [ "$(GNOME_DATADIR)" != "" ]; then                                \
@@ -405,8 +412,47 @@ install-gnome: screensaver-properties.desktop
            fi                                                                ;\
          fi
 
-uninstall-gnome:
-       @if [ "$(install_prefix)$(GNOME_DATADIR)" != "" ]; then               \
+install-gnome:: screensaver-properties-capplet
+       @if [ "$(GNOME_DATADIR)" != "" ]; then                                \
+           if [ ! -d "$(install_prefix)$(GNOME_BINDIR)" ]; then               \
+             echo $(INSTALL_DIRS) "$(install_prefix)$(GNOME_BINDIR)"         ;\
+                  $(INSTALL_DIRS) "$(install_prefix)$(GNOME_BINDIR)"         ;\
+           fi                                                                ;\
+          program=screensaver-properties-capplet                            ;\
+          echo $(INSTALL_SCRIPT) $$program                                   \
+                 $(install_prefix)$(GNOME_BINDIR)/$$program                 ;\
+          if   $(INSTALL_SCRIPT) $$program                                   \
+                 $(install_prefix)$(GNOME_BINDIR)/$$program                 ;\
+             then true                                                       ;\
+           else                                                               \
+             e=echo ;                                                         \
+ $$e ""                                                                      ;\
+ $$e "  ####################################################################";\
+ $$e "  Warning: unable to install $$program into"                          ;\
+ $$e "           $(install_prefix)$(GNOME_BINDIR)/."                         ;\
+ $$e "           Without this file, the Gnome session manager will not"      ;\
+ $$e "           launch xscreensaver properly at login time."                ;\
+ $$e "  ####################################################################";\
+ $$e ""                                                                      ;\
+             exit 1 ;                                                         \
+          fi ;                                                               \
+        fi
+
+install-gnome:: $(LOGO)
+       @if [ "$(GNOME_DATADIR)" != "" ]; then                                \
+           if [ ! -d "$(install_prefix)$(GNOME_ICONDIR)" ]; then              \
+             echo $(INSTALL_DIRS) "$(install_prefix)$(GNOME_ICONDIR)"        ;\
+                  $(INSTALL_DIRS) "$(install_prefix)$(GNOME_ICONDIR)"        ;\
+           fi                                                                ;\
+          target=xscreensaver.xpm                                           ;\
+          echo $(INSTALL_DATA) $(LOGO)                                       \
+                 $(install_prefix)$(GNOME_ICONDIR)/$$target                 ;\
+               $(INSTALL_DATA) $(LOGO)                                       \
+                 $(install_prefix)$(GNOME_ICONDIR)/$$target                 ;\
+        fi
+
+uninstall-gnome::
+       @if [ "$(GNOME_DATADIR)" != "" ]; then                                \
           f=screensaver-properties.desktop                                   ;\
           echo rm -f $(install_prefix)$(GNOME_CCDIR)/$$f                     ;\
                rm -f $(install_prefix)$(GNOME_CCDIR)/$$f                     ;\
@@ -414,6 +460,20 @@ uninstall-gnome:
                rm -f $(install_prefix)$(GNOME_PANELDIR)/$$f                  ;\
         fi
 
+uninstall-gnome::
+       @if [ "$(GNOME_DATADIR)" != "" ]; then                                \
+         program=screensaver-properties-capplet                             ;\
+         echo rm -f $(install_prefix)$(bindir)/$$program                    ;\
+              rm -f $(install_prefix)$(bindir)/$$program                    ;\
+        fi
+
+uninstall-gnome::
+       @if [ "$(GNOME_DATADIR)" != "" ]; then                                \
+         target=xscreensaver.xpm                                            ;\
+         echo rm -f $(install_prefix)$(GNOME_ICONDIR)/$$target              ;\
+              rm -f $(install_prefix)$(GNOME_ICONDIR)/$$target              ;\
+        fi
+
 install-kde:
        @src="$(srcdir)/xscreensaver.kss" ;                                   \
        if [ "$$KDEDIR" != "" ]; then                                         \
@@ -450,7 +510,7 @@ uninstall-kde:
        fi
 
 clean:
-       -rm -f *.o a.out core $(EXES) $(EXES2) XScreenSaver_ad.h
+       -rm -f *.o a.out core $(EXES) $(EXES2) $(TEST_EXES) XScreenSaver_ad.h
 
 distclean: clean
        -rm -f Makefile XScreenSaver.ad TAGS *~ "#"*
@@ -544,7 +604,7 @@ $(UTILS_BIN)/resources.o:   $(UTILS_SRC)/resources.c
 $(UTILS_BIN)/usleep.o:         $(UTILS_SRC)/usleep.c
 $(UTILS_BIN)/visual.o:         $(UTILS_SRC)/visual.c
 $(UTILS_BIN)/xmu.o:            $(UTILS_SRC)/xmu.c
-$(UTILS_BIN)/xroger.o:         $(UTILS_SRC)/xroger.c
+$(UTILS_BIN)/logo.o:           $(UTILS_SRC)/logo.c
 $(UTILS_BIN)/spline.o:         $(UTILS_SRC)/spline.c
 $(UTILS_BIN)/yarandom.o:       $(UTILS_SRC)/yarandom.c
 
@@ -587,11 +647,13 @@ xscreensaver-demo: @PREFERRED_DEMO_PROGRAM@
 
 xscreensaver-demo-Xm: $(DEMO_OBJS) $(MOTIF_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(MOTIF_OBJS) $(LIBS) $(X_LIBS) \
-       $(MOTIF_LIBS) $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS)
+       $(MOTIF_LIBS) $(X_PRE_LIBS) -lXt -lX11 $(XDPMS_LIBS) -lXext \
+       $(X_EXTRA_LIBS)
 
 xscreensaver-demo-Gtk: $(DEMO_OBJS) $(GTK_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(GTK_OBJS) $(LIBS) $(X_LIBS) \
-       $(GTK_LIBS) $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS)
+       $(GTK_LIBS) $(X_PRE_LIBS) -lXt -lX11 $(XDPMS_LIBS) -lXext \
+       $(X_EXTRA_LIBS)
 
 
 
@@ -600,23 +662,19 @@ TEST_PASSWD_OBJS = test-passwd.o $(LOCK_OBJS_1) $(PASSWD_OBJS) \
        $(SAVER_UTIL_OBJS)
 test-passwd.o: XScreenSaver_ad.h
 
-tests:: test-passwd
 test-passwd: $(TEST_PASSWD_OBJS) XScreenSaver_ad.h
        $(CC) $(LDFLAGS) -o $@ $(TEST_PASSWD_OBJS) $(SAVER_LIBS)
 
-tests:: test-uid
 test-uid: test-uid.o
        $(CC) $(LDFLAGS) -o $@ test-uid.o
 
-tests:: test-xdpms
 test-xdpms: test-xdpms.o
-       $(CC) $(LDFLAGS) -o $@ test-xdpms.o $(SAVER_LIBS)
+       $(CC) $(LDFLAGS) -o $@ test-xdpms.o $(LIBS) $(X_LIBS) $(XDPMS_LIBS) \
+       $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS)
 
-tests:: test-grab
 test-grab: test-grab.o
        $(CC) $(LDFLAGS) -o $@ test-grab.o $(SAVER_LIBS)
 
-tests:: test-apm
 test-apm: test-apm.o
        $(CC) $(LDFLAGS) -o $@ test-apm.o $(SAVER_LIBS) -lapm
 
@@ -690,6 +748,7 @@ demo-Gtk.o: $(UTILS_SRC)/visual.h
 demo-Gtk.o: $(srcdir)/remote.h
 demo-Gtk.o: $(UTILS_SRC)/usleep.h
 demo-Gtk.o: $(srcdir)/demo-Gtk-widgets.h
+demo-Gtk.o: $(UTILS_SRC)/logo.xpm
 demo-Gtk.o: XScreenSaver_ad.h
 demo-Gtk-widgets.o: ../config.h
 demo-Gtk-widgets.o: $(srcdir)/demo-Gtk-stubs.h
@@ -703,6 +762,9 @@ passwd.o: ../config.h
 prefs.o: ../config.h
 prefs.o: $(srcdir)/prefs.h
 prefs.o: $(UTILS_SRC)/resources.h
+dpms.o: ../config.h
+dpms.o: $(srcdir)/xscreensaver.h
+dpms.o: $(srcdir)/prefs.h
 remote.o: ../config.h
 remote.o: $(srcdir)/remote.h
 xscreensaver-command.o: ../config.h
index 74ce4112fec960fdb782af5c382fdeec6892dbb7..13e579499505d2a20d4337219aef60616e2c163e 100644 (file)
@@ -4,8 +4,8 @@
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
-!                              version 3.27
-!                              19-Jan-2001
+!                              version 3.28
+!                              02-Feb-2001
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
                                rorschach -root -offset 7                   \n\
                                hopalong -root                              \n\
                                greynetic -root                             \n\
-                               xroger -root                                \n\
                                imsmap -root                                \n\
                                slidescreen -root                           \n\
                                decayscreen -root                           \n\
 @GLE_KLUDGE@GL:                        extrusion -root                             \n\
 @GL_KLUDGE@ GL:                        sierpinski3d -root                          \n\
 @GL_KLUDGE@ GL:                        gflux -root                                 \n\
+@GL_KLUDGE@ GL:                        stonerview -root                            \n\
+@GL_KLUDGE@ GL:                        starwars -root                              \n\
                                                                              \
 -                              xdaliclock -root -builtin3 -cycle           \n\
 - default-n:                   xearth -nofork -nostars -ncolors 50           \
 !
 !     xscreensaver-sgigl /usr/sbin/ep -S
 !
+! (But note that, on non-SGIs, the bundled "stonerview" hack is a decent
+! clone of "ep".  Yay!)
+!
 ! You can also use the "ant" demo, but first you need to wrap a shell script
 ! around it that cds to its home directory, so that it can find its files;
 ! and also pass it the -S argument, to prevent it from forking.  What a mess!
@@ -593,11 +597,6 @@ Patrick Naughton.
 This draws random colored and stippled rectangles.  Written by Jamie   \
 Zawinski.
 
-*hacks.xroger.documentation:                                           \
-The XScreenSaver logo. Don't you hate it?  So do I.  Would you like    \
-to design a new logo for XScreenSaver? If so, send jwz your            \
-submissions.
-
 *hacks.imsmap.name: IMSmap
 *hacks.imsmap.documentation:                                           \
 This generates random cloud-like patterns.  It looks quite different   \
@@ -1235,7 +1234,19 @@ lenses rather than just a simple zoom.  Written by James Macnicol.
 Floating stars are acted upon by a mixture of simple 2D              \
 forcefields.  The strength of each forcefield changes                \
 continuously, and it is also switched on and off at random.          \
-By Paul 'Joey' Clark, ported from a QB program written for Ivor.
+By Paul 'Joey' Clark.
+
+*hacks.stonerview.name: StonerView
+*hacks.stonerview.documentation:                                     \
+Chains of colorful squares dance around each other in complex spiral \
+patterns.  Written by Andrew Plotkin, based on SGI's `electropaint'  \
+screensaver.
+
+*hacks.starwars.name: StarWars
+*hacks.starwars.documentation:                                       \
+Draws a stream of text slowly scrolling into the distance at an      \
+angle, over a star field, like at the beginning of the movie of the  \
+same name.  Written by Jamie Zawinski and Claudio Matauoka.
 
 
 !=============================================================================
index 80f3f4f631f4299ae4a7c7d9e6d5a0b508e95f74..a793aed04645b9523271ed4a65273e9e52b6b828 100644 (file)
@@ -58,7 +58,6 @@
                                rorschach -root -offset 7                   \\n\
                                hopalong -root                              \\n\
                                greynetic -root                             \\n\
-                               xroger -root                                \\n\
                                imsmap -root                                \\n\
                                slidescreen -root                           \\n\
                                decayscreen -root                           \\n\
           GL:                  extrusion -root                             \\n\
           GL:                  sierpinski3d -root                          \\n\
           GL:                  gflux -root                                 \\n\
+          GL:                  stonerview -root                            \\n\
+          GL:                  starwars -root                              \\n\
                                                                              \
 -                              xdaliclock -root -builtin3 -cycle           \\n\
 - default-n:                   xearth -nofork -nostars -ncolors 50           \
@@ -392,10 +393,6 @@ Patrick Naughton.",
 "*hacks.greynetic.documentation:                                               \
 This draws random colored and stippled rectangles.  Written by Jamie   \
 Zawinski.",
-"*hacks.xroger.documentation:                                          \
-The XScreenSaver logo. Don't you hate it?  So do I.  Would you like    \
-to design a new logo for XScreenSaver? If so, send jwz your            \
-submissions.",
 "*hacks.imsmap.name: IMSmap",
 "*hacks.imsmap.documentation:                                          \
 This generates random cloud-like patterns.  It looks quite different   \
@@ -927,7 +924,17 @@ lenses rather than just a simple zoom.  Written by James Macnicol.",
 Floating stars are acted upon by a mixture of simple 2D              \
 forcefields.  The strength of each forcefield changes                \
 continuously, and it is also switched on and off at random.          \
-By Paul 'Joey' Clark, ported from a QB program written for Ivor.",
+By Paul 'Joey' Clark.",
+"*hacks.stonerview.name: StonerView",
+"*hacks.stonerview.documentation:                                     \
+Chains of colorful squares dance around each other in complex spiral \
+patterns.  Written by Andrew Plotkin, based on SGI's `electropaint'  \
+screensaver.",
+"*hacks.starwars.name: StarWars",
+"*hacks.starwars.documentation:                                       \
+Draws a stream of text slowly scrolling into the distance at an      \
+angle, over a star field, like at the beginning of the movie of the  \
+same name.  Written by Jamie Zawinski and Claudio Matauoka.",
 "*hacks.xdaliclock.name: XDaliClock",
 "*hacks.xdaliclock.documentation:                                      \
 XDaliClock draws a large digital clock, the numbers of which change by \
index 6adcd800c74b3a0abe5e6c1b086f0236a35d7da3..8066bbb5dfd2f3f2255386da326a8fd08ef39075 100644 (file)
@@ -71,27 +71,52 @@ create_xscreensaver_demo (void)
   GtkWidget *demo;
   GtkWidget *manual;
   GtkWidget *demo_tab;
-  GtkWidget *prefs_hbox;
-  GtkWidget *prefs_frame;
-  GtkWidget *prefs_table;
-  GtkWidget *timeout_text;
-  GtkWidget *cycle_text;
-  GtkWidget *fade_text;
-  GtkWidget *ticks_text;
+  GtkWidget *options_vbox;
+  GtkWidget *options_table;
+  GtkWidget *blanking_frame;
+  GtkWidget *blanking_table;
   GtkWidget *lock_text;
-  GtkWidget *pass_text;
+  GtkWidget *cycle_text;
+  GtkWidget *timeout_text;
   GtkWidget *timeout_label;
   GtkWidget *cycle_label;
-  GtkWidget *fade_label;
-  GtkWidget *ticks_label;
   GtkWidget *lock_label;
-  GtkWidget *pass_label;
+  GtkWidget *blanking_dummy;
+  GtkWidget *blanking_hr;
+  GtkWidget *lock_button_eventbox;
+  GtkWidget *lock_button;
+  GtkWidget *dpms_frame;
+  GtkWidget *dpms_table;
+  GtkWidget *dpms_off_text;
+  GtkWidget *dpms_suspend_text;
+  GtkWidget *dpms_standby_text;
+  GtkWidget *dpms_standby_label;
+  GtkWidget *dpms_off_label;
+  GtkWidget *dpms_suspend_label;
+  GtkWidget *dpms_dummy;
+  GtkWidget *dpms_button_eventbox;
+  GtkWidget *dpms_button;
+  GtkWidget *diag_frame;
+  GtkWidget *diag_table;
+  GtkWidget *verbose_button_eventbox;
   GtkWidget *verbose_button;
+  GtkWidget *capture_button_eventbox;
+  GtkWidget *capture_button;
+  GtkWidget *splash_button_eventbox;
+  GtkWidget *splash_button;
+  GtkWidget *cmap_frame;
+  GtkWidget *cmap_table;
+  GtkWidget *fade_text;
+  GtkWidget *cmap_dummy;
+  GtkWidget *fade_label;
+  GtkWidget *cmap_hr;
+  GtkWidget *install_button_eventbox;
   GtkWidget *install_button;
+  GtkWidget *fade_button_eventbox;
   GtkWidget *fade_button;
+  GtkWidget *unfade_button_eventbox;
   GtkWidget *unfade_button;
-  GtkWidget *lock_button;
-  GtkWidget *prefs_tab;
+  GtkWidget *options_tab;
   GtkAccelGroup *accel_group;
   GtkTooltips *tooltips;
 
@@ -567,33 +592,67 @@ create_xscreensaver_demo (void)
   gtk_widget_show (demo_tab);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), demo_tab);
 
-  prefs_hbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_set_name (prefs_hbox, "prefs_hbox");
-  gtk_widget_ref (prefs_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prefs_hbox", prefs_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (prefs_hbox);
-  gtk_container_add (GTK_CONTAINER (notebook), prefs_hbox);
+  options_vbox = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (options_vbox, "options_vbox");
+  gtk_widget_ref (options_vbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_vbox", options_vbox,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (options_vbox);
+  gtk_container_add (GTK_CONTAINER (notebook), options_vbox);
+
+  options_table = gtk_table_new (2, 2, TRUE);
+  gtk_widget_set_name (options_table, "options_table");
+  gtk_widget_ref (options_table);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_table", options_table,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (options_table);
+  gtk_box_pack_start (GTK_BOX (options_vbox), options_table, FALSE, FALSE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (options_table), 10);
+  gtk_table_set_row_spacings (GTK_TABLE (options_table), 2);
+
+  blanking_frame = gtk_frame_new ("Blanking and Locking:");
+  gtk_widget_set_name (blanking_frame, "blanking_frame");
+  gtk_widget_ref (blanking_frame);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_frame", blanking_frame,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (blanking_frame);
+  gtk_table_attach (GTK_TABLE (options_table), blanking_frame, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (blanking_frame), 10);
+
+  blanking_table = gtk_table_new (5, 3, FALSE);
+  gtk_widget_set_name (blanking_table, "blanking_table");
+  gtk_widget_ref (blanking_table);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_table", blanking_table,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (blanking_table);
+  gtk_container_add (GTK_CONTAINER (blanking_frame), blanking_table);
+  gtk_container_set_border_width (GTK_CONTAINER (blanking_table), 10);
+  gtk_table_set_row_spacings (GTK_TABLE (blanking_table), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (blanking_table), 10);
 
-  prefs_frame = gtk_frame_new (NULL);
-  gtk_widget_set_name (prefs_frame, "prefs_frame");
-  gtk_widget_ref (prefs_frame);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prefs_frame", prefs_frame,
+  lock_text = gtk_entry_new_with_max_length (8);
+  gtk_widget_set_name (lock_text, "lock_text");
+  gtk_widget_ref (lock_text);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_text", lock_text,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (prefs_frame);
-  gtk_box_pack_start (GTK_BOX (prefs_hbox), prefs_frame, TRUE, TRUE, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (prefs_frame), 10);
+  gtk_widget_show (lock_text);
+  gtk_table_attach (GTK_TABLE (blanking_table), lock_text, 1, 2, 4, 5,
+                    (GtkAttachOptions) (0),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, lock_text, "How long after the screen saver has activated until a password will be required (if  `Require Password' is also set.)", NULL);
 
-  prefs_table = gtk_table_new (6, 3, FALSE);
-  gtk_widget_set_name (prefs_table, "prefs_table");
-  gtk_widget_ref (prefs_table);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prefs_table", prefs_table,
+  cycle_text = gtk_entry_new_with_max_length (8);
+  gtk_widget_set_name (cycle_text, "cycle_text");
+  gtk_widget_ref (cycle_text);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_text", cycle_text,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (prefs_table);
-  gtk_container_add (GTK_CONTAINER (prefs_frame), prefs_table);
-  gtk_container_set_border_width (GTK_CONTAINER (prefs_table), 10);
-  gtk_table_set_row_spacings (GTK_TABLE (prefs_table), 2);
-  gtk_table_set_col_spacings (GTK_TABLE (prefs_table), 10);
+  gtk_widget_show (cycle_text);
+  gtk_table_attach (GTK_TABLE (blanking_table), cycle_text, 1, 2, 1, 2,
+                    (GtkAttachOptions) (0),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, cycle_text, "How long each demo will be run before moving on to another.", NULL);
 
   timeout_text = gtk_entry_new_with_max_length (8);
   gtk_widget_set_name (timeout_text, "timeout_text");
@@ -601,147 +660,365 @@ create_xscreensaver_demo (void)
   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_text", timeout_text,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (timeout_text);
-  gtk_table_attach (GTK_TABLE (prefs_table), timeout_text, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
+  gtk_table_attach (GTK_TABLE (blanking_table), timeout_text, 1, 2, 0, 1,
+                    (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, timeout_text, "How long until the screensaver activates.", NULL);
+  gtk_tooltips_set_tip (tooltips, timeout_text, "How long until the screen saver activates and begins running demos.", NULL);
 
-  cycle_text = gtk_entry_new_with_max_length (8);
-  gtk_widget_set_name (cycle_text, "cycle_text");
-  gtk_widget_ref (cycle_text);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_text", cycle_text,
+  timeout_label = gtk_label_new ("Blank After:");
+  gtk_widget_set_name (timeout_label, "timeout_label");
+  gtk_widget_ref (timeout_label);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_label", timeout_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cycle_text);
-  gtk_table_attach (GTK_TABLE (prefs_table), cycle_text, 1, 2, 1, 2,
+  gtk_widget_show (timeout_label);
+  gtk_table_attach (GTK_TABLE (blanking_table), timeout_label, 0, 1, 0, 1,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, cycle_text, "How long each demo will be run before moving on to another.", NULL);
+  gtk_label_set_justify (GTK_LABEL (timeout_label), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (timeout_label), 1, 0.5);
 
-  fade_text = gtk_entry_new_with_max_length (8);
-  gtk_widget_set_name (fade_text, "fade_text");
-  gtk_widget_ref (fade_text);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_text", fade_text,
+  cycle_label = gtk_label_new ("Cycle After:");
+  gtk_widget_set_name (cycle_label, "cycle_label");
+  gtk_widget_ref (cycle_label);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_label", cycle_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_text);
-  gtk_table_attach (GTK_TABLE (prefs_table), fade_text, 1, 2, 2, 3,
+  gtk_widget_show (cycle_label);
+  gtk_table_attach (GTK_TABLE (blanking_table), cycle_label, 0, 1, 1, 2,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, fade_text, "How long (in seconds) it should take for the screen to fade to black (8-bit displays only.)", NULL);
+  gtk_label_set_justify (GTK_LABEL (cycle_label), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (cycle_label), 1, 0.5);
 
-  ticks_text = gtk_entry_new_with_max_length (8);
-  gtk_widget_set_name (ticks_text, "ticks_text");
-  gtk_widget_ref (ticks_text);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "ticks_text", ticks_text,
+  lock_label = gtk_label_new ("Lock After:");
+  gtk_widget_set_name (lock_label, "lock_label");
+  gtk_widget_ref (lock_label);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_label", lock_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (ticks_text);
-  gtk_table_attach (GTK_TABLE (prefs_table), ticks_text, 1, 2, 3, 4,
+  gtk_widget_show (lock_label);
+  gtk_table_attach (GTK_TABLE (blanking_table), lock_label, 0, 1, 4, 5,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, ticks_text, "How many steps are in the fade animation (8-bit displays only.)", NULL);
+  gtk_label_set_justify (GTK_LABEL (lock_label), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (lock_label), 1, 0.5);
 
-  lock_text = gtk_entry_new_with_max_length (8);
-  gtk_widget_set_name (lock_text, "lock_text");
-  gtk_widget_ref (lock_text);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_text", lock_text,
+  blanking_dummy = gtk_label_new ("");
+  gtk_widget_set_name (blanking_dummy, "blanking_dummy");
+  gtk_widget_ref (blanking_dummy);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_dummy", blanking_dummy,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (lock_text);
-  gtk_table_attach (GTK_TABLE (prefs_table), lock_text, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
+  gtk_widget_show (blanking_dummy);
+  gtk_table_attach (GTK_TABLE (blanking_table), blanking_dummy, 2, 3, 4, 5,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, lock_text, "How long after the screensaver has activated until a password will be required (if  `Require Password' is also set.)", NULL);
+  gtk_label_set_justify (GTK_LABEL (blanking_dummy), GTK_JUSTIFY_LEFT);
+
+  blanking_hr = gtk_hseparator_new ();
+  gtk_widget_set_name (blanking_hr, "blanking_hr");
+  gtk_widget_ref (blanking_hr);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_hr", blanking_hr,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (blanking_hr);
+  gtk_table_attach (GTK_TABLE (blanking_table), blanking_hr, 0, 3, 2, 3,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
 
-  pass_text = gtk_entry_new_with_max_length (8);
-  gtk_widget_set_name (pass_text, "pass_text");
-  gtk_widget_ref (pass_text);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "pass_text", pass_text,
+  lock_button_eventbox = gtk_event_box_new ();
+  gtk_widget_set_name (lock_button_eventbox, "lock_button_eventbox");
+  gtk_widget_ref (lock_button_eventbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button_eventbox", lock_button_eventbox,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (pass_text);
-  gtk_table_attach (GTK_TABLE (prefs_table), pass_text, 1, 2, 5, 6,
+  gtk_widget_show (lock_button_eventbox);
+  gtk_table_attach (GTK_TABLE (blanking_table), lock_button_eventbox, 0, 3, 3, 4,
                     (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, pass_text, "How long the password dialog will wait.", NULL);
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_tooltips_set_tip (tooltips, lock_button_eventbox, "Whether a password should be required to unblank the screen.", NULL);
 
-  timeout_label = gtk_label_new ("Saver Timeout:");
-  gtk_widget_set_name (timeout_label, "timeout_label");
-  gtk_widget_ref (timeout_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_label", timeout_label,
+  lock_button = gtk_check_button_new_with_label ("Require Password");
+  gtk_widget_set_name (lock_button, "lock_button");
+  gtk_widget_ref (lock_button);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button", lock_button,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (timeout_label);
-  gtk_table_attach (GTK_TABLE (prefs_table), timeout_label, 0, 1, 0, 1,
+  gtk_widget_show (lock_button);
+  gtk_container_add (GTK_CONTAINER (lock_button_eventbox), lock_button);
+
+  dpms_frame = gtk_frame_new ("Display Power Management:");
+  gtk_widget_set_name (dpms_frame, "dpms_frame");
+  gtk_widget_ref (dpms_frame);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_frame", dpms_frame,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (dpms_frame);
+  gtk_table_attach (GTK_TABLE (options_table), dpms_frame, 1, 2, 0, 1,
                     (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (dpms_frame), 10);
+
+  dpms_table = gtk_table_new (4, 3, FALSE);
+  gtk_widget_set_name (dpms_table, "dpms_table");
+  gtk_widget_ref (dpms_table);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_table", dpms_table,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (dpms_table);
+  gtk_container_add (GTK_CONTAINER (dpms_frame), dpms_table);
+  gtk_container_set_border_width (GTK_CONTAINER (dpms_table), 10);
+  gtk_table_set_row_spacings (GTK_TABLE (dpms_table), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (dpms_table), 10);
+
+  dpms_off_text = gtk_entry_new_with_max_length (8);
+  gtk_widget_set_name (dpms_off_text, "dpms_off_text");
+  gtk_widget_ref (dpms_off_text);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_text", dpms_off_text,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (dpms_off_text);
+  gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_text, 1, 2, 3, 4,
+                    (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (timeout_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (timeout_label), 1, 0.5);
+  gtk_tooltips_set_tip (tooltips, dpms_off_text, "How long until the monitor powers down (if Power Management is enabled).", NULL);
 
-  cycle_label = gtk_label_new ("Cycle Timeout:");
-  gtk_widget_set_name (cycle_label, "cycle_label");
-  gtk_widget_ref (cycle_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_label", cycle_label,
+  dpms_suspend_text = gtk_entry_new_with_max_length (8);
+  gtk_widget_set_name (dpms_suspend_text, "dpms_suspend_text");
+  gtk_widget_ref (dpms_suspend_text);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_text", dpms_suspend_text,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cycle_label);
-  gtk_table_attach (GTK_TABLE (prefs_table), cycle_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
+  gtk_widget_show (dpms_suspend_text);
+  gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_text, 1, 2, 2, 3,
+                    (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (cycle_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (cycle_label), 1, 0.5);
+  gtk_tooltips_set_tip (tooltips, dpms_suspend_text, "How long until the monitor goes into power-saving mode (if Power Management is enabled).", NULL);
 
-  fade_label = gtk_label_new ("Fade Duration:");
-  gtk_widget_set_name (fade_label, "fade_label");
-  gtk_widget_ref (fade_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_label", fade_label,
+  dpms_standby_text = gtk_entry_new_with_max_length (8);
+  gtk_widget_set_name (dpms_standby_text, "dpms_standby_text");
+  gtk_widget_ref (dpms_standby_text);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_text", dpms_standby_text,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_label);
-  gtk_table_attach (GTK_TABLE (prefs_table), fade_label, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
+  gtk_widget_show (dpms_standby_text);
+  gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_text, 1, 2, 1, 2,
+                    (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (fade_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (fade_label), 1, 0.5);
+  gtk_tooltips_set_tip (tooltips, dpms_standby_text, "How long before the monitor goes completely black (if Power Management is enabled).", NULL);
 
-  ticks_label = gtk_label_new ("Fade Ticks:");
-  gtk_widget_set_name (ticks_label, "ticks_label");
-  gtk_widget_ref (ticks_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "ticks_label", ticks_label,
+  dpms_standby_label = gtk_label_new ("Standby After:");
+  gtk_widget_set_name (dpms_standby_label, "dpms_standby_label");
+  gtk_widget_ref (dpms_standby_label);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_label", dpms_standby_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (ticks_label);
-  gtk_table_attach (GTK_TABLE (prefs_table), ticks_label, 0, 1, 3, 4,
+  gtk_widget_show (dpms_standby_label);
+  gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_label, 0, 1, 1, 2,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (ticks_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (ticks_label), 1, 0.5);
+  gtk_label_set_justify (GTK_LABEL (dpms_standby_label), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (dpms_standby_label), 1, 0.5);
 
-  lock_label = gtk_label_new ("Lock Timeout:");
-  gtk_widget_set_name (lock_label, "lock_label");
-  gtk_widget_ref (lock_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_label", lock_label,
+  dpms_off_label = gtk_label_new ("Off After:");
+  gtk_widget_set_name (dpms_off_label, "dpms_off_label");
+  gtk_widget_ref (dpms_off_label);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_label", dpms_off_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (lock_label);
-  gtk_table_attach (GTK_TABLE (prefs_table), lock_label, 0, 1, 4, 5,
+  gtk_widget_show (dpms_off_label);
+  gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_label, 0, 1, 3, 4,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (lock_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (lock_label), 1, 0.5);
+  gtk_label_set_justify (GTK_LABEL (dpms_off_label), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (dpms_off_label), 1, 0.5);
 
-  pass_label = gtk_label_new ("Password Timeout:");
-  gtk_widget_set_name (pass_label, "pass_label");
-  gtk_widget_ref (pass_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "pass_label", pass_label,
+  dpms_suspend_label = gtk_label_new ("Suspend After:");
+  gtk_widget_set_name (dpms_suspend_label, "dpms_suspend_label");
+  gtk_widget_ref (dpms_suspend_label);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_label", dpms_suspend_label,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (pass_label);
-  gtk_table_attach (GTK_TABLE (prefs_table), pass_label, 0, 1, 5, 6,
+  gtk_widget_show (dpms_suspend_label);
+  gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_label, 0, 1, 2, 3,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (pass_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (pass_label), 1, 0.5);
+  gtk_label_set_justify (GTK_LABEL (dpms_suspend_label), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (dpms_suspend_label), 1, 0.5);
+
+  dpms_dummy = gtk_label_new ("");
+  gtk_widget_set_name (dpms_dummy, "dpms_dummy");
+  gtk_widget_ref (dpms_dummy);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_dummy", dpms_dummy,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (dpms_dummy);
+  gtk_table_attach (GTK_TABLE (dpms_table), dpms_dummy, 2, 3, 3, 4,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (dpms_dummy), GTK_JUSTIFY_LEFT);
+
+  dpms_button_eventbox = gtk_event_box_new ();
+  gtk_widget_set_name (dpms_button_eventbox, "dpms_button_eventbox");
+  gtk_widget_ref (dpms_button_eventbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_button_eventbox", dpms_button_eventbox,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (dpms_button_eventbox);
+  gtk_table_attach (GTK_TABLE (dpms_table), dpms_button_eventbox, 0, 3, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_tooltips_set_tip (tooltips, dpms_button_eventbox, "Whether the monitor should be powered down after a while.", NULL);
 
-  verbose_button = gtk_check_button_new_with_label ("Verbose");
+  dpms_button = gtk_check_button_new_with_label ("Power Management Enabled");
+  gtk_widget_set_name (dpms_button, "dpms_button");
+  gtk_widget_ref (dpms_button);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_button", dpms_button,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (dpms_button);
+  gtk_container_add (GTK_CONTAINER (dpms_button_eventbox), dpms_button);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dpms_button), TRUE);
+
+  diag_frame = gtk_frame_new ("Diagnostics:");
+  gtk_widget_set_name (diag_frame, "diag_frame");
+  gtk_widget_ref (diag_frame);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_frame", diag_frame,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (diag_frame);
+  gtk_table_attach (GTK_TABLE (options_table), diag_frame, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (diag_frame), 10);
+
+  diag_table = gtk_table_new (3, 1, FALSE);
+  gtk_widget_set_name (diag_table, "diag_table");
+  gtk_widget_ref (diag_table);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_table", diag_table,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (diag_table);
+  gtk_container_add (GTK_CONTAINER (diag_frame), diag_table);
+  gtk_container_set_border_width (GTK_CONTAINER (diag_table), 10);
+  gtk_table_set_row_spacings (GTK_TABLE (diag_table), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (diag_table), 10);
+
+  verbose_button_eventbox = gtk_event_box_new ();
+  gtk_widget_set_name (verbose_button_eventbox, "verbose_button_eventbox");
+  gtk_widget_ref (verbose_button_eventbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button_eventbox", verbose_button_eventbox,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (verbose_button_eventbox);
+  gtk_table_attach (GTK_TABLE (diag_table), verbose_button_eventbox, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_tooltips_set_tip (tooltips, verbose_button_eventbox, "Whether the daemon should print lots of debugging information.", NULL);
+
+  verbose_button = gtk_check_button_new_with_label ("Verbose Diagnostics");
   gtk_widget_set_name (verbose_button, "verbose_button");
   gtk_widget_ref (verbose_button);
   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button", verbose_button,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (verbose_button);
-  gtk_table_attach (GTK_TABLE (prefs_table), verbose_button, 2, 3, 0, 1,
+  gtk_container_add (GTK_CONTAINER (verbose_button_eventbox), verbose_button);
+
+  capture_button_eventbox = gtk_event_box_new ();
+  gtk_widget_set_name (capture_button_eventbox, "capture_button_eventbox");
+  gtk_widget_ref (capture_button_eventbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button_eventbox", capture_button_eventbox,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (capture_button_eventbox);
+  gtk_table_attach (GTK_TABLE (diag_table), capture_button_eventbox, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_tooltips_set_tip (tooltips, capture_button_eventbox, "Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window.", NULL);
+
+  capture_button = gtk_check_button_new_with_label ("Display Subprocess Errors");
+  gtk_widget_set_name (capture_button, "capture_button");
+  gtk_widget_ref (capture_button);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button", capture_button,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (capture_button);
+  gtk_container_add (GTK_CONTAINER (capture_button_eventbox), capture_button);
+
+  splash_button_eventbox = gtk_event_box_new ();
+  gtk_widget_set_name (splash_button_eventbox, "splash_button_eventbox");
+  gtk_widget_ref (splash_button_eventbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button_eventbox", splash_button_eventbox,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (splash_button_eventbox);
+  gtk_table_attach (GTK_TABLE (diag_table), splash_button_eventbox, 0, 1, 2, 3,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, splash_button_eventbox, "Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up.", NULL);
+
+  splash_button = gtk_check_button_new_with_label ("Display Splash Screen at Startup");
+  gtk_widget_set_name (splash_button, "splash_button");
+  gtk_widget_ref (splash_button);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button", splash_button,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (splash_button);
+  gtk_container_add (GTK_CONTAINER (splash_button_eventbox), splash_button);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (splash_button), TRUE);
+
+  cmap_frame = gtk_frame_new ("Colormaps: (8-bit displays only)");
+  gtk_widget_set_name (cmap_frame, "cmap_frame");
+  gtk_widget_ref (cmap_frame);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_frame", cmap_frame,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (cmap_frame);
+  gtk_table_attach (GTK_TABLE (options_table), cmap_frame, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (cmap_frame), 10);
+
+  cmap_table = gtk_table_new (5, 3, FALSE);
+  gtk_widget_set_name (cmap_table, "cmap_table");
+  gtk_widget_ref (cmap_table);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_table", cmap_table,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (cmap_table);
+  gtk_container_add (GTK_CONTAINER (cmap_frame), cmap_table);
+  gtk_container_set_border_width (GTK_CONTAINER (cmap_table), 10);
+  gtk_table_set_row_spacings (GTK_TABLE (cmap_table), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (cmap_table), 10);
+
+  fade_text = gtk_entry_new_with_max_length (8);
+  gtk_widget_set_name (fade_text, "fade_text");
+  gtk_widget_ref (fade_text);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_text", fade_text,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (fade_text);
+  gtk_table_attach (GTK_TABLE (cmap_table), fade_text, 1, 2, 4, 5,
+                    (GtkAttachOptions) (0),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, fade_text, "How long it should take for the screen to fade in and out.", NULL);
+
+  cmap_dummy = gtk_label_new ("");
+  gtk_widget_set_name (cmap_dummy, "cmap_dummy");
+  gtk_widget_ref (cmap_dummy);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_dummy", cmap_dummy,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (cmap_dummy);
+  gtk_table_attach (GTK_TABLE (cmap_table), cmap_dummy, 2, 3, 4, 5,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (cmap_dummy), GTK_JUSTIFY_LEFT);
+
+  fade_label = gtk_label_new ("Fade Duration:");
+  gtk_widget_set_name (fade_label, "fade_label");
+  gtk_widget_ref (fade_label);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_label", fade_label,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (fade_label);
+  gtk_table_attach (GTK_TABLE (cmap_table), fade_label, 0, 1, 4, 5,
                     (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 10, 0);
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (fade_label), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (fade_label), 1, 0.5);
+
+  cmap_hr = gtk_hseparator_new ();
+  gtk_widget_set_name (cmap_hr, "cmap_hr");
+  gtk_widget_ref (cmap_hr);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_hr", cmap_hr,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (cmap_hr);
+  gtk_table_attach (GTK_TABLE (cmap_table), cmap_hr, 0, 3, 1, 2,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
+
+  install_button_eventbox = gtk_event_box_new ();
+  gtk_widget_set_name (install_button_eventbox, "install_button_eventbox");
+  gtk_widget_ref (install_button_eventbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button_eventbox", install_button_eventbox,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (install_button_eventbox);
+  gtk_table_attach (GTK_TABLE (cmap_table), install_button_eventbox, 0, 3, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_tooltips_set_tip (tooltips, install_button_eventbox, "Whether to install a private colormap when running in 8-bit mode on the default Visual.", NULL);
 
   install_button = gtk_check_button_new_with_label ("Install Colormap");
   gtk_widget_set_name (install_button, "install_button");
@@ -749,47 +1026,53 @@ create_xscreensaver_demo (void)
   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button", install_button,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (install_button);
-  gtk_table_attach (GTK_TABLE (prefs_table), install_button, 2, 3, 1, 2,
+  gtk_container_add (GTK_CONTAINER (install_button_eventbox), install_button);
+
+  fade_button_eventbox = gtk_event_box_new ();
+  gtk_widget_set_name (fade_button_eventbox, "fade_button_eventbox");
+  gtk_widget_ref (fade_button_eventbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button_eventbox", fade_button_eventbox,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (fade_button_eventbox);
+  gtk_table_attach (GTK_TABLE (cmap_table), fade_button_eventbox, 0, 3, 2, 3,
                     (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 10, 0);
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_tooltips_set_tip (tooltips, fade_button_eventbox, "Whether the screen should slowly fade to black when the screen saver activates.", NULL);
 
-  fade_button = gtk_check_button_new_with_label ("Fade Colormap");
+  fade_button = gtk_check_button_new_with_label ("Fade To Black When Blanking");
   gtk_widget_set_name (fade_button, "fade_button");
   gtk_widget_ref (fade_button);
   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button", fade_button,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (fade_button);
-  gtk_table_attach (GTK_TABLE (prefs_table), fade_button, 2, 3, 2, 3,
+  gtk_container_add (GTK_CONTAINER (fade_button_eventbox), fade_button);
+
+  unfade_button_eventbox = gtk_event_box_new ();
+  gtk_widget_set_name (unfade_button_eventbox, "unfade_button_eventbox");
+  gtk_widget_ref (unfade_button_eventbox);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button_eventbox", unfade_button_eventbox,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (unfade_button_eventbox);
+  gtk_table_attach (GTK_TABLE (cmap_table), unfade_button_eventbox, 0, 3, 3, 4,
                     (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 10, 0);
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_tooltips_set_tip (tooltips, unfade_button_eventbox, "Whether the screen should slowly fade in from black when the screen saver deactivates.", NULL);
 
-  unfade_button = gtk_check_button_new_with_label ("Unfade Colormap");
+  unfade_button = gtk_check_button_new_with_label ("Fade From Black When Unblanking");
   gtk_widget_set_name (unfade_button, "unfade_button");
   gtk_widget_ref (unfade_button);
   gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button", unfade_button,
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (unfade_button);
-  gtk_table_attach (GTK_TABLE (prefs_table), unfade_button, 2, 3, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 10, 0);
+  gtk_container_add (GTK_CONTAINER (unfade_button_eventbox), unfade_button);
 
-  lock_button = gtk_check_button_new_with_label ("Require Password");
-  gtk_widget_set_name (lock_button, "lock_button");
-  gtk_widget_ref (lock_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button", lock_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (lock_button);
-  gtk_table_attach (GTK_TABLE (prefs_table), lock_button, 2, 3, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 10, 0);
-
-  prefs_tab = gtk_label_new ("Screensaver Options");
-  gtk_widget_set_name (prefs_tab, "prefs_tab");
-  gtk_widget_ref (prefs_tab);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prefs_tab", prefs_tab,
+  options_tab = gtk_label_new ("Screensaver Options");
+  gtk_widget_set_name (options_tab, "options_tab");
+  gtk_widget_ref (options_tab);
+  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_tab", options_tab,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (prefs_tab);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), prefs_tab);
+  gtk_widget_show (options_tab);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), options_tab);
 
   gtk_signal_connect (GTK_OBJECT (activate_menu), "activate",
                       GTK_SIGNAL_FUNC (activate_menu_cb),
@@ -839,10 +1122,10 @@ create_xscreensaver_demo (void)
   gtk_signal_connect (GTK_OBJECT (manual), "clicked",
                       GTK_SIGNAL_FUNC (manual_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (timeout_text), "activate",
+  gtk_signal_connect (GTK_OBJECT (lock_text), "activate",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (timeout_text), "focus_out_event",
+  gtk_signal_connect (GTK_OBJECT (lock_text), "focus_out_event",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
   gtk_signal_connect (GTK_OBJECT (cycle_text), "activate",
@@ -851,33 +1134,51 @@ create_xscreensaver_demo (void)
   gtk_signal_connect (GTK_OBJECT (cycle_text), "focus_out_event",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (fade_text), "activate",
+  gtk_signal_connect (GTK_OBJECT (timeout_text), "activate",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (fade_text), "focus_out_event",
+  gtk_signal_connect (GTK_OBJECT (timeout_text), "focus_out_event",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (ticks_text), "activate",
+  gtk_signal_connect (GTK_OBJECT (lock_button), "toggled",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (ticks_text), "focus_out_event",
+  gtk_signal_connect (GTK_OBJECT (dpms_off_text), "activate",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (lock_text), "activate",
+  gtk_signal_connect (GTK_OBJECT (dpms_off_text), "focus_out_event",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (lock_text), "focus_out_event",
+  gtk_signal_connect (GTK_OBJECT (dpms_suspend_text), "activate",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (pass_text), "activate",
+  gtk_signal_connect (GTK_OBJECT (dpms_suspend_text), "focus_out_event",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (pass_text), "focus_out_event",
+  gtk_signal_connect (GTK_OBJECT (dpms_standby_text), "activate",
+                      GTK_SIGNAL_FUNC (pref_changed_cb),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (dpms_standby_text), "focus_out_event",
+                      GTK_SIGNAL_FUNC (pref_changed_cb),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (dpms_button), "toggled",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
   gtk_signal_connect (GTK_OBJECT (verbose_button), "toggled",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
+  gtk_signal_connect (GTK_OBJECT (capture_button), "toggled",
+                      GTK_SIGNAL_FUNC (pref_changed_cb),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (splash_button), "toggled",
+                      GTK_SIGNAL_FUNC (pref_changed_cb),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (fade_text), "activate",
+                      GTK_SIGNAL_FUNC (pref_changed_cb),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (fade_text), "focus_out_event",
+                      GTK_SIGNAL_FUNC (pref_changed_cb),
+                      NULL);
   gtk_signal_connect (GTK_OBJECT (install_button), "toggled",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
@@ -887,9 +1188,6 @@ create_xscreensaver_demo (void)
   gtk_signal_connect (GTK_OBJECT (unfade_button), "toggled",
                       GTK_SIGNAL_FUNC (pref_changed_cb),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (lock_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
 
   gtk_widget_grab_default (next);
   gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "tooltips", tooltips);
index 0ff66e9382ae0a7bcbb721edff8ad66b1cb439c4..02995e08abb0da5910e95ff36eae9a92aad799d3 100644 (file)
@@ -1,5 +1,5 @@
 /* demo-Gtk.c --- implements the interactive demo-mode and options dialogs.
- * xscreensaver, Copyright (c) 1993-1999 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1993-2001 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -885,17 +885,24 @@ prefs_ok_cb (GtkButton *button, gpointer user_data)
   field = gtk_toggle_button_get_active (\
              GTK_TOGGLE_BUTTON (name_to_widget (GTK_WIDGET(button), (name))))
 
-  MINUTES (&p2->timeout,        "timeout_text");
-  MINUTES (&p2->cycle,          "cycle_text");
-  SECONDS (&p2->fade_seconds,   "fade_text");
-  INTEGER (&p2->fade_ticks,     "ticks_text");
-  MINUTES (&p2->lock_timeout,   "lock_text");
-  SECONDS (&p2->passwd_timeout, "pass_text");
-  CHECKBOX (p2->verbose_p,      "verbose_button");
-  CHECKBOX (p2->install_cmap_p, "install_button");
-  CHECKBOX (p2->fade_p,         "fade_button");
-  CHECKBOX (p2->unfade_p,       "unfade_button");
-  CHECKBOX (p2->lock_p,         "lock_button");
+  MINUTES (&p2->timeout,          "timeout_text");
+  MINUTES (&p2->cycle,            "cycle_text");
+  CHECKBOX (p2->lock_p,           "lock_button");
+  MINUTES (&p2->lock_timeout,     "lock_text");
+
+  CHECKBOX (p2->dpms_enabled_p,   "dpms_button");
+  MINUTES (&p2->dpms_standby,     "dpms_standby_text");
+  MINUTES (&p2->dpms_suspend,     "dpms_suspend_text");
+  MINUTES (&p2->dpms_off,         "dpms_off_text");
+
+  CHECKBOX (p2->verbose_p,        "verbose_button");
+  CHECKBOX (p2->capture_stderr_p, "capture_button");
+  CHECKBOX (p2->splash_p,         "splash_button");
+
+  CHECKBOX (p2->install_cmap_p,   "install_button");
+  CHECKBOX (p2->fade_p,           "fade_button");
+  CHECKBOX (p2->unfade_p,         "unfade_button");
+  SECONDS (&p2->fade_seconds,     "fade_text");
 
 # undef SECONDS
 # undef MINUTES
@@ -908,21 +915,37 @@ prefs_ok_cb (GtkButton *button, gpointer user_data)
 
   COPY(timeout);
   COPY(cycle);
+  COPY(lock_p);
   COPY(lock_timeout);
-  COPY(passwd_timeout);
-  COPY(fade_seconds);
-  COPY(fade_ticks);
+
+  COPY(dpms_enabled_p);
+  COPY(dpms_standby);
+  COPY(dpms_suspend);
+  COPY(dpms_off);
+
   COPY(verbose_p);
+  COPY(capture_stderr_p);
+  COPY(splash_p);
+
   COPY(install_cmap_p);
   COPY(fade_p);
   COPY(unfade_p);
-  COPY(lock_p);
+  COPY(fade_seconds);
 # undef COPY
 
   populate_prefs_page (GTK_WIDGET (button), pair);
 
   if (changed)
-    demo_write_init_file (GTK_WIDGET (button), p);
+    {
+      Display *dpy = gdk_display;
+      sync_server_dpms_settings (dpy, p->dpms_enabled_p,
+                                 p->dpms_standby / 1000,
+                                 p->dpms_suspend / 1000,
+                                 p->dpms_off / 1000,
+                                 False);
+
+      demo_write_init_file (GTK_WIDGET (button), p);
+    }
 }
 
 
@@ -1083,48 +1106,6 @@ format_time (char *buf, Time time)
 }
 
 
-static char *
-make_pretty_name (const char *shell_command)
-{
-  char *s = strdup (shell_command);
-  char *s2;
-  char res_name[255];
-
-  for (s2 = s; *s2; s2++)      /* truncate at first whitespace */
-    if (isspace (*s2))
-      {
-        *s2 = 0;
-        break;
-      }
-
-  s2 = strrchr (s, '/');       /* if pathname, take last component */
-  if (s2)
-    {
-      s2 = strdup (s2+1);
-      free (s);
-      s = s2;
-    }
-
-  if (strlen (s) > 50)         /* 51 is hereby defined as "unreasonable" */
-    s[50] = 0;
-
-  sprintf (res_name, "hacks.%s.name", s);              /* resource? */
-  s2 = get_string_resource (res_name, res_name);
-  if (s2)
-    return s2;
-
-  for (s2 = s; *s2; s2++)      /* if it has any capitals, return it */
-    if (*s2 >= 'A' && *s2 <= 'Z')
-      return s;
-
-  if (s[0] >= 'a' && s[0] <= 'z')                      /* else cap it */
-    s[0] -= 'a'-'A';
-  if (s[0] == 'X' && s[1] >= 'a' && s[1] <= 'z')       /* (magic leading X) */
-    s[1] -= 'a'-'A';
-  return s;
-}
-
-
 /* Finds the number of the last hack to run, and makes that item be
    selected by default.
  */
@@ -1191,7 +1172,7 @@ populate_hack_list (GtkWidget *toplevel, prefs_pair *pair)
 
       char *pretty_name = (h[0]->name
                            ? strdup (h[0]->name)
-                           : make_pretty_name (h[0]->command));
+                           : make_hack_name (h[0]->command));
 
       line = gtk_list_item_new ();
       line_hbox = gtk_hbox_new (FALSE, 0);
@@ -1250,16 +1231,31 @@ populate_prefs_page (GtkWidget *top, prefs_pair *pair)
   gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "cycle_text")), s);
   format_time (s, p->lock_timeout);
   gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "lock_text")), s);
-  format_time (s, p->passwd_timeout);
-  gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "pass_text")), s);
+
+  format_time (s, p->dpms_standby);
+  gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "dpms_standby_text")),s);
+  format_time (s, p->dpms_suspend);
+  gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "dpms_suspend_text")),s);
+  format_time (s, p->dpms_off);
+  gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "dpms_off_text")), s);
+
   format_time (s, p->fade_seconds);
   gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "fade_text")), s);
-  sprintf (s, "%u", p->fade_ticks);
-  gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "ticks_text")), s);
 
+  gtk_toggle_button_set_active (
+                   GTK_TOGGLE_BUTTON (name_to_widget (top, "lock_button")),
+                   p->lock_p);
   gtk_toggle_button_set_active (
                    GTK_TOGGLE_BUTTON (name_to_widget (top, "verbose_button")),
                    p->verbose_p);
+  gtk_toggle_button_set_active (
+                   GTK_TOGGLE_BUTTON (name_to_widget (top, "capture_button")),
+                   p->capture_stderr_p);
+
+  gtk_toggle_button_set_active (
+                   GTK_TOGGLE_BUTTON (name_to_widget (top, "dpms_button")),
+                   p->dpms_enabled_p);
+
   gtk_toggle_button_set_active (
                    GTK_TOGGLE_BUTTON (name_to_widget (top, "install_button")),
                    p->install_cmap_p);
@@ -1269,13 +1265,12 @@ populate_prefs_page (GtkWidget *top, prefs_pair *pair)
   gtk_toggle_button_set_active (
                    GTK_TOGGLE_BUTTON (name_to_widget (top, "unfade_button")),
                    p->unfade_p);
-  gtk_toggle_button_set_active (
-                   GTK_TOGGLE_BUTTON (name_to_widget (top, "lock_button")),
-                   p->lock_p);
 
 
   {
     Bool found_any_writable_cells = False;
+    Bool dpms_supported = False;
+
     Display *dpy = gdk_display;
     int nscreens = ScreenCount(dpy);
     int i;
@@ -1289,17 +1284,55 @@ populate_prefs_page (GtkWidget *top, prefs_pair *pair)
          }
       }
 
+#ifdef HAVE_DPMS_EXTENSION
+    {
+      int op = 0, event = 0, error = 0;
+      if (XQueryExtension (dpy, "DPMS", &op, &event, &error))
+        dpms_supported = True;
+    }
+#endif /* HAVE_DPMS_EXTENSION */
+
+
+    /* Blanking and Locking
+     */
     gtk_widget_set_sensitive (
-                           GTK_WIDGET (name_to_widget (top, "fade_label")),
-                           found_any_writable_cells);
+                           GTK_WIDGET (name_to_widget (top, "lock_label")),
+                           p->lock_p);
     gtk_widget_set_sensitive (
-                           GTK_WIDGET (name_to_widget (top, "ticks_label")),
-                           found_any_writable_cells);
+                           GTK_WIDGET (name_to_widget (top, "lock_text")),
+                           p->lock_p);
+
+    /* DPMS
+     */
     gtk_widget_set_sensitive (
-                           GTK_WIDGET (name_to_widget (top, "fade_text")),
-                           found_any_writable_cells);
+                      GTK_WIDGET (name_to_widget (top, "dpms_frame")),
+                      dpms_supported);
+    gtk_widget_set_sensitive (
+                      GTK_WIDGET (name_to_widget (top, "dpms_button")),
+                      dpms_supported);
+    gtk_widget_set_sensitive (
+                       GTK_WIDGET (name_to_widget (top, "dpms_standby_label")),
+                       dpms_supported && p->dpms_enabled_p);
+    gtk_widget_set_sensitive (
+                       GTK_WIDGET (name_to_widget (top, "dpms_standby_text")),
+                       dpms_supported && p->dpms_enabled_p);
+    gtk_widget_set_sensitive (
+                       GTK_WIDGET (name_to_widget (top, "dpms_suspend_label")),
+                       dpms_supported && p->dpms_enabled_p);
     gtk_widget_set_sensitive (
-                           GTK_WIDGET (name_to_widget (top, "ticks_text")),
+                       GTK_WIDGET (name_to_widget (top, "dpms_suspend_text")),
+                       dpms_supported && p->dpms_enabled_p);
+    gtk_widget_set_sensitive (
+                       GTK_WIDGET (name_to_widget (top, "dpms_off_label")),
+                       dpms_supported && p->dpms_enabled_p);
+    gtk_widget_set_sensitive (
+                       GTK_WIDGET (name_to_widget (top, "dpms_off_text")),
+                       dpms_supported && p->dpms_enabled_p);
+
+    /* Colormaps
+     */
+    gtk_widget_set_sensitive (
+                           GTK_WIDGET (name_to_widget (top, "cmap_frame")),
                            found_any_writable_cells);
     gtk_widget_set_sensitive (
                            GTK_WIDGET (name_to_widget (top, "install_button")),
@@ -1310,6 +1343,15 @@ populate_prefs_page (GtkWidget *top, prefs_pair *pair)
     gtk_widget_set_sensitive (
                            GTK_WIDGET (name_to_widget (top, "unfade_button")),
                            found_any_writable_cells);
+
+    gtk_widget_set_sensitive (
+                           GTK_WIDGET (name_to_widget (top, "fade_label")),
+                           (found_any_writable_cells &&
+                            (p->fade_p || p->unfade_p)));
+    gtk_widget_set_sensitive (
+                           GTK_WIDGET (name_to_widget (top, "fade_text")),
+                           (found_any_writable_cells &&
+                            (p->fade_p || p->unfade_p)));
   }
 
 }
@@ -1347,8 +1389,9 @@ sensitize_demo_widgets (GtkWidget *toplevel, Bool sensitive_p)
 static void
 fix_text_entry_sizes (GtkWidget *toplevel)
 {
-  const char *names[] = { "timeout_text", "cycle_text", "fade_text",
-                          "ticks_text", "lock_text", "pass_text" };
+  const char *names[] = { "timeout_text", "cycle_text", "lock_text",
+                          "dpms_standby_text", "dpms_suspend_text",
+                          "dpms_off_text", "fade_text" };
   int i;
   int width = 0;
   GtkWidget *w;
@@ -1531,7 +1574,7 @@ get_hack_blurb (screenhack *hack)
   char *prog_name = strdup (hack->command);
   char *pretty_name = (hack->name
                        ? strdup (hack->name)
-                       : make_pretty_name (hack->command));
+                       : make_hack_name (hack->command));
   char doc_name[255], doc_class[255];
   char *s, *s2;
 
@@ -1636,7 +1679,7 @@ populate_demo_window (GtkWidget *toplevel, int which, prefs_pair *pair)
   char *pretty_name = (hack
                        ? (hack->name
                           ? strdup (hack->name)
-                          : make_pretty_name (hack->command))
+                          : make_hack_name (hack->command))
                        : 0);
   char *doc_string = hack ? get_hack_blurb (hack) : 0;
 
@@ -1731,6 +1774,23 @@ maybe_reload_init_file (GtkWidget *widget, prefs_pair *pair)
 }
 
 
+\f
+/* Setting window manager icon
+ */
+
+#include "logo.xpm"
+
+static void
+init_icon (GdkWindow *window)
+{
+  GdkBitmap *mask = 0;
+  GdkColor transp;
+  GdkPixmap *pixmap =
+    gdk_pixmap_create_from_xpm_d (window, &mask, &transp, logo_xpm);
+  if (pixmap)
+    gdk_window_set_icon (window, 0, pixmap, mask);
+}
+
 \f
 /* The main demo-mode command loop.
  */
@@ -2282,6 +2342,7 @@ main (int argc, char **argv)
 # endif /* HAVE_CRAPPLET */
     {
       gtk_widget_show (gtk_window);
+      init_icon (GTK_WIDGET(gtk_window)->window);
 
       /* Issue any warnings about the running xscreensaver daemon. */
       the_network_is_not_the_computer (gtk_window);
index 332bf42829383d682a3b2f3d76eeea1cc9229314..bf7e0520dc7d582d21c305c04a54681fc373f408 100644 (file)
@@ -1,5 +1,5 @@
 /* demo-Xm.c --- implements the interactive demo-mode and options dialogs.
- * xscreensaver, Copyright (c) 1993-1999 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1993-2001 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -900,48 +900,6 @@ format_time (char *buf, Time time)
 }
 
 
-static char *
-make_pretty_name (const char *shell_command)
-{
-  char *s = strdup (shell_command);
-  char *s2;
-  char res_name[255];
-
-  for (s2 = s; *s2; s2++)      /* truncate at first whitespace */
-    if (isspace (*s2))
-      {
-        *s2 = 0;
-        break;
-      }
-
-  s2 = strrchr (s, '/');       /* if pathname, take last component */
-  if (s2)
-    {
-      s2 = strdup (s2+1);
-      free (s);
-      s = s2;
-    }
-
-  if (strlen (s) > 50)         /* 51 is hereby defined as "unreasonable" */
-    s[50] = 0;
-
-  sprintf (res_name, "hacks.%s.name", s);              /* resource? */
-  s2 = get_string_resource (res_name, res_name);
-  if (s2)
-    return s2;
-
-  for (s2 = s; *s2; s2++)      /* if it has any capitals, return it */
-    if (*s2 >= 'A' && *s2 <= 'Z')
-      return s;
-
-  if (s[0] >= 'a' && s[0] <= 'z')                      /* else cap it */
-    s[0] -= 'a'-'A';
-  if (s[0] == 'X' && s[1] >= 'a' && s[1] <= 'z')       /* (magic leading X) */
-    s[1] -= 'a'-'A';
-  return s;
-}
-
-
 /* Finds the number of the last hack to run, and makes that item be
    selected by default.
  */
@@ -996,7 +954,7 @@ populate_hack_list (Widget toplevel, prefs_pair *pair)
     {
       char *pretty_name = (h[0]->name
                            ? strdup (h[0]->name)
-                           : make_pretty_name (h[0]->command));
+                           : make_hack_name (h[0]->command));
 
       XmString xmstr = XmStringCreate (pretty_name, XmSTRING_DEFAULT_CHARSET);
       XmListAddItem (list, xmstr, 0);
@@ -1239,7 +1197,7 @@ get_hack_blurb (screenhack *hack)
   char *prog_name = strdup (hack->command);
   char *pretty_name = (hack->name
                        ? strdup (hack->name)
-                       : make_pretty_name (hack->command));
+                       : make_hack_name (hack->command));
   char doc_name[255], doc_class[255];
   char *s, *s2;
 
@@ -1343,7 +1301,7 @@ populate_demo_window (Widget toplevel, int which, prefs_pair *pair)
   char *pretty_name = (hack
                        ? (hack->name
                           ? strdup (hack->name)
-                          : make_pretty_name (hack->command))
+                          : make_hack_name (hack->command))
                        : 0);
   char *doc_string = hack ? get_hack_blurb (hack) : 0;
 
diff --git a/driver/dpms.c b/driver/dpms.c
new file mode 100644 (file)
index 0000000..570c234
--- /dev/null
@@ -0,0 +1,137 @@
+/* dpms.c --- syncing the X Display Power Management values
+ * xscreensaver, Copyright (c) 2001 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <X11/Xlib.h>
+
+#ifdef HAVE_DPMS_EXTENSION
+
+# include <X11/Xproto.h>
+# include <X11/extensions/dpms.h>
+# include <X11/extensions/dpmsstr.h>
+
+  /* Why this crap is not in a header file somewhere, I have no idea.  Losers!
+   */
+  extern Bool DPMSQueryExtension (Display *dpy, int *event_ret, int *err_ret);
+  extern Bool DPMSCapable (Display *dpy);
+  extern Status DPMSInfo (Display *dpy, CARD16 *power_level, BOOL *state);
+  extern Status DPMSSetTimeouts (Display *dpy,
+                                 CARD16 standby, CARD16 suspend, CARD16 off);
+  extern Bool DPMSGetTimeouts (Display *dpy,
+                               CARD16 *standby, CARD16 *suspend, CARD16 *off);
+  extern Status DPMSEnable (Display *dpy);
+  extern Status DPMSDisable (Display *dpy);
+
+#endif /* HAVE_DPMS_EXTENSION */
+
+
+/* This file doesn't need the Xt headers, so stub these types out... */
+#undef XtPointer
+#define XtAppContext void*
+#define XrmDatabase  void*
+#define XtIntervalId void*
+#define XtPointer    void*
+#define Widget       void*
+
+#include "xscreensaver.h"
+
+void
+sync_server_dpms_settings (Display *dpy, Bool enabled_p,
+                           int standby_secs, int suspend_secs, int off_secs,
+                           Bool verbose_p)
+{
+# ifdef HAVE_DPMS_EXTENSION
+
+  int event = 0, error = 0;
+  BOOL o_enabled = False;
+  CARD16 o_power = 0;
+  CARD16 o_standby = 0, o_suspend = 0, o_off = 0;
+
+  Bool bogus_p = (standby_secs == 0 || suspend_secs == 0 || off_secs == 0);
+
+  if (bogus_p) enabled_p = False;
+
+  if (! DPMSQueryExtension (dpy, &event, &error))
+    {
+      if (verbose_p)
+        fprintf (stderr, "%s: XDPMS extension not supported.\n", blurb());
+      return;
+    }
+
+  if (! DPMSCapable (dpy))
+    {
+      if (verbose_p)
+        fprintf (stderr, "%s: DPMS not supported.\n", blurb());
+      return;
+    }
+
+  if (! DPMSInfo (dpy, &o_power, &o_enabled))
+    {
+      if (verbose_p)
+        fprintf (stderr, "%s: unable to get DPMS state.\n", blurb());
+      return;
+    }
+
+  if (o_enabled != enabled_p)
+    {
+      if (! (enabled_p ? DPMSEnable (dpy) : DPMSDisable (dpy)))
+        {
+          if (verbose_p)
+            fprintf (stderr, "%s: unable to set DPMS state.\n", blurb());
+          return;
+        }
+      else if (verbose_p)
+        fprintf (stderr, "%s: turned DPMS %s.\n", blurb(),
+                 enabled_p ? "on" : "off");
+    }
+
+  if (bogus_p)
+    {
+      if (verbose_p)
+        fprintf (stderr, "%s: not setting bogus DPMS timeouts: %d %d %d.\n",
+                 blurb(), standby_secs, suspend_secs, off_secs);
+      return;
+    }
+
+  if (!DPMSGetTimeouts (dpy, &o_standby, &o_suspend, &o_off))
+    {
+      if (verbose_p)
+        fprintf (stderr, "%s: unable to get DPMS timeouts.\n", blurb());
+      return;
+    }
+
+  if (o_standby != standby_secs ||
+      o_suspend != suspend_secs ||
+      o_off != off_secs)
+    {
+      if (!DPMSSetTimeouts (dpy, standby_secs, suspend_secs, off_secs))
+        {
+          if (verbose_p)
+            fprintf (stderr, "%s: unable to set DPMS timeouts.\n", blurb());
+          return;
+        }
+      else if (verbose_p)
+        fprintf (stderr, "%s: set DPMS timeouts: %d %d %d.\n", blurb(),
+                 standby_secs, suspend_secs, off_secs);
+    }
+
+# else  /* !HAVE_DPMS_EXTENSION */
+
+  if (verbose_p)
+    fprintf (stderr, "%s: DPMS support not compiled in.\n", blurb());
+
+# endif /* HAVE_DPMS_EXTENSION */
+}
index b508856034be167b6f45cbf4bd6cd410d0d61971..2c766b55ed3291c8d3edd1e24c48cbf4f66ba590 100644 (file)
@@ -538,18 +538,12 @@ draw_passwd_window (saver_info *si)
 
   /* the logo
    */
-  XSetForeground (si->dpy, gc1, pw->logo_foreground);
-  XSetForeground (si->dpy, gc2, pw->logo_background);
-
   x1 = pw->shadow_width * 3;
   y1 = pw->shadow_width * 3;
   x2 = pw->logo_width - (pw->shadow_width * 6);
   y2 = pw->logo_height - (pw->shadow_width * 6);
 
-  XFillRectangle (si->dpy, si->passwd_dialog, gc2, x1, y1, x2, y2);
-  skull (si->dpy, si->passwd_dialog, gc1, gc2,
-        x1 + pw->shadow_width, y1 + pw->shadow_width,
-        x2 - (pw->shadow_width * 2), y2 - (pw->shadow_width * 2));
+  draw_logo (si, si->passwd_dialog, x1, y1, x2, y2, True);
 
   /* The thermometer
    */
@@ -680,6 +674,18 @@ update_passwd_window (saver_info *si, const char *printed_passwd, float ratio)
                      MAX (0, pw->thermo_field_height - y - 2));
     }
 
+  /* the logo
+   */
+  {
+    int x1, y1, x2, y2;
+    x1 = pw->shadow_width * 3;
+    y1 = pw->shadow_width * 3;
+    x2 = pw->logo_width - (pw->shadow_width * 6);
+    y2 = pw->logo_height - (pw->shadow_width * 6);
+
+    draw_logo (si, si->passwd_dialog, x1, y1, x2, y2, False);
+  }
+
   XFreeGC (si->dpy, gc1);
   XFreeGC (si->dpy, gc2);
   XSync (si->dpy, False);
index 392394d1251f2e5fb293311c2f63a23568250f2e..71ed252aa5741793d25d6a46126366f74429b6b2 100644 (file)
@@ -74,7 +74,8 @@ extern const char *blurb (void);
 
 static void get_screenhacks (saver_preferences *p);
 static char *format_command (const char *cmd, Bool wrap_p);
-
+static void merge_system_screenhacks (saver_preferences *p,
+                                      screenhack **system_list, int count);
 
 static char *
 chase_symlinks (const char *file)
@@ -203,7 +204,7 @@ static const char * const prefs[] = {
   "installColormap",
   "verbose",
   "timestamp",
-  "splash",                    /* not saved -- same as "splashDuration: 0" */
+  "splash",
   "splashDuration",
   "demoCommand",
   "prefsCommand",
@@ -217,6 +218,10 @@ static const char * const prefs[] = {
   "captureStderr",
   "captureStdout",             /* not saved -- obsolete */
   "font",
+  "dpmsEnabled",
+  "dpmsStandby",
+  "dpmsSuspend",
+  "dpmsOff",
   "",
   "programs",
   "",
@@ -575,7 +580,6 @@ write_init_file (saver_preferences *p, const char *version_string,
    */
   char *visual_name;
   char *programs;
-  Bool capture_stderr_p;
   Bool overlay_stderr_p;
   char *stderr_font;
   FILE *out;
@@ -627,7 +631,6 @@ write_init_file (saver_preferences *p, const char *version_string,
   /* Kludge, since these aren't in the saver_preferences struct... */
   visual_name = get_string_resource ("visualID", "VisualID");
   programs = 0;
-  capture_stderr_p = get_boolean_resource ("captureStderr", "Boolean");
   overlay_stderr_p = get_boolean_resource ("overlayStderr", "Boolean");
   stderr_font = get_string_resource ("font", "Font");
 
@@ -707,7 +710,7 @@ write_init_file (saver_preferences *p, const char *version_string,
       CHECK("installColormap") type = pref_bool, b = p->install_cmap_p;
       CHECK("verbose")         type = pref_bool, b = p->verbose_p;
       CHECK("timestamp")       type = pref_bool, b = p->timestamp_p;
-      CHECK("splash")          continue;  /* don't save */
+      CHECK("splash")          type = pref_bool, b = p->splash_p;
       CHECK("splashDuration")  type = pref_time, t = p->splash_duration;
       CHECK("demoCommand")     type = pref_str,  s = p->demo_command;
       CHECK("prefsCommand")    type = pref_str,  s = p->prefs_command;
@@ -718,9 +721,13 @@ write_init_file (saver_preferences *p, const char *version_string,
       CHECK("unfade")          type = pref_bool, b = p->unfade_p;
       CHECK("fadeSeconds")     type = pref_time, t = p->fade_seconds;
       CHECK("fadeTicks")       type = pref_int,  i = p->fade_ticks;
-      CHECK("captureStderr")   type = pref_bool, b =    capture_stderr_p;
+      CHECK("captureStderr")   type = pref_bool, b = p->capture_stderr_p;
       CHECK("captureStdout")   continue;  /* don't save */
       CHECK("font")            type = pref_str,  s =    stderr_font;
+      CHECK("dpmsEnabled")     type = pref_bool, b = p->dpms_enabled_p;
+      CHECK("dpmsStandby")     type = pref_time, t = p->dpms_standby;
+      CHECK("dpmsSuspend")     type = pref_time, t = p->dpms_suspend;
+      CHECK("dpmsOff")         type = pref_time, t = p->dpms_off;
       CHECK("programs")                type = pref_str,  s =    programs;
       CHECK("pointerPollTime") type = pref_time, t = p->pointer_timeout;
       CHECK("windowCreationTimeout")type=pref_time,t= p->notice_events_timeout;
@@ -835,6 +842,27 @@ write_init_file (saver_preferences *p, const char *version_string,
 /* Parsing the resource database
  */
 
+void
+free_screenhack (screenhack *hack)
+{
+  if (hack->visual) free (hack->visual);
+  if (hack->name) free (hack->name);
+  free (hack->command);
+  memset (hack, 0, sizeof(*hack));
+  free (hack);
+}
+
+static void
+free_screenhack_list (screenhack **list, int count)
+{
+  int i;
+  if (!list) return;
+  for (i = 0; i < count; i++)
+    if (list[i])
+      free_screenhack (list[i]);
+  free (list);
+}
+
 
 /* Populate `saver_preferences' with the contents of the resource database.
    Note that this may be called multiple times -- it is re-run each time
@@ -848,6 +876,24 @@ load_init_file (saver_preferences *p)
 {
   static Bool first_time = True;
   
+  screenhack **system_default_screenhacks = 0;
+  int system_default_screenhack_count = 0;
+
+  if (first_time)
+    {
+      /* Get the programs resource before the .xscreensaver file has been
+         parsed and merged into the resource database for the first time:
+         this is the value of *programs from the app-defaults file.
+         Then clear it out so that it will be parsed again later, after
+         the init file has been read.
+       */
+      get_screenhacks (p);
+      system_default_screenhacks = p->screenhacks;
+      system_default_screenhack_count = p->screenhacks_count;
+      p->screenhacks = 0;
+      p->screenhacks_count = 0;
+    }
+
   if (parse_init_file (p) != 0)                /* file might have gone away */
     if (!first_time) return;
 
@@ -864,6 +910,8 @@ load_init_file (saver_preferences *p)
   p->fade_ticks            = get_integer_resource ("fadeTicks", "Integer");
   p->install_cmap_p = get_boolean_resource ("installColormap", "Boolean");
   p->nice_inferior  = get_integer_resource ("nice", "Nice");
+  p->splash_p       = get_boolean_resource ("splash", "Boolean");
+  p->capture_stderr_p = get_boolean_resource ("captureStderr", "Boolean");
 
   p->initial_delay   = 1000 * get_seconds_resource ("initialDelay", "Time");
   p->splash_duration = 1000 * get_seconds_resource ("splashDuration", "Time");
@@ -874,6 +922,12 @@ load_init_file (saver_preferences *p)
   p->pointer_timeout = 1000 * get_seconds_resource ("pointerPollTime", "Time");
   p->notice_events_timeout = 1000*get_seconds_resource("windowCreationTimeout",
                                                       "Time");
+
+  p->dpms_enabled_p  = get_boolean_resource ("dpmsEnabled", "Boolean");
+  p->dpms_standby    = 1000 * get_seconds_resource ("dpmsStandby", "Time");
+  p->dpms_suspend    = 1000 * get_seconds_resource ("dpmsSuspend", "Time");
+  p->dpms_off        = 1000 * get_seconds_resource ("dpmsOff",     "Time");
+
   p->shell = get_string_resource ("bourneShell", "BourneShell");
 
   p->demo_command = get_string_resource("demoCommand", "URL");
@@ -881,12 +935,14 @@ load_init_file (saver_preferences *p)
   p->help_url = get_string_resource("helpURL", "URL");
   p->load_url_command = get_string_resource("loadURL", "LoadURL");
 
+
+  /* If "*splash" is unset, default to true. */
   {
-    char *s;
-    if ((s = get_string_resource ("splash", "Boolean")))
-      if (!get_boolean_resource("splash", "Boolean"))
-       p->splash_duration = 0;
-    if (s) free (s);
+    char *s = get_string_resource ("splash", "Boolean");
+    if (s)
+      free (s);
+    else
+      p->splash_p = True;
   }
 
   p->use_xidle_extension = get_boolean_resource ("xidleExtension","Boolean");
@@ -908,12 +964,29 @@ load_init_file (saver_preferences *p)
     p->fade_p = False;
   if (! p->fade_p) p->unfade_p = False;
 
+  if (p->dpms_standby <= 0 || p->dpms_suspend <= 0 || p->dpms_off <= 0)
+    p->dpms_enabled_p = False;
+
+  if (p->dpms_standby <= 10000) p->dpms_standby = 10000;        /* 10 secs */
+  if (p->dpms_suspend <= 10000) p->dpms_suspend = 10000;        /* 10 secs */
+  if (p->dpms_off     <= 10000) p->dpms_off     = 10000;        /* 10 secs */
+
   p->watchdog_timeout = p->cycle * 0.6;
   if (p->watchdog_timeout < 30000) p->watchdog_timeout = 30000;          /* 30 secs */
   if (p->watchdog_timeout > 3600000) p->watchdog_timeout = 3600000; /*  1 hr */
 
   get_screenhacks (p);
 
+  if (system_default_screenhack_count)  /* note: first_time is also true */
+    {
+      merge_system_screenhacks (p, system_default_screenhacks,
+                                system_default_screenhack_count);
+      free_screenhack_list (system_default_screenhacks,
+                            system_default_screenhack_count);
+      system_default_screenhacks = 0;
+      system_default_screenhack_count = 0;
+    }
+
   if (p->debug_p)
     {
       p->xsync_p = True;
@@ -923,6 +996,81 @@ load_init_file (saver_preferences *p)
     }
 }
 
+
+/* If there are any hacks in the system-wide defaults that are not in
+   the ~/.xscreensaver file, add the new ones to the end of the list.
+   This does *not* actually save the file.
+ */
+static void
+merge_system_screenhacks (saver_preferences *p,
+                          screenhack **system_list, int system_count)
+{
+  /* Yeah yeah, this is an N^2 operation, but I don't have hashtables handy,
+     so fuck it. */
+
+  int made_space = 0;
+  int i;
+  for (i = 0; i < system_count; i++)
+    {
+      int j;
+      Bool matched_p = False;
+
+      for (j = 0; j < p->screenhacks_count; j++)
+        {
+          char *name;
+          if (!system_list[i]->name)
+            system_list[i]->name = make_hack_name (system_list[i]->command);
+
+          name = p->screenhacks[j]->name;
+          if (!name)
+            name = make_hack_name (p->screenhacks[j]->command);
+
+          matched_p = !strcasecmp (name, system_list[i]->name);
+
+          if (name != p->screenhacks[j]->name)
+            free (name);
+
+          if (matched_p)
+            break;
+        }
+
+      if (!matched_p)
+        {
+          /* We have an entry in the system-wide list that is not in the
+             user's .xscreensaver file.  Add it to the end.
+             Note that p->screenhacks is a single malloc block, not a
+             linked list, so we have to realloc it.
+           */
+          screenhack *oh = system_list[i];
+          screenhack *nh = (screenhack *) malloc (sizeof(screenhack));
+
+          if (made_space == 0)
+            {
+              made_space = 10;
+              p->screenhacks = (screenhack **)
+                realloc (p->screenhacks,
+                         (p->screenhacks_count + made_space) 
+                         * sizeof(screenhack));
+              if (!p->screenhacks) abort();
+            }
+
+          nh->enabled_p = oh->enabled_p;
+          nh->visual    = oh->visual  ? strdup(oh->visual)  : 0;
+          nh->name      = oh->name    ? strdup(oh->name)    : 0;
+          nh->command   = oh->command ? strdup(oh->command) : 0;
+
+          p->screenhacks[p->screenhacks_count++] = nh;
+          made_space--;
+
+#if 0
+          fprintf (stderr, "%s: noticed new hack: %s\n", blurb(),
+                   (nh->name ? nh->name : make_hack_name (nh->command)));
+#endif
+        }
+    }
+}
+
+
 \f
 /* Parsing the programs resource.
  */
@@ -975,17 +1123,6 @@ parse_screenhack (const char *line)
 }
 
 
-void
-free_screenhack (screenhack *hack)
-{
-  if (hack->visual) free (hack->visual);
-  if (hack->name) free (hack->name);
-  free (hack->command);
-  memset (hack, 0, sizeof(*hack));
-  free (hack);
-}
-
-
 static char *
 format_command (const char *cmd, Bool wrap_p)
 {
@@ -1032,6 +1169,53 @@ format_command (const char *cmd, Bool wrap_p)
 }
 
 
+/* Returns a new string describing the shell command.
+   This may be just the name of the program, capitalized.
+   It also may be something from the resource database (gotten
+   by looking for "hacks.XYZ.name", where XYZ is the program.)
+ */
+char *
+make_hack_name (const char *shell_command)
+{
+  char *s = strdup (shell_command);
+  char *s2;
+  char res_name[255];
+
+  for (s2 = s; *s2; s2++)      /* truncate at first whitespace */
+    if (isspace (*s2))
+      {
+        *s2 = 0;
+        break;
+      }
+
+  s2 = strrchr (s, '/');       /* if pathname, take last component */
+  if (s2)
+    {
+      s2 = strdup (s2+1);
+      free (s);
+      s = s2;
+    }
+
+  if (strlen (s) > 50)         /* 51 is hereby defined as "unreasonable" */
+    s[50] = 0;
+
+  sprintf (res_name, "hacks.%s.name", s);              /* resource? */
+  s2 = get_string_resource (res_name, res_name);
+  if (s2)
+    return s2;
+
+  for (s2 = s; *s2; s2++)      /* if it has any capitals, return it */
+    if (*s2 >= 'A' && *s2 <= 'Z')
+      return s;
+
+  if (s[0] >= 'a' && s[0] <= 'z')                      /* else cap it */
+    s[0] -= 'a'-'A';
+  if (s[0] == 'X' && s[1] >= 'a' && s[1] <= 'z')       /* (magic leading X) */
+    s[1] -= 'a'-'A';
+  return s;
+}
+
+
 char *
 format_hack (screenhack *hack, Bool wrap_p)
 {
@@ -1125,21 +1309,12 @@ get_screenhacks (saver_preferences *p)
 
   d = get_string_resource ("programs", "Programs");
 
-  if (p->screenhacks)
-    {
-      for (i = 0; i < p->screenhacks_count; i++)
-       if (p->screenhacks[i])
-         free_screenhack (p->screenhacks[i]);
-      free(p->screenhacks);
-      p->screenhacks = 0;
-    }
+  free_screenhack_list (p->screenhacks, p->screenhacks_count);
+  p->screenhacks = 0;
+  p->screenhacks_count = 0;
 
   if (!d || !*d)
-    {
-      p->screenhacks_count = 0;
-      p->screenhacks = 0;
-      return;
-    }
+    return;
 
   size = strlen (d);
 
index 8395f323f1f4ee51bd1c3d7a2265c60c11edb510..a2b83b75bcc26cefe949fcea56437714021802bb 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1993-2001 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -38,6 +38,7 @@ struct saver_preferences {
 
   Bool verbose_p;              /* whether to print out lots of status info */
   Bool timestamp_p;            /* whether to mark messages with a timestamp */
+  Bool capture_stderr_p;       /* whether to redirect stdout/stderr  */
   Bool debug_p;                        /* pay no mind to the man behind the curtain */
   Bool xsync_p;                        /* whether XSynchronize has been called */
 
@@ -48,6 +49,7 @@ struct saver_preferences {
   Bool unfade_p;               /* whether to fade from black, if possible */
   Time fade_seconds;           /* how long that should take */
   int fade_ticks;              /* how many ticks should be used */
+  Bool splash_p;               /* whether to do a splash screen at startup */
 
   Bool install_cmap_p;         /* whether we should use our own colormap
                                   when using the screen's default visual. */
@@ -67,6 +69,11 @@ struct saver_preferences {
   Time notice_events_timeout;  /* how long after window creation to select */
   Time watchdog_timeout;       /* how often to re-raise and re-blank screen */
 
+  Bool dpms_enabled_p;         /* Whether to power down the monitor */
+  Time dpms_standby;           /* how long until monitor goes black */
+  Time dpms_suspend;           /* how long until monitor power-saves */
+  Time dpms_off;               /* how long until monitor powers down */
+
   Bool use_xidle_extension;    /* which extension to use, if possible */
   Bool use_mit_saver_extension;
   Bool use_sgi_saver_extension;
@@ -90,5 +97,12 @@ const char *init_file_name (void);
 extern screenhack *parse_screenhack (const char *line);
 extern void free_screenhack (screenhack *hack);
 extern char *format_hack (screenhack *hack, Bool wrap_p);
+char *make_hack_name (const char *shell_command);
+
+/* From dpms.c */
+extern void sync_server_dpms_settings (Display *dpy, Bool enabled_p,
+                                       int standby_secs, int suspend_secs,
+                                       int off_secs,
+                                       Bool verbose_p);
 
 #endif /* __XSCREENSAVER_PREFS_H__ */
index fabd8824d0a15828d9d1f82acf8d19bafdc548be..b4dcf20c6efe0c9ad57319eb9f2d438f7231bbdb 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1991-1998 Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1991-2001 Jamie Zawinski <jwz@netscape.com>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -157,7 +157,8 @@ make_splash_dialog (saver_info *si)
 
   if (si->sp_data)
     return;
-  if (si->prefs.splash_duration <= 0)
+  if (!si->prefs.splash_p ||
+      si->prefs.splash_duration <= 0)
     return;
 
   sp = (splash_dialog_data *) calloc (1, sizeof(*sp));
@@ -375,6 +376,22 @@ make_splash_dialog (saver_info *si)
   XSync (si->dpy, False);
 }
 
+void
+draw_logo (saver_info *si, Window win, int x, int y, int w, int h,
+           Bool first_time_p)
+{
+  Colormap cmap = DefaultColormapOfScreen (si->default_screen->screen);
+  Pixmap logo_map = XCreatePixmap (si->dpy, win, w, h, 
+                                   si->default_screen->current_depth);
+  XGCValues gcv;
+  GC gc = XCreateGC (si->dpy, win, 0, &gcv);
+  xscreensaver_logo (si->dpy, logo_map, cmap, !first_time_p);
+  XCopyArea (si->dpy, logo_map, win, gc, 0, 0, w, h, x, y);
+  XFreeGC (si->dpy, gc);
+  XFreePixmap (si->dpy, logo_map);
+}
+
+
 static void
 draw_splash_window (saver_info *si)
 {
@@ -488,10 +505,7 @@ draw_splash_window (saver_info *si)
   x2 = sp->logo_width - (sp->shadow_width * 6);
   y2 = sp->logo_height - (sp->shadow_width * 6);
 
-  XFillRectangle (si->dpy, si->splash_dialog, gc2, x1, y1, x2, y2);
-  skull (si->dpy, si->splash_dialog, gc1, gc2,
-        x1 + sp->shadow_width, y1 + sp->shadow_width,
-        x2 - (sp->shadow_width * 2), y2 - (sp->shadow_width * 2));
+  draw_logo (si, si->splash_dialog, x1, y1, x2, y2, True);
 
 
   /* The shadow around the logo
index f86f8069f83f13dde550525ced06689955b32124..eaa884ff2ecb460769e3bcf0c48cc5373b440faa 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1998 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1998, 2001 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
    itself.
  */
 
-#define WHICH 0
+#define WHICH_PASS   100
+#define WHICH_SPLASH 101
+#define WHICH_TTY    102
+
+#define WHICH        WHICH_PASS
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -133,7 +137,7 @@ main (int argc, char **argv)
 
   progclass = "XScreenSaver";
 
-#if (WHICH != 2)
+#if (WHICH != WHICH_TTY)
   toplevel_shell = XtAppInitialize (&si->app, progclass, 0, 0,
                                    &argc, argv, fallback,
                                    0, 0);
@@ -162,7 +166,7 @@ main (int argc, char **argv)
 
   while (1)
     {
-#if WHICH == 0
+#if WHICH == WHICH_PASS
       if (unlock_p (si))
        fprintf (stderr, "%s: password correct\n", progname);
       else
@@ -170,7 +174,7 @@ main (int argc, char **argv)
 
       XSync(si->dpy, False);
       sleep (3);
-#elif WHICH == 1
+#elif WHICH == WHICH_SPLASH
       {
        XEvent event;
        make_splash_dialog (si);
@@ -186,7 +190,7 @@ main (int argc, char **argv)
        XSync (si->dpy, False);
        sleep (1);
       }
-#elif WHICH == 2
+#elif WHICH == WHICH_TTY
       {
         char *pass;
         char buf[255];
@@ -204,6 +208,8 @@ main (int argc, char **argv)
         else
           printf ("%s: Wrong!\n", progname);
       }
+#else
+# error bogus WHICH value!
 #endif
     }
 }
index 1dbdeff6706481a32ba9a99697a26cf44284bf06..d810b4924d32e934de1d62ddc3e0c271ef8c8be2 100644 (file)
@@ -1071,9 +1071,18 @@ static void
 watchdog_timer (XtPointer closure, XtIntervalId *id)
 {
   saver_info *si = (saver_info *) closure;
+  saver_preferences *p = &si->prefs;
 
   disable_builtin_screensaver (si, False);
 
+  /* If the DPMS settings on the server have changed, change them back to
+     what ~/.xscreensaver says they should be. */
+  sync_server_dpms_settings (si->dpy, p->dpms_enabled_p,
+                             p->dpms_standby / 1000,
+                             p->dpms_suspend / 1000,
+                             p->dpms_off / 1000,
+                             False);
+
   if (si->screen_blanked_p)
     {
       Bool running_p = screenhack_running_p (si);
index b092a72b62d82baae3231b3155d61019a8bc8a51..29e046190fed02b12ece386ba3a496c2c3d875bf 100644 (file)
@@ -1,5 +1,5 @@
 /* windows.c --- turning the screen black; dealing with visuals, virtual roots.
- * xscreensaver, Copyright (c) 1991-2000 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1991-2001 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -159,28 +159,39 @@ static Bool
 grab_keyboard_and_mouse (saver_info *si, Window window, Cursor cursor)
 {
   Status mstatus, kstatus;
-  XSync (si->dpy, False);
+  int i;
+  int retries = 4;
 
-  kstatus = grab_kbd (si, window);
-  if (kstatus != GrabSuccess)
-    {  /* try again in a second */
-      sleep (1);
+  for (i = 0; i < retries; i++)
+    {
+      XSync (si->dpy, False);
       kstatus = grab_kbd (si, window);
-      if (kstatus != GrabSuccess)
-       fprintf (stderr, "%s: couldn't grab keyboard!  (%s)\n",
-                blurb(), grab_string(kstatus));
-    }
+      if (kstatus == GrabSuccess)
+        break;
 
-  mstatus = grab_mouse (si, window, cursor);
-  if (mstatus != GrabSuccess)
-    {  /* try again in a second */
+      /* else, wait a second and try to grab again. */
       sleep (1);
+    }
+
+  if (kstatus != GrabSuccess)
+    fprintf (stderr, "%s: couldn't grab keyboard!  (%s)\n",
+             blurb(), grab_string(kstatus));
+
+  for (i = 0; i < retries; i++)
+    {
+      XSync (si->dpy, False);
       mstatus = grab_mouse (si, window, cursor);
-      if (mstatus != GrabSuccess)
-       fprintf (stderr, "%s: couldn't grab pointer!  (%s)\n",
-                blurb(), grab_string(mstatus));
+      if (mstatus == GrabSuccess)
+        break;
+
+      /* else, wait a second and try to grab again. */
+      sleep (1);
     }
 
+  if (mstatus != GrabSuccess)
+    fprintf (stderr, "%s: couldn't grab pointer!  (%s)\n",
+             blurb(), grab_string(mstatus));
+
   return (kstatus == GrabSuccess ||
          mstatus == GrabSuccess);
 }
index 61a2c788706e4a209257a9446f4b697a50825cb9..514ebc0a022221071d6cc626b5005bf938603f62 100644 (file)
@@ -11,7 +11,7 @@
 .if n .sp 1
 .if t .sp .5
 ..
-.TH XScreenSaver 1 "19-Jan-2001 (3.27)" "X Version 11"
+.TH XScreenSaver 1 "02-Feb-2001 (3.28)" "X Version 11"
 .SH NAME
 xscreensaver-command - control a running xscreensaver process
 .SH SYNOPSIS
@@ -252,7 +252,7 @@ and related tools can always be found at http://www.jwz.org/xscreensaver/
 .BR xscreensaver (1)
 .BR xscreensaver\-demo (1)
 .SH COPYRIGHT
-Copyright \(co 1992, 1993, 1997, 1998, 1999
+Copyright \(co 1992, 1993, 1997, 1998, 1999, 2000, 2001
 by Jamie Zawinski.  Permission to use, copy, modify, distribute, and sell
 this software and its documentation for any purpose is hereby granted without
 fee, provided that the above copyright notice appear in all copies and that
index ab6e0e3b51410a2ca29c5444d4b4775831cdbba8..6629a9597b2ac8643dbf309ae6c9280e28f5bb23 100644 (file)
@@ -591,536 +591,973 @@ Mono
 
       <widget>
        <class>GtkVBox</class>
-       <name>prefs_hbox</name>
+       <name>options_vbox</name>
        <homogeneous>False</homogeneous>
        <spacing>0</spacing>
 
        <widget>
-         <class>GtkFrame</class>
-         <name>prefs_frame</name>
+         <class>GtkTable</class>
+         <name>options_table</name>
          <border_width>10</border_width>
-         <label_xalign>0</label_xalign>
-         <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+         <rows>2</rows>
+         <columns>2</columns>
+         <homogeneous>True</homogeneous>
+         <row_spacing>2</row_spacing>
+         <column_spacing>0</column_spacing>
          <child>
            <padding>0</padding>
-           <expand>True</expand>
-           <fill>True</fill>
+           <expand>False</expand>
+           <fill>False</fill>
          </child>
 
          <widget>
-           <class>GtkTable</class>
-           <name>prefs_table</name>
+           <class>GtkFrame</class>
+           <name>blanking_frame</name>
            <border_width>10</border_width>
-           <rows>6</rows>
-           <columns>3</columns>
-           <homogeneous>False</homogeneous>
-           <row_spacing>2</row_spacing>
-           <column_spacing>10</column_spacing>
+           <label>Blanking and Locking:</label>
+           <label_xalign>0</label_xalign>
+           <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+           <child>
+             <left_attach>0</left_attach>
+             <right_attach>1</right_attach>
+             <top_attach>0</top_attach>
+             <bottom_attach>1</bottom_attach>
+             <xpad>0</xpad>
+             <ypad>0</ypad>
+             <xexpand>True</xexpand>
+             <yexpand>True</yexpand>
+             <xshrink>False</xshrink>
+             <yshrink>False</yshrink>
+             <xfill>True</xfill>
+             <yfill>True</yfill>
+           </child>
 
            <widget>
-             <class>GtkEntry</class>
-             <name>timeout_text</name>
-             <tooltip>How long until the screensaver activates.</tooltip>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>activate</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:28:10 GMT</last_modification_time>
-             </signal>
-             <signal>
-               <name>focus_out_event</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:34:26 GMT</last_modification_time>
-             </signal>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>8</text_max_length>
-             <text></text>
-             <child>
-               <left_attach>1</left_attach>
-               <right_attach>2</right_attach>
-               <top_attach>0</top_attach>
-               <bottom_attach>1</bottom_attach>
+             <class>GtkTable</class>
+             <name>blanking_table</name>
+             <border_width>10</border_width>
+             <rows>5</rows>
+             <columns>3</columns>
+             <homogeneous>False</homogeneous>
+             <row_spacing>2</row_spacing>
+             <column_spacing>10</column_spacing>
+
+             <widget>
+               <class>GtkEntry</class>
+               <name>lock_text</name>
+               <tooltip>How long after the screen saver has activated until a password will be required (if  `Require Password' is also set.)</tooltip>
+               <can_focus>True</can_focus>
+               <signal>
+                 <name>activate</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+               </signal>
+               <signal>
+                 <name>focus_out_event</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+               </signal>
+               <editable>True</editable>
+               <text_visible>True</text_visible>
+               <text_max_length>8</text_max_length>
+               <text></text>
+               <child>
+                 <left_attach>1</left_attach>
+                 <right_attach>2</right_attach>
+                 <top_attach>4</top_attach>
+                 <bottom_attach>5</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>False</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkEntry</class>
+               <name>cycle_text</name>
+               <tooltip>How long each demo will be run before moving on to another.</tooltip>
+               <can_focus>True</can_focus>
+               <signal>
+                 <name>activate</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+               </signal>
+               <signal>
+                 <name>focus_out_event</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+               </signal>
+               <editable>True</editable>
+               <text_visible>True</text_visible>
+               <text_max_length>8</text_max_length>
+               <text></text>
+               <child>
+                 <left_attach>1</left_attach>
+                 <right_attach>2</right_attach>
+                 <top_attach>1</top_attach>
+                 <bottom_attach>2</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>False</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkEntry</class>
+               <name>timeout_text</name>
+               <tooltip>How long until the screen saver activates and begins running demos.</tooltip>
+               <can_focus>True</can_focus>
+               <signal>
+                 <name>activate</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:28:10 GMT</last_modification_time>
+               </signal>
+               <signal>
+                 <name>focus_out_event</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:34:26 GMT</last_modification_time>
+               </signal>
+               <editable>True</editable>
+               <text_visible>True</text_visible>
+               <text_max_length>8</text_max_length>
+               <text></text>
+               <child>
+                 <left_attach>1</left_attach>
+                 <right_attach>2</right_attach>
+                 <top_attach>0</top_attach>
+                 <bottom_attach>1</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>False</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkLabel</class>
+               <name>timeout_label</name>
+               <label>Blank After:</label>
+               <justify>GTK_JUSTIFY_RIGHT</justify>
+               <wrap>False</wrap>
+               <xalign>1</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>0</top_attach>
+                 <bottom_attach>1</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkEntry</class>
-             <name>cycle_text</name>
-             <tooltip>How long each demo will be run before moving on to another.</tooltip>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>activate</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
-             </signal>
-             <signal>
-               <name>focus_out_event</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
-             </signal>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>8</text_max_length>
-             <text></text>
-             <child>
-               <left_attach>1</left_attach>
-               <right_attach>2</right_attach>
-               <top_attach>1</top_attach>
-               <bottom_attach>2</bottom_attach>
+             <widget>
+               <class>GtkLabel</class>
+               <name>cycle_label</name>
+               <label>Cycle After:</label>
+               <justify>GTK_JUSTIFY_RIGHT</justify>
+               <wrap>False</wrap>
+               <xalign>1</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>1</top_attach>
+                 <bottom_attach>2</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkEntry</class>
-             <name>fade_text</name>
-             <tooltip>How long (in seconds) it should take for the screen to fade to black (8-bit displays only.)</tooltip>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>activate</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
-             </signal>
-             <signal>
-               <name>focus_out_event</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
-             </signal>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>8</text_max_length>
-             <text></text>
-             <child>
-               <left_attach>1</left_attach>
-               <right_attach>2</right_attach>
-               <top_attach>2</top_attach>
-               <bottom_attach>3</bottom_attach>
+             <widget>
+               <class>GtkLabel</class>
+               <name>lock_label</name>
+               <label>Lock After:</label>
+               <justify>GTK_JUSTIFY_RIGHT</justify>
+               <wrap>False</wrap>
+               <xalign>1</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>4</top_attach>
+                 <bottom_attach>5</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkEntry</class>
-             <name>ticks_text</name>
-             <tooltip>How many steps are in the fade animation (8-bit displays only.)</tooltip>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>activate</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
-             </signal>
-             <signal>
-               <name>focus_out_event</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
-             </signal>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>8</text_max_length>
-             <text></text>
-             <child>
-               <left_attach>1</left_attach>
-               <right_attach>2</right_attach>
-               <top_attach>3</top_attach>
-               <bottom_attach>4</bottom_attach>
+             <widget>
+               <class>GtkLabel</class>
+               <name>blanking_dummy</name>
+               <label></label>
+               <justify>GTK_JUSTIFY_LEFT</justify>
+               <wrap>False</wrap>
+               <xalign>0.5</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
+               <child>
+                 <left_attach>2</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>4</top_attach>
+                 <bottom_attach>5</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>True</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkHSeparator</class>
+               <name>blanking_hr</name>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>2</top_attach>
+                 <bottom_attach>3</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>True</xexpand>
+                 <yexpand>True</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkEventBox</class>
+               <name>lock_button_eventbox</name>
+               <tooltip>Whether a password should be required to unblank the screen.</tooltip>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>3</top_attach>
+                 <bottom_attach>4</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
+
+               <widget>
+                 <class>GtkCheckButton</class>
+                 <name>lock_button</name>
+                 <can_focus>True</can_focus>
+                 <signal>
+                   <name>toggled</name>
+                   <handler>pref_changed_cb</handler>
+                   <last_modification_time>Mon, 03 Apr 2000 02:31:53 GMT</last_modification_time>
+                 </signal>
+                 <label>Require Password</label>
+                 <active>False</active>
+                 <draw_indicator>True</draw_indicator>
+               </widget>
+             </widget>
            </widget>
+         </widget>
+
+         <widget>
+           <class>GtkFrame</class>
+           <name>dpms_frame</name>
+           <border_width>10</border_width>
+           <label>Display Power Management:</label>
+           <label_xalign>0</label_xalign>
+           <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+           <child>
+             <left_attach>1</left_attach>
+             <right_attach>2</right_attach>
+             <top_attach>0</top_attach>
+             <bottom_attach>1</bottom_attach>
+             <xpad>0</xpad>
+             <ypad>0</ypad>
+             <xexpand>False</xexpand>
+             <yexpand>False</yexpand>
+             <xshrink>False</xshrink>
+             <yshrink>False</yshrink>
+             <xfill>True</xfill>
+             <yfill>True</yfill>
+           </child>
 
            <widget>
-             <class>GtkEntry</class>
-             <name>lock_text</name>
-             <tooltip>How long after the screensaver has activated until a password will be required (if  `Require Password' is also set.)</tooltip>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>activate</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
-             </signal>
-             <signal>
-               <name>focus_out_event</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
-             </signal>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>8</text_max_length>
-             <text></text>
-             <child>
-               <left_attach>1</left_attach>
-               <right_attach>2</right_attach>
-               <top_attach>4</top_attach>
-               <bottom_attach>5</bottom_attach>
+             <class>GtkTable</class>
+             <name>dpms_table</name>
+             <border_width>10</border_width>
+             <rows>4</rows>
+             <columns>3</columns>
+             <homogeneous>False</homogeneous>
+             <row_spacing>2</row_spacing>
+             <column_spacing>10</column_spacing>
+
+             <widget>
+               <class>GtkEntry</class>
+               <name>dpms_off_text</name>
+               <tooltip>How long until the monitor powers down (if Power Management is enabled).</tooltip>
+               <can_focus>True</can_focus>
+               <signal>
+                 <name>activate</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+               </signal>
+               <signal>
+                 <name>focus_out_event</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+               </signal>
+               <editable>True</editable>
+               <text_visible>True</text_visible>
+               <text_max_length>8</text_max_length>
+               <text></text>
+               <child>
+                 <left_attach>1</left_attach>
+                 <right_attach>2</right_attach>
+                 <top_attach>3</top_attach>
+                 <bottom_attach>4</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>False</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkEntry</class>
+               <name>dpms_suspend_text</name>
+               <tooltip>How long until the monitor goes into power-saving mode (if Power Management is enabled).</tooltip>
+               <can_focus>True</can_focus>
+               <signal>
+                 <name>activate</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+               </signal>
+               <signal>
+                 <name>focus_out_event</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+               </signal>
+               <editable>True</editable>
+               <text_visible>True</text_visible>
+               <text_max_length>8</text_max_length>
+               <text></text>
+               <child>
+                 <left_attach>1</left_attach>
+                 <right_attach>2</right_attach>
+                 <top_attach>2</top_attach>
+                 <bottom_attach>3</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>False</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkEntry</class>
+               <name>dpms_standby_text</name>
+               <tooltip>How long before the monitor goes completely black (if Power Management is enabled).</tooltip>
+               <can_focus>True</can_focus>
+               <signal>
+                 <name>activate</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+               </signal>
+               <signal>
+                 <name>focus_out_event</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+               </signal>
+               <editable>True</editable>
+               <text_visible>True</text_visible>
+               <text_max_length>8</text_max_length>
+               <text></text>
+               <child>
+                 <left_attach>1</left_attach>
+                 <right_attach>2</right_attach>
+                 <top_attach>1</top_attach>
+                 <bottom_attach>2</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>False</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkLabel</class>
+               <name>dpms_standby_label</name>
+               <label>Standby After:</label>
+               <justify>GTK_JUSTIFY_RIGHT</justify>
+               <wrap>False</wrap>
+               <xalign>1</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>1</top_attach>
+                 <bottom_attach>2</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkEntry</class>
-             <name>pass_text</name>
-             <tooltip>How long the password dialog will wait.</tooltip>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>activate</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:29:08 GMT</last_modification_time>
-             </signal>
-             <signal>
-               <name>focus_out_event</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:35:58 GMT</last_modification_time>
-             </signal>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>8</text_max_length>
-             <text></text>
-             <child>
-               <left_attach>1</left_attach>
-               <right_attach>2</right_attach>
-               <top_attach>5</top_attach>
-               <bottom_attach>6</bottom_attach>
+             <widget>
+               <class>GtkLabel</class>
+               <name>dpms_off_label</name>
+               <label>Off After:</label>
+               <justify>GTK_JUSTIFY_RIGHT</justify>
+               <wrap>False</wrap>
+               <xalign>1</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>3</top_attach>
+                 <bottom_attach>4</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkLabel</class>
-             <name>timeout_label</name>
-             <label>Saver Timeout:</label>
-             <justify>GTK_JUSTIFY_RIGHT</justify>
-             <wrap>False</wrap>
-             <xalign>1</xalign>
-             <yalign>0.5</yalign>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>0</top_attach>
-               <bottom_attach>1</bottom_attach>
+             <widget>
+               <class>GtkLabel</class>
+               <name>dpms_suspend_label</name>
+               <label>Suspend After:</label>
+               <justify>GTK_JUSTIFY_RIGHT</justify>
+               <wrap>False</wrap>
+               <xalign>1</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>2</top_attach>
+                 <bottom_attach>3</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkLabel</class>
-             <name>cycle_label</name>
-             <label>Cycle Timeout:</label>
-             <justify>GTK_JUSTIFY_RIGHT</justify>
-             <wrap>False</wrap>
-             <xalign>1</xalign>
-             <yalign>0.5</yalign>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>1</top_attach>
-               <bottom_attach>2</bottom_attach>
+             <widget>
+               <class>GtkLabel</class>
+               <name>dpms_dummy</name>
+               <label></label>
+               <justify>GTK_JUSTIFY_LEFT</justify>
+               <wrap>False</wrap>
+               <xalign>0.5</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
+               <child>
+                 <left_attach>2</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>3</top_attach>
+                 <bottom_attach>4</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>True</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkEventBox</class>
+               <name>dpms_button_eventbox</name>
+               <tooltip>Whether the monitor should be powered down after a while.</tooltip>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>0</top_attach>
+                 <bottom_attach>1</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
+
+               <widget>
+                 <class>GtkCheckButton</class>
+                 <name>dpms_button</name>
+                 <can_focus>True</can_focus>
+                 <signal>
+                   <name>toggled</name>
+                   <handler>pref_changed_cb</handler>
+                   <last_modification_time>Mon, 03 Apr 2000 02:33:01 GMT</last_modification_time>
+                 </signal>
+                 <label>Power Management Enabled</label>
+                 <active>True</active>
+                 <draw_indicator>True</draw_indicator>
+               </widget>
+             </widget>
            </widget>
+         </widget>
 
-           <widget>
-             <class>GtkLabel</class>
-             <name>fade_label</name>
-             <label>Fade Duration:</label>
-             <justify>GTK_JUSTIFY_RIGHT</justify>
-             <wrap>False</wrap>
-             <xalign>1</xalign>
-             <yalign>0.5</yalign>
+         <widget>
+           <class>GtkFrame</class>
+           <name>diag_frame</name>
+           <border_width>10</border_width>
+           <label>Diagnostics:</label>
+           <label_xalign>0</label_xalign>
+           <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+           <child>
+             <left_attach>0</left_attach>
+             <right_attach>1</right_attach>
+             <top_attach>1</top_attach>
+             <bottom_attach>2</bottom_attach>
              <xpad>0</xpad>
              <ypad>0</ypad>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>2</top_attach>
-               <bottom_attach>3</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+             <xexpand>False</xexpand>
+             <yexpand>False</yexpand>
+             <xshrink>False</xshrink>
+             <yshrink>False</yshrink>
+             <xfill>True</xfill>
+             <yfill>True</yfill>
+           </child>
 
            <widget>
-             <class>GtkLabel</class>
-             <name>ticks_label</name>
-             <label>Fade Ticks:</label>
-             <justify>GTK_JUSTIFY_RIGHT</justify>
-             <wrap>False</wrap>
-             <xalign>1</xalign>
-             <yalign>0.5</yalign>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>3</top_attach>
-               <bottom_attach>4</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
+             <class>GtkTable</class>
+             <name>diag_table</name>
+             <border_width>10</border_width>
+             <rows>3</rows>
+             <columns>1</columns>
+             <homogeneous>False</homogeneous>
+             <row_spacing>2</row_spacing>
+             <column_spacing>10</column_spacing>
+
+             <widget>
+               <class>GtkEventBox</class>
+               <name>verbose_button_eventbox</name>
+               <tooltip>Whether the daemon should print lots of debugging information.</tooltip>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>0</top_attach>
+                 <bottom_attach>1</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>True</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
+
+               <widget>
+                 <class>GtkCheckButton</class>
+                 <name>verbose_button</name>
+                 <can_focus>True</can_focus>
+                 <signal>
+                   <name>toggled</name>
+                   <handler>pref_changed_cb</handler>
+                   <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
+                 </signal>
+                 <label>Verbose Diagnostics</label>
+                 <active>False</active>
+                 <draw_indicator>True</draw_indicator>
+               </widget>
+             </widget>
+
+             <widget>
+               <class>GtkEventBox</class>
+               <name>capture_button_eventbox</name>
+               <tooltip>Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window.</tooltip>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>1</top_attach>
+                 <bottom_attach>2</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>True</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
+
+               <widget>
+                 <class>GtkCheckButton</class>
+                 <name>capture_button</name>
+                 <can_focus>True</can_focus>
+                 <signal>
+                   <name>toggled</name>
+                   <handler>pref_changed_cb</handler>
+                   <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
+                 </signal>
+                 <label>Display Subprocess Errors</label>
+                 <active>False</active>
+                 <draw_indicator>True</draw_indicator>
+               </widget>
+             </widget>
+
+             <widget>
+               <class>GtkEventBox</class>
+               <name>splash_button_eventbox</name>
+               <tooltip>Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up.</tooltip>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>2</top_attach>
+                 <bottom_attach>3</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>True</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+
+               <widget>
+                 <class>GtkCheckButton</class>
+                 <name>splash_button</name>
+                 <can_focus>True</can_focus>
+                 <signal>
+                   <name>toggled</name>
+                   <handler>pref_changed_cb</handler>
+                   <last_modification_time>Mon, 03 Apr 2000 02:32:39 GMT</last_modification_time>
+                 </signal>
+                 <label>Display Splash Screen at Startup</label>
+                 <active>True</active>
+                 <draw_indicator>True</draw_indicator>
+               </widget>
+             </widget>
            </widget>
+         </widget>
 
-           <widget>
-             <class>GtkLabel</class>
-             <name>lock_label</name>
-             <label>Lock Timeout:</label>
-             <justify>GTK_JUSTIFY_RIGHT</justify>
-             <wrap>False</wrap>
-             <xalign>1</xalign>
-             <yalign>0.5</yalign>
+         <widget>
+           <class>GtkFrame</class>
+           <name>cmap_frame</name>
+           <border_width>10</border_width>
+           <label>Colormaps: (8-bit displays only)</label>
+           <label_xalign>0</label_xalign>
+           <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+           <child>
+             <left_attach>1</left_attach>
+             <right_attach>2</right_attach>
+             <top_attach>1</top_attach>
+             <bottom_attach>2</bottom_attach>
              <xpad>0</xpad>
              <ypad>0</ypad>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>4</top_attach>
-               <bottom_attach>5</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+             <xexpand>False</xexpand>
+             <yexpand>False</yexpand>
+             <xshrink>False</xshrink>
+             <yshrink>False</yshrink>
+             <xfill>True</xfill>
+             <yfill>True</yfill>
+           </child>
 
            <widget>
-             <class>GtkLabel</class>
-             <name>pass_label</name>
-             <label>Password Timeout:</label>
-             <justify>GTK_JUSTIFY_RIGHT</justify>
-             <wrap>False</wrap>
-             <xalign>1</xalign>
-             <yalign>0.5</yalign>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>5</top_attach>
-               <bottom_attach>6</bottom_attach>
+             <class>GtkTable</class>
+             <name>cmap_table</name>
+             <border_width>10</border_width>
+             <rows>5</rows>
+             <columns>3</columns>
+             <homogeneous>False</homogeneous>
+             <row_spacing>2</row_spacing>
+             <column_spacing>10</column_spacing>
+
+             <widget>
+               <class>GtkEntry</class>
+               <name>fade_text</name>
+               <tooltip>How long it should take for the screen to fade in and out.</tooltip>
+               <can_focus>True</can_focus>
+               <signal>
+                 <name>activate</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+               </signal>
+               <signal>
+                 <name>focus_out_event</name>
+                 <handler>pref_changed_cb</handler>
+                 <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+               </signal>
+               <editable>True</editable>
+               <text_visible>True</text_visible>
+               <text_max_length>8</text_max_length>
+               <text></text>
+               <child>
+                 <left_attach>1</left_attach>
+                 <right_attach>2</right_attach>
+                 <top_attach>4</top_attach>
+                 <bottom_attach>5</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>False</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
+
+             <widget>
+               <class>GtkLabel</class>
+               <name>cmap_dummy</name>
+               <label></label>
+               <justify>GTK_JUSTIFY_LEFT</justify>
+               <wrap>False</wrap>
+               <xalign>0.5</xalign>
+               <yalign>0.5</yalign>
                <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <child>
+                 <left_attach>2</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>4</top_attach>
+                 <bottom_attach>5</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>True</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>verbose_button</name>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>toggled</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:31:53 GMT</last_modification_time>
-             </signal>
-             <label>Verbose</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>2</left_attach>
-               <right_attach>3</right_attach>
-               <top_attach>0</top_attach>
-               <bottom_attach>1</bottom_attach>
-               <xpad>10</xpad>
+             <widget>
+               <class>GtkLabel</class>
+               <name>fade_label</name>
+               <label>Fade Duration:</label>
+               <justify>GTK_JUSTIFY_RIGHT</justify>
+               <wrap>False</wrap>
+               <xalign>1</xalign>
+               <yalign>0.5</yalign>
+               <xpad>0</xpad>
                <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>1</right_attach>
+                 <top_attach>4</top_attach>
+                 <bottom_attach>5</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>False</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>install_button</name>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>toggled</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
-             </signal>
-             <label>Install Colormap</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>2</left_attach>
-               <right_attach>3</right_attach>
-               <top_attach>1</top_attach>
-               <bottom_attach>2</bottom_attach>
-               <xpad>10</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+             <widget>
+               <class>GtkHSeparator</class>
+               <name>cmap_hr</name>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>1</top_attach>
+                 <bottom_attach>2</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>True</xexpand>
+                 <yexpand>True</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
+             </widget>
 
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>fade_button</name>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>toggled</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:32:39 GMT</last_modification_time>
-             </signal>
-             <label>Fade Colormap</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>2</left_attach>
-               <right_attach>3</right_attach>
-               <top_attach>2</top_attach>
-               <bottom_attach>3</bottom_attach>
-               <xpad>10</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+             <widget>
+               <class>GtkEventBox</class>
+               <name>install_button_eventbox</name>
+               <tooltip>Whether to install a private colormap when running in 8-bit mode on the default Visual.</tooltip>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>0</top_attach>
+                 <bottom_attach>1</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
 
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>unfade_button</name>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>toggled</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:32:51 GMT</last_modification_time>
-             </signal>
-             <label>Unfade Colormap</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>2</left_attach>
-               <right_attach>3</right_attach>
-               <top_attach>3</top_attach>
-               <bottom_attach>4</bottom_attach>
-               <xpad>10</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
+               <widget>
+                 <class>GtkCheckButton</class>
+                 <name>install_button</name>
+                 <can_focus>True</can_focus>
+                 <signal>
+                   <name>toggled</name>
+                   <handler>pref_changed_cb</handler>
+                   <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
+                 </signal>
+                 <label>Install Colormap</label>
+                 <active>False</active>
+                 <draw_indicator>True</draw_indicator>
+               </widget>
+             </widget>
 
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>lock_button</name>
-             <can_focus>True</can_focus>
-             <signal>
-               <name>toggled</name>
-               <handler>pref_changed_cb</handler>
-               <last_modification_time>Mon, 03 Apr 2000 02:33:01 GMT</last_modification_time>
-             </signal>
-             <label>Require Password</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>2</left_attach>
-               <right_attach>3</right_attach>
-               <top_attach>4</top_attach>
-               <bottom_attach>5</bottom_attach>
-               <xpad>10</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
+             <widget>
+               <class>GtkEventBox</class>
+               <name>fade_button_eventbox</name>
+               <tooltip>Whether the screen should slowly fade to black when the screen saver activates.</tooltip>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>2</top_attach>
+                 <bottom_attach>3</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
+
+               <widget>
+                 <class>GtkCheckButton</class>
+                 <name>fade_button</name>
+                 <can_focus>True</can_focus>
+                 <signal>
+                   <name>toggled</name>
+                   <handler>pref_changed_cb</handler>
+                   <last_modification_time>Mon, 03 Apr 2000 02:32:39 GMT</last_modification_time>
+                 </signal>
+                 <label>Fade To Black When Blanking</label>
+                 <active>False</active>
+                 <draw_indicator>True</draw_indicator>
+               </widget>
+             </widget>
+
+             <widget>
+               <class>GtkEventBox</class>
+               <name>unfade_button_eventbox</name>
+               <tooltip>Whether the screen should slowly fade in from black when the screen saver deactivates.</tooltip>
+               <child>
+                 <left_attach>0</left_attach>
+                 <right_attach>3</right_attach>
+                 <top_attach>3</top_attach>
+                 <bottom_attach>4</bottom_attach>
+                 <xpad>0</xpad>
+                 <ypad>0</ypad>
+                 <xexpand>False</xexpand>
+                 <yexpand>False</yexpand>
+                 <xshrink>False</xshrink>
+                 <yshrink>False</yshrink>
+                 <xfill>True</xfill>
+                 <yfill>True</yfill>
+               </child>
+
+               <widget>
+                 <class>GtkCheckButton</class>
+                 <name>unfade_button</name>
+                 <can_focus>True</can_focus>
+                 <signal>
+                   <name>toggled</name>
+                   <handler>pref_changed_cb</handler>
+                   <last_modification_time>Mon, 03 Apr 2000 02:32:51 GMT</last_modification_time>
+                 </signal>
+                 <label>Fade From Black When Unblanking</label>
+                 <active>False</active>
+                 <draw_indicator>True</draw_indicator>
+               </widget>
+             </widget>
            </widget>
          </widget>
        </widget>
@@ -1129,7 +1566,7 @@ Mono
       <widget>
        <class>GtkLabel</class>
        <child_name>Notebook:tab</child_name>
-       <name>prefs_tab</name>
+       <name>options_tab</name>
        <label>Screensaver Options</label>
        <justify>GTK_JUSTIFY_CENTER</justify>
        <wrap>False</wrap>
index 2d98d3ce66b3c42ef28935839f35e006acf49c9e..6355e385f3532011906eefc45f55d616f3a798db 100644 (file)
@@ -11,7 +11,7 @@
 .if n .sp 1
 .if t .sp .5
 ..
-.TH XScreenSaver 1 "19-Jan-2001 (3.27)" "X Version 11"
+.TH XScreenSaver 1 "02-Feb-2001 (3.28)" "X Version 11"
 .SH NAME
 xscreensaver-demo - interactively control the background xscreensaver daemon
 .SH SYNOPSIS
@@ -136,20 +136,76 @@ this program, if it has one.
 This tab lets you change various settings used by the xscreensaver daemon
 itself, rather than its sub-programs.
 .TP 4
-.B Saver Timeout
+.B Blank After
 After the user has been idle this long, the \fIxscreensaver\fP daemon
 will blank the screen.
 .TP 4
-.B Cycle Timeout
+.B Cycle After
 After the screensaver has been running for this long, the currently
 running graphics demo will be killed, and a new one started.  
 If this is 0, then the graphics demo will never be changed:
 only one demo will run until the screensaver is deactivated by user 
 activity.
 .TP 4
-.B Verbose\ 
+.B Require Password
+Whether the screen saver should lock the screen when it activates.
+.TP 4
+.B Lock After
+If \fIRequire Password\fP is selected, this controls the length of 
+the ``grace period'' between when the screensaver activates, and when the
+screen becomes locked.  For example, if this is 0:05:00, 
+and \fIBlank After\fP is 0:10:00, then after 10 minutes, the screen 
+would blank.  If there was user  activity at 12 minutes, no password
+would be required to un-blank the screen.  But, if there was user activity
+at 15 minutes or later (that is, \fILock After\fP minutes after 
+activation) then a password would be required.  The default is 0, meaning
+that if locking is enabled, then a password will be required as soon as the 
+screen blanks.
+.TP 4
+.B Verbose Diagnostics
 Whether to print lots of debugging information.
 .TP 4
+.B Display Subprocess Errors
+If this is set, then if one of the graphics demos prints something to
+stdout or stderr, it will show up on the screen immediately (instead of
+being lost in a hidden terminal or file that you can't see.)
+
+If you change this option, it will only take effect the next time the
+xscreensaver daemon is restarted.  (All other settings take effect
+immediately.)
+.TP 4
+.B Display Splash Screen at Startup
+Normally when xscreensaver starts up, it briefly displays a splash dialog
+showing the version number, a \fIHelp\fP button, etc.  If this option is
+turned off, the splash screen will not be shown at all.
+.TP 4
+.B Power Management Enabled
+Whether the monitor should be powered down after a period of inactivity.
+
+If this option is grayed out, it means your X server does not support
+the XDPMS extension, and so control over the monitor's power state is
+not available.
+
+If you're using a laptop, don't be surprised if this has no effect:
+many laptops have monitor power-saving behavior built in at a very low
+level that is invisible to Unix and X.  On such systems, you can 
+typically only adjust the power-saving delays by changing settings 
+in the BIOS in some hardware-specific way.
+.TP 4
+.B Standby After
+If \fIPower Management Enabled\fP is selected, the monitor will go black
+after this much idle time.  (Graphics demos will stop running, also.)
+.TP 4
+.B Suspend After
+If \fIPower Management Enabled\fP is selected, the monitor will go
+into power-saving mode after this much idle time.  This duration should
+be greater than or equal to \fIStandby\fP.
+.TP 4
+.B Off After
+If \fIPower Management Enabled\fP is selected, the monitor will fully
+power down after this much idle time.  This duration should be greater
+than or equal to \fISuspend\fP.
+.TP 4
 .B Install Colormap
 Whether to install a private colormap while the screensaver is active, so
 that the graphics hacks can get as many colors as possible.  (This only
@@ -157,14 +213,14 @@ applies when the screen's default visual is being used, since non-default
 visuals get their own colormaps automatically.)  This can also be overridden
 on a per-demo basis.
 .TP 4
-.B Fade Colormap
+.B Fade To Black When Blanking
 If selected, then when the screensaver activates, the current contents
 of the screen will fade to black instead of simply winking out.  This only
 works on displays with writable colormaps, that is, if the screen's default
 visual is a PseudoColor visual.  A fade will also be done when
-switching graphics hacks (when the \fICycle Timeout\fP expires.)
+switching graphics hacks (when the \fICycle After\fP expires.)
 .TP 4
-.B Unfade Colormap
+.B Unfade From Black When Unblanking
 The complement to \fIFade Colormap\fP: if selected, then when the screensaver
 deactivates, the original contents of the screen will fade in from black
 instead of appearing immediately.  This only works on displays with writable
@@ -173,32 +229,6 @@ colormaps, and when \fIFade Colormap\fP is also selected.
 .B Fade Duration
 When fading or unfading are selected, this controls how long the fade will
 take.
-.TP 4
-.B Fade Ticks
-This controls how many times a second the colormap will be changed to 
-effect a fade.  Higher numbers yield smoother fades, but may make the
-fades take longer than the specified number of seconds, if your server
-isn't fast enough to keep up.
-.TP 4
-.B Require Password
-Whether the screen saver should lock the screen when it activates.
-.TP 4
-.B Lock Timeout
-If \fIRequire Password\fP is selected, this controls the length of 
-the ``grace period'' between when the screensaver activates, and when the
-screen becomes locked.  For example, if this is 0:05:00, 
-and \fISaver Timeout\fP is 0:10:00, then after 10 minutes, the screen 
-would blank.  If there was user  activity at 12 minutes, no password
-would be required to un-blank the screen.  But, if there was user activity
-at 15 minutes or later (that is, \fILock Timeout\fP minutes after 
-activation) then a password would be required.  The default is 0, meaning
-that if locking is enabled, then a password will be required as soon as the 
-screen blanks.
-.TP 4
-.B Password Timeout
-When the screensaver is prompting for a password, the prompt dialog box will
-stay on the screen for this long before giving up, and reverting to 
-screen-saving mode.
 .PP
 There are more settings than these available, but these are the most 
 commonly used ones; see the manual for
@@ -250,7 +280,7 @@ http://www.jwz.org/xscreensaver/
 .BR xscreensaver (1),
 .BR xscreensaver\-command (1)
 .SH COPYRIGHT
-Copyright \(co 1992, 1993, 1997, 1998, 1999
+Copyright \(co 1992, 1993, 1997, 1998, 1999, 2000, 2001
 by Jamie Zawinski.  Permission to use, copy, modify, distribute, and sell
 this software and its documentation for any purpose is hereby granted without
 fee, provided that the above copyright notice appear in all copies and that
index e87bd3a7f2aa35714f166f4524dc119b78994a64..93f05267429a575d64043d8e8480fe746e3c0ccb 100644 (file)
@@ -483,7 +483,7 @@ connect_to_server (saver_info *si, int *argc, char **argv)
   char *d = getenv ("DISPLAY");
   if (!d || !*d)
     {
-      const char ndpy[] = "DISPLAY=:0.0";
+      char ndpy[] = "DISPLAY=:0.0";
       /* if (si->prefs.verbose_p) */      /* sigh, too early to test this... */
         fprintf (stderr,
                  "%s: warning: $DISPLAY is not set: defaulting to \"%s\".\n",
@@ -897,6 +897,14 @@ maybe_reload_init_file (saver_info *si)
       /* If a server extension is in use, and p->timeout has changed,
         we need to inform the server of the new timeout. */
       disable_builtin_screensaver (si, False);
+
+      /* If the DPMS settings in the init file have changed,
+         change the settings on the server to match. */
+      sync_server_dpms_settings (si->dpy, p->dpms_enabled_p,
+                                 p->dpms_standby / 1000,
+                                 p->dpms_suspend / 1000,
+                                 p->dpms_off / 1000,
+                                 False);
     }
 }
 
@@ -1143,7 +1151,14 @@ main (int argc, char **argv)
 
   select_events (si);
   init_sigchld ();
+
   disable_builtin_screensaver (si, True);
+  sync_server_dpms_settings (si->dpy, p->dpms_enabled_p,
+                             p->dpms_standby / 1000,
+                             p->dpms_suspend / 1000,
+                             p->dpms_off / 1000,
+                             False);
+
   initialize_stderr (si);
 
   make_splash_dialog (si);
@@ -1156,6 +1171,42 @@ main (int argc, char **argv)
 /* Processing ClientMessage events.
  */
 
+
+static int
+ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
+{
+  return 0;
+}
+
+/* Sometimes some systems send us ClientMessage events with bogus atoms in
+   them.  We only look up the atom names for printing warning messages,
+   so don't bomb out when it happens...
+ */
+static char *
+XGetAtomName_safe (Display *dpy, Atom atom)
+{
+  char *result;
+  XErrorHandler old_handler;
+  if (!atom) return 0;
+
+  XSync (dpy, False);
+  old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
+  result = XGetAtomName (dpy, atom);
+  XSync (dpy, False);
+  XSetErrorHandler (old_handler);
+  XSync (dpy, False);
+
+  if (result)
+    return result;
+  else
+    {
+      char buf[100];
+      sprintf (buf, "<<undefined atom 0x%04X>>", (unsigned long) atom);
+      return strdup (buf);
+    }
+}
+
+
 static void
 clientmessage_response (saver_info *si, Window w, Bool error,
                        const char *stderr_msg,
@@ -1192,7 +1243,7 @@ handle_clientmessage (saver_info *si, XEvent *event, Bool until_idle_p)
   if (event->xclient.message_type != XA_SCREENSAVER)
     {
       char *str;
-      str = XGetAtomName (si->dpy, event->xclient.message_type);
+      str = XGetAtomName_safe (si->dpy, event->xclient.message_type);
       fprintf (stderr, "%s: unrecognised ClientMessage type %s received\n",
               blurb(), (str ? str : "(null)"));
       if (str) XFree (str);
@@ -1539,7 +1590,7 @@ handle_clientmessage (saver_info *si, XEvent *event, Bool until_idle_p)
     {
       char buf [1024];
       char *str;
-      str = (type ? XGetAtomName(si->dpy, type) : 0);
+      str = XGetAtomName_safe (si->dpy, type);
 
       if (str)
        {
index 1b244ddb5979c5d6e07474b0611d28a4689eb0e0..0c190f55d52de255c46630b84b2cb488b7abd7e6 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1993-2000 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1993-2001 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -342,7 +342,9 @@ extern int string_width (XFontStruct *font, char *s);
 
 extern void make_splash_dialog (saver_info *si);
 extern void handle_splash_event (saver_info *si, XEvent *e);
-extern void skull (Display *, Window, GC, GC, int, int, int, int);
+extern void xscreensaver_logo (Display *,Drawable,Colormap, Bool next_frame_p);
+extern void draw_logo (saver_info *si, Window, int x, int y, int w, int h,
+                       Bool first_time_p);
 
 
 /* =======================================================================
index 1b22f0b30709292b5f18cae4d94298232f485d6a..5c397f65dccc33f9a463d895c8e6fe167f1b7d59 100755 (executable)
@@ -33,14 +33,14 @@ while [ -n "$1" ]; do
       ;;
 
     -preview)
-      # This simply runs xroger in the preview window.  For this to be "real",
+      # This simply runs xflame in the preview window.  For this to be "real",
       # it needs to run xscreensaver with a -window-id parameter for each hack.
       # There are two ways to do this:
       # 1) Hack xscreensaver to allow global parameters.
       # 2) Hack xscreensaver to accept alternate setup files, and create one on
       #    the fly here.
       shift
-      /usr/X11R6/lib/xscreensaver/xroger -delay 1 -window-id $1 &    # Start new preview 
+      /usr/X11R6/lib/xscreensaver/xflame -delay 1 -window-id $1 &    # Start new preview 
       echo "$!" > $HOME/.kss-preview$1.pid.`hostname`                # Write PID 
       wait $!                                                       # Wait for it to get killed
       exit
index 313650f977422eb7ce604d505e05f964d9d30976..f53afb7dbd2ea59d7a3eeb87ba8e8d4986315ef0 100644 (file)
@@ -11,7 +11,7 @@
 .if n .sp 1
 .if t .sp .5
 ..
-.TH XScreenSaver 1 "19-Jan-2001 (3.27)" "X Version 11"
+.TH XScreenSaver 1 "02-Feb-2001 (3.28)" "X Version 11"
 .SH NAME
 xscreensaver - graphics hack and screen locker, launched when the user is idle
 .SH SYNOPSIS
@@ -1375,7 +1375,6 @@ http://www.jwz.org/xscreensaver/
 .BR xjack (1),
 .BR xlyap (1),
 .BR xmatrix (1),
-.BR xroger (1),
 .BR bongo (1),
 .BR ico (1),
 .BR xaos (1),
@@ -1390,7 +1389,7 @@ http://www.jwz.org/xscreensaver/
 .BR xv (1),
 .BR xwave (1).
 .SH COPYRIGHT
-Copyright \(co 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+Copyright \(co 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
 by Jamie Zawinski.  Permission to use, copy, modify, distribute, and sell
 this software and its documentation for any purpose is hereby granted without
 fee, provided that the above copyright notice appear in all copies and that
@@ -1404,6 +1403,8 @@ to comp.sources.x on 13-Aug-1992.
 
 Please let me know if you find any bugs or make any improvements.
 .SH ACKNOWLEDGEMENTS
+Thanks to Angela Goodman for the XScreenSaver logo.
+
 Thanks to the many people who have contributed graphics demos to the package.
 
 Thanks to David Wojtowicz for implementing \fIlockTimeout\fP.
index 111e7865846b8232ba04974d6f49c0755b8cfdb7..1e44d04c228b7ba165a8d87442f7c2202504d555 100644 (file)
@@ -59,14 +59,14 @@ UTIL_SRCS   = $(UTILS_SRC)/alpha.c $(UTILS_SRC)/colors.c \
                  $(UTILS_SRC)/grabscreen.c $(UTILS_SRC)/hsv.c \
                  $(UTILS_SRC)/resources.c $(UTILS_SRC)/spline.c \
                  $(UTILS_SRC)/usleep.c $(UTILS_SRC)/visual.c \
-                 $(UTILS_SRC)/xroger.c $(UTILS_SRC)/yarandom.c \
+                 $(UTILS_SRC)/logo.c $(UTILS_SRC)/yarandom.c \
                  $(UTILS_SRC)/erase.c $(UTILS_SRC)/sgivideo.c \
                  $(UTILS_SRC)/xshm.c $(UTILS_SRC)/xdbe.c
 UTIL_OBJS      = $(UTILS_BIN)/alpha.o $(UTILS_BIN)/colors.o \
                  $(UTILS_BIN)/grabscreen.o $(UTILS_BIN)/hsv.o \
                  $(UTILS_BIN)/resources.o $(UTILS_BIN)/spline.o \
                  $(UTILS_BIN)/usleep.o $(UTILS_BIN)/visual.o \
-                 $(UTILS_BIN)/xroger.o $(UTILS_BIN)/yarandom.o \
+                 $(UTILS_BIN)/logo.o $(UTILS_BIN)/yarandom.o \
                  $(UTILS_BIN)/erase.o $(UTILS_BIN)/sgivideo.o \
                  $(UTILS_SRC)/xshm.o $(UTILS_SRC)/xdbe.o
 
@@ -78,7 +78,7 @@ SRCS          = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
                  maze.c moire.c noseguy.c pedal.c penrose.c pyro.c qix.c \
                  rocks.c rorschach.c screenhack.c sierpinski.c slidescreen.c \
                  slip.c sphere.c spiral.c strange.c swirl.c xlockmore.c \
-                 xroger-hack.c goop.c starfish.c munch.c fadeplot.c \
+                 goop.c starfish.c munch.c fadeplot.c \
                  rd-bomb.c coral.c mountain.c triangle.c lissie.c worm.c \
                  rotor.c ant.c xjack.c xlyap.c jigsaw.c xscreensaver-sgigl.c \
                  cynosure.c moire2.c flow.c epicycle.c interference.c \
@@ -98,7 +98,7 @@ OBJS          = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
                  maze.o moire.o noseguy.o pedal.o penrose.o pyro.o qix.o \
                  rocks.o rorschach.o screenhack.o sierpinski.o slidescreen.o \
                  slip.o sphere.o spiral.o strange.o swirl.o xlockmore.o \
-                 xroger-hack.o goop.o starfish.o munch.o fadeplot.o \
+                 goop.o starfish.o munch.o fadeplot.o \
                  rd-bomb.o coral.o mountain.o triangle.o lissie.o worm.o \
                  rotor.o ant.o xjack.o xlyap.o jigsaw.o xscreensaver-sgigl.o \
                  cynosure.o moire2.o flow.o epicycle.o interference.o \
@@ -114,7 +114,7 @@ EXES                = attraction blitspin bouboule braid bubbles decayscreen deco \
                  helix hopalong hypercube ifs imsmap julia kaleidescope \
                  laser lightning lisa lmorph maze moire noseguy pedal \
                  penrose pyro qix rocks rorschach sierpinski slidescreen \
-                 slip sphere spiral strange swirl xroger goop starfish munch \
+                 slip sphere spiral strange swirl goop starfish munch \
                  fadeplot rd-bomb coral mountain triangle lissie worm rotor \
                  ant xjack xlyap jigsaw cynosure moire2 flow epicycle \
                  interference truchet bsod crystal discrete distort kumppa \
@@ -145,12 +145,12 @@ MEN               = attraction.man blitspin.man bouboule.man braid.man \
                  noseguy.man pedal.man penrose.man pyro.man qix.man \
                  rocks.man rorschach.man sierpinski.man slidescreen.man \
                  slip.man sphere.man spiral.man strange.man swirl.man \
-                 xroger.man goop.man starfish.man munch.man rd-bomb.man \
+                 goop.man starfish.man munch.man rd-bomb.man \
                  xjack.man xlyap.man jigsaw.man epicycle.man bsod.man \
                  sonar.man t3d.man squiral.man spotlight.man critical.man \
                  vidwhacker.man webcollage.man xsublim.man distort.man \
                  phosphor.man xmatrix.man xteevee.man xflame.man petri.man \
-                 nerverot.man zoom.man whirlwindwarp.man
+                 nerverot.man zoom.man whirlwindwarp.man hyperball.man
 STAR           = *
 EXTRAS         = README Makefile.in xlock_23.h .gdbinit \
                  images/$(STAR).xbm \
@@ -349,7 +349,7 @@ $(UTILS_BIN)/spline.o:              $(UTILS_SRC)/spline.c
 $(UTILS_BIN)/usleep.o:         $(UTILS_SRC)/usleep.c
 $(UTILS_BIN)/visual.o:         $(UTILS_SRC)/visual.c
 $(UTILS_BIN)/xmu.o:            $(UTILS_SRC)/xmu.c
-$(UTILS_BIN)/xroger.o:         $(UTILS_SRC)/xroger.c
+$(UTILS_BIN)/logo.o:           $(UTILS_SRC)/logo.c
 $(UTILS_BIN)/yarandom.o:       $(UTILS_SRC)/yarandom.c
 $(UTILS_BIN)/erase.o:          $(UTILS_SRC)/erase.c
 $(UTILS_BIN)/xshm.o:           $(UTILS_SRC)/xshm.c
@@ -374,7 +374,7 @@ screenhack-xlock.o: screenhack.c
 ALP            = $(UTILS_BIN)/alpha.o
 HSV            = $(UTILS_BIN)/hsv.o
 SPL            = $(UTILS_BIN)/spline.o
-XROG           = $(UTILS_BIN)/xroger.o $(SPL)
+LOGO           = $(UTILS_BIN)/logo.o $(SPL)
 GRAB           = $(GRAB_OBJS)
 ERASE          = $(UTILS_BIN)/erase.o
 COL            = $(COLOR_OBJS)
@@ -433,8 +433,8 @@ kaleidescope:       kaleidescope.o  $(HACK_OBJS)
 lmorph:                lmorph.o        $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
-maze:          maze.o          $(HACK_OBJS) $(ERASE) $(XROG)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ERASE) $(XROG) $(HACK_LIBS)
+maze:          maze.o          $(HACK_OBJS) $(ERASE) $(LOGO)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ERASE) $(LOGO) $(HACK_LIBS)
 
 moire:         moire.o         $(HACK_OBJS) $(COL) $(SHM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(HACK_LIBS)
@@ -463,9 +463,6 @@ rorschach:  rorschach.o     $(HACK_OBJS) $(HSV) $(ERASE)
 slidescreen:   slidescreen.o   $(HACK_OBJS) $(GRAB)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS)
 
-xroger:                xroger-hack.o   $(HACK_OBJS) $(HSV) $(XROG)
-       $(CC_HACK) -o $@ xroger-hack.o  $(HACK_OBJS) $(HSV) $(XROG) $(HACK_LIBS)
-
 goop:          goop.o          $(HACK_OBJS) $(HSV) $(ALP) $(SPL)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(ALP) $(SPL) $(HACK_LIBS)
 
@@ -1244,15 +1241,6 @@ xlockmore.o: $(UTILS_SRC)/grabscreen.h
 xlockmore.o: $(UTILS_SRC)/visual.h
 xlockmore.o: $(srcdir)/xlockmoreI.h
 xlockmore.o: $(UTILS_SRC)/xshm.h
-xroger-hack.o: $(srcdir)/screenhack.h
-xroger-hack.o: ../config.h
-xroger-hack.o: $(UTILS_SRC)/yarandom.h
-xroger-hack.o: $(UTILS_SRC)/usleep.h
-xroger-hack.o: $(UTILS_SRC)/resources.h
-xroger-hack.o: $(UTILS_SRC)/hsv.h
-xroger-hack.o: $(UTILS_SRC)/colors.h
-xroger-hack.o: $(UTILS_SRC)/grabscreen.h
-xroger-hack.o: $(UTILS_SRC)/visual.h
 goop.o: $(srcdir)/screenhack.h
 goop.o: ../config.h
 goop.o: $(UTILS_SRC)/yarandom.h
index 2e45e6d82bdfbd95dbe5db9dfb94091d433347cf..bb30cbf124fc47c69b95efbd56f74171d7618b16 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1998, 2000 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1998-2001 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -15,8 +15,6 @@
  *   TODO:
  *      -  Should simulate a Unix kernel panic and reboot.
  *      -  Making various boot noises would be fun, too.
- *      -  Maybe scatter some random bits across the screen,
- *         to simulate corruption of video ram?
  *      -  Should randomize the various hex numbers printed.
  */
 
@@ -1242,6 +1240,264 @@ blitdamage (Display *dpy, Window window, int delay)
   return True;
 }
 
+\f
+/*
+ * SPARC Solaris panic. Should look pretty authentic on Solaris boxes.
+ * Anton Solovyev <solovam@earthlink.net>
+ */ 
+
+static int solaris_max_scroll = 10;
+
+typedef struct
+{
+  Display *dpy;
+  Window window;
+  GC gc;
+  Pixmap subwindow;             /* The text subwindow */
+  XFontStruct *xfs;
+  int width;                    /* Window width in pixels */
+  int height;                   /* Window height in pixels */
+  int sub_width;                /* Text subwindow width in pixels */
+  int sub_height;               /* Text subwindow height in pixels */
+  int sub_x;                    /* upper left corner of the text subwindow */
+  int sub_y;                    /* upper left corner of the text subwindow */
+  int char_width;               /* Char width in pixels */
+  int line_height;              /* Line height in pixels */
+  int columns;                  /* Number of columns in the text screen */
+  int lines;                    /* Number of lines in the text screen */
+  int x;                        /* position of the cursor */
+  int y;                        /* position of the cursor */
+} solaris_console;
+
+
+static solaris_console *
+make_solaris_console (Display *dpy, Window window)
+{
+  const char *def_font = "fixed";
+  solaris_console* ts;
+
+  XWindowAttributes xgwa;
+  XGCValues gcv;
+  char* fontname;
+
+  ts = malloc(sizeof(solaris_console));
+
+  ts->window = window;
+  ts->dpy = dpy;
+
+  ts->x = 0;
+  ts->y = 0;
+
+  XGetWindowAttributes (dpy, window, &xgwa);
+  ts->width = xgwa.width;
+  ts->height = xgwa.height;
+  ts->sub_width = ts->width * 0.8;
+  ts->sub_height = ts->height * 0.8;
+
+  fontname = get_string_resource ("solaris.font", "Solaris.Font");
+  ts->xfs = XLoadQueryFont (dpy, fontname);
+  if (!ts->xfs)
+    {
+      fontname = get_string_resource("solaris.font2", "Solaris.Font");
+      ts->xfs = XLoadQueryFont(dpy, fontname);
+    }
+  if (!ts->xfs)
+    ts->xfs = XLoadQueryFont(dpy, def_font);
+  if (!ts->xfs)
+    {
+      fprintf (stderr, "Can't load font\n");
+      XFreeFont (dpy, ts->xfs);
+      free (ts);
+      exit (1);
+    }
+  gcv.font = ts->xfs->fid;
+  ts->char_width = (ts->xfs->per_char
+                    ? ts->xfs->per_char[ts->xfs->min_char_or_byte2 +
+                                       ts->xfs->default_char].width
+                    : ts->xfs->max_bounds.width);
+  ts->line_height = ts->xfs->ascent + ts->xfs->descent + 1;
+
+  ts->columns = ts->sub_width / ts->char_width;
+  ts->lines = ts->sub_height / ts->line_height;
+
+  ts->sub_x = (ts->width - ts->sub_width) / 2;
+  ts->sub_y = (ts->height - ts->sub_height) / 2;
+
+  ts->subwindow = XCreatePixmap (dpy, window, ts->sub_width,
+                                 ts->sub_height * (solaris_max_scroll + 1),
+                                 xgwa.depth);
+  grab_screen_image (xgwa.screen, window);
+  gcv.function = GXcopy;
+  gcv.background = XBlackPixel (dpy, XDefaultScreen(dpy));
+  gcv.foreground = XWhitePixel (dpy, XDefaultScreen(dpy));
+  ts->gc = XCreateGC (dpy, window,
+                      GCFunction | GCBackground | GCForeground | GCFont,
+                      &gcv);
+  XCopyArea (dpy, window, ts->subwindow, ts->gc,
+             ts->sub_x, ts->sub_y, ts->sub_width, ts->sub_height,
+             0, 0);
+  XFillRectangle (dpy, ts->subwindow, ts->gc, 0, ts->sub_height,
+                  ts->sub_width, ts->sub_height * solaris_max_scroll);
+
+  gcv.background = XWhitePixel (dpy, XDefaultScreen (dpy));
+  gcv.foreground = XBlackPixel (dpy, XDefaultScreen (dpy));
+  XChangeGC (dpy, ts->gc, GCBackground | GCForeground, &gcv);
+
+  return(ts);
+}
+
+static void
+free_solaris_console (solaris_console* ts)
+{
+  XFreePixmap (ts->dpy, ts->subwindow);
+  XFreeGC (ts->dpy, ts->gc);
+  XFreeFont (ts->dpy, ts->xfs);
+  free (ts);
+}
+
+static void
+solaris_draw (solaris_console* ts)
+{
+  XCopyArea (ts->dpy, ts->subwindow, ts->window, ts->gc, 0,
+             (ts->y + 1) * ts->line_height, ts->sub_width,
+             ts->sub_height, ts->sub_x, ts->sub_y);
+}
+
+static void
+solaris_putc (solaris_console* ts, const char aChar)
+{
+  if (ts->y >= solaris_max_scroll * ts->lines)
+    return;
+
+  if (!ts->y && !ts->x)
+    solaris_draw (ts);
+
+  switch (aChar)
+    {
+    case '\n':
+      ts->y++;
+      ts->x = 0;
+      solaris_draw (ts);
+      break;
+    case '\b':
+      if(ts->x > 0)
+        ts->x--;
+      break;
+    default:
+      XDrawImageString (ts->dpy, ts->subwindow, ts->gc,
+                        (ts->x * ts->char_width -
+                         ts->xfs->min_bounds.lbearing),
+                        (ts->sub_height + (ts->y + 1) *
+                         ts->line_height - ts->xfs->descent),
+                        &aChar, 1);
+      XCopyArea (ts->dpy, ts->subwindow, ts->window, ts->gc,
+                 ts->x * ts->char_width,
+                 ts->y * ts->line_height + ts->sub_height,
+                 ts->xfs->max_bounds.rbearing - ts->xfs->min_bounds.lbearing,
+                 ts->line_height, ts->sub_x + ts->x * ts->char_width,
+                 ts->sub_y + ts->sub_height - ts->line_height);
+      ts->x++;
+      if (ts->x >= ts->columns)
+        {
+          ts->x = 0;
+          solaris_putc(ts, '\n');
+        }
+      break;
+    }
+}
+
+static void
+solaris_puts (solaris_console* ts, const char* aString, int delay)
+{
+  const char *c;
+  for (c = aString; *c; ++c)
+    {
+      solaris_putc (ts, *c);
+      if (delay)
+        {
+          XSync(ts->dpy, 0);
+          usleep(delay);
+        }
+    }
+  XSync (ts->dpy, 0);
+}
+
+static Bool
+sparc_solaris (Display* dpy, Window window, int delay)
+{
+  const char *msg1 =
+    "BAD TRAP: cpu=0 type=0x31 rp=0x2a10043b5e0 addr=0xf3880 mmu_fsr=0x0\n"
+    "BAD TRAP occurred in module \"unix\" due to an illegal access to a"
+    " user address.\n"
+    "adb: trap type = 0x31\n"
+    "addr=0xf3880\n"
+    "pid=307, pc=0x100306e4, sp=0x2a10043ae81, tstate=0x4480001602,"
+    " context=0x87f\n"
+    "g1-g7: 1045b000, 32f, 10079440, 180, 300000ebde8, 0, 30000953a20\n"
+    "Begin traceback... sp = 2a10043ae81\n"
+    "Called from 100bd060, fp=2a10043af31, args=f3700 300008cc988 f3880 0"
+    " 1 300000ebde0.\n"
+    "Called from 101fe1bc, fp=2a10043b011, args=3000045a240 104465a0"
+    " 300008e47d0 300008e48fa 300008ae350 300008ae410\n"
+    "Called from 1007c520, fp=2a10043b0c1, args=300008e4878 300003596e8 0"
+    " 3000045a320 0 3000045a220\n"
+    "Called from 1007c498, fp=2a10043b171, args=1045a000 300007847f0 20"
+    " 3000045a240 1 0\n"
+    "Called from 1007972c, fp=2a10043b221, args=1 300009517c0 30000951e58 1"
+    " 300007847f0 0\n"
+    "Called from 10031e10, fp=2a10043b2d1, args=3000095b0c8 0 300009396a8"
+    " 30000953a20 0 1\n"
+    "Called from 10000bdd8, fp=ffffffff7ffff1c1, args=0 57 100131480"
+    " 100131480 10012a6e0 0\n"
+    "End traceback...\n"
+    "panic[cpu0]/thread=30000953a20: trap\n"
+    "syncing file systems...";
+  const char *msg2 =
+    " 1 done\n"
+    "dumping to /dev/dsk/c0t0d0s3, offset 26935296\n";
+  const char *msg3 =
+    ": 2803 pages dumped, compression ratio 2.88, dump succeeded\n";
+  const char *msg4 =
+    "rebooting...\n"
+    "Resetting ...";
+
+  solaris_console* ts;
+  int i;
+  char buf[256];
+
+  if (!get_boolean_resource("doSolaris", "DoSolaris"))
+    return False;
+
+  ts = make_solaris_console (dpy, window);
+
+  solaris_puts (ts, msg1, 0);
+  bsod_sleep (dpy, 3);
+
+  solaris_puts (ts, msg2, 0);
+  bsod_sleep (dpy, 2);
+
+  for (i = 1; i <= 100; ++i)
+    {
+      sprintf(buf, "\b\b\b\b\b\b\b\b\b\b\b%3d%% done", i);
+      solaris_puts(ts, buf, 0);
+      usleep(100000);
+    }
+
+  solaris_puts (ts, msg3, 0);
+  bsod_sleep (dpy, 2);
+
+  solaris_puts (ts, msg4, 0);
+  bsod_sleep(dpy, 3);
+
+  XFillRectangle (ts->dpy, ts->window, ts->gc, 0, 0,
+                  ts->width, ts->height);
+
+  bsod_sleep (dpy, 3);
+
+  free_solaris_console (ts);
+
+  return True;
+}
 
 \f
 char *progclass = "BSOD";
@@ -1259,6 +1515,7 @@ char *defaults [] = {
   "*doBSD:                False",      /* boring */
   "*doSparcLinux:         False",      /* boring */
   "*doBlitDamage:          True",
+  "*doSolaris:             True",
 
   ".Windows.font:         -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
   ".Windows.font2:        -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*",
@@ -1284,12 +1541,12 @@ char *defaults [] = {
   ".MacsBug.foreground:           Black",
   ".MacsBug.background:           White",
   ".MacsBug.borderColor:   #AAAAAA",
-  
+
   ".SCO.font:             -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
   ".SCO.font2:            -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*",
   ".SCO.foreground:       White",
   ".SCO.background:       Black",
-  
+
   ".SparcLinux.font:      -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
   ".SparcLinux.font2:     -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*",
   ".SparcLinux.foreground: White",
@@ -1301,6 +1558,10 @@ char *defaults [] = {
 /* ".BSD.font2:                    -sun-console-medium-r-*-*-22-*-*-*-m-*-*-*", */
   ".BSD.foreground:        #c0c0c0",
   ".BSD.background:        Black",
+
+  ".Solaris.font:           -sun-gallant-*-*-*-*-19-*-*-*-*-120-*-*",
+  ".Solaris.font2:          -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*",
+  "*dontClearRoot:          True",
   0
 };
 
@@ -1330,7 +1591,7 @@ screenhack (Display *dpy, Window window)
   while (1)
     {
       Bool did;
-      do {  i = (random() & 0xFF) % 10; } while (i == j);
+      do {  i = (random() & 0xFF) % 11; } while (i == j);
       switch (i)
        {
        case 0: did = windows(dpy, window, delay, True); break;
@@ -1343,6 +1604,7 @@ screenhack (Display *dpy, Window window)
        case 7: did = bsd(dpy, window, delay); break;
        case 8: did = atari(dpy, window, delay); break;
        case 9: did = blitdamage(dpy, window, delay); break;
+       case 10: did = sparc_solaris(dpy, window, delay); break;
        default: abort(); break;
        }
       loop++;
index 925b7b2163a7fab000d03f8473ba37b75ac9fb3c..3c64cbd853375efea85f995f3784b624f228bd94 100644 (file)
@@ -73,8 +73,9 @@ hacks are displayed and which aren't.
 .BR doSCO ,
 .BR doAtari ,
 .BR doBlitDamage ,
+.BR doSparcLinux ,
 and
-.BR doSparcLinux .
+.BR doSSolaris .
 Each of these is a Boolean resource, they all default to true, except for
 doSparcLinux and doAtari, which are turned off by default, because they're
 really not all that interesting looking unless you're a fan of those systems.
index fbe3d19da20bad9dfe4775001764c09d9b0252b0..2a30c2fcc07bb60cb9057234180a80deb09dadf9 100644 (file)
@@ -94,7 +94,6 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XLYAP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XMATRIX.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XRAYSWARM.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XROGER-HACK.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XSCREENSAVER-SGIGL.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XSPIROGRAPH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XSUBLIM.C
index fbe3d19da20bad9dfe4775001764c09d9b0252b0..2a30c2fcc07bb60cb9057234180a80deb09dadf9 100644 (file)
@@ -94,7 +94,6 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XLYAP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XMATRIX.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XRAYSWARM.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XROGER-HACK.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XSCREENSAVER-SGIGL.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XSPIROGRAPH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XSUBLIM.C
index e82ec7814949667d726192960b2fadc3f4fa39e6..82a8834b928c149b4cd7b71a478f943e0562809c 100644 (file)
@@ -73,7 +73,9 @@ SRCS          = xscreensaver-gl-helper.c \
                  xlock-gl.c xpm-ximage.c glplanet.c pulsar.c \
                  extrusion.c extrusion-helix2.c extrusion-helix3.c \
                  extrusion-helix4.c extrusion-joinoffset.c extrusion-screw.c \
-                 extrusion-taper.c extrusion-twistoid.c sierpinski3d.c gflux.c
+                 extrusion-taper.c extrusion-twistoid.c sierpinski3d.c \
+                 gflux.c stonerview.c stonerview-move.c stonerview-osc.c \
+                 stonerview-view.c starwars.c glut_stroke.c glut_swidth.c
 
 OBJS           = xscreensaver-gl-helper.o \
                  atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
@@ -84,13 +86,15 @@ OBJS                = xscreensaver-gl-helper.o \
                  xlock-gl.o xpm-ximage.o glplanet.o pulsar.o \
                  extrusion.o extrusion-helix2.o extrusion-helix3.o \
                  extrusion-helix4.o extrusion-joinoffset.o extrusion-screw.o \
-                 extrusion-taper.o extrusion-twistoid.o sierpinski3d.o gflux.o
+                 extrusion-taper.o extrusion-twistoid.o sierpinski3d.o \
+                 gflux.o stonerview.o stonerview-move.o stonerview-osc.o \
+                 stonerview-view.o starwars.o glut_stroke.o glut_swidth.o
 
-UTIL_EXES      = xscreensaver-gl-helper
-GL_EXES                = $(UTIL_EXES) \
-                 cage gears moebius pipes sproingies stairs superquadrics \
+GL_EXES_1      = cage gears moebius pipes sproingies stairs superquadrics \
                  morph3d rubik atlantis lament bubble3d glplanet pulsar \
-                 sierpinski3d gflux
+                 sierpinski3d gflux stonerview starwars
+UTIL_EXES      = xscreensaver-gl-helper
+GL_EXES                = $(UTIL_EXES) $(GL_EXES_1)
 GLE_EXES       = extrusion
 HACK_EXES      = @GL_EXES@ @GLE_EXES@
 EXES           = $(HACK_EXES)
@@ -101,8 +105,9 @@ HACK_OBJS   = screenhack-gl.o xlock-gl.o $(HACK_BIN)/xlockmore.o \
                  $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/hsv.o \
                  $(UTILS_BIN)/colors.o
 
-HDRS           = atlantis.h bubble3d.h buildlwo.h e_textures.h xpm-ximage.h
-GL_MEN         = lament.man xscreensaver-gl-helper.man gflux.man
+HDRS           = atlantis.h bubble3d.h buildlwo.h e_textures.h xpm-ximage.h \
+                 stonerview-move.h stonerview-osc.h glutstroke.h glut_roman.h
+GL_MEN         = gflux.man lament.man starwars.man xscreensaver-gl-helper.man
 MEN            = @GL_MEN@
 EXTRAS         = README Makefile.in
 
@@ -133,16 +138,18 @@ install-program:: $(HACK_EXES)
 
 # the xscreensaver-gl-helper program, in $bindir
 install-program:: $(HACK_EXES)
-       @if [ ! -d $(install_prefix)$(bindir) ]; then                   \
-         $(INSTALL_DIRS) $(install_prefix)$(bindir) ;                  \
-        fi ;                                                           \
-       exes="$(UTIL_EXES)" ;                                           \
-       for program in $$exes; do                                       \
-         echo $(INSTALL_PROGRAM) $$program                             \
-           $(install_prefix)$(bindir)/$$program ;                      \
-         $(INSTALL_PROGRAM) $$program                                  \
-           $(install_prefix)$(bindir)/$$program ;                      \
-       done
+       @if [ "$(HACK_EXES)" != "" ]; then                              \
+          if [ ! -d $(install_prefix)$(bindir) ]; then                 \
+            $(INSTALL_DIRS) $(install_prefix)$(bindir) ;               \
+          fi ;                                                         \
+          exes="$(UTIL_EXES)" ;                                        \
+          for program in $$exes; do                                    \
+            echo $(INSTALL_PROGRAM) $$program                          \
+              $(install_prefix)$(bindir)/$$program ;                   \
+            $(INSTALL_PROGRAM) $$program                               \
+              $(install_prefix)$(bindir)/$$program ;                   \
+          done ;                                                       \
+        fi
 
 install-man: $(MEN)
        @men="$(MEN)" ;                                                 \
@@ -159,7 +166,7 @@ install-man: $(MEN)
 
 # the hacks, in $HACKDIR
 uninstall-program::
-       @exes="$(HACK_EXES)" ;                                          \
+       @exes="$(GL_EXES_1) $(GLE_EXES)" ;                              \
        for program in $$exes; do                                       \
          echo rm -f $(install_prefix)$(HACKDIR)/$$program ;            \
          rm -f $(install_prefix)$(HACKDIR)/$$program ;                 \
@@ -174,7 +181,7 @@ uninstall-program::
        done
 
 uninstall-man:
-       @men="$(MEN)" ;                                                 \
+       @men="$(GL_MEN)" ;                                              \
        for man in $$men; do                                            \
          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
          echo rm -f $(install_prefix)$(man1dir)/$$instname ;           \
@@ -328,6 +335,19 @@ sierpinski3d:      sierpinski3d.o  $(HACK_OBJS)
 gflux:         gflux.o         $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
+SW_OBJS=starwars.o glut_stroke.o glut_swidth.o
+starwars:      $(SW_OBJS) $(HACK_OBJS)
+       $(CC_HACK) -o $@ $(SW_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+
+# This one works differently (it's not xlock-like.)
+#
+STONER_OBJS=stonerview.o stonerview-move.o stonerview-osc.o stonerview-view.o \
+           $(UTILS_BIN)/yarandom.o
+stonerview:    $(STONER_OBJS)
+       $(CC_HACK) -o $@ $(STONER_OBJS) $(HACK_LIBS)
+
+
 ##############################################################################
 #
 # DO NOT DELETE: updated by make distdepend
@@ -641,4 +661,38 @@ gflux.o: $(UTILS_SRC)/colors.h
 gflux.o: $(UTILS_SRC)/grabscreen.h
 gflux.o: $(UTILS_SRC)/visual.h
 gflux.o: $(UTILS_SRC)/xshm.h
+stonerview.o: ../../config.h
+stonerview.o: $(UTILS_SRC)/yarandom.h
+stonerview.o: $(srcdir)/stonerview-move.h
+stonerview-move.o: ../../config.h
+stonerview-move.o: $(UTILS_SRC)/yarandom.h
+stonerview-move.o: $(srcdir)/stonerview-osc.h
+stonerview-move.o: $(srcdir)/stonerview-move.h
+stonerview-osc.o: ../../config.h
+stonerview-osc.o: $(UTILS_SRC)/yarandom.h
+stonerview-osc.o: $(srcdir)/stonerview-osc.h
+stonerview-view.o: ../../config.h
+stonerview-view.o: $(UTILS_SRC)/vroot.h
+stonerview-view.o: $(UTILS_SRC)/version.h
+stonerview-view.o: $(UTILS_SRC)/yarandom.h
+stonerview-view.o: $(srcdir)/stonerview-osc.h
+stonerview-view.o: $(srcdir)/stonerview-move.h
+starwars.o: $(HACK_SRC)/xlockmore.h
+starwars.o: ../../config.h
+starwars.o: $(HACK_SRC)/xlockmoreI.h
+starwars.o: $(HACK_SRC)/screenhack.h
+starwars.o: $(UTILS_SRC)/yarandom.h
+starwars.o: $(UTILS_SRC)/usleep.h
+starwars.o: $(UTILS_SRC)/resources.h
+starwars.o: $(UTILS_SRC)/hsv.h
+starwars.o: $(UTILS_SRC)/colors.h
+starwars.o: $(UTILS_SRC)/grabscreen.h
+starwars.o: $(UTILS_SRC)/visual.h
+starwars.o: $(UTILS_SRC)/xshm.h
+starwars.o: $(srcdir)/glutstroke.h
+starwars.o: $(srcdir)/glut_roman.h
+glut_stroke.o: ../../config.h
+glut_stroke.o: $(srcdir)/glutstroke.h
+glut_swidth.o: ../../config.h
+glut_swidth.o: $(srcdir)/glutstroke.h
 
diff --git a/hacks/glx/glut_roman.h b/hacks/glx/glut_roman.h
new file mode 100644 (file)
index 0000000..36ecaf4
--- /dev/null
@@ -0,0 +1,2452 @@
+
+/* GENERATED FILE -- DO NOT MODIFY */
+
+#include "glutstroke.h"
+
+/* char: 33 '!' */
+
+static const CoordRec char33_stroke0[] = {
+    { 13.3819, 100 },
+    { 13.3819, 33.3333 },
+};
+
+static const CoordRec char33_stroke1[] = {
+    { 13.3819, 9.5238 },
+    { 8.62, 4.7619 },
+    { 13.3819, 0 },
+    { 18.1438, 4.7619 },
+    { 13.3819, 9.5238 },
+};
+
+static const StrokeRec char33[] = {
+   { 2, char33_stroke0 },
+   { 5, char33_stroke1 },
+};
+
+/* char: 34 '"' */
+
+static const CoordRec char34_stroke0[] = {
+    { 4.02, 100 },
+    { 4.02, 66.6667 },
+};
+
+static const CoordRec char34_stroke1[] = {
+    { 42.1152, 100 },
+    { 42.1152, 66.6667 },
+};
+
+static const StrokeRec char34[] = {
+   { 2, char34_stroke0 },
+   { 2, char34_stroke1 },
+};
+
+/* char: 35 '#' */
+
+static const CoordRec char35_stroke0[] = {
+    { 41.2952, 119.048 },
+    { 7.9619, -33.3333 },
+};
+
+static const CoordRec char35_stroke1[] = {
+    { 69.8667, 119.048 },
+    { 36.5333, -33.3333 },
+};
+
+static const CoordRec char35_stroke2[] = {
+    { 7.9619, 57.1429 },
+    { 74.6286, 57.1429 },
+};
+
+static const CoordRec char35_stroke3[] = {
+    { 3.2, 28.5714 },
+    { 69.8667, 28.5714 },
+};
+
+static const StrokeRec char35[] = {
+   { 2, char35_stroke0 },
+   { 2, char35_stroke1 },
+   { 2, char35_stroke2 },
+   { 2, char35_stroke3 },
+};
+
+/* char: 36 '$' */
+
+static const CoordRec char36_stroke0[] = {
+    { 28.6295, 119.048 },
+    { 28.6295, -19.0476 },
+};
+
+static const CoordRec char36_stroke1[] = {
+    { 47.6771, 119.048 },
+    { 47.6771, -19.0476 },
+};
+
+static const CoordRec char36_stroke2[] = {
+    { 71.4867, 85.7143 },
+    { 61.9629, 95.2381 },
+    { 47.6771, 100 },
+    { 28.6295, 100 },
+    { 14.3438, 95.2381 },
+    { 4.82, 85.7143 },
+    { 4.82, 76.1905 },
+    { 9.5819, 66.6667 },
+    { 14.3438, 61.9048 },
+    { 23.8676, 57.1429 },
+    { 52.439, 47.619 },
+    { 61.9629, 42.8571 },
+    { 66.7248, 38.0952 },
+    { 71.4867, 28.5714 },
+    { 71.4867, 14.2857 },
+    { 61.9629, 4.7619 },
+    { 47.6771, 0 },
+    { 28.6295, 0 },
+    { 14.3438, 4.7619 },
+    { 4.82, 14.2857 },
+};
+
+static const StrokeRec char36[] = {
+   { 2, char36_stroke0 },
+   { 2, char36_stroke1 },
+   { 20, char36_stroke2 },
+};
+
+/* char: 37 '%' */
+
+static const CoordRec char37_stroke0[] = {
+    { 92.0743, 100 },
+    { 6.36, 0 },
+};
+
+static const CoordRec char37_stroke1[] = {
+    { 30.1695, 100 },
+    { 39.6933, 90.4762 },
+    { 39.6933, 80.9524 },
+    { 34.9314, 71.4286 },
+    { 25.4076, 66.6667 },
+    { 15.8838, 66.6667 },
+    { 6.36, 76.1905 },
+    { 6.36, 85.7143 },
+    { 11.1219, 95.2381 },
+    { 20.6457, 100 },
+    { 30.1695, 100 },
+    { 39.6933, 95.2381 },
+    { 53.979, 90.4762 },
+    { 68.2648, 90.4762 },
+    { 82.5505, 95.2381 },
+    { 92.0743, 100 },
+};
+
+static const CoordRec char37_stroke2[] = {
+    { 73.0267, 33.3333 },
+    { 63.5029, 28.5714 },
+    { 58.741, 19.0476 },
+    { 58.741, 9.5238 },
+    { 68.2648, 0 },
+    { 77.7886, 0 },
+    { 87.3124, 4.7619 },
+    { 92.0743, 14.2857 },
+    { 92.0743, 23.8095 },
+    { 82.5505, 33.3333 },
+    { 73.0267, 33.3333 },
+};
+
+static const StrokeRec char37[] = {
+   { 2, char37_stroke0 },
+   { 16, char37_stroke1 },
+   { 11, char37_stroke2 },
+};
+
+/* char: 38 '&' */
+
+static const CoordRec char38_stroke0[] = {
+    { 101.218, 57.1429 },
+    { 101.218, 61.9048 },
+    { 96.4562, 66.6667 },
+    { 91.6943, 66.6667 },
+    { 86.9324, 61.9048 },
+    { 82.1705, 52.381 },
+    { 72.6467, 28.5714 },
+    { 63.1229, 14.2857 },
+    { 53.599, 4.7619 },
+    { 44.0752, 0 },
+    { 25.0276, 0 },
+    { 15.5038, 4.7619 },
+    { 10.7419, 9.5238 },
+    { 5.98, 19.0476 },
+    { 5.98, 28.5714 },
+    { 10.7419, 38.0952 },
+    { 15.5038, 42.8571 },
+    { 48.8371, 61.9048 },
+    { 53.599, 66.6667 },
+    { 58.361, 76.1905 },
+    { 58.361, 85.7143 },
+    { 53.599, 95.2381 },
+    { 44.0752, 100 },
+    { 34.5514, 95.2381 },
+    { 29.7895, 85.7143 },
+    { 29.7895, 76.1905 },
+    { 34.5514, 61.9048 },
+    { 44.0752, 47.619 },
+    { 67.8848, 14.2857 },
+    { 77.4086, 4.7619 },
+    { 86.9324, 0 },
+    { 96.4562, 0 },
+    { 101.218, 4.7619 },
+    { 101.218, 9.5238 },
+};
+
+static const StrokeRec char38[] = {
+   { 34, char38_stroke0 },
+};
+
+/* char: 39 ''' */
+
+static const CoordRec char39_stroke0[] = {
+    { 4.44, 100 },
+    { 4.44, 66.6667 },
+};
+
+static const StrokeRec char39[] = {
+   { 2, char39_stroke0 },
+};
+
+/* char: 40 '(' */
+
+static const CoordRec char40_stroke0[] = {
+    { 40.9133, 119.048 },
+    { 31.3895, 109.524 },
+    { 21.8657, 95.2381 },
+    { 12.3419, 76.1905 },
+    { 7.58, 52.381 },
+    { 7.58, 33.3333 },
+    { 12.3419, 9.5238 },
+    { 21.8657, -9.5238 },
+    { 31.3895, -23.8095 },
+    { 40.9133, -33.3333 },
+};
+
+static const StrokeRec char40[] = {
+   { 10, char40_stroke0 },
+};
+
+/* char: 41 ')' */
+
+static const CoordRec char41_stroke0[] = {
+    { 5.28, 119.048 },
+    { 14.8038, 109.524 },
+    { 24.3276, 95.2381 },
+    { 33.8514, 76.1905 },
+    { 38.6133, 52.381 },
+    { 38.6133, 33.3333 },
+    { 33.8514, 9.5238 },
+    { 24.3276, -9.5238 },
+    { 14.8038, -23.8095 },
+    { 5.28, -33.3333 },
+};
+
+static const StrokeRec char41[] = {
+   { 10, char41_stroke0 },
+};
+
+/* char: 42 '*' */
+
+static const CoordRec char42_stroke0[] = {
+    { 30.7695, 71.4286 },
+    { 30.7695, 14.2857 },
+};
+
+static const CoordRec char42_stroke1[] = {
+    { 6.96, 57.1429 },
+    { 54.579, 28.5714 },
+};
+
+static const CoordRec char42_stroke2[] = {
+    { 54.579, 57.1429 },
+    { 6.96, 28.5714 },
+};
+
+static const StrokeRec char42[] = {
+   { 2, char42_stroke0 },
+   { 2, char42_stroke1 },
+   { 2, char42_stroke2 },
+};
+
+/* char: 43 '+' */
+
+static const CoordRec char43_stroke0[] = {
+    { 48.8371, 85.7143 },
+    { 48.8371, 0 },
+};
+
+static const CoordRec char43_stroke1[] = {
+    { 5.98, 42.8571 },
+    { 91.6943, 42.8571 },
+};
+
+static const StrokeRec char43[] = {
+   { 2, char43_stroke0 },
+   { 2, char43_stroke1 },
+};
+
+/* char: 44 ',' */
+
+static const CoordRec char44_stroke0[] = {
+    { 18.2838, 4.7619 },
+    { 13.5219, 0 },
+    { 8.76, 4.7619 },
+    { 13.5219, 9.5238 },
+    { 18.2838, 4.7619 },
+    { 18.2838, -4.7619 },
+    { 13.5219, -14.2857 },
+    { 8.76, -19.0476 },
+};
+
+static const StrokeRec char44[] = {
+   { 8, char44_stroke0 },
+};
+
+/* char: 45 '-' */
+
+static const CoordRec char45_stroke0[] = {
+    { 7.38, 42.8571 },
+    { 93.0943, 42.8571 },
+};
+
+static const StrokeRec char45[] = {
+   { 2, char45_stroke0 },
+};
+
+/* char: 46 '.' */
+
+static const CoordRec char46_stroke0[] = {
+    { 13.1019, 9.5238 },
+    { 8.34, 4.7619 },
+    { 13.1019, 0 },
+    { 17.8638, 4.7619 },
+    { 13.1019, 9.5238 },
+};
+
+static const StrokeRec char46[] = {
+   { 5, char46_stroke0 },
+};
+
+/* char: 47 '/' */
+
+static const CoordRec char47_stroke0[] = {
+    { 7.24, -14.2857 },
+    { 73.9067, 100 },
+};
+
+static const StrokeRec char47[] = {
+   { 2, char47_stroke0 },
+};
+
+/* char: 48 '0' */
+
+static const CoordRec char48_stroke0[] = {
+    { 33.5514, 100 },
+    { 19.2657, 95.2381 },
+    { 9.7419, 80.9524 },
+    { 4.98, 57.1429 },
+    { 4.98, 42.8571 },
+    { 9.7419, 19.0476 },
+    { 19.2657, 4.7619 },
+    { 33.5514, 0 },
+    { 43.0752, 0 },
+    { 57.361, 4.7619 },
+    { 66.8848, 19.0476 },
+    { 71.6467, 42.8571 },
+    { 71.6467, 57.1429 },
+    { 66.8848, 80.9524 },
+    { 57.361, 95.2381 },
+    { 43.0752, 100 },
+    { 33.5514, 100 },
+};
+
+static const StrokeRec char48[] = {
+   { 17, char48_stroke0 },
+};
+
+/* char: 49 '1' */
+
+static const CoordRec char49_stroke0[] = {
+    { 11.82, 80.9524 },
+    { 21.3438, 85.7143 },
+    { 35.6295, 100 },
+    { 35.6295, 0 },
+};
+
+static const StrokeRec char49[] = {
+   { 4, char49_stroke0 },
+};
+
+/* char: 50 '2' */
+
+static const CoordRec char50_stroke0[] = {
+    { 10.1819, 76.1905 },
+    { 10.1819, 80.9524 },
+    { 14.9438, 90.4762 },
+    { 19.7057, 95.2381 },
+    { 29.2295, 100 },
+    { 48.2771, 100 },
+    { 57.801, 95.2381 },
+    { 62.5629, 90.4762 },
+    { 67.3248, 80.9524 },
+    { 67.3248, 71.4286 },
+    { 62.5629, 61.9048 },
+    { 53.039, 47.619 },
+    { 5.42, 0 },
+    { 72.0867, 0 },
+};
+
+static const StrokeRec char50[] = {
+   { 14, char50_stroke0 },
+};
+
+/* char: 51 '3' */
+
+static const CoordRec char51_stroke0[] = {
+    { 14.5238, 100 },
+    { 66.9048, 100 },
+    { 38.3333, 61.9048 },
+    { 52.619, 61.9048 },
+    { 62.1429, 57.1429 },
+    { 66.9048, 52.381 },
+    { 71.6667, 38.0952 },
+    { 71.6667, 28.5714 },
+    { 66.9048, 14.2857 },
+    { 57.381, 4.7619 },
+    { 43.0952, 0 },
+    { 28.8095, 0 },
+    { 14.5238, 4.7619 },
+    { 9.7619, 9.5238 },
+    { 5, 19.0476 },
+};
+
+static const StrokeRec char51[] = {
+   { 15, char51_stroke0 },
+};
+
+/* char: 52 '4' */
+
+static const CoordRec char52_stroke0[] = {
+    { 51.499, 100 },
+    { 3.88, 33.3333 },
+    { 75.3086, 33.3333 },
+};
+
+static const CoordRec char52_stroke1[] = {
+    { 51.499, 100 },
+    { 51.499, 0 },
+};
+
+static const StrokeRec char52[] = {
+   { 3, char52_stroke0 },
+   { 2, char52_stroke1 },
+};
+
+/* char: 53 '5' */
+
+static const CoordRec char53_stroke0[] = {
+    { 62.0029, 100 },
+    { 14.3838, 100 },
+    { 9.6219, 57.1429 },
+    { 14.3838, 61.9048 },
+    { 28.6695, 66.6667 },
+    { 42.9552, 66.6667 },
+    { 57.241, 61.9048 },
+    { 66.7648, 52.381 },
+    { 71.5267, 38.0952 },
+    { 71.5267, 28.5714 },
+    { 66.7648, 14.2857 },
+    { 57.241, 4.7619 },
+    { 42.9552, 0 },
+    { 28.6695, 0 },
+    { 14.3838, 4.7619 },
+    { 9.6219, 9.5238 },
+    { 4.86, 19.0476 },
+};
+
+static const StrokeRec char53[] = {
+   { 17, char53_stroke0 },
+};
+
+/* char: 54 '6' */
+
+static const CoordRec char54_stroke0[] = {
+    { 62.7229, 85.7143 },
+    { 57.961, 95.2381 },
+    { 43.6752, 100 },
+    { 34.1514, 100 },
+    { 19.8657, 95.2381 },
+    { 10.3419, 80.9524 },
+    { 5.58, 57.1429 },
+    { 5.58, 33.3333 },
+    { 10.3419, 14.2857 },
+    { 19.8657, 4.7619 },
+    { 34.1514, 0 },
+    { 38.9133, 0 },
+    { 53.199, 4.7619 },
+    { 62.7229, 14.2857 },
+    { 67.4848, 28.5714 },
+    { 67.4848, 33.3333 },
+    { 62.7229, 47.619 },
+    { 53.199, 57.1429 },
+    { 38.9133, 61.9048 },
+    { 34.1514, 61.9048 },
+    { 19.8657, 57.1429 },
+    { 10.3419, 47.619 },
+    { 5.58, 33.3333 },
+};
+
+static const StrokeRec char54[] = {
+   { 23, char54_stroke0 },
+};
+
+/* char: 55 '7' */
+
+static const CoordRec char55_stroke0[] = {
+    { 72.2267, 100 },
+    { 24.6076, 0 },
+};
+
+static const CoordRec char55_stroke1[] = {
+    { 5.56, 100 },
+    { 72.2267, 100 },
+};
+
+static const StrokeRec char55[] = {
+   { 2, char55_stroke0 },
+   { 2, char55_stroke1 },
+};
+
+/* char: 56 '8' */
+
+static const CoordRec char56_stroke0[] = {
+    { 29.4095, 100 },
+    { 15.1238, 95.2381 },
+    { 10.3619, 85.7143 },
+    { 10.3619, 76.1905 },
+    { 15.1238, 66.6667 },
+    { 24.6476, 61.9048 },
+    { 43.6952, 57.1429 },
+    { 57.981, 52.381 },
+    { 67.5048, 42.8571 },
+    { 72.2667, 33.3333 },
+    { 72.2667, 19.0476 },
+    { 67.5048, 9.5238 },
+    { 62.7429, 4.7619 },
+    { 48.4571, 0 },
+    { 29.4095, 0 },
+    { 15.1238, 4.7619 },
+    { 10.3619, 9.5238 },
+    { 5.6, 19.0476 },
+    { 5.6, 33.3333 },
+    { 10.3619, 42.8571 },
+    { 19.8857, 52.381 },
+    { 34.1714, 57.1429 },
+    { 53.219, 61.9048 },
+    { 62.7429, 66.6667 },
+    { 67.5048, 76.1905 },
+    { 67.5048, 85.7143 },
+    { 62.7429, 95.2381 },
+    { 48.4571, 100 },
+    { 29.4095, 100 },
+};
+
+static const StrokeRec char56[] = {
+   { 29, char56_stroke0 },
+};
+
+/* char: 57 '9' */
+
+static const CoordRec char57_stroke0[] = {
+    { 68.5048, 66.6667 },
+    { 63.7429, 52.381 },
+    { 54.219, 42.8571 },
+    { 39.9333, 38.0952 },
+    { 35.1714, 38.0952 },
+    { 20.8857, 42.8571 },
+    { 11.3619, 52.381 },
+    { 6.6, 66.6667 },
+    { 6.6, 71.4286 },
+    { 11.3619, 85.7143 },
+    { 20.8857, 95.2381 },
+    { 35.1714, 100 },
+    { 39.9333, 100 },
+    { 54.219, 95.2381 },
+    { 63.7429, 85.7143 },
+    { 68.5048, 66.6667 },
+    { 68.5048, 42.8571 },
+    { 63.7429, 19.0476 },
+    { 54.219, 4.7619 },
+    { 39.9333, 0 },
+    { 30.4095, 0 },
+    { 16.1238, 4.7619 },
+    { 11.3619, 14.2857 },
+};
+
+static const StrokeRec char57[] = {
+   { 23, char57_stroke0 },
+};
+
+/* char: 58 ':' */
+
+static const CoordRec char58_stroke0[] = {
+    { 14.0819, 66.6667 },
+    { 9.32, 61.9048 },
+    { 14.0819, 57.1429 },
+    { 18.8438, 61.9048 },
+    { 14.0819, 66.6667 },
+};
+
+static const CoordRec char58_stroke1[] = {
+    { 14.0819, 9.5238 },
+    { 9.32, 4.7619 },
+    { 14.0819, 0 },
+    { 18.8438, 4.7619 },
+    { 14.0819, 9.5238 },
+};
+
+static const StrokeRec char58[] = {
+   { 5, char58_stroke0 },
+   { 5, char58_stroke1 },
+};
+
+/* char: 59 ';' */
+
+static const CoordRec char59_stroke0[] = {
+    { 12.9619, 66.6667 },
+    { 8.2, 61.9048 },
+    { 12.9619, 57.1429 },
+    { 17.7238, 61.9048 },
+    { 12.9619, 66.6667 },
+};
+
+static const CoordRec char59_stroke1[] = {
+    { 17.7238, 4.7619 },
+    { 12.9619, 0 },
+    { 8.2, 4.7619 },
+    { 12.9619, 9.5238 },
+    { 17.7238, 4.7619 },
+    { 17.7238, -4.7619 },
+    { 12.9619, -14.2857 },
+    { 8.2, -19.0476 },
+};
+
+static const StrokeRec char59[] = {
+   { 5, char59_stroke0 },
+   { 8, char59_stroke1 },
+};
+
+/* char: 60 '<' */
+
+static const CoordRec char60_stroke0[] = {
+    { 79.2505, 85.7143 },
+    { 3.06, 42.8571 },
+    { 79.2505, 0 },
+};
+
+static const StrokeRec char60[] = {
+   { 3, char60_stroke0 },
+};
+
+/* char: 61 '=' */
+
+static const CoordRec char61_stroke0[] = {
+    { 5.7, 57.1429 },
+    { 91.4143, 57.1429 },
+};
+
+static const CoordRec char61_stroke1[] = {
+    { 5.7, 28.5714 },
+    { 91.4143, 28.5714 },
+};
+
+static const StrokeRec char61[] = {
+   { 2, char61_stroke0 },
+   { 2, char61_stroke1 },
+};
+
+/* char: 62 '>' */
+
+static const CoordRec char62_stroke0[] = {
+    { 2.78, 85.7143 },
+    { 78.9705, 42.8571 },
+    { 2.78, 0 },
+};
+
+static const StrokeRec char62[] = {
+   { 3, char62_stroke0 },
+};
+
+/* char: 63 '?' */
+
+static const CoordRec char63_stroke0[] = {
+    { 8.42, 76.1905 },
+    { 8.42, 80.9524 },
+    { 13.1819, 90.4762 },
+    { 17.9438, 95.2381 },
+    { 27.4676, 100 },
+    { 46.5152, 100 },
+    { 56.039, 95.2381 },
+    { 60.801, 90.4762 },
+    { 65.5629, 80.9524 },
+    { 65.5629, 71.4286 },
+    { 60.801, 61.9048 },
+    { 56.039, 57.1429 },
+    { 36.9914, 47.619 },
+    { 36.9914, 33.3333 },
+};
+
+static const CoordRec char63_stroke1[] = {
+    { 36.9914, 9.5238 },
+    { 32.2295, 4.7619 },
+    { 36.9914, 0 },
+    { 41.7533, 4.7619 },
+    { 36.9914, 9.5238 },
+};
+
+static const StrokeRec char63[] = {
+   { 14, char63_stroke0 },
+   { 5, char63_stroke1 },
+};
+
+/* char: 64 '@' */
+
+static const CoordRec char64_stroke0[] = {
+    { 49.2171, 52.381 },
+    { 39.6933, 57.1429 },
+    { 30.1695, 57.1429 },
+    { 25.4076, 47.619 },
+    { 25.4076, 42.8571 },
+    { 30.1695, 33.3333 },
+    { 39.6933, 33.3333 },
+    { 49.2171, 38.0952 },
+};
+
+static const CoordRec char64_stroke1[] = {
+    { 49.2171, 57.1429 },
+    { 49.2171, 38.0952 },
+    { 53.979, 33.3333 },
+    { 63.5029, 33.3333 },
+    { 68.2648, 42.8571 },
+    { 68.2648, 47.619 },
+    { 63.5029, 61.9048 },
+    { 53.979, 71.4286 },
+    { 39.6933, 76.1905 },
+    { 34.9314, 76.1905 },
+    { 20.6457, 71.4286 },
+    { 11.1219, 61.9048 },
+    { 6.36, 47.619 },
+    { 6.36, 42.8571 },
+    { 11.1219, 28.5714 },
+    { 20.6457, 19.0476 },
+    { 34.9314, 14.2857 },
+    { 39.6933, 14.2857 },
+    { 53.979, 19.0476 },
+};
+
+static const StrokeRec char64[] = {
+   { 8, char64_stroke0 },
+   { 19, char64_stroke1 },
+};
+
+/* char: 65 'A' */
+
+static const CoordRec char65_stroke0[] = {
+    { 40.5952, 100 },
+    { 2.5, 0 },
+};
+
+static const CoordRec char65_stroke1[] = {
+    { 40.5952, 100 },
+    { 78.6905, 0 },
+};
+
+static const CoordRec char65_stroke2[] = {
+    { 16.7857, 33.3333 },
+    { 64.4048, 33.3333 },
+};
+
+static const StrokeRec char65[] = {
+   { 2, char65_stroke0 },
+   { 2, char65_stroke1 },
+   { 2, char65_stroke2 },
+};
+
+/* char: 66 'B' */
+
+static const CoordRec char66_stroke0[] = {
+    { 11.42, 100 },
+    { 11.42, 0 },
+};
+
+static const CoordRec char66_stroke1[] = {
+    { 11.42, 100 },
+    { 54.2771, 100 },
+    { 68.5629, 95.2381 },
+    { 73.3248, 90.4762 },
+    { 78.0867, 80.9524 },
+    { 78.0867, 71.4286 },
+    { 73.3248, 61.9048 },
+    { 68.5629, 57.1429 },
+    { 54.2771, 52.381 },
+};
+
+static const CoordRec char66_stroke2[] = {
+    { 11.42, 52.381 },
+    { 54.2771, 52.381 },
+    { 68.5629, 47.619 },
+    { 73.3248, 42.8571 },
+    { 78.0867, 33.3333 },
+    { 78.0867, 19.0476 },
+    { 73.3248, 9.5238 },
+    { 68.5629, 4.7619 },
+    { 54.2771, 0 },
+    { 11.42, 0 },
+};
+
+static const StrokeRec char66[] = {
+   { 2, char66_stroke0 },
+   { 9, char66_stroke1 },
+   { 10, char66_stroke2 },
+};
+
+/* char: 67 'C' */
+
+static const CoordRec char67_stroke0[] = {
+    { 78.0886, 76.1905 },
+    { 73.3267, 85.7143 },
+    { 63.8029, 95.2381 },
+    { 54.279, 100 },
+    { 35.2314, 100 },
+    { 25.7076, 95.2381 },
+    { 16.1838, 85.7143 },
+    { 11.4219, 76.1905 },
+    { 6.66, 61.9048 },
+    { 6.66, 38.0952 },
+    { 11.4219, 23.8095 },
+    { 16.1838, 14.2857 },
+    { 25.7076, 4.7619 },
+    { 35.2314, 0 },
+    { 54.279, 0 },
+    { 63.8029, 4.7619 },
+    { 73.3267, 14.2857 },
+    { 78.0886, 23.8095 },
+};
+
+static const StrokeRec char67[] = {
+   { 18, char67_stroke0 },
+};
+
+/* char: 68 'D' */
+
+static const CoordRec char68_stroke0[] = {
+    { 11.96, 100 },
+    { 11.96, 0 },
+};
+
+static const CoordRec char68_stroke1[] = {
+    { 11.96, 100 },
+    { 45.2933, 100 },
+    { 59.579, 95.2381 },
+    { 69.1029, 85.7143 },
+    { 73.8648, 76.1905 },
+    { 78.6267, 61.9048 },
+    { 78.6267, 38.0952 },
+    { 73.8648, 23.8095 },
+    { 69.1029, 14.2857 },
+    { 59.579, 4.7619 },
+    { 45.2933, 0 },
+    { 11.96, 0 },
+};
+
+static const StrokeRec char68[] = {
+   { 2, char68_stroke0 },
+   { 12, char68_stroke1 },
+};
+
+/* char: 69 'E' */
+
+static const CoordRec char69_stroke0[] = {
+    { 11.42, 100 },
+    { 11.42, 0 },
+};
+
+static const CoordRec char69_stroke1[] = {
+    { 11.42, 100 },
+    { 73.3248, 100 },
+};
+
+static const CoordRec char69_stroke2[] = {
+    { 11.42, 52.381 },
+    { 49.5152, 52.381 },
+};
+
+static const CoordRec char69_stroke3[] = {
+    { 11.42, 0 },
+    { 73.3248, 0 },
+};
+
+static const StrokeRec char69[] = {
+   { 2, char69_stroke0 },
+   { 2, char69_stroke1 },
+   { 2, char69_stroke2 },
+   { 2, char69_stroke3 },
+};
+
+/* char: 70 'F' */
+
+static const CoordRec char70_stroke0[] = {
+    { 11.42, 100 },
+    { 11.42, 0 },
+};
+
+static const CoordRec char70_stroke1[] = {
+    { 11.42, 100 },
+    { 73.3248, 100 },
+};
+
+static const CoordRec char70_stroke2[] = {
+    { 11.42, 52.381 },
+    { 49.5152, 52.381 },
+};
+
+static const StrokeRec char70[] = {
+   { 2, char70_stroke0 },
+   { 2, char70_stroke1 },
+   { 2, char70_stroke2 },
+};
+
+/* char: 71 'G' */
+
+static const CoordRec char71_stroke0[] = {
+    { 78.4886, 76.1905 },
+    { 73.7267, 85.7143 },
+    { 64.2029, 95.2381 },
+    { 54.679, 100 },
+    { 35.6314, 100 },
+    { 26.1076, 95.2381 },
+    { 16.5838, 85.7143 },
+    { 11.8219, 76.1905 },
+    { 7.06, 61.9048 },
+    { 7.06, 38.0952 },
+    { 11.8219, 23.8095 },
+    { 16.5838, 14.2857 },
+    { 26.1076, 4.7619 },
+    { 35.6314, 0 },
+    { 54.679, 0 },
+    { 64.2029, 4.7619 },
+    { 73.7267, 14.2857 },
+    { 78.4886, 23.8095 },
+    { 78.4886, 38.0952 },
+};
+
+static const CoordRec char71_stroke1[] = {
+    { 54.679, 38.0952 },
+    { 78.4886, 38.0952 },
+};
+
+static const StrokeRec char71[] = {
+   { 19, char71_stroke0 },
+   { 2, char71_stroke1 },
+};
+
+/* char: 72 'H' */
+
+static const CoordRec char72_stroke0[] = {
+    { 11.42, 100 },
+    { 11.42, 0 },
+};
+
+static const CoordRec char72_stroke1[] = {
+    { 78.0867, 100 },
+    { 78.0867, 0 },
+};
+
+static const CoordRec char72_stroke2[] = {
+    { 11.42, 52.381 },
+    { 78.0867, 52.381 },
+};
+
+static const StrokeRec char72[] = {
+   { 2, char72_stroke0 },
+   { 2, char72_stroke1 },
+   { 2, char72_stroke2 },
+};
+
+/* char: 73 'I' */
+
+static const CoordRec char73_stroke0[] = {
+    { 10.86, 100 },
+    { 10.86, 0 },
+};
+
+static const StrokeRec char73[] = {
+   { 2, char73_stroke0 },
+};
+
+/* char: 74 'J' */
+
+static const CoordRec char74_stroke0[] = {
+    { 50.119, 100 },
+    { 50.119, 23.8095 },
+    { 45.3571, 9.5238 },
+    { 40.5952, 4.7619 },
+    { 31.0714, 0 },
+    { 21.5476, 0 },
+    { 12.0238, 4.7619 },
+    { 7.2619, 9.5238 },
+    { 2.5, 23.8095 },
+    { 2.5, 33.3333 },
+};
+
+static const StrokeRec char74[] = {
+   { 10, char74_stroke0 },
+};
+
+/* char: 75 'K' */
+
+static const CoordRec char75_stroke0[] = {
+    { 11.28, 100 },
+    { 11.28, 0 },
+};
+
+static const CoordRec char75_stroke1[] = {
+    { 77.9467, 100 },
+    { 11.28, 33.3333 },
+};
+
+static const CoordRec char75_stroke2[] = {
+    { 35.0895, 57.1429 },
+    { 77.9467, 0 },
+};
+
+static const StrokeRec char75[] = {
+   { 2, char75_stroke0 },
+   { 2, char75_stroke1 },
+   { 2, char75_stroke2 },
+};
+
+/* char: 76 'L' */
+
+static const CoordRec char76_stroke0[] = {
+    { 11.68, 100 },
+    { 11.68, 0 },
+};
+
+static const CoordRec char76_stroke1[] = {
+    { 11.68, 0 },
+    { 68.8229, 0 },
+};
+
+static const StrokeRec char76[] = {
+   { 2, char76_stroke0 },
+   { 2, char76_stroke1 },
+};
+
+/* char: 77 'M' */
+
+static const CoordRec char77_stroke0[] = {
+    { 10.86, 100 },
+    { 10.86, 0 },
+};
+
+static const CoordRec char77_stroke1[] = {
+    { 10.86, 100 },
+    { 48.9552, 0 },
+};
+
+static const CoordRec char77_stroke2[] = {
+    { 87.0505, 100 },
+    { 48.9552, 0 },
+};
+
+static const CoordRec char77_stroke3[] = {
+    { 87.0505, 100 },
+    { 87.0505, 0 },
+};
+
+static const StrokeRec char77[] = {
+   { 2, char77_stroke0 },
+   { 2, char77_stroke1 },
+   { 2, char77_stroke2 },
+   { 2, char77_stroke3 },
+};
+
+/* char: 78 'N' */
+
+static const CoordRec char78_stroke0[] = {
+    { 11.14, 100 },
+    { 11.14, 0 },
+};
+
+static const CoordRec char78_stroke1[] = {
+    { 11.14, 100 },
+    { 77.8067, 0 },
+};
+
+static const CoordRec char78_stroke2[] = {
+    { 77.8067, 100 },
+    { 77.8067, 0 },
+};
+
+static const StrokeRec char78[] = {
+   { 2, char78_stroke0 },
+   { 2, char78_stroke1 },
+   { 2, char78_stroke2 },
+};
+
+/* char: 79 'O' */
+
+static const CoordRec char79_stroke0[] = {
+    { 34.8114, 100 },
+    { 25.2876, 95.2381 },
+    { 15.7638, 85.7143 },
+    { 11.0019, 76.1905 },
+    { 6.24, 61.9048 },
+    { 6.24, 38.0952 },
+    { 11.0019, 23.8095 },
+    { 15.7638, 14.2857 },
+    { 25.2876, 4.7619 },
+    { 34.8114, 0 },
+    { 53.859, 0 },
+    { 63.3829, 4.7619 },
+    { 72.9067, 14.2857 },
+    { 77.6686, 23.8095 },
+    { 82.4305, 38.0952 },
+    { 82.4305, 61.9048 },
+    { 77.6686, 76.1905 },
+    { 72.9067, 85.7143 },
+    { 63.3829, 95.2381 },
+    { 53.859, 100 },
+    { 34.8114, 100 },
+};
+
+static const StrokeRec char79[] = {
+   { 21, char79_stroke0 },
+};
+
+/* char: 80 'P' */
+
+static const CoordRec char80_stroke0[] = {
+    { 12.1, 100 },
+    { 12.1, 0 },
+};
+
+static const CoordRec char80_stroke1[] = {
+    { 12.1, 100 },
+    { 54.9571, 100 },
+    { 69.2429, 95.2381 },
+    { 74.0048, 90.4762 },
+    { 78.7667, 80.9524 },
+    { 78.7667, 66.6667 },
+    { 74.0048, 57.1429 },
+    { 69.2429, 52.381 },
+    { 54.9571, 47.619 },
+    { 12.1, 47.619 },
+};
+
+static const StrokeRec char80[] = {
+   { 2, char80_stroke0 },
+   { 10, char80_stroke1 },
+};
+
+/* char: 81 'Q' */
+
+static const CoordRec char81_stroke0[] = {
+    { 33.8714, 100 },
+    { 24.3476, 95.2381 },
+    { 14.8238, 85.7143 },
+    { 10.0619, 76.1905 },
+    { 5.3, 61.9048 },
+    { 5.3, 38.0952 },
+    { 10.0619, 23.8095 },
+    { 14.8238, 14.2857 },
+    { 24.3476, 4.7619 },
+    { 33.8714, 0 },
+    { 52.919, 0 },
+    { 62.4429, 4.7619 },
+    { 71.9667, 14.2857 },
+    { 76.7286, 23.8095 },
+    { 81.4905, 38.0952 },
+    { 81.4905, 61.9048 },
+    { 76.7286, 76.1905 },
+    { 71.9667, 85.7143 },
+    { 62.4429, 95.2381 },
+    { 52.919, 100 },
+    { 33.8714, 100 },
+};
+
+static const CoordRec char81_stroke1[] = {
+    { 48.1571, 19.0476 },
+    { 76.7286, -9.5238 },
+};
+
+static const StrokeRec char81[] = {
+   { 21, char81_stroke0 },
+   { 2, char81_stroke1 },
+};
+
+/* char: 82 'R' */
+
+static const CoordRec char82_stroke0[] = {
+    { 11.68, 100 },
+    { 11.68, 0 },
+};
+
+static const CoordRec char82_stroke1[] = {
+    { 11.68, 100 },
+    { 54.5371, 100 },
+    { 68.8229, 95.2381 },
+    { 73.5848, 90.4762 },
+    { 78.3467, 80.9524 },
+    { 78.3467, 71.4286 },
+    { 73.5848, 61.9048 },
+    { 68.8229, 57.1429 },
+    { 54.5371, 52.381 },
+    { 11.68, 52.381 },
+};
+
+static const CoordRec char82_stroke2[] = {
+    { 45.0133, 52.381 },
+    { 78.3467, 0 },
+};
+
+static const StrokeRec char82[] = {
+   { 2, char82_stroke0 },
+   { 10, char82_stroke1 },
+   { 2, char82_stroke2 },
+};
+
+/* char: 83 'S' */
+
+static const CoordRec char83_stroke0[] = {
+    { 74.6667, 85.7143 },
+    { 65.1429, 95.2381 },
+    { 50.8571, 100 },
+    { 31.8095, 100 },
+    { 17.5238, 95.2381 },
+    { 8, 85.7143 },
+    { 8, 76.1905 },
+    { 12.7619, 66.6667 },
+    { 17.5238, 61.9048 },
+    { 27.0476, 57.1429 },
+    { 55.619, 47.619 },
+    { 65.1429, 42.8571 },
+    { 69.9048, 38.0952 },
+    { 74.6667, 28.5714 },
+    { 74.6667, 14.2857 },
+    { 65.1429, 4.7619 },
+    { 50.8571, 0 },
+    { 31.8095, 0 },
+    { 17.5238, 4.7619 },
+    { 8, 14.2857 },
+};
+
+static const StrokeRec char83[] = {
+   { 20, char83_stroke0 },
+};
+
+/* char: 84 'T' */
+
+static const CoordRec char84_stroke0[] = {
+    { 35.6933, 100 },
+    { 35.6933, 0 },
+};
+
+static const CoordRec char84_stroke1[] = {
+    { 2.36, 100 },
+    { 69.0267, 100 },
+};
+
+static const StrokeRec char84[] = {
+   { 2, char84_stroke0 },
+   { 2, char84_stroke1 },
+};
+
+/* char: 85 'U' */
+
+static const CoordRec char85_stroke0[] = {
+    { 11.54, 100 },
+    { 11.54, 28.5714 },
+    { 16.3019, 14.2857 },
+    { 25.8257, 4.7619 },
+    { 40.1114, 0 },
+    { 49.6352, 0 },
+    { 63.921, 4.7619 },
+    { 73.4448, 14.2857 },
+    { 78.2067, 28.5714 },
+    { 78.2067, 100 },
+};
+
+static const StrokeRec char85[] = {
+   { 10, char85_stroke0 },
+};
+
+/* char: 86 'V' */
+
+static const CoordRec char86_stroke0[] = {
+    { 2.36, 100 },
+    { 40.4552, 0 },
+};
+
+static const CoordRec char86_stroke1[] = {
+    { 78.5505, 100 },
+    { 40.4552, 0 },
+};
+
+static const StrokeRec char86[] = {
+   { 2, char86_stroke0 },
+   { 2, char86_stroke1 },
+};
+
+/* char: 87 'W' */
+
+static const CoordRec char87_stroke0[] = {
+    { 2.22, 100 },
+    { 26.0295, 0 },
+};
+
+static const CoordRec char87_stroke1[] = {
+    { 49.839, 100 },
+    { 26.0295, 0 },
+};
+
+static const CoordRec char87_stroke2[] = {
+    { 49.839, 100 },
+    { 73.6486, 0 },
+};
+
+static const CoordRec char87_stroke3[] = {
+    { 97.4581, 100 },
+    { 73.6486, 0 },
+};
+
+static const StrokeRec char87[] = {
+   { 2, char87_stroke0 },
+   { 2, char87_stroke1 },
+   { 2, char87_stroke2 },
+   { 2, char87_stroke3 },
+};
+
+/* char: 88 'X' */
+
+static const CoordRec char88_stroke0[] = {
+    { 2.5, 100 },
+    { 69.1667, 0 },
+};
+
+static const CoordRec char88_stroke1[] = {
+    { 69.1667, 100 },
+    { 2.5, 0 },
+};
+
+static const StrokeRec char88[] = {
+   { 2, char88_stroke0 },
+   { 2, char88_stroke1 },
+};
+
+/* char: 89 'Y' */
+
+static const CoordRec char89_stroke0[] = {
+    { 1.52, 100 },
+    { 39.6152, 52.381 },
+    { 39.6152, 0 },
+};
+
+static const CoordRec char89_stroke1[] = {
+    { 77.7105, 100 },
+    { 39.6152, 52.381 },
+};
+
+static const StrokeRec char89[] = {
+   { 3, char89_stroke0 },
+   { 2, char89_stroke1 },
+};
+
+/* char: 90 'Z' */
+
+static const CoordRec char90_stroke0[] = {
+    { 69.1667, 100 },
+    { 2.5, 0 },
+};
+
+static const CoordRec char90_stroke1[] = {
+    { 2.5, 100 },
+    { 69.1667, 100 },
+};
+
+static const CoordRec char90_stroke2[] = {
+    { 2.5, 0 },
+    { 69.1667, 0 },
+};
+
+static const StrokeRec char90[] = {
+   { 2, char90_stroke0 },
+   { 2, char90_stroke1 },
+   { 2, char90_stroke2 },
+};
+
+/* char: 91 '[' */
+
+static const CoordRec char91_stroke0[] = {
+    { 7.78, 119.048 },
+    { 7.78, -33.3333 },
+};
+
+static const CoordRec char91_stroke1[] = {
+    { 12.5419, 119.048 },
+    { 12.5419, -33.3333 },
+};
+
+static const CoordRec char91_stroke2[] = {
+    { 7.78, 119.048 },
+    { 41.1133, 119.048 },
+};
+
+static const CoordRec char91_stroke3[] = {
+    { 7.78, -33.3333 },
+    { 41.1133, -33.3333 },
+};
+
+static const StrokeRec char91[] = {
+   { 2, char91_stroke0 },
+   { 2, char91_stroke1 },
+   { 2, char91_stroke2 },
+   { 2, char91_stroke3 },
+};
+
+/* char: 92 '\' */
+
+static const CoordRec char92_stroke0[] = {
+    { 5.84, 100 },
+    { 72.5067, -14.2857 },
+};
+
+static const StrokeRec char92[] = {
+   { 2, char92_stroke0 },
+};
+
+/* char: 93 ']' */
+
+static const CoordRec char93_stroke0[] = {
+    { 33.0114, 119.048 },
+    { 33.0114, -33.3333 },
+};
+
+static const CoordRec char93_stroke1[] = {
+    { 37.7733, 119.048 },
+    { 37.7733, -33.3333 },
+};
+
+static const CoordRec char93_stroke2[] = {
+    { 4.44, 119.048 },
+    { 37.7733, 119.048 },
+};
+
+static const CoordRec char93_stroke3[] = {
+    { 4.44, -33.3333 },
+    { 37.7733, -33.3333 },
+};
+
+static const StrokeRec char93[] = {
+   { 2, char93_stroke0 },
+   { 2, char93_stroke1 },
+   { 2, char93_stroke2 },
+   { 2, char93_stroke3 },
+};
+
+/* char: 94 '^' */
+
+static const CoordRec char94_stroke0[] = {
+    { 44.0752, 109.524 },
+    { 5.98, 42.8571 },
+};
+
+static const CoordRec char94_stroke1[] = {
+    { 44.0752, 109.524 },
+    { 82.1705, 42.8571 },
+};
+
+static const StrokeRec char94[] = {
+   { 2, char94_stroke0 },
+   { 2, char94_stroke1 },
+};
+
+/* char: 95 '_' */
+
+static const CoordRec char95_stroke0[] = {
+    { -1.1, -33.3333 },
+    { 103.662, -33.3333 },
+    { 103.662, -28.5714 },
+    { -1.1, -28.5714 },
+    { -1.1, -33.3333 },
+};
+
+static const StrokeRec char95[] = {
+   { 5, char95_stroke0 },
+};
+
+/* char: 96 '`' */
+
+static const CoordRec char96_stroke0[] = {
+    { 33.0219, 100 },
+    { 56.8314, 71.4286 },
+};
+
+static const CoordRec char96_stroke1[] = {
+    { 33.0219, 100 },
+    { 28.26, 95.2381 },
+    { 56.8314, 71.4286 },
+};
+
+static const StrokeRec char96[] = {
+   { 2, char96_stroke0 },
+   { 3, char96_stroke1 },
+};
+
+/* char: 97 'a' */
+
+static const CoordRec char97_stroke0[] = {
+    { 63.8229, 66.6667 },
+    { 63.8229, 0 },
+};
+
+static const CoordRec char97_stroke1[] = {
+    { 63.8229, 52.381 },
+    { 54.299, 61.9048 },
+    { 44.7752, 66.6667 },
+    { 30.4895, 66.6667 },
+    { 20.9657, 61.9048 },
+    { 11.4419, 52.381 },
+    { 6.68, 38.0952 },
+    { 6.68, 28.5714 },
+    { 11.4419, 14.2857 },
+    { 20.9657, 4.7619 },
+    { 30.4895, 0 },
+    { 44.7752, 0 },
+    { 54.299, 4.7619 },
+    { 63.8229, 14.2857 },
+};
+
+static const StrokeRec char97[] = {
+   { 2, char97_stroke0 },
+   { 14, char97_stroke1 },
+};
+
+/* char: 98 'b' */
+
+static const CoordRec char98_stroke0[] = {
+    { 8.76, 100 },
+    { 8.76, 0 },
+};
+
+static const CoordRec char98_stroke1[] = {
+    { 8.76, 52.381 },
+    { 18.2838, 61.9048 },
+    { 27.8076, 66.6667 },
+    { 42.0933, 66.6667 },
+    { 51.6171, 61.9048 },
+    { 61.141, 52.381 },
+    { 65.9029, 38.0952 },
+    { 65.9029, 28.5714 },
+    { 61.141, 14.2857 },
+    { 51.6171, 4.7619 },
+    { 42.0933, 0 },
+    { 27.8076, 0 },
+    { 18.2838, 4.7619 },
+    { 8.76, 14.2857 },
+};
+
+static const StrokeRec char98[] = {
+   { 2, char98_stroke0 },
+   { 14, char98_stroke1 },
+};
+
+/* char: 99 'c' */
+
+static const CoordRec char99_stroke0[] = {
+    { 62.6629, 52.381 },
+    { 53.139, 61.9048 },
+    { 43.6152, 66.6667 },
+    { 29.3295, 66.6667 },
+    { 19.8057, 61.9048 },
+    { 10.2819, 52.381 },
+    { 5.52, 38.0952 },
+    { 5.52, 28.5714 },
+    { 10.2819, 14.2857 },
+    { 19.8057, 4.7619 },
+    { 29.3295, 0 },
+    { 43.6152, 0 },
+    { 53.139, 4.7619 },
+    { 62.6629, 14.2857 },
+};
+
+static const StrokeRec char99[] = {
+   { 14, char99_stroke0 },
+};
+
+/* char: 100 'd' */
+
+static const CoordRec char100_stroke0[] = {
+    { 61.7829, 100 },
+    { 61.7829, 0 },
+};
+
+static const CoordRec char100_stroke1[] = {
+    { 61.7829, 52.381 },
+    { 52.259, 61.9048 },
+    { 42.7352, 66.6667 },
+    { 28.4495, 66.6667 },
+    { 18.9257, 61.9048 },
+    { 9.4019, 52.381 },
+    { 4.64, 38.0952 },
+    { 4.64, 28.5714 },
+    { 9.4019, 14.2857 },
+    { 18.9257, 4.7619 },
+    { 28.4495, 0 },
+    { 42.7352, 0 },
+    { 52.259, 4.7619 },
+    { 61.7829, 14.2857 },
+};
+
+static const StrokeRec char100[] = {
+   { 2, char100_stroke0 },
+   { 14, char100_stroke1 },
+};
+
+/* char: 101 'e' */
+
+static const CoordRec char101_stroke0[] = {
+    { 5.72, 38.0952 },
+    { 62.8629, 38.0952 },
+    { 62.8629, 47.619 },
+    { 58.101, 57.1429 },
+    { 53.339, 61.9048 },
+    { 43.8152, 66.6667 },
+    { 29.5295, 66.6667 },
+    { 20.0057, 61.9048 },
+    { 10.4819, 52.381 },
+    { 5.72, 38.0952 },
+    { 5.72, 28.5714 },
+    { 10.4819, 14.2857 },
+    { 20.0057, 4.7619 },
+    { 29.5295, 0 },
+    { 43.8152, 0 },
+    { 53.339, 4.7619 },
+    { 62.8629, 14.2857 },
+};
+
+static const StrokeRec char101[] = {
+   { 17, char101_stroke0 },
+};
+
+/* char: 102 'f' */
+
+static const CoordRec char102_stroke0[] = {
+    { 38.7752, 100 },
+    { 29.2514, 100 },
+    { 19.7276, 95.2381 },
+    { 14.9657, 80.9524 },
+    { 14.9657, 0 },
+};
+
+static const CoordRec char102_stroke1[] = {
+    { 0.68, 66.6667 },
+    { 34.0133, 66.6667 },
+};
+
+static const StrokeRec char102[] = {
+   { 5, char102_stroke0 },
+   { 2, char102_stroke1 },
+};
+
+/* char: 103 'g' */
+
+static const CoordRec char103_stroke0[] = {
+    { 62.5029, 66.6667 },
+    { 62.5029, -9.5238 },
+    { 57.741, -23.8095 },
+    { 52.979, -28.5714 },
+    { 43.4552, -33.3333 },
+    { 29.1695, -33.3333 },
+    { 19.6457, -28.5714 },
+};
+
+static const CoordRec char103_stroke1[] = {
+    { 62.5029, 52.381 },
+    { 52.979, 61.9048 },
+    { 43.4552, 66.6667 },
+    { 29.1695, 66.6667 },
+    { 19.6457, 61.9048 },
+    { 10.1219, 52.381 },
+    { 5.36, 38.0952 },
+    { 5.36, 28.5714 },
+    { 10.1219, 14.2857 },
+    { 19.6457, 4.7619 },
+    { 29.1695, 0 },
+    { 43.4552, 0 },
+    { 52.979, 4.7619 },
+    { 62.5029, 14.2857 },
+};
+
+static const StrokeRec char103[] = {
+   { 7, char103_stroke0 },
+   { 14, char103_stroke1 },
+};
+
+/* char: 104 'h' */
+
+static const CoordRec char104_stroke0[] = {
+    { 9.6, 100 },
+    { 9.6, 0 },
+};
+
+static const CoordRec char104_stroke1[] = {
+    { 9.6, 47.619 },
+    { 23.8857, 61.9048 },
+    { 33.4095, 66.6667 },
+    { 47.6952, 66.6667 },
+    { 57.219, 61.9048 },
+    { 61.981, 47.619 },
+    { 61.981, 0 },
+};
+
+static const StrokeRec char104[] = {
+   { 2, char104_stroke0 },
+   { 7, char104_stroke1 },
+};
+
+/* char: 105 'i' */
+
+static const CoordRec char105_stroke0[] = {
+    { 10.02, 100 },
+    { 14.7819, 95.2381 },
+    { 19.5438, 100 },
+    { 14.7819, 104.762 },
+    { 10.02, 100 },
+};
+
+static const CoordRec char105_stroke1[] = {
+    { 14.7819, 66.6667 },
+    { 14.7819, 0 },
+};
+
+static const StrokeRec char105[] = {
+   { 5, char105_stroke0 },
+   { 2, char105_stroke1 },
+};
+
+/* char: 106 'j' */
+
+static const CoordRec char106_stroke0[] = {
+    { 17.3876, 100 },
+    { 22.1495, 95.2381 },
+    { 26.9114, 100 },
+    { 22.1495, 104.762 },
+    { 17.3876, 100 },
+};
+
+static const CoordRec char106_stroke1[] = {
+    { 22.1495, 66.6667 },
+    { 22.1495, -14.2857 },
+    { 17.3876, -28.5714 },
+    { 7.8638, -33.3333 },
+    { -1.66, -33.3333 },
+};
+
+static const StrokeRec char106[] = {
+   { 5, char106_stroke0 },
+   { 5, char106_stroke1 },
+};
+
+/* char: 107 'k' */
+
+static const CoordRec char107_stroke0[] = {
+    { 9.6, 100 },
+    { 9.6, 0 },
+};
+
+static const CoordRec char107_stroke1[] = {
+    { 57.219, 66.6667 },
+    { 9.6, 19.0476 },
+};
+
+static const CoordRec char107_stroke2[] = {
+    { 28.6476, 38.0952 },
+    { 61.981, 0 },
+};
+
+static const StrokeRec char107[] = {
+   { 2, char107_stroke0 },
+   { 2, char107_stroke1 },
+   { 2, char107_stroke2 },
+};
+
+/* char: 108 'l' */
+
+static const CoordRec char108_stroke0[] = {
+    { 10.02, 100 },
+    { 10.02, 0 },
+};
+
+static const StrokeRec char108[] = {
+   { 2, char108_stroke0 },
+};
+
+/* char: 109 'm' */
+
+static const CoordRec char109_stroke0[] = {
+    { 9.6, 66.6667 },
+    { 9.6, 0 },
+};
+
+static const CoordRec char109_stroke1[] = {
+    { 9.6, 47.619 },
+    { 23.8857, 61.9048 },
+    { 33.4095, 66.6667 },
+    { 47.6952, 66.6667 },
+    { 57.219, 61.9048 },
+    { 61.981, 47.619 },
+    { 61.981, 0 },
+};
+
+static const CoordRec char109_stroke2[] = {
+    { 61.981, 47.619 },
+    { 76.2667, 61.9048 },
+    { 85.7905, 66.6667 },
+    { 100.076, 66.6667 },
+    { 109.6, 61.9048 },
+    { 114.362, 47.619 },
+    { 114.362, 0 },
+};
+
+static const StrokeRec char109[] = {
+   { 2, char109_stroke0 },
+   { 7, char109_stroke1 },
+   { 7, char109_stroke2 },
+};
+
+/* char: 110 'n' */
+
+static const CoordRec char110_stroke0[] = {
+    { 9.18, 66.6667 },
+    { 9.18, 0 },
+};
+
+static const CoordRec char110_stroke1[] = {
+    { 9.18, 47.619 },
+    { 23.4657, 61.9048 },
+    { 32.9895, 66.6667 },
+    { 47.2752, 66.6667 },
+    { 56.799, 61.9048 },
+    { 61.561, 47.619 },
+    { 61.561, 0 },
+};
+
+static const StrokeRec char110[] = {
+   { 2, char110_stroke0 },
+   { 7, char110_stroke1 },
+};
+
+/* char: 111 'o' */
+
+static const CoordRec char111_stroke0[] = {
+    { 28.7895, 66.6667 },
+    { 19.2657, 61.9048 },
+    { 9.7419, 52.381 },
+    { 4.98, 38.0952 },
+    { 4.98, 28.5714 },
+    { 9.7419, 14.2857 },
+    { 19.2657, 4.7619 },
+    { 28.7895, 0 },
+    { 43.0752, 0 },
+    { 52.599, 4.7619 },
+    { 62.1229, 14.2857 },
+    { 66.8848, 28.5714 },
+    { 66.8848, 38.0952 },
+    { 62.1229, 52.381 },
+    { 52.599, 61.9048 },
+    { 43.0752, 66.6667 },
+    { 28.7895, 66.6667 },
+};
+
+static const StrokeRec char111[] = {
+   { 17, char111_stroke0 },
+};
+
+/* char: 112 'p' */
+
+static const CoordRec char112_stroke0[] = {
+    { 9.46, 66.6667 },
+    { 9.46, -33.3333 },
+};
+
+static const CoordRec char112_stroke1[] = {
+    { 9.46, 52.381 },
+    { 18.9838, 61.9048 },
+    { 28.5076, 66.6667 },
+    { 42.7933, 66.6667 },
+    { 52.3171, 61.9048 },
+    { 61.841, 52.381 },
+    { 66.6029, 38.0952 },
+    { 66.6029, 28.5714 },
+    { 61.841, 14.2857 },
+    { 52.3171, 4.7619 },
+    { 42.7933, 0 },
+    { 28.5076, 0 },
+    { 18.9838, 4.7619 },
+    { 9.46, 14.2857 },
+};
+
+static const StrokeRec char112[] = {
+   { 2, char112_stroke0 },
+   { 14, char112_stroke1 },
+};
+
+/* char: 113 'q' */
+
+static const CoordRec char113_stroke0[] = {
+    { 61.9829, 66.6667 },
+    { 61.9829, -33.3333 },
+};
+
+static const CoordRec char113_stroke1[] = {
+    { 61.9829, 52.381 },
+    { 52.459, 61.9048 },
+    { 42.9352, 66.6667 },
+    { 28.6495, 66.6667 },
+    { 19.1257, 61.9048 },
+    { 9.6019, 52.381 },
+    { 4.84, 38.0952 },
+    { 4.84, 28.5714 },
+    { 9.6019, 14.2857 },
+    { 19.1257, 4.7619 },
+    { 28.6495, 0 },
+    { 42.9352, 0 },
+    { 52.459, 4.7619 },
+    { 61.9829, 14.2857 },
+};
+
+static const StrokeRec char113[] = {
+   { 2, char113_stroke0 },
+   { 14, char113_stroke1 },
+};
+
+/* char: 114 'r' */
+
+static const CoordRec char114_stroke0[] = {
+    { 9.46, 66.6667 },
+    { 9.46, 0 },
+};
+
+static const CoordRec char114_stroke1[] = {
+    { 9.46, 38.0952 },
+    { 14.2219, 52.381 },
+    { 23.7457, 61.9048 },
+    { 33.2695, 66.6667 },
+    { 47.5552, 66.6667 },
+};
+
+static const StrokeRec char114[] = {
+   { 2, char114_stroke0 },
+   { 5, char114_stroke1 },
+};
+
+/* char: 115 's' */
+
+static const CoordRec char115_stroke0[] = {
+    { 57.081, 52.381 },
+    { 52.319, 61.9048 },
+    { 38.0333, 66.6667 },
+    { 23.7476, 66.6667 },
+    { 9.4619, 61.9048 },
+    { 4.7, 52.381 },
+    { 9.4619, 42.8571 },
+    { 18.9857, 38.0952 },
+    { 42.7952, 33.3333 },
+    { 52.319, 28.5714 },
+    { 57.081, 19.0476 },
+    { 57.081, 14.2857 },
+    { 52.319, 4.7619 },
+    { 38.0333, 0 },
+    { 23.7476, 0 },
+    { 9.4619, 4.7619 },
+    { 4.7, 14.2857 },
+};
+
+static const StrokeRec char115[] = {
+   { 17, char115_stroke0 },
+};
+
+/* char: 116 't' */
+
+static const CoordRec char116_stroke0[] = {
+    { 14.8257, 100 },
+    { 14.8257, 19.0476 },
+    { 19.5876, 4.7619 },
+    { 29.1114, 0 },
+    { 38.6352, 0 },
+};
+
+static const CoordRec char116_stroke1[] = {
+    { 0.54, 66.6667 },
+    { 33.8733, 66.6667 },
+};
+
+static const StrokeRec char116[] = {
+   { 5, char116_stroke0 },
+   { 2, char116_stroke1 },
+};
+
+/* char: 117 'u' */
+
+static const CoordRec char117_stroke0[] = {
+    { 9.46, 66.6667 },
+    { 9.46, 19.0476 },
+    { 14.2219, 4.7619 },
+    { 23.7457, 0 },
+    { 38.0314, 0 },
+    { 47.5552, 4.7619 },
+    { 61.841, 19.0476 },
+};
+
+static const CoordRec char117_stroke1[] = {
+    { 61.841, 66.6667 },
+    { 61.841, 0 },
+};
+
+static const StrokeRec char117[] = {
+   { 7, char117_stroke0 },
+   { 2, char117_stroke1 },
+};
+
+/* char: 118 'v' */
+
+static const CoordRec char118_stroke0[] = {
+    { 1.8, 66.6667 },
+    { 30.3714, 0 },
+};
+
+static const CoordRec char118_stroke1[] = {
+    { 58.9429, 66.6667 },
+    { 30.3714, 0 },
+};
+
+static const StrokeRec char118[] = {
+   { 2, char118_stroke0 },
+   { 2, char118_stroke1 },
+};
+
+/* char: 119 'w' */
+
+static const CoordRec char119_stroke0[] = {
+    { 2.5, 66.6667 },
+    { 21.5476, 0 },
+};
+
+static const CoordRec char119_stroke1[] = {
+    { 40.5952, 66.6667 },
+    { 21.5476, 0 },
+};
+
+static const CoordRec char119_stroke2[] = {
+    { 40.5952, 66.6667 },
+    { 59.6429, 0 },
+};
+
+static const CoordRec char119_stroke3[] = {
+    { 78.6905, 66.6667 },
+    { 59.6429, 0 },
+};
+
+static const StrokeRec char119[] = {
+   { 2, char119_stroke0 },
+   { 2, char119_stroke1 },
+   { 2, char119_stroke2 },
+   { 2, char119_stroke3 },
+};
+
+/* char: 120 'x' */
+
+static const CoordRec char120_stroke0[] = {
+    { 1.66, 66.6667 },
+    { 54.041, 0 },
+};
+
+static const CoordRec char120_stroke1[] = {
+    { 54.041, 66.6667 },
+    { 1.66, 0 },
+};
+
+static const StrokeRec char120[] = {
+   { 2, char120_stroke0 },
+   { 2, char120_stroke1 },
+};
+
+/* char: 121 'y' */
+
+static const CoordRec char121_stroke0[] = {
+    { 6.5619, 66.6667 },
+    { 35.1333, 0 },
+};
+
+static const CoordRec char121_stroke1[] = {
+    { 63.7048, 66.6667 },
+    { 35.1333, 0 },
+    { 25.6095, -19.0476 },
+    { 16.0857, -28.5714 },
+    { 6.5619, -33.3333 },
+    { 1.8, -33.3333 },
+};
+
+static const StrokeRec char121[] = {
+   { 2, char121_stroke0 },
+   { 6, char121_stroke1 },
+};
+
+/* char: 122 'z' */
+
+static const CoordRec char122_stroke0[] = {
+    { 56.821, 66.6667 },
+    { 4.44, 0 },
+};
+
+static const CoordRec char122_stroke1[] = {
+    { 4.44, 66.6667 },
+    { 56.821, 66.6667 },
+};
+
+static const CoordRec char122_stroke2[] = {
+    { 4.44, 0 },
+    { 56.821, 0 },
+};
+
+static const StrokeRec char122[] = {
+   { 2, char122_stroke0 },
+   { 2, char122_stroke1 },
+   { 2, char122_stroke2 },
+};
+
+/* char: 123 '{' */
+
+static const CoordRec char123_stroke0[] = {
+    { 31.1895, 119.048 },
+    { 21.6657, 114.286 },
+    { 16.9038, 109.524 },
+    { 12.1419, 100 },
+    { 12.1419, 90.4762 },
+    { 16.9038, 80.9524 },
+    { 21.6657, 76.1905 },
+    { 26.4276, 66.6667 },
+    { 26.4276, 57.1429 },
+    { 16.9038, 47.619 },
+};
+
+static const CoordRec char123_stroke1[] = {
+    { 21.6657, 114.286 },
+    { 16.9038, 104.762 },
+    { 16.9038, 95.2381 },
+    { 21.6657, 85.7143 },
+    { 26.4276, 80.9524 },
+    { 31.1895, 71.4286 },
+    { 31.1895, 61.9048 },
+    { 26.4276, 52.381 },
+    { 7.38, 42.8571 },
+    { 26.4276, 33.3333 },
+    { 31.1895, 23.8095 },
+    { 31.1895, 14.2857 },
+    { 26.4276, 4.7619 },
+    { 21.6657, 0 },
+    { 16.9038, -9.5238 },
+    { 16.9038, -19.0476 },
+    { 21.6657, -28.5714 },
+};
+
+static const CoordRec char123_stroke2[] = {
+    { 16.9038, 38.0952 },
+    { 26.4276, 28.5714 },
+    { 26.4276, 19.0476 },
+    { 21.6657, 9.5238 },
+    { 16.9038, 4.7619 },
+    { 12.1419, -4.7619 },
+    { 12.1419, -14.2857 },
+    { 16.9038, -23.8095 },
+    { 21.6657, -28.5714 },
+    { 31.1895, -33.3333 },
+};
+
+static const StrokeRec char123[] = {
+   { 10, char123_stroke0 },
+   { 17, char123_stroke1 },
+   { 10, char123_stroke2 },
+};
+
+/* char: 124 '|' */
+
+static const CoordRec char124_stroke0[] = {
+    { 11.54, 119.048 },
+    { 11.54, -33.3333 },
+};
+
+static const StrokeRec char124[] = {
+   { 2, char124_stroke0 },
+};
+
+/* char: 125 '}' */
+
+static const CoordRec char125_stroke0[] = {
+    { 9.18, 119.048 },
+    { 18.7038, 114.286 },
+    { 23.4657, 109.524 },
+    { 28.2276, 100 },
+    { 28.2276, 90.4762 },
+    { 23.4657, 80.9524 },
+    { 18.7038, 76.1905 },
+    { 13.9419, 66.6667 },
+    { 13.9419, 57.1429 },
+    { 23.4657, 47.619 },
+};
+
+static const CoordRec char125_stroke1[] = {
+    { 18.7038, 114.286 },
+    { 23.4657, 104.762 },
+    { 23.4657, 95.2381 },
+    { 18.7038, 85.7143 },
+    { 13.9419, 80.9524 },
+    { 9.18, 71.4286 },
+    { 9.18, 61.9048 },
+    { 13.9419, 52.381 },
+    { 32.9895, 42.8571 },
+    { 13.9419, 33.3333 },
+    { 9.18, 23.8095 },
+    { 9.18, 14.2857 },
+    { 13.9419, 4.7619 },
+    { 18.7038, 0 },
+    { 23.4657, -9.5238 },
+    { 23.4657, -19.0476 },
+    { 18.7038, -28.5714 },
+};
+
+static const CoordRec char125_stroke2[] = {
+    { 23.4657, 38.0952 },
+    { 13.9419, 28.5714 },
+    { 13.9419, 19.0476 },
+    { 18.7038, 9.5238 },
+    { 23.4657, 4.7619 },
+    { 28.2276, -4.7619 },
+    { 28.2276, -14.2857 },
+    { 23.4657, -23.8095 },
+    { 18.7038, -28.5714 },
+    { 9.18, -33.3333 },
+};
+
+static const StrokeRec char125[] = {
+   { 10, char125_stroke0 },
+   { 17, char125_stroke1 },
+   { 10, char125_stroke2 },
+};
+
+/* char: 126 '~' */
+
+static const CoordRec char126_stroke0[] = {
+    { 2.92, 28.5714 },
+    { 2.92, 38.0952 },
+    { 7.6819, 52.381 },
+    { 17.2057, 57.1429 },
+    { 26.7295, 57.1429 },
+    { 36.2533, 52.381 },
+    { 55.301, 38.0952 },
+    { 64.8248, 33.3333 },
+    { 74.3486, 33.3333 },
+    { 83.8724, 38.0952 },
+    { 88.6343, 47.619 },
+};
+
+static const CoordRec char126_stroke1[] = {
+    { 2.92, 38.0952 },
+    { 7.6819, 47.619 },
+    { 17.2057, 52.381 },
+    { 26.7295, 52.381 },
+    { 36.2533, 47.619 },
+    { 55.301, 33.3333 },
+    { 64.8248, 28.5714 },
+    { 74.3486, 28.5714 },
+    { 83.8724, 33.3333 },
+    { 88.6343, 47.619 },
+    { 88.6343, 57.1429 },
+};
+
+static const StrokeRec char126[] = {
+   { 11, char126_stroke0 },
+   { 11, char126_stroke1 },
+};
+
+/* char: 127 */
+
+static const CoordRec char127_stroke0[] = {
+    { 52.381, 100 },
+    { 14.2857, -33.3333 },
+};
+
+static const CoordRec char127_stroke1[] = {
+    { 28.5714, 66.6667 },
+    { 14.2857, 61.9048 },
+    { 4.7619, 52.381 },
+    { 0, 38.0952 },
+    { 0, 23.8095 },
+    { 4.7619, 14.2857 },
+    { 14.2857, 4.7619 },
+    { 28.5714, 0 },
+    { 38.0952, 0 },
+    { 52.381, 4.7619 },
+    { 61.9048, 14.2857 },
+    { 66.6667, 28.5714 },
+    { 66.6667, 42.8571 },
+    { 61.9048, 52.381 },
+    { 52.381, 61.9048 },
+    { 38.0952, 66.6667 },
+    { 28.5714, 66.6667 },
+};
+
+static const StrokeRec char127[] = {
+   { 2, char127_stroke0 },
+   { 17, char127_stroke1 },
+};
+
+static const StrokeCharRec chars[] = {
+    { 0, /* char0 */ 0, 0, 0 },
+    { 0, /* char1 */ 0, 0, 0 },
+    { 0, /* char2 */ 0, 0, 0 },
+    { 0, /* char3 */ 0, 0, 0 },
+    { 0, /* char4 */ 0, 0, 0 },
+    { 0, /* char5 */ 0, 0, 0 },
+    { 0, /* char6 */ 0, 0, 0 },
+    { 0, /* char7 */ 0, 0, 0 },
+    { 0, /* char8 */ 0, 0, 0 },
+    { 0, /* char9 */ 0, 0, 0 },
+    { 0, /* char10 */ 0, 0, 0 },
+    { 0, /* char11 */ 0, 0, 0 },
+    { 0, /* char12 */ 0, 0, 0 },
+    { 0, /* char13 */ 0, 0, 0 },
+    { 0, /* char14 */ 0, 0, 0 },
+    { 0, /* char15 */ 0, 0, 0 },
+    { 0, /* char16 */ 0, 0, 0 },
+    { 0, /* char17 */ 0, 0, 0 },
+    { 0, /* char18 */ 0, 0, 0 },
+    { 0, /* char19 */ 0, 0, 0 },
+    { 0, /* char20 */ 0, 0, 0 },
+    { 0, /* char21 */ 0, 0, 0 },
+    { 0, /* char22 */ 0, 0, 0 },
+    { 0, /* char23 */ 0, 0, 0 },
+    { 0, /* char24 */ 0, 0, 0 },
+    { 0, /* char25 */ 0, 0, 0 },
+    { 0, /* char26 */ 0, 0, 0 },
+    { 0, /* char27 */ 0, 0, 0 },
+    { 0, /* char28 */ 0, 0, 0 },
+    { 0, /* char29 */ 0, 0, 0 },
+    { 0, /* char30 */ 0, 0, 0 },
+    { 0, /* char31 */ 0, 0, 0 },
+    { 0, /* char32 */ 0, 35, 70 },  /* jwz: changed this to be 'n' width.
+                                       (it was 52.381, 104.762) */
+    { 2, char33, 13.3819, 26.6238 },
+    { 2, char34, 23.0676, 51.4352 },
+    { 4, char35, 36.5333, 79.4886 },
+    { 3, char36, 38.1533, 76.2067 },
+    { 3, char37, 49.2171, 96.5743 },
+    { 1, char38, 53.599, 101.758 },
+    { 1, char39, 4.44, 13.62 },
+    { 1, char40, 21.8657, 47.1733 },
+    { 1, char41, 24.3276, 47.5333 },
+    { 3, char42, 30.7695, 59.439 },
+    { 2, char43, 48.8371, 97.2543 },
+    { 1, char44, 13.5219, 26.0638 },
+    { 1, char45, 50.2371, 100.754 },
+    { 1, char46, 13.1019, 26.4838 },
+    { 1, char47, 40.5733, 82.1067 },
+    { 1, char48, 38.3133, 77.0667 },
+    { 1, char49, 30.8676, 66.5295 },
+    { 1, char50, 38.7533, 77.6467 },
+    { 1, char51, 38.3333, 77.0467 },
+    { 2, char52, 37.2133, 80.1686 },
+    { 1, char53, 38.1933, 77.6867 },
+    { 1, char54, 34.1514, 73.8048 },
+    { 2, char55, 38.8933, 77.2267 },
+    { 1, char56, 38.9333, 77.6667 },
+    { 1, char57, 39.9333, 74.0648 },
+    { 2, char58, 14.0819, 26.2238 },
+    { 2, char59, 12.9619, 26.3038 },
+    { 1, char60, 41.1552, 81.6105 },
+    { 2, char61, 48.5571, 97.2543 },
+    { 1, char62, 40.8752, 81.6105 },
+    { 2, char63, 36.9914, 73.9029 },
+    { 2, char64, 34.9314, 74.3648 },
+    { 3, char65, 40.5952, 80.4905 },
+    { 3, char66, 44.7533, 83.6267 },
+    { 1, char67, 39.9933, 84.4886 },
+    { 2, char68, 45.2933, 85.2867 },
+    { 4, char69, 39.9914, 78.1848 },
+    { 3, char70, 39.9914, 78.7448 },
+    { 2, char71, 40.3933, 89.7686 },
+    { 3, char72, 44.7533, 89.0867 },
+    { 1, char73, 10.86, 21.3 },
+    { 1, char74, 31.0714, 59.999 },
+    { 3, char75, 44.6133, 79.3267 },
+    { 2, char76, 40.2514, 71.3229 },
+    { 4, char77, 48.9552, 97.2105 },
+    { 3, char78, 44.4733, 88.8067 },
+    { 1, char79, 44.3352, 88.8305 },
+    { 2, char80, 45.4333, 85.6667 },
+    { 2, char81, 43.3952, 88.0905 },
+    { 3, char82, 45.0133, 82.3667 },
+    { 1, char83, 41.3333, 80.8267 },
+    { 2, char84, 35.6933, 71.9467 },
+    { 1, char85, 44.8733, 89.4867 },
+    { 2, char86, 40.4552, 81.6105 },
+    { 4, char87, 49.839, 100.518 },
+    { 2, char88, 35.8333, 72.3667 },
+    { 2, char89, 39.6152, 79.6505 },
+    { 3, char90, 35.8333, 73.7467 },
+    { 4, char91, 22.0657, 46.1133 },
+    { 1, char92, 39.1733, 78.2067 },
+    { 4, char93, 23.4876, 46.3933 },
+    { 2, char94, 44.0752, 90.2305 },
+    { 1, char95, 51.281, 104.062 },
+    { 2, char96, 42.5457, 83.5714 },
+    { 2, char97, 35.2514, 66.6029 },
+    { 2, char98, 37.3314, 70.4629 },
+    { 1, char99, 34.0914, 68.9229 },
+    { 2, char100, 33.2114, 70.2629 },
+    { 1, char101, 34.2914, 68.5229 },
+    { 2, char102, 14.9657, 38.6552 },
+    { 2, char103, 33.9314, 70.9829 },
+    { 2, char104, 33.4095, 71.021 },
+    { 2, char105, 14.7819, 28.8638 },
+    { 2, char106, 17.3876, 36.2314 },
+    { 3, char107, 33.4095, 62.521 },
+    { 1, char108, 10.02, 19.34 },
+    { 3, char109, 61.981, 123.962 },
+    { 2, char110, 32.9895, 70.881 },
+    { 1, char111, 33.5514, 71.7448 },
+    { 2, char112, 38.0314, 70.8029 },
+    { 2, char113, 33.4114, 70.7429 },
+    { 2, char114, 23.7457, 49.4952 },
+    { 1, char115, 28.5095, 62.321 },
+    { 2, char116, 14.8257, 39.3152 },
+    { 2, char117, 33.2695, 71.161 },
+    { 2, char118, 30.3714, 60.6029 },
+    { 4, char119, 40.5952, 80.4905 },
+    { 2, char120, 25.4695, 56.401 },
+    { 2, char121, 35.1333, 66.0648 },
+    { 3, char122, 28.2495, 61.821 },
+    { 3, char123, 21.6657, 41.6295 },
+    { 1, char124, 11.54, 23.78 },
+    { 3, char125, 18.7038, 41.4695 },
+    { 2, char126, 45.7771, 91.2743 },
+    { 2, char127, 33.3333, 66.6667 },
+};
+
+StrokeFontRec glutStrokeRoman = { "Roman", 128, chars, 119.048, -33.3333 };
+
diff --git a/hacks/glx/glut_stroke.c b/hacks/glx/glut_stroke.c
new file mode 100644 (file)
index 0000000..9cd46e0
--- /dev/null
@@ -0,0 +1,49 @@
+
+/* Copyright (c) Mark J. Kilgard, 1994. */
+
+/* This program is freely distributable without licensing fees
+   and is provided without guarantee or warrantee expressed or
+   implied. This program is -not- in the public domain. */
+
+#if 0   /* for Mesa */
+# include "glutint.h"
+#else   /* for xscreensaver */
+# include "config.h"
+# include <GL/gl.h>
+# define APIENTRY /**/
+#endif
+
+#include "glutstroke.h"
+
+void APIENTRY 
+glutStrokeCharacter(GLUTstrokeFont font, int c)
+{
+  const StrokeCharRec *ch;
+  const StrokeRec *stroke;
+  const CoordRec *coord;
+  StrokeFontPtr fontinfo;
+  int i, j;
+
+
+#if defined(_WIN32)
+  fontinfo = (StrokeFontPtr) __glutFont(font);
+#else
+  fontinfo = (StrokeFontPtr) font;
+#endif
+
+  if (c < 0 || c >= fontinfo->num_chars)
+    return;
+  ch = &(fontinfo->ch[c]);
+  if (ch) {
+    for (i = ch->num_strokes, stroke = ch->stroke;
+      i > 0; i--, stroke++) {
+      glBegin(GL_LINE_STRIP);
+      for (j = stroke->num_coords, coord = stroke->coord;
+        j > 0; j--, coord++) {
+        glVertex2f(coord->x, coord->y);
+      }
+      glEnd();
+    }
+    glTranslatef(ch->right, 0.0, 0.0);
+  }
+}
diff --git a/hacks/glx/glut_swidth.c b/hacks/glx/glut_swidth.c
new file mode 100644 (file)
index 0000000..0768586
--- /dev/null
@@ -0,0 +1,65 @@
+
+/* Copyright (c) Mark J. Kilgard, 1995. */
+
+/* This program is freely distributable without licensing fees 
+   and is provided without guarantee or warrantee expressed or 
+   implied. This program is -not- in the public domain. */
+
+#if 0   /* for Mesa */
+# include "glutint.h"
+#else   /* for xscreensaver */
+# include "config.h"
+# include <GL/gl.h>
+# define APIENTRY /**/
+#endif
+
+#include "glutstroke.h"
+
+/* CENTRY */
+int APIENTRY 
+glutStrokeWidth(GLUTstrokeFont font, int c)
+{
+  StrokeFontPtr fontinfo;
+  const StrokeCharRec *ch;
+
+#if defined(_WIN32)
+  fontinfo = (StrokeFontPtr) __glutFont(font);
+#else
+  fontinfo = (StrokeFontPtr) font;
+#endif
+
+  if (c < 0 || c >= fontinfo->num_chars)
+    return 0;
+  ch = &(fontinfo->ch[c]);
+  if (ch)
+    return ch->right;
+  else
+    return 0;
+}
+
+int APIENTRY 
+glutStrokeLength(GLUTstrokeFont font, const unsigned char *string)
+{
+  int c, length;
+  StrokeFontPtr fontinfo;
+  const StrokeCharRec *ch;
+
+#if defined(_WIN32)
+  fontinfo = (StrokeFontPtr) __glutFont(font);
+#else
+  fontinfo = (StrokeFontPtr) font;
+#endif
+
+  length = 0;
+  for (; *string != '\0'; string++) {
+    c = *string;
+    if (c >= 0 && c < fontinfo->num_chars) {
+      ch = &(fontinfo->ch[c]);
+      if (ch)
+        length += ch->right;
+    }
+  }
+  return length;
+}
+
+/* ENDCENTRY */
diff --git a/hacks/glx/glutstroke.h b/hacks/glx/glutstroke.h
new file mode 100644 (file)
index 0000000..43a645b
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef __glutstroke_h__
+#define __glutstroke_h__
+
+/* Copyright (c) Mark J. Kilgard, 1994. */
+
+/* This program is freely distributable without licensing fees 
+   and is provided without guarantee or warrantee expressed or 
+   implied. This program is -not- in the public domain. */
+
+#if defined(_WIN32)
+#pragma warning (disable:4244)  /* disable bogus conversion warnings */
+#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
+#endif
+
+typedef struct {
+  float x;
+  float y;
+} CoordRec, *CoordPtr;
+
+typedef struct {
+  int num_coords;
+  const CoordRec *coord;
+} StrokeRec, *StrokePtr;
+
+typedef struct {
+  int num_strokes;
+  const StrokeRec *stroke;
+  float center;
+  float right;
+} StrokeCharRec, *StrokeCharPtr;
+
+typedef struct {
+  const char *name;
+  int num_chars;
+  const StrokeCharRec *ch;
+  float top;
+  float bottom;
+} StrokeFontRec, *StrokeFontPtr;
+
+typedef void *GLUTstrokeFont;
+
+/* for xscreensaver */
+extern void glutStrokeCharacter (GLUTstrokeFont font, int c);
+extern int glutStrokeWidth (GLUTstrokeFont font, int c);
+extern int glutStrokeLength (GLUTstrokeFont font, const unsigned char *string);
+
+#endif /* __glutstroke_h__ */
index c12316a148251cbe2946f143db156c7d2238e855..97808a0c86d14509c7688b6b89c3c2b696351faf 100644 (file)
@@ -66,7 +66,7 @@ static const char sccsid[] = "@(#)stairs.c    4.07 97/11/24 xlockmore";
 # define HACK_DRAW                     draw_stairs
 # define stairs_opts           xlockmore_opts
 # define DEFAULTS                      "*cycles:               1       \n"                     \
-                                                       "*delay:                200000  \n"                     \
+                                                       "*delay:                20000   \n"                     \
                                                        "*wireframe:    False   \n"
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -108,6 +108,7 @@ typedef struct {
        Bool        direction;
        int         AreObjectsDefined[1];
        int         sphere_position;
+       int         sphere_tick;
        GLXContext *glx_context;
 } stairsstruct;
 
@@ -195,6 +196,8 @@ static float positions[] =
 
 #define NPOSITIONS ((sizeof positions) / (sizeof positions[0]))
 
+#define SPHERE_TICKS 8
+
 static stairsstruct *stairs = NULL;
 static GLuint objects;
 
@@ -313,15 +316,100 @@ draw_stairs_internal(ModeInfo * mi)
        glPushMatrix();
        glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialYellow);
 
-       glTranslatef((GLfloat) positions[sp->sphere_position],
-                    (GLfloat) positions[sp->sphere_position + 1],
-                    (GLfloat) positions[sp->sphere_position + 2]);
+    {
+      int pos  = sp->sphere_position;
+      int ppos = sp->sphere_position - 3;
+      int npos = sp->sphere_position + 3;
+      GLfloat spx, spy, spz;
+      GLfloat dx, dy, dz;
+      int div;
+
+      if (ppos < 0) ppos += NPOSITIONS;
+      if (npos >= NPOSITIONS) npos -= NPOSITIONS;
+
+      if (sp->sphere_tick < 0)
+        {
+          dx = positions[ppos]   - positions[pos];
+          dy = positions[ppos+1] - positions[pos+1];
+          dz = positions[ppos+2] - positions[pos+2];
+          div = SPHERE_TICKS + sp->sphere_tick;
+        }
+      else
+        {
+          dx = positions[npos]   - positions[pos];
+          dy = positions[npos+1] - positions[pos+1];
+          dz = positions[npos+2] - positions[ppos+2];
+          div = SPHERE_TICKS - sp->sphere_tick;
+        }
+        
+      spx = positions[pos];
+      spy = positions[pos+1];
+      spz = positions[pos+2];
+      if (div != 0)
+        {
+          spx += dx / div;
+          spy += dy / div;
+          spz += dz / div;
+        }
+
+
+      spy -= 0.5;   /* move the bottom of the ball closer to the stairs */
+
+
+#ifdef DEBUG
+      fprintf(stderr, "%3d %3d   %2.2f %2.2f %2.2f  %2.2f %2.2f %2.2f\n",
+              sp->sphere_position, sp->sphere_tick,
+              dx, dy, dz,
+              spx, spy, spz);
+
+      glBegin(GL_LINE_LOOP);   /* path 1 */
+      glVertex3f(positions[pos],  positions[pos+1],  positions[pos+2]);
+      glVertex3f(positions[npos], positions[npos+1], positions[npos+2]);
+      glEnd();
+
+      glBegin(GL_LINE_LOOP);   /* path 2 */
+      glVertex3f(positions[pos],  positions[pos+1],  positions[pos+2]);
+      glVertex3f(positions[ppos], positions[ppos+1], positions[ppos+2]);
+      glEnd();
+
+      glBegin(GL_LINE_LOOP);  /* base origin */
+      glVertex3f(positions[pos], positions[pos+1]-10, positions[pos+2]);
+      glVertex3f(positions[pos], positions[pos+1]+10, positions[pos+2]);
+      glEnd();
+
+      glBegin(GL_LINE_LOOP);  /* base origin */
+      glVertex3f(positions[pos]-10, positions[pos+1], positions[pos+2]);
+      glVertex3f(positions[pos]+10, positions[pos+1], positions[pos+2]);
+      glEnd();
+
+      glBegin(GL_LINE_LOOP);  /* base origin */
+      glVertex3f(positions[pos], positions[pos+1], positions[pos+2]-10);
+      glVertex3f(positions[pos], positions[pos+1], positions[pos+2]+10);
+      glEnd();
+#endif /* DEBUG */
+
+      glTranslatef(spx, spy, spz);
+
+#ifdef DEBUG  /* ball origin */
+      glBegin(GL_LINE_LOOP); glVertex3f(0,-2,0); glVertex3f(0,2,0); glEnd();
+      glBegin(GL_LINE_LOOP); glVertex3f(-2,0,0); glVertex3f(2,0,0); glEnd();
+      glBegin(GL_LINE_LOOP); glVertex3f(0,0,-2); glVertex3f(0,0,2); glEnd();
+#endif /* DEBUG */
+    }
+
        if (sp->sphere_position == 0)   /* FUDGE soo its not so obvious */
                mySphere(0.48);
        else
                mySphere(0.5);
        glPopMatrix();
-       sp->sphere_position += 3;
+
+    if (++sp->sphere_tick >= SPHERE_TICKS-1)
+      {
+        sp->sphere_tick = -(SPHERE_TICKS-2);
+        sp->sphere_position += 3;
+        sp->sphere_position += 3;
+      }
+
        if (sp->sphere_position >= NPOSITIONS)
                sp->sphere_position = 0;
 }
@@ -403,6 +491,7 @@ init_stairs(ModeInfo * mi)
        sp->step = 0.0;
        sp->direction = LRAND() & 1;
        sp->sphere_position = NRAND(NPOSITIONS / 3) * 3;
+       sp->sphere_tick = 0;
 
        if ((sp->glx_context = init_GL(mi)) != NULL) {
 
diff --git a/hacks/glx/starwars.c b/hacks/glx/starwars.c
new file mode 100644 (file)
index 0000000..afbefc8
--- /dev/null
@@ -0,0 +1,704 @@
+/*
+ * starwars, Copyright (c) 1998-2001 Jamie Zawinski <jwz@jwz.org> and
+ * Claudio Matauoka <claudio@helllabs.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ *
+ * Star Wars -- Phosphor meets a well-known scroller from a galaxy far,
+ *           far away. Hacked by Claudio Matsuoka. Includes portions of
+ *           mjk's GLUT library, Copyright (c) 1994, 1995, 1996 by Mark J.
+ *           Kilgard. Roman simplex stroke font Copyright (c) 1989, 1990,
+ *           1991 by Sun Microsystems, Inc. and the X Consortium.
+ *
+ *      Notes:
+ *         - I tried texturized fonts but the roman simplex stroke font
+ *           was the most readable for the 80-column text from fortune.
+ *         - The proportional font is bad for text from ps(1) or w(1).
+ *         - Apparently the RIVA TNT cards for PCs don't like the stars to
+ *           be drawn in orthogonal perspective, causing unnecessary system
+ *           load.
+ *
+ *      History:
+ *           20000221 claudio   First version
+ *           20010124 jwz       Rewrote large sections to add the ability to
+ *                              run a subprocess, customization of the font
+ *                              size and other parameters, etc.
+ */
+
+#include <X11/Intrinsic.h>
+
+extern XtAppContext app;
+
+#define PROGCLASS      "StarWars"
+#define HACK_INIT      init_sws
+#define HACK_DRAW      draw_sws
+#define sws_opts       xlockmore_opts
+
+#define DEF_PROGRAM    ZIPPY_PROGRAM
+#define DEF_LINES      "500"
+#define DEF_STEPS      "35"
+#define DEF_SPIN       "0.03"
+#define DEF_FONT_SIZE  "-1"
+#define DEF_COLUMNS    "-1"
+#define DEF_WRAP       "True"
+#define DEF_ALIGN      "Center"
+
+#define TAB_WIDTH        8
+
+#define BASE_FONT_SIZE    18 /* magic */
+#define BASE_FONT_COLUMNS 80 /* magic */
+
+
+#define DEFAULTS       "*delay:        40000 \n"                    \
+                       "*program:      " DEF_PROGRAM           "\n" \
+                       "*lines:        " DEF_LINES             "\n" \
+                       "*spin:         " DEF_SPIN              "\n" \
+                       "*steps:        " DEF_STEPS             "\n" \
+                       "*starwars.fontSize: " DEF_FONT_SIZE    "\n" \
+                       "*starwars.columns:  " DEF_COLUMNS      "\n" \
+                       "*starwars.lineWrap: " DEF_WRAP         "\n" \
+                       "*starwars.alignment:" DEF_ALIGN        "\n"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+
+#ifdef USE_GL /* whole file */
+
+#include <GL/glu.h>
+#include "glutstroke.h"
+#include "glut_roman.h"
+#define GLUT_FONT (&glutStrokeRoman)
+
+
+typedef struct {
+  GLXContext *glx_context;
+
+  GLuint text_list, star_list;
+
+  FILE *pipe;
+  XtInputId pipe_id;
+  Time subproc_relaunch_delay;
+
+  char buf [1024];
+  int buf_tail;
+  char **lines;
+  int total_lines;
+  int columns;
+
+  double star_theta;
+  double line_height;
+  double font_scale;
+  double intra_line_scroll;
+
+} sws_configuration;
+
+
+static sws_configuration *scs = NULL;
+
+static char *program;
+static int max_lines;
+static int scroll_steps;
+static float star_spin;
+static float font_size;
+static int target_columns;
+static int wrap_p;
+static char *alignment_str;
+static int alignment;
+
+static XrmOptionDescRec opts[] = {
+  {"-program",   ".starwars.program",  XrmoptionSepArg, (caddr_t) 0 },
+  {"-lines",     ".starwars.lines",    XrmoptionSepArg, (caddr_t) 0 },
+  {"-steps",     ".starwars.steps",    XrmoptionSepArg, (caddr_t) 0 },
+  {"-spin",      ".starwars.spin",     XrmoptionSepArg, (caddr_t) 0 },
+  {"-size",     ".starwars.fontSize", XrmoptionSepArg, (caddr_t) 0 },
+  {"-columns",  ".starwars.columns",  XrmoptionSepArg, (caddr_t) 0 },
+  {"-wrap",     ".starwars.lineWrap", XrmoptionNoArg,  (caddr_t) "True" },
+  {"-no-wrap",  ".starwars.lineWrap", XrmoptionNoArg,  (caddr_t) "False" },
+  {"-nowrap",   ".starwars.lineWrap", XrmoptionNoArg,  (caddr_t) "False" },
+  {"-left",      ".starwars.alignment",XrmoptionNoArg,  (caddr_t) "Left" },
+  {"-right",     ".starwars.alignment",XrmoptionNoArg,  (caddr_t) "Right" },
+  {"-center",    ".starwars.alignment",XrmoptionNoArg,  (caddr_t) "Center" },
+};
+
+static argtype vars[] = {
+  {(caddr_t *) &program,        "program", "Program", DEF_PROGRAM, t_String},
+  {(caddr_t *) &max_lines,      "lines",   "Integer", DEF_LINES,   t_Int},
+  {(caddr_t *) &scroll_steps,   "steps",   "Integer", DEF_STEPS,   t_Int},
+  {(caddr_t *) &star_spin,      "spin",    "Float",   DEF_SPIN,    t_Float},
+  {(caddr_t *) &font_size,      "fontSize","Float",   DEF_STEPS,   t_Float},
+  {(caddr_t *) &target_columns, "columns", "Integer", DEF_COLUMNS, t_Int},
+  {(caddr_t *) &wrap_p,         "lineWrap","Boolean", DEF_COLUMNS, t_Bool},
+  {(caddr_t *) &alignment_str,  "alignment","Alignment",DEF_ALIGN, t_String},
+};
+
+ModeSpecOpt sws_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+
+/* Tabs are bad, mmmkay? */
+
+static char *
+untabify (const char *string)
+{
+  char *result = (char *) malloc ((strlen(string) * 8) + 1);
+  char *out = result;
+  int col = 0;
+  while (*string)
+    {
+      if (*string == '\t')
+        {
+          do {
+            col++;
+            *out++ = ' ';
+          } while (col % TAB_WIDTH);
+          string++;
+        }
+      else if (*string == '\r' || *string == '\n')
+        {
+          *out++ = *string++;
+          col = 0;
+        }
+      else
+        {
+          *out++ = *string++;
+          col++;
+        }
+    }
+  *out = 0;
+  return result;
+}
+
+
+\f
+/* Subprocess.
+   (This bit mostly cribbed from phosphor.c)
+ */
+
+static void drain_input (sws_configuration *sc);
+
+static void
+subproc_cb (XtPointer closure, int *source, XtInputId *id)
+{
+  sws_configuration *sc = (sws_configuration *) closure;
+  drain_input (sc);
+}
+
+
+static void
+launch_text_generator (sws_configuration *sc)
+{
+  char *oprogram = get_string_resource ("program", "Program");
+  char *program = (char *) malloc (strlen (oprogram) + 10);
+
+  strcpy (program, "( ");
+  strcat (program, oprogram);
+  strcat (program, " ) 2>&1");
+
+  if ((sc->pipe = popen (program, "r")))
+    {
+      sc->pipe_id =
+        XtAppAddInput (app, fileno (sc->pipe),
+                       (XtPointer) (XtInputReadMask | XtInputExceptMask),
+                       subproc_cb, (XtPointer) sc);
+    }
+  else
+    {
+      perror (program);
+    }
+}
+
+
+static void
+relaunch_generator_timer (XtPointer closure, XtIntervalId *id)
+{
+  sws_configuration *sc = (sws_configuration *) closure;
+  launch_text_generator (sc);
+}
+
+
+/* When the subprocess has generated some output, this reads as much as it
+   can into sc->buf at sc->buf_tail.
+ */
+static void
+drain_input (sws_configuration *sc)
+{
+  if (sc->buf_tail < sizeof(sc->buf) - 2)
+    {
+      int target = sizeof(sc->buf) - sc->buf_tail - 2;
+      int n = read (fileno (sc->pipe),
+                    (void *) (sc->buf + sc->buf_tail),
+                    target);
+      if (n > 0)
+        {
+          sc->buf_tail += n;
+          sc->buf[sc->buf_tail] = 0;
+        }
+      else
+        {
+          XtRemoveInput (sc->pipe_id);
+          sc->pipe_id = 0;
+          pclose (sc->pipe);
+          sc->pipe = 0;
+
+          /* If the process didn't print a terminating newline, add one. */
+          if (sc->buf_tail > 1 &&
+              sc->buf[sc->buf_tail-1] != '\n')
+            {
+              sc->buf[sc->buf_tail++] = '\n';
+              sc->buf[sc->buf_tail] = 0;
+            }
+
+          /* Then add one more, just for giggles. */
+          sc->buf[sc->buf_tail++] = '\n';
+          sc->buf[sc->buf_tail] = 0;
+
+          /* Set up a timer to re-launch the subproc in a bit. */
+          XtAppAddTimeOut (app, sc->subproc_relaunch_delay,
+                           relaunch_generator_timer,
+                           (XtPointer) sc);
+        }
+    }
+}
+
+
+/* Populates the sc->lines list with as many lines as are currently in
+   sc->buf (which was filled by drain_input().
+ */
+static void
+get_more_lines (sws_configuration *sc)
+{
+  int col = 0;
+  char *s = sc->buf;
+  while (sc->total_lines < max_lines)
+    {
+      if (s >= sc->buf + sc->buf_tail)
+        {
+          /* Reached end of buffer before end of line.  Bail. */
+          return;
+        }
+
+      if (*s == '\n' || col > sc->columns)
+        {
+          int L = s - sc->buf;
+
+          if (*s == '\n')
+            *s++ = 0;
+          else
+            {
+              /* We wrapped -- try to back up to the previous word boundary. */
+              char *s2 = s;
+              int n = 0;
+              while (s2 > sc->buf && *s2 != ' ' && *s2 != '\t')
+                s2--, n++;
+              if (s2 > sc->buf)
+                {
+                  s = s2;
+                  *s++ = 0;
+                  L = s - sc->buf;
+                }
+            }
+
+          sc->lines[sc->total_lines] = (char *) malloc (L+1);
+          memcpy (sc->lines[sc->total_lines], sc->buf, L);
+          sc->lines[sc->total_lines][L] = 0;
+
+          {
+            char *t = sc->lines[sc->total_lines];
+            char *ut = untabify (t);
+            sc->lines[sc->total_lines] = ut;
+            free (t);
+          }
+
+          sc->total_lines++;
+
+          if (sc->buf_tail > (s - sc->buf))
+            {
+              int i = sc->buf_tail - (s - sc->buf);
+              memcpy (sc->buf, s, i);
+              sc->buf_tail = i;
+              sc->buf[sc->buf_tail] = 0;
+            }
+          else
+            {
+              sc->buf_tail = 0;
+            }
+
+          sc->buf[sc->buf_tail] = 0;
+          s = sc->buf;
+          col = 0;
+        }
+      else
+        {
+          col++;
+          if (*s == '\t')
+            col = TAB_WIDTH * ((col / TAB_WIDTH) + 1);
+          s++;
+        }
+    }
+}
+
+
+static void
+draw_string (int x, int y, const char *s)
+{
+  if (!s || !*s) return;
+  glPushMatrix ();
+  glTranslatef (x, y, 0);
+  while (*s)
+    glutStrokeCharacter (GLUT_FONT, *s++);
+  glPopMatrix ();
+}
+
+
+#if 0
+static void
+grid (double width, double height, double spacing, double z)
+{
+  double x, y;
+  for (y = 0; y <= height/2; y += spacing)
+    {
+      glBegin(GL_LINE_LOOP);
+      glVertex3f(-width/2,  y, z);
+      glVertex3f( width/2,  y, z);
+      glEnd();
+      glBegin(GL_LINE_LOOP);
+      glVertex3f(-width/2, -y, z);
+      glVertex3f( width/2, -y, z);
+      glEnd();
+    }
+  for (x = 0; x <= width/2; x += spacing)
+    {
+      glBegin(GL_LINE_LOOP);
+      glVertex3f( x, -height/2, z);
+      glVertex3f( x,  height/2, z);
+      glEnd();
+      glBegin(GL_LINE_LOOP);
+      glVertex3f(-x, -height/2, z);
+      glVertex3f(-x,  height/2, z);
+      glEnd();
+    }
+
+  glBegin(GL_LINE_LOOP);
+  glVertex3f(-width, 0, z);
+  glVertex3f( width, 0, z);
+  glEnd();
+  glBegin(GL_LINE_LOOP);
+  glVertex3f(0, -height, z);
+  glVertex3f(0,  height, z);
+  glEnd();
+}
+
+static void
+box (double width, double height, double depth)
+{
+  glBegin(GL_LINE_LOOP);
+  glVertex3f(-width/2,  -height/2, -depth/2);
+  glVertex3f(-width/2,   height/2, -depth/2);
+  glVertex3f( width/2,   height/2, -depth/2);
+  glVertex3f( width/2,  -height/2, -depth/2);
+  glEnd();
+  glBegin(GL_LINE_LOOP);
+  glVertex3f(-width/2,  -height/2,  depth/2);
+  glVertex3f(-width/2,   height/2,  depth/2);
+  glVertex3f( width/2,   height/2,  depth/2);
+  glVertex3f( width/2,  -height/2,  depth/2);
+  glEnd();
+  glBegin(GL_LINE_LOOP);
+  glVertex3f(-width/2,  -height/2, -depth/2);
+  glVertex3f(-width/2,  -height/2,  depth/2);
+  glVertex3f(-width/2,   height/2,  depth/2);
+  glVertex3f(-width/2,   height/2, -depth/2);
+  glEnd();
+  glBegin(GL_LINE_LOOP);
+  glVertex3f( width/2,  -height/2, -depth/2);
+  glVertex3f( width/2,  -height/2,  depth/2);
+  glVertex3f( width/2,   height/2,  depth/2);
+  glVertex3f( width/2,   height/2, -depth/2);
+  glEnd();
+
+  glEnd();
+  glBegin(GL_LINE_LOOP);
+  glVertex3f(-width/2,   height/2,  depth/2);
+  glVertex3f(-width/2,  -height/2, -depth/2);
+  glEnd();
+  glBegin(GL_LINE_LOOP);
+  glVertex3f( width/2,   height/2,  depth/2);
+  glVertex3f( width/2,  -height/2, -depth/2);
+  glEnd();
+  glBegin(GL_LINE_LOOP);
+  glVertex3f(-width/2,  -height/2,  depth/2);
+  glVertex3f(-width/2,   height/2, -depth/2);
+  glEnd();
+  glBegin(GL_LINE_LOOP);
+  glVertex3f( width/2,  -height/2,  depth/2);
+  glVertex3f( width/2,   height/2, -depth/2);
+  glEnd();
+}
+#endif /* 0 */
+
+
+/* Window management, etc
+ */
+static void
+reshape (sws_configuration *sc, int width, int height)
+{
+  static Bool stars_done = False;
+
+  glViewport (0, 0, (GLint) width, (GLint) height);
+  if (!stars_done)
+    {
+      int i;
+      int nstars = width * height / 320;
+      glDeleteLists (sc->star_list, 1);
+      sc->star_list = glGenLists (1);
+      glNewList (sc->star_list, GL_COMPILE);
+      glBegin (GL_POINTS);
+      for (i = 0; i < nstars; i++)
+        {
+          GLfloat c = 0.6 + 0.3 * random() / RAND_MAX;
+          glColor3f (c, c, c);
+          glVertex3f (2 * width  * (0.5 - 1.0 * random() / RAND_MAX),
+                      2 * height * (0.5 - 1.0 * random() / RAND_MAX),
+                      0.0);
+        }
+      glEnd ();
+      glEndList ();
+      stars_done = True;
+    }
+}
+
+
+static void
+gl_init (ModeInfo *mi)
+{
+  sws_configuration *sc = &scs[MI_SCREEN(mi)];
+
+  program = get_string_resource ("program", "Program");
+
+  glMatrixMode (GL_MODELVIEW);
+
+  glDisable (GL_LIGHTING);
+  glDisable (GL_DEPTH_TEST);
+
+  sc->text_list = glGenLists (1);
+  glNewList (sc->text_list, GL_COMPILE);
+  glEndList ();
+
+  sc->star_list = glGenLists (1);
+  glNewList (sc->star_list, GL_COMPILE);
+  glEndList ();
+}
+
+
+void 
+init_sws (ModeInfo *mi)
+{
+  double font_height;
+
+  sws_configuration *sc;
+
+  if (!scs) {
+    scs = (sws_configuration *)
+      calloc (MI_NUM_SCREENS(mi), sizeof (sws_configuration));
+    if (!scs) {
+      fprintf(stderr, "%s: out of memory\n", progname);
+      exit(1);
+    }
+
+    sc = &scs[MI_SCREEN(mi)];
+    sc->lines = (char **) calloc (max_lines+1, sizeof(char *));
+  }
+
+  sc = &scs[MI_SCREEN(mi)];
+
+  if ((sc->glx_context = init_GL(mi)) != NULL) {
+    gl_init(mi);
+    reshape(sc, MI_WIDTH(mi), MI_HEIGHT(mi));
+  }
+
+
+
+  font_height = GLUT_FONT->top - GLUT_FONT->bottom;
+  sc->font_scale = 1.0 / glutStrokeWidth (GLUT_FONT, 'z');   /* 'n' seems
+                                                                too wide */
+  if (target_columns > 0)
+    {
+      sc->columns = target_columns;
+    }
+  else
+    {
+      if (font_size <= 0)
+        font_size = BASE_FONT_SIZE;
+      sc->columns = BASE_FONT_COLUMNS * ((double) BASE_FONT_SIZE / font_size);
+    }
+
+  sc->font_scale /= sc->columns;
+  sc->line_height = font_height * sc->font_scale;
+
+
+  if (!wrap_p) sc->columns = 1000;  /* wrap anyway, if it's absurdly long. */
+
+  sc->subproc_relaunch_delay = 2 * 1000;
+  sc->total_lines = max_lines-1;
+  launch_text_generator (sc);
+
+  if (random() & 1)
+    star_spin = -star_spin;
+
+  if (!alignment_str || !*alignment_str ||
+      !strcasecmp(alignment_str, "left"))
+    alignment = -1;
+  else if (!strcasecmp(alignment_str, "center") ||
+           !strcasecmp(alignment_str, "middle"))
+    alignment = 0;
+  else if (!strcasecmp(alignment_str, "right"))
+    alignment = 1;
+  else
+    {
+      fprintf (stderr,
+               "%s: alignment must be left, center, or right, not \"%s\"\n",
+               progname, alignment_str);
+      exit (1);
+    }
+}
+
+
+void
+draw_sws (ModeInfo *mi)
+{
+  sws_configuration *sc = &scs[MI_SCREEN(mi)];
+  Display *dpy = MI_DISPLAY(mi);
+  Window window = MI_WINDOW(mi);
+  int i;
+
+  if (!sc->glx_context)
+    return;
+
+  if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
+    XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput);
+
+  glDrawBuffer (GL_BACK);
+  glXMakeCurrent (dpy, window, *(sc->glx_context));
+
+  glClear (GL_COLOR_BUFFER_BIT);
+
+  glPushMatrix ();
+
+  glMatrixMode (GL_PROJECTION);
+  glLoadIdentity ();
+  glOrtho (-0.5 * MI_WIDTH(mi),  0.5 * MI_WIDTH(mi),
+           -0.5 * MI_HEIGHT(mi), 0.5 * MI_HEIGHT(mi),
+           -100.0, 100.0);
+  glRotatef (sc->star_theta, 0.0, 0.0, 1.0);
+  glCallList (sc->star_list);
+
+  glLoadIdentity ();
+  gluPerspective (80.0, 4.0/3.0, 10, 500000);
+  glMatrixMode (GL_MODELVIEW);
+  gluLookAt (0.0, 0.0, 4600.0,
+             0.0, 0.0, 0.0,
+             0.0, 1.0, 0.0);
+
+  glRotatef (-60.0, 1.0, 0.0, 0.0);
+
+  /* The above gives us an arena where the bottom edge of the screen is
+     represented by the line (-2100,-3140,0) - ( 2100,-3140,0). */
+
+  /* Now let's move the origin to the front of the screen. */
+  glTranslatef (0.0, -3140, 0.0);
+
+  /* And then let's scale so that the bottom of the screen is 1.0 wide. */
+  glScalef (4200, 4200, 4200);
+
+  /* Scroll to current position */
+  glTranslatef (0.0, sc->intra_line_scroll, 0.0);
+
+  glColor3f (1.0, 1.0, 0.4);
+  glCallList (sc->text_list);
+
+  sc->intra_line_scroll += sc->line_height / scroll_steps;
+
+  if (sc->intra_line_scroll >= sc->line_height)
+    {
+      static time_t reshape_time = 0;
+      time_t now = time((time_t) 0);
+      if (reshape_time != now)  /* only poll for reshape once a second */
+        {
+          reshape_time = now;
+          XGetWindowAttributes (dpy, window, &mi->xgwa);
+          reshape(sc, MI_WIDTH(mi), MI_HEIGHT(mi));
+        }
+
+      sc->intra_line_scroll = 0;
+
+      /* Drop the oldest line off the end. */
+      if (sc->lines[0])
+        free (sc->lines[0]);
+
+      /* Scroll the contents of the lines array toward 0. */
+      if (sc->total_lines > 0)
+        {
+          for (i = 1; i < sc->total_lines; i++)
+            sc->lines[i-1] = sc->lines[i];
+          sc->lines[--sc->total_lines] = 0;
+        }
+
+      /* Bring in new lines at the end. */
+      get_more_lines (sc);
+
+      if (sc->total_lines < max_lines)
+        /* Oops, we ran out of text... well, insert some blank lines
+           here so that new text still pulls in from the bottom of
+           the screen, isntead of just appearing. */
+        sc->total_lines = max_lines;
+
+      glDeleteLists (sc->text_list, 1);
+      sc->text_list = glGenLists (1);
+      glNewList (sc->text_list, GL_COMPILE);
+      glPushMatrix ();
+      glScalef (sc->font_scale, sc->font_scale, sc->font_scale);
+      for (i = 0; i < sc->total_lines; i++)
+        {
+          int offscreen_lines = 3;
+
+          double x = -0.5;
+          double y =  ((sc->total_lines - (i + offscreen_lines) - 1)
+                       * sc->line_height);
+          double xoff = 0;
+          char *line = sc->lines[i];
+#if 0
+          char n[20];
+          sprintf(n, "%d:", i);
+          draw_string (x / sc->font_scale, y / sc->font_scale, n);
+#endif
+          if (!line || !*line)
+            continue;
+
+          if (alignment >= 0)
+            xoff = 1.0 - (glutStrokeLength(GLUT_FONT, line) * sc->font_scale);
+          if (alignment == 0)
+            xoff /= 2;
+
+          draw_string ((x + xoff) / sc->font_scale, y / sc->font_scale, line);
+        }
+      glPopMatrix ();
+      glEndList ();
+    }
+
+  glPopMatrix ();
+
+  glFinish();
+  glXSwapBuffers(dpy, window);
+
+  sc->star_theta += star_spin;
+}
+
+#endif /* USE_GL */
diff --git a/hacks/glx/starwars.man b/hacks/glx/starwars.man
new file mode 100644 (file)
index 0000000..a832296
--- /dev/null
@@ -0,0 +1,137 @@
+.de EX         \"Begin example
+.ne 5
+.if n .sp 1
+.if t .sp .5
+.nf
+.in +.5i
+..
+.de EE
+.fi
+.in -.5i
+.if n .sp 1
+.if t .sp .5
+..
+.TH XScreenSaver 1 "25-Jul-98" "X Version 11"
+.SH NAME
+starwars - draws a perspective text crawl, like at the beginning of the movie
+.SH SYNOPSIS
+.B starwars
+[\-display \fIhost:display.screen\fP] [\-window] [\-root]
+[\-visual \fIvisual\fP] 
+[\-program \fIcommand\fP]
+[\-size \fIinteger\fP ]
+[\-columns \fIinteger\fP]
+[\-wrap | \-no\-wrap]
+[\-left | \-center | \-right]
+[\-lines \fIinteger\fP]
+[\-spin \fIfloat\fP]
+[\-steps \fIinteger\fP]
+[\-delay \fIusecs\fP]
+.SH DESCRIPTION
+The \fIstarwars\fP program runs another program to generate a stream of
+text, then animates that text receeding into the background at an angle,
+in front of a star field.
+.SH OPTIONS
+.I starwars
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use.  Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-program \fIsh-command\fP
+The command to run to generate the text to display.  This option may be
+any string acceptable to /bin/sh.  The program will be run at the end of
+a pipe, and any characters that it prints to \fIstdout\fP will be printed
+on the starwars window.  If the program exits, it will be launched again
+after we have processed all the text it produced.
+
+Note that starwars is \fInot\fP a terminal emulator: programs that try to
+directly address the screen will not do what you might expect.  This
+program merely draws the characters on the screen left to right, top 
+to bottom, in perspective.  Lines (may) wrap when they reach the right 
+edge.
+
+In other words, programs like
+.BR fortune (1)
+will work, but programs like
+.BR top (1)
+won't.
+
+Some examples:
+.EX
+starwars -columns 30 -program \\
+  'wget -qO- http://webcrawler.com/cgi-bin/SearchTicker'
+starwars -columns 76 -program 'cat /usr/src/linux/README'
+starwars -program 'ping www.starwars.com'
+starwars -no-wrap -left -program 'finger @gnu.org'
+starwars -no-wrap -left -program 'ps -ef'
+.EE
+.TP 8
+.B \-size \fIinteger\fP
+How large a font to use, in points.  (Well, in some arbitrary unit 
+we're calling "points" for the sake of argument.)  The \fB\-columns\fP
+option overrides this.
+.TP 8
+.B \-columns \fIinteger\fP
+How many columns of text should be visible on the bottom line of the
+screen.  The default is 80.  This option overrides the \fB\-size\fP
+option: if you specify a number of columns, the font will be scaled
+as needed to fit.
+.TP 8
+.B \-wrap
+Word-wrap lines when they reach the rightmost column.  This is the default.
+.TP 8
+.B \-no\-wrap
+Do not word-wrap: just let the lines go off the right side of the screen.
+.TP 8
+.B \-left | \-center | \-right
+Whether to align the text flush left, centered, or flush right.
+The default is centered.
+.TP 8
+.B \-lines \fIinteger\fP
+How many lines should be allowed to be on the screen before they fall off
+the end.  The default is 500.
+.TP 8
+.B \-spin \fIfloat\fP
+The star field on the background slowly rotates.  This is how fast.
+The default is 0.03.
+.TP 8
+.B \-steps \fIinteger\fP
+How many steps should be used to scroll a single line.  The default is 35.
+If the animation looks jerky to you, increase this number.
+.TP 8
+.B \-delay \fIusecs\fP
+The delay between steps of the animation; default is 40000 (1/25th second.)
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 1998-2001 by Jamie Zawinski and Claudio Matauoka.
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation.  No representations are made about the
+suitability of this software for any purpose.  It is provided "as is"
+without express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski <jwz@jwz.org> and Claudio Matauoka <claudio@helllabs.org>
diff --git a/hacks/glx/stonerview-move.c b/hacks/glx/stonerview-move.c
new file mode 100644 (file)
index 0000000..eeba12a
--- /dev/null
@@ -0,0 +1,172 @@
+/* StonerView: An eccentric visual toy.
+   Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com)
+
+   Permission to use, copy, modify, distribute, and sell this software and its
+   documentation for any purpose is hereby granted without fee, provided that
+   the above copyright notice appear in all copies and that both that
+   copyright notice and this permission notice appear in supporting
+   documentation.  No representations are made about the suitability of this
+   software for any purpose.  It is provided "as is" without express or 
+   implied warranty.
+*/
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <GL/gl.h>
+
+#include "yarandom.h"
+#include "stonerview-osc.h"
+#include "stonerview-move.h"
+
+/* The list of polygons. This is filled in by move_increment(), and rendered
+   by perform_render(). */
+elem_t elist[NUM_ELS];
+
+/* The polygons are controlled by four parameters. Each is represented by
+   an osc_t object, which is just something that returns a stream of numbers.
+   (Originally the name stood for "oscillator", but it does ever so much more
+   now... see osc.c.)
+   Imagine a cylinder with a vertical axis (along the Z axis), stretching from
+   Z=1 to Z=-1, and a radius of 1.
+*/
+static osc_t *theta = NULL; /* Angle around the axis. This is expressed in
+   hundredths of a degree, so it's actually 0 to 36000. */
+static osc_t *rad = NULL; /* Distance from the axis. This goes up to 1000,
+   but we actually allow negative distances -- that just goes to the opposite
+   side of the circle -- so the range is really -1000 to 1000. */
+static osc_t *alti = NULL; /* Height (Z position). This goes from -1000 to 
+   1000. */
+static osc_t *color = NULL; /* Consider this to be an angle of a circle going 
+   around the color wheel. It's in tenths of a degree (consistency is all I 
+   ask) so it ranges from 0 to 3600. */
+/* static GLint prevtime = 0; / * for timing */
+
+int init_move()
+{
+  /*theta = new_osc_linear(
+    new_osc_wrap(0, 36000, 25),
+    new_osc_constant(2000));*/
+    
+  theta = new_osc_linear(
+    new_osc_velowrap(0, 36000, new_osc_multiplex(
+      new_osc_randphaser(300, 600),
+      new_osc_constant(25),
+      new_osc_constant(75),
+      new_osc_constant(50),
+      new_osc_constant(100))
+    ),
+        
+    new_osc_multiplex(
+      new_osc_buffer(new_osc_randphaser(300, 600)),
+      new_osc_buffer(new_osc_wrap(0, 36000, 10)),
+      new_osc_buffer(new_osc_wrap(0, 36000, -8)),
+      new_osc_wrap(0, 36000, 4),
+      new_osc_buffer(new_osc_bounce(-2000, 2000, 20))
+      )
+    );
+        
+  rad = new_osc_buffer(new_osc_multiplex(
+    new_osc_randphaser(250, 500),
+    new_osc_bounce(-1000, 1000, 10),
+    new_osc_bounce(  200, 1000, -15),
+    new_osc_bounce(  400, 1000, 10),
+    new_osc_bounce(-1000, 1000, -20)));
+  /*rad = new_osc_constant(1000);*/
+    
+  alti = new_osc_linear(
+    new_osc_constant(-1000),
+    new_osc_constant(2000 / NUM_ELS));
+
+  /*alti = new_osc_multiplex(
+    new_osc_buffer(new_osc_randphaser(60, 270)),
+    new_osc_buffer(new_osc_bounce(-1000, 1000, 48)),
+    new_osc_linear(
+      new_osc_constant(-1000),
+      new_osc_constant(2000 / NUM_ELS)),
+    new_osc_buffer(new_osc_bounce(-1000, 1000, 27)),
+      new_osc_linear(
+      new_osc_constant(-1000),
+      new_osc_constant(2000 / NUM_ELS))
+    );*/
+    
+  /*color = new_osc_buffer(new_osc_randphaser(5, 35));*/
+    
+  /*color = new_osc_buffer(new_osc_multiplex(
+    new_osc_randphaser(25, 70),
+    new_osc_wrap(0, 3600, 20),
+    new_osc_wrap(0, 3600, 30),
+    new_osc_wrap(0, 3600, -20),
+    new_osc_wrap(0, 3600, 10)));*/
+  color = new_osc_multiplex(
+    new_osc_buffer(new_osc_randphaser(150, 300)),
+    new_osc_buffer(new_osc_wrap(0, 3600, 13)),
+    new_osc_buffer(new_osc_wrap(0, 3600, 32)),
+    new_osc_buffer(new_osc_wrap(0, 3600, 17)),
+    new_osc_buffer(new_osc_wrap(0, 3600, 7)));
+
+  move_increment();
+
+  return 1;
+}
+
+void final_move()
+{
+}
+
+/* Set up the list of polygon data for rendering. */
+void move_increment()
+{
+  int ix, val;
+/*  GLfloat fval; */
+/*  GLfloat recipels = (1.0 / (GLfloat)NUM_ELS); */
+  GLfloat pt[2];
+  GLfloat ptrad, pttheta;
+    
+  for (ix=0; ix<NUM_ELS; ix++) {
+    elem_t *el = &elist[ix];
+        
+    /* Grab r and theta... */
+    val = osc_get(theta, ix);
+    pttheta = val * (0.01 * M_PI / 180.0); 
+    ptrad = (GLfloat)osc_get(rad, ix) * 0.001;
+    /* And convert them to x,y coordinates. */
+    pt[0] = ptrad * cos(pttheta);
+    pt[1] = ptrad * sin(pttheta);
+        
+    /* Set x,y,z. */
+    el->pos[0] = pt[0];
+    el->pos[1] = pt[1];
+    el->pos[2] = (GLfloat)osc_get(alti, ix) * 0.001;
+        
+    /* Set which way the square is rotated. This is fixed for now, although
+       it would be trivial to make the squares spin as they revolve. */
+    el->vervec[0] = 0.11;
+    el->vervec[1] = 0.0;
+        
+    /* Grab the color, and convert it to RGB values. Technically, we're
+       converting an HSV value to RGB, where S and V are always 1. */
+    val = osc_get(color, ix);
+    if (val < 1200) {
+      el->col[0] = ((GLfloat)val / 1200.0);
+      el->col[1] = 0;
+      el->col[2] = (GLfloat)(1200 - val) / 1200.0;
+    } 
+    else if (val < 2400) {
+      el->col[0] = (GLfloat)(2400 - val) / 1200.0;
+      el->col[1] = ((GLfloat)(val - 1200) / 1200.0);
+      el->col[2] = 0;
+    }
+    else {
+      el->col[0] = 0;
+      el->col[1] = (GLfloat)(3600 - val) / 1200.0;
+      el->col[2] = ((GLfloat)(val - 2400) / 1200.0);
+    }
+    el->col[3] = 1.0;
+  }
+    
+  osc_increment();
+}
+
diff --git a/hacks/glx/stonerview-move.h b/hacks/glx/stonerview-move.h
new file mode 100644 (file)
index 0000000..2d0646c
--- /dev/null
@@ -0,0 +1,23 @@
+/* StonerView: An eccentric visual toy.
+   Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com)
+
+   Permission to use, copy, modify, distribute, and sell this software and its
+   documentation for any purpose is hereby granted without fee, provided that
+   the above copyright notice appear in all copies and that both that
+   copyright notice and this permission notice appear in supporting
+   documentation.  No representations are made about the suitability of this
+   software for any purpose.  It is provided "as is" without express or 
+   implied warranty.
+*/
+
+typedef struct elem_struct {
+  GLfloat pos[3];
+  GLfloat vervec[2];
+  GLfloat col[4];
+} elem_t;
+
+extern elem_t elist[];
+
+extern int init_move(void);
+extern void final_move(void);
+extern void move_increment(void);
diff --git a/hacks/glx/stonerview-osc.c b/hacks/glx/stonerview-osc.c
new file mode 100644 (file)
index 0000000..5c09306
--- /dev/null
@@ -0,0 +1,341 @@
+/* StonerView: An eccentric visual toy.
+   Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com)
+
+   Permission to use, copy, modify, distribute, and sell this software and its
+   documentation for any purpose is hereby granted without fee, provided that
+   the above copyright notice appear in all copies and that both that
+   copyright notice and this permission notice appear in supporting
+   documentation.  No representations are made about the suitability of this
+   software for any purpose.  It is provided "as is" without express or 
+   implied warranty.
+*/
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "yarandom.h"
+#include "stonerview-osc.h"
+
+/* A private linked list of all osc_t objects created. New objects are added
+   to the end of the list, not the beginning. */
+static osc_t *oscroot = NULL;
+static osc_t **osctail = &oscroot;
+
+static int rand_range(int min, int max);
+
+/* Create a new, blank osc_t. The caller must fill in the type data. */
+static osc_t *create_osc(int type)
+{
+  osc_t *osc = (osc_t *)malloc(sizeof(osc_t));
+  if (!osc) 
+    return NULL;
+        
+  osc->type = type;
+  osc->next = NULL;
+    
+  *osctail = osc;
+  osctail = &(osc->next);
+    
+  return osc;
+}
+
+/* Creation functions for all the osc_t types. These are all pretty obvious
+   in their construction. */
+
+osc_t *new_osc_constant(int val)
+{
+  osc_t *osc = create_osc(otyp_Constant);
+  if (!osc)
+    return NULL;
+        
+  osc->u.oconstant.val = val;
+  return osc;
+}
+
+osc_t *new_osc_bounce(int min, int max, int step)
+{
+  int diff;
+  osc_t *osc = create_osc(otyp_Bounce);
+  if (!osc)
+    return NULL;
+        
+  osc->u.obounce.min = min;
+  osc->u.obounce.max = max;
+  osc->u.obounce.step = step;
+    
+  /* Pick a random initial value between min and max. */
+  if (step < 0)
+    step = (-step);
+  diff = (max-min) / step;
+  osc->u.obounce.val = min + step * rand_range(0, diff-1);
+    
+  return osc;
+}
+
+osc_t *new_osc_wrap(int min, int max, int step)
+{
+  int diff;
+  osc_t *osc = create_osc(otyp_Wrap);
+  if (!osc)
+    return NULL;
+        
+  osc->u.owrap.min = min;
+  osc->u.owrap.max = max;
+  osc->u.owrap.step = step;
+    
+  /* Pick a random initial value between min and max. */
+  if (step < 0)
+    step = (-step);
+  diff = (max-min) / step;
+  osc->u.owrap.val = min + step * rand_range(0, diff-1);
+    
+  return osc;
+}
+
+osc_t *new_osc_velowrap(int min, int max, osc_t *step)
+{
+  osc_t *osc = create_osc(otyp_VeloWrap);
+  if (!osc)
+    return NULL;
+        
+  osc->u.ovelowrap.min = min;
+  osc->u.ovelowrap.max = max;
+  osc->u.ovelowrap.step = step;
+    
+  /* Pick a random initial value between min and max. */
+  osc->u.ovelowrap.val = rand_range(min, max);
+    
+  return osc;
+}
+
+osc_t *new_osc_multiplex(osc_t *sel, osc_t *ox0, osc_t *ox1, osc_t *ox2, osc_t *ox3)
+{
+  osc_t *osc = create_osc(otyp_Multiplex);
+  if (!osc)
+    return NULL;
+    
+  osc->u.omultiplex.sel = sel;
+  osc->u.omultiplex.val[0] = ox0;
+  osc->u.omultiplex.val[1] = ox1;
+  osc->u.omultiplex.val[2] = ox2;
+  osc->u.omultiplex.val[3] = ox3;
+    
+  return osc;
+}
+
+osc_t *new_osc_phaser(int phaselen)
+{
+  osc_t *osc = create_osc(otyp_Phaser);
+  if (!osc)
+    return NULL;
+        
+  osc->u.ophaser.phaselen = phaselen;
+
+  osc->u.ophaser.count = 0;
+  /* Pick a random phase to start in. */
+  osc->u.ophaser.curphase = rand_range(0, NUM_PHASES-1);
+
+  return osc;
+}
+
+osc_t *new_osc_randphaser(int minphaselen, int maxphaselen)
+{
+  osc_t *osc = create_osc(otyp_RandPhaser);
+  if (!osc)
+    return NULL;
+        
+  osc->u.orandphaser.minphaselen = minphaselen;
+  osc->u.orandphaser.maxphaselen = maxphaselen;
+
+  osc->u.orandphaser.count = 0;
+  /* Pick a random phaselen to start with. */
+  osc->u.orandphaser.curphaselen = rand_range(minphaselen, maxphaselen);
+  /* Pick a random phase to start in. */
+  osc->u.orandphaser.curphase = rand_range(0, NUM_PHASES-1);
+
+  return osc;
+}
+
+osc_t *new_osc_linear(osc_t *base, osc_t *diff)
+{
+  osc_t *osc = create_osc(otyp_Linear);
+  if (!osc)
+    return NULL;
+
+  osc->u.olinear.base = base;
+  osc->u.olinear.diff = diff;
+    
+  return osc;
+}
+
+osc_t *new_osc_buffer(osc_t *val)
+{
+  int ix;
+  osc_t *osc = create_osc(otyp_Buffer);
+  if (!osc)
+    return NULL;
+    
+  osc->u.obuffer.val = val;
+  osc->u.obuffer.firstel = NUM_ELS-1;
+    
+  /* The last N values are stored in a ring buffer, which we must initialize
+     here. */
+  for (ix=0; ix<NUM_ELS; ix++) {
+    osc->u.obuffer.el[ix] = osc_get(val, 0);
+  }
+
+  return osc;
+}
+
+/* Compute f(i,el) for the current i. */
+int osc_get(osc_t *osc, int el)
+{
+  if (!osc)
+    return 0;
+        
+  switch (osc->type) {
+    
+  case otyp_Constant:
+    return osc->u.oconstant.val;
+            
+  case otyp_Bounce:
+    return osc->u.obounce.val;
+            
+  case otyp_Wrap:
+    return osc->u.owrap.val;
+        
+  case otyp_VeloWrap:
+    return osc->u.ovelowrap.val;
+        
+  case otyp_Linear:
+    return osc_get(osc->u.olinear.base, el)
+      + el * osc_get(osc->u.olinear.diff, el);
+        
+  case otyp_Multiplex: {
+    struct omultiplex_struct *ox = &(osc->u.omultiplex);
+    int sel = osc_get(ox->sel, el);
+    return osc_get(ox->val[sel % NUM_PHASES], el);
+  }
+        
+  case otyp_Phaser: {
+    struct ophaser_struct *ox = &(osc->u.ophaser);
+    return ox->curphase;
+  }
+        
+  case otyp_RandPhaser: {
+    struct orandphaser_struct *ox = &(osc->u.orandphaser);
+    return ox->curphase;
+  }
+        
+  case otyp_Buffer: {
+    struct obuffer_struct *ox = &(osc->u.obuffer);
+    return ox->el[(ox->firstel + el) % NUM_ELS];
+  }
+        
+  default:
+    return 0;
+  }
+}
+
+/* Increment i. This affects all osc_t objects; we go down the linked list to
+   get them all. */
+void osc_increment()
+{
+  osc_t *osc;
+    
+  for (osc = oscroot; osc; osc = osc->next) {
+    switch (osc->type) {
+        
+    case otyp_Bounce: {
+      struct obounce_struct *ox = &(osc->u.obounce);
+      ox->val += ox->step;
+      if (ox->val < ox->min && ox->step < 0) {
+       ox->step = -(ox->step);
+       ox->val = ox->min + (ox->min - ox->val);
+      }
+      if (ox->val > ox->max && ox->step > 0) {
+       ox->step = -(ox->step);
+       ox->val = ox->max + (ox->max - ox->val);
+      }
+      break;
+    }
+                
+    case otyp_Wrap: {
+      struct owrap_struct *ox = &(osc->u.owrap);
+      ox->val += ox->step;
+      if (ox->val < ox->min && ox->step < 0) {
+       ox->val += (ox->max - ox->min);
+      }
+      if (ox->val > ox->max && ox->step > 0) {
+       ox->val -= (ox->max - ox->min);
+      }
+      break;
+    }
+            
+    case otyp_VeloWrap: {
+      struct ovelowrap_struct *ox = &(osc->u.ovelowrap);
+      int diff = (ox->max - ox->min);
+      ox->val += osc_get(ox->step, 0);
+      while (ox->val < ox->min)
+       ox->val += diff;
+      while (ox->val > ox->max)
+       ox->val -= diff;
+      break;
+    }
+            
+    case otyp_Phaser: {
+      struct ophaser_struct *ox = &(osc->u.ophaser);
+      ox->count++;
+      if (ox->count >= ox->phaselen) {
+       ox->count = 0;
+       ox->curphase++;
+       if (ox->curphase >= NUM_PHASES)
+         ox->curphase = 0;
+      }
+      break;
+    }
+            
+    case otyp_RandPhaser: {
+      struct orandphaser_struct *ox = &(osc->u.orandphaser);
+      ox->count++;
+      if (ox->count >= ox->curphaselen) {
+       ox->count = 0;
+       ox->curphaselen = rand_range(ox->minphaselen, ox->maxphaselen);
+       ox->curphase++;
+       if (ox->curphase >= NUM_PHASES)
+         ox->curphase = 0;
+      }
+      break;
+    }
+            
+    case otyp_Buffer: {
+      struct obuffer_struct *ox = &(osc->u.obuffer);
+      ox->firstel--;
+      if (ox->firstel < 0)
+       ox->firstel += NUM_ELS;
+      ox->el[ox->firstel] = osc_get(ox->val, 0);
+      /* We can assume that ox->val has already been incremented, since it
+        was created first. This is why new objects are put on the end
+        of the linked list... yeah, it's gross. */
+      break;
+    }
+            
+    default:
+      break;
+    }
+  }
+}
+
+/* Return a random number between min and max, inclusive. */
+static int rand_range(int min, int max)
+{
+  int res;
+  unsigned int diff = (max+1) - min;
+  if (diff <= 1)
+    return min;
+  res = random() % diff;
+  return min+res;
+}
+
diff --git a/hacks/glx/stonerview-osc.h b/hacks/glx/stonerview-osc.h
new file mode 100644 (file)
index 0000000..ef9104c
--- /dev/null
@@ -0,0 +1,168 @@
+/* StonerView: An eccentric visual toy.
+   Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com)
+
+   Permission to use, copy, modify, distribute, and sell this software and its
+   documentation for any purpose is hereby granted without fee, provided that
+   the above copyright notice appear in all copies and that both that
+   copyright notice and this permission notice appear in supporting
+   documentation.  No representations are made about the suitability of this
+   software for any purpose.  It is provided "as is" without express or 
+   implied warranty.
+*/
+
+/* This defines the osc_t object, which generates a stream of
+   numbers. It is the heart of the StonerSound/StonerView engine.
+    
+   The idea is simple; an osc_t represents some function f(), which
+   can be evaluated to generate an infinite stream of integers (f(0),
+   f(1), f(2), f(3)...). Some of these functions are defined in
+   terms of other osc_t functions: f(i) = g(h(i)) or some such thing.
+    
+   To simplify the code, we don't try to calculate f(i) for any
+   arbitrary i. Instead, we start with i=0. Calling osc_get(f)
+   returns f(0) for all osc_t's in the system. When we're ready, we
+   call osc_increment(), which advances every osc_t to i=1;
+   thereafter, calling osc_get(f) returns f(1). When you call
+   osc_increment() again, you get f(2). And so on. You can't go
+   backwards, or move forwards more than 1 at a time, or move some
+   osc_t's without moving others. This is a very restricted model, but
+   it's exactly what's needed for this system.
+    
+   Now, there's an additional complication. To get the rippling
+   effect, we don't pull out single values, but *sets* of N elements
+   at a time. (N is defined by NUM_ELS below.) So f(i) is really an
+   ordered N-tuple (f(i,0), f(i,1), f(i,2), f(i,3), f(i,4)). And f()
+   generates an infinite stream of these N-tuples. The osc_get() call
+   really has two parameters; you call osc_get(f, n) to find the n'th
+   element of the current N-tuple. Remember, n must be between 0 and
+   n-1.
+    
+   (Do *not* try to get an infinite stream f(i) by calling 
+   osc_get(f, i) for i ranging to infinity! Use osc_increment() to 
+   advance to the next N-tuple in the stream.)
+*/
+
+#define NUM_ELS (40) /* Forty polygons at a time. */
+
+#define NUM_PHASES (4) /* Some of the osc functions switch between P 
+                         alternatives. We arbitrarily choose P=4. */
+
+/* Here are the functions which are available. 
+   Constant: f(i,n) = k. Always the same value. Very simple.
+   Wrap: f(i,n) slides up or down as i increases. There's a minimum and maximum
+     value, and a step. When the current value reaches the min or max, it jumps
+     to the other end and keeps moving the same direction. 
+   Bounce: f(i,n) slides up and down as i increases. There's a minimum and
+     maximum value, and a step. When the current value reaches the min or max,
+     the step is flipped to move the other way.
+   Phaser: f(i,n) = floor(i / phaselen) modulo 4. That is, it generates
+     phaselen 0 values, and then phaselen 1 values, then phaselen 2 values,
+     then phaselen 3 values, then back to 0. (Phaselen is a parameter you
+     supply when you create the phaser.) As you see, this is much the same as
+     the Wrap function, with a minimum of 0, a maximum of 3, and a step of
+     1/phaselen. But since this code uses integer math, fractional steps
+     aren't possible; it's easier to write a separate function.
+   RandPhaser: The same as Phaser, but the phaselen isn't fixed. It varies
+     randomly between a minimum and maximum value you supply.
+   Multiplex: There are five subsidiary functions within a multiplex function: 
+     g0, g1, g2, g3, and a selector function s. Then:
+     f(i,n) = gX(i,n), where X = s(i,n). (Obviously s must generate only values
+     in the range 0 to 3. This is what the phaser functions are designed for,
+     but you can use anything.)
+   Linear: There are two subsidiary functions within this, a and b. Then:
+     f(i,n) = a(i,n) + n*b(i,n). This is an easy way to make an N-tuple that
+     forms a linear sequence, such as (41, 43, 45, 47, 49).
+   Buffer: This takes a subsidiary function g, and computes:
+     f(i,n) = g(i-n,0). That is, the 0th element of the N-tuple is the
+     *current* value of g; the 1st element is the *previous* value of g; the
+     2nd element is the second-to-last value, and so on back in time. This
+     is a weird idea, but it causes exactly the rippling-change effect that
+     we want.
+        
+   Note that Buffer only looks up g(i,0) -- it only uses the 0th elements of
+     the N-tuples that g generates. This saves time and memory, but it means
+     that certain things don't work. For example, if you try to build 
+     Buffer(Linear(A,B)), B will have no effect, because Linear computes
+     a(i,n) + n*b(i,n), and inside the Buffer, n is always zero. On the other
+     hand, Linear(Buffer(A),Buffer(B)) works fine, and is probably what you
+     wanted anyway.
+   Similarly, Buffer(Buffer(A)) is the same as Buffer(A). Proof left as an
+     exercise.
+*/
+
+#define otyp_Constant (1)
+#define otyp_Bounce (2)
+#define otyp_Wrap (3)
+#define otyp_Phaser (4)
+#define otyp_RandPhaser (5)
+#define otyp_VeloWrap (7)
+#define otyp_Linear (6)
+#define otyp_Buffer (8)
+#define otyp_Multiplex (9)
+
+/* The osc_t structure itself. */
+typedef struct osc_struct {
+  int type; /* An otyp_* constant. */
+    
+  struct osc_struct *next; /* osc.c uses this to maintain a private linked list
+                             of all osc_t objects created. */
+    
+  /* Union of the data used by all the possible osc_t functions. */
+  union {
+    struct {
+      int val;
+    } oconstant;
+    struct owrap_struct {
+      int min, max, step;
+      int val;
+    } owrap;
+    struct obounce_struct {
+      int min, max, step;
+      int val;
+    } obounce;
+    struct omultiplex_struct {
+      struct osc_struct *sel;
+      struct osc_struct *val[NUM_PHASES];
+    } omultiplex;
+    struct ophaser_struct {
+      int phaselen;
+      int count;
+      int curphase;
+    } ophaser;
+    struct orandphaser_struct {
+      int minphaselen, maxphaselen;
+      int count;
+      int curphaselen;
+      int curphase;
+    } orandphaser;
+    struct ovelowrap_struct {
+      int min, max;
+      struct osc_struct *step;
+      int val;
+    } ovelowrap;
+    struct olinear_struct {
+      struct osc_struct *base;
+      struct osc_struct *diff;
+    } olinear;
+    struct obuffer_struct {
+      struct osc_struct *val;
+      int firstel;
+      int el[NUM_ELS];
+    } obuffer;
+  } u;
+} osc_t;
+
+extern osc_t *new_osc_constant(int val);
+extern osc_t *new_osc_bounce(int min, int max, int step);
+extern osc_t *new_osc_wrap(int min, int max, int step);
+extern osc_t *new_osc_phaser(int phaselen);
+extern osc_t *new_osc_randphaser(int minphaselen, int maxphaselen);
+extern osc_t *new_osc_velowrap(int min, int max, osc_t *step);
+extern osc_t *new_osc_linear(osc_t *base, osc_t *diff);
+extern osc_t *new_osc_buffer(osc_t *val);
+extern osc_t *new_osc_multiplex(osc_t *sel, osc_t *ox0, osc_t *ox1, 
+  osc_t *ox2, osc_t *ox3);
+
+extern int osc_get(osc_t *osc, int el);
+extern void osc_increment(void);
+
diff --git a/hacks/glx/stonerview-view.c b/hacks/glx/stonerview-view.c
new file mode 100644 (file)
index 0000000..a724781
--- /dev/null
@@ -0,0 +1,482 @@
+/* StonerView: An eccentric visual toy.
+   Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com)
+   http://www.eblong.com/zarf/stonerview.html
+   Permission to use, copy, modify, distribute, and sell this software and its
+   documentation for any purpose is hereby granted without fee, provided that
+   the above copyright notice appear in all copies and that both that
+   copyright notice and this permission notice appear in supporting
+   documentation.  No representations are made about the suitability of this
+   software for any purpose.  It is provided "as is" without express or 
+   implied warranty.
+*/
+
+/* Ported away from GLUT (so that it can do `-root' and work with xscreensaver)
+   by Jamie Zawinski <jwz@jwz.org>, 22-Jan-2001.
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/keysym.h>
+#include <GL/gl.h>
+#include <GL/glx.h>
+
+#include "vroot.h"     /* handle virtual root windows --- very important */
+
+#include "version.h"   /* get the xscreensaver package's version number */
+#include "yarandom.h"  /* use xscreensaver's RNG */
+
+#include "stonerview-osc.h"
+#include "stonerview-move.h"
+
+static char *progclass = "StonerView";
+static char *progname = 0;
+
+#define FRAMERATE (50) /* milliseconds per frame */
+
+static GLfloat view_rotx = -45.0, view_roty = 0.0, view_rotz = 0.0;
+static GLfloat view_scale = 4.0;
+/* static GLint prevtime = 0; / * for timing */
+
+static void setup_window(void);
+
+void win_draw(void);
+static void win_reshape(int width, int height);
+/* static void win_visible(int vis); */
+/* static void win_idle(void); */
+static void handle_events(void);
+
+static Display *dpy;
+static Window window;
+static int wireframe = 0;
+
+static Atom XA_WM_PROTOCOLS, XA_WM_DELETE_WINDOW;
+
+
+static void
+usage (void)
+{
+  fprintf (stderr,
+           "usage: %s [--geom =WxH+X+Y | --fullscreen | --root] [--wire]\n",
+           progname);
+  exit (1);
+}
+
+
+/* mostly lifted from xscreensaver/utils/visual.c... */
+static int
+visual_depth (Display *dpy, int screen, Visual *visual)
+{
+  XVisualInfo vi_in, *vi_out;
+  int out_count, d;
+  vi_in.screen = screen;
+  vi_in.visualid = XVisualIDFromVisual (visual);
+  vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
+                          &vi_in, &out_count);
+  if (! vi_out) abort ();
+  d = vi_out [0].depth;
+  XFree ((char *) vi_out);
+  return d;
+}
+
+
+/* mostly lifted from xscreensaver/hacks/screenhack.c... */
+static char *make_title_string (void)
+{
+  char version[255];
+  char *v = (char *) strdup(strchr(screensaver_id, ' '));
+  char *s1, *s2, *s3, *s4;
+  s1 = (char *) strchr(v,  ' '); s1++;
+  s2 = (char *) strchr(s1, ' ');
+  s3 = (char *) strchr(v,  '('); s3++;
+  s4 = (char *) strchr(s3, ')');
+  *s2 = 0;
+  *s4 = 0;
+  sprintf (version, "%s: from the XScreenSaver %s distribution (%s.)",
+           progclass, s1, s3);
+  return (strdup(version));
+}
+
+
+int init_view(int *argc, char *argv[])
+{
+  int ix;
+  int fullscreen = 0;
+  int on_root = 0;
+
+  int undef = -65536;
+  int x = undef, y = undef;
+  int w = 500, h = 500;
+  char *dpystr = (char *) getenv ("DISPLAY");
+  char *geom = 0;
+  int screen;
+  Visual *visual;
+  XWindowAttributes xgwa;
+  XSetWindowAttributes xswa;
+  unsigned long xswa_mask = 0;
+  XSizeHints hints;
+  GLXContext glx_context = 0;
+
+  memset (&hints, 0, sizeof(hints));
+
+  for (ix=1; ix<*argc; ix++)
+    {
+      if (argv[ix][0] == '-' && argv[ix][1] == '-')
+        argv[ix]++;
+      if (!strcmp(argv[ix], "-geometry") ||
+          !strcmp(argv[ix], "-geom"))
+        {
+          if (on_root || fullscreen) usage();
+          geom = argv[++ix];
+        }
+      else if (!strcmp(argv[ix], "-display") ||
+               !strcmp(argv[ix], "-disp") ||
+               !strcmp(argv[ix], "-dpy") ||
+               !strcmp(argv[ix], "-d"))
+        dpystr = argv[++ix];
+      else if (!strcmp(argv[ix], "-root"))
+        {
+          if (geom || fullscreen) usage();
+          on_root = 1;
+        }
+      else if (!strcmp(argv[ix], "-fullscreen") ||
+               !strcmp(argv[ix], "-full"))
+        {
+          if (on_root || geom) usage();
+          fullscreen = 1;
+        }
+      else if (!strcmp(argv[ix], "-wireframe") ||
+               !strcmp(argv[ix], "-wire"))
+        {
+          wireframe = 1;
+        }
+      else
+        {
+          usage();
+        }
+    }
+
+  dpy = XOpenDisplay (dpystr);
+  if (!dpy) exit (1);
+
+  screen = DefaultScreen (dpy);
+
+  XA_WM_PROTOCOLS = XInternAtom (dpy, "WM_PROTOCOLS", False);
+  XA_WM_DELETE_WINDOW = XInternAtom (dpy, "WM_DELETE_WINDOW", False);
+
+  if (on_root)
+    {
+      window = RootWindow (dpy, screen);
+      XGetWindowAttributes (dpy, window, &xgwa);
+      visual = xgwa.visual;
+      w = xgwa.width;
+      h = xgwa.height;
+    }
+  else
+    {
+      int ww = WidthOfScreen (DefaultScreenOfDisplay (dpy));
+      int hh = HeightOfScreen (DefaultScreenOfDisplay (dpy));
+
+      if (fullscreen)
+        {
+          w = ww;
+          h = hh;
+        }
+      else if (geom)
+        {
+          /* Since we're not linking against Xt or GLUT, we get to parse
+             the `-geometry' argument ourselves.  YAY.
+           */
+          char c;
+          if      (4 == sscanf (geom, "=%dx%d+%d+%d%c", &w, &h, &x, &y, &c))
+            ;
+          else if (4 == sscanf (geom, "=%dx%d-%d+%d%c", &w, &h, &x, &y, &c))
+            x = ww-w-x;
+          else if (4 == sscanf (geom, "=%dx%d+%d-%d%c", &w, &h, &x, &y, &c))
+            y = hh-h-y;
+          else if (4 == sscanf (geom, "=%dx%d-%d-%d%c", &w, &h, &x, &y, &c))
+            x = ww-w-x, y = hh-h-y;
+          else if (2 == sscanf (geom, "=%dx%d%c", &w, &h, &c))
+            ;
+          else if (2 == sscanf (geom, "+%d+%d%c", &x, &y, &c))
+            ;
+          else if (2 == sscanf (geom, "-%d+%d%c", &x, &y, &c))
+            x = ww-w-x;
+          else if (2 == sscanf (geom, "+%d-%d%c", &x, &y, &c))
+            y = hh-h-y;
+          else if (2 == sscanf (geom, "-%d-%d%c", &x, &y, &c))
+            x = ww-w-x, y = hh-h-y;
+          else
+            {
+              fprintf (stderr, "%s: unparsable geometry: %s\n",
+                       progname, geom);
+              exit (1);
+            }
+
+          hints.flags = USSize;
+          hints.width = w;
+          hints.height = h;
+          if (x != undef && y != undef)
+            {
+              hints.flags |= USPosition;
+              hints.x = x;
+              hints.y = y;
+            }
+        }
+
+      /* Pick a good GL visual */
+      {
+# define R GLX_RED_SIZE
+# define G GLX_GREEN_SIZE
+# define B GLX_BLUE_SIZE
+# define D GLX_DEPTH_SIZE
+# define I GLX_BUFFER_SIZE
+# define DB GLX_DOUBLEBUFFER
+
+        int attrs[][20] = {
+          { GLX_RGBA, R, 8, G, 8, B, 8, D, 8, DB, 0 }, /* rgb double */
+          { GLX_RGBA, R, 4, G, 4, B, 4, D, 4, DB, 0 },
+          { GLX_RGBA, R, 2, G, 2, B, 2, D, 2, DB, 0 },
+          { GLX_RGBA, R, 8, G, 8, B, 8, D, 8,     0 }, /* rgb single */
+          { GLX_RGBA, R, 4, G, 4, B, 4, D, 4,     0 },
+          { GLX_RGBA, R, 2, G, 2, B, 2, D, 2,     0 },
+          { I, 8,                       D, 8, DB, 0 }, /* cmap double */
+          { I, 4,                       D, 4, DB, 0 },
+          { I, 8,                       D, 8,     0 }, /* cmap single */
+          { I, 4,                       D, 4,     0 },
+          { GLX_RGBA, R, 1, G, 1, B, 1, D, 1,     0 }  /* monochrome */
+        };
+
+        int i;
+        for (i = 0; i < sizeof(attrs)/sizeof(*attrs); i++)
+          {
+            XVisualInfo *vi = glXChooseVisual (dpy, screen, attrs[i]);
+            if (vi)
+              {
+                visual = vi->visual;
+                XFree (vi);
+                break;
+              }
+          }
+        if (!visual)
+          {
+            fprintf (stderr, "%s: unable to find a GL visual\n", progname);
+            exit (1);
+          }
+      }
+
+
+      if (x == undef) x = 0;
+      if (y == undef) y = 0;
+
+      xswa_mask = (CWEventMask | CWColormap |
+                   CWBackPixel | CWBackingPixel | CWBorderPixel );
+      xswa.colormap = XCreateColormap (dpy, RootWindow (dpy, screen),
+                                       visual, AllocNone);
+      xswa.background_pixel = BlackPixel (dpy, screen);
+      xswa.backing_pixel = xswa.background_pixel;
+      xswa.border_pixel = xswa.background_pixel;
+      xswa.event_mask = (KeyPressMask | ButtonPressMask | StructureNotifyMask);
+
+      window = XCreateWindow (dpy, RootWindow (dpy, screen),
+                              x, y, w, h, 0,
+                              visual_depth (dpy, screen, visual),
+                              InputOutput, visual,
+                              xswa_mask, &xswa);
+
+      {
+        XWMHints wmhints;
+
+        XTextProperty tp1, tp2;
+        char *v = make_title_string ();
+        XStringListToTextProperty (&v, 1, &tp1);
+        XStringListToTextProperty (&progclass, 1, &tp2);
+        wmhints.flags = InputHint;
+        wmhints.input = True;
+        XSetWMProperties (dpy, window, &tp1, &tp2, argv, *argc, &hints,
+                          &wmhints, 0);
+        free (v);
+      }
+
+      XChangeProperty (dpy, window, XA_WM_PROTOCOLS, XA_ATOM, 32,
+                       PropModeReplace,
+                       (unsigned char *) &XA_WM_DELETE_WINDOW, 1);
+
+      XMapRaised (dpy, window);
+      XSync (dpy, False);
+    }
+
+
+  /* Now hook up to GLX */
+  {
+    XVisualInfo vi_in, *vi_out;
+    int out_count;
+    vi_in.screen = screen;
+    vi_in.visualid = XVisualIDFromVisual (visual);
+      vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
+                               &vi_in, &out_count);
+      if (! vi_out) abort ();
+
+      glx_context = glXCreateContext (dpy, vi_out, 0, GL_TRUE);
+      XFree((char *) vi_out);
+
+      if (!glx_context)
+        {
+          fprintf(stderr, "%s: couldn't create GL context for root window.\n",
+                  progname);
+          exit(1);
+        }
+
+      glXMakeCurrent (dpy, window, glx_context);
+  }
+
+  setup_window();
+  win_reshape(w, h);
+
+  return 1;
+}
+
+static void setup_window()
+{
+  glEnable(GL_CULL_FACE);
+  glEnable(GL_LIGHTING);
+  glEnable(GL_LIGHT0);
+  glEnable(GL_DEPTH_TEST);
+
+  glEnable(GL_NORMALIZE);
+}
+
+/* callback: draw everything */
+void win_draw(void)
+{
+  int ix;
+  static GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 };
+
+  glDrawBuffer(GL_BACK);
+
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+  glPushMatrix();
+  glScalef(view_scale, view_scale, view_scale);
+  glRotatef(view_rotx, 1.0, 0.0, 0.0);
+  glRotatef(view_roty, 0.0, 1.0, 0.0);
+  glRotatef(view_rotz, 0.0, 0.0, 1.0);
+
+  for (ix=0; ix<NUM_ELS; ix++) {
+    elem_t *el = &elist[ix];
+
+    glPushMatrix();
+
+    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE,
+                 (wireframe ? white : el->col));
+    glShadeModel(GL_FLAT);
+    glBegin(wireframe ? GL_LINE_LOOP : GL_QUADS);
+
+    glNormal3f(0.0, 0.0, 1.0);
+    glVertex3f(el->pos[0] - el->vervec[0], el->pos[1] - el->vervec[1], 
+      el->pos[2]);
+    glVertex3f(el->pos[0] + el->vervec[1], el->pos[1] - el->vervec[0], 
+      el->pos[2]);
+    glVertex3f(el->pos[0] + el->vervec[0], el->pos[1] + el->vervec[1], 
+      el->pos[2]);
+    glVertex3f(el->pos[0] - el->vervec[1], el->pos[1] + el->vervec[0], 
+      el->pos[2]);
+
+    glEnd();
+
+    glPopMatrix();
+  }
+
+  glPopMatrix();
+
+  glFinish();
+  glXSwapBuffers(dpy, window);
+
+  handle_events();
+}
+
+
+/* callback: new window size or exposure */
+static void win_reshape(int width, int height)
+{
+  GLfloat h = (GLfloat) height / (GLfloat) width;
+
+  glViewport(0, 0, (GLint) width, (GLint) height);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0);
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity();
+  glTranslatef(0.0, 0.0, -40.0);
+}
+
+
+static void
+handle_events (void)
+{
+  while (XPending (dpy))
+    {
+      XEvent E;
+      XEvent *event = &E;
+      XNextEvent (dpy, event);
+      switch (event->xany.type)
+        {
+        case ConfigureNotify:
+          {
+            XWindowAttributes xgwa;
+            XGetWindowAttributes (dpy, window, &xgwa);
+            win_reshape (xgwa.width, xgwa.height);
+            break;
+          }
+        case KeyPress:
+          {
+            KeySym keysym;
+            char c = 0;
+            XLookupString (&event->xkey, &c, 1, &keysym, 0);
+            if (c == 'q' ||
+                c == 'Q' ||
+                c == 3 ||      /* ^C */
+                c == 27)       /* ESC */
+              exit (0);
+            else if (! (keysym >= XK_Shift_L && keysym <= XK_Hyper_R))
+              XBell (dpy, 0);  /* beep for non-chord keys */
+          }
+          break;
+        case ButtonPress:
+          XBell (dpy, 0);
+          break;
+        case ClientMessage:
+          {
+            if (event->xclient.message_type != XA_WM_PROTOCOLS)
+              {
+                char *s = XGetAtomName(dpy, event->xclient.message_type);
+                if (!s) s = "(null)";
+                fprintf (stderr, "%s: unknown ClientMessage %s received!\n",
+                         progname, s);
+              }
+            else if (event->xclient.data.l[0] != XA_WM_DELETE_WINDOW)
+              {
+                char *s1 = XGetAtomName(dpy, event->xclient.message_type);
+                char *s2 = XGetAtomName(dpy, event->xclient.data.l[0]);
+                if (!s1) s1 = "(null)";
+                if (!s2) s2 = "(null)";
+                fprintf (stderr,"%s: unknown ClientMessage %s[%s] received!\n",
+                         progname, s1, s2);
+              }
+            else
+              {
+                exit (0);
+              }
+          }
+          break;
+        }
+    }
+}
diff --git a/hacks/glx/stonerview.c b/hacks/glx/stonerview.c
new file mode 100644 (file)
index 0000000..b926f62
--- /dev/null
@@ -0,0 +1,65 @@
+/* StonerView: An eccentric visual toy.
+   Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com)
+
+   For the latest version, source code, and links to more of my stuff, see:
+   http://www.eblong.com/zarf/stonerview.html
+
+   Permission to use, copy, modify, distribute, and sell this software and its
+   documentation for any purpose is hereby granted without fee, provided that
+   the above copyright notice appear in all copies and that both that
+   copyright notice and this permission notice appear in supporting
+   documentation.  No representations are made about the suitability of this
+   software for any purpose.  It is provided "as is" without express or 
+   implied warranty.
+*/
+
+/* Ported away from GLUT (so that it can do `-root' and work with xscreensaver)
+   by Jamie Zawinski <jwz@jwz.org>, 22-Jan-2001.
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+
+#include <GL/gl.h>
+
+#include "yarandom.h"
+#include "stonerview-move.h"
+
+extern int init_view(int *argc, char *argv[]);
+extern void win_draw(void);
+
+
+static void 
+stonerview_usleep (unsigned long usecs)
+{
+  struct timeval tv;
+  tv.tv_sec  = usecs / 1000000L;
+  tv.tv_usec = usecs % 1000000L;
+  (void) select (0, 0, 0, 0, &tv);
+}
+
+int main(int argc, char *argv[])
+{
+
+  /* Randomize -- only need to do this here because this program
+     doesn't use the `screenhack.h' or `lockmore.h' APIs. */
+# undef ya_rand_init
+  ya_rand_init (0);
+
+  if (!init_view(&argc, argv))
+    return -1;
+  if (!init_move())
+    return -1;
+
+  while (1)
+    {
+      win_draw();
+      move_increment();
+      stonerview_usleep (20000);
+    }
+
+  return 0;
+}
index 6ed41b8686e5d19ef5c35f1e685941ab7cc5d8bd..eb243006ccf859cae6f45e05a8ff02a8eb1fbeb9 100644 (file)
@@ -5,7 +5,7 @@
 static const char sccsid[] = "@(#)grav.c       4.00 97/01/01 xlockmore";
 #endif
 
-/* Copyright (c) 1993 Greg Bowering <greg@smug.student.adelaide.edu.au>
+/* Copyright (c) 1993 Greg Bowering <gb@pobox.com>
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation for any purpose and without fee is hereby granted,
@@ -22,7 +22,7 @@ static const char sccsid[] = "@(#)grav.c      4.00 97/01/01 xlockmore";
  * Revision history:
  * 10-May-97: jwz@jwz.org: turned into a standalone program.
  * 11-Jul-94: color version
- * 06-Oct-93: by Greg Bowering <greg@smug.student.adelaide.edu.au>
+ * 06-Oct-93: by Greg Bowering <gb@pobox.com>
  */
 
 #ifdef STANDALONE
index 7cd42cb69dab2b45ad2f6e2daac75a74145fd7bd..7e547b50502ec6bf41ce1d0ea3da8e37c61f8ff5 100644 (file)
@@ -68,7 +68,7 @@ provided that the above copyright notice appear in all copies and that
 both that copyright notice and this permission notice appear in
 supporting documentation. 
 .SH AUTHOR
-Greg Bowering <greg@smug.student.adelaide.edu.au>, 1993.
+Greg Bowering <gb@pobox.com>, 1993.
 
 Ability to run standalone or with \fIxscreensaver\fP added by 
 Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/hyperball.man b/hacks/hyperball.man
new file mode 100644 (file)
index 0000000..3103944
--- /dev/null
@@ -0,0 +1,74 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+hyperball - 2d projection of a 4d object
+.SH SYNOPSIS
+.B hyperball
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-xy \fIfloat\fP] [\-xz \fIfloat\fP] [\-yz \fIfloat\fP] [\-xw \fIfloat\fP] [\-yw \fIfloat\fP] [\-zw \fIfloat\fP] [\-observer-z \fIint\fP] [\-delay \fIusecs\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP]
+.SH DESCRIPTION
+The \fIhyperball\fP program displays a wireframe projection of a hyperball
+which is rotating at user-specified rates around any or all of its four axes.
+.SH OPTIONS
+.I hyperball
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-mono 
+If on a color display, pretend we're on a monochrome display.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use.  Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How much of a delay should be introduced between steps of the animation.
+Default 100000, or about 1/10th second.
+.TP 8
+.B \-observer-z \fIint\fP
+How far away the observer is from the center of the cube (the cube is one
+unit per side.)  Default 5.
+.TP 8
+.B \-xw \fIfloat\fP
+.TP 8
+.B \-xy \fIfloat\fP
+.TP 8
+.B \-xz \fIfloat\fP
+.TP 8
+.B \-yw \fIfloat\fP
+.TP 8
+.B \-yz \fIfloat\fP
+.TP 8
+.B \-zw \fIfloat\fP
+The amount that the ball should be rotated around the specified axis at
+each frame of the animation, expressed in radians.  These should be small
+floating-point values (less than 0.05 works best.)  Default: xy=0.01,
+xz=0.005, yw=0.01.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2000 by Joe Keane.  Permission to use, copy, modify, 
+distribute, and sell this software and its documentation for any purpose is 
+hereby granted without fee, provided that the above copyright notice appear 
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation.  No representations are made about the 
+suitability of this software for any purpose.  It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Joe Keane <jgk@jgk.org>
index 58ce0318b5c04add5ee7f49ad30413598734fee6..2de66901e62bd96b3647ffc1eb7d6337f505df4e 100644 (file)
@@ -50,7 +50,6 @@ $ link/exe=sphere.exe       screenhack-xlock,sphere,xlockmore,vms_axp_12.opt/opt
 $ link/exe=spiral.exe       screenhack-xlock,spiral,xlockmore,vms_axp_12.opt/opt
 $ link/exe=strange.exe      screenhack-xlock,strange,xlockmore,vms_axp_12.opt/opt
 $ link/exe=swirl.exe        screenhack-xlock,swirl,xlockmore,vms_axp_12.opt/opt
-$ link/exe=xroger.exe       screenhack,xroger-hack,vms_axp_12.opt/opt
 $ link/exe=goop.exe         screenhack,goop,vms_axp_12.opt/opt
 $ link/exe=starfish.exe     screenhack,starfish,vms_axp_12.opt/opt
 $ link/exe=munch.exe        screenhack,munch,vms_axp_12.opt/opt
@@ -102,7 +101,6 @@ $ link/exe=sphere.exe       screenhack-xlock,sphere,xlockmore,vms_axp.opt/opt
 $ link/exe=spiral.exe       screenhack-xlock,spiral,xlockmore,vms_axp.opt/opt
 $ link/exe=strange.exe      screenhack-xlock,strange,xlockmore,vms_axp.opt/opt
 $ link/exe=swirl.exe        screenhack-xlock,swirl,xlockmore,vms_axp.opt/opt
-$ link/exe=xroger.exe       screenhack,xroger-hack,vms_axp.opt/opt
 $ link/exe=goop.exe         screenhack,goop,vms_axp.opt/opt
 $ link/exe=starfish.exe     screenhack,starfish,vms_axp.opt/opt
 $ link/exe=munch.exe        screenhack,munch,vms_axp.opt/opt
index 3e001cd97928d020ad091d48b22fa0cc2e629105..50bda20f8f6e486825c55f2058a80f5624634985 100644 (file)
@@ -50,7 +50,6 @@ $ link/exe=sphere.exe       screenhack-xlock,sphere,xlockmore,vms_decc_12.opt/op
 $ link/exe=spiral.exe       screenhack-xlock,spiral,xlockmore,vms_decc_12.opt/opt
 $ link/exe=strange.exe      screenhack-xlock,strange,xlockmore,vms_decc_12.opt/opt
 $ link/exe=swirl.exe        screenhack-xlock,swirl,xlockmore,vms_decc_12.opt/opt
-$ link/exe=xroger.exe       screenhack,xroger-hack,vms_decc_12.opt/opt
 $ link/exe=goop.exe         screenhack,goop,vms_decc_12.opt/opt
 $ link/exe=starfish.exe     screenhack,starfish,vms_decc_12.opt/opt
 $ link/exe=munch.exe        screenhack,munch,vms_decc_12.opt/opt
@@ -102,7 +101,6 @@ $ link/exe=sphere.exe       screenhack-xlock,sphere,xlockmore,vms_decc.opt/opt
 $ link/exe=spiral.exe       screenhack-xlock,spiral,xlockmore,vms_decc.opt/opt
 $ link/exe=strange.exe      screenhack-xlock,strange,xlockmore,vms_decc.opt/opt
 $ link/exe=swirl.exe        screenhack-xlock,swirl,xlockmore,vms_decc.opt/opt
-$ link/exe=xroger.exe       screenhack,xroger-hack,vms_decc.opt/opt
 $ link/exe=goop.exe         screenhack,goop,vms_decc.opt/opt
 $ link/exe=starfish.exe     screenhack,starfish,vms_decc.opt/opt
 $ link/exe=munch.exe        screenhack,munch,vms_decc.opt/opt
index 004c9396c92a3ab26bb68f22e2eaaf82aad377f6..cfd212c4f9505a6bd601767be7c1898b2d48eb29 100644 (file)
@@ -84,7 +84,7 @@
 #include "screenhack.h"
 #include "erase.h"
 
-#define XROGER
+#define XSCREENSAVER_LOGO
 
 static int solve_delay, pre_solve_delay, post_solve_delay;
 
@@ -133,7 +133,7 @@ static int solve_delay, pre_solve_delay, post_solve_delay;
 
 static int logo_x, logo_y;
 
-#ifdef XROGER
+#ifdef XSCREENSAVER_LOGO
 # define logo_width  128
 # define logo_height 128
 #else
@@ -1129,10 +1129,16 @@ draw_maze_border (void)                         /* draw the maze outline */
       int x, y;
       unsigned int w, h, bw, d;
       XGetGeometry (dpy, logo_map, &r, &x, &y, &w, &h, &bw, &d);
-      XCopyPlane (dpy, logo_map, win, logo_gc,
-                 0, 0, w, h,
-                 border_x + 3 + grid_width * logo_x,
-                 border_y + 3 + grid_height * logo_y, 1);
+      if (d == 1)
+        XCopyPlane (dpy, logo_map, win, logo_gc,
+                    0, 0, w, h,
+                    border_x + 3 + grid_width * logo_x,
+                    border_y + 3 + grid_height * logo_y, 1);
+      else
+        XCopyArea (dpy, logo_map, win, logo_gc,
+                   0, 0, w, h,
+                   border_x + 3 + grid_width * logo_x,
+                   border_y + 3 + grid_height * logo_y);
     }
   draw_solid_square (start_x, start_y, WALL_TOP >> start_dir, tgc);
   draw_solid_square (end_x, end_y, WALL_TOP >> end_dir, tgc);
@@ -1578,9 +1584,6 @@ char *defaults[] = {
   "*maxLength:  5",
   "*syncDraw:   False",
   "*bridge:     False",
-#ifdef XROGER
-  "*logoColor: red3",
-#endif
   0
 };
 
@@ -1602,8 +1605,8 @@ XrmOptionDescRec options[] = {
   { 0, 0, 0, 0 }
 };
 
-#ifdef XROGER
-extern void skull (Display *, Window, GC, GC, int, int, int, int);
+#ifdef XSCREENSAVER_LOGO
+extern void xscreensaver_logo (Display *,Drawable,Colormap, Bool next_frame_p);
 #endif
 
 void
@@ -1612,7 +1615,7 @@ screenhack(Display *display, Window window)
   Pixmap gray;
   int size, root, generator, this_gen;
   XWindowAttributes xgwa;
-  unsigned long bg, fg, pfg, pbg, lfg, sfg, ufg;
+  unsigned long bg, fg, pfg, pbg, sfg, ufg;
 
   size = get_integer_resource ("gridSize", "Dimension");
   root = get_boolean_resource("root", "Boolean");
@@ -1658,17 +1661,10 @@ screenhack(Display *display, Window window)
 
   bg  = get_pixel_resource ("background","Background", dpy, xgwa.colormap);
   fg  = get_pixel_resource ("foreground","Foreground", dpy, xgwa.colormap);
-  lfg = get_pixel_resource ("logoColor", "Foreground", dpy, xgwa.colormap);
   pfg = get_pixel_resource ("liveColor", "Foreground", dpy, xgwa.colormap);
   pbg = get_pixel_resource ("deadColor", "Foreground", dpy, xgwa.colormap);
   sfg = get_pixel_resource ("skipColor", "Foreground", dpy, xgwa.colormap);
   ufg = get_pixel_resource ("surroundColor", "Foreground", dpy, xgwa.colormap);
-  if (mono_p) lfg = pfg = fg;
-
-  if (lfg == bg)
-    lfg = ((bg == WhitePixel (dpy, DefaultScreen (dpy)))
-          ? BlackPixel (dpy, DefaultScreen (dpy))
-          : WhitePixel (dpy, DefaultScreen (dpy)));
 
   XSetForeground (dpy, gc, fg);
   XSetBackground (dpy, gc, bg);
@@ -1680,7 +1676,7 @@ screenhack(Display *display, Window window)
   XSetBackground (dpy, sgc, bg);
   XSetForeground (dpy, ugc, ufg);
   XSetBackground (dpy, ugc, bg);
-  XSetForeground (dpy, logo_gc, lfg);
+  XSetForeground (dpy, logo_gc, fg);
   XSetBackground (dpy, logo_gc, bg);
   XSetForeground (dpy, erase_gc, bg);
   XSetBackground (dpy, erase_gc, bg);
@@ -1692,23 +1688,14 @@ screenhack(Display *display, Window window)
   XSetStipple (dpy, ugc, gray);
   XSetFillStyle (dpy, ugc, FillOpaqueStippled);
   
-#ifdef XROGER
+#ifdef XSCREENSAVER_LOGO
   {
     int w, h;
-    XGCValues gcv;
-    GC draw_gc, erase_gc;
     /* round up to grid size */
     w = ((logo_width  / grid_width) + 1)  * grid_width;
     h = ((logo_height / grid_height) + 1) * grid_height;
-    logo_map = XCreatePixmap (dpy, win, w, h, 1);
-    gcv.foreground = 1L;
-    draw_gc = XCreateGC (dpy, logo_map, GCForeground, &gcv);
-    gcv.foreground = 0L;
-    erase_gc= XCreateGC (dpy, logo_map, GCForeground, &gcv);
-    XFillRectangle (dpy, logo_map, erase_gc, 0, 0, w, h);
-    skull (dpy, logo_map, draw_gc, erase_gc, 5, 0, w-10, h-10);
-    XFreeGC (dpy, draw_gc);
-    XFreeGC (dpy, erase_gc);
+    logo_map = XCreatePixmap (dpy, win, w, h, xgwa.depth);
+    xscreensaver_logo (dpy, logo_map, xgwa.colormap, False);
   }
 #else
   if  (!(logo_map = XCreateBitmapFromData (dpy, win, logo_bits,
diff --git a/hacks/xroger-hack.c b/hacks/xroger-hack.c
deleted file mode 100644 (file)
index f4fa116..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/* xscreensaver, Copyright (c) 1991-1994 Jamie Zawinski <jwz@jwz.org>
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation.  No representations are made about the suitability of this
- * software for any purpose.  It is provided "as is" without express or 
- * implied warranty.
- */
-
-#include "screenhack.h"
-
-char *progclass = "XRoger";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                red",
-  "*delay:             5",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-extern void skull (Display *, Window, GC, GC, int, int, int, int);
-
-void
-screenhack (dpy, window)
-     Display *dpy;
-     Window window;
-{
-  double delta = 0.005;
-  XGCValues gcv;
-  Colormap cmap;
-  GC draw_gc, erase_gc;
-  unsigned int fg;
-  XColor color, color2, color3;
-  int delay = get_integer_resource ("delay", "Integer");
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  gcv.foreground = get_pixel_resource ("background", "Background", dpy, cmap);
-  erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  fg = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  if (fg == gcv.foreground)
-    fg = ((gcv.foreground == WhitePixel (dpy, DefaultScreen (dpy)))
-         ? BlackPixel (dpy, DefaultScreen (dpy))
-         : WhitePixel (dpy, DefaultScreen (dpy)));
-  gcv.foreground = fg;
-  draw_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  color.pixel = gcv.foreground;
-  XQueryColor (dpy, cmap, &color);
-  while (1)
-    {
-      int w, h, ww, hh, x, y;
-      time_t start_time;
-      XGetWindowAttributes (dpy, window, &xgwa);
-      w = xgwa.width;
-      h = xgwa.height;
-
-      ww = 100 + random () % (w - 100);
-      hh = 100 + random () % (h - 100);
-      if (ww < 10) ww = 50;
-      if (hh < 10) hh = 50;
-      if (ww < hh) hh = ww;
-      else ww = hh;
-      x = random () % (w - ww);
-      y = random () % (h - hh);
-      XClearWindow (dpy, window);
-
-
-      skull (dpy, window, draw_gc, erase_gc, x, y, ww, hh);
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      start_time = time ((time_t *) 0);
-      if (mono_p)
-       sleep (delay);
-      else
-       while (start_time + delay > time ((time_t *) 0))
-         {
-           int H;
-           double S, V;
-           color2 = color;
-           rgb_to_hsv (color2.red, color2.green, color2.blue, &H, &S, &V);
-           V += delta;
-           if (V >= 1.0) V = 1.0, delta = -delta;
-           if (V <= 0.6) V = 0.7, delta = -delta;
-           hsv_to_rgb (H, S, V, &color2.red, &color2.green, &color2.blue);
-           color3 = color2;
-           if (XAllocColor (dpy, cmap, &color3))
-             {
-               XSetForeground (dpy, draw_gc, color3.pixel);
-               color2.pixel = color3.pixel;
-               XFreeColors (dpy, cmap, &color.pixel, 1, 0);
-             }
-           color = color2;
-           usleep (20000);
-         }
-    }
-}
diff --git a/hacks/xroger.man b/hacks/xroger.man
deleted file mode 100644 (file)
index e66af96..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-.TH XScreenSaver 1 "22-mar-93" "X Version 11"
-.SH NAME
-xroger - throbbing X logo, of a sort
-.SH SYNOPSIS
-.B xroger
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP]
-.SH DESCRIPTION
-The \fIxroger\fP program displays a replacement for the X logo with a more
-accurate Look and Feel.
-.SH OPTIONS
-.I xroger
-accepts the following options:
-.TP 8
-.B \-window
-Draw on a newly-created window.  This is the default.
-.TP 8
-.B \-root
-Draw on the root window.
-.TP 8
-.B \-mono 
-If on a color display, pretend we're on a monochrome display.
-.TP 8
-.B \-install
-Install a private colormap for the window.
-.TP 8
-.B \-visual \fIvisual\fP
-Specify which visual to use.  Legal values are the name of a visual class,
-or the id number (decimal or hex) of a specific visual.
-.SH ENVIRONMENT
-.PP
-.TP 8
-.B DISPLAY
-to get the default host and display number.
-.TP 8
-.B XENVIRONMENT
-to get the name of a resource file that overrides the global resources
-stored in the RESOURCE_MANAGER property.
-.SH BUGS
-It should also drip blood while making a horrible screeching noise.
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver (1)
-.SH COPYRIGHT
-Copyright \(co 1992, 1993 by Jamie Zawinski.  Permission to use, copy, modify, 
-distribute, and sell this software and its documentation for any purpose is 
-hereby granted without fee, provided fnord that the above copyright notice 
-appear in all copies and that both that copyright notice and this permission 
-notice appear in supporting documentation.  No representations are made about
-the  suitability of fnord this software for any purpose.  It is provided "as
-is" without express or fnord implied warranty.
-.SH AUTHOR
-Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
index f6cb4b9c5b41e2c2daf6540b946cef6bc11cf0af..18a0bda8ae1499715dcb253cf8996332ae31c99f 100644 (file)
@@ -100,6 +100,11 @@ static void init_hack(Display *dpy, Window window)
   window_gc = XCreateGC(dpy, window, gcflags, &gcv);
 
   grab_screen_image(xgwa.screen, window);
+
+  /* We might have needed this to grab the image, but if we leave this set
+     to GCSubwindowMode, then we'll *draw* right over subwindows too. */
+  XSetSubwindowMode (dpy, window_gc, ClipByChildren);
+
   if (lenses) {
     orig_map = NULL;
     pm = XCreatePixmap(dpy, window, sizex, sizey, xgwa.depth);
index 5f96facb97123b55dee7fe855b77c9c8063b07fd..2789ef4c518a92bb95f57616130f92444607da63 100644 (file)
--- a/setup.com
+++ b/setup.com
@@ -96,7 +96,6 @@ $ xjack               :== $'mydir'xjack
 $ xlyap                :== $'mydir'xlyap
 $ xmatrix      :== $'mydir'xmatrix
 $ xrayswarm    :== $'mydir'xrayswarm
-$ xroger       :== $'mydir'xroger
 $ xspirograph  :== $'mydir'xspirograph
 $ xsublim      :== $'mydir'xsublim
 $ xteevee      :== $'mydir'xteevee
index efee7f7b36c195cf6597c0c44124ac1a1a146d91..c3702d0b3534b874efdb773826bdf9627d45a7dd 100644 (file)
@@ -102,18 +102,19 @@ INCLUDES  = -I$(srcdir) -I.. @INCLUDES@
 
 SRCS           = alpha.c colors.c fade.c grabscreen.c hsv.c overlay.c \
                  resources.c spline.c usleep.c visual.c visual-gl.c xmu.c \
-                 xroger.c yarandom.c erase.c sgivideo.c xshm.c xdbe.c
+                 logo.c yarandom.c erase.c sgivideo.c xshm.c xdbe.c
 OBJS           = alpha.o colors.o fade.o grabscreen.o hsv.o overlay.o \
                  resources.o spline.o usleep.o visual.o visual-gl.o xmu.o \
-                 xroger.o yarandom.o erase.o sgivideo.o xshm.o xdbe.o
+                 logo.o yarandom.o erase.o sgivideo.o xshm.o xdbe.o
 HDRS           = alpha.h colors.h fade.h grabscreen.h hsv.h resources.h \
                  spline.h usleep.h utils.h version.h visual.h vroot.h xmu.h \
                  yarandom.h erase.h sgivideo.h xshm.h xdbe.h
+LOGOS          = logo.gif logo.xpm logo.eps
 EXTRAS         = README Makefile.in ad2c
 VMSFILES       = compile_axp.com compile_decc.com vms-gtod.c vms-gtod.h \
                  vms-strdup.c
 
-TARFILES       = $(EXTRAS) $(VMSFILES) $(SRCS) $(HDRS)
+TARFILES       = $(EXTRAS) $(VMSFILES) $(SRCS) $(HDRS) $(LOGOS)
 
 
 default: all
@@ -254,9 +255,11 @@ visual-gl.o: $(srcdir)/utils.h
 visual-gl.o: ../config.h
 visual-gl.o: $(srcdir)/visual.h
 xmu.o: ../config.h
-xroger.o: $(srcdir)/utils.h
-xroger.o: ../config.h
-xroger.o: $(srcdir)/spline.h
+logo.o: $(srcdir)/utils.h
+logo.o: ../config.h
+logo.o: $(srcdir)/resources.h
+logo.o: $(srcdir)/yarandom.h
+logo.o: $(srcdir)/spline.h
 yarandom.o: ../config.h
 yarandom.o: $(srcdir)/yarandom.h
 erase.o: $(srcdir)/utils.h
index 78fa5f487386ec53b6d56bd60e11765233f8a654..dba6ccdf6f99cc09a4539b9be2f9886a48a55dae 100644 (file)
@@ -4,6 +4,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) ERASE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) FADE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) GRABSCREEN.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) HSV.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) LOGO.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) OVERLAY.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) RESOURCES.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SGIVIDEO.C
@@ -15,7 +16,6 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VMS-GTOD.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VMS-STRDUP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XDBE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XMU.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XROGER.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XSHM.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) YARANDOM.C
 $ lib/cre utils.olb_axp
index 731076755ce06446486ddcdf0f0654b3bd7b3b9e..f12daa227f81227b9ffa8c4962689895e97c7f76 100644 (file)
@@ -4,6 +4,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) ERASE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) FADE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) GRABSCREEN.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) HSV.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) LOGO.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) OVERLAY.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) RESOURCES.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SGIVIDEO.C
@@ -15,7 +16,6 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VMS-GTOD.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VMS-STRDUP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XDBE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XMU.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XROGER.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XSHM.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) YARANDOM.C
 $ lib/cre utils.olb_decc
diff --git a/utils/logo.c b/utils/logo.c
new file mode 100644 (file)
index 0000000..fcc12ff
--- /dev/null
@@ -0,0 +1,1083 @@
+/* xscreensaver, Copyright (c) 2001 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ */
+
+/* This draws the XScreenSaver logo.
+   Logo designed by Angela Goodman <rzr_grl@yahoo.com>
+
+   The reason this C looks a lot like PostScript is that the logo was
+   designed in Illustrator, and then I (jwz) translated the EPS to C
+   by hand.
+ */
+
+#include "utils.h"
+#include "resources.h"
+#include "yarandom.h"
+#include "spline.h"
+
+extern const char *progname;
+
+typedef struct {
+  Display *dpy;
+  Drawable drawable;
+  GC gc;
+
+  double x_scale;
+  double y_scale;
+  double translate_x;
+  double translate_y;
+  double current_x;
+  double current_y;
+  double path_x;
+  double path_y;
+
+  int y_origin;
+
+  unsigned long logo_bg_pixel;
+  unsigned long logo_fg_pixel;
+  unsigned long monitor_fg_pixel;
+  unsigned long monitor_bg_pixel;
+  unsigned long flame1_fg_pixel;
+  unsigned long flame1_bg_pixel;
+  unsigned long flame2_fg_pixel;
+  unsigned long flame2_bg_pixel;
+
+  XPoint points[1024];
+  int npoints;
+
+} logo_state;
+
+
+#undef UNDEF
+#define UNDEF -65535
+
+static void
+reset (logo_state *state)
+{
+  state->x_scale = 1;
+  state->y_scale = 1;
+  state->translate_x = 0;
+  state->translate_y = 0;
+  state->current_x = UNDEF;
+  state->current_y = UNDEF;
+  state->path_x = UNDEF;
+  state->path_y = UNDEF;
+  state->npoints = 0;
+}
+
+static void
+scale (logo_state *state, double x, double y)
+{
+  state->x_scale *= x;
+  state->y_scale *= y;
+}
+
+static void
+translate (logo_state *state, double x, double y)
+{
+  state->translate_x += x;
+  state->translate_y += y;
+}
+
+static void
+newpath (logo_state *state)
+{
+  state->current_x = UNDEF;
+  state->current_y = UNDEF;
+  state->path_x = UNDEF;
+  state->path_y = UNDEF;
+
+  state->npoints = 0;
+}
+
+static void
+moveto (logo_state *state, double x, double y)
+{
+  x += state->translate_x;
+  y += state->translate_y;
+  if (state->path_x == UNDEF)
+    {
+      state->path_x = x;
+      state->path_y = y;
+    }
+  state->current_x = x;
+  state->current_y = y;
+}
+
+static void
+lineto (logo_state *state, double x, double y)
+{
+  int x1 =                   (int) (state->x_scale * state->current_x);
+  int y1 = state->y_origin - (int) (state->y_scale * state->current_y);
+  int x2 =                   (int) (state->x_scale * (x + state->translate_x));
+  int y2 = state->y_origin - (int) (state->y_scale * (y + state->translate_y));
+
+  if (state->current_x == UNDEF) abort();
+
+  if (state->npoints == 0 ||
+      state->points[state->npoints-1].x != x1 ||
+      state->points[state->npoints-1].y != y1)
+    {
+      state->points[state->npoints].x = x1;
+      state->points[state->npoints].y = y1;
+      state->npoints++;
+    }
+  state->points[state->npoints].x = x2;
+  state->points[state->npoints].y = y2;
+  state->npoints++;
+
+  moveto(state, x, y);
+}
+
+static void
+curveto (logo_state *state,
+         double x1, double y1,
+         double x2, double y2,
+         double x3, double y3)
+{
+  spline s;
+  double sx[4], sy[4];
+  int i;
+
+  if (state->current_x == UNDEF) abort();
+
+  sx[0] =                    state->x_scale * state->current_x;
+  sy[0] = state->y_origin - (state->y_scale * state->current_y);
+  sx[1] =                    state->x_scale * (x1 + state->translate_x);
+  sy[1] = state->y_origin - (state->y_scale * (y1 + state->translate_y));
+  sx[2] =                    state->x_scale * (x2 + state->translate_x);
+  sy[2] = state->y_origin - (state->y_scale * (y2 + state->translate_y));
+  sx[3] =                    state->x_scale * (x3 + state->translate_x);
+  sy[3] = state->y_origin - (state->y_scale * (y3 + state->translate_y));
+
+  memset(&s, 0, sizeof(s));
+  s.control_x = sx;
+  s.control_y = sy;
+  s.n_controls = 4;
+
+  s.allocated_points = 50;  /* just the initial buffer size */
+  s.points = (XPoint *) calloc (s.allocated_points, sizeof (*s.points));
+  compute_spline(&s);
+
+  for (i = 0; i < s.n_points; i++)
+    {
+      state->points[state->npoints].x = s.points[i].x;
+      state->points[state->npoints].y = s.points[i].y;
+      state->npoints++;
+    }
+
+  state->current_x = (state->points[state->npoints-1].x
+                      / state->x_scale);
+  state->current_y = ((state->y_origin - state->points[state->npoints-1].y)
+                      / state->y_scale);
+  free (s.points);
+}
+
+
+static void
+closepath (logo_state *state)
+{
+  if (state->current_x != UNDEF)
+    lineto (state,
+            state->path_x - state->translate_x,
+            state->path_y - state->translate_y);
+}
+
+static void
+stroke (logo_state *state)
+{
+  XDrawLines (state->dpy, state->drawable, state->gc,
+              state->points, state->npoints,
+              CoordModeOrigin);
+}
+
+static void
+fill (logo_state *state)
+{
+  XFillPolygon (state->dpy, state->drawable, state->gc,
+                state->points, state->npoints,
+                Complex, CoordModeOrigin);
+}
+
+static void
+setlinewidth (logo_state *state, double w)
+{
+  XSetLineAttributes (state->dpy, state->gc,
+                      (int) (w * state->x_scale),
+                      LineSolid, CapRound, JoinRound);
+}
+
+static void
+setcolor (logo_state *state, unsigned long pixel)
+{
+  XSetForeground (state->dpy, state->gc, pixel);
+}
+
+
+static void
+border (logo_state *state)
+{
+  setlinewidth(state, 4);
+
+  newpath (state);
+  moveto (state, 390.7588, 335.9102);
+  lineto (state, 390.7588, 333.4834);
+  lineto (state, 388.5283, 331.5156);
+  lineto (state, 385.7754, 331.5156);
+  lineto (state, 220.2090, 331.5156);
+  lineto (state, 217.4570, 331.5156);
+  lineto (state, 215.2256, 333.4834);
+  lineto (state, 215.2256, 335.9102);
+  lineto (state, 215.2256, 481.3916);
+  lineto (state, 215.2256, 483.8184);
+  lineto (state, 217.4570, 485.7856);
+  lineto (state, 220.2090, 485.7856);
+  lineto (state, 385.7754, 485.7856);
+  lineto (state, 388.5283, 485.7856);
+  lineto (state, 390.7588, 483.8184);
+  lineto (state, 390.7588, 481.3916);
+  lineto (state, 390.7588, 335.9102);
+  closepath (state);
+
+  setcolor (state, state->logo_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->logo_fg_pixel);
+  stroke (state);
+}
+
+static void
+monitor (logo_state *state)
+{
+  setlinewidth (state, 0);
+
+  setcolor (state, state->monitor_fg_pixel);
+
+  newpath (state);
+  moveto (state, 377.3408, 366.4893);
+  lineto (state, 377.3408, 363.1758);
+  lineto (state, 374.6543, 360.4893);
+  lineto (state, 371.3408, 360.4893);
+  lineto (state, 234.6743, 360.4893);
+  lineto (state, 231.3608, 360.4893);
+  lineto (state, 228.6743, 363.1758);
+  lineto (state, 228.6743, 366.4893);
+  lineto (state, 228.6743, 461.1563);
+  lineto (state, 228.6743, 464.4697);
+  lineto (state, 231.3608, 467.1563);
+  lineto (state, 234.6743, 467.1563);
+  lineto (state, 371.3408, 467.1563);
+  lineto (state, 374.6543, 467.1563);
+  lineto (state, 377.3408, 464.4697);
+  lineto (state, 377.3408, 461.1563);
+  lineto (state, 377.3408, 366.4893);
+  closepath (state);
+  fill (state);
+
+  newpath (state);
+  moveto (state, 325.7354, 369.5391);
+  lineto (state, 322.2354, 375.0391);
+  lineto (state, 318.2354, 351.5391);
+  lineto (state, 342.2354, 344.5391);
+  lineto (state, 265.4619, 344.5391);
+  lineto (state, 289.4619, 351.5391);
+  lineto (state, 285.4619, 375.0391);
+  lineto (state, 281.9619, 369.5391);
+  lineto (state, 325.7354, 369.5391);
+  closepath (state);
+  fill (state);
+
+  newpath (state);
+  moveto (state, 342.9453, 343.0273);
+  lineto (state, 342.9453, 342.1924);
+  lineto (state, 342.2539, 341.5156);
+  lineto (state, 341.4043, 341.5156);
+  lineto (state, 266.0039, 341.5156);
+  lineto (state, 265.1523, 341.5156);
+  lineto (state, 264.4639, 342.1924);
+  lineto (state, 264.4639, 343.0273);
+  lineto (state, 264.4639, 343.0273);
+  lineto (state, 264.4639, 343.8623);
+  lineto (state, 265.1523, 344.5391);
+  lineto (state, 266.0039, 344.5391);
+  lineto (state, 341.4043, 344.5391);
+  lineto (state, 342.2539, 344.5391);
+  lineto (state, 342.9453, 343.8623);
+  lineto (state, 342.9453, 343.0273);
+  lineto (state, 342.9453, 343.0273);
+  closepath (state);
+  stroke (state);
+  fill (state);
+
+  newpath (state);
+  moveto (state, 360.3711, 382.1641);
+  lineto (state, 360.3711, 378.8506);
+  lineto (state, 357.6846, 376.1641);
+  lineto (state, 354.3711, 376.1641);
+  lineto (state, 253.0381, 376.1641);
+  lineto (state, 249.7246, 376.1641);
+  lineto (state, 247.0381, 378.8506);
+  lineto (state, 247.0381, 382.1641);
+  lineto (state, 247.0381, 444.1641);
+  lineto (state, 247.0381, 447.4775);
+  lineto (state, 249.7246, 450.1641);
+  lineto (state, 253.0381, 450.1641);
+  lineto (state, 354.3711, 450.1641);
+  lineto (state, 357.6846, 450.1641);
+  lineto (state, 360.3711, 447.4775);
+  lineto (state, 360.3711, 444.1641);
+  lineto (state, 360.3711, 382.1641);
+  closepath (state);
+
+  setcolor (state, state->monitor_bg_pixel);
+  fill (state);
+}
+
+
+static void
+flames_0a (logo_state *state)
+{
+  setlinewidth (state, 2);
+
+  newpath (state);
+  moveto (state, 268.1118, 375.1055);
+  lineto (state, 278.0723, 371.9902);
+  lineto (state, 285.0166, 362.1172);
+  lineto (state, 307.6953, 356.7012);
+  lineto (state, 328.5361, 364.6758);
+  lineto (state, 339.9619, 383.5098);
+  lineto (state, 345.8936, 389.6660);
+  lineto (state, 343.8018, 403.9888);
+  lineto (state, 340.0576, 432.1499);
+  lineto (state, 332.6553, 443.0522);
+  lineto (state, 319.5771, 453.9092);
+  lineto (state, 308.0566, 485.2700);
+  lineto (state, 318.7891, 505.4521);
+  lineto (state, 325.9775, 515.9902);
+  lineto (state, 288.2168, 468.6289);
+  lineto (state, 304.2290, 442.3589);
+  lineto (state, 318.9365, 416.1494);
+  lineto (state, 313.5049, 417.6880);
+  lineto (state, 311.5088, 418.7856);
+  lineto (state, 306.4565, 424.1489);
+  lineto (state, 308.7578, 428.8916);
+  lineto (state, 297.6426, 440.9727);
+  lineto (state, 282.4565, 457.4297);
+  lineto (state, 280.1528, 461.7734);
+  lineto (state, 296.6025, 495.0522);
+  lineto (state, 301.0166, 499.0298);
+  lineto (state, 277.2920, 523.6685);
+  lineto (state, 275.7539, 530.4106);
+  lineto (state, 277.2920, 523.6685);
+  lineto (state, 293.3374, 492.3101);
+  lineto (state, 277.8828, 480.4922);
+  lineto (state, 265.1763, 462.8696);
+  lineto (state, 265.9390, 450.7354);
+  lineto (state, 264.7095, 445.1323);
+  lineto (state, 268.3765, 438.5493);
+  lineto (state, 275.4170, 425.7495);
+  lineto (state, 278.5762, 413.9326);
+  lineto (state, 284.3765, 406.5493);
+  lineto (state, 284.7471, 391.6973);
+  lineto (state, 275.8027, 404.2261);
+  lineto (state, 273.8164, 414.5488);
+  lineto (state, 252.3760, 431.5088);
+  lineto (state, 257.4292, 460.0386);
+  lineto (state, 269.9766, 491.3496);
+  lineto (state, 240.8564, 433.4292);
+  lineto (state, 244.6030, 410.4658);
+  lineto (state, 256.2168, 392.4688);
+  lineto (state, 270.3921, 380.3086);
+  lineto (state, 268.1118, 375.1055);
+  closepath (state);
+
+  setcolor (state, state->flame1_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame1_fg_pixel);
+  stroke (state);
+}
+
+
+static void
+flames_0b (logo_state *state)
+{
+  setlinewidth (state, 0.8);
+
+  newpath (state);
+  moveto (state, 263.0464, 378.707);
+  curveto (state, 271.0464, 370.0410, 280.3799, 358.7070, 303.0464, 360.0410);
+  curveto (state, 325.7129, 361.3730, 339.7129, 382.0410, 341.7129, 392.7070);
+  curveto (state, 343.7129, 403.3740, 337.7129, 432.7080, 327.0459, 444.0410);
+  curveto (state, 316.3799, 455.3740, 304.3794, 488.0410, 313.7129, 504.0410);
+  curveto (state, 323.0469, 520.0410, 283.7129, 470.7070, 299.7129, 443.3740);
+  curveto (state, 315.7129, 416.0410, 310.0547, 417.6440, 306.7129, 420.7075);
+  curveto (state, 302.7129, 424.3740, 305.1094, 429.3140, 293.3799, 442.0410);
+  curveto (state, 277.7129, 459.0410, 275.3135, 463.5659, 292.3799, 494.0410);
+
+  /* y = "2 copy curveto", e.g., curveto(x1, y1, x2, y2, x2, y2) */
+  curveto (state, 297.0464, 502.3740, 272.3330, 528.0396, 272.3330, 528.0396);
+  /* v = "currentpoint 6 2 roll curveto", e.g.,
+     curveto (current_x, current_y, x1, x2, y1, y2) */
+  curveto (state, 272.3330, 528.0396, 289.0469, 495.3745, 274.3799, 480.0410);
+  curveto (state, 259.7129, 464.7075, 260.5073, 452.0679, 261.7129, 446.0410);
+  curveto (state, 263.0464, 439.3740, 270.3799, 426.0410, 275.0464, 416.0410);
+  curveto (state, 279.7129, 406.0410, 280.0986, 390.5684, 272.3799, 406.7075);
+  curveto (state, 268.7129, 414.3740, 246.3794, 432.0405, 254.7129, 460.3740);
+  curveto (state, 264.7129, 494.3740, 234.3799, 434.0410, 242.3799, 412.7075);
+  curveto (state, 250.3799, 391.3730, 263.0464, 378.7070, 263.0464, 378.7070);
+  closepath (state);
+
+  setcolor (state, state->flame2_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame2_fg_pixel);
+  stroke (state);
+}
+
+
+static void
+flames_1a (logo_state *state)
+{
+  setlinewidth (state, 2);
+
+  newpath (state);
+  moveto (state, 268.1118, 375.1055);
+  lineto (state, 278.0723, 371.9902);
+  lineto (state, 285.0166, 362.1172);
+  lineto (state, 307.6953, 356.7012);
+  lineto (state, 328.5361, 364.6758);
+  lineto (state, 339.9619, 383.5098);
+  lineto (state, 345.8936, 389.666);
+  lineto (state, 343.8018, 403.9888);
+  lineto (state, 340.0576, 432.1499);
+  lineto (state, 332.6553, 443.0522);
+  lineto (state, 319.5771, 453.9092);
+  lineto (state, 308.0566, 485.27);
+  lineto (state, 318.7891, 505.4521);
+  lineto (state, 325.9775, 515.9902);
+  lineto (state, 288.2168, 468.6289);
+  lineto (state, 304.229, 442.3589);
+  lineto (state, 318.9365, 416.1494);
+  lineto (state, 313.5049, 417.688);
+  lineto (state, 311.5088, 418.7856);
+  lineto (state, 306.4565, 424.1489);
+  lineto (state, 308.7578, 428.8916);
+  lineto (state, 297.6426, 440.9727);
+  lineto (state, 282.4565, 457.4297);
+  lineto (state, 280.1528, 461.7734);
+  lineto (state, 296.6025, 495.0522);
+  lineto (state, 301.0166, 499.0298);
+  lineto (state, 277.292, 523.6685);
+  lineto (state, 275.7539, 530.4106);
+  lineto (state, 277.292, 523.6685);
+  lineto (state, 293.3374, 492.3101);
+  lineto (state, 277.8828, 480.4922);
+  lineto (state, 265.1763, 462.8696);
+  lineto (state, 265.939, 450.7354);
+  lineto (state, 264.7095, 445.1323);
+  lineto (state, 268.3765, 438.5493);
+  lineto (state, 275.417, 425.7495);
+  lineto (state, 278.5762, 413.9326);
+  lineto (state, 284.3765, 406.5493);
+  lineto (state, 284.7471, 391.6973);
+  lineto (state, 275.8027, 404.2261);
+  lineto (state, 273.8164, 414.5488);
+  lineto (state, 252.376, 431.5088);
+  lineto (state, 257.4292, 460.0386);
+  lineto (state, 269.9766, 491.3496);
+  lineto (state, 240.8564, 433.4292);
+  lineto (state, 244.603, 410.4658);
+  lineto (state, 256.2168, 392.4688);
+  lineto (state, 270.3921, 380.3086);
+  lineto (state, 268.1118, 375.1055);
+  closepath (state);
+
+  setcolor (state, state->flame1_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame1_fg_pixel);
+  stroke (state);
+}
+
+static void
+flames_1b (logo_state *state)
+{
+  setlinewidth (state, 0.8);
+
+  newpath (state);
+  moveto (state, 271.0469, 382.041);
+  curveto (state, 279.0469, 373.375, 288.3804, 362.041, 311.0469, 363.375);
+  curveto (state, 333.7129, 364.707, 347.7129, 385.375, 349.7129, 396.0405);
+  curveto (state, 351.7129, 406.707, 347.3818, 437.8853, 335.0469, 447.374);
+  curveto (state, 313.0, 464.3335, 312.3789, 491.374, 321.7129, 507.374);
+  curveto (state, 331.0469, 523.374, 291.7134, 474.04, 307.7129, 446.707);
+  curveto (state, 323.7129, 419.374, 318.0547, 420.9771, 314.7129, 424.0405);
+  curveto (state, 310.7129, 427.707, 313.1094, 432.647, 301.3804, 445.374);
+  curveto (state, 285.7134, 462.374, 283.314, 466.8989, 300.3804, 497.374);
+  curveto (state, 305.0474, 505.707, 277.667, 518.9995, 277.667, 518.9995);
+  curveto (state, 277.667, 518.9995, 297.0474, 498.7075, 282.3804, 483.374);
+  curveto (state, 267.7134, 468.0405, 268.5078, 455.4009, 269.7134, 449.374);
+  curveto (state, 271.0469, 442.707, 278.3804, 429.374, 283.0469, 419.374);
+  curveto (state, 287.7134, 409.374, 288.0991, 393.9023, 280.3804, 410.0405);
+  curveto (state, 276.7134, 417.707, 254.3799, 435.3735, 262.7134, 463.707);
+  curveto (state, 272.7134, 497.707, 246.3335, 428.3335, 254.3335, 407.0);
+  curveto (state, 262.3335, 385.666, 271.0469, 382.041, 271.0469, 382.041);
+  closepath (state);
+
+  setcolor (state, state->flame2_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame2_fg_pixel);
+  stroke (state);
+}
+
+
+static void
+flames_2a (logo_state *state)
+{
+  setlinewidth (state, 2);
+
+  newpath (state);
+  moveto (state, 268.1118, 375.1055);
+  lineto (state, 278.0723, 371.9902);
+  lineto (state, 285.0166, 362.1172);
+  lineto (state, 307.6953, 356.7012);
+  lineto (state, 328.5361, 364.6758);
+  lineto (state, 335.0684, 383.8438);
+  lineto (state, 341.0, 390.0);
+  lineto (state, 338.9082, 404.3228);
+  lineto (state, 340.0576, 432.1499);
+  lineto (state, 332.6553, 443.0522);
+  lineto (state, 319.5771, 453.9092);
+  lineto (state, 312.6006, 479.4844);
+  lineto (state, 323.333, 499.6665);
+  lineto (state, 330.5215, 510.2046);
+  lineto (state, 288.2168, 468.6289);
+  lineto (state, 304.229, 442.3589);
+  lineto (state, 318.9365, 416.1494);
+  lineto (state, 313.5049, 417.688);
+  lineto (state, 311.5088, 418.7856);
+  lineto (state, 306.4565, 424.1489);
+  lineto (state, 308.7578, 428.8916);
+  lineto (state, 297.6426, 440.9727);
+  lineto (state, 282.4565, 457.4297);
+  lineto (state, 280.1528, 461.7734);
+  lineto (state, 296.6025, 495.0522);
+  lineto (state, 301.0166, 499.0298);
+  lineto (state, 277.292, 523.6685);
+  lineto (state, 275.7539, 530.4106);
+  lineto (state, 277.292, 523.6685);
+  lineto (state, 293.3374, 492.3101);
+  lineto (state, 277.8828, 480.4922);
+  lineto (state, 265.1763, 462.8696);
+  lineto (state, 265.939, 450.7354);
+  lineto (state, 264.7095, 445.1323);
+  lineto (state, 268.3765, 438.5493);
+  lineto (state, 275.417, 425.7495);
+  lineto (state, 278.5762, 413.9326);
+  lineto (state, 284.3765, 406.5493);
+  lineto (state, 284.7471, 391.6973);
+  lineto (state, 275.8027, 404.2261);
+  lineto (state, 273.8164, 414.5488);
+  lineto (state, 251.8291, 429.9214);
+  lineto (state, 255.3203, 464.5493);
+  lineto (state, 254.7437, 462.4072);
+  lineto (state, 247.2534, 427.2969);
+  lineto (state, 251.0, 404.3335);
+  lineto (state, 262.6138, 386.3359);
+  lineto (state, 270.3921, 380.3086);
+  lineto (state, 268.1118, 375.1055);
+  closepath (state);
+
+  setcolor (state, state->flame1_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame1_fg_pixel);
+  stroke (state);
+}
+
+static void
+flames_2b (logo_state *state)
+{
+  setlinewidth (state, 0.8);
+
+  newpath (state);
+  moveto (state, 271.0469, 382.041);
+  curveto (state, 279.0469, 373.375, 288.3804, 362.041, 311.0469, 363.375);
+  curveto (state, 333.7129, 364.707, 336.333, 386.334, 338.333, 397.0);
+  curveto (state, 340.333, 407.6665, 347.3818, 437.8853, 335.0469, 447.374);
+  curveto (state, 313.0, 464.3335, 312.3789, 491.374, 321.7129, 507.374);
+  curveto (state, 331.0469, 523.374, 291.7134, 474.04, 307.7129, 446.707);
+  curveto (state, 323.7129, 419.374, 318.0547, 420.9771, 314.7129, 424.0405);
+  curveto (state, 310.7129, 427.707, 313.1094, 432.647, 301.3804, 445.374);
+  curveto (state, 285.7134, 462.374, 283.314, 466.8989, 300.3804, 497.374);
+  curveto (state, 305.0474, 505.707, 277.667, 518.9995, 277.667, 518.9995);
+  curveto (state, 277.667, 518.9995, 297.0474, 498.7075, 282.3804, 483.374);
+  curveto (state, 267.7134, 468.0405, 268.5078, 455.4009, 269.7134, 449.374);
+  curveto (state, 271.0469, 442.707, 278.3804, 429.374, 283.0469, 419.374);
+  curveto (state, 287.7134, 409.374, 288.0991, 393.9023, 280.3804, 410.0405);
+  curveto (state, 276.7134, 417.707, 254.3799, 435.3735, 262.7134, 463.707);
+  curveto (state, 272.7134, 497.707, 246.3335, 428.3335, 254.3335, 407.0);
+  curveto (state, 262.3335, 385.666, 271.0469, 382.041, 271.0469, 382.041);
+  closepath (state);
+
+  setcolor (state, state->flame2_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame2_fg_pixel);
+  stroke (state);
+}
+
+
+static void
+flames_3a (logo_state *state)
+{
+  setlinewidth (state, 2);
+
+  newpath (state);
+  moveto (state, 268.1118, 375.1055);
+  lineto (state, 278.0723, 371.9902);
+  lineto (state, 285.0166, 362.1172);
+  lineto (state, 307.6953, 356.7012);
+  lineto (state, 328.5361, 364.6758);
+  lineto (state, 339.9619, 383.5098);
+  lineto (state, 345.8936, 389.666);
+  lineto (state, 343.8018, 403.9888);
+  lineto (state, 334.4023, 428.0977);
+  lineto (state, 327.0, 439.0);
+  lineto (state, 309.667, 469.6665);
+  lineto (state, 308.2676, 473.4844);
+  lineto (state, 319.0, 493.6665);
+  lineto (state, 307.667, 482.0);
+  lineto (state, 288.2168, 468.6289);
+  lineto (state, 304.229, 442.3589);
+  lineto (state, 318.9365, 416.1494);
+  lineto (state, 313.5049, 417.688);
+  lineto (state, 311.5088, 418.7856);
+  lineto (state, 306.4565, 424.1489);
+  lineto (state, 305.4487, 426.2524);
+  lineto (state, 294.3335, 438.3335);
+  lineto (state, 279.1475, 454.7905);
+  lineto (state, 280.1528, 461.7734);
+  lineto (state, 296.6025, 495.0522);
+  lineto (state, 301.0166, 499.0298);
+  lineto (state, 299.5381, 511.5913);
+  lineto (state, 298.0, 518.3335);
+  lineto (state, 299.5381, 511.5913);
+  lineto (state, 293.3374, 492.3101);
+  lineto (state, 277.8828, 480.4922);
+  lineto (state, 265.1763, 462.8696);
+  lineto (state, 265.939, 450.7354);
+  lineto (state, 264.7095, 445.1323);
+  lineto (state, 268.3765, 438.5493);
+  lineto (state, 275.417, 425.7495);
+  lineto (state, 278.5762, 413.9326);
+  lineto (state, 284.3765, 406.5493);
+  lineto (state, 284.7471, 391.6973);
+  lineto (state, 275.8027, 404.2261);
+  lineto (state, 273.8164, 414.5488);
+  lineto (state, 252.376, 431.5088);
+  lineto (state, 257.4292, 460.0386);
+  lineto (state, 269.9766, 491.3496);
+  lineto (state, 240.8564, 433.4292);
+  lineto (state, 244.603, 410.4658);
+  lineto (state, 256.2168, 392.4688);
+  lineto (state, 270.3921, 380.3086);
+  lineto (state, 268.1118, 375.1055);
+  closepath (state);
+
+  setcolor (state, state->flame1_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame1_fg_pixel);
+  stroke (state);
+}
+
+static void
+flames_3b (logo_state *state)
+{
+  setlinewidth (state, 0.8);
+
+  newpath (state);
+  moveto (state, 263.0464, 378.707);
+  curveto (state, 271.0464, 370.041, 280.3799, 358.707, 303.0464, 360.041);
+  curveto (state, 325.7129, 361.373, 340.4473, 381.9297, 341.7129, 392.707);
+  curveto (state, 343.0, 403.6665, 331.667, 428.3335, 321.0, 439.6665);
+  curveto (state, 310.334, 450.9995, 308.584, 461.5942, 310.667, 480.0);
+  curveto (state, 312.667, 497.6665, 299.9536, 463.626, 304.6665, 438.3335);
+  lineto (state, 305.3335, 432.3335);
+  curveto (state, 309.0, 419.3335, 316.667, 408.3335, 288.0, 436.6665);
+  curveto (state, 271.5576, 452.9175, 275.3135, 463.5659, 292.3799, 494.041);
+  curveto (state, 297.0464, 502.374, 272.333, 528.0396, 272.333, 528.0396);
+  curveto (state, 272.333, 528.0396, 289.0469, 495.3745, 274.3799, 480.041);
+  curveto (state, 259.7129, 464.7075, 260.5073, 452.0679, 261.7129, 446.041);
+  curveto (state, 263.0464, 439.374, 270.3799, 426.041, 275.0464, 416.041);
+  curveto (state, 279.7129, 406.041, 283.3696, 392.5908, 272.3799, 406.7075);
+  curveto (state, 268.0, 412.3335, 246.3794, 432.0405, 254.7129, 460.374);
+  curveto (state, 264.7129, 494.374, 240.6665, 435.0, 248.6665, 413.6665);
+  curveto (state, 256.6665, 392.332, 263.0464, 378.707, 263.0464, 378.707);
+  closepath (state);
+
+  setcolor (state, state->flame2_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame2_fg_pixel);
+  stroke (state);
+}
+
+
+static void
+flames_4a (logo_state *state)
+{
+  flames_3a (state);
+}
+
+static void
+flames_4b (logo_state *state)
+{
+  setlinewidth (state, 0.8);
+
+  newpath (state);
+  moveto (state, 263.0464, 378.707);
+  curveto (state, 271.0464, 370.041, 280.3799, 358.707, 303.0464, 360.041);
+  curveto (state, 325.7129, 361.373, 340.4473, 381.9297, 341.7129, 392.707);
+  curveto (state, 343.0, 403.6665, 331.667, 428.3335, 321.0, 439.6665);
+  curveto (state, 310.334, 450.9995, 306.5693, 463.2358, 319.667, 476.3335);
+  curveto (state, 320.667, 477.3335, 299.9536, 463.626, 304.6665, 438.3335);
+  lineto (state, 305.3335, 432.3335);
+  curveto (state, 309.0, 419.3335, 316.667, 408.3335, 288.0, 436.6665);
+  curveto (state, 271.5576, 452.9175, 275.3135, 463.5659, 292.3799, 494.041);
+  curveto (state, 297.0464, 502.374, 272.333, 528.0396, 272.333, 528.0396);
+  curveto (state, 272.333, 528.0396, 289.0469, 495.3745, 274.3799, 480.041);
+  curveto (state, 259.7129, 464.7075, 260.5073, 452.0679, 261.7129, 446.041);
+  curveto (state, 263.0464, 439.374, 270.3799, 426.041, 275.0464, 416.041);
+  curveto (state, 279.7129, 406.041, 313.667, 376.333, 272.3799, 406.7075);
+  curveto (state, 265.9966, 411.4038, 251.333, 417.0, 259.6665, 445.3335);
+  curveto (state, 269.6665, 479.3335, 247.6665, 417.0, 248.6665, 413.6665);
+  curveto (state, 255.2134, 391.8418, 263.0464, 378.707, 263.0464, 378.707);
+  closepath (state);
+
+  setcolor (state, state->flame2_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame2_fg_pixel);
+  stroke (state);
+}
+
+
+static void flames_6a (logo_state *);
+static void flames_6b (logo_state *);
+
+static void
+flames_5a (logo_state *state)
+{
+  unsigned long a = state->flame1_bg_pixel;
+  unsigned long b = state->flame2_bg_pixel;
+  state->flame1_bg_pixel = b;
+  state->flame2_bg_pixel = a;
+  flames_6a (state);
+  state->flame1_bg_pixel = a;
+  state->flame2_bg_pixel = b;
+}
+
+static void
+flames_5b (logo_state *state)
+{
+  unsigned long a = state->flame1_bg_pixel;
+  unsigned long b = state->flame2_bg_pixel;
+  state->flame1_bg_pixel = b;
+  state->flame2_bg_pixel = a;
+  flames_6b (state);
+  state->flame1_bg_pixel = a;
+  state->flame2_bg_pixel = b;
+}
+
+
+static void
+flames_6a (logo_state *state)
+{
+  flames_3a (state);
+}
+
+static void
+flames_6b (logo_state *state)
+{
+  setlinewidth (state, 0.8);
+
+  newpath (state);
+  moveto (state, 263.0464, 378.707);
+  curveto (state, 271.0464, 370.041, 280.3799, 358.707, 303.0464, 360.041);
+  curveto (state, 325.7129, 361.373, 340.4473, 381.9297, 341.7129, 392.707);
+  curveto (state, 343.0, 403.6665, 331.667, 428.3335, 321.0, 439.6665);
+  curveto (state, 310.334, 450.9995, 306.5693, 463.2358, 319.667, 476.3335);
+  curveto (state, 320.667, 477.3335, 299.9536, 463.626, 304.6665, 438.3335);
+  lineto (state, 305.3335, 432.3335);
+  curveto (state, 309.0, 419.3335, 316.667, 408.3335, 288.0, 436.6665);
+  curveto (state, 271.5576, 452.9175, 275.3135, 463.5659, 292.3799, 494.041);
+  curveto (state, 297.0464, 502.374, 272.333, 528.0396, 272.333, 528.0396);
+  curveto (state, 272.333, 528.0396, 289.0469, 495.3745, 274.3799, 480.041);
+  curveto (state, 259.7129, 464.7075, 260.5073, 452.0679, 261.7129, 446.041);
+  curveto (state, 263.0464, 439.374, 270.3799, 426.041, 275.0464, 416.041);
+  curveto (state, 279.7129, 406.041, 313.667, 376.333, 272.3799, 406.7075);
+  curveto (state, 265.9966, 411.4038, 251.333, 417.0, 259.6665, 445.3335);
+  curveto (state, 269.6665, 479.3335, 247.6665, 417.0, 248.6665, 413.6665);
+  curveto (state, 255.2134, 391.8418, 263.0464, 378.707, 263.0464, 378.707);
+  closepath (state);
+
+  setcolor (state, state->flame2_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame2_fg_pixel);
+  stroke (state);
+}
+
+static void
+flames_6c (logo_state *state)
+{
+  setlinewidth (state, 0.8);
+
+  newpath (state);
+  moveto (state, 293.7134, 370.5859);
+  curveto (state, 299.6665, 366.333, 303.9854, 362.6934, 317.7656, 359.4023);
+  curveto (state, 331.0, 361.667, 337.3711, 375.6924, 340.9766, 379.4326);
+  curveto (state, 339.7051, 388.1357, 333.9941, 402.7852, 329.4961, 409.4097);
+  curveto (state, 318.9629, 428.0435, 310.1455, 425.4028, 316.667, 437.6665);
+  curveto (state, 309.7803, 430.5771, 305.9297, 427.4131, 315.6602, 411.4507);
+  curveto (state, 324.5957, 395.5244, 321.2949, 396.46, 320.082, 397.127);
+  curveto (state, 317.0137, 400.3857, 316.4004, 401.6636, 309.6465, 409.0044);
+  curveto (state, 300.4189, 419.0044, 299.2461, 416.7344, 309.2402, 436.9556);
+  curveto (state, 310.2539, 440.3984, 315.3184, 446.2725, 314.1016, 457.4121);
+  curveto (state, 315.0371, 453.3154, 309.041, 441.8022, 299.6504, 434.6216);
+  curveto (state, 291.9297, 423.9136, 292.3931, 416.54, 291.646, 413.1357);
+  curveto (state, 293.874, 409.1357, 298.1523, 401.3579, 300.0718, 394.1777);
+  curveto (state, 303.5962, 389.6914, 289.9995, 396.4463, 289.9995, 396.4463);
+  curveto (state, 285.3413, 401.5103, 269.5962, 401.9976, 272.6665, 419.3335);
+  curveto (state, 269.3335, 402.0, 277.1523, 406.0244, 279.4287, 392.0713);
+  curveto (state, 286.4858, 381.1357, 291.6665, 375.0, 293.7134, 370.5859);
+  closepath (state);
+
+  setcolor (state, state->flame1_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame1_fg_pixel);
+  stroke (state);
+}
+
+
+static void
+flames_7a (logo_state *state)
+{
+  setlinewidth (state, 2);
+
+  newpath (state);
+  moveto (state, 268.1118, 375.1055);
+  lineto (state, 278.0723, 371.9902);
+  lineto (state, 285.0166, 362.1172);
+  lineto (state, 307.6953, 356.7012);
+  lineto (state, 328.5361, 364.6758);
+  lineto (state, 339.9619, 383.5098);
+  lineto (state, 345.8936, 389.666);
+  lineto (state, 343.8018, 403.9888);
+  lineto (state, 340.0576, 432.1499);
+  lineto (state, 332.6553, 443.0522);
+  lineto (state, 319.5771, 453.9092);
+  lineto (state, 308.0566, 485.27);
+  lineto (state, 318.7891, 505.4521);
+  lineto (state, 325.9775, 515.9902);
+  lineto (state, 288.2168, 468.6289);
+  lineto (state, 304.229, 442.3589);
+  lineto (state, 318.9365, 416.1494);
+  lineto (state, 313.5049, 417.688);
+  lineto (state, 311.5088, 418.7856);
+  lineto (state, 306.4565, 424.1489);
+  lineto (state, 308.7578, 428.8916);
+  lineto (state, 297.6426, 440.9727);
+  lineto (state, 282.4565, 457.4297);
+  lineto (state, 280.1528, 461.7734);
+  lineto (state, 296.6025, 495.0522);
+  lineto (state, 301.0166, 499.0298);
+  lineto (state, 277.292, 523.6685);
+  lineto (state, 275.7539, 530.4106);
+  lineto (state, 277.292, 523.6685);
+  lineto (state, 293.3374, 492.3101);
+  lineto (state, 277.8828, 480.4922);
+  lineto (state, 265.1763, 462.8696);
+  lineto (state, 265.939, 450.7354);
+  lineto (state, 264.7095, 445.1323);
+  lineto (state, 268.3765, 438.5493);
+  lineto (state, 275.417, 425.7495);
+  lineto (state, 278.5762, 413.9326);
+  lineto (state, 284.3765, 406.5493);
+  lineto (state, 284.7471, 391.6973);
+  lineto (state, 275.8027, 404.2261);
+  lineto (state, 273.8164, 414.5488);
+  lineto (state, 252.376, 431.5088);
+  lineto (state, 257.4292, 460.0386);
+  lineto (state, 269.9766, 491.3496);
+  lineto (state, 240.8564, 433.4292);
+  lineto (state, 244.603, 410.4658);
+  lineto (state, 256.2168, 392.4688);
+  lineto (state, 270.3921, 380.3086);
+  lineto (state, 268.1118, 375.1055);
+  closepath (state);
+
+  setcolor (state, state->flame1_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame1_fg_pixel);
+  stroke (state);
+}
+
+
+static void
+flames_7b (logo_state *state)
+{
+  setlinewidth (state, 0.8);
+
+  newpath (state);
+  moveto (state,  262.0464, 374.7109);
+  curveto (state, 270.0464, 366.9424, 279.3799, 356.7822, 302.0469, 357.9785);
+  curveto (state, 324.7129, 359.1719, 338.7129, 377.6992, 340.7129, 387.2607);
+  curveto (state, 342.7129, 396.8228, 336.7129, 423.1182, 326.0459, 433.2773);
+  curveto (state, 315.3799, 443.4365, 303.3789, 472.7197, 312.7129, 487.0625);
+  curveto (state, 322.0469, 501.4053, 282.7129, 457.1812, 298.7129, 432.6797);
+  curveto (state, 314.7129, 408.1777, 309.0547, 409.6147, 305.7129, 412.3608);
+  curveto (state, 301.7129, 415.6475, 304.1094, 420.0757, 292.3799, 431.4844);
+  curveto (state, 276.7129, 446.7236, 274.3135, 450.7798, 291.3799, 478.0981);
+  curveto (state, 296.0464, 485.5684, 271.333, 508.5752, 271.333, 508.5752);
+  curveto (state, 271.333, 508.5752, 288.0469, 479.2935, 273.3799, 465.5483);
+  curveto (state, 258.7129, 451.8032, 259.5073, 440.4727, 260.7129, 435.0703);
+  curveto (state, 262.0464, 429.0938, 269.3799, 417.1416, 274.0464, 408.1777);
+  curveto (state, 278.7129, 399.2134, 279.0986, 385.3438, 271.3799, 399.811);
+  curveto (state, 267.7129, 406.6831, 245.3794, 422.52, 253.7129, 447.9185);
+  curveto (state, 263.7129, 478.397, 233.3799, 424.313, 241.3799, 405.1895);
+  curveto (state, 249.3799, 386.0645, 262.0464, 374.7109, 262.0464, 374.7109);
+  closepath (state);
+
+  setcolor (state, state->flame2_bg_pixel);
+  fill (state);
+
+  setcolor (state, state->flame2_fg_pixel);
+  stroke (state);
+}
+
+
+static unsigned long
+alloccolor (Display *dpy, Colormap cmap, char *s)
+{
+  XColor color;
+  if (!XParseColor (dpy, cmap, s, &color))
+    {
+      fprintf (stderr, "%s: can't parse color %s\n", progname, s);
+      return -1;
+    }
+  if (! XAllocColor (dpy, cmap, &color))
+    {
+      fprintf (stderr, "%s: couldn't allocate color %s\n", progname, s);
+      return -1;
+    }
+  return color.pixel;
+}
+
+
+/* Draws the logo centered in the given Drawable (presumably a Pixmap.)
+   next_frame_p means randomize the flame shape.
+ */
+void
+xscreensaver_logo (Display *dpy, Drawable dest, Colormap cmap,
+                   Bool next_frame_p)
+{
+  XGCValues gcv;
+  logo_state S;
+  logo_state *state = &S;
+  int mono_p;
+
+  unsigned int w, h, depth;
+  unsigned long bg;
+
+  state->dpy = dpy;
+  state->drawable = dest;
+  state->gc = XCreateGC (dpy, dest, 0, &gcv);
+
+  {
+    Window root;
+    int x, y;
+    unsigned int bw;
+    XGetGeometry (dpy, dest, &root, &x, &y, &w, &h, &bw, &depth);
+    mono_p = (depth == 1);
+    state->y_origin = h;
+  }
+
+  if (mono_p)
+    {
+      unsigned long white = 1;
+      unsigned long black = 0;
+      bg = black;
+      state->logo_bg_pixel    = white;
+      state->logo_fg_pixel    = black;
+      state->monitor_bg_pixel = white;
+      state->monitor_fg_pixel = black;
+      state->flame1_bg_pixel  = white;
+      state->flame1_fg_pixel  = black;
+      state->flame2_bg_pixel  = white;
+      state->flame2_fg_pixel  = black;
+    }
+  else
+    {
+      bg = get_pixel_resource ("background", "Background", dpy, cmap);
+      state->logo_bg_pixel    = alloccolor (dpy, cmap, "#FFFFFF");
+      state->logo_fg_pixel    = alloccolor (dpy, cmap, "#000000");
+/*      state->monitor_bg_pixel = alloccolor (dpy, cmap, "#00AA00");*/
+      state->monitor_bg_pixel = alloccolor (dpy, cmap, "#FFFFFF");
+      state->monitor_fg_pixel = alloccolor (dpy, cmap, "#000000");
+      state->flame1_bg_pixel  = alloccolor (dpy, cmap, "#FFA500");
+      state->flame1_fg_pixel  = alloccolor (dpy, cmap, "#000000");
+      state->flame2_bg_pixel  = alloccolor (dpy, cmap, "#FF0000");
+      state->flame2_fg_pixel  = alloccolor (dpy, cmap, "#000000");
+    }
+
+  setcolor (state, bg);
+  XFillRectangle (dpy, dest, state->gc, 0, 0, w, h);
+
+  reset (state);
+  scale (state, w / 220.0, w / 220.0);
+  translate (state, -193, -315);
+
+  border (state);
+  monitor (state);
+
+  if (!next_frame_p)
+    {
+      flames_0a (state);
+      flames_0b (state);
+    }
+  else
+    {
+      static int tick = 0;
+      static int tick2 = 0;
+      if (++tick2 > 3) tick2 = 0;
+      if (tick2 == 0)
+        if (++tick > 7) tick = 0;
+      switch (tick) {
+      case 0: flames_0a (state); flames_0b (state); break;
+      case 1: flames_1a (state); flames_1b (state); break;
+      case 2: flames_2a (state); flames_2b (state); break;
+      case 3: flames_3a (state); flames_3b (state); break;
+      case 4: flames_4a (state); flames_4b (state); break;
+      case 5: flames_5a (state); flames_5b (state); break;
+      case 6: flames_6a (state); flames_6b (state); flames_6c (state); break;
+      case 7: flames_7a (state); flames_7b (state); break;
+      default: abort(); break;
+      }
+    }
+
+  XFreeGC (dpy, state->gc);
+}
diff --git a/utils/logo.eps b/utils/logo.eps
new file mode 100644 (file)
index 0000000..4843e79
--- /dev/null
@@ -0,0 +1,8058 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(R) 8.0
+%%AI8_CreatorVersion: 8
+%%For: (rzr Grl) (evol engel)
+%%Title: (xscreensaver.eps)
+%%CreationDate: (1/30/01) (8:38 PM)
+%%BoundingBox: 179 249 429 531
+%%HiResBoundingBox: 179.3335 249.9619 428.666 530.8477
+%%DocumentProcessColors: Black
+%%DocumentFonts: Device
+%%DocumentSuppliedFonts: Device
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_typography_AI5 1.0 1
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 4.0
+%AI3_ColorUsage: Color
+%AI3_IncludePlacedImages
+%AI7_ImageSettings: 1
+%%DocumentCustomColors: (PANTONE 152 CVC)
+%%+ (PANTONE 485 CVC)
+%%CMYKCustomColor: 0 0.51 1 0 (PANTONE 152 CVC)
+%%+ 0.91 0.01 0.93 0 (PANTONE 354 2X CVC)
+%%+ 0 1 0.91 0 (PANTONE 485 CVC)
+%%CMYKProcessColor: 1 1 1 1 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 131071 -1
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 30 31 582 761
+%AI3_DocumentPreview: Header
+%AI5_ArtSize: 612 792
+%AI5_RulerUnits: 2
+%AI5_ArtFlags: 1 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 4
+%AI8_OpenToView: -109 667 1 718 623 18 0 1 153 44 0 0
+%AI5_OpenViewLayers: 3733
+%%PageOrigin:30 31
+%%AI3_PaperRect:-30 761 582 -31
+%%AI3_Margin:30 -31 -30 31
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI7_Thumbnail: 116 128 8
+%%BeginData: 12612 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD2BFF2727FD71FF2052F87DFD70FF76F8F8F8A8FD6FFFA8FD04F8
+%FD70FF4B69F8F852FD6FFFA84468F8F87DFD6FFF27FC44F827A8FD6EFF27
+%8C8C20F827A8FD6DFFA844B08C27F852FD6DFFA820FCFC4426F87DFD6DFF
+%20B0FCB0204AF8FD09FFA1FFA8FD61FF4B8CFCFC8CF8F827FD07FF7DF87D
+%F87DFD60FF528DFCB0FC4B26F8A8FD06FF204B27F8FD61FF7D68FCFCFC8C
+%4AF827FD05FF27F827F852FD61FFA869FCB0FCB02074F8FD04FFA8204BF8
+%F8A8FD61FFA844FD04FC4492F87DFFFFFF2068F8F8F8FD62FF7D69FCB0FC
+%B02050F8A8FFFF526944F8F852FD62FF7668FCFCFC684AF827FFFFA8208C
+%68F8F852FD62FF27B0FCB0FC274AF87DFFFF7644B02050F87DFD45FFA852
+%FD1B2720FCFCFC6820F8F8272727F8FCFC206EF8F8FD202752A8FD22FF7D
+%FD1CF82044B0FCB0F874FD04F82069FCB0449EFD23F827FD22FF27F8F8F8
+%FD1927F8FCFCFC4474F8F8272727208CFCFC6844F8F8FD1F27F8F8F87DFD
+%21FFF8F8F8FD19FF4B69FCB08C206EF852FFFFA844B0FCB06898F87DFD1F
+%FFA8F8F827FD21FFF8F827FD18FF2744FCFCFC684426F8A8FFFF4B68FCFC
+%FC8C44F827FD20FFF8F827FD21FFF8F827FD17FF764BFCB0FCB0F8C0F852
+%FFFFFF27FCB0FCB0FC4B2027FD20FFF8F827FD21FFF8F827FD16FF7D20FD
+%04FC8C4A44F87DFFFFA844FD05FC204AF8FD20FFF8F827FD21FFF8F827FD
+%16FF278CB0FCB0FC696E26F8FFFFFF768DFCB0FCB0FC444AF87DFD1FFFF8
+%F827FD21FFF8F827FD10FF4BA1A8FFFF5268FD05FC20C0F852FFFFFF4B8C
+%FD05FC6844F852FD1FFFF8F827FD21FFF8F827FD05FF7D52275227522752
+%2752274B27F8F85220B0FCB0FCB0FC4B92F8F852275220B0FCB0FCB0FCB0
+%2026F852275227522752275227522752275227522752275227522752A8FD
+%05FFF8F827FD21FFF8F827FD04FF52FD0AF8206820F8F8F88CFD05FC8C44
+%74FD05F820FD07FC44FD1CF87DFD04FFF8F827FD21FFF8F827FFFFFFA8FD
+%0AF8204444F826F820FCB0FCB0FCB08C744AFD05F844B0FCB0FCB0FCB068
+%4AFD1BF827FD04FFF8F827FD21FFF8F827FFFFFFA8FD0BF88CF8F8F82068
+%FD06FC8C444AFD05F868FD08FC2020FD1BF8FD04FFF8F827FD21FFF8F827
+%FFFFFFA8FD0AF8458C20F8F820B0FCB0FCB0FCB0FC266EFD05F844B0FCB0
+%FCB0FCB0FC6944FD1BF8FD04FFF8F827FD21FFF8F827FFFFFFA8FD09F820
+%6868F8F8F820FD08FC449EFD05F868FD08FC8C20FD1BF8FD04FFF8F827FD
+%21FFF8F827FFFFFF7DFD0AF8B044F8F8F820B0FCB0FCB0FCB0FC8D2026FD
+%04F844B0FCB0FCB0FCB0FCB0446EFD1AF8FD04FFF8F827FD21FFF8F827FF
+%FFFFA8FD09F844FC20F8F8F820FD09FC4420FD04F820FD0AFC2020FD19F8
+%FD04FFF8F827FD21FFF8F827FFFFFFA8FD08F8218CB02026F8F820B0FCB0
+%FCB0FCB0FCB0FC20FD04F820B0FCB0FCB0FCB0FCB0FC6944FD19F8FD04FF
+%F8F827FD21FFF8F827FFFFFFA8FD09F8FCFC444AF85220FD0AFC8C20F8F8
+%274B8CFD0AFC2020F8F87D527D527D527D527D527D27FD0AF8FD04FFF8F8
+%27FD21FFF8F827FFFFFFA8FD08F845FCB02074F8A820B0FCB0FCB0FCB0FC
+%B0FCB06820F827A84BFCB0FCB0FCB0FCB0FCB08C2020F852FD0BFF27FD09
+%F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD07F82068FCFC206EF87D4B8C
+%FD0BFC4420F827208CFD0AFC6820F8F852FD0AFFA8FD09F8FD04FFF8F827
+%FD21FFF8F827FFFFFFA8FD07F820B0FCB0209EF87D7D69FCB0FCB0FCB0FC
+%B0FCB0FCB0444BF87620B0FCB0FCB0FCB0FCB0FCB0685120F8A8FD09FFA8
+%FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD07F844FCFCFC686EF827
+%FF20FD0DFC2026F82068FD0BFC2074F852FD09FFA8FD09F8FD04FFF8F827
+%FD21FFF8F827FFFFFF7DFD06F82068B0FCB0686E26F8A87668B0FCB0FCB0
+%FCB0FCB0FCB0FCB0204AF820FCB0FCB0FCB0FCB0FCB0FCB0204AF8FD09FF
+%7DFD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD07F88CFD04FCF874F8
+%7DA820FD0DFC8CF8F8F868FD0BFC4420F852FD08FFA8FD09F8FD04FFF8F8
+%27FD21FFF8F827FFFFFFA8FD06F820FCB0FCB0FC4B98F827FF4B8DFCB0FC
+%B0FCB0FCB0FCB0FCB0FC8D44F8F8B0FCB0FCB0FCB0FCB0FCB0FC27F827FD
+%08FFA8FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD06F820FD05FC68
+%4A44F87DFF20FD0EFC20202044FD0BFC444AF8A8FD07FFA8FD09F8FD04FF
+%F8F827FD21FFF8F827FFFFFFA8FD06F821FCB0FCB0FCB0209EF827FF4C8C
+%B0FCB0FCB0FCB0FCB0FCB0FCB0684AF820FCB0FCB0FCB0FCB0FCB0FCB020
+%F87DFD07FFA8FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD06F844FD
+%06FC684426F8A8A820FD0EFCF84AF868FD0BFC20F852FD07FFA8FD09F8FD
+%04FFF8F827FD21FFF8F827FFFFFFA8FD06F869FCB0FCB0FCB0FC4B74F827
+%FF4B8DFCB0FCB0FCB0FCB0FCB0FCB0FC694AF820B0FCB0FCB0FCB0FCB0FC
+%B0684AF8FD07FFA8FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD06F8
+%44FD07FC8C2644F87DFF20FD0DFC8C20F820FD0BFC8C20F8A8FD06FFA8FD
+%09F8FD04FFF8F827FD21FFF8F827FFFFFF7DFD06F869FCB0FCB0FCB0FCB0
+%4474F826A84B8CB0FCB0FCB0FCB0FCB0FCB0FCB08C2020B0FCB0FCB0FCB0
+%FCB0FCB0FC20F87DFD06FF7DFD09F8FD04FFF8F827FD21FFF8F827FFFFFF
+%A8FD06F844FD09FCF874F8527D44FD0EFC8C8CFD0CFC44F827FD06FFA8FD
+%09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD06F821FCB0FCB0FCB0FCB0
+%FCB0204AF8A821B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0
+%FCB0FCB0FC8DF827FD06FFA8FD09F8FD04FFF8F827FD21FFF8F827FFFFFF
+%A8FD07F8FD0AFC8C20F8F87D44FD1BFC8C20F8FD06FFA8FD09F8FD04FFF8
+%F827FD21FFF8F827FFFFFFA8FD06F82068B0FCB0FCB0FCB0FCB0FC6920F8
+%5227FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0
+%20F87DFD05FFA8FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD07F820
+%FD0BFC20F8F820FD1CFC44F87DFD05FFA8FD09F8FD04FFF8F827FD21FFF8
+%F827FFFFFFA8FD07F8208DFCB0FCB0FCB0FCB0FCB08C26F8528CB0FCB0FC
+%B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB044F852FD05FFA8
+%FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD08F820FD0BFC44F8F868
+%FD1BFC68F827FD05FFA8FD09F8FD04FFF8F827FD21FFF8F827FFFFFF7DFD
+%08F8208CB0FCB0FCB0FCB0FCB0FCB020F844B0FCB0FCB0FCB0FCB0FCB0FC
+%B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0684AF8FD05FF7DFD09F8FD04FFF8F8
+%27FD21FFF8F827FFFFFFA8FD09F820FD0BFC8CF868FD1BFC8CF8F8FD05FF
+%A8FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD09F8208DFCB0FCB0FC
+%B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC
+%B0FCB0FCB08C4BF8A8FD04FFA8FD09F8FD04FFF8F827FD21FFF8F827FFFF
+%FFA8FD09F82720FD28FC8C20F87DFD04FFA8FD09F8FD04FFF8F827FD21FF
+%F8F827FFFFFFA8FD09F8277644B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0
+%FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB08C74F87DFD04FFA8
+%FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD09F827FF278CFD26FC44
+%6EF827FD04FFA8FD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD09F827
+%FFA84BFCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC
+%B0FCB0FCB0FCB0FCB0FCB02074F852FD04FFA8FD09F8FD04FFF8F827FD21
+%FFF8F827FFFFFFA8FD09F827FFFF5268FD24FC684AF8F8A8FD04FFA8FD09
+%F8FD04FFF8F827FD21FFF8F827FFFFFF7DFD09F827FFFFFF208DFCB0FCB0
+%FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0
+%FC20F827A8FD05FF7DFD09F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD09
+%F827FD04FFF88CFD21FC8CF8F87DFD06FFA8FD09F8FD04FFF8F827FD21FF
+%F8F827FFFFFFA8FD08F82727FD04FFA820B0FCB0FCB0FCB0FCB0FCB0FCB0
+%FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB020F852FD07FF52FD09F8
+%FD04FFF8F827FD21FFF8F827FFFFFFA8FD0AF8277D7DA87D7DF8FD1FFC20
+%2027A87DA87DA87DA852FD0AF8FD04FFF8F827FD21FFF8F827FFFFFFA8FD
+%10F82020B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC
+%B0FCB06820FD14F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD11F82020FD
+%1BFC6820FD15F8FD04FFF8F827FD21FFF8F827FFFFFFA8FD12F82120B0FC
+%B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB06821FD16F8FD04
+%FFF8F827FD21FFF8F827FFFFFFA8FD13F820F88CFD16FC4420FD17F8FD04
+%FFF8F827FD21FFF8F827FFFFFF7DFD14F820F88DFCB0FCB0FCB0FCB0FCB0
+%FCB0FCB0FCB0FCB0FC8DF820FD18F8FD04FFF8F827FD21FFF8F827FFFFFF
+%A8FD17F82068FD0FFC8C44FD1BF8FD04FFF8F827FD21FFF8F827FD04FF27
+%FD17F82120698CB0FCB0FCB0FCB0FCB0FC8D4427FD1BF852FD04FFF8F827
+%FD21FFF8F827FD04FF7DFD1AF820F820446844684444202620FD1CF827A8
+%FD04FFF8F827FD21FFF8F827FD05FFA87D527D527D527D527D527D527D52
+%7D527D527D527D527DFD0AF82050FD07F827527D527D527D527D527D527D
+%527D527D527D527D52A8FD06FFF8F827FD21FFF8F827FD1CFFFD15F8A8FD
+%1BFFF8F827FD21FFF8F827FD1BFF52FD16F8FD1BFFF8F827FD21FFF8F827
+%FD1AFF52FD18F8FD1AFFF8F827FD21FFF8F827FD19FF2727FD19F8A8FD18
+%FFF8F827FD21FFF8F827FD17FF7DFD1DF827A8FD16FFF8F827FD21FFF8F8
+%27FD15FFFD23F8A8FD14FFF8F827FD21FFF8F827FD14FF52FD24F8FD14FF
+%F8F827FD21FFF8F827FD15FF2727F827F827F827F827F827F827F827F827
+%F827F827F827F827F827F827F827F827F8A8FD14FFF8F827FD21FFF8F827
+%FD4DFFF8F827FD21FFF8F827FD4DFFF8F827FD21FFF8F8F8277D527D527D
+%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
+%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
+%527D527D527D527D527D27F8F852FD21FF52FD51F87DFD22FF52FD4EF827
+%7DFD25FFFD4CA8FD91FFCACACAFFFFFF9AC3CAFFFFCA93B59ACAFD05FFCA
+%FD06FFCACACAFD04FFCA93B593BC6FFFFFCA93B593BC93FFCABC9AFFFFFF
+%93BCFFFFFFCA9AB593CAFD05FFB6A1FFFFFF94CAFD04FFCAFFFFFF93B593
+%BC93FD04FFCAC4FD13FF9A448DCAFFA18C44BCFFBC6820F8208CCAFFFF93
+%93688D93FFFFFF8C68448D8CCAFFCA8C20F8F8F8449ACA8C20F8F8F8449A
+%BC448CCAFF9A6868CAFFBC6820F84468FD04FFCA688CCAFF9A6868CAFFFF
+%8C688DFF8C20F8F8F82093FF9AB044688CBCCAFD10FFCA6944BCFFB62068
+%CAFF8CF82069444493FF8C44F820F8689AFF9320F86944208CFFCA68F893
+%8CB58CCACA68F8938CB58CCA9A4420BCFFC32069CAFF8CF82068204593FF
+%FFFF9A4444C3FFC320459AFFCA6920B6FF93F8938CB58CBCFFB5F8444445
+%68C3FD11FF8CF88CFF8CF88CFFC368F8B0C3B0F8B5FF8DF8208C68F8B5FF
+%B5F88C9ABC208DFFCA442093FD04FFCA442093FD04FFBC20F88CFF762020
+%CAA144F8B5C38CF8B5FFFFFFB5F8208CFFC368F8B5FFC4442093FF8CF88C
+%FD04FFCA68208CCA8C208CFD11FFB5F893C393F8B5FFCA44449AFF934493
+%FF68F88CFF93B59AFF68F88CFF764444CAC46920BCFD04FFC46920BCFD04
+%FF9320F893A1BC204493CA204493FF934493FFFFFF8CF8F8B5FFFF8CF88C
+%FF932044CAFF8DF8B5FD04FFCA68F8B5FFB5F893FD11FF9A4420FC20449A
+%FFC368F8BCFFCA93CAC368F8B0FD05FF69F88DFFA12068C3CA442093FD04
+%FFCA442093FD04FF93F8F82093932020BCC34420BCFFCA93A1FFFFCA8DF8
+%F844CAFFB5F88CFF93F88CCAFF68F88CFD04FFCA44F88CFF8CF88CFD12FF
+%8CF844F88CFFFFCA44F894FD04FFCA44F88DFD05FF68F88CFFCA4544CACA
+%6920BCFD04FFCA6920BCFD04FF8CF8F8F88CBD20449ACA442093FD06FFCA
+%44F8F8449AFF932068CA8CF88CFFFF68F8B5FD04FFCA68F8B5FFB5F8B5FD
+%12FF93F8F8F8B5FFFFC368F8B093CACAFFC36820BCFD05FF6FF88DC39320
+%68CACA44208CCAC3CAFFCA20208CCAC3CAFFB5F8F8F8688C2020BCC368F8
+%FC6FCACAFFFFFF93202044F8B5FFBD20449393F893FFCA44F88CCAC3CAFF
+%CA44F88CCA8CF88CFD12FFA144F84493FFFFFF8C20F84444B5CAFF444493
+%FD05FF68F8446920F88CFFCA44F84444688CFFA144F84444688CFF8DF820
+%4420B020449AFF8C20204444B5FFFFFFB5F89368F88CFFC46920B544449A
+%FFC469F82044698CFFC469F868442020BCFD12FFCA44F844CAFFFFFFC38C
+%68202020BCFF682093FD05FF6FF8F8F82068BCFFCA20F8F820688DFFA120
+%F8F820688DFFB5F86868F88C2020BCFFC38C68442020BCFFFF8CF88C8CF8
+%68C3FF8CF88C2044CAFFCA44F8F82044B0CACA44F8F8F8208DCAFD12FFA1
+%68F8699BFD05FFCACA8C2093FF44F88CFD05FF69F8F8F844BCFFFFCA44F8
+%4593CAFFFFA144F84593CAFFFF8DF844B5F868F8459AFFFFFFCAC38C2093
+%FFCA93F8938C2044C3FFB5F868F893CAFFCA69F8208CCAFFFFCA69F8F8F8
+%93CAFD13FF9420F8F8B5FD07FFB5F893C368F8B5FD05FF9AF8F8F8208CFF
+%FFCA44208CFD04FFCA20208CFD04FFB5F8689344F8F820BCFD05FFB5F8B5
+%FFBC202093BC202093FF8C20F8F88CFFFFCA44F88CFD04FFCA44F8F8F844
+%C3FD13FF8CF868208CFFFFFFA1C3FFFF8CF868CA44F88DFD05FF6FF86893
+%F8B5FFFFC46920BCFD04FFC46820BCFD04FF8CF88CCA68F8F84493FF9AC3
+%CAFF8DF86FFF932068B58C44F8B5FFBC20F8F8B5FFFFCA68F8B5FD04FFCA
+%68F8B0442093FD12FFCA68F8FC44449AFFC38C44BCFF93F88DC368F8B5FF
+%FF68B0FF93F86F8CF844CAFFCA442093FD04FFCA442093FD04FF93F88DFF
+%93F8F820BCC38C449AFFB5F869FFB0FD06F868FFA168F82093FFFFFF44F8
+%8CFD04FFCA4420938DF88DFD12FFBC2045BC93F8B5FFCA442193FF8CF88C
+%CA44F893FF9A4568FF6FF88CC3444593FFCA69209AFD04FFCA69209AFD04
+%FF8CF88CFF9321F8449ACA442093FF8DF868FF8CF820934420F8699BFF8C
+%F844C3FFFFFF6FF8B5FD04FFCA6820BD8D2068CAFD11FF8CF868FF8CF868
+%FFCA68F8B09BFCF88DC368F8B593B5F868C39AF88DCA68F8B5FFCA442093
+%FD04FFCA442093FD04FFB5F88DFFCA44F820BCC368F88C9AB5F86F9A4420
+%93CAC38C20F893FF93F868C3FFFFFF68F88CFD04FFCA442093BD204493FD
+%10FFCA93F8B5FFBC20449AFF8CF8206920208CFF8CF8204444F88CFF6FF8
+%8CFF8CF868FFCA68F8938C8D8CC3CA68F8938C8D8CC38DF88CFFFFB5F844
+%9AFF8CF82068F82093BC2093CAFFFFCA68F88CFF8DF88CFD04FFB5F8938C
+%B568B5C469F8BCCA93F8B5FD10FFCA688DA1FFCA8D2093FFBC6820F82068
+%A1FFBC44F8F8204493FFB5F88DFF93204494CA44FD05F88CCA44FD05F88C
+%93208CFFFF934444BCFFBC6820F82068CA9A8C93FD04FFB020FCCABC4493
+%FD04FF8CFD05F868CA682093FF8CF868CAFD10FFB5CAFFFFFFBCB59AFFFF
+%CA93B593CAFFFFFFC38DB593C3FFFF9AB59AFFCAB593FFFFB58CB58DB58C
+%CAFFB58CB58DB58CCACAB59AFFFFFF93CAFFFFFFCA93B593CAFFFFC3FD05
+%FFCAB5CAFFFFB59AFD04FFBC8DB58CB58DBCFFB68DCAFFCA8CBCFDFCFFFD
+%FCFFFDFCFFFDFCFFFDFCFFFDFCFFFDECFFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+       put
+       /packedarray where not
+       {
+               userdict begin
+               /packedarray
+               {
+                       array astore readonly
+               } bind def
+               /setpacking /pop load def
+               /currentpacking false def
+        end
+               0
+       } if
+       pop
+       userdict /defaultpacking currentpacking put true setpacking
+       /initialize
+       {
+               Adobe_level2_AI5 begin
+       } bind def
+       /terminate
+       {
+               currentdict Adobe_level2_AI5 eq
+               {
+                end
+               } if
+       } bind def
+       mark
+       /setcustomcolor where not
+       {
+               /findcmykcustomcolor
+               {
+                       (AI8_CMYK_CustomColor)
+                       6 packedarray
+               } bind def
+               /findrgbcustomcolor
+               {
+                       (AI8_RGB_CustomColor)
+                       5 packedarray
+               } bind def
+               /setcustomcolor
+               {
+                       exch 
+                       aload pop dup
+                       (AI8_CMYK_CustomColor) eq
+                       {
+                               pop pop
+                               4
+                               {
+                                       4 index mul
+                                       4 1 roll
+                               } repeat
+                               5 -1 roll pop
+                               setcmykcolor
+                       }
+                       {
+                               dup (AI8_RGB_CustomColor) eq
+                               {
+                                       pop pop
+                                       3
+                                       {
+                                               1 exch sub
+                                               3 index mul 
+                                               1 exch sub
+                                               3 1 roll
+                                       } repeat
+                                       4 -1 roll pop
+                                       setrgbcolor
+                               }
+                               {
+                                       pop
+                                       4
+                                       {
+                                               4 index mul 4 1 roll
+                                       } repeat
+                                       5 -1 roll pop
+                                       setcmykcolor
+                               } ifelse
+                       } ifelse
+               }
+               def
+       } if
+       /setAIseparationgray
+       {
+               false setoverprint
+               0 setgray
+               /setseparationgray where{
+                       pop setseparationgray
+               }{
+                       /setcolorspace where{
+                               pop
+                               [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+                               1 exch sub setcolor
+                       }{
+                               setgray
+                       }ifelse
+               }ifelse
+       } def
+       
+       /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+       userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+       userdict /level2?
+       systemdict /languagelevel known dup
+       {
+               pop systemdict /languagelevel get 2 ge
+       } if
+       put
+/level2ScreenFreq
+{
+ begin
+               60
+               HalftoneType 1 eq
+               {
+                       pop Frequency
+               } if
+               HalftoneType 2 eq
+               {
+                       pop GrayFrequency
+               } if
+               HalftoneType 5 eq
+               {
+                       pop Default level2ScreenFreq
+               } if
+ end
+} bind def
+userdict /currentScreenFreq  
+       level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+       {
+               /setcmykcolor where not
+               {
+                       /setcmykcolor
+                       {
+                               exch .11 mul add exch .59 mul add exch .3 mul add
+                               1 exch sub setgray
+                       } def
+               } if
+               /currentcmykcolor where not
+               {
+                       /currentcmykcolor
+                       {
+                               0 0 0 1 currentgray sub
+                       } def
+               } if
+               /setoverprint where not
+               {
+                       /setoverprint /pop load def
+               } if
+               /selectfont where not
+               {
+                       /selectfont
+                       {
+                               exch findfont exch
+                               dup type /arraytype eq
+                               {
+                                       makefont
+                               }
+                               {
+                                       scalefont
+                               } ifelse
+                               setfont
+                       } bind def
+               } if
+               /cshow where not
+               {
+                       /cshow
+                       {
+                               [
+                               0 0 5 -1 roll aload pop
+                               ] cvx bind forall
+                       } bind def
+               } if
+       } if
+       cleartomark
+       /anyColor?
+       {
+               add add add 0 ne
+       } bind def
+       /testColor
+       {
+               gsave
+               setcmykcolor currentcmykcolor
+               grestore
+       } bind def
+       /testCMYKColorThrough
+       {
+               testColor anyColor?
+       } bind def
+       userdict /composite?
+       1 0 0 0 testCMYKColorThrough
+       0 1 0 0 testCMYKColorThrough
+       0 0 1 0 testCMYKColorThrough
+       0 0 0 1 testCMYKColorThrough
+       and and and
+       put
+       composite? not
+       {
+               userdict begin
+               gsave
+               /cyan? 1 0 0 0 testCMYKColorThrough def
+               /magenta? 0 1 0 0 testCMYKColorThrough def
+               /yellow? 0 0 1 0 testCMYKColorThrough def
+               /black? 0 0 0 1 testCMYKColorThrough def
+               grestore
+               /isCMYKSep? cyan? magenta? yellow? black? or or or def
+               /customColor? isCMYKSep? not def
+        end
+       } if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset Adobe_typography_AI5 1.0 1
+%%Title: (Typography Operators)
+%%Version: 1.0 1
+%%CreationDate:(6/10/1996) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_typography_AI5 68 dict dup begin
+put
+/initialize
+{
+ begin
+ begin
+       Adobe_typography_AI5 begin
+       Adobe_typography_AI5
+       {
+               dup xcheck
+               {
+                       bind
+               } if
+               pop pop
+       } forall
+ end
+ end
+ end
+       Adobe_typography_AI5 begin
+} def
+/terminate
+{
+       currentdict Adobe_typography_AI5 eq
+       {
+        end
+       } if
+} def
+/modifyEncoding
+{
+       /_tempEncode exch ddef
+       /_pntr 0 ddef
+       {
+               counttomark -1 roll
+               dup type dup /marktype eq
+               {
+                       pop pop exit
+               }
+               {
+                       /nametype eq
+                       {
+                               _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
+                               put
+                       }
+                       {
+                               /_pntr exch ddef
+                       } ifelse
+               } ifelse
+       } loop
+       _tempEncode
+} def
+/havefont
+{
+       systemdict /languagelevel known
+               {
+               /Font resourcestatus dup
+                       { exch pop exch pop }
+               if
+               }
+               {
+               systemdict /FontDirectory get 1 index known
+                       { pop true }
+                       {
+                       systemdict /fileposition known
+                               {
+                               dup length 6 add exch
+                               Ss 6 250 getinterval
+                               cvs pop
+                               Ss exch 0 exch getinterval
+                               status
+                                       { pop pop pop pop true }
+                                       { false }
+                               ifelse
+                               }
+                               {
+                               pop false
+                               }
+                       ifelse
+                       }
+               ifelse
+               }
+       ifelse
+} def
+/TE
+{
+       StandardEncoding 256 array copy modifyEncoding
+       /_nativeEncoding exch def
+} def
+/subststring {
+       exch 2 index exch search
+       {
+               exch pop
+               exch dup () eq
+               {
+                       pop exch concatstring
+               }
+               {
+                       3 -1 roll
+                       exch concatstring
+                       concatstring
+               } ifelse
+               exch pop true
+       }
+       {
+               pop pop false
+       } ifelse
+} def
+/concatstring {
+       1 index length 1 index length
+       1 index add
+       string
+       dup 0 5 index putinterval
+       dup 2 index 4 index putinterval
+       4 1 roll pop pop pop
+} def
+%
+/TZ
+{
+       dup type /arraytype eq
+       {
+               /_wv exch def
+       }
+       {
+               /_wv 0 def
+       } ifelse
+       /_useNativeEncoding exch def
+       2 index havefont
+       {
+               3 index
+               255 string
+               cvs
+               
+               dup
+               (_Symbol_)
+               eq
+               {
+                       pop
+                       2 index
+                       findfont
+                       
+               }
+               {
+                       1 index 0 eq
+                       {
+                               dup length 1 sub
+                               1 exch
+                               getinterval
+                               
+                               cvn
+                               findfont
+                       }
+                       {
+                               pop 2 index findfont
+                       } ifelse
+               } ifelse
+       }
+       {
+               dup 1 eq
+               {
+                       2 index 64 string cvs
+                       dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring
+                       {
+                               exch pop dup havefont
+                               {
+                                       findfont false
+                               }
+                               {
+                                       pop true
+                               } ifelse
+                       }
+                       {
+                               pop     dup
+                               (-90ms-RKSJ-) (-Ext-RKSJ-) subststring
+                               {
+                                       exch pop dup havefont
+                                       {
+                                               findfont false
+                                       }
+                                       {
+                                               pop true
+                                       } ifelse
+                               }
+                               {
+                                       pop pop true
+                               } ifelse
+                       } ifelse
+                       {
+                               1 index 1 eq
+                               {
+                                       /Ryumin-Light-Ext-RKSJ-V havefont
+                                       {/Ryumin-Light-Ext-RKSJ-V}
+                                       {/Courier}
+                                       ifelse
+                               }
+                               {
+                                       /Ryumin-Light-83pv-RKSJ-H havefont
+                                       {/Ryumin-Light-83pv-RKSJ-H}
+                                       {/Courier}
+                                       ifelse
+                               } ifelse
+                               findfont
+                               [1 0 0.5 1 0 0] makefont
+                       } if
+               }
+               {
+                       /Courier findfont
+               } ifelse
+       } ifelse
+       _wv type /arraytype eq
+       {
+               _wv makeblendedfont
+       } if
+       dup length 10 add dict
+ begin
+       mark exch
+       {
+               1 index /FID ne
+               {
+                       def
+               } if
+               cleartomark mark
+       } forall
+       pop
+       /FontScript exch def
+       /FontDirection exch def
+       /FontRequest exch def
+       /FontName exch def
+       counttomark 0 eq
+       {
+               1 _useNativeEncoding eq
+               {
+                       /Encoding _nativeEncoding def
+               } if
+               cleartomark
+       }
+       {
+               /Encoding load 256 array copy
+               modifyEncoding /Encoding exch def
+       } ifelse
+       FontName currentdict
+ end
+       definefont pop
+} def
+/tr
+{
+       _ax _ay 3 2 roll
+} def
+/trj
+{
+       _cx _cy _sp _ax _ay 6 5 roll
+} def
+/a0
+{
+       /Tx
+       {
+               dup
+               currentpoint 3 2 roll
+               tr _psf
+               newpath moveto
+               tr _ctm _pss
+       } ddef
+       /Tj
+       {
+               dup
+               currentpoint 3 2 roll
+               trj _pjsf
+               newpath moveto
+               trj _ctm _pjss
+       } ddef
+} def
+/a1
+{
+W B
+} def
+/e0
+{
+       /Tx
+       {
+               tr _psf
+       } ddef
+       /Tj
+       {
+               trj _pjsf
+       } ddef
+} def
+/e1
+{
+W F 
+} def
+/i0
+{
+       /Tx
+       {
+               tr sp
+       } ddef
+       /Tj
+       {
+               trj jsp
+       } ddef
+} def
+/i1
+{
+       W N
+} def
+/o0
+{
+       /Tx
+       {
+               tr sw rmoveto
+       } ddef
+       /Tj
+       {
+               trj swj rmoveto
+       } ddef
+} def
+/r0
+{
+       /Tx
+       {
+               tr _ctm _pss
+       } ddef
+       /Tj
+       {
+               trj _ctm _pjss
+       } ddef
+} def
+/r1
+{
+W S
+} def
+/To
+{
+       pop _ctm currentmatrix pop
+} def
+/TO
+{
+       iTe _ctm setmatrix newpath
+} def
+/Tp
+{
+       pop _tm astore pop _ctm setmatrix
+       _tDict begin
+       /W
+       {
+       } def
+       /h
+       {
+       } def
+} def
+/TP
+{
+ end
+       iTm 0 0 moveto
+} def
+/Tr
+{
+       _render 3 le
+       {
+               currentpoint newpath moveto
+       } if
+       dup 8 eq
+       {
+               pop 0
+       }
+       {
+               dup 9 eq
+               {
+                       pop 1
+               } if
+       } ifelse
+       dup /_render exch ddef
+       _renderStart exch get load exec
+} def
+/iTm
+{
+       _ctm setmatrix _tm concat
+       _shift aload pop _lineorientation 1 eq { exch } if translate
+       _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale
+} def
+/Tm
+{
+       _tm astore pop iTm 0 0 moveto
+} def
+/Td
+{
+       _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
+} def
+/iTe
+{
+       _render -1 eq
+       {
+       }
+       {
+               _renderEnd _render get dup null ne
+               {
+                       load exec
+               }
+               {
+                       pop
+               } ifelse
+       } ifelse
+       /_render -1 ddef
+} def
+/Ta
+{
+       pop
+} def
+/Tf
+{
+       1 index type /nametype eq
+       {
+               dup 0.75 mul 1 index 0.25 mul neg
+       } if
+       /_fontDescent exch ddef
+       /_fontAscent exch ddef
+       /_fontSize exch ddef
+       /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef
+       /_fontHeight _fontSize ddef
+       findfont _fontSize scalefont setfont
+} def
+/Tl
+{
+       pop neg 0 exch
+       _leading astore pop
+} def
+/Tt
+{
+       pop
+} def
+/TW
+{
+       3 npop
+} def
+/Tw
+{
+       /_cx exch ddef
+} def
+/TC
+{
+       3 npop
+} def
+/Tc
+{
+       /_ax exch ddef
+} def
+/Ts
+{
+       0 exch
+       _shift astore pop
+       currentpoint
+       iTm
+       moveto
+} def
+/Ti
+{
+       3 npop
+} def
+/Tz
+{
+       count 1 eq { 100 } if
+       100 div exch 100 div exch
+       _scale astore pop
+       iTm
+} def
+/TA
+{
+       pop
+} def
+/Tq
+{
+       pop
+} def
+/Tg
+{
+       pop
+} def
+/TG
+{
+       pop
+} def
+/Tv
+{
+       /_lineorientation exch ddef
+} def
+/TV
+{
+       /_charorientation exch ddef
+} def
+/Ty
+{
+       dup /_yokoorientation exch ddef 1 sub neg Tv
+} def
+/TY
+{
+       pop
+} def
+/T~
+{
+       Tx
+} def
+/Th
+{
+       pop pop pop pop pop
+} def
+/TX
+{
+       pop
+} def
+/Tk
+{
+       _fontSize mul 1000 div
+       _lineorientation 0 eq { neg 0 } { 0 exch } ifelse
+       rmoveto
+       pop
+} def
+/TK
+{
+       2 npop
+} def
+/T*
+{
+       _leading aload pop
+       _lineorientation 0 ne { exch } if
+       Td
+} def
+/T*-
+{
+       _leading aload pop
+       _lineorientation 0 ne { exch } if
+       exch neg exch neg
+       Td
+} def
+/T-
+{
+       _ax neg 0 rmoveto
+       _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse
+} def
+/T+
+{
+} def
+/TR
+{
+       _ctm currentmatrix pop
+       _tm astore pop
+       iTm 0 0 moveto
+} def
+/TS
+{
+       currentfont 3 1 roll
+       /_Symbol_ findfont _fontSize scalefont setfont
+       
+       0 eq
+       {
+               Tx
+       }
+       {
+               Tj
+       } ifelse
+       setfont
+} def
+/Xb
+{
+       pop pop
+} def
+/Tb /Xb load def
+/Xe
+{
+       pop pop pop pop
+} def
+/Te /Xe load def
+/XB
+{
+} def
+/TB /XB load def
+currentdict readonly pop
+end
+setpacking
+%
+/X^
+{
+       currentfont 5 1 roll
+       dup havefont
+               {
+               findfont _fontSize scalefont setfont
+               }
+               {
+               pop
+               exch
+               } ifelse
+       2 index 0 eq
+       {
+               Tx
+       }
+       {
+               Tj
+       } ifelse
+       pop     pop
+       setfont
+} def
+/T^    /X^     load def
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+       userdict /Adobe_ColorImage_AI6 53 dict put 
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize { 
+       Adobe_ColorImage_AI6 begin
+       Adobe_ColorImage_AI6 {
+               dup type /arraytype eq {
+                       dup xcheck {
+                               bind
+                       } if
+               } if
+               pop pop
+       } forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+       /Adobe_ColorImage_AI6_Vars 41 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+       /plateindex -1 def
+       /_newproc null def
+       /_proc1 null def
+       /_proc2 null def
+       /sourcearray 4 array def
+       /_ptispace null def
+       /_ptiname null def
+       /_pti0 0 def
+       /_pti1 0 def
+       /_ptiproc null def
+       /_ptiscale 0 def
+       /_pticomps 0 def
+       /_ptibuf 0 string def
+       /_gtigray 0 def
+       /_cticmyk null def
+       /_rtirgb null def
+       /XIEnable true def
+       /XIType 0 def
+       /XIEncoding 0 def
+       /XICompression 0 def
+       /XIChannelCount 0 def
+       /XIBitsPerPixel 0 def
+       /XIImageHeight 0 def
+       /XIImageWidth 0 def
+       /XIImageMatrix null def
+       /XIRowBytes 0 def
+       /XIFile null def
+       /XIBuffer1 null def
+       /XIBuffer2 null def
+       /XIBuffer3 null def
+       /XIDataProc null def
+       /XIColorSpace /DeviceGray def
+       /XIColorValues 0 def
+       /XIPlateList false def
+end
+/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
+/ci6image systemdict /image get def
+/ci6curtransfer systemdict /currenttransfer get def
+/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
+/ci6foureq {
+       4 index ne {
+               pop pop pop false
+       }{
+               4 index ne {
+                       pop pop false
+               }{
+                       4 index ne {
+                               pop false
+                       }{
+                               4 index eq
+                       } ifelse
+               } ifelse
+       } ifelse
+} def
+/ci6testplate {
+       Adobe_ColorImage_AI6_Vars begin
+               /plateindex -1 def
+               /setcmykcolor where {
+                       pop
+                       gsave
+                       1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+                       0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+                       0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+                       0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+                       grestore
+                       1 0 0 0 ci6foureq { 
+                               /plateindex 0 def
+                       }{
+                               0 1 0 0 ci6foureq { 
+                                       /plateindex 1 def
+                               }{
+                                       0 0 1 0 ci6foureq {
+                                               /plateindex 2 def
+                                       }{
+                                               0 0 0 1 ci6foureq { 
+                                                       /plateindex 3 def
+                                               }{
+                                                       0 0 0 0 ci6foureq {
+                                                               /plateindex 5 def
+                                                       } if
+                                               } ifelse
+                                       } ifelse
+                               } ifelse
+                       } ifelse
+                       pop pop pop pop
+               } if
+               plateindex
+ end
+} def
+/ci6concatprocs {
+       /packedarray where {
+               pop dup type /packedarraytype eq 2 index type
+               /packedarraytype eq or
+       }{
+               false
+       } ifelse
+       {
+               /_proc2 exch cvlit def
+               /_proc1 exch cvlit def
+               _proc1 aload pop
+               _proc2 aload pop
+               _proc1 length
+               _proc2 length add
+               packedarray cvx
+       }{
+               /_proc2 exch cvlit def
+               /_proc1 exch cvlit def
+               /_newproc _proc1 length _proc2 length add array def
+               _newproc 0 _proc1 putinterval
+               _newproc _proc1 length _proc2 putinterval
+               _newproc cvx
+       } ifelse
+} def
+/ci6istint {
+       type /arraytype eq 
+} def
+/ci6isspot {
+       dup type /arraytype eq {
+               dup length 1 sub get /Separation eq
+       }{
+               pop false
+       } ifelse
+} def
+/ci6spotname {
+       dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
+} def
+/ci6altspace {
+       aload pop pop pop ci6colormake
+} def
+/ci6numcomps {
+       dup /DeviceGray eq {
+               pop 1
+       }{
+               dup /DeviceRGB eq {
+                       pop 3
+               }{
+                       /DeviceCMYK eq {
+                               4
+                       }{
+                               1
+                       } ifelse
+               } ifelse
+       } ifelse
+} def
+/ci6marksplate {
+       dup /DeviceGray eq {
+               pop plateindex 3 eq
+       }{
+               dup /DeviceRGB eq {
+                       pop plateindex 5 ne
+               }{
+                       dup /DeviceCMYK eq {
+                               pop plateindex 5 ne
+                       }{
+                               dup ci6isspot {
+                                       /findcmykcustomcolor where {
+                                               pop
+                                               dup length 2 sub get
+                                               0.1 0.1 0.1 0.1 5 -1 roll
+                                               findcmykcustomcolor 1 setcustomcolor
+                                               systemdict /currentgray get exec
+                                               1 ne
+                                       }{
+                                               pop plateindex 5 ne
+                                       } ifelse
+                               }{
+                                       pop plateindex 5 ne
+                               } ifelse
+                       } ifelse
+               } ifelse
+       } ifelse
+} def
+/ci6colormake {
+       dup ci6numcomps
+       exch 1 index 2 add 1 roll
+       dup 1 eq {pop}{array astore} ifelse
+       exch
+} def
+/ci6colorexpand {
+       dup ci6spotname exch
+       dup ci6istint {
+               ci6altspace
+               exch 4 1 roll
+       }{
+               1 3 1 roll
+       } ifelse
+} def
+/ci6colortint {
+       dup /DeviceGray eq {
+               3 1 roll 1 exch sub mul 1 exch sub exch
+       }{
+               dup /DeviceRGB eq {
+                       3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+               }{
+                       dup /DeviceCMYK eq {
+                               3 1 roll {1 index mul exch} forall pop 4 array astore exch
+                       }{
+                               3 1 roll mul exch
+                       } ifelse
+               } ifelse
+       } ifelse
+} def
+/ci6colortocmyk {
+       dup /DeviceGray eq {
+               pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+       }{
+               dup /DeviceRGB eq {
+                       pop aload pop _rgbtocmyk 4 array astore
+               }{
+                       dup /DeviceCMYK eq {
+                               pop
+                       }{
+                               ci6altspace ci6colortint ci6colortocmyk
+                       } ifelse
+               } ifelse
+       } ifelse
+} def
+/ci6makeimagedict {
+       7 dict begin
+               /ImageType 1 def
+               /Decode exch def
+               /DataSource exch def
+               /ImageMatrix exch def
+               /BitsPerComponent exch def
+               /Height exch def
+               /Width exch def
+       currentdict end
+} def
+/ci6stringinvert {
+       0 1 2 index length 1 sub {
+               dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+       } for
+} def
+/ci6stringknockout {
+       0 1 2 index length 1 sub {
+               255 2 index 3 1 roll put
+       } for
+} def
+/ci6stringapply {
+       0 1 4 index length 1 sub {
+               dup
+               4 index exch get
+               3 index 3 1 roll
+               3 index exec
+       } for
+       pop exch pop
+} def
+/ci6walkrgbstring {
+       0 3 index
+       dup length 1 sub 0 3 3 -1 roll {
+               3 getinterval {} forall
+               5 index exec
+               3 index
+       } for
+       
+        5 {pop} repeat
+} def
+/ci6walkcmykstring
+{
+       0 3 index
+       dup length 1 sub 0 4 3 -1 roll {
+               4 getinterval {} forall
+               
+               6 index exec
+               
+               3 index
+               
+       } for
+       
+       5 { pop } repeat
+       
+} def
+/ci6putrgbtograystr
+{
+       .11 mul exch
+       
+       .59 mul add exch
+       
+       .3 mul add
+       
+       cvi 3 copy put
+       
+       pop 1 add
+} def
+/ci6putcmyktograystr
+{
+       exch .11 mul add
+       
+       exch .59 mul add
+       
+       exch .3 mul add
+       
+       dup 255 gt { pop 255 } if
+       
+       255 exch sub cvi 3 copy put
+       
+       pop 1 add
+} def
+/ci6rgbtograyproc {    
+       Adobe_ColorImage_AI6_Vars begin 
+               sourcearray 0 get exec
+               XIBuffer3
+               dup 3 1 roll 
+               
+               /ci6putrgbtograystr load exch
+               ci6walkrgbstring
+ end
+} def
+/ci6cmyktograyproc {   
+       Adobe_ColorImage_AI6_Vars begin
+               sourcearray 0 get exec
+               XIBuffer3
+               dup 3 1 roll 
+               
+               /ci6putcmyktograystr load exch
+               ci6walkcmykstring
+ end
+} def
+/ci6separatecmykproc { 
+       Adobe_ColorImage_AI6_Vars begin
+               sourcearray 0 get exec
+               
+               XIBuffer3
+               
+               0 2 index
+               
+               plateindex 4 2 index length 1 sub {
+                       get 255 exch sub
+                       
+                       3 copy put pop 1 add
+                       
+                       2 index
+               } for
+               pop pop exch pop
+ end
+} def
+       
+/ci6compositeimage {
+       dup 1 eq {
+               pop pop image
+       }{
+               /ci6colorimage load null ne {
+                       ci6colorimage
+               }{
+                       3 1 roll pop
+                       sourcearray 0 3 -1 roll put
+                       3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
+                       image
+               } ifelse
+       } ifelse
+} def
+/ci6knockoutimage {
+       gsave
+       0 ci6curtransfer exec 1 ci6curtransfer exec
+       eq {
+               0 ci6curtransfer exec 0.5 lt
+       }{
+               0 ci6curtransfer exec 1 ci6curtransfer exec gt
+       } ifelse
+       {{pop 0}}{{pop 1}} ifelse
+       systemdict /settransfer get exec
+       ci6compositeimage
+       grestore
+} def
+/ci6drawimage {
+       ci6testplate -1 eq {
+               pop ci6compositeimage
+       }{
+               dup type /arraytype eq {
+                       dup length plateindex gt {plateindex get}{pop false} ifelse
+               }{
+                       {
+                               true
+                       }{
+                               dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
+                       } ifelse
+               } ifelse
+               {
+                       dup 1 eq {
+                               pop pop ci6image
+                       }{
+                               dup 3 eq {
+                                       ci6compositeimage
+                               }{
+                                       pop pop
+                                       sourcearray 0 3 -1 roll put
+                                       /ci6separatecmykproc load
+                                       ci6image
+                               } ifelse
+                       } ifelse
+               }{
+                       ci6curoverprint {
+                               7 {pop} repeat
+                       }{
+                               ci6knockoutimage
+                       } ifelse
+               } ifelse
+       } ifelse
+} def
+/ci6proctintimage {
+       /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+       /_pticomps _ptispace ci6numcomps store
+       /_ptiscale _pti1 _pti0 sub store
+       level2? {
+               _ptiname length 0 gt version cvr 2012 ge and {
+                       [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+                       [_pti0 _pti1] ci6makeimagedict ci6image
+               }{
+                       [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+                       [0 255] ci6makeimagedict ci6image
+               } ifelse
+       }{
+               _pticomps 1 eq {
+                       {
+                               dup
+                               {
+                                       255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+                               } ci6stringapply
+                       } ci6concatprocs ci6image
+               }{
+                       {
+                               dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+                               _ptibuf {
+                                       exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+                                       _pticomps 2 add -2 roll
+                                       _pticomps 1 sub -1 0 {
+                                               1 index add 2 index exch
+                                               5 -1 roll
+                                               255 mul cvi put
+                                       } for
+                                       pop pop
+                               } ci6stringapply
+                       } ci6concatprocs false _pticomps
+                       /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
+               } ifelse
+       } ifelse
+} def
+/ci6graytintimage {
+       /_gtigray 5 -1 roll store
+       {1 _gtigray sub mul 1 exch sub} 4 1 roll
+       /DeviceGray ci6proctintimage
+} def
+/ci6cmyktintimage {
+       /_cticmyk 5 -1 roll store
+       {_cticmyk {1 index mul exch} forall pop} 4 1 roll
+       /DeviceCMYK ci6proctintimage
+} def
+/ci6rgbtintimage {
+       /_rtirgb 5 -1 roll store
+       {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+       /DeviceRGB ci6proctintimage
+} def
+/ci6tintimage {
+       ci6testplate -1 eq {
+               ci6colorexpand
+               3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+               dup /DeviceGray eq {
+                       pop ci6graytintimage
+               }{
+                       dup /DeviceRGB eq {
+                               pop ci6rgbtintimage
+                       }{
+                               pop ci6cmyktintimage
+                       } ifelse
+               } ifelse
+       }{
+               dup ci6marksplate {
+                       plateindex 5 lt {
+                               ci6colortocmyk plateindex get
+                               dup 0 eq ci6curoverprint and {
+                                       7 {pop} repeat
+                               }{
+                                       1 exch sub
+                                       exch {1 0}{0 1} ifelse () ci6graytintimage
+                               } ifelse
+                       }{
+                               pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
+                       } ifelse
+               }{
+                       ci6curoverprint {
+                               8 {pop} repeat
+                       }{
+                               pop pop pop
+                               {pop 1} 0 1 () /DeviceGray ci6proctintimage
+                       } ifelse
+               } ifelse
+       } ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+       XIImageWidth XIImageHeight false
+       [XIImageWidth 0 0 XIImageHeight neg 0 0]
+       /XIDataProc load
+       imagemask
+} def
+/XIImageTint {
+       XIImageWidth XIImageHeight XIBitsPerPixel
+       [XIImageWidth 0 0 XIImageHeight neg 0 0]
+       /XIDataProc load
+       XIType 3 eq XIColorValues XIColorSpace ci6tintimage
+} def
+/XIImage {
+       XIImageWidth XIImageHeight XIBitsPerPixel
+       [XIImageWidth 0 0 XIImageHeight neg 0 0]
+       /XIDataProc load
+       false XIChannelCount XIPlateList ci6drawimage
+} def
+/XG {
+       pop pop
+} def
+/XF {
+       13 {pop} repeat
+} def
+/Xh {
+       Adobe_ColorImage_AI6_Vars begin
+               gsave
+               /XIType exch def
+               /XIImageHeight exch def
+               /XIImageWidth exch def
+               /XIImageMatrix exch def
+               0 0 moveto
+               XIImageMatrix concat
+               XIImageWidth XIImageHeight scale
+               
+               /_lp /null ddef
+               _fc
+               /_lp /imagemask ddef
+ end
+} def
+/XH {
+       Adobe_ColorImage_AI6_Vars begin
+               grestore
+ end
+} def
+/XIEnable {
+       Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+       Adobe_ColorImage_AI6_Vars begin
+               ci6colormake
+               /XIColorSpace exch def
+               /XIColorValues exch def
+ end
+} def
+/XIPlates {
+       Adobe_ColorImage_AI6_Vars begin
+               /XIPlateList exch def
+ end
+} def
+/XI
+{
+       Adobe_ColorImage_AI6_Vars begin
+               gsave
+               /XIType exch def
+               cvi dup
+               256 idiv /XICompression exch store
+               256 mod /XIEncoding exch store
+               pop pop
+               /XIChannelCount exch def
+               /XIBitsPerPixel exch def
+               /XIImageHeight exch def
+               /XIImageWidth exch def
+               pop pop pop pop
+               /XIImageMatrix exch def
+               XIBitsPerPixel 1 eq {
+                       XIImageWidth 8 div ceiling cvi
+               }{
+                       XIImageWidth XIChannelCount mul
+               } ifelse
+               /XIRowBytes exch def
+               XIEnable {
+                       /XIBuffer3 XIImageWidth string def
+                       XICompression 0 eq {
+                               /XIBuffer1 XIRowBytes string def
+                               XIEncoding 0 eq {
+                                       {currentfile XIBuffer1 readhexstring pop}
+                               }{
+                                       {currentfile XIBuffer1 readstring pop}
+                               } ifelse
+                       }{
+                               /XIBuffer1 256 string def
+                               /XIBuffer2 XIRowBytes string def
+                               {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+                               /ASCII85Decode filter /DCTDecode filter
+                               /XIFile exch def
+                               {XIFile XIBuffer2 readstring pop}
+                       } ifelse
+                       /XIDataProc exch def
+                       
+                       XIType 1 ne {
+                               0 setgray
+                       } if
+                       XIType 1 eq {
+                               XIImageMask
+                       }{
+                               XIType 2 eq XIType 3 eq or {
+                                       XIImageTint
+                               }{
+                                       XIImage
+                               } ifelse
+                       } ifelse
+               }{
+                       XINullImage
+               } ifelse
+               /XIPlateList false def
+               grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
+%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
+%%Version: 1.3 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
+put
+/_?cmyk false def
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+       userdict /Adobe_Illustrator_AI5 100 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+       Adobe_Illustrator_AI5 dup begin
+       Adobe_Illustrator_AI5_vars begin
+       /_aicmykps where {pop /_?cmyk _aicmykps def}if
+       discardDict
+       {
+               bind pop pop
+       } forall
+       dup /nc get begin
+       {
+               dup xcheck 1 index type /operatortype ne and
+               {
+                       bind
+               } if
+               pop pop
+       } forall
+ end
+       newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+       Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+       dup load dup length exch maxlength eq
+       {
+               dup dup load dup
+               length 2 mul dict copy def
+       } if
+       load begin
+       def
+ end
+} def
+/npop
+{
+       {
+               pop
+       } repeat
+} def
+/hswj
+{
+       dup stringwidth 3 2 roll
+       {
+               _hvwb eq { exch _hvcx add exch _hvcy add } if
+               exch _hvax add exch _hvay add
+       } cforall
+} def
+/vswj
+{
+       0 0 3 -1 roll
+       {
+               dup 255 le
+               _charorientation 1 eq
+               and
+               {
+                       dup cstring stringwidth 5 2 roll
+                       _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+                       exch _hvay sub exch _hvax sub
+                       4 -1 roll sub exch
+                       3 -1 roll sub exch
+               }
+               {
+                       _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+                       exch _hvay sub exch _hvax sub
+                       _fontHeight sub
+               } ifelse
+       } cforall
+} def
+/swj
+{
+       6 1 roll
+       /_hvay exch ddef
+       /_hvax exch ddef
+       /_hvwb exch ddef
+       /_hvcy exch ddef
+       /_hvcx exch ddef
+       _lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+       0 0 0 6 3 roll swj
+} def
+/vjss
+{
+       4 1 roll
+       {
+               dup cstring
+               dup length 1 eq
+               _charorientation 1 eq
+               and
+               {
+                       -90 rotate
+                       currentpoint
+                       _fontRotateAdjust add
+                       moveto
+                       gsave
+                       false charpath currentpoint
+                       5 index setmatrix stroke
+                       grestore
+                       _fontRotateAdjust sub
+                       moveto
+                       _sp eq
+                       {
+                               5 index 5 index rmoveto
+                       } if
+                       2 copy rmoveto
+                       90 rotate
+               }
+               {
+                       currentpoint
+                       _fontHeight sub
+                       5 index sub
+                       3 index _sp eq
+                       {
+                               9 index sub
+                       } if
+       
+                       currentpoint
+                       exch 4 index stringwidth pop 2 div sub
+                       exch _fontAscent sub
+                       moveto
+       
+                       gsave
+                       2 index false charpath
+                       6 index setmatrix stroke
+                       grestore
+       
+                       moveto pop pop
+               } ifelse
+       } cforall
+       6 npop
+} def
+/hjss
+{
+       4 1 roll
+       {
+               dup cstring
+               gsave
+               false charpath currentpoint
+               5 index setmatrix stroke
+               grestore
+               moveto
+               _sp eq
+               {
+                       5 index 5 index rmoveto
+               } if
+               2 copy rmoveto
+       } cforall
+       6 npop
+} def
+/jss
+{
+       _lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+       0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+       4 1 roll
+       {
+               dup cstring
+               dup length 1 eq
+               _charorientation 1 eq
+               and
+               {
+                       -90 rotate
+                       currentpoint
+                       _fontRotateAdjust add
+                       moveto
+                       false charpath
+            currentpoint
+                       _fontRotateAdjust sub
+                       moveto
+                       _sp eq
+                       {
+                               5 index 5 index rmoveto
+                       } if
+                       2 copy rmoveto
+                       90 rotate
+               }
+               {
+                       currentpoint
+                       _fontHeight sub
+                       5 index sub
+                       3 index _sp eq
+                       {
+                               9 index sub
+                       } if
+       
+                       currentpoint
+                       exch 4 index stringwidth pop 2 div sub
+                       exch _fontAscent sub
+                       moveto
+       
+                       2 index false charpath
+       
+                       moveto pop pop
+               } ifelse
+       } cforall
+       6 npop
+} def
+/hjsp
+{
+    4 1 roll
+    {
+        dup cstring
+        false charpath
+        _sp eq
+        {
+            5 index 5 index rmoveto
+        } if
+        2 copy rmoveto
+    } cforall
+    6 npop
+} def
+/jsp
+{
+       matrix currentmatrix
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+    matrix currentmatrix
+    0 0 0 7 3 roll
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+       transform
+       0.25 sub round 0.25 add exch
+       0.25 sub round 0.25 add exch
+       itransform
+} def
+/setstrokeadjust where
+{
+       pop true setstrokeadjust
+       /c
+       {
+               curveto
+       } def
+       /C
+       /c load def
+       /v
+       {
+               currentpoint 6 2 roll curveto
+       } def
+       /V
+       /v load def
+       /y
+       {
+               2 copy curveto
+       } def
+       /Y
+       /y load def
+       /l
+       {
+               lineto
+       } def
+       /L
+       /l load def
+       /m
+       {
+               moveto
+       } def
+}
+{
+       /c
+       {
+               pl curveto
+       } def
+       /C
+       /c load def
+       /v
+       {
+               currentpoint 6 2 roll pl curveto
+       } def
+       /V
+       /v load def
+       /y
+       {
+               pl 2 copy curveto
+       } def
+       /Y
+       /y load def
+       /l
+       {
+               pl lineto
+       } def
+       /L
+       /l load def
+       /m
+       {
+               pl moveto
+       } def
+} ifelse
+/d
+{
+       setdash
+} def
+/cf
+{
+} def
+/i
+{
+       dup 0 eq
+       {
+               pop cf
+       } if
+       setflat
+} def
+/j
+{
+       setlinejoin
+} def
+/J
+{
+       setlinecap
+} def
+/M
+{
+       setmiterlimit
+} def
+/w
+{
+       setlinewidth
+} def
+/XR
+{
+       0 ne
+       /_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+       closepath
+} def
+/N
+{
+       _pola 0 eq
+       {
+               _doClip 1 eq
+               {
+                       _eo {eoclip} {clip} ifelse /_doClip 0 ddef
+               } if
+               newpath
+       }
+       {
+               /CRender
+               {
+                       N
+               } ddef
+       } ifelse
+} def
+/n
+{
+       N
+} def
+/F
+{
+       _pola 0 eq
+       {
+               _doClip 1 eq
+               {
+                       gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+                       /_doClip 0 ddef
+               }
+               {
+                       _pf
+               } ifelse
+       }
+       {
+               /CRender
+               {
+                       F
+               } ddef
+       } ifelse
+} def
+/f
+{
+       closepath
+       F
+} def
+/S
+{
+       _pola 0 eq
+       {
+               _doClip 1 eq
+               {
+                       gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+                       /_doClip 0 ddef
+               }
+               {
+                       _ps
+               } ifelse
+       }
+       {
+               /CRender
+               {
+                       S
+               } ddef
+       } ifelse
+} def
+/s
+{
+       closepath
+       S
+} def
+/B
+{
+       _pola 0 eq
+       {
+               _doClip 1 eq
+               gsave F grestore
+               {
+                       gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+                       /_doClip 0 ddef
+               }
+               {
+                       S
+               } ifelse
+       }
+       {
+               /CRender
+               {
+                       B
+               } ddef
+       } ifelse
+} def
+/b
+{
+       closepath
+       B
+} def
+/W
+{
+       /_doClip 1 ddef
+} def
+/*
+{
+       count 0 ne
+       {
+               dup type /stringtype eq
+               {
+                       pop
+               } if
+       } if
+       newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+       _pola 0 eq
+       {
+               gsave
+       } if
+} def
+/Q
+{
+       _pola 0 eq
+       {
+               grestore
+       } if
+} def
+/*u
+{
+       _pola 1 add /_pola exch ddef
+} def
+/*U
+{
+       _pola 1 sub /_pola exch ddef
+       _pola 0 eq
+       {
+               CRender
+       } if
+} def
+/D
+{
+       pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+       /_i save ddef
+       clipForward?
+       {
+               nulldevice
+       } if
+       6 1 roll 4 npop
+       concat pop
+       userdict begin
+       /showpage
+       {
+       } def
+       0 setgray
+       0 setlinecap
+       1 setlinewidth
+       0 setlinejoin
+       10 setmiterlimit
+       [] 0 setdash
+       /setstrokeadjust where {pop false setstrokeadjust} if
+       newpath
+       0 setgray
+       false setoverprint
+} def
+/~
+{
+ end
+       _i restore
+} def
+/_rgbtocmyk
+{
+       3
+       {
+               1 exch sub 3 1 roll
+       } repeat
+       3 copy 1 4 1 roll
+       3
+       {
+               3 index 2 copy gt
+               {
+                       exch
+               } if
+               pop 4 1 roll
+       } repeat
+       pop pop pop
+       4 1 roll
+       3
+       {
+               3 index sub
+               3 1 roll
+       } repeat
+       4 -1 roll
+} def
+/setrgbfill
+{
+       _rgbf astore pop
+       /_fc
+       {
+               _lp /fill ne
+               {
+                       _of setoverprint
+                       _rgbf aload pop setrgbcolor
+                       /_lp /fill ddef
+               } if
+       } ddef
+       /_pf
+       {
+               _fc
+               _eo {eofill} {fill} ifelse
+       } ddef
+       /_psf
+       {
+               _fc
+               hvashow
+       } ddef
+       /_pjsf
+       {
+               _fc
+               hvawidthshow
+       } ddef
+       /_lp /none ddef
+} def
+/setrgbstroke
+{
+       _rgbs astore pop
+       /_sc
+       {
+               _lp /stroke ne
+               {
+                       _os setoverprint
+                       _rgbs aload pop setrgbcolor
+                       /_lp /stroke ddef
+               } if
+       } ddef
+       /_ps
+       {
+               _sc
+               stroke
+       } ddef
+       /_pss
+       {
+               _sc
+               ss
+       } ddef
+       /_pjss
+       {
+               _sc
+               jss
+       } ddef
+       /_lp /none ddef
+} def
+/O
+{
+       0 ne
+       /_of exch ddef
+       /_lp /none ddef
+} def
+/R
+{
+       0 ne
+       /_os exch ddef
+       /_lp /none ddef
+} def
+/g
+{
+       /_gf exch ddef
+       /_fc
+       {
+               _lp /fill ne
+               {
+                       _of setoverprint
+                       _gf setgray
+                       /_lp /fill ddef
+               } if
+       } ddef
+       /_pf
+       {
+               _fc
+               _eo {eofill} {fill} ifelse
+       } ddef
+       /_psf
+       {
+               _fc
+               hvashow
+       } ddef
+       /_pjsf
+       {
+               _fc
+               hvawidthshow
+       } ddef
+       /_lp /none ddef
+} def
+/G
+{
+       /_gs exch ddef
+       /_sc
+       {
+               _lp /stroke ne
+               {
+                       _os setoverprint
+                       _gs setgray
+                       /_lp /stroke ddef
+               } if
+       } ddef
+       /_ps
+       {
+               _sc
+               stroke
+       } ddef
+       /_pss
+       {
+               _sc
+               ss
+       } ddef
+       /_pjss
+       {
+               _sc
+               jss
+       } ddef
+       /_lp /none ddef
+} def
+/k
+{
+       _cf astore pop
+       /_fc
+       {
+               _lp /fill ne
+               {
+                       _of setoverprint
+                       _cf aload pop setcmykcolor
+                       /_lp /fill ddef
+               } if
+       } ddef
+       /_pf
+       {
+               _fc
+               _eo {eofill} {fill} ifelse
+       } ddef
+       /_psf
+       {
+               _fc
+               hvashow
+       } ddef
+       /_pjsf
+       {
+               _fc
+               hvawidthshow
+       } ddef
+       /_lp /none ddef
+} def
+/K
+{
+       _cs astore pop
+       /_sc
+       {
+               _lp /stroke ne
+               {
+                       _os setoverprint
+                       _cs aload pop setcmykcolor
+                       /_lp /stroke ddef
+               } if
+       } ddef
+       /_ps
+       {
+               _sc
+               stroke
+       } ddef
+       /_pss
+       {
+               _sc
+               ss
+       } ddef
+       /_pjss
+       {
+               _sc
+               jss
+       } ddef
+       /_lp /none ddef
+} def
+/Xa
+{
+       _?cmyk {
+               3 npop k
+       }{
+               setrgbfill 4 npop
+       } ifelse
+} def
+/XA
+{
+       _?cmyk {
+               3 npop K
+       }{
+               setrgbstroke 4 npop
+       } ifelse
+} def
+/Xs
+{
+       /_gf exch ddef
+       5 npop
+       /_fc
+       {
+               _lp /fill ne
+               {
+                       _of setoverprint
+                       _gf setAIseparationgray
+                       /_lp /fill ddef
+               } if
+       } ddef
+       /_pf
+       {
+               _fc
+               _eo {eofill} {fill} ifelse
+       } ddef
+       /_psf
+       {
+               _fc
+               hvashow
+       } ddef
+       /_pjsf
+       {
+               _fc
+               hvawidthshow
+       } ddef
+       /_lp /none ddef
+} def
+/XS
+{
+       /_gs exch ddef
+       5 npop
+       /_sc
+       {
+               _lp /stroke ne
+               {
+                       _os setoverprint
+                       _gs setAIseparationgray
+                       /_lp /stroke ddef
+               } if
+       } ddef
+       /_ps
+       {
+               _sc
+               stroke
+       } ddef
+       /_pss
+       {
+               _sc
+               ss
+       } ddef
+       /_pjss
+       {
+               _sc
+               jss
+       } ddef
+       /_lp /none ddef
+} def
+/Xx
+{
+       exch
+       /_gf exch ddef
+       0 eq {
+               findcmykcustomcolor
+       }{
+               _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+               {
+                       4 1 roll 3 npop
+                       findcmykcustomcolor
+               }{
+                       8 -4 roll 4 npop
+                       findrgbcustomcolor
+               } ifelse
+       } ifelse
+       /_if exch ddef
+       /_fc
+       {
+               _lp /fill ne
+               {
+                       _of setoverprint
+                       _if _gf 1 exch sub setcustomcolor
+                       /_lp /fill ddef
+               } if
+       } ddef
+       /_pf
+       {
+               _fc
+               _eo {eofill} {fill} ifelse
+       } ddef
+       /_psf
+       {
+               _fc
+               hvashow
+       } ddef
+       /_pjsf
+       {
+               _fc
+               hvawidthshow
+       } ddef
+       /_lp /none ddef
+} def
+/XX
+{
+       exch
+       /_gs exch ddef
+       0 eq {
+               findcmykcustomcolor
+       }{
+               _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+               {
+                       4 1 roll 3 npop
+                       findcmykcustomcolor
+               }{
+                       8 -4 roll 4 npop
+                       findrgbcustomcolor
+               } ifelse
+       } ifelse
+       /_is exch ddef
+       /_sc
+       {
+               _lp /stroke ne
+               {
+                       _os setoverprint
+                       _is _gs 1 exch sub setcustomcolor
+                       /_lp /stroke ddef
+               } if
+       } ddef
+       /_ps
+       {
+               _sc
+               stroke
+       } ddef
+       /_pss
+       {
+               _sc
+               ss
+       } ddef
+       /_pjss
+       {
+               _sc
+               jss
+       } ddef
+       /_lp /none ddef
+} def
+/x
+{
+       /_gf exch ddef
+       findcmykcustomcolor
+       /_if exch ddef
+       /_fc
+       {
+               _lp /fill ne
+               {
+                       _of setoverprint
+                       _if _gf 1 exch sub setcustomcolor
+                       /_lp /fill ddef
+               } if
+       } ddef
+       /_pf
+       {
+               _fc
+               _eo {eofill} {fill} ifelse
+       } ddef
+       /_psf
+       {
+               _fc
+               hvashow
+       } ddef
+       /_pjsf
+       {
+               _fc
+               hvawidthshow
+       } ddef
+       /_lp /none ddef
+} def
+/X
+{
+       /_gs exch ddef
+       findcmykcustomcolor
+       /_is exch ddef
+       /_sc
+       {
+               _lp /stroke ne
+               {
+                       _os setoverprint
+                       _is _gs 1 exch sub setcustomcolor
+                       /_lp /stroke ddef
+               } if
+       } ddef
+       /_ps
+       {
+               _sc
+               stroke
+       } ddef
+       /_pss
+       {
+               _sc
+               ss
+       } ddef
+       /_pjss
+       {
+               _sc
+               jss
+       } ddef
+       /_lp /none ddef
+} def
+/XK
+{
+       3 -1 roll pop
+       0 eq
+       {
+               1 exch sub
+               3 {dup 3 1 roll mul 5 1 roll} repeat
+               mul 4 1 roll
+               K
+       }
+       {
+               1 exch sub 4 1 roll
+               3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+               4 -1 roll pop
+               XA
+       } ifelse
+} def
+/Xk
+{
+       3 -1 roll pop
+       0 eq
+       {
+               1 exch sub
+               3 {dup 3 1 roll mul 5 1 roll} repeat
+               mul 4 1 roll
+               k
+       }
+       {
+               1 exch sub 4 1 roll
+               3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+               4 -1 roll pop
+               Xa
+       } ifelse
+} def
+/A
+{
+       pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+       pop pop
+} def
+/Xt {
+       pop
+} def
+/discard
+{
+       save /discardSave exch store
+       discardDict begin
+       /endString exch store
+       gt38?
+       {
+               2 add
+       } if
+       load
+       stopped
+       pop
+ end
+       discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+       /endStringLength endString length store
+       /newBuff buffer 0 endStringLength getinterval store
+       /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+       /newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+       newBuff 0 newBuffButFirst putinterval
+       newBuffLast 0
+       currentfile read not
+       {
+       stop
+       } if
+       put
+} def
+0
+{
+       pre38Initialize
+       mark
+       currentfile newBuff readstring exch pop
+       {
+               {
+                       newBuff endString eq
+                       {
+                               cleartomark stop
+                       } if
+                       shiftBuffer
+               } loop
+       }
+       {
+       stop
+       } ifelse
+} def
+1
+{
+       pre38Initialize
+       /beginString exch store
+       mark
+       currentfile newBuff readstring exch pop
+       {
+               {
+                       newBuff beginString eq
+                       {
+                               /layerCount dup load 1 add store
+                       }
+                       {
+                               newBuff endString eq
+                               {
+                                       /layerCount dup load 1 sub store
+                                       layerCount 0 eq
+                                       {
+                                               cleartomark stop
+                                       } if
+                               } if
+                       } ifelse
+                       shiftBuffer
+               } loop
+       } if
+} def
+2
+{
+       mark
+       {
+               currentfile buffer {readline} stopped {
+                       % assume error was due to overfilling the buffer
+               }{
+                       not
+                       {
+                               stop
+                       } if
+                       endString eq {
+                               cleartomark stop
+                       } if
+               }ifelse
+       } loop
+} def
+3
+{
+       /beginString exch store
+       /layerCnt 1 store
+       mark
+       {
+               currentfile buffer {readline} stopped {
+                       % assume error was due to overfilling the buffer
+               }{
+                       not
+                       {
+                               stop
+                       } if
+                       dup beginString eq
+                       {
+                               pop /layerCnt dup load 1 add store
+                       }
+                       {
+                               endString eq
+                               {
+                                       layerCnt 1 eq
+                                       {
+                                               cleartomark stop
+                                       }
+                                       {
+                                               /layerCnt dup load 1 sub store
+                                       } ifelse
+                               } if
+                       } ifelse
+               }ifelse
+       } loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+       /n /N /s /S /f /F /b /B
+}
+{
+       {
+               _doClip 1 eq
+               {
+                       /_doClip 0 ddef _eo {eoclip} {clip} ifelse
+               } if
+               newpath
+       } def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+       6 npop
+       7 2 roll
+       5 npop
+       0 eq
+       {
+               0 eq
+               {
+                       (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+               }
+               {
+                       
+                       /clipForward? true def
+                       
+                       /Tx /pop load def
+                       /Tj /pop load def
+                       
+                       currentdict end clipRenderOff begin begin
+               } ifelse
+       }
+       {
+               0 eq
+               {
+                       save /discardSave exch store
+               } if
+       } ifelse
+} bind def
+/LB
+{
+       discardSave dup null ne
+       {
+               restore
+       }
+       {
+               pop
+               clipForward?
+               {
+                       currentdict
+                end
+                end
+                begin
+                                       
+                       /clipForward? false ddef
+               } if
+       } ifelse
+} bind def
+/Pb
+{
+       pop pop
+       0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+       0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+       72 exch div
+       0 dtransform dup mul exch dup mul add sqrt
+       dup 1 lt
+       {
+               pop 1
+       } if
+       setflat
+} def
+/Mb
+{
+       q
+} def
+/Md
+{
+} def
+/MB
+{
+       Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+       pop
+} bind def
+/setcmykcolor
+{
+       4 npop
+} bind def
+/setrgbcolor
+{
+       3 npop
+} bind def
+/setcustomcolor
+{
+       2 npop
+} bind def
+currentdict readonly pop
+end
+/XP
+{
+       4 npop
+} bind def
+/XD
+{
+       pop
+} bind def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+       Adobe_cshow begin
+       Adobe_cshow
+       {
+               dup xcheck
+               {
+                       bind
+               } if
+               pop pop
+       } forall
+ end
+       Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+       {
+ end
+       } if
+} def
+/cforall
+{
+       /_lobyte 0 ddef
+       /_hibyte 0 ddef
+       /_cproc exch ddef
+       /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+       {
+               /_lobyte exch ddef
+               _hibyte 0 eq
+               _cscript 1 eq
+               _lobyte 129 ge _lobyte 159 le and
+               _lobyte 224 ge _lobyte 252 le and or and
+               _cscript 2 eq
+               _lobyte 161 ge _lobyte 254 le and and
+               _cscript 3 eq
+               _lobyte 161 ge _lobyte 254 le and and
+       _cscript 25 eq
+               _lobyte 161 ge _lobyte 254 le and and
+       _cscript -1 eq
+               or or or or and
+               {
+                       /_hibyte _lobyte ddef
+               }
+               {
+                       _hibyte 256 mul _lobyte add
+                       _cproc
+                       /_hibyte 0 ddef
+               } ifelse
+       } forall
+} def
+/cstring
+{
+       dup 256 lt
+       {
+               (s) dup 0 4 3 roll put
+       }
+       {
+               dup 256 idiv exch 256 mod
+               (hl) dup dup 0 6 5 roll put 1 4 3 roll put
+       } ifelse
+} def
+/clength
+{
+       0 exch
+       { 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+       {
+               dup cstring
+               show
+               _hvax _hvay rmoveto
+               _hvwb eq { _hvcx _hvcy rmoveto } if
+       } cforall
+} def
+/vawidthshow
+{
+       {
+               dup 255 le
+               _charorientation 1 eq
+               and
+               {
+                       -90 rotate
+                       0 _fontRotateAdjust rmoveto
+                       cstring
+                       _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+                       0 _fontRotateAdjust neg rmoveto
+                       90 rotate
+               }
+               {
+                       currentpoint
+                       _fontHeight sub
+                       exch _hvay sub exch _hvax sub
+                       2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+                       3 2 roll
+                       cstring
+                       dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+                       show
+                       moveto
+               } ifelse
+       } cforall
+} def
+/hvawidthshow
+{
+       6 1 roll
+       /_hvay exch ddef
+       /_hvax exch ddef
+       /_hvwb exch ddef
+       /_hvcy exch ddef
+       /_hvcx exch ddef
+       _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+       0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+       0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+       0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_shading_AI8 1.0 0
+%%Title: (Adobe Illustrator 8 Shading Procset)
+%%Version: 1.0 0
+%%CreationDate: (12/17/97) ()
+%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /Adobe_shading_AI8 10 dict dup begin put
+/initialize {
+       Adobe_shading_AI8 begin
+       Adobe_shading_AI8 bdprocs
+       Mesh /initialize get exec
+} def
+/terminate {
+       currentdict Adobe_shading_AI8 eq {
+        end
+       } if
+} def
+/bdprocs {
+       {
+               dup xcheck 1 index type /arraytype eq and {
+                       bind
+               } if
+               pop pop
+       } forall
+} def
+/X! {pop} def
+/X# {pop pop} def
+/Mesh 40 dict def
+Mesh begin
+/initialize {
+       Mesh bdprocs
+       Mesh begin
+               /emulate? /AI8MeshEmulation where {
+                       pop AI8MeshEmulation
+               }{
+                       systemdict /shfill known not
+               } ifelse def
+ end
+} def
+/bd {
+       shadingdict begin
+} def
+/paint {
+       emulate? {
+        end
+       }{
+               /_lp /none ddef _fc /_lp /none ddef
+               
+               /AIColorSpace AIColorSpace tocolorspace store
+               /ColorSpace AIColorSpace topsspace store
+               
+               version_ge_3010.106 not systemdict /setsmoothness known and {
+                       0.0001 setsmoothness
+               } if
+               
+               composite? {
+                       /DataSource getdatasrc def
+                       Matrix concat
+                       currentdict end
+                       shfill
+               }{
+                       AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and {
+                        end
+                       }{
+                               /ColorSpace /DeviceGray store
+                               /Decode [0 1 0 1 0 1] store
+                               /DataSource getplatesrc def
+                               Matrix concat
+                               currentdict end
+                               shfill
+                       } ifelse
+               } ifelse
+       } ifelse
+} def
+/shadingdict 12 dict def
+shadingdict begin
+       /ShadingType 6 def
+       /BitsPerCoordinate 16 def
+       /BitsPerComponent 8 def
+       /BitsPerFlag 8 def
+end
+/datafile null def
+/databuf 256 string def
+/dataptr 0 def
+/srcspace null def
+/srcchannels 0 def
+/dstchannels 0 def
+/dstplate 0 def
+/srctodstcolor null def
+/getplatesrc {
+       /srcspace AIColorSpace store
+       /srcchannels AIColorSpace getnchannels store
+       /dstchannels 1 store
+       /dstplate getplateindex store
+       /srctodstcolor srcspace makesmarks {
+               dstplate 4 eq {
+                       {1 exch sub}
+               }{
+                       {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat}
+               } ifelse
+       }{
+               {srcchannels {pop} repeat 1}
+       } ifelse store
+       /datafile getdatasrc store
+       /rdpatch168 load DataLength () /SubFileDecode filter
+} def
+/getdatasrc {
+       /rdcmntline load /ASCII85Decode filter
+} def
+/rdpatch168 {
+       /dataptr 0 store
+       49 rdcount
+       4 {
+               dup {pop srcchannels getint8} if
+               dup {pop srctodstcolor dstchannels putint8 true} if
+       } repeat
+       {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdpatch3216 {
+       /dataptr 0 store
+       97 rdcount
+       4 {
+               dup {pop srcchannels getint16} if
+               dup {pop srctodstcolor dstchannels putint16 true} if
+       } repeat
+       {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdcount {
+       dup 0 gt {
+               datafile databuf dataptr 4 -1 roll getinterval readstring
+               exch length dataptr add /dataptr exch store
+       }{
+               true
+       } ifelse
+} def
+/getint8 {
+       mark true 3 -1 roll
+       {
+               dup {pop datafile read} if
+               dup {pop 255 div true} if
+       } repeat
+       {
+               counttomark 1 add -1 roll pop true
+       }{
+               cleartomark false
+       } ifelse
+} def
+/putint8 {
+       dup dataptr add /dataptr exch store
+       dataptr exch
+       {
+               1 sub exch
+               255 mul cvi
+               databuf 2 index
+               3 -1 roll put
+       } repeat
+       pop
+} def 
+/getint16 {
+       mark true 3 -1 roll
+       {
+               dup {pop datafile read} if
+               dup {pop 256 mul datafile read} if
+               dup {pop add 65535 div true} if
+       } repeat
+       {
+               counttomark 1 add -1 roll pop true
+       }{
+               cleartomark false
+       } ifelse
+} def
+/putint16 {
+       dup 2 mul dataptr add /dataptr exch store
+       dataptr exch
+       {
+               2 sub exch
+               65535 mul cvi dup
+               256 idiv databuf 3 index 3 -1 roll put
+               256 mod databuf 2 index 1 add 3 -1 roll put
+       } repeat
+       pop
+} def 
+/srcbuf 256 string def
+/rdcmntline {
+       currentfile srcbuf readline pop
+       (%) anchorsearch {pop} if
+} def
+/getplateindex {
+       0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall
+} def
+/aicsarray 4 array def
+/aicsaltvals 4 array def
+/aicsaltcolr aicsaltvals def
+/tocolorspace {
+       dup type /arraytype eq {
+               mark exch aload pop
+               aicsarray 0 3 -1 roll put
+               aicsarray 1 3 -1 roll put
+               dup aicsarray 2 3 -1 roll put
+               gettintxform aicsarray 3 3 -1 roll put
+               counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store
+               aicsaltcolr astore pop pop
+               aicsarray
+       } if
+} def
+/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def
+/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def
+/gettintxform {
+       /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load
+} def
+/getnchannels {
+       dup type /arraytype eq {0 get} if
+       colorspacedict exch get begin Channels end
+} def
+/makesmarks {
+       composite? {
+               pop true
+       }{
+               dup dup type /arraytype eq {0 get} if
+               colorspacedict exch get begin MarksPlate end
+       } ifelse
+} def
+/markingplate {
+       composite? {
+               pop true
+       }{
+               dup type /arraytype eq {
+                       dup length getplateindex gt {getplateindex get}{pop false} ifelse
+               } if
+       } ifelse
+} def
+/tocmyk {
+       dup dup type /arraytype eq {0 get} if
+       colorspacedict exch get begin ToCMYK end
+} def
+/topsspace {
+       dup dup type /arraytype eq {0 get} if
+       colorspacedict exch get begin ToPSSpace end
+} def
+/colorspacedict 5 dict dup begin
+       /DeviceGray 4 dict dup begin
+               /Channels 1 def
+               /MarksPlate {pop black?} def
+               /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def
+               /ToPSSpace {} def
+ end def
+       /DeviceRGB 4 dict dup begin
+               /Channels 3 def
+               /MarksPlate {pop isCMYKSep?} def
+               /ToCMYK {pop _rgbtocmyk} def
+               /ToPSSpace {} def
+ end def
+       /DeviceCMYK 4 dict dup begin
+               /Channels 4 def
+               /MarksPlate {pop isCMYKSep?} def
+               /ToCMYK {pop} def
+               /ToPSSpace {} def
+ end def
+       /Separation 4 dict dup begin
+               /Channels 1 def
+               /MarksPlate {
+                       /findcmykcustomcolor where {
+                               pop dup 1 exch ToCMYK 5 -1 roll 1 get
+                               findcmykcustomcolor 1 setcustomcolor
+                               systemdict /currentgray get exec
+                               1 ne
+                       }{
+                               pop false
+                       } ifelse
+               } def
+               /ToCMYK {
+                       dup 2 get mark exch 4 2 roll
+                       3 get exec
+                       counttomark -1 roll tocmyk
+                       5 -1 roll pop
+               } def
+               /ToPSSpace {} def
+ end def
+       /Process 4 dict dup begin
+               /Channels 1 def
+               /MarksPlate {
+                       isCMYKSep? {
+                               1 exch ToCMYK 4 array astore getplateindex get 0 ne 
+                       }{
+                               pop false
+                       } ifelse
+               } def
+               /ToCMYK {
+                       dup 2 get mark exch 4 2 roll
+                       3 get exec
+                       counttomark -1 roll tocmyk
+                       5 -1 roll pop
+               } def
+               /ToPSSpace {
+                       4 array copy dup 0 /Separation put
+               } def
+ end def
+end def
+/isoverprint {
+       /currentoverprint where {pop currentoverprint}{_of} ifelse
+} def
+/version_ge_3010.106 {
+   version {cvr} stopped {
+      pop
+      false
+   }{
+      3010.106 ge
+   } ifelse
+} def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade false put
+userdict /_aicmykps true put
+userdict /_forceToCMYK true put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_shading_AI8 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI3_BeginRider
+currentpacking true setpacking
+%%BeginFont: Device
+%!PS-AdobeFont-1.0: Device 001.000
+%%CreationDate: 3/28/94 at 10:55:02 PM
+%%VMusage: 1024 52339  
+% Generated by Fontographer 4.0.2
+% Â©1994 InFonts. 619-234-9400. Created by Gary Hustwit
+% ADL: 800 200 0
+%%EndComments
+FontDirectory/Device known{/Device findfont dup/UniqueID known{dup
+/UniqueID get 4115447 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+20 dict begin
+/FontInfo 16 dict dup begin
+  /version (001.000) readonly def
+  /FullName (Device) readonly def
+  /FamilyName (Device) readonly def
+  /Weight (Medium) readonly def
+  /ItalicAngle 0 def
+  /isFixedPitch false def
+  /UnderlinePosition -133 def
+  /UnderlineThickness 20 def
+  /Notice (©1994 InFonts. 619-234-9400. Created by Gary Hustwit) readonly def
+  /em 1000 def
+  /ascent 800 def
+  /descent 200 def
+end readonly def
+/FontName /Device def
+/Encoding 256 array
+dup 0/NUL put
+dup 1/Eth put
+dup 2/eth put
+dup 3/Lslash put
+dup 4/lslash put
+dup 5/Scaron put
+dup 6/scaron put
+dup 7/Yacute put
+dup 8/yacute put
+dup 9/HT put
+dup 10/LF put
+dup 11/Thorn put
+dup 12/thorn put
+dup 13/CR put
+dup 14/Zcaron put
+dup 15/zcaron put
+dup 16/DLE put
+dup 17/DC1 put
+dup 18/DC2 put
+dup 19/DC3 put
+dup 20/DC4 put
+dup 21/onehalf put
+dup 22/onequarter put
+dup 23/onesuperior put
+dup 24/threequarters put
+dup 25/threesuperior put
+dup 26/twosuperior put
+dup 27/brokenbar put
+dup 28/minus put
+dup 29/multiply put
+dup 30/RS put
+dup 31/US put
+dup 32/space put
+dup 33/exclam put
+dup 34/quotedbl put
+dup 35/numbersign put
+dup 36/dollar put
+dup 37/percent put
+dup 38/ampersand put
+dup 39/quotesingle put
+dup 40/parenleft put
+dup 41/parenright put
+dup 42/asterisk put
+dup 43/plus put
+dup 44/comma put
+dup 45/hyphen put
+dup 46/period put
+dup 47/slash put
+dup 48/zero put
+dup 49/one put
+dup 50/two put
+dup 51/three put
+dup 52/four put
+dup 53/five put
+dup 54/six put
+dup 55/seven put
+dup 56/eight put
+dup 57/nine put
+dup 58/colon put
+dup 59/semicolon put
+dup 60/less put
+dup 61/equal put
+dup 62/greater put
+dup 63/question put
+dup 64/at put
+dup 65/A put
+dup 66/B put
+dup 67/C put
+dup 68/D put
+dup 69/E put
+dup 70/F put
+dup 71/G put
+dup 72/H put
+dup 73/I put
+dup 74/J put
+dup 75/K put
+dup 76/L put
+dup 77/M put
+dup 78/N put
+dup 79/O put
+dup 80/P put
+dup 81/Q put
+dup 82/R put
+dup 83/S put
+dup 84/T put
+dup 85/U put
+dup 86/V put
+dup 87/W put
+dup 88/X put
+dup 89/Y put
+dup 90/Z put
+dup 91/bracketleft put
+dup 92/backslash put
+dup 93/bracketright put
+dup 94/asciicircum put
+dup 95/underscore put
+dup 96/grave put
+dup 97/a put
+dup 98/b put
+dup 99/c put
+dup 100/d put
+dup 101/e put
+dup 102/f put
+dup 103/g put
+dup 104/h put
+dup 105/i put
+dup 106/j put
+dup 107/k put
+dup 108/l put
+dup 109/m put
+dup 110/n put
+dup 111/o put
+dup 112/p put
+dup 113/q put
+dup 114/r put
+dup 115/s put
+dup 116/t put
+dup 117/u put
+dup 118/v put
+dup 119/w put
+dup 120/x put
+dup 121/y put
+dup 122/z put
+dup 123/braceleft put
+dup 124/bar put
+dup 125/braceright put
+dup 126/asciitilde put
+dup 127/DEL put
+dup 128/Adieresis put
+dup 129/Aring put
+dup 130/Ccedilla put
+dup 131/Eacute put
+dup 132/Ntilde put
+dup 133/Odieresis put
+dup 134/Udieresis put
+dup 135/aacute put
+dup 136/agrave put
+dup 137/acircumflex put
+dup 138/adieresis put
+dup 139/atilde put
+dup 140/aring put
+dup 141/ccedilla put
+dup 142/eacute put
+dup 143/egrave put
+dup 144/ecircumflex put
+dup 145/edieresis put
+dup 146/iacute put
+dup 147/igrave put
+dup 148/icircumflex put
+dup 149/idieresis put
+dup 150/ntilde put
+dup 151/oacute put
+dup 152/ograve put
+dup 153/ocircumflex put
+dup 154/odieresis put
+dup 155/otilde put
+dup 156/uacute put
+dup 157/ugrave put
+dup 158/ucircumflex put
+dup 159/udieresis put
+dup 160/dagger put
+dup 161/degree put
+dup 162/cent put
+dup 163/sterling put
+dup 164/section put
+dup 165/bullet put
+dup 166/paragraph put
+dup 167/germandbls put
+dup 168/registered put
+dup 169/copyright put
+dup 170/trademark put
+dup 171/acute put
+dup 172/dieresis put
+dup 173/notequal put
+dup 174/AE put
+dup 175/Oslash put
+dup 176/infinity put
+dup 177/plusminus put
+dup 178/lessequal put
+dup 179/greaterequal put
+dup 180/yen put
+dup 181/mu put
+dup 182/partialdiff put
+dup 183/summation put
+dup 184/product put
+dup 185/pi put
+dup 186/integral put
+dup 187/ordfeminine put
+dup 188/ordmasculine put
+dup 189/Omega put
+dup 190/ae put
+dup 191/oslash put
+dup 192/questiondown put
+dup 193/exclamdown put
+dup 194/logicalnot put
+dup 195/radical put
+dup 196/florin put
+dup 197/approxequal put
+dup 198/Delta put
+dup 199/guillemotleft put
+dup 200/guillemotright put
+dup 201/ellipsis put
+dup 202/nbspace put
+dup 203/Agrave put
+dup 204/Atilde put
+dup 205/Otilde put
+dup 206/OE put
+dup 207/oe put
+dup 208/endash put
+dup 209/emdash put
+dup 210/quotedblleft put
+dup 211/quotedblright put
+dup 212/quoteleft put
+dup 213/quoteright put
+dup 214/divide put
+dup 215/lozenge put
+dup 216/ydieresis put
+dup 217/Ydieresis put
+dup 218/fraction put
+dup 219/currency put
+dup 220/guilsinglleft put
+dup 221/guilsinglright put
+dup 222/fi put
+dup 223/fl put
+dup 224/daggerdbl put
+dup 225/periodcentered put
+dup 226/quotesinglbase put
+dup 227/quotedblbase put
+dup 228/perthousand put
+dup 229/Acircumflex put
+dup 230/Ecircumflex put
+dup 231/Aacute put
+dup 232/Edieresis put
+dup 233/Egrave put
+dup 234/Iacute put
+dup 235/Icircumflex put
+dup 236/Idieresis put
+dup 237/Igrave put
+dup 238/Oacute put
+dup 239/Ocircumflex put
+dup 240/apple put
+dup 241/Ograve put
+dup 242/Uacute put
+dup 243/Ucircumflex put
+dup 244/Ugrave put
+dup 245/dotlessi put
+dup 246/circumflex put
+dup 247/tilde put
+dup 248/macron put
+dup 249/breve put
+dup 250/dotaccent put
+dup 251/ring put
+dup 252/cedilla put
+dup 253/hungarumlaut put
+dup 254/ogonek put
+dup 255/caron put
+ readonly
+ def
+/PaintType 0 def
+/FontType 1 def
+/StrokeWidth 0 def
+/FontMatrix[0.001 0 0 0.001 0 0]readonly def
+/UniqueID 4115447 def
+/FontBBox{12 -148 648 974}readonly def
+currentdict end
+currentfile eexec
+d8061d93a824652cab7761a8dac65b57ec3fe6381b068e57a586b08ef37fe40b49b7d7633b8ad558cfeda279bfa8db2693a95b593a4473e0e0f38e654ad86ce1231549719ea44878ff49585a89f37ddb79b56f99b7d19a6f1acf5bae20ca0c10d8ed181b136c268f5815bb0b476c700d50e8d29a6c215ecd2f8dc20a8607af
+2d7ea45a72aa45d6134609a1958b1c5eb3371c235e02c89fc6c20f6d9d89e7de177924fa6330368f5fe19f98a087d7eca80136d901279d0a430b7318a2c7cd321fae1e0a6d7b61e387f08c3ef3c1af63d5b419648455e43086bc0f48779a66c5282b6305c0ba8613d66f3fb7dcbf4f6993d06a8341171e0b6716dec273b955
+3282dbdf7725e2adbfeecc4cb50c0bc17354017a7ed420764d36644dc641e5ad23b874d1afce9e0d21c8a51de06eb32f7596def184be868771c0b9c40f9f473a95b361a8f9440635cbfbdc756e9ab670bb141d723e2d00b774782034fc49c519e7c63b4e3c831b0b3c7940a6b493ed4d7b2f633f0e953d09d843ba3fd0a6c4
+1820e5ca93a99ded985442f057bf442caf1ffbdbbf70cf5788351bd1445566488a9beb9419fa93b418dfbee8ca9752a50f79165b62281a7a17ed89c099d068ba53d667d632f5cebcd874b18d88b90f0254fc7f8567a15a50b4a183b123a054cebc9ea1a7ce89bd58774ff507d6eb0e11a447f7527679ff9665257d5f9a7518
+be658907cdad9d68c196bc411b35395d66cc9ef105609942dca7a1833b182aa820c6490eba6c87a1acc52a7391465235c249598578cdfdd7bf1219c8ea8496efec282c08b54127cb1675aced783aca8f6e2520857d1692c18f6a60881693c0e3811089aff3e70ab7e72de2b1f4ad0e3a664dfd0858970ddbeba4e8ab877322
+26616c2f7dabd2421d5efcd3666728fc69fcaebf926af2c3174aab7bdec6e0d8431449eb938d33b68992e6c36984e05fd2d74e837708b42d4899c0614df95303b2b33e22a3b0dc6883d6516e6804b2d5ba6ce94db57ee254b840490b82ee2a847fbc1e2957d3ffa335f026167c05562a79c4ca7467990ab22f816c47061417
+cf969ca6f300a72c7d2e3aacc12dba2477170a4999e8624d924717f9cd83dab168eab77a1b41631f986be5587beee9ffa5c9ea5cac6cc6d3429d57a10149fe4d81a8a5a27e68f193765cc7c1db653647271ceb9ee3ab6be87989888457ce0861f3ecfb57abb2b33776cc54ca83c846ddfcb0d31065224b0735a85536e334ba
+7cfe1f29ec0a17c3c0120bb269f115213d4e2cc9bba6a6188dcb51efe797904b6953943b7c823c9966437973cf0da10d500db5b19f492119b5f8dc1efb27c38666a1982ab013ca68654b6de603f315ba15c9056260935613fc97312d41a8f6c36e31e3df887a73065d555cb3fb914d03b0f6e0fa179e1330bddcf8461c400e
+ec3c58c0279ab5226cc73f3376db7ff98d3aac32808b595120873be783c9a56690a01dff3b5cf183490cb8200318bffac052eef361834649ea9430efefbd981dbb5aa7052f67fb96399fab7070195a8a85989b4565d136fc4ee2f5060a6d48823041f44bb3e27415f81538b2dfa16afcce8ad23e885d4bead26c16fbe97f14
+40cc98ab1a5af166133fab2ed572f805b4084b21e4cd289bc2c93b44e01200d1b0611d704e814b856d48c6377128fa2f90e4dc173f97e5a677f44084b6dbc25014ab7ae1e8539511c2ad200cb4b9e1f60b3c82a22434a8bff68779166190883f9624580d26230e61d06a692b09101c1f60fab7672b5d6a168519f9061f1311
+c662b6033166660875692c7cb400a45f49a9058d0eec60158000c1b3ff6cb6ada7e3cb0f549696060766d6c88417de185e8f92fd0b95b3e60a8d5d92d3eb3fa7ff4e0268ef612cd93e6b70f2fa393ebf3f15cb105696464ea23e7ee2c467539c3df167859fb8318cedd23cfbf8d8acb1cd7cf1d07e6023873d0f7d6236c412
+79de21b2cfff6b2c22c5fb824880bb115bd80bdc923c6d0aec0d30ff65024fb9fd55b0eb0163055138b9f140dc7fc02a7206b3d48f240bdaed454e73798e57e898ede3c3c90cebf437a11d2587322a026889cecae0580f851c3b24f776ecc40454fa2a4a18d6a9f7acf0eb1ed77aa874666426892829b27806d58bfcbb2fe8
+bfaa8ffbe9af08035a80e38fec7d365f7bbb0252c977b6067ca276c7f8eb1fedd4992730ac0bf1eb423e11f23110c40a05f2962a58e6f945caa0353668c1a748bc96ebbc31dcf33811139bb4a09bd798670ecd4bf27b69632f24c43a7e9932d23b3c5ac161b588e5510bd34aa9fca0effdb0d04648d0938f0604bee4053952
+889b115efb5874087ea4d968898243af4f823470154a5ff87bd5b7ff15e503a202b7c1a6ea95972f6e41cb541e4d64b51cc9cde37dc8829d0dd5c5e15de63b23b275ab2a2dd8677909a97f2b7298a88f01934587e99dbab11efaedd8ffbcf7cc71dd15d6899c6b9b5d0c116ce2905164a99526068aa57b92e5288128a75759
+9f51a287484491c727e258bc146e14e139ade61d957b2bccfdbf1d7251c9c6c11bb59ea4896c9ab6901a11454acc95098ec9b1072bc3043fbb0f532ba75aa47aa61e340f1cf1d679648c3b5d0eecef05212c571dcdee915e54fddeb48574433f25ec49b5e51aff9096dcc37f3ecc251e324ab189c0d9900873e4a25af639f9
+9cd818f0bf3b2e7ccfc9eef7094b49ad6e912cdcce96189cb646369683084148de4c6a4f5e6e55a322164f063072ab7010367f3b0d7f544ad8072f54badd32cc5bf51e0f7203780041db263fe150af7300895f1fb7be300853c264a2777076fee6f9e56619a1b7d44154b95c3a3e0433ce02a1db6262f3d9f5438838ffb362
+b963da4f4e438a1a01d74ff6ecc56bfc4cb4b1a135ab81431dc7c81ace913fbd056e5f2266ef565d4464c9ecab8094d638bfbe0a640f7f892a46572b5db1f618e6a71b727937a672c95e604a6bad1977a907616c8aa3af17ace4d9530d02a992314728455be5f207c13cf209499c748ce2f7c4bcc8756e9579bac1ce84eebb
+02d9fe35ed80ac2a4323bbd15d91e2c214c4bdb0e1dc8101f349f0328c371754eb08f5508d3b6a14afde9181e85611ecb2de720c2bb332ee6b6eeb928a5e3cc5a1b7a0bc72116aba7cc9684c7d3bb96203ab60f550bdb279129576aba4b2657aae837efcb4e56a711c56d6ac6777bf68b91a4fdeda09f9ea528f532a45f291
+258957255cca6ebd4534ede89c2bc397c91388ceb8655995b8ce792a4d617063645bcbe7a2770be9cda1a0161cd5f33e36a71ca94883a1067ea9c97571832a8892cfc6ac2c9fee7f115b306817f3d2f8eba2c52f9150503087bd7c6d118980418e0682767c287b23ac1474cb820d17b9991335c3ab932cecc7901c50daaa83
+8aedd750d8f2655f2500151319600e3ec08d1ab3d4e529bcca3e87fcdff2fa0eb4903c23e7ca155e7dc021bdfd981581303ddcd133563ab65e99b93dffe49fc52a394e6650ae60df8bf615237b78aa426d3da8b8db58dbc54c38543771a0ed633d5ee39cfdcaeb824f266348c21d4e456cee8ded74af8d20e73186f1228258
+7ecfa09ea725b674ba887e7efb22a5644abbeb890670f6263e3b9eb011f6940148f46c29b4145192521d8247a4c6066a02dd4d90353c170ab70163269e12972640b34efcd9298f86e9fe6b83ad0628ec8b803c32bf2c2a550f8e89c71d47f2a63c0792677373048be1c8729ac277545334e7b460958491daae755f6af3c06a
+8b848ca70336e5b585908d93422f3da947090ffd9175c98b08e523fde5ccc9043acc4c9960af2ecef6aaebcd12ff4c9af27f0a5e3b3a772195c1bace42a568a535e30b5aab6729fa405de74d4a649af84d70e10ba0b69f76e0234c4fbcc5ec377d0ffb49c67208ef3f0aac2c477e726009fcd49bdb0387d134983d12f51df2
+21057c51753a0ecdca14ae8c9f2eaf2b4ac7516d72d8ae78e950cbfb19aa676dfc03e3c923c4d8ce25e4a7c9cadfe5fbf9fadfa382da04cbb47829b988ed99f208d60f915f52a3564efd3462d68e54aebe58cb5678817415f2e00d698c1469bbabfbf6919d7ef821dfc497df4b8db1dd53c70906f8e518f3b7f34c8b26171b
+590829a68bd7be76dab9db6239955c04942e2b261be108aaeeedbe77f2f4d05e4902ae99eba1cd4f482bd36f72fffc124e3c90ed48ade35a25e673841c149113ad0da2fe2bab1207bd002323509ba5d29ae00285e8909dfbe7ea3bcc73998346dde576a41ac98939c174a973b41e1a0666dd247ebd5e00a4e408d39503f490
+de243866ea7893643495cf9bf551bca3200baeac4e0f1955adb174416b29900bdc2def860e7ab7bd013de0dcd8679e183aa2e7693a86659caae141afe8ec7f357e9713b0e7d07de7e38e2259e558643413ed046fa3aeb75fb7fabcbcc3dd89ea664f5e5e811041a31384f420656c62f5128ceb1289cb807d0cc41359d61cda
+741f98f967e29eae00fd8dc3741869e37d84734817f8d8efe8289ddcac1cf7453a5f847817f1904a3d12c06c6ec290df8136fbc0234f4e3408d1470c3ecbe6e5f5667974b01eb6ee6e59dd577375bf21696bfa4d5e4a3941a326187dd3ac06f6612bc53dc31bd7199f13a4fc3bc565b7aeb3ab7715c6d54441e8a88ba29ca9
+4c1afba6770d72d0e20710c4bd382b1ffe3d47a6c54be048d93d7da86f8f385eb30f79d6821087ac542a1da642a1fca38c7236eb55471a55f85d95e3325c145623d017167eca2909721302bfc6a6023967c6c3513c2c69ccbaf875801138640fc1f47fe28b9d8bcdb948135e74050d60db4b3b583dbf2c6a627d1b46d39ca6
+88b8413c95d0935ff58d8b5ced048fa04a5890dc4e1e257c0ab5a8200532ea3a11611c170d7834b23ded19d0f6438906b7a7d6ca1ec1b3216a5e651e270583970b96da93617b82932dabe11feaf993a93ead759dfb34f4cb9bda39c2b5910808a8ab41168c2773a0fbbcb896a85913ddbc41446d1a2fa208df5ff3660e2095
+fe17138d0b735eca1aebeb34fe0311c4df5ff111f6f5d7e2be085afc3f231f2cabd5a4e7b7fe5996e7ee2fc56ec6a4b593b400c3707ec7d954807fc1f8013174286daf55d9d03c0b1a6e6de0af0067b4f42b13b767777398f6fa494ab448c08d603238434c8b2de9c140e890b9da0cb80529c58eaccb50eb7a560eaa32c9d9
+e179b39fb7d8b18b523966763d2cb6bbc0273db6ad7a29b31fdb9ced9943d9f2c3348d3a5fb22939f84609af0cbd5078bfce54b52c45cdfffafba11f221bb43b31848dee06579182715fa0aaee8492ba378f03afcee8823e00c06a4012ababe9a78a3a3288ace313061084dde37b21d34cdcd02ea1117d3acfa3245eccf86c
+6315e71e446687e6d9517910c440c838aafba25779151e4a64fa43f39abec747260a6ede4ae9b8a38c94ea57ee4ad5734d4d8a32d3b087c1331bed493f5482552252aeb7de7c0d9adb11882b96f074ff1b41f558987af3f081d64704721d3c0219f9e762f74c65d7420067527328b1e2913b772e82330d22ac35b7677c96ee
+8eaed8b99f2d7b8c28a42b3a7d22e79a2c3818c8bedfb3e3ef42215c21e338cb8cbedc151ba547f7c6592bf7e13cfb8081ff8fcdc1e54fcb6708f3e28374fb366953157eeee486f706253ba18af4623f38c1a74cd46dc01fa49a12dff6a6fe59ef589c2c0b55b7c16e35fa8184b1aab386ae793bea13fa656a8fdfbf712831
+5c4806d00cd2df4afb6a5e84b237b5a68415479531a47afbd5a00bc1ccd5fd1f4f9c95a426a553ef445615de74bc01dcd1226971233099ee75d0ee5cb06321e0c96aafde7ca90b8153d0c81758238af7c55402116abdb470ef76e025125bbe6d91ffbe99263494c65c59eb9cba650c957bee2250e79757eee857f07bea6023
+569590e1348049bf932e0422edfc51751310368da04e96ce80729eacb63fa140fa83e759655153a590fd44840abc6ec60aef47489fecd48fa953103a5f642aee55e28cab055da0d15e3d750e93e08cbe9d5277e61fd55312f518c293c1cf98fc9eea0d2f6d7b0c26df869b36bc869664bef19b6d2577106d7dc9b15a69bdc1
+d0b2263926b249bcbbd392c7b55e59aa9066022733ee075a7ac0d407c56659660bbf4d051c793fc4ae5f3984fc8bad99d5d8aa6141501960c52efb0a75219c934e4e989f23844fc319bade151406a45afe6a34450367bc34cce43fb8f18e20a3451d999548121cc552abf976489c60ce14b164321285e67c76ffe46211e557
+109742bd3861b74fbc28a26e16cc367f83eb08f3399d01114b78c615757f768934edf990fdbcbe160ba0be780723dd5558ab3274c09e76b4086efaffa891826e5c94c4355aec9caf4eec8b557b28163b809180a7754ed0edc212a4e6e7aa42cfd842202c320341889709b351309fe55e2d96c3b433ca7e70a4c68cdd424b88
+0f9c9379b41075bfa77f72808718a26a509f708427be64c8c9d82f5eb45f64079ef03613a19e6ad4a231d1e5dce672cc69a8ccec7773bd07c5d29a78c17797831ff7111f73a47fc637f32eed55d42c869eda61049308d43a1854ce98a2ba7b2819911beaa1b375a52cf825364681f7b9d0aa55e377fd7792db37c59b3193e7
+b7203b5764616b5efe8bb2f63c248118fe52aaf104f2a0554dbc013ff95753f7a64da8d877f265870c0ec98e9eab430286d0b8616c5e1731d32ffd85888b904b1861f2ba9e74dc3f2a4f3faa8f6425ff88aa2f1498a98be44748d6100f20c704323ec200a47f3de3a850097410674ebc0de4c0bbd6c781dfacf665c18f327e
+f6166d933838aec0583fa35fd3321db29f27af50b4d158e5d9a875b45286c19c675d92d56936c603c5cc533da08683e13bd35e2a1a02690cf4b0c9e25d2357fda47dec700321e4e2b9a1afe0b9210736b970cdb25bb9b4802d06697892aad68e825b9d2efe0be08593279d78271c42f2f7ec281c009c6cf34f2b71e8adb0b7
+39431882a521cff5001ca81a1fce7f46b87b6a7e793e4327a244f3ef16019febd705c463979b60ee6ea6f87c2c9202c060bf5521ed2b61a729697fadb707fd2eca5b5bb74580228a7cac3579a0707175bf10e35b6f5a4f72497390564d2c0a9e30614bfd1982cd528faf0081ddf57e2311315cd5b21de66f5eb01582c6c9d5
+7c4bc18687638c120c9dfe0fa4565f7f4ff2facdbc455ead34703595dec11b94c866791ec7594471a2addb3fe7e3a4ff3baffa0e4793e2fc6b6d2a991baa3d2277ae71d3e200c9e66f9acc298793021e0146019a0be4f7f393d6530bc397b71b6a4b6bd57d25deb41dd8748b6a49bf110615acafe1924be715616af387267c
+3032c9dc819206d67bf16c005b8406697e31dcc27cb978896c86d151043a6284bcdbd3491adfaed4d752ab0545040722dc822ebeb86aabc704547026c5f7ed488a96e40c80fd1318a12d1f08807ccdffc4ca2f28c7a6e4610d31879be015f6e5dc654e13ac2e6c978a3e8caefa23b84ea909f82af078f9bdb6efb13f614107
+7a70a9cbb32f3c44858aada1fc329e53fed7b91dfc087e9e99ead0add11e1f6f1b64f8c01f63f0f66d8b0e72532131fa0e5a8491d9104a8e469165466b51381ad969ba3f40180d0d248b2b12d3e7400dcf7f6a79a773e237318ce8da78cca61f8d47e916f87e5c796be484cc75ca49e111e8669516de77ddb5f11e33f60205
+5654b1bca7cade5774593cc239cd4fcb3d5e4f3a92992dbaeb54823260f6b39a9b5ccc95dcc870f5b06ddebd1d5efd8793d69d30abac25586345ff9c770a92e65a04105b21198e72fff5bb2701511cac912935a3ae9633a4fcf046db1ccd4d95b5223d62a452ce58a5df0382f0caf9021490c540c4bdcbf4e93ce337781069
+82268503d6238c5c738884f95bdd5ff4a21c0c09afc08d520dd5811066a94707911fb57ee495284aafd51f747924b1bc7dbe035a81b5cf83b8307830e760271dc5f23e8892a55d8dcf43bdc5fbe96b1107f6059318260a090882912cb9bb134d19bad158f23d9d7524d75b0c4895a2c51d0fd8d727b6830bce8bf2a946206d
+4bde47d871d2f2e0765768d751c3c176f142b7c935e9b56a9eb4629ebcca59b11fc4e8ee672e8dd7b86c32ca8b14ac3cfd38010f11b24bd8195861bf04af8406c846305993922fca7525e2d41a2155df3ce5e69d65b023fc516e122aeea9a60fddfa366671530867c9ea775560ede353f845f069a97f99bf0fd36a745aa244
+efe7a6cdefd3223fa50b4c7202ff06cdd500957d22ef4ceb99f7209f47edbad226d803c59060522cb64d75d33a0a528234a5a08624295588ee5f43571b6eb3005ffd9f3c6aa25b47ccc54899f8d2c92e873eb8428cd87224253f7425d921a88e0274a5ecc536845f4109dcb58d549be8ecde36fc996a681142d9eaf8eeb6a1
+860e88a98ef857f4b85d247cdb4c320f39a565b568b5fabbe86cfe097c6500ddcaa28216422c0b3f59d1c965cf0d75b487f1fd16a22815cacec8cac0f87e9eae79c0bfd4b60750dcd740bde980a11f4ad2499505a259f7619151fd5c0ae1eef55eac375251121f9651994c31534632458c92d3ef9549ba7556a8c65bf13d70
+e20583b41c57a460ebcb92fb2f36c567763f1e40da89ac94c4b89aa148431e294854a85835e73a730cd6c53202b5065ddf04d784f8d4326b7adc1e9b2a4e0265fd236f6d186cfa6c93a469486bc341ce64b12fb2f4c2e8c981e208888b748d944231dc1fb5362db890ef1edfdc15420a10020d15fa3ba1acc41c3ed0a0e295
+b366ffb47505aff24ee0ade40f070260c863515afbcd8a93637f2f7a82b7802c05a310b6b4c0da22a4c1e8ff47e739656282a57f97af84c04d645b5dba2d9a763fe2e18d7a92d00b4c95b314726889ff51543429de1d2d8a3819dfbe42cccda4466d20569e3d036f86428a1ed1b801fe287da0c91060e14b149dafba38ee6d
+fb2a790cdbeb4747b89d2afb44d86100a9f228a00f8019812d4d79bd400dd2643bf59475c882c83fa8837d8ddf5c602cda009303a7344576bd14db7cf1f42a9915e49586dd6216d86d53f644a245fbacabb985ce746169509ef0067a98528ab696b88814d791dac614373e7a14761e7c860bb86e7016ae11c3fd99aa935dbe
+e4773b2fa8317da780ee188914274b3cb4b2ab2590b0478abadba0f6db801be4488bae80e0bd16425d8a10f3975c5b0e4eaa3c17e30343aa04fcfb0d1bd3a5c6ad6ec33174ecfd9cc6ceaf1ddd0a0c2763be7ba3aa580ec4c0e4efe578fffd37dd044285ee207e728469a8f79d541945a70141851ab25530bb5a09be0e2d40
+3b56e6a5152dc75a59d70afb83af949c13898b3ae3da49455c92b2ee0337fca9613d147c492df5ea23e9a72d3e003b374c409ecb50d8f5895df1f017c30e8095573ee46395195961a5addd97c2237c54d3086e430da34ee6e1ae85b32a98d7212a6e072ffe73e57d065e2497508c0899e3309945a8e0c48f6b908fe569911e
+f443a5a39f72a474536945731a0358a18aacb46df1c1e8b27857aa9dbff6322c7ee3555f657daa27e78aa1f57a67b2b3286ed4d5c50446e0c8116acfa2350633acf375471b0328708854e7d6e92265f3e74e0a16c6bbaa81544e9cca44c351a477b2202d64b47fa89bafb043b2b704c4848eb349cdbff9cf31ea28a813918c
+117b259d343aa5f03a2bad1724bff9cc7dc9686eae637673438c20de1ec832eba488006c16b771a4be83c2880d378a73312a0ba07c246a72f03fb55214e205b59b2cf1826fa459c2f1d55a420ab9bdf1ce11f8fd7c659e3d43edcfeec64f591651ee7e7ca23c4b78f6f17362f6ab27701b8c84db6ce89c571603d2171cf5b7
+3300357abb2920e5652bd859ee437581870eb729858f65e8356856956fe1dcf617de21f80cb69977f0aaa02260e306d672f5f9196c06b08a4126be7cbf431bea44e03a3ab86bfbd685099658369680a307313fa23e4ed89b02b4062fbd40fe42d270344a916530749c56ddc245183607b4a07d4f1ffb4599e8460ce525d6ab
+19af4b561fa987401d2160cfc9e78ff4d211d84863e09d3f8c6f906c1c42c3dd8bdd0ecd709a5e90cbc4679d0ecedd20014694015f36a20eadfca4c818b0a2fc0353d4c576e7e94c308c08ed67236858bb88f180611dcf38cae8d14bdc3ad0f40a5f9695c11f584d4801390b885b544c3f3a5b07a6d3821724c09137260dde
+72224f90f206921b38768da87d0df7721b7a5cde0735d7164a4cf429ce3584da362454c6e389c8c2073e49564b245aac532e0a3631e868a3ac174f7a62c0e8cd8e4b6932e7cecd5618ba937e637ba20ea131863012a5688315520270e866b85c0ef3a450a292f9fc8052766240f632263fee77f3538b5e1058787cb65295af
+7e5eea99d41a84beadfdccff9f4fab6879ee0eb54654ac5cb345e830ef22a5bf9a00026e526086a27264d70e181aa2336e96e987d341ea74c7212048092af199b711cad5195e64ff60789ee873d301dc3fac7b681ed94aff52490ee6aeba217d5861a39a148dda37e2ccb876065c47818e49ae05272f6038b3a58f3f4824b9
+5538d791c678305ebd5c5aaa346658bae0c2d3f4f0f1f04a2941a1fa7c3e14ff067e9ad1e1e95a72d267c6394353320c4b4d31ab1d090a0d53bdc3df6dfba09642adb22c18a5d66dba104bd9a6331efaa34853f299fc0e9d435fb251b48bfbc56acfb79bd032dbe2ab2303538bdddb3c8083ef4696b569b070de832afe8e99
+d8869d408702e052001e5b39280136384653693b35ace3fc01c9f859f709d1078c17c75d32c9a00fb3db97c4d3ae4445507e238e5c0b7806d9c8492b9b843e3f0cc5e2cc5dd817e081c00d6d83378297f27c4131a29b9437323175bf5b9d3cf86e250578387df3e342f97e7cccafcd0bc229e22a9cf8fd48a3b28f82adff7b
+65e654706d8d79fa6b0d4e6754651dc2235f37ba47984e6e26cb99f46056ab74da43b1cc76561fe82aa233263b05126e66cf6f4f6aa3c52c3c6bafac90494e266fc7f47212f164e041761211f73514363cef69d5e1fe3155d19260fa622e41431584bf71212f42cdb6ecc2bce920591e6a06abc72c70863a116877aec33aed
+235f43f01bbb320ec12da7c95744f604544988ad2b68936db008c324e500b1e614c5035559957d3307d8d57028da029826e09a601d667ff635dac374e390e70b968511b5b859a029a3d80b22eba03bb4d4dda966139e927d62fa9869f6bc3b65d19fb81d1509a23bb396e6ec9df76555781ff2e595648c73a05133476f8339
+e71c97b2e7478e15e11c553178dc901a5b5aedcfe928cbbf46db104402d1b0224893c67f3efed78acd7193fc4a960850b6c4c167594a528576d1ae64c0e88ea5b57bffd4e1bfb56cea85436ef0bbb8846076dcbd88be89727c6277bfa4502c121d6eafc514332daecf17f681a36d1860263f9e3bb24483f84451acdf849067
+2f497e5c656dea475d9df57046c0ce4577e2f5f76ec273aacf56b12cd527db47bf88c7dec117b9500a3c4d1842a1b61fc7bd430de6d563526fca71b341fd97613802812b4c1b77ddced234619b459867b3201a9f1da37b8db636ad07c70968976e5e33df49d4bb2c74bb6d2c472f624032d47f1309d5139dfe6e6804987058
+a227fc0adc716e6ceb2401b4158929e5634e8b329facdea8c8f6edf33d52c5ccce8db18bae293c19bce6a1caff9af9d3a1a4c9125735d97090e212427c5cd2462127b1756f9b2b1968517f9b06ecedfa1a890328a7a68554f727240e7828e9bb54b788fd49ccb0ab90386f1ceea196e588a6ad17155b25fcd5071a4cd4fc98
+1a2ac8a930f85d9e70ccc6f5f2eef51c144e5f4c1523f5cc9de9027a6a96b14280ffbfa12bdf07ddae577b7b0559a500451ed1e254b05e29b7fbcb09a908ef2dc5054224ea7f9c91288d1f4c1bfdce151331e0a8841cb41296525e2d51ff2bc7ee6430b40f15c64f0ab35ba1917e35e0a2c9c1afddfd64049cd3b1544bc1f8
+95cb3e653160b62c93046dba6c49bce6d0026f06cc771e462c9796c6657ccdf4c9db0d346e1574a5181e52493bd08c7196845359be3f837eeeb3ab445c348502da48d840b8887d239a51f84ef32cc9699d27f4f783ee311f8639dfa8a5ce0c33c518a45c5f6474a8d7765d25e0453f3f60f88bb40ed5e2dc2344160c171b6b
+66d8894342502baf13f63532314bf2ed29576a7584df8e3d5a44eea8185fd3ec095e8bed72520b9334d1431d9f3004f17202b98b3409419b6f8747854a104a5f0afb9da9bc8c93bc4391e33cf99c3c8b9bdb3ccb251341c5979be14d8a9b1213219c2947e2604cab41f00a7226db4c1ae3d65739afdefd62ce3d268d854540
+549fceb1c46a3d37fec17a3bd01631ebc63cfc36c576bd41118ff2524bc6361bb52799425c93f2dc275c1a988b2083c82a2cdb5d6aa311b135a38721e46e57e00e518a0f06e09622d86301727a3ee674aab7267fd680f2b4c0379d96818422e41634d568ff18538a4eb4aa309bc1bd174dd987047b817733424d4392ed9236
+3dd395f517c2ba622ea25dda82738e9a942558bdf278f96508a6ef4c2a457e845667caa84173b11c46e8a8a4f9c33aaabe426295baebaae0eac62f8dbd68b71362d4076a503cfe9f95b26d744fc9a7186953cac74a4b5ebd605e702278a5c6f5b6311fd50a39625e63319d932cbc5353833822fec28824eed4a8793eda8d5c
+081711ddeb87a5f915eb07189931ef1b015af1cf555c99208ca09d3c802b2f1593a23a8774410947c39c116697e4edeb29954fee933d2c46f1c2f61449e08a0df628f100bd986869b4812e259dc5ef37a59b56e938da476ca294a430f1fe1e836aed44fcdba589689e90dd6e1e215eff05e70c0df258056303238260b26797
+48aa26a396d7bcf99a086e5ed03c1a48ea3fd63d61daf7c1c56faa45f824f011b594af1569f2c1ebf0fc4cf99c692442c0957fbe6561728774c0860debc7e265a98297f6bdab8d18b0938993777bf50ecd3ca6395074ea555fc3a925b8433bcd68ea6366c9bc148268f68dbd9c292d8c821a108c3a1b8a194e7f3e745d1428
+7441c7e9c8895b15c6a9abbc42292bc373056079083360cb3481d749ef439e788303d500ac098dd88903f487ab6b198126675dcf021367d32e24680d58dbf551ec5c92acc019ac5e170705190dd7b89338514c3f102afce6409fd3ac4d95ad85b809f920579a2b6697d2424cd7a6324e2fcb6daa2a5f4c5e80970275567393
+4a599e605aed017aba72d3b84390d7336c1c39f2199f732befcdb6532bc2bdfbc92ce17316e5519b53abce88d54f6877fd0a00bba4192197a89b61e6076d521ef6bacf588d19aed7cbdba39819c9a4019ab0641227eea491e5a0aee1eef458571ba706342fe0876d0419704118b18d1ee9e4e055c286c1fa59ca2fd375346a
+fb75570429922b44b376006e2a23c3228dff653e6ee6ae109c82655c18c02908efe8f447784e5719f3aef0ea4040774200ecb72e96f7752c3d89a7bac7b1da38452f820315b39441e0300944c657cded958620ed0178b0901e03e349bced5bb23ae9e4294deb84e5031116633483e5af73d30e221d1b9d0bc05d6a7507fd52
+f6f6db80bcc9116adc6c34eb6e037d4bf40bf04f282005d8539bcc32ff7719a5256e0cc263724a645973a8be965cb20a5d87b53ee0ac408af6c89dc54f79f04ded7cde96a166c30bef69fb320ca5ceafbbdf8252ffb2c0ac82558f65bffb8022bc9c7c8f373e1cd7819a3375c29646557ac306b47f9ff2cb91e0679029110f
+a583655f8d29a7def1e84ae42480a4b79d23c9d7b1e000a913d26522ed86aa3497d93345139dd461ee93bad486fb47229ea75607c51206cc994e3efb187aafaadc9ec1a905eac775ea8debe6faabd7ff22b11e06fe8554576575b337065ac891761a25975b9b59284f842dbbb3b2c1a27016113a1c13bcb6e552d5204a1f41
+a0775987910fee7eaf8cfadf31c537b85bb4853ba8a3fe6aa222f09233cf8d72f573b1651c90ca32aa7ba49185b8afd79c483e0a6241a89aa7dc18ba9d9ed6576b2e81e0168d57c496bcae44e9d07875a6f3c447c622d1d9004020acbe566047055435279a093cebd7c4bd6ed9a29721f1eec21c4ae24199876541d113f744
+6219637f4477e6977287e704ef7edfa1bdde7fd4be8ff57439ea8f2146b0629d8e98a5a80c2b8763f7189bcbfdb3222b9003d92dcc07bb7f1215b27c1b5a9a6b3595eca046df1ca827400c216f2f6da33bbcd47300ba4c4bf6d5b61fa5172f0813868d7a684e1adc3740e4e22a9e430141d68db63d6c40b5b8b837a9a27e3b
+a41eb6cfdc48765ca00b5f88b5ca84f19dc5b7e481a9fdafa504a673f0871c5a44f2d44f726d6f042cfd5b76828bee85dfada1a721533771e995d24ac9bef9e40dec0c0d0ab444dfeb55cd83048eedef09501f1f0e3b7ceb5f96686d571eac8f5c710e551c350560a85b68931d3ec66bba5c3673e59ac0cef367f9bb5b63a2
+98c1900e13569a540affc04c8a42768636c45469ca2d2173073e40a743d78cd8f58449efd6662978a3d58d73d05ecde6daad772894d9d2b27ceb04afae35f3a18854c61968cc052943109c2358b66a31aeeffae17b9112758796e41470498ccba8009bdb2e400d8177af4ab29e57c67e2a816a7a682e6f89ac9d4c0d3c5fcd
+c353523354221aa5f227d902a8fd6ea1ee63fc6df9cdadd1373d516c6d00a80d46472eee97d0393100db54a0034635d772766b1533a0b41186d87727a64c3e90e02d0a00deda7e91b72f752661a5e8da1ee320c97781f804b4fc9169a67ad3713eaf027e64dba1b4c1ac04ebb31b91b0b287e235f9ed9786e5b509d8b73b80
+75f74c95c8e269af91c5d38e45486fcec38e00abdd2c82f241142331709d78d7ad32c0237ac3e04eb79d78962d9bd014e2c1a58803b17ef22f0e05e234253b665ec0a813ed61e93733414c065693b7f6d78ee298356ff8f7a275ed990fa6d2ed7e52e9a5465acbfdd07be9affd4b4731314b5e80d1564212863e5498ba1eaf
+7508a899fc41ac1b33e7b20aec88de070c9a490d7a573f11bbc260ec929478cdd1348ee0a9356e16a22563222f89cc049828d3d07bfcd566f2e075915a7b709375ea963ae4a226d430200e227f8e7b602496fae39d595d9e34a642dc8c16efbb51f13e8f3026d4c4adbc7f6ff14321066e996f256a9cc9b6115a9ffa9aae77
+e794ddfb7d5efd704c61adfab6588dd8e42b988e332757a4876eae9aac89e7f86b89f48ccae16adb137eb79a9289cf391a95dd4e73719ea2ccec34bcb59754b939b5a99d3077de748cb4df3b8b534dce94ac3b7a709a3ee13859d215ebfad213687f75a9988f23607b2dd603c2cd3e2af8d49d659bf1e7d214fd6b92db86cd
+af8878d0002e2a050009d9db2d4a0700728870d2d3165e7611d7eb20058f27fb7f7922db96a92b8573fdc8b6e0d1bb9e8df799621a1615bc5dfb089eb220fc4a8085efa031436c767a63731200728aff1c8047848108becb8e554e05f6140159a40b1073bede345010aeade337f2d502383fbd036a500bb5c1ddf42204f2b8
+4b5c339bc5e269c1704bc1b95661d4b633540c50162f56661689cfcfcee775de2126d729a37c31bdc4fcc06c540ef8f6cc9ba978f85bf8270c1bbb9c2d49707c1695d4fa8381520b2511e40d890a50282376639e70b2145f1ba4738275951bd6e1427f9612c78260bdab1e2315d41c6f5ccb7ebcd9e9b6ab9be818a3485604
+2369744103a0210c2ab48be9235c2344efb570e82e16ebe934790d6acfa8606db201ba275cd3592a0c2b7c627808a0f08e181af74e4dd0dcff9a54fc1af11688e3b550991700b3693dfdf834657ac3e4977f75cc120679b35e4b0d82359e57b4a6ad12b3199e6e54068bc65dee5760ca3a813df048bd8503348a660bc4550a
+8f504649dfedb69031ea44343daeb2f994022cd2d70f828f355f0f35d5fd031408b6f0be5876da5e993c23e8d3118f2436408b99aee857a02824b2c66591f31bfd41e91fa3252739ac5359bfb1212fbb8a244b6d41354c42fdf0c3109e950ba4bc24124caaaeac7ba166b8c8c67198ece4dc222bfa6b866325e792d552a5e0
+ede88df12921b03d1ef2fe0aa5201b294582ffd3f132739afcf97e2a1feb9dbf490173530dbd7155da05e86b3e1fcf1237ad6ddc2059633b6134bdaa312427327958fe100989d4043219275b63a00612dcf4e50cc5ab5c9d634906bab562e5303f2fca751eb973bd8cbe505db334f5952aac5bb4eed480196d3b8556226b98
+6f2bd57a77fae30252e1c6de72cdaeefe3c23897dc796ece0bf11aa3cc72ee4c54481f426e2d4934dfbe34798961855bfcaa2174fee48565da40c617c84070dbda70ceea64631821f11183d25cfa78f0a7b4d6a50908a39cd090ca5c932f4c96b92ddb0933867be413dde51d795aed8e9abb4559ed0ef83fb6676f353fc383
+52ed0fab4da9d5cc60701b83e6e67640233a6d47b33063f08f758960d8b0efaf21a1843a771c760fd9dc4169f4464ac7a2c6ddaf0fb748ef6f66d541c669f2f3a3fdda3f638517c74925e8780901e61eebcbac3db53c36e6848e16e4b99dd9fe3c0d4f42aec5218f4cb6c9ba80153d53e77726fa110b61b137718e608da99d
+4fe056bb4b05d69143fc87f52d4aa130ab026b5c8afae8df0be26c260f807e1626f38ea644865ff8a6838eca7c0dd98314cbdc861bd06ffe8d8b8fc1b5ed1f4e643a4bbff318f16aa5f1e122a18ccf5becda91b97c3ff4b068a71d8b1492718c282e84932578fa10d3500c35a25f62781e3f85b5ce786530a5e95a815e6a58
+df70cd2bf2fcff4003152bebd49e7191a31a298b124407e39097335e5559b67415c7c695128caad080553ebc9dcf39f80fdb4b1e6f119ae487f809130e177586307004c46ca5d6e669fca92251d598577a9b53975f19a3748b23c429e033e27dcb4b79309f02a07063e4e5c085984a436cc61d86ac36692066c49522ca78c4
+4d0f4e94bed0327104958798f1c1e813727b4e5a1f722921b210d9e55debf6b0165b4139082bd20126c5f07bb145974c776bfbde92bd0b258ecbf6484bc8e7fc85594a68f8f21a48651044d367f0dc843963d4676f5ab892a4b2b54c8ad5f3e6ad73d32247495e2df10a4b937d6a0b3bce9828bf147f845e2edf9290c605a0
+24452fab80be623d1415433a48a2fda1ef272133cd4ad4cef69ff078b3d1036abef3121014e89456446c115a7b5d5ea3233173239ad9677ac6f2bf1afafb2c47c83443ab90b8e6558b7861d38f1b77f121ed2a4825e9f5a41f12ab36e1520244d790ca5823aae2a74efc30982a47c761bd8870699e70ccdb5dc90388b2fba2
+fc13f32c15ea3db5ec31cdc76c19c1ffd71590a2a0867e30674d9e0f71239f36e5afec527e3b67bd50c2c0ad98a96ea16e1306ed31f807a2b08bb72adf690974e8fc148b559731b0a2cb98b7ca2d610db0ea0c875891ec8e12be3ff4d16658596399332244d9a6468e501622caa053ca43ae0e7b9fcb9fd98b99d964478b93
+793ceefea54a96bdf2663c64eee639375f7d4ad7127f0f816ec8a7512b83b3cb83e5b40c7ab4fb1afd590008a522e548e39b64f5d31e42b15989e736f9b0e1e542b0b0acd5e1df5fb712d66e939fc2359f720587e24d7046f39ebeb464dbb353d19cc64ebbd2a3463064d9b4ab3b9b5de3d8805aa62cf477a18359c661a199
+0d27393a1dbbd7b38b4b56a13e9be9cac64b5edf3465db6f0773d65e86dae5dbe5b6dd4b579c532866fa94775ad1d992e20e6b828a68536a7baed097965941f92130d454a17f1740cdf1b2fb7537d1c02e1ffb06e30104bbbd7957c83a5bdd3af99819c0d2e95894fc463a6111532457c72e61bc801e1869d4175b2a6d031c
+82bd15c12fff28c31f766dd362ef74960e2ef41852b21d5b052bceab43de4d7501cd80d0ed60613cca8b875fada6d3746b8e6cea1f0d507d80a2f89bc42e75caa36da8f7095189f81c87fd24fd533e0528b942cccaca578b8481785edb2845063012ce78aa93afa6a8b39139b1cdac135d1a30a59a3130275f28ab74be35cf
+8fcf6cead29c4295bb3db61feadc8f6e5d333c81c133ad9c765f3f432cf31f0ad3a1806fd34f409dc6537c998ef3b63253012ccbe3edac76663602bedd2c28abfb1f3f883b7383ac09dc42802639ebb83db822802b53214963eb988e4d1fb430c86445d4cb24d2bb3d7fd7e191a62221a4e0c24d2af499655d79ee67d642aa
+49f63fd82a7cc170500f964c7c33165291bef814a1cc0362f9b36e733049e9c0030fb2679c75b5f4c36d7e7b4b86230f8ef88467f39b772b646344e0c3f010c3d1e0e32f58d91f2501f47184f5106ff250b431816d4de7c09b0355718cd7722e531cfd1cd922730b7f71db7b882fb52f495c241bf1cf4f0ec77a059757d2c9
+7a9fb187d48e997086c55bc2bd04a061db81985b6a37f721d7c55aebbc36b5fdf99558d07823f53b007858e38146a62e5ca25f100e0d26f644d2c5e5949afa8b03d322f626eef137a54ba8ba9937233509e3db69ef2ab64518e57ddad3cf3f230b7b889f613e9037c49ee18c0ed3fa60dbd4ffb887d08619711e2926f57f27
+1dbc112d9cb068f7346236d0b168e31728f3c005ed22beb18f0708c345c23582e86e4306c944e1b2183013dcf7ae4d72dd6705671f6566440ed19622d619822c643e98c7c361c78aa1cf4d216493854fb3ef4635c3c265fbd43c6096f3eb459cbc8474a44998492bdd286c14e328df8a73e421ff5ea5ba8003fdbba9cff842
+2e0a8e32f7ea5c60be79ba96d87242201c0e83cb1db0582c5e548acd0e5c79b0f6025521a22af244b7490a8aab533fae10d22655c08f65f36ff668811de6cbcd6912b88f1df605ee4ed92606e405d44338a781cf0c55b55e1c61dca12c5b6714e23963712a6f6cc39976d3cd3f5156b0af67d59fb1f394a0909eda39c97cf7
+e96cb1a12606dd36ba6c07c41b00f5528c20bbce7acebdffd14d298ba83dd3af61a1da522b4ee302a811df4878806395249ae13345294501640f8e5c9192b616a49d5d1bf30c48315b33def4ac77ad6291be2be111c8bceb45463d961c5da3a0dbc6e7618c7478781c84320bcc32ba0c725f599ea2fca47c9480617c03bb23
+9426619c2caab2547fc917066e9ad80ef1d0b365b859ebfe662c81fe19d3f7beb819c3c122a1b88d6df0d4afafef05ddf49cdc2e8802432d29eacfa8f3d7dfdbe3776179aba4dc7fa113b1a63bb6ba896516adf6a6ab2e09feee2b93a493f0e65f969d255e24f72671a3f76b27cd20a86d0438a0ddc70f7501973235d99949
+14224f86bb91bbe36c9a60fc43dc75ee6901914cd332e1d511c2167e748f2f8b2399f33d52782b6a587617d6eb0877ce02123b097af276d012eef72e8e785477cd37dd04a287a0d1f9d32ea95e12a30408dfe61efae276b3569aa9cc355b3cbed0b56e671fbdfcad47b3249ad477ce7e823669a8e0f317f1b9f8f9c5a7a787
+0d5d87e057747e2bb07378064e3b1fcf2cebf2ef865c1bb9fcb567c5c2d6ecbfdf9ec7805e4bf36e09f3ec3c4e696a2910d382497b1ea650aca0291965be3f893994626769aebfb03d19f9ca084d62d8453a637c4791211f9e4a4b9efdc6669e4b0328a33274cc3de6248132b01ea2ac56160497a19f1759057ecf9d0daf9f
+054f10d9203c2cb2f2d53d357ccc1fc400be9f20481f0e2c095e2df843d8d393521d3b2d6ffd8db68c1468e75f15c4378d07783a7d3a956b4f5a9698f368059e84f406cbf60a9157cd734e81ad0b07e8c67f96a408bb246d2d47f6bed1af8c9df5bc2263d9ce0418ca8e57ec7030bc820c1fdc8f8e0ef1703d3eaad05d19db
+e49d20a80b44e6b5fbe8f1dca5b53e7de7a0d699a64b35ba61546e8aefe6f608dcaf4ca7e202726d1f118773d4e161da4dc6867956439bfc4da4e1b4d45d98674c395d01be779a22c12f1b9f77628399acd7e9f9f100669d57aa992434523f8a1942dd69ea3b1090474c3b9e1482f53a9e0c9d43517165416327f98b6424b8
+1e37aa1dbf1d976c809a8fce1a713b625883b2233ae2e7949196d41785307e538bf1c2b1f1dcc71ac96d76bd34f26085752a616930940a2cd6fe5d1ea6599d6f3a92fa9272fbd899f4d6ae7d6173b933cbb95c49ed8ba27cbb20d639b692d9160d4d41543f504ff04ace06759403db8bd42abb37225b1b72c04a6367e2edd8
+aeaa29249bafb5353331f4cd42b373f45184c5bbedadc4b31ddb226c607e1e68f82070850194d31e9368bd2881e2a9fc7760378b44f7ade27aec4ba4a74de72d2753558ef5840b8f1ca013afb4eb9272ea0a6e9916817ab0ba9691a015e348fa3d500685ff999f91c74a9a72ed499b8efe4b8e5bebdb6bf6557dfc8fee44ea
+c6c9c94a28191c714b524c3c62eb285b0b93dc4162d13c1fd1c3ea2a6209566f2b8d8725ba60ee78231fc7f7d54b8f7095575453850fa30fc4f35ed7d13b624d9d4f1ed0c624ea561d8362ef397d31610e06fb18c2a64dbab31df2779af4134756f1e1a0de30f9bf9a12a3377e72717fcabb6de9e207ddc511eec03dae3f3b
+9d710b9c5df8eee0773ab5af103d383a83ff26f92d29702802d3dc7e33c53626d41c06459de547d9bfe8d62e4adc9aca779aac7048954a42a97de0c13aa3298f2d4a1bcf6c3b012f49ecb90fc37a17c16e35a81d04d5fdd3a8ebad6292a1cd5edf831a7d3ae35045c12e3e7ecf9fbe2331dd8b7650987da815f01f9e0dc261
+1fcee1b811987a752ebedd4857bf39c2688ebc2235c997ffc2e2aa833f132b61241c48b4b84c61ffd4fcd3cbf7b569e42624e02e80f471fb1fed83e9c6eafac8ea5bd0d33b033661bf1ac89a13056a21a42349a37bb094fc5097b306087a77cde8f9b85df6082d62938f539cacd3bb3eb690c729767712801c272ffd0bcede
+ae1f2dc6808322930287a020a2d843058e4b562cde75b0f37ac94fc9abf0cd7f8248a1f0fc70c3d58c21064018c3ee44272fd8d56c6527af50e47cda397ac4cd3bcc365fd8f441af41edc41fcf081f7e73f38f98872cf95f1915e66c43f06c68cce9868e69c570ac36a2bb4d818a46c985804fce150637749cde4495cb2620
+7dc942dbc2c929f80313b14d27327fba035214d915282d319d8e36e243632f71cf917ff964b97d26a00f793e452e64fd4aa229b40755011c6016984fb12375b74397f7ed824ebdf86648d9997ec708f30f985ef7f100fb309148eb12dcf8a6582c1a1cae6ada5e06acf0a562d79b78008575a547505182630390d4e0c4e1fd
+def9e529d96a92bb602962f54866a7b29107c949f1388013093c3e34e7ac8351249d90b30a60587cf4aa7411b1f526f991d72a631a2105307b12008283f5ee36baa88345d3859d821b03c097ded9df4122b0a4b294350fa3404179ff2daac414a973fc51fb4a250d320aae115ab384726b2e1b9096e26c864df7360b516cbc
+0afcdca17101fb4f65d0895aa2ab801a97e26cf024b656ee6785e1847cf2b135287987b9ac2efbb673883317ec4886551a892e83f1be0c61febfaec860736509d9e9b4c756e7a0b5ad5993266aa6d1ee11be77d8b90f3fe2e8a0f9917ab42d28609db7fa218000d840d7714a9fc30c41cf0a7b0b3e78f7ca7c907b289b5fef
+f4619e200ce56090a0de35544137c83aee3c6289f99fbaae9ad8ead6416206b1c03ec59062ddf5ed123b37e34948cd2b2ea8164b06be73d0d54cc98304d6432a3f6f3bf3f6d8ebbffdee3e47bd9bd22c4f9dbe42a926c09199a6b17db66b61c0593d766b7bf2aa63241384c0f32d61e020082118e08dac70f5034dafbde839
+db49b6826cf37832ac11829f2aebba2e06bcb179c2e6fa5b3a1a4976081469d50d64ab44e8e2f94764bf3c1a3454f057fd45ede47c9ebfc034cd07cb5d6eb2a27057af83d6b123402de65ee88fd55c30795270d122fade06b80cc4b237818085e62e2b8603638b910baa4e5f688cb31238568b3e6e307ced895a6684eb7fca
+bb54c91ea12e6a8d996868adae73cac1237425c00ca1c09a1f29bbc89e59fff8d2069916b51976c89aaa64bc58116e49d92bfc8140644210bcf4b3e785a2b6485ddd2157815fd425d421dc69e1b8f1ea1bb6fa6380b9e27fe67c792b05333acb05aa8f95323eae7ebb406ecf96cdd213231c943b02e3c3385df462e6c1b504
+6d58f94cdd30ed7747797ee142d44968ce450dd46352003b858e73e4d07b0f1d3fa872d2419a88be3889f87d7ba0d31052cfd4f0c6644f24dee7fab7c9bac7d8043a253c83d4fa4f6a5da82868e43064d50924cd155ec5751f44768e249c96e78bf703fee7b49c63cc57a8097125e11878e8410487860481077a950605a604
+a65c43e955eff1dcafbdb807afcc4d780b9cf39188e217698a0e09b761b3cac7bd578ec4bf5169b45a5d82506b019b93598d01521a00eba75863aba9e360fa24e90bb62a02f64bd9caf4339f787ed8f2a0e6be587e622caf7c9994336a16f96c1f1e82e932895100f49cba410bc594506b6142c2af6aba49dedfcb99e3bd23
+f6e1013c96f3163c55411a4b64ecdcfe9c718c931ddfe9599bcd6670e831f6d7c3451381a44e6c83827aa688e1be4e002ba0251555756bcdee6488229d4ff0b6462a38acd17990788293df3405b667a9466a954275bd1c148125fcb5623da03027a61ef99523cc99ba5718f25e3c124fab4f38ec79b5157739bcad24e069af
+bd59ef843125a07bd83745d9664f79b412b40ce53254308be8672f73f7f1e047107f5e385534c881479fff9d713d26f1286de459c153c6328ba44e526d3bbba2b6475799e84499195aec9da34be296b21002c2182f826bed70ded6c5234c13ed40653c88da4e2685afc022e22f6b33989d19d6cf06cb6025106e42892c2655
+24071a67147c254a904a10bd7abfe3eb13bf474ddd385753e537c97a5ff42fe7d6409eabfefda62e14e58fbe4e6a961b55475ee469f97cd04437b0fe4375a95a33730aad517b540173e42042e4bb38bce522f68138fd35cd036a986e36e9e5e9b2d2aa9f6fc2ba39816738104bc9d3d12843773f51a1e227e949bb7981bb16
+b1423ab3cc0dee9a025971722e0078f8e2a505dc93d8f5793ddc91683637c7892041a465be94741c335c7cb30f8d4a195c6fc350a99f665afb964248d63dc236fab7e201dc6400043213437147fce4f849f598fa21735aed8a5e42a8bfbd786137044fadbe0c41d982f312ffbefcf9341f6f1e8d18374d933fc20f2a5e82c7
+08e707763f9330014b7b6339c71d5f08041fe1500e268da79ac61e24bb4ffa3967242a8c688edec625ae14379ad5532b33be8d513db0405915da79141c23d0f46299e4e39fbcdd4704f9b618b1e73b8b618f1b9d53b31d34f11c91fd786331c0bce3a63575a616d949044fc241a125b4426f185c8cde39d68c0d094da11440
+76e777c9958e3e9db8e80afdc36f30f1596766bc7357c5bf4400f843038f0e9dcf43b0207227875e306b44bfa7e2c92288880e76ca80a24975be7a55bf27bfbedf0234c20e5f3a5dfa7cb174e4533d7f685f61dbf1ef23318537332896866275b60ebd8a036a1d01d9cfd8bc6e7814c18e928ff189405ae91707ba995b6a5e
+a0aecabd94029b34e09aca3adef0c9f48e362feb00caf969c5922a54003394abeac728b7d68f17b3ae58f6503b8697ca4668ff9df3f328d922f7d6e3a58172db6d1bf9a1dc110059e25bfb18829a0121c417420676bf90f37bf7e3c9eb7e3b65bab1e6484935ab1cd496932676a33c02829cc39bd386074c9639be07b4859b
+64af2b428c79c25ed460ccbee77725afae2119b1f9196cc30ecfae5a9effa104eb71689f2e0afa38ae1a5b08045886aab635e6a62646a1526890cc276b00828db6abfab88dc2f14ce5966dff518693813396d8d0f8cb1f437a800e5150b8fdec1d431f81ec7cddb4eadf22eb3e9c0116d36e175093391668d3befe49194bf7
+fd4dc5a27dec66c19d88bf40e0abab2297ac18e63daaff6cd571c717cfcd79e8c0811f4ba50d191d7b0b92bf93228b3a288cc363beb68a055520e8e1bad3b65b7c9acd753e11df768a763dbeb8df640a788dbd8659f44342cd17128ff47e1b372c95c562f1d31211ba6871c8a877ad39b4edbe382499b254b778d6c01720c4
+b86f8c3da6f212cc62ae297721212d9e033935ec7130c7a6f98bd28a8028c8cc5644dc06a1fddedbc0c6ca77370ac2f016025bc2f53663a7c83a55cd1d21fbdd983fcec08660c881ba1d01b2d2685eaa278213f71a58e07eb2892a0493cf269963854584f1c452d6762aaa05d482c75f61bd2d13952e3b04eb359d6204ce4f
+1abd87f33581b93305f67bc32fd92779ed3f95ef120fd44207fc47b3e8ad65f7ba4a22885b9d0d217bf34bc169b738abe0a2abb7a0d2465c95d6d16526937db61b8563af385706f1c2f970f13e321e7d8621edb9e444f2a3a9f46b2d9d17228d670e2a131e016672049161b837730cafc10617b0d20b562dc85b97516a64e2
+0a38952519dc5d8bd2827a8b8ab6555e2c86a8a3e07447e0bf8e0d393eae352435a70ad83f38bd657820e028c40e2c7267c91b9826f5210737b6999ce841410b526f8782c8816a612c8b9457fd19e41c9ce4972946738f6461d33302be7978e8bbf9aaad56f02ab4e8ec01364ceca2bfa62dacc60e7abd9fe72a55420f7c89
+a9a326b55d239a3070fc4c316cb852c7f28e4481236af2caa71ed3a8088a3e77e027f8b42d1bdd7e7334cf2ad3be330510ff3ab45f16cf114415a14e104c900e3b87afbdc3f0f3af28f25306c1416f314138da6e4585d16cab538c6255284c4d05520a1aa959b62d9d8b917b44997ad2abf563ed70ef00beab3bb9562839ae
+f7e4abb3dc9f5e5734b44bf7dcb257795891325bf746a9ced8ceeeff486769ebcfa27fac8a2353947b2bd378327dbfddba3a67a378099809b6c6fc5f4e18ffb8a7d3e1af912381dab3113ac87a24adbc08f1b6dc8076a29b88932918e8fcbe52b705daac632e176e6044ee7f4587d6d0370532c702c9dc92eb3ee8938c08e1
+e23a9e1ceefbd05dcc3f048ac631e38c6b46ace97e893ec455dffd1bb3873b1a85703126d7bf0a47f5e0633bd0e7dca7f174137cdd5508bd1c6493cb7b619f482c541ebe705f83c03719de967e083f1c9e3a4e357155a4b20553fec360ea773258ef477f8952c5172b10062958f72f2964f653ead7d3e1c4b1c9efb2bfc324
+ac2de310776b8cd5d910afa419c441ad7d239fe39f6179d20e0bb0db05f89ef02baaae6d53f39522fbc48e613aea450926d42560cb970b2d18c9ef992aa73843242fd5b3730ccb7da14e6dacd48cf0e08a22750ab9046034f494e4909c07b0e9de13794247f497e5a0e9c1354bbcbb71625f19a5ce5d94cf5af1ef5ca0feb1
+7c0a097882d41b7889a1e4da2476abf38521c490bdf845ea0e246da370a2f68029f4ba1ad7c183b442d63eaff498aa2b33604edb786030d033a37a251b09f55fa77b88ca7e77b0f9fa91e323049b344c82ce7d79acbeb379c4b23a8510e20566878268b2d835273cf5b36614528a4693960b27df4f0b93458dabca1badfd74
+0c380d30512e68713b88d193899de03552567267a9f99deac408fbb832258bdba1765bf12c0ab5e020ba228363170cda6aafbe8eaf50596aa41635d6a32dd60ae3ea3dc2d2850184fc2e9567e2d827c2509386b01a10d255e317a2b5d7354d325d52c542b3b3fc740c9872bced1b4833e7f2788e959847a002eececa271dbf
+fca11fb781880c82f5ab623456e8f70264de2a8ca5297ee960cedb48de05f41a66a5b4a60d427f281e71e19a5c2c176a004ba276f6e2fb8023227a8a46354938c656e0d1fc9b6d825584b43b73ab00f3b2b265af5a56208f8b8392cb954e207ee90e73782592cccf684d7d3a4982fa925195df7b21cebacee35227e9d58a84
+f6f035ceb665160084ba5dd53a2a1f5614a5830c28ad191886692067d5e2a505db188afc8e074a0c8d31c6a8726440f841c53a93f87f0ca724a6a7f4dcf166a376df218596050473e3eee63a9d0a1f40f9a59dc400dc6688d3fad7c7637ed6bacd16dbd80b27f4f8161d38c70f2f776519abca443e2ea6f6668080ffffc680
+81d96a16fe53a299cddc74f53169a10bf4c09613d88a6a12730e9728d00f1bd91efe8bf2331885589c047b1a94be3350d3afe43b35892c45c4d7dde587c1adbfe18afd376aab2ba652c512eed5ebf8f2da844fb30ac4c86dc0838f204847db7420deb9e059e185f968d134a4a7a6bfc09ab4b93e6e1cae167f6c984cc99b97
+c1feb59e31e3f5c87979ad351a5497554dcaa314aa4d35cd296d372e6f9344655cdac01a7c804e6aa229fb65684e7693dccdb7bdc018e9eb5d7c4eb739cde06ae9833ec2aa9d437e226e0adc91b6e0f15e848c36d7f61214daf57bc1bb10c51f8e2d99b0d8d04c68572da6b5ac1871911f18f024e80cd1c77e2b1596b221ac
+c4da476a4a54c91097d77393a51626b2ab5ebefc17e69c47c854b856a5b17402c55ad9c587509116eb49b3f7629b64ebd9d6a49fdb03318238de4a7a7351394225a80f28bba86937399ab6b1b02464958ebb832d3c1843713309ddbdda3afbcd1f2abdd6510075388585635cbdcfd6d3c59f71e90b287daaff8689d0a3266c
+f1470d27051f024eb406dd6861b2212026cb1cc188c309dc1659309c970b6316b066796844e605e606c7c050b548fcd702a7de57df2656ad727fa271f9ef79393c3fc8b2bbdc43214616c3db1587e317676750a3c0ab61b2160d55d18614e35276cbc77d0bcf0a5b14301dc7d6b5ca78876fcd00d843d6023b52fed7c390c6
+4c68850bca9f1623ff9508c312fe2d6e597850bebd23f705295e606651f021e1554810229fc9a98ed50c9a61bbc464ae8c5c6563a0ac09ba85a33f7ad555b51e59c32c7147b140822b9182d29521652ea64a22e40b2456c6044d28cc00f835e83d7560a146a7ca3d76911e72d01d69d0eb8a139c1fa62f69aee3c9642c08af
+6cba103bbfe56fc46451d775a826f54a949011924ea3ced9d739643c9ce3a45ce94998c69b6baaeb5c17e12119ddbeae483ede540c1912b153ee7522fe3f8bdfa76db94eba99005440ddd907c59aebf5cc76a7c5e1a60d40eb9e56a028c5293356a7bbe3cfb02350dfa177525c7637d885f3eced08dbbfbb365d1cca0a60db
+572d07e0a6829ce8ffe562c04553258b7ae406546b8d9a676d931f30355e17963a3f11eb4c9e190ce2c28347c164faeb9051a815d47c2986ba2cf3094caf2c5f64a2422f2222743c1700a21b79b1ffd8ce31a3589239af38be807dcdcd355c8e7cf3e8671764bb23031b5ada1acabb63928267cd26b2c9cacd1b4f4b0a71c9
+426161788e7ee7f32fb5520ab759938beefa4fcdd968bd53701ae9c27429b5d6e059342b9adef7b56b4c5eee2f46e0cd472d48f4b9d47d04dd0a390f88a2be3e275b65c3b7049431f94d850d63b2b2154105edb0527a4f712cf523b75aec52c4816683d59ecccb03a26e151114dae625f446a713af28d7d8173e4c44624ec3
+30f84446f46752fb18ca83e19392b1570739b4d02cef8427ae082b2cc31d8115bc18f2d71940437f77c1f98046b243b41f0ec5b8db811f1e8785fa163b58703e813161ea55c4ec7bd96206f318d2ca177d2d00df885cde32a2c589323bb40ff941da9726655daded4d7758dcca859606892ffbddb1889a4a0b2cca0470051a
+799292acbcf80ec3d459dc25208c73b0923bfa81e73e558c0a86c805bc450293ae9fd058a5f860074c6a200517a59c51582ef0c3ff883ab42cf184e7501919c9249e4cf3cee68a5df88e6c3d25f865df22ab77383427e73fc409cc5f24112251389c58d40dce86648cbb4abe34ca5aa1627202e281aa2261a37f6ab2e46856
+cb978aec861908094a865447eb1db7460287e2c4aade4853895eccbab40eeb427631087b3602286d2d2756894d74753afd3a82e61d33cb0cf748dc9321d7909abf4c362a3d00f1fb2bdb29ffe13427db353790f94629ff9756b2c3a4fdb544946d95d67f0b8e4253bc0272e7bdf1b84ea04aaab353a83bc2db356ef30f14d6
+ca7c6a280e8305a8874ac689d49c297c6a71fe61caa17ca8c1912701dced09cfc9436ec44c18b239c173e9f235e301a9aa2b23011d64a84a78d6f279e836257dee1dd4b6e44c92b06cd5a1a14a6dda6b7edaa4581203049333fa934279f0f4978f3c4508e78d348fd9f19ed2c0e7e39338b724ef376e351659dd0ced44defe
+1eae9b5e53a8b71726c08ba2660a50c5a2dfab6453d60d03662addd8aeac2453a1366b46f3d8133896382636aa4b401005a3fc9dd7722badea24dc1388fcb9ce23bf480621b513ee70e2d2cf1493a7a32343bf24cca354f6bda4ce719baae7d2563529f3026a6df7fcc843f735d1ada133f59f131053bce12b4d5f28bf87f9
+52034379a9759ea86ba5ae959d98408305b3c4e03142868ec2e9a7474a17d67964c115ab811f7a6b11425c1ca749effafcd6fe5e2cd8f709460902a2cb94111691d1f775142590fef526b3c7c12d0c525b7c95ac270a7375918c01b10bd5c0fb9479d4d4ec1cbbf11b893a6f78dbef8aa7e59cb014951015c89341c09e09a3
+e498cf9d17653bd0d93f4ff0457e499988e5109dde6b58d09491910869d7fd39d11a9d5223116b05bb766fcc9083f5f70a9d061d678c1655261b98b0697253b5e141a9d47d119384361241f3a1bbc7d80e6a454762e54400ba253cc72a37e27504731399a4d0b32316c32ca317bb22b4663f464dcbbe0bf81e1e0192c24365
+cca2cf7f329ea990a8657775a2bdea4773d2f61f4d0c75e3c5d85064ee3b042204b77feab4e3cfcb7877e8019c7a94c69e309c617dd1fe9faac9975e52cac77342e5fe156a5660abac1c3b4717779650c8d347322e8df24f47dbe690a78683bf67c01fff514f6317f8e52f78bfd780459818f32ece4124f16c6d43877e9d81
+e2061bbdcf8dc6aa52b9381528ea453ca9ff79a476a157cd2c5fd48f21421ae7d1447158ba806dffcc23cc37182a1ec042d8c9ccdc1457e579a1d07fb1ea4b76656e725a1cd26d675ba20ca83500ce9833da0c6125722f676c181164d442058ec5554c11ed6e4fdcbaba1241ff49bae20dce32e390bb0b50c2b815903a8e8a
+ffecc0676f6e5e86fdd36360040c9910faf0444df024d5c7bda00c59a4515f928c93d21a94ee872fe678059c8630bf7f81e9ae18c367456942f630c06cd0964b9684277cd2be69ec352ecfcdaf9b831dde441bc3ea50b8017590e68a79ba7eb827756e43d0ef9930cf498081a35546779536fba79bf3a27f05d32a905e7059
+f9f021026254d242c6660df02c95013c117c6d24ebe13841361d37bd46ae35e9666fe1d038ab598d9d9b390cb84f392160e25118164d28c6fd26ba993a34e9c43438f23f3a0ba3ca8bc64930ea374933d1e78303222529ce0e863b6b23e986bf56273f3fb30e0713e480e10db649efbaaf6e1639d350b248774b104e7faebc
+be52194905e54e132b02bcf999fa2467d0d35b913f81b23b6779ca937d80d225935e3c84bc5d0351789b514e08a6371a092a3745c36a6047173ee1c00f08acb111bb0d51ff4636fdd5278aa4c47980cf4782747aa0f5c48f95554977acd04e4bc95e9f3e57c04add8299fde93cf0ce05f03d5f795572892abf04d5e9350c9b
+d5ab7dfed8a30a55b73abcd420552acfe07a306333e4cee21e14eb790d3275e85af87db5ebdf952ce6a87fd1ff3413a7dc2ae3239f5ba51638e0ddc0e8bf8cbd73352856d0c71286c4670b24bc7e45f9e94afa897b24fb32dde0adad6edecfda7ed4ad98e2d3b3ab70fb48146dbbdbba0cd135c5eafe5a39edcf57ef873d52
+cf6924d2b449d199e3b902bbb475b7753ddd39f211a7fc6846b6d47203c4560a9b2304c86dc7a45dd5764d150ebcd4154e03410c453ee7e50b9156b7c1100534be5febc06046f1c2b7b28a17d1bc83a812ac100233b08daf42fe4130b7f650ba2e456f83c54b688f57fc4577dc2433aa2003dafa0390fd8d554e01b4863d64
+55e65dfdca016c9cc4df2749a736829211c192258e278f8e7b93089554647c545f50f5e7e2dd6addf75c20574c96f8182f102feead3f2fedeb26ac1dc75d93296d87c2983402551d21ec439ab0221a2c8be1f6ce0de9e44eef0a2e21f7471cc2f2ad9be8682b4f48e91aa07c49743225705e541b09015788e511ca78a1d537
+044e211b7b69d6c3f1e5d1489f9d909b08ad05a6488c79ab27578375b4ce7187646501dd31e0bcf7eefe884cb43ffff02dd9d0495f9c896bf2bedaa1fd88cf2f81a2626e6b9ff3640458b833ad44c6611695a9bd5ccbd6bb0f119d394b2ab32afb571a9cf3aa3119eb6b653d746dd90a8a79375474d96fc8bc274ebb15525f
+de953cb11a30556cc9c158f28d274a1b0bba86edcb16deccf8ceaad0e6e296296d3650eeb9e31977631147dc46b4ee8e98a8f2dd98dda6bc34160a90b0853aee24b31fb51bb9e59648d491708295e22c9428539deba079170f84a0956e8e6d85aac3218b2c0cb14d86af8512bfa0ee21b8dd8461716d539129fd604def7e0d
+64299308cda32c03bb63a5bae0465938d656fbbee6218080c3646853e30553b4b7e413be75334c607ade51b0111342419e48abf43a336fc56d27f1d826e3814376c7981dacc200a068fcd1bfa7e5466766fde52d26e23f05de090b134f6abc8e7891685670b646e3f08c5938c058a0d28463643895137745ef1cb9ec10d96c
+99deb3909b48b545d9f105e115e339543e058fef584a5eb28c465bce0972d57704db6b7a9a76deb1e0b09ef4102586e99c01f8e5b4ddb6871ee426e2b14464d4b0f9fb6efa1d26cefd389e7e3abe64f472a7b26cfd2d01e925e55d8e16b1a3f724cc03564f4b02a95c1159b9bbca97b698489861f971def07536dca84e9893
+9f49e1481e717384e4af2a3d8401434857c6afd424518f073a0c6611d0640b381c7ecfd17e1ffe8ffeeaf029991aa8b94814ad301cee7f9ab2f81471747d55c3bc61ba3de62827cab35b11c70f6dae3ecae2ac474b7cbfa5f39e382e979b63bd4a11de546c8be9b31773711b5e67913c18226f84643afa17b91d9b324a7330
+9a38ca8d98cb7f004bf1e9b587463cf9210a0a7ceed051573e312322712f5229a7a6d560c3503fa045a0682266b92c0136e0b3c29cbfd6fbd95c6c9c4be00480e892590bb12cc2240c98813283f65ed0886f781f520d36b037a7d08ca5513d4a90e4a883829999943f2a7fea006f074c898e7116176671691a2c95ae13f83e
+394c79c281dda817b542b762a39ee76e224af79c6a43776f09ec76604d3b4b240f0bad91e4d856e61011dfbd53c06141def0d1d0ec98123831c693cec547a0194ab274a7a2b9397b490f2dc1da0ec2d0c180cbed2ee5fe7e366070fffb3627eb8ef42eb9469828472769c2ad188584487254cd2af779be1f6730684cbfff9e
+e6c1b7bf5ac833e7fc34b7193f9d51296c0d719003471533da36f1130855177b7ed3e60760155c86377b20ab674b69e32365967e28703e3922b23a15b021091e07c0b75fa538090b235dd96be442c3baa1ea8add831b97d211c2ff5b3fe53f038a1c12144dcc8361c31ffbcbab2167a4f0e51da23642480214498125011a1d
+711771b41153fcf6b934c0c25c35d5dcd02db5349dd083518aaa14f32543ed076e9fd2ebf53d4e88892feca7b3a5189470b21d142b154d75e1ede154bdc78592ecb14d82c6715ba1624088c2b90357f3416c01b34397aaa942bab61df55396ec5ce23407d3dd3c2eda7f107a401017f232dfbd1b150f6c0ec3b93152c74e9d
+2591f3c6909f378b4947de867eba25f89d9e69de798b652103bad8bd49260f8492b622c282d635270144a12d58e0492713ed4609b1d609dfa57b9201939e9f18f524b019357f3cafd9f6c12679d8d9400475f66b93ce1135667370068a5b527dffad644143fe8741d56807e046368b91dd66e75a88f74637d0b5a59c04baab
+6dbf44b5b89e702e074d7dc6feffc48697a74797d773f4d8c960bb99344bd458751c4754cc2b4eab9c563b750098110697e586fd3b9c4bb33296e34de4ec1eb86d8974722e53559e301495d26c3197e65440582e5f54dccc5dad10a14cce792602c8c6c7c617f55a759981e358bd1d33e659d5c77cf30687e502126429171d
+da8c596be3395a78af1bd6cf2b643c2de81ba7e1e22078c91746a3bb40adf99553ed61c621e2b24387394f18a66d7caeb16daa0ffb60ad9b9d425090a9b6a5e0d035303b137fd254cd27733d8b67058685fb62e343f874a7941162fd5580cadad88c7608ac4487a0f14058a9196d884da3a1916d7079617213d5f89db244fc
+ab39c41bd7f51b18d9c9257b16ab12b8d921020105007a5b2d02421a34af52bcd2ddde0f344d50d90565119b889595dc8dbb37c9c9b8cfb965ba3839e735ff91f72374c1eeeab92d472733a3d6978840ed61465fe61979ba2379029ba59c50aef02892a39d8320113f019d32c34c27312089826ccc562fb970982fdd14de3b
+dfe77f5ae32d49c99adfd6978d6aa7fd7fa6071073f8f9bba55fbc95b54e7992b953da492bed8a5728d14393bab1f54e739de8c3025a5f8b61d171255e3517ef9e19314b8d107c6ad9d41f1e40ee4bde3dfb0efd4ab519007a77b0e023e08492a6de7155233d041d5cf7b7e9e82039906ddc523cb8810217bcc199925f31b5
+0fb6a8d47d3ebeb1560f5ede57d549b0763e0c67a40295b84e8ab7692d05c13989967e616a427dd96f4e077428125be951b10b1e5817cdd22bd232ff958c526d256a5670e3219e6d2a3ddeb6e1ab790176bada7032aeec3a9aabcc2ace9aeac918c01f337455ed11cb724e5e258d0628853eca184210dabb0c6ed6b95023be
+9057833399b78aa2aeff5dde3f0aaa2c2009f9efbc48eb0d9d4765dbf07b4663f228ed941f59a76d55fc9f67c07810748456b8e334e77e6d4f74277e9261d9ffc2da1cdd3128bf863691fce8cc48a100359b65666ba38069d3b29912546ea0a16e305db0d1545226c50628d4f6a08c408d64f2474eaccc41695dc2aef0d4bc
+683c40a3f0f94f9948d58efe7822a240e172491acdd6e8ca1b68f271ac6dfaf2e1705951485f15f8b9432b9a72e8c1bfbd0402a0e50bd3e71cbe8cf62503794ca877ebe9dbfbab545adaf15cc37a2a97d01449214036423409ff042a1dc07ad4882dd5a8d10b141153e451a4af2c2662bdc8a79061c9603b38e9b5ac67f5cd
+aacf5fcd6836a2de4d2ce94d9cfff1c2bbe4f98ada627d7f27b8d44b7f0e37393c19ee16038dd6346f5e7bf07e0cd51f3604732359109b8996146c40ece11bdb91c86f4b6e7e74d8d8918b625705ae75ff05bff1dc185fdbd897241b0b74d37591875cf7dffbd6da4a4fb3bb516e141f0f7ead76025343d328965e3315df4f
+56217f9f55afbe29bb5523ccf7ff4aa3f42889a5f3e85a7a22f0475aacc8c4fab17c4443ae7a72024749c5a40a5bf8c82b4f58a8c09f9a4ee0cba8f21f1e178e8232600a43e2ff86c61c5982227f95c93cee2d4674058d2127bf050fa113d478cd1485934eb9e37b55aeed7cd56e4db12cbebe8e666f679824c09ecf92aa2e
+09fc84edd85473d49de862a62f78ac63d87d53e61dbbe5b74932fe27e2b8fb73d60b154f8a456bd2f570e94ed58bd8201e460eef859d800c58c3b59d8cffc122d6a334d96f52cd88491ecaabbc25b414fc2b9efee56a0ba1c673151ff35de2d810dc1c7b0f9ec2c823a8b8d835210cdb55cb2e959533ee6b54dfda46722d85
+e3794c50c5c9dcf1dd618b2035e8bb8f0d99520a9864f2e96021aa1db1aab35f3e32e45c0bb457e5e117f313fcfe6938b9974207c10775f906eeffc4176fce43c79cc555edb26dbd02c54cd3df65838b6ce17a6604ac71036e882eca31325344fcde4371b928e47b55595bc299827908e617bb4b82e5bcd954c439c84fadfb
+0bfc9cb00ee1e5d41dac337699fa4c49b1a3d2214aada8a7dd63dfa83663660094d6d753493c1310da086f069ecac792e1e8598850af44f9719912be8463fed1d7ec2544245f70b1833d1af7114596ee3063e3ddaee634022a6fb39a0a2137681fc136ff3a21ff9d032089b9089a7dbcacf55945108f30607bab327a9de8c1
+31d1484c2463a8ec2e7072a2c0b14617e2bdbc332113a1f3c5d6f680af024929045070fd4d49f1d12015f8049a449835457b4b9eeebf04ed5f805020a428d607d7e4b8c8c406ef9faad69fcbed1ae04e4d69eaaff06b91d73b6aafa2f6d5378daccd9c6681dce4383e48501681ad611917f734b3d97174c2fc5c32bd3cc987
+172ac14aea7ed03f4ee707ccbfcc64b29d2909379bd95c96caa59217e8e33b6ac95e1218d6c3ebcdf6479c7f7fece2905e402a85df4430e44fe77e8d6ce4e4ada1031482c5e423dcc6c1a7b6dcf308b2f5a88e8c617acd02644ac99ce42beae85ab78473d01cf6a4830e8e83febacfad50fe475ad206654e567d26abf4766d
+cb8e75a9f62aaed4cb0d65d6af505e05dcb6f2e9b54f76f2f40f6dbc25b60d647d96133edeeb0673f74bcf1a3bda8c9c74f92f7f3f9026ee2b84ddf074d5b0d305d45253a56b33cd66b515e4a747c2ea5b53956044bdbab253d8a52fccaf0d6aa108b793840f6d0daccf8839204daaa69b3cb2cadfd063417168cbe3bebf55
+719fc878f02aaa2cdd1d32ee97747b5f5adc46d13d15e986360ac7991e65075b2cf47dfe8d35c9d47ae8d20cf5fa1b235852660722e87179910378bb654f214666338884eb2f0bb7524bc12dc072cbc192520c7c62a193b5649b3993578d799eae9cb034044e93b61f80946ec63ce375443d8054620fadb5d3c894f1e15b13
+7adcdc4de399976680989537b849876eeaa2b443433a4db069e42eeec7c596ed6bcb020dab6a476fd5aaf4c3c2a3bbf301b249f5a0a8bbdd54b328d13f6f930f4a0fee218be4f192a8854fd9ba70b99a30f1709988abf51cd282896a4542f5835ffa7b9188cbdcc381a9400911ec727fa7942d47405a469f09552f51a60179
+81a7fc216110b492662e23919146a0baee38a5526705a1434306031d4914041964763c55f4214b07a5a43bf6917f34a7b00cbd233ec93a2d4500a601b25a0b215ce4d6405e1aa53a459e6e4ecede606ec4b8ba535e27d7df3902f0517f6eeeead89841d1b32095348bb19178169740fbfc3cf2f8619efea7dcbf4b0f95a4ad
+15939056f09a9eb4f79783d82c2e18a5686eaed7ff7381bdfed64f2b364c0329745148b86911cde3e293f30ae05db48637bd22d0bd8e2fe5a236229213736068513b9c8e691f7b2a659495c81a6b70774140c628586d25588f3e6d16434ec06c058fba057b593151d10c869f55797d313e06afb3fb16d01c4c291058e7583d
+6398ea0cb269ac8d2aed9c9b14b5054cd1410d61f4aece806a6b3cb7d6db1394153b6e46d755c148b7f9a923db78a9ddd36df5dcdaa70d40c12fe125935765ce3297a24b50acc37cd98d05b49c141e19c71c55b9a807a0788b79d6b6fb3bbfc4312e76f50ca414895430419ada545ac3b632cb9aedfae267e75fba42d213d6
+50ea89afc6259499bf1ab0cc9cc47e8a323ceaa6018b1f14561f66e6e450be7b99ef54b39eed97b9674dd6ff5967b450f3ea40f26f222605a07c5235683b8709165a57324fb8b68b0b328f083505ed8f18a67be25c64c5c837fd218f85580d31bc4a88a296a07d0f8052f86944fceb8492ad0baf0bd911e927088853a01ff5
+a2fdbecccfc31abcbd7f50dd1a958512bdbb34a0df4c08fa597f1e736e3c118b2d1b3c79f199cb3adf45782c514134ae761e0b74bf3a1cb791212bd92b5d90a097425ee12161e0073ae64eb111bb2443fa5faa7b22aa1735a4eb83dfca07c7dd90aeb8fbc357ca7af634dbcb9ede0751e9196657ccecbfc8e5eacf760965d2
+ca09cf01259945f5fd92f5ccbe2f63bd939ee89f2eb4bf6ffee83a1d04b6fbe2676f5a266d06b7e9d762e79f280f3acced9672c9dde6aa50c68a4627c59abd96460a3839f5a7ef734c1021f4aad7a481911e71ed9f8c7fce0dde8f1d68fc7d2ce95947ac080378954246b8a09a1c53c11111323b1f04ffc08fc330ff65c590
+f5b186342c0618d617c9a9b3ad4a58a37fd8e2f96d8c7f8be066eaea8db5155607b6e0678b9f8c1d20100d4b1e5f8063f90484747f5ba080f40cc0ab075e5b6605a296c1effdd9a3db89b9c564fa2e5033737d084929ec3402e5dfb594b9c69e57e9aa53b12f242303ec7c3acfaffb3bd4a23718a5b4ccebb09e0c4c770a7c
+131233f6e402e1fa7f8f9fe3b8572a7fcf5074735c984e4d7d26ae626c609ffec1e1342df9cd6c2409b1c9dfb7945914ad4571bf97b6ccfbdb527f749f09c1ceaf3edb56f06e2bb4f75a99f35145fbaa2604f339a095e734dc504e3a017c1a69c0f545d61a0b2e5eb476e64ec60e7f5f101b6d1c2039c58a383b337d57b31e
+49bbf407c98f2cb09f45bbf07c9f6d43636f61f6fb9cc72b0a1e66665c3bfadc795b274b28c862fefbd8c9df6415494712f4d39b6c9e8b6840ff6a53d06c00b89fd41bb3155c38d873e9da1fdeb144c40bed42d56b7d9369f7bf4edfbb9a7335cf9cd8f9dd7d1cbd555eb8e0dfa95599d3e8cb39852de35f3fca0f6d1d24a9
+56f93f4fd1a6619d112f30822c0a7fe9c2c844c5bbd59b6fbd8a056d88d22af574c272a8b0be09d988d37472d4094585e837f36ab119aeb02b9d3b4d4454f19f755c41dd926a4856bfa3c2ba360f72ad13e8d18506e30a9b01b83deb9c89b09184dc68a2bd29c54ede5444c90fb369e0ca546255d1b25a97ddc37092ccaf79
+8a4df6ae1ab1f6fe5978f58ab0f12d3a18253a661a527db5e4bb6b68b35ab57f4d351b0c3143b6231ddd0ae6fc7781da577a421b15c9adcfa0b7a850be966de93ac1a1e7f0aadfb026d2d275c3d37604b2174dd3bb7982ec4430122462c21591313e0aa701a10e8f580712abc662a71fcae9baf937b67c16195c040f02aaf6
+de17db5b302c189eb0cd7dde487eb7a897a006c5506af24f65c42d639d82fb78499b8c6212e32e14079c420c86ef3f0acccddf7ae63921adcb7f64cc084e6aeaea1f5c0b2b67ff411b86c6e788da96c68bfa68c6093219b2d9d80f854cb946cd702d076ce093e5d2cb2943540a45d145c0e22c52a3dc69ff278a46751e1ba4
+db39a4c5246714fccf80a49a520d887a8f2e33f5e6dec99cb3d8b717b95ec797b7f7ba2691485154171352c4d8d348faaa50f72168a0a8ac4922761cdac42e9f97305e253730d6ce6bf2e72e5c88b30d86e9d0372bf385fd5864b4aa9b492333e0eb6d90e194fad705b9a9800239b53f3055eb976d6372431e9694c4e9b469
+6d49a3e4182f09e34758fb925efa2e6b89fc2e7b820e8ff605df9446a6960d099f014a2c541950a71aee75677a871c2d81ecc8654518e3e13226dd0e7ed9c6e0aaa7b2be4c2af2118bd4c3058e0ca8d6043eda24c69c3751524493a1787c20c3780c51230fad06300cd2d161906190ba01956b4aed0b0b2b1938d12bd12c3c
+6ebcb75fb6e0ce53dc25429733cb2bc11542715ddf9aed35302f942c9ac1bc0ea1ee18a4d1b09c32a7501c45a91881b60cea11ef61ddfe0cac4bc73caf3a8ef7a0fd5c8e6bcfbb81dc0adec060503519b151e1a7504a53cfe8f0704044c4cbf6a4c06eccc11f7aef476aaf8319488be982467bf55917a403726930d92a240d
+c3af32db6f83e06f3964f8b22329b7eab6c51b419ecacec0cb45e82eea7af08890a85df3dd8a078c94352cc9bb22de7cfbf06fdc59ce5198d62138d563c5ea959d6950ab0334134c3deb6b78babc9746ef3d66ada708edcc4f70d20252ea79b4c195e9710f558a60b0bbf28ff9d34a400a76ba580cbf8f2f2aea376a82d740
+22bb9ea003a3b5962948ccbfb92574683c45db36edf0376cd8a5a83c9032044e23f695d700014054ad65037a273fd8c876f229902e4b64d6f660d28e412276cad4971f1927d85f8c89e7c7afdb59fc341aa415e83d9fee5a0b9b2dba23b499a4593e564758333700aee0565348d981cdb87d394b5bd72eae7ce76c4208e044
+9cea3a959243051bb44583223bce68b50719a47f783c9705f461ff40f40de2d284bec99048f8b9558b5aa3bd55771eb45a04d94555e6fdf1be530c1d0d39b8e112704b41ce0d7f86540165aa9dfcfc6aac9e2c1f1adaf871a937aea0b5cb6ecdaf64042d33e4b8e67a8e27ab68946c23a69703eaa4cdf02977273b775e7cac
+1071ed89fe72282620873c5c8f501060b6a5a4478f43b19f63833372b5a45b0bb8ba292c97acc3ae6ea644c0bf01565c1a4324a6ef5420dc3b1058c186d5b373ef3cf7e5606b6fffdeebe23d36a634f3d5a87543d2e79b7c4d56c424fcfb06629fa126e6b5b7efa57b809cf83cf078b13ae067da2f9ca4e17c43c413cc4db0
+4865b15989d63481cd055414b4d35abec549c0b8d0ccc748d0b617481e44accf8136072a0a736a35f55467fb482d56d5c6115078eb2fdfa1b35d9262fe7efa40cbcffa8548463afc1bd47062a66598269b4af1a3c4ae0bf91f759b9dc51cc18e9205268436b29100e529424aec36e21b34c5b1a81480115a0fb0abc00bf73e
+b90761bd52b1253382752af2916ea7a938e26843ee420dcd820b5ae0c32f3a96c586e3ac08b55adaa81f8887410a7e4b00db81f2143c59074627753055bdc3c7a2e6146823e7dd932bd4e4ded28bc218ed865c9f8d7a69c760d00dbac27bc455c254d539066ea5551e2654afc675cfd2e17acab2123ab0c65e3e99521ca52f
+dcb7d5c044fdbd8871d447e395e1de2c9362e8eaef9065c1176a1995d70020318caed30d4edf4ab45986cd3e7cd64d57783523c3b892d27410a3d4bcad5c01a0ef6a92694c9a98b7c040b2783f9a1074d9e16fe6853af21d2ab3e985d904a0e04749565c956ec0ca450c67e6f826c4480c339b6b732909db08ab4550c0cd80
+5a585b9d3c52673bbe79f23e0083d1135030dea216596a2ca5e2f4feaf6783238197c21dfe92075a556a793d1aac9d2ebee27da1294665ea9b1edb71c15de79fec422c9d516511315742c97fd880f6717f303d058ff1ea803578291eecc227366d3361f08ac7ba33c47ff14739421098d38eb1da367104667607eb192cc561
+e8a80f2ce7726a65ed75f5f0c0b18bbb676cf82a468251d983352bd1a147134294762579018705cb98379c606754bf75149dd2e300aa5ecc8812edbac86a622cef1f51b8cd2b6cb8bdc081f730abbcb33091d4ac5a90d183e16278c69192247db4882da8c58b75dd93a77ce01fc76f55caadaa7017f91c6f4b2e2e7a3f0bb3
+f0c839f13d73cc8d8293bc981eb9c5866b9a3b1534c064384e1437023528fa6e6169775882522275040c3e373cda0c2743d078d7a04f5d29b622ff4e55c460909d18ed428078916824488bb49f197ed81d96b67cbb7f36f03039fd1d9bfc5b4bb7091c6584fa240d6d706d43f68c1643524cb0ce831ea345309574cab2ee1f
+bf1567a9760e4975b57af854ad3f8b95a76718a01d1a5fa977ee6f7d41db653f822953e52cffb8d914143b7cf599e4935b73426e8d55eb7f630d3c2fbf03358cd08fdf9ec23fc4b759455f5ad2936344c2cb4709cf5778bbe53c42a2fdff9df9494e08c26b099fd64e58f06b7b044283b34b220d6f223ca0765396c432a3bc
+662e21925679e63e149ea48b0a3591ff9d03a973b74fcf109ba19483eb66187a9556df04bfc88980079080025539219b580c7f7b6f85595f017729a426a4c670ef41ed5570c74b1d6dee3c1a20d6dd4117737519fe81496dbceb0cb6f54326786efd14eeae887cd226f7398a3e316d25f52d5f37b323828d416a50517b6e4a
+e7dcdebe12cd7ace92823aea4e3e99c39b2b45e978f3e3d4b68576f4a57b28b5c8e3a9925c600cf28170750cb89793543045690d32248b9ba3c7f592cabb34b6cb49fcb022bd128739dd758b432a5ef1bd01c110e6ba2fe7e90c8c3aceae45189eddac411090e34ea00b76969ec399e84948b8b317af70d4e8e429e46fbc8c
+ee535d79e72056f14fdf84bdd95fb6f1418ec8cf97b48880f7f91ff7e7d12f1988d8d17d70176643d880a2ce377d27f9efcd971d19dfa6b8f17ab7bc4ef1a90192c5d9a21b4bda44adb6b2e57933a60d2f7f44679ab7f59f86530aac0813920c24baa47e3a8cc1e6e2cb49d4968668564624e310230851723e309660ef3ded
+dca8cb501c6ba2fe14b086d96344fddeb0e209b7877d7bd5d4fe878cb6082de69d5d5f6d516a06932aaa40411633b4b7e3feb851f94394845c661074094cecda80d302d2a5a7e9cb683b9c34fc4cec21092322933fd6bdb6835282ad8e20e0c46ef3601704b4e0153fe1a08d08c4846dcc8d77fa464b899b7d3c06be15dd62
+7dea14d40c447fdc6f80a18a1264c480895d8b03d8e660366cf34e526451f0146bfbd5b34d8f85a1597f298ada965187780d0d2f280889b50c00d18e4ea710c1d03b361d0a7b4b9a8d4725dd9d92a40f8b817f7dd7257f2d15795688d36ccaa4c5ca2758acda97542f24232bb30b92d4f4992d788c6904e848b5ffd60d3e77
+ded7ea6165f84978c879f8f453710bbb5d19198b38c563cf9670d91cff10d6d381172febce3335bd186995e3673e8920fa73b43cb5fe34d301ab247e9fd7f795f67b2805947ac022cfda235665598aaf238b887cf84fa4cbc8214fb930166fcfc30a921c1f123338101d1d1679ecb7bb3b1e51e00dafa82bb986f9f61406c9
+b571aeb79066a84cdcd6cdcfd70d98bf53799a1a1269a888ba4c24e470840a498f101764f5d92a5d6f575894bc6be6527ea89f2b0e387251c9c8a34af1fb6478f49a482de89dfb5215fd77bcd1dd94ebb068b062a9992a4108f3f1ebf313440394f09fb2715d95c9e995c157330702fcac08a1366d675630eb6bb8402f8327
+e54a8022b1409e5594c3649ff14443058e5a0ddccb421ffd1697979a900d924be3c6f7568483802f119da1686738079b96e3d6aa432f9c2eb233af9d8c0adf1c257da8d5b7ee0388e51817fe50b0d7a5f9dd8649c3f8283ff52034f2e6828436b9b29876d9ecb6fa0a3cb8f861380e482bf56dffa994f7225d3d1dc03b667f
+a65ee3a1298b8ff5f5315abef5de514b3f58cd2b83c28aab17f8581d146fbf9e248f4eb056f01ec41e689739ac72d6f055382420743fbb279a1f855121511cd17971580ea4b1a809df10ecec464444acafc6e7e2d96014198ed9bf3a891c61d71db5b00d451550adda9c225aac412be9aa65dbb1539c8918117458307cf0e3
+3a50d04720b30c752bab5774028dec340a53c9b9ccd62d6ecb9142fd0f598a4cf4a0c26c8d5f7e5ec8bb283d13201a17b449cfd95405b1d3b8860aad3796fab1e3a3a94805013bf17764cc230a97428bafd855b045fb04095783a84908670a6dab743a0d3318270dde32fe787fb352932e219cad6e02b6072b2e0f69949313
+c12f95a256c71ae06d285756dac443fa7a6e6332f640e48fae5948b4528a1aa9947825c8ee43ca95b59b0eace71574c07dacd10c01916fa61e3c4904b5baf81ddaf8157ed27600b1f547efe0b17478a90c4b41f139a427e06a4afdaea2d49fc65769bef1b1a31d789de62f6f657eb1819cc684018018b1bbc0e050c0f4d074
+f176760a6a834dbe624c63951e6977b09bb28c7f928c787b01ae8101b77f022617e010e2a13e137468a7dee42d2534eeddcf7b5f377f621e3e653f98a964da7f375991b063ae81bd4586b89a5559bccf1e9deb68966857375a3f312fb7f595d5f1cef91ae58bae549a5e054b4c247bef7bfd3b829124e3e39b6993c9f168e8
+65e7dea0b0063052efbbb22b01ed459cd09770b71ece09a6a115667d9e86028ce21c696ef46920c230f478ff62a4fadd93bd3dc09e9436141650b6251e01259fcc48800c883665b7ed6abe106ac781f96f5913154eadf17a95fe937ab883b7119c03ed1b77210646c088c0c569c73398ecda80aafea7a07dcce9e4b4119859
+336ab79ddb8aa826afe882b6ac8549042726aaeb294081568aa220e6b264ec8333f1363a848e965c913c860d8f468b57b2e963a42f28cbf4871ac8419e297b4bea4ebbb9663ffa1fe6159250a214c88258756d90c83747e84ba9555511d02adb9bd5be7910763cc502509a2c0909ae5adb592ad760dadc9b5cabd6b5425e6a
+dfca15a0904ed052af61e409d77976009a5b9bc2a262cfce4ea086857ec043c20c8129e20e5649c838895aec54af9d0bf4dc6c464d9b6b67b24667e6b36e699e135a92a51bfa85f8c7e530a50641582ce89baa2d8596664e83d2d52f55618f0303d589b91ddadda7b87fdfe331a88a7dd29f47f00ed3bf3bcc8021cb63c90a
+802dd8dfc62104c58df37b0270ba95037b82402a3ecb6898f1474bf51b91f97c420e0c517f03b61e3b6544856c4bb4c5e426e167e314b4f77323125794f0786ca00081ae0345ef0075ad9a454ec3b38add9ef11c2f31fcaad866f7cd5cb6d20d07b514795dbdc89f77a00ab8af90634a3cb8d31bce450e8ce5ef362bda0b3f
+cb25aa983c21fd82a4ee68a45fa2e5c1483fd27e02455142371614b5633e5aa22b2dcf4607ec925d60a461c8598a8dd4f66f7d8f274f11ef129373624add11a097334630e43873a9eb99ac8495b0dc83dc20d2756892ae42b6730f228ed47b7672cbae329052454b1e7e0febb380adc51ba89d0743c908c263f1b4b60e4b7f
+4844cc8d24c342b8fca2be5395ede85f872bf99f71d9289a721719b48eecc37d16e512cf94e30270e592d2b9ea12db08607f1c3033b0bd0cb65a045466a8e454e2d0b1d619b6767ea791a5022f7caa72f9568f3244f47b38c2f3ce4ba191c09cfaed4d6777c6c3fb54e1b45f272e3cda7c94fa8a23da81061880beb0925e01
+622d6a4d1ab1d637a0e35a27ed1ae46d4501d511b3e0616e7f4f791b9fa8725d194aed5b0496c00a7c87f376fc5befcd54375d96c8907c58ab707c6c004a5d263d22ca106d6744d8b9af3fecdb292941d00646ec96c9e9b4c75eb7b2c636d5a9eaa7e209ed2f2608bd14f54a9f313c7551ee688489699f4f523d427fe02797
+481e69dc8063dffbec8f76136a32dbb93ff555f631e54a21ce87d2751333c1b5059265c8715229a5fe02fa731ae37a5b7dd0142f353b4434cb1e693b0119bd31c7ca7d211703bc1df0bcadc6a33ae167889d8d6fe2a22884766546911956febdc6661ec3ffc59b4fcd0fa7c3b0775887f251f919a35f941aa56488dc98dc62
+5ef65019913809e33e5abda90d4fe37120a4da79d61e3676cdeb6f895bc46e012228bb306beef82e2e6ad40ee1da4cd8dc5919e626c31c8a3e6754422f35770fee9659cb742cf8f7642362fe2bb9752bf15158d6d5c67e42b617050818d1709629475ba093335c2687f3cf90a04805af3528211dfa3c9ac93ccfd78cf82abb
+21c8b717c5bbe37d6741acf7b2c17fe0ff1ea23f9a538f0aa76d89bea204b5d054f336551779300e51faddb9ef11b680d21a7430512b5ffc9ebe6d684b3bc9cda6025e9ac6460c51f374e36d4c35522eb5176697c2e03c9d213e12ec32f1b7187dfb4066c3ca80ceee0923c01075fc1c9862a206b45ba3021bd7f4147fd0f6
+bccd893602d07fde9976e33be17bec186af2870e312625f9832364613345263fb4d98813b39dee77cccca0410613f7a9f538a70131245f6d1289ff2002bd21994253d5f1c58180c1e8a2b8fa5fca661260043c7a9d5d8a525bddd960cc9e158d6cd58e51e9053800941fc906a4bb969f096196a48c100b7378afcd56372f17
+aa8deb5c891ae09bd79af8b6453622b2697a84d494064acfe74e09cee528dfe3b218b96f0beec9d41b53f6e648705ccccfaaf72eb00028edf3d4fb0fe4c7633bb93999e2fcfae53ff072468a8ada44e0090e7dc3b5dd4fa284a936e72e2f9fc600ef23e24364f2c17ae8ad548b4e19ce7082be7439d9e948f31b939d0cbca5
+21a24ef72cec3eae0b3bf708fd3313c5a60aa5d60defc56eea51508fdf5c02a366d76699ff03d5e86f3451313cee71c3d7413c441ce9f00b2bc5959e0e2dc4e5288caf3cadf7f4af729471acc283d5db5cc63dd26a6389508784c7320b6c5f0e48e8978070cbf418edb7ba5b84a28aac19b345ce4c50a1f066413c24b5df9c
+1fa9d26d73749c1af1af0eecb0d7549820cc7d3796f15e98e1a9ec2f03dc864f6e57a3e7c6e714e170a5aeacdf02a02279fd4c68b683c83192ecd3b459775c81acb661689e65542e5466a9524a03774a20547758d5cf86daac6b0fb47b4eb0ec9d007645ed2a3a1282583789c5c615b32affc5085561091317cf53e64d7d9a
+688f5c61608b042ce2902af5cf42c0799e35aaef0a7b2da4453135a8b08d9d051ed73aa1b64388c8469242ad2fe61154d3715b4aea1cc9c055824c28a3aa05cec976484569b3086b43e22e7d656bb263f5402c8d6509f8e165589098638b4eb466b85026521d70bfa96f1890ad481d2f12ca27fcb75ad53138a430232f5d03
+b68024be7d4063a26fb5812606d295577a1cc0d642536882b16d70c95a69027a8ebea67c2ed63fa51e5f2687e35337eb6afdf9ff763d6b7155d5616d1f66df53f264ee1ceb52143cb481aff34aad961beb6a466f011a97906f7235ac1482b59caf4f35bf10c106a17849b9eab63dee84e84389ca872f0c55f9c88122b6d6f0
+c758d0dbb717bf7c66b04db20b2ba106bb7b51a01f4f60a45431157c3767fbf164604167583f3ebffa0d874d78e54e673d922091584593f45c0653eec563a7115b497984ade01c733126c968a156d562f14b9d1bc3555565f84af0cbf9b67d390d1eea546bf8f53abce45dcb31de4e15aecb10c71437efc777537e89c2d906
+249d55ac4d17fe2346b1b68a1696953fa4484d0408e2c8ca96d0b6a04bf78cdf672d99c3d8697a6c388c31bba5f487d68d516e0f5f9d0f71f7d0c12d9030c7440f3f8219d1fce3cd87f1ab5a2ab38288b99f98253a648a350bd78bef72ca7f334c1e92a2cf4f274827648efe4d4c986d6b28683878990269e0d695cc93a18c
+7f8f64c4a1a89e4568e43c8e0118bc039c271146e047511ea911a4afe7e01885f69d310c37d0ba5257f0d1a025dc9dc32d23c9580a0ee224ed267bfd6501907720b19126f43b5844267e73aa9ff473382388810eb339c7ab6766fc56ccf74caa2a7c0d66294a6c5cb210fcfb6232584cf7016c3328c54295ede965bf88a6e5
+e0cc3d5bb9e023da53ceaed73ab6053f58f0c31258a1b74c90d2402dbc638e4f7e235c9a81c91adbe55f2e4f9cf8de445a6fcf0c7f4d33cf5e7eb89fb1fe6bf6e8aaaa3cba72b90965807ec54d18617b0af0bb4a1308aac8e957b52e5d395f0831f2906557f1ece3c17063cd73e1c31c50f2e2f81aae3412be4fa3c08164f4
+d8803936644a984eced76fc2fd3eb150d8f5792bb61351b84d59b9d01b32391848c87932d99074424d0824db25a0c994646c66115f9c47ee44477893342ae1a7b7031ce6d859470e583b8c75e71f34463ea780c87c50db3623b344013bbb98fc8172fe9018487921ed239a9bcb44acfa7f8a69fbcb6131f883be0483fdaf75
+6bc76e3eb32e3b353272e9d8187398ae8114e6874319adecb93bc38f2f8c1aa0e10ee71d69d64f3a149a7ec6a80663d80fa5e2253df2b2b4489713f10c337ef9d480854742234e6b715daebea54b2719546999fa791dcaf99c162962a488a0b54de92543bdd0dc09ca49ed58afb252476e3933cace812e910ddf8d88ff4a77
+292928b547a23ac37e2fdcf1595f6183c6b69b5fcb4af16ee950750819842d44457a4ecfa9b0401c914116ad58d5b73a4573d22a029c3693b6ecb62e13d7e788181facbfb7ca5dae15be9386758149d49a3565af847ce37e8b9f4f2b1c9f3da84b4c6fe37d03479da226e7feaa71fb1ea7b6ac7fa1ded0f474337888f6df18
+1f2adb07179da391f95b5663712ed86bcceae06626b53408b89a00e9ab7d97866bec9f47fc4be2885d7c5757438a886866500f803d0e228ee3e5f83287415814e0525b5c12ccf748b34fa769bf76001fbcc764bdcaef33f75a2fb1a064f9893842385111a6116879c29686939c8682071adbb78c6f7c28e57ffae6568419e2
+6b58505a631092c46b49a64951e05d0be79d2034598f03587a322c214c064413810072f4ba8cb847c9b1a6fef06a55a2dc915edff4308e911cdb1f1d09ccf9be8481a014670dd438b17773d8cfa065bb84aaeb476a5467905da4980b7a1c9311fdea5b6a627977041bf74aaa1bd0b239455118899f53291a0c0e4b3c8d0d58
+f01ac3c7fac9530025720609865d9f242573414f23a4c184884cadabfe4b5409e7ca3e607a1ea0868217e77f404570388cc484df144649a0504abd9e8c06ef4e8fe3ca6863842bebff55fff6751dd3c17e0083b9eaa3bc6e5ca60fd81f82fd2b2a662563a6dbce2cedc61d270ee9c96b543226f900e720f0c60b784b258c9e
+5499f664312b77d1e4eb6d92709c306f796e7027228be42b5b900e414736aa94c8a2f9b8a9c5099751b720a0b1417ded6fcf1d4e091aa8c3e474b7b111b1e51c6caf82c8af141d425e65475af041335ef8cdb22c4816e0518759982776fbd91378a2c98eecdc23d36ebb93a6af735e063f9f0698ca7a24a098b9fea98f0c71
+c8abd33b6df1bc8cf2c1f387aa6480c32b978b31a8e72fa9724f7ffa07dbcd1058da143c6110ae8626d427f1efc6bf7e61d98c79b860e468aa22c5dbad1db9d6c81c4cd6c2c0ffdd78ec68b23eb64031b17725b6d59176340fcd113cb6af9ad9825851c82dac499f01669f541364a978ecbc8f0596b218accb1b4fa860130a
+2cc6cc108b71d54b78092469172096c9d3d81b502f747355cbacc6747573b002da8d63a30bb08be6565e77e6f8de66aef8c388ba228022bb054d0c6bde488fedbde7bc556e29ac4f6c3335597f5379ebfd24c3e36cde88b49a4e72ac4980da7c17a6492b4193c04827e3bfe7795107e25df2121aaed1886060640777d8fd46
+dafa1d4ebe76d5d7b45f8a6a907e69cc66d55c38e7a3071e67ad47fa326c3a6efadf5aafbb5b76eb4658ad84d52d563cd5e53a4558085af5005ad11036c67f96680d882d24a611fea4cde2fd25cf6c925a94071f4bf6ff3322f8129d8660a73328b20287bc2e80157fcb64990b3a2ee994ea93b4666d2968b9624902e9366a
+c1d297b2b1c71b2a03c61121bd42e8513960ca64d54aac073b72b965b3d20f3fd355d21317eb15698c8a8b9a4f84f8d61040ab20b90bb6c82645f7d261c825e874f25a3dcb1f10b4db4bd43abab67b4b7061f419cb350c923208e8ca8c65398a7c7928209fc6abf82d08c913f9373fb5faeff071e79ff75fb7937e5e276195
+8b37f6b0c6c17462fbcc88ddf758bdf1fd344e36cd4d6947a6ba2cc35c0a9939d36cce7683e58641eef683ea29b30e311f128f695950be5e83d892a004678ebde3c8f8d8d8916a7f12d65ef50df425196285b0be8ff4b8b939342dbd843e3cab919212178e2fc5c3627a225e41274485dc7f28e4642410382a5c92438cb4e3
+2ddc7263e3afbb76362d6e9542504dc427950df6a80336d76165d5b93774319dd6428f3dd5ce365801b75252ac934856cf75c69f9dcdae1209c6c2cfae1f139911d92d0f154a5d5f21c00c0cde4ba030af503e424827c1b7057399e5f1503d170242cb3bffa736f5f4966fbeb8c9333fcdcb91486800f6d13462bdceca6282
+45abddbb1cece414f8107ce640512c1360a01e8784a14155ffa9be5ba9422312bf08ee622683841bb42f561188876d072be23fb02646e63161119f01a691faf0655e6875928f12d461d352ec5018ea94678f74a18bf610d3080f0264f31b6ab50741493db8c0805037c7308954b2657b5d3c2f6f982a8a86537cbfd551cb4c
+4c1bddc2ecaf4b800084462464c52380b756fe9d323ac82868f0b476843b6b12cf7888d7e45be3fe8ab2168d0a4b9cf1a9c82d2c53d94097dcc8a9c95ba808757b8ad42bdf4f525419a27d16619e30ff31be2b5464165507bf1be59a66fa379db86d16ce98c6a95e3d27825fa01c90d16c88ff86755cbbac54579b637e94b1
+e8db989c65b8b4af9daf4e71d15f75aa65be4e79a9440a62e7021bd412ff18cbba097a341526d66eb035eae1a541db3b21f5cbbc4b8cb2c4b6f0e5e45e0927811242e0f4d2863be6933bdbb87179f354d99e899e3e1d010085c50c59d23653bdf35e881a9ae4352f176e9938931d724d7e5e795ef8e8cd2b47cc8f9eb253c9
+02591b57fb345d48ae00d8cd5d8fdd82db9b92ccbb66d9b4f89d5133abec9e5a933f89452426cae8c2bb4984e64f6790f410cc4cc113ce680fbd43cab83886c2a31ede57811e61da4dc51c0e9d965f36a45983041057252632fe7e38a20ba5fc66bfb02349a1321667c6a07f6fef33a97a8e2e9f3e3348c8fc32f230fc2473
+feb6169e1448deaf125ba0e0742830bcb698b1f992d1f3a07a6bc286a52aa03e65aa72b4ac989951e8dfa34c6cd1984f180f7175ed611dc5ab87303c7a2961de9bb50dfd1a789b6c048b3bff4a36cc8756007ad771d9c09d6ea718a6fc42618f94e619332eec80de01d30bb169318a19e44fb6852097238d221d4102f76285
+cc3df433b21150c0f400537aa52056aea9cb5f8030c5e5b49d8210753f5926f6d85ef9006b3ebdc4f66f4b23270edc9663303a27abc38ef56020b3fdc01716585747456c9cac8987305fee9786bf59170f4241b38c1ad0d4294b84cea35b015bf52a0a73f142d278df4f1011c8696c38a2fc0867240a5190a5730a582874f9
+fe454c49bd989be6952ac9bfd7d219d718d2d08547defb57e793e339bfa32a3e44425a365776a1df8e568d1b838855e826f7822427d99a82f19bcb8aa14b5ecb6570fa85871c10e59c10074793aec3e0e22bc98d709780758687e5cb818aa59f3f759401c7a5ed92298d5f59b74f6b184eea9b9168c908609e1d8245e44a33
+727679c49f9ee78371843ff1105bcd8ab15a1bb52926bbe0f81dcf9666299bb89f3237e60077c5bb2fcff808839b3be0991161f62794929f9aeb5e5459e97e24496f2e1af05000a6d12957ffadfde6d6d2bc67404f04faec739caabc9fc004ecb08937af3a110e3d341c7d865303c3741a74e02c937403137a4f37cdbbbca9
+24c1252efabdb73adddc933bfb6d7eee605e79262f98d747d4f5e62c0ead33d2778c1559889ed63125ef5ba53b6cea71e9ee844101eefdc455c2d11dc6d1252670124a168c55fd43aedec416ed01856344966e70c89f6a6f372eeee25884bf84d52d563cd5e53a4558095906115b7b6e942ec369d377d18000da1dbe1cc4be
+ad068874d9222d0d3a3f266639ac0466fc5f6a672f176640b42b761954ad82a7574fb389d0ca69c0715c30e72b37d7178dc2b00092c0bb689b400e91c7433951133627bd61b23221c6deb012414d4c3550a061f6c37515a0f23c54e46aadcb641c5d8bed81f511c801c7e13b54398ef8a2e5df59f82df5dd075349fba603ff
+0271319f79f573bcee0ec9f545e49f9b083b8d61c33c55f2286dcaf20fcd22a7bc94e8bc193707ec31eeab18a57c5619d815f1bb17860c1f8732465a574a668e35f47b1d2a805878309f59f5b64a5217b399215a0076384ba874beafb8135caea2185ade836552d1495389b0ec6f230272a507ebf00f33c4ca1c5b85a395ae
+5b924065aecaa169085c2864ad4329bc054731a8b510e814443d091027fdd6c35e100d46967a2fb9f2a6018a3e9a973dc91fd9e8741bf4f6d1f4ccf29f35aa37ba439587f04ed97e0bd53624028156bc5ae38bc65325143672f08b41ef2196e2d47a60fc778332054765a60bcbda40ef1a192faff26a811d65a729325db934
+d95838e444b51fe5d2780eeae5fe444028f9e291c637aa64e988402eb2e7d4d6d32925f93d18eab3ade01ecb66fa8eb298202a94c9e3f24024030dd162897b08c66756bf2cd92f3fdc294012500bd2383313376ba6e559593f9ba2437d420c173fb60b3274c4ccd091ca96d276d63435563fea10663753c3bb859c07a8b8b5
+d60b723aba33dad8d1926092dddae3e31010acc1d69900c2cc66a029a91e10e018b3cbaabd813eb1202714b1f221dbcd735fdd75ad90d32036197a8f7684dee75171d9eafb518dfcb3870cac88eae93b509302f3da384ab4250de9ae074495135cacda458861b8478d7bae74bed7b035cb268c04ae5488ab9fb86d839b69f1
+38705abbf82f01b0f7139b976bdc09f80a9cf584725a39b2735415ee4a1cacaa3da06e242d339382ec35949be25dd673a2c62995df7d0ac79a45bde93b91f400821eabcd3aa1c5534d3f8e79770de25c76e28460c65162756e55b9f3bb137c74710722aa0468598a3cb7afebb1dbfe77cad22e9654f93790f94629e0d4882b
+24b79ee955fec15120b0f2cd29f59ca860ea833e7023ab716d3a15e43fc5130ac41161bc94fa860d077964e589210ee8e383e3fc2222ce1486f0b52634f6a7f003b7a1a37f1ed3bfc0ff5336c36a3ab2910f513b98cc1df9acc3c5d0585245e605cf2ddeb6b07bb822d5f72796b17ff35e822e523dd24a6069ef8baf345175
+d46225f77a129154e9dc985cc74238d307a4d8272aa2ff736c428e1a3ff734badbeebaf7114d1afe2c7dcf390eabcc5d54686b1a3ddca593eac4b9a5737a14e6f16cc20c4986070da4b9431d8efb42f6003792044b5984073be785906d74ba0bbfb2a19bc1d465d1024af069c2e6092628ec67feb230f288829b8b83633925
+b9242a35a44fb2f946795c125917c9554063cb6e740b7e6d56ed4e070861dffecf723a2ca1dac1ed59a642cc55afb63a54e41fc27ed61ce27ba656107e25fbb53d779201e62034a95a07618666940e42357e342dfdfed3c38d448b9f0f818098ba08dbb645c85e0107c1d4912ac2a3445fadf63731721aec26fd81bcc7859e
+1058c9dd448f5eadef0a47915598bf58db577f172c462ee5ec69d3b1e3e8dbee0d46b5196c36dac3140889b89a8f53b11b92caf302f71a62a5c3909806ae315866f4ebe2c05773898697443ace1a3757a79f96b713dca1ec16e053d11e6ed5f27b1ac42a877f32fd2eecda6e44e04808bf109b777702c6c3b9d10c06ca4210
+5f15a31995a472a811348b3f68671ac7760af3b5b9eca0d80f3a3cba3fc4f008cae55b377f7ab315dbe2338ebc38b165ad38d4ac6aaea58f46a0882defb5aa4fce2c2c13749a5115bf210197ed59107f58be06cf234b82dbb7ceeb9da3c8b7a1f055f3009dd620c6a43eba73d1b21b5435d5389274dfd82460cf63a26a2c54
+8d75a402913c812aa2974ce87850a4560c24ddeef1ec53a1ea9356ab26b148a6aa4e9e30c3fd94effb017d41e5a1c9b11b1e92d25874a17239f0ebfb8e131a7465b09946d9ca665a78d940f0d367e73b18768809eeda4c4365230cce7ffee67d5e850ca8754c97bd579ac36c6605f2121995b6f0d1d212fece438ade5d7525
+56024bcc58acaa3338299c419d99d3ece454ca23064139d89dd65937e12eee7d859fd6bbaeb697fb074015e5e10719b3aa0de6e02e38425e9970403bd58286dd868063efc25d08418a9856b8649ce4a9e7d7d7c5510ca5858f3faa4387d4bb11177772747a78e928bb36b3879b2ef749f9b7a831ce5761ef228e660eb8aeb1
+f0ae24433d9af3a555afc08c3dfbdc9f74f1db0cd64b8101453a2944364d902fef71d1cac0f97515f39601157dbf76a310bd8bf13c4690e85bcf962507848a27be29cb7ff0e0fc7230b141f8558d06a194c5e799fc0e803a8b9bd5f9558bdfc955d2146ea5ef9f05759590437cf0571f942a71e9643ef081de4c80a096ca0f
+bb5a234109311865c88bff1eccd8be1dc394d9f099a8600c3e1d850568d2b54fc758d88b6af9e960a18162cd793a8de95fd0a58392e26e6cd662c9cc1a12589a8e0bfa1df1f466c9c575d7b7868d0d3ba22782a6a0f63a50f03d10e606749377e6672f606e32b55022fc9b329f6d50334994cc53c13fed75053054095e66fc
+5fc6297fa80154541c5b34afab967fda3dcdaf387074a99f3ba7767bc2a20ed0391f07c17e5b0bc3235d88324859d01a2ebb6b72d3eb0b6aaafc3df45da43651c331be0f4e5ff8c8f0974d98b97678aebee35bc3d66f46306150e8fef0690732ea21975a05668b1aec7dc955b0a3a2a02c8c75dfb1a3138b5711e2a8d920f3
+185ff967e4a7ce7df4343a5f642480a2807be5c686aec981ddec06bcf5c46619c51d4cb34ec0de9325a6ee9693d6f3849efce363c4e6d187c0b1095aecd2a9c29caeeb9627465f6fbabeb7c63a2650f6f77d636012445690c032459661e9f4c330f733744626646af8dd235a4ae2e841a3c0637ddc3cb3e93fa48c51a84206
+0ccbe19ded9d784571db78235115dd2bacf6fa0579b1e77fcbf19fd1b88aa57551e869f0aaed338d2db14d0968fab6a02907e0e5aefc2fb8aff9748576d2fd1490e50425e6ea36e3536d696709f072e0046a271fb772b8d9c0812834ae6b42124d29ef360ac09152de058adc9afaacbca9f9012247b74459bd84ff3aabc1ae
+de433d7a4efbb169fc51e12f2b9bee837e4888ac1b76739d82e99e8d8056479cbb9a957cfa8499594bcaac8899d270e149d664c55648af1ca0d56de23aad43be627bc3ee7051cd1e17cf12caef2f4de2578e06170a13c01ef38ff72ca985114212dc6aff41c50f87150f2fd3db8c6273f2ca478a19a7cb92427c9c339447da
+84b6297c2f95d04ddb2440d227e55023f2d2fdfda574404e0b274b7dafcf4d993756b8b56094da880ed11be1dcada1080cf8a912c0f6e206307590f797414ecfec6c691254f520a2516610697817a4ef0e1354b7f3b66226c8b403f4955426a651c0237b54da17e15598f62977a0f0a4bafa09f64c730c016ec8b163413749
+2d0429e247d1374e3d1cac75fbc0e8820158e776004e542e7f50934c9f4b477776ff5c567561a2100f08af0343d4131e5713fd49c996aab67c0b1c0947c280fb78973c06bd9f590f9cb25cdbda2e342aa22f9d45cd441f130d206dcc38ad026ecd85c0258ee98de88cf1ac5a8c038ddf87c48ac6c5e64708759968b9887a4e
+fc00e5d08ce8842b3c1649b5e54a00411b1587d76acb57e3dbded888141e4c3f90ced5b3c5ade78e6b6d12297584eda04e1ff673ef825437abb45f32f721b2803bbbfeb31d93d7573ce70f8f61391e3a1af911375434db1054fff2a0503529b48b891680e15e3f16d46556365314dd5d81629dcb31ed07dc32c2b1bfeb1935
+685e406fb5fc31ca37a306c213053ade935c9bea95fc2f6227fb3e10d5d617f3d64b31641d8ff54ce1c6c960061e02908b3c1e4f088c457f345ceac29cb05986c09b51565ae11d89c807376503c6a152642b693367326a0ce6e65b48b2b07d9395e3daa04d30d5fa14b0c4d35ef65db3519aa866cfbd9035d157639259a34c
+21bf729e12537bd5107566b8d089a6fc47fd3ebe25e9884cfd77579d3ac5f9d5f3d0f26ddde548193f8df07fad054a6145dcd353a53aa7b4134dc06df0a7431d92e4e826be68def13a2c904595d08bb71360a29a5e915a0320d019ae20f0cbe9c215fbab7313bfad387ac60f766e26ced406062dc33e908be782abacc9bb16
+f68a468b4edf4dd11bcdda9712575249c2aef455a6c4281426df8fd595ae3543a33b8ac9ff42f202b11472bf35006ca1e953f3f8cbdf4828402ccbc7351409193d18bbedc5e44d4359cd46dd6af0dff1ab9c361a319e628e7daae57d145b5633325c4454d821ebcd57f14e8d475f157e7b7e32ce47fd0d1c2c5b6d46005e93
+5cad8e4b9736db6533ad14736270d8ebd87172293a1ba351ebb1b49df031f97b4db7d2bc8b7c8b660a4fe78af4816a5e123651eb5e804ae2e94ae54c17b5be968a5af1438a965a57e9f2f9ba168e55c346c11dafc8d2f4bbde2afa19d0576340a865a3da4cc556ff2a7e620333b6e5a83c601d4ceeeb6242ed3a07e0b18dc3
+c1aed25b27a74e8e5d5ecd5afe2bdcd57f0248b1d0c6e26bbcb040f7f20d1149884aef92014465eb9a205716577ca2e93cbb953711317884960ed05d4896c6419ccbf960e7a29790a14ea30390614a4f843c22f253c070c41e70e67e323f74452b6c4f1a598f8b84d9353443db4fc7721b5f3e6432f68fd9619aca2cb8fa0b
+e2f56c57d004f068e4780940a4f7986d26beab8c6bd3753feef6dc34e0957f1265438c1f5279630eabcdeed9ed7e8d22efc60fa98761fa930b7cc14a2fa087ace3dc45473459298f61820cc6f7a9028585ea1fed8d25528ff063d8d4c131da0b99b03a8414bfb286a3e41c013ce5055e93b2889a8034f0cb51b00e657970c5
+de52e263dede0861497404b86694437ac2643a753f1682002e947a5822e0b52c1cf9c9f52904f6e2b1998c0e0f880327e35eac4252d52e52ab2c5f4d440a40a69ec8bd2b0efa87f4283ef1ef9ad3414429d572bef98a6df87c0d24c0b8d9f33c5430cf12d627f9372e0fdb25a28af925c1ec95921813bdacacf7c1f6195a9a
+1ed7d7fed7df9a3df68b1366f9eea34fc437b4dd78738c2701c6322bf732d61ea1dd3eeb38c3ac10de840fb4a7cfb03c1b23d815d51fc77ad6551c6782e2a1206adeac949ed0ae6cdbbb1f20150f2e1a75a8730d70f0083c070fce79541ec0b2c6e6f1a91ec8c509a525b0be7f76ea7f4f17981a0eaf9c0af95d8e45da4be9
+8a07e567d7b5a31b161c14ba138a29fc704fffeb42d1f2f7d6ee3e31adcf5f323ba3b6466e77e1751e390ef49f682f865ae68788c7da3c2bff07828010b072bc1fb9a163c6e2796adaa6e2a623cdadcfbab371c2bcaf7adb2f8da46c07692cd097013c8fc2377c15a75b5e8cecfbcb8483def7a4cc62e2305e26df4b0a8e1c
+79de4361a16586a4f1bfcad1b44aa103ea3bb553094d689f5532bebdfd6e0cb21b0d071656a69d5321679712e3957547a4e6bbe527a734ba59af93ae82b803e0b0ccbb1d5c771ea0ca8602b51b89c22fba82cda89ef3dde6dadf07ecbdc3ee1528a40566b22bef138eb95985da8e2e9b9a8b6d839999b048d481a460914b61
+75a3f8dbe10d7e44acd6b7e7c394bd717e7edf4e670858c0d84c5bbff06c9fffb0231fc4d7563cd79320729e8d03ab47ccc8d7016f13ac6ce5862bfbac90eaec0ae22222bd838a9be96d2fa24cf80636e5ad658f45a3ea63a588a14550ef3a81f898b4afe83c8bc2f04954471feb715374712539158ee5567b2b3d3e454ffe
+d3c0eab4202ae27cfaadd673da7f9655888efe008a07f50168d1e8ae5368f5af3b9eef2a2fbb0808773a22149815bc5902aadbf6ab7bffe6e1cab56a99d671fbb2d8375614388bc2f452d46aca0d318afba07ffc17831ce7f8da474c995aba7af56583a2425236b568b7aaf216131bcfcf099aa14db701854218e746b40dca
+a974b9f3b63a7f6b8dc348ccab4fd21edb7150876f27ffd5d09d27dc365f5e08468f178f8005133a14459059cffb60dc48da774b7583344395ecf7a274caee349725143548875cd9cfc74e14e8c4a5c7c03cda2baea7b463724cc6028addd5bd71d2630574a5fc96f8c13a75cc2804f1b1f7f195c1166900157466537f761f
+f51eb0db89174a040bf2dd160f92f24896c998139a115ce941ec46e1aeefbaac7b0cbfa26d764070acdf094cad687f209090f98d38d4f3918b2acad3b5b342c94d2114acc977e40990e2ef16413e03c8442d8186987b0adf0bbe2836aa434a6d44f3ccd7eae175fc02abb0db726ce79c65cee83c9ac23ee37e3bba34d8c03d
+fcdc68c7a130b13e566ea129d8af8cb271fc2519421e9c4c55c6d029a99093f3290a9bafa66ae6a22882731e6cb62d16c6c23590583c0c21e6e0ffbe466f15e0cace20727ec72e06c7b03a3db3620b8cb12123f8f2648e7c606ee233404462681b8979e20fd8e47e6c42f0e4705f60b444c299b6e4f9200dd60b086b166e3b
+05c3aa67bf2625eea32fa4facc8fe18f980d2871a0fa6cec81e90c0c7d0d88fac1d91af8377917bb8834c6d428d7e6dd0febcf651ff687ca55a6d207003f30e1d1da0a19e560f0121b3da29e3ba68248728f453a7829ef70993743e153dba668df62c043bd8904406c80f4b396a7a134b1addc90934cf3ee949fd26a6ff9e5
+e01d72540caf415f97f26dab45d861b70129187c07bc667856c74c39f9d27b6060f47f5e16df2e611574b3148cb4ce1e7c431142d4a992f3ca7b66e524c0aade577dc4c22d27ef10aae6dc4bb0a106a2fe2fe379c752f91dd4a98146ed35d4470746a9fb8949cbef8b6017f960baa82db48f5f71142e9442bcb5452980b9a0
+c7e699a663bd99e8df94f5591aca08b8e1031952e1a8d0c141b819f9cdcb39f952b27e2026a18e8e3f6ec026c987f4a124d18a383f9ba4f9dc883e3f1b8c9262687a84cb854c7764699538519fa10a804a54aa7feb1426d80919f8ed1cfda18ee5cd138afd66a9ae0f0882a28a207fe355a2270701057e40e7f83d43ebd5b8
+3aa2e6c1435e4e3f12f2540e70b2da3e356163586ea6a41be1a782b0e460d5e1a3cc317b96435c3ce0e1f147959bcb5f74e42fef522cabf2334b8fa3971c894ea0842306f4a9dea99e46163557ca4c93c3eb10493643782bda19511e8e763faf815051af4b30dd72ad3fb775fd29e33b9109b22a8682426e36671366b0f615
+def2a72b09286139acd2cf7dcd487d068485c559b0d5adf247bcffc542c9bacca6271a46e9a5906db57ea691fb85cfd966f40422997d9c67a39117804f4da3a9158add2cdb25a98ffedb70fb947c221b0ca1f3d24a89871fc16cd1fa0aa5dd312f8153ec3c1bb9ff62ced28f56a064947bd0559221a9c478e341b5681569d3
+35444b2b357d2f142c34fb86e5bd5df49c1837034c95b12b3979cf08f54330a1ea420e597bbefaadddf284671057e243f2a48a3e7993a116c0b806ba232b0e31897349961ba6516bca4c3bcf482b0f05f27bd36b30580623048de317b82f7dc41c9b45091044a51db54fb1fa728a70ea90ebf6f7f812b5fbc9a3cafdbfa54f
+16d53f2c155129bb21d94c22a7f9c444ed47c87f0a0988ce25c802ffb20da648085e706fe36c01b8baa3371fa2f11df97aa9d08b7fa819049b607cce3c16a7a5ed4848778105724f7bf2ea2d7b04d0368284b143a3e7e03ca448e4ad7765bac6718a6fcb285fa415671c24159fe77788d9b4213f27ecd65935f0d2d4c92b18
+37ecfd8b513c5b77a5aef7d3102ce4b862671a13b1fc29284e36652744aa7c9545499008d56e6d1b42c8ffbe54586a464a0a834b95fbbdb449164c8dcd4cf18c7150f78d6420257c1ba47ad7b86d1bd91aa88b284f604d455852c3551fd10cb4917835965e87a0a42f86eaea2d4571876df9d5237965dca6e4332efc683e3a
+6376b09c4ab9c9cac459910044dde61b776f87b9353f9c93e68072f9947a54fe6ad8ff874a12653badfe2f6f1a21d47dab6c808bbf32cf3dd3ceb95a2bd0b273ccc79549c590377df9c4d1b2e056033cd694b3ca7923abc563d9aa27f85fd895b69a3f1152410cbe526e704ac4d568548893b0a16fdb7645aef7ad09c33064
+e82a457f5ee84634032f63e229792b952b65c909513ac03ecd1a4a22ae605e087fccdd1e17a22586248ffbae45cd3b8c80814722bc46451d15e97ded57ca354d85ba70bff0cdca4a47d876593eaf84c59e9abb3b10aedeb9e8aac86ce8019b5c7831b1a3241d88f56e8d436620503fb86d035da5068a34f7a6ef6f1d25d695
+9e8451a7cad54bf85624eeb2355978713578dbb847ec7605d1ebe0aa238a4de8545ee6d4d6d9b719044a39989867ce69bbc8445c20466a7e4f5161d0a6ae263717db731e1eb08f4e1f24d28ea2d55a63d6d2b1c717e4c171511b51c3ee46b039179fbf69fcd3c5c84318add0a76771650e8d1d3ba948abd048e2281d5a0ed8
+ca90a7196ba4fdcb202265f0b6faa659267a492009a28dba3787f07f4af3770d64301ed11e13a9ab9762b1a110729f9db5d39562a1a5aa96e34082fcd4279c7a0646e3fad1380269d0d9cdf546a08ecc22b9a6dbe08d75568de8540e9c1e6a4795bd39bc712810a80a6fdea258e4936481c7a4b7d293eab715a331af11df78
+4a66f2ca8241982d24e5ccdc3bd775bd08e00d873ed022384b63a5f023ff9cc9cc5c60f3ecb64bac383f380cc3de3a2746b4225db983663d179bbb063fd5bf8cd6a3a7a84b9a273087691e1e89b7c7d65f18d2454d3704993843b285cfb54557cfc8647ec40f90234ef022576dd05ba17b07c45caf035873a18647618962c0
+f37583a907bbdce2afee783a8a8b46bfae16c33e19b34ab8c2926e568b3e16ba66feb54ffab3c3fd353d15cf35085f1d59cbead0192698e5c26bfe498119340df867ab86ff3e58f061ba5a061d274e809aae1f7513a28eed3d279f3f34f2de44cfa12aab0303d311b7c0e4b4cb66dc3959fb21b9c26348068311738cf2258d
+5381f9dc01cdc49dcff5e588d9fe854fa4759395cb1dc51b58c83d4b55fcd3da70272881575b5acd9c11de97b79702ef417d0ac199bd5185533911dc5b4c8ec0db6e96e1a3c00477ce553b81a0f610d19c837699cbbf9c0bc4ed8dd9ffe6d13a8008b20d4c52135b6a9e515ea4fdf2057d9d4312ac75337abe16da9d7ef1bf
+07aa4e4e8a5dff5381619fd1f2353a4de0ca3330417f3ebf9f86cb5921a1635f2da48f8aea9fba25db2f4d86ea8ff54ad165b68a0f30c1835b944221e4a674e9f805857bf7c93298f147a529636ce2b6aab94e37abef08e8261d74633ceaf5ae110455a53ac96a14637677d4f9392b8927a6031d0eee4b004ea1d41cd5c4f8
+904c389bcf5c7ae18f77dc22438742eef46e018040a03144134968c92b82f88e22a9f9846f506444d5fd43f72c9272235fbf0845b5a0676c803bc61d66d5a18a2fbd447761c41fb79a30c90cbcab35840fb14a9bc8d5d6edb19f70b420d81df60713b6cac192bc9ef006f7af35114461cc87fc50a2323cf30af4788312239e
+8546618038952f0e93de5ac06ad51551b8e968d49c16e7d59c7738e7e69798bc9f04b2b6175d24f33ba2eafa0bc36a5226b368c6636bc33334ab4b94ae08c4f9370bb31da42f53c3b76cee0da4146e99ae0f57086c479500c6d2342297e3d4f49f556d6934c312bd3ddc9beb1c07119dc1d91c20f678e7e52d1e0494859f6c
+9dacb7ec450aa2047ac38fc0d3f1fb9b794eefb18e62daedafaac5bc083c5a8a0ef03c176195dab2c5dbc8aae1803e3a811369d1ea946c0eba323ff60e5affc5b60194997eaf8be304b65256d10ad5bfde7da1378a94902ee2005981d9c9ca902875fb9354c1ddd201484fbfb851e86a5d6dc541819e67d8ba415912f7f2e7
+b1def89c663dedf9b5f2633f1c45f5529f944466bb5c0cd03ae26c78ab1c5491ff310f335d53d967214b2a5e2f0ac75a66048ebab664c15a69ea7c256c40783cc9f001aedfb315e16607a06f4c9cde1034f27e05a0e6a73381d83a5e678ba952308a6c9b73c98cefa070d3c52b2ecaf706b9b247fc88028c710c8d5d0aa49e
+b35b5f4006d43e554937605e1f5712667e46e63eff3f1082257c82669b1cfc8815b3c3e87069977dc980d23a145e33f43dbf5e90cdbdb684f7db8d66f84c50a594f6f4b4057b58e6c5e27b34df4ea6849d4668efd8d402eaf6dfcbf5c54e4f52d15f7236def60a892a9e300091e438d447fa6fd26435692a457e5eea4e2d69
+ef8bb74daf6aecf57616fb6be91598ac5fa15d4dcb0c5806d4e43db6e526564cc3e2122b6ce50b5c637de8fb1b5bafffdf51214a8355f74cadd668f0d9b20e5bcee2a1485f2599088cfade4f5496f612de6f7607bd76d152c3f26944de667ca264af64eaba6f6f0fa1841e860a73075cb8e98792361b23a4cc2150cb9842d2
+59f78e62959a21a5873e190356117a31e75377908e48f249345f9727c0c9d1231bb2ac7a4533b9f2f3c2f479fb24f38cde23dd8e29a7d1d381b92ca4557225b4a796cd5abe2cdb90d032189388fcbf9848b0602efd6aa662162b53a8c83ce3cf06a9dfd0f0ecd017e7c0a1c1adb88f64c85809fead4bea4b639ce4e74e008d
+a9f35970a1e9b973a878d5d419b43b8073c3dbbd829f07c45694edaa1ab98dfdd823830d663930ac316ea0c52f5e290e02b26fbb07d18f57d7bc4e572822f494304d6458efa42222bc6486acb53674595a913d613952fdba9e59f433641f01dbb7a7a2a16ca96480c229feaac7242ec15a7291637f09a99b3160c6ada9a478
+e1b276f6d77329cb2f9569b539b24f174e2ff12218aafd06abd1b663dd42d1089ee817719ea0e7bba089e167bec881b68a59bab6556106b128126bfcc1be67017a2beb29e307d5a9ca5e6d916b2f829964f13a06249e1bbc41264eb0217462365451e96f4e9ac13941d9fd2fc1fd8d4aa2e6f14ef4b99d9b4c16a3850e2423
+a84130f218a5cf5a64d467f7fe0f027c12f79c1ec8db81a4e4d584559d169ce624cad2d3c53bc2293e4de6e70a1f516e28d96710fcdade6a305816673be3f463cf03e98941162c265ba8dc5b88d2cd7d6e9ce00857cd7fa9498655eefa74e85a2b8ef749ce35ae966a9064052ad5a192bf7c5d9e9f7bf0f4254dbfed25b52d
+c0c98ea598b6decd079783a2524a25e7054e0280923537f3e00d05baab5bc51d67442e6bb14986248a6543e90ea9b14f777b6d575bb07a11996c311c98ae4a90d983415e0e6d14b2f509acb555e605644dc9cde6968e290fa223441dee889d832773e4b0b66404d7b583fb76bfc4a9b5a708c852613ab2212032ae4c59c922
+2cf397dca566147a468838e2267fd4a55f2daf9b54f0cc55db9ca1ecc1a997a596a82812de11f0770b5eb5dde5412df05e9e02039e6d5e7d428c493b36d76b8208375861343469c5af66ff26ef2ee0e8b21f6c81be86d5bfe42d563901d8efd57f9ac0cf1acba4ca506b3499a790677792a528890c0562f44b6aa0b1608ee3
+fc66c4e0e0b8432ea1b2c8adf009c14d6bd099e5d55457d0143628b907d3aa00fb6dfd690b7f6fc45c60cc937e99a3945719987c4108186762dfe0140731e12169d6b3cf6fc5cbcf1db786aa88068044b5260aa9bf8fd767f50691b123208d7cfd3d8805076a456b3455d36c569a3e7fc38d466f57f29e38aa97d030e0f4c2
+fcaf77081fb37259948ef21c4c51b5b2661acb8b8e5e230346e19b03233fff6ed14c73092237cc8becda676e0c3d4205689d9b506bd0a079ab0f9ca49bb06e383896fb00f2a6b9b3485849fa6f8b3dd14946dcf5c5dc260800d54365fc619f594733f55fbb7e6b8c208d09a480a1ba1193f48f56416d6c36351861eff0ccf2
+3990ff8a012f1652d082d061011cfc98bfa9d089fad96f48b275267710da5ec1e1ce243b609bcb72ef943521be21fdda9f24a9da985a6df8f0300ded2c5416313dff090042b1434952fe7ba55f07c19d97b2a8587e90431ab7375dff1a818e218340116c51c0a2c96ce249221a3f9c29f1f9bd7cb7b6e4595fa7764640ab41
+9a2d69249c0fd1a2fd964f101bb46e61680bc62b1f55ae93a027b7c777611891566d89c1a33b999317c2a196cbfd4a6f8ec7f53ea3a9ca213f6dfe86f6ee51dff65aaa56612b1d78d55b23834a629c1f8b5347e8179e33ce883e0540d1a3036c163f2ce26ee6042fed8eede235251acc8904d71825ba22be8e34c2e06b0b01
+6cb4584614c59abc462ddec40a9d43cb74e1d61b99e60a1dad094a33528cfb83bad8e7ce451c41b2a9c1c0fb554c62793e27553534ecf0af92ff48492fb4565f05cfdc2ff70f3299833c5c62912601ed94572c03430f4906d9d9298619d22b421b198f8323d5dc6c48a193a856f22b2a3f7adc218733d2dd9e6540879bb5c8
+aa75b45fd299a6711eadb04410121076e0372b3cf7e22c949b51bf5c1d02f6fddd7a997fe2dfbb863bb96314cf130fd0a76dcdb21ea3d04f24d2948d4bb54e5070161f92e5212bec9da48827d791a83390aef110183038837cb513d717bc6b5619047157185121910a60cd0d6ebd5e6139d630be33d660e5380c11dadf1275
+2f34d2cd155aa8d6e38553dfa89e2dd9964e0ade344e0d8ce50ece046db1496839859b4bdd3b4971af731ab12da964b0f7d4f220ad692c94473e176eeac031f237d8f0d576076ea791a6b670cd5fb4936a10acddeb44f4275183424b437245ec1729004edfe5e7e60d9ff533a606c69c52adb0d78732997f4d62551faaec01
+e49094465d6fcf339ffe4b841fb20bb75f67f54d5e30993d1e24502d602b55948720411530024b3e5d8ac52f9a840fc5c7c15a2a9f652261e5d144eed3fca65d283db21c90cf1bc9c98dbbf6d2b0113a7d4c237d255b2704c5f7cd8d1f575d11bfcb3cd27a416605388b500681e3a41ebc1125a8a3fffda2db0dd3c7ca9eab
+670823e8afe16f5628a879482838c09f00e780288bc2b470f39298d666e33142cb8068c4c99434368fc19638844e2fb241a18fdea88a6578cd9c311f6b36125d953c9d1d6850c006d1a9ad0bba7c4bed86b92befc612414e6ad90f8b1380a7d22a48f1cafd8cc6f8cd3f7dd17a61a5336caaa3a7d8ba40925585d41d4f1172
+ecdcc2c3f613d6b2c0bce2c177b3445337fa2ac0038cb13e5636e5af3f5e82b387d6aed0814370dce2899abd93db3f6c576f7e3c9564c89dfbe904ab963e41716d9bd730cd79916a3de3b72fc19a4bbf350050388c7aa3b3a7f6bbb92208e09d48401d9e5af523aced2e3663abb00f34aada3e7a234e9f316bdf66dc19f95a
+c5d434e7c0f669524cf617426aacec209138d160d0ebce8ffa1f36a308937c09b84babf87a9e12ce22dcf4f74d766690c538bfd7e2f12c2507a9b8ef2941ba1103452b860c89d9e9ce5856eb68724d0e179a7c56509973502700879fc3c62dfbf427d9fddbb826884e4ecec9b9fbf52ac0550e9754ec76a5714a12a8832e10
+755e0952b3f4758af045dd6050a930512f9b3120949349b9e8b88fe8d8f95650687ecca00e5882bace4deaf25ea5215cd4d150b675a5e74118e40b0647e54590262e0aa4b01a7cc80401ca6b3f064d9ebae831e5b4a318e0a3fc710887f3877ecbaf0d8a379ab23bc9b19d9478ed552c1bcb5f70e03b34ed8429af033fa1b0
+8d99da8c61c26bedfdbbd22bad46b97a731d94ef4c8641e0d7f2734f6ab08c896d2c0b1d4531bad9d880882d5cde429616015ca37bf416e2b5fa7c68cb32af6d16d1980f1baf477d6a5205c640ee82f29df0eb4c4522b54a01989ba42fe0bf94912cb426ce2da3d0fcaa730b9cecbbf12a9577
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark{restore}if
+
+%%EndFont
+setpacking
+%AI3_EndRider
+[
+39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
+/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
+/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
+/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
+/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
+/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
+/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
+/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
+/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
+/guillemotleft/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe
+/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
+/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
+/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
+/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
+/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
+/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
+/hungarumlaut/ogonek/caron
+TE
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Device Device
+[/NUL
+/Eth
+/eth
+/Lslash
+/lslash
+/Scaron
+/scaron
+/Yacute
+/yacute
+/HT
+/LF
+/Thorn
+/thorn
+/CR
+/Zcaron
+/zcaron
+/DLE
+/DC1
+/DC2
+/DC3
+/DC4
+/onehalf
+/onequarter
+/onesuperior
+/threequarters
+/threesuperior
+/twosuperior
+/brokenbar
+/minus
+/multiply
+/RS
+/US
+/space
+/exclam
+/quotedbl
+/numbersign
+/dollar
+/percent
+/ampersand
+/quotesingle
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/hyphen
+/period
+/slash
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+/at
+/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
+/bracketleft
+/backslash
+/bracketright
+/asciicircum
+/underscore
+/grave
+/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
+/braceleft
+/bar
+/braceright
+/asciitilde
+/DEL
+/Adieresis
+/Aring
+/Ccedilla
+/Eacute
+/Ntilde
+/Odieresis
+/Udieresis
+/aacute
+/agrave
+/acircumflex
+/adieresis
+/atilde
+/aring
+/ccedilla
+/eacute
+/egrave
+/ecircumflex
+/edieresis
+/iacute
+/igrave
+/icircumflex
+/idieresis
+/ntilde
+/oacute
+/ograve
+/ocircumflex
+/odieresis
+/otilde
+/uacute
+/ugrave
+/ucircumflex
+/udieresis
+/dagger
+/degree
+/cent
+/sterling
+/section
+/bullet
+/paragraph
+/germandbls
+/registered
+/copyright
+/trademark
+/acute
+/dieresis
+/notequal
+/AE
+/Oslash
+/infinity
+/plusminus
+/lessequal
+/greaterequal
+/yen
+/mu
+/partialdiff
+/summation
+/product
+/pi
+/integral
+/ordfeminine
+/ordmasculine
+/Omega
+/ae
+/oslash
+/questiondown
+/exclamdown
+/logicalnot
+/radical
+/florin
+/approxequal
+/Delta
+/guillemotleft
+/guillemotright
+/ellipsis
+/nbspace
+/Agrave
+/Atilde
+/Otilde
+/OE
+/oe
+/endash
+/emdash
+/quotedblleft
+/quotedblright
+/quoteleft
+/quoteright
+/divide
+/lozenge
+/ydieresis
+/Ydieresis
+/fraction
+/currency
+/guilsinglleft
+/guilsinglright
+/fi
+/fl
+/daggerdbl
+/periodcentered
+/quotesinglbase
+/quotedblbase
+/perthousand
+/Acircumflex
+/Ecircumflex
+/Aacute
+/Edieresis
+/Egrave
+/Iacute
+/Icircumflex
+/Idieresis
+/Igrave
+/Oacute
+/Ocircumflex
+/apple
+/Ograve
+/Uacute
+/Ucircumflex
+/Ugrave
+/dotlessi
+/circumflex
+/tilde
+/macron
+/breve
+/dotaccent
+/ring
+/cedilla
+/hungarumlaut
+/ogonek
+/caron
+/_Device/Device 0 0 0 TZ
+%AI3_EndEncoding AdobeType
+[161/degree 173/notequal 176/infinity/plusminus/lessequal/greaterequal
+181/mu/partialdiff/summation/product/pi/integral 189/Omega 
+195/radical 197/approxequal 198/Delta 214/divide/lozenge 240/apple
+/_Symbol_/Symbol 0 0 0 TZ
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Brick)
+(Brick) 0 0 72 72 [
+%AI3_Tile
+(0 O 0 R 0.3 0.85 0.85 0 k
+ 0.3 0.85 0.85 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+0 0 m
+0 72 L
+72 72 L
+72 0 L
+0 0 L
+f
+%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+0 68.4097 m
+72 68.4097 l
+S
+0 61.209 m
+72 61.209 L
+S
+0 54.0088 m
+72 54.0088 L
+S
+0 46.8076 m
+72 46.8076 L
+S
+0 39.6084 m
+72 39.6084 L
+S
+0 32.4072 m
+72 32.4072 L
+S
+0 25.207 m
+72 25.207 L
+S
+0 18.0059 m
+72 18.0059 L
+S
+0 10.8057 m
+72 10.8057 L
+S
+0 3.6064 m
+72 3.6064 L
+S
+68.4102 68.4097 m
+68.4102 61.2217 l
+S
+54.0098 68.4097 m
+54.0098 61.2217 L
+S
+39.6094 68.4097 m
+39.6094 61.2217 L
+S
+25.21 68.4097 m
+25.21 61.2217 L
+S
+10.8105 68.4097 m
+10.8105 61.2217 L
+S
+68.4102 53.9717 m
+68.4102 46.7842 l
+S
+54.0098 53.9717 m
+54.0098 46.7842 L
+S
+39.6094 53.9717 m
+39.6094 46.7842 L
+S
+25.21 53.9717 m
+25.21 46.7842 L
+S
+10.8105 53.9717 m
+10.8105 46.7842 L
+S
+68.4102 39.5967 m
+68.4102 32.4092 l
+S
+54.0098 39.5967 m
+54.0098 32.4092 L
+S
+39.6094 39.5967 m
+39.6094 32.4092 L
+S
+25.21 39.5967 m
+25.21 32.4092 L
+S
+10.8105 39.5967 m
+10.8105 32.4092 L
+S
+68.4102 25.2217 m
+68.4102 18.0342 l
+S
+54.0098 25.2217 m
+54.0098 18.0342 L
+S
+39.6094 25.2217 m
+39.6094 18.0342 L
+S
+25.21 25.2217 m
+25.21 18.0342 L
+S
+10.8105 25.2217 m
+10.8105 18.0342 L
+S
+68.4102 10.7842 m
+68.4102 3.5967 l
+S
+54.0098 10.7842 m
+54.0098 3.5967 L
+S
+39.6094 10.7842 m
+39.6094 3.5967 L
+S
+25.21 10.7842 m
+25.21 3.5967 L
+S
+10.8105 10.7842 m
+10.8105 3.5967 L
+S
+61.1973 3.5967 m
+61.1973 0 L
+S
+46.7969 3.5967 m
+46.7969 0 L
+S
+32.3965 3.5967 m
+32.3965 0 L
+S
+17.9971 3.5967 m
+17.9971 0 L
+S
+3.5967 3.5967 m
+3.5967 0 l
+S
+61.1973 18.0342 m
+61.1973 10.8467 L
+S
+46.7969 18.0342 m
+46.7969 10.8467 L
+S
+32.3965 18.0342 m
+32.3965 10.8467 L
+S
+17.9971 18.0342 m
+17.9971 10.8467 L
+S
+3.5967 18.0342 m
+3.5967 10.8467 l
+S
+61.1973 32.4092 m
+61.1973 25.2217 L
+S
+46.7969 32.4092 m
+46.7969 25.2217 L
+S
+17.9971 32.4092 m
+17.9971 25.2217 L
+S
+3.5967 32.4092 m
+3.5967 25.2217 l
+S
+61.1973 46.7842 m
+61.1973 39.5967 L
+S
+46.7969 46.7842 m
+46.7969 39.5967 L
+S
+32.3965 46.7842 m
+32.3965 39.5967 L
+S
+17.9971 46.7842 m
+17.9971 39.5967 L
+S
+3.5967 46.7842 m
+3.5967 39.5967 l
+S
+61.1973 61.2217 m
+61.1973 54.0347 L
+S
+46.7969 61.2217 m
+46.7969 54.0347 L
+S
+32.3965 61.2217 m
+32.3965 54.0347 L
+S
+17.9971 61.2217 m
+17.9971 54.0347 L
+S
+3.5967 61.2217 m
+3.5967 54.0347 l
+S
+61.1973 71.959 m
+61.1973 68.4717 L
+S
+46.7969 71.959 m
+46.7969 68.4717 L
+S
+32.3965 71.959 m
+32.3965 68.4717 L
+S
+17.9971 71.959 m
+17.9971 68.4717 L
+S
+3.5967 71.959 m
+3.5967 68.4717 l
+S
+32.3965 32.4092 m
+32.3965 25.2217 L
+S
+%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Confetti)
+(Confetti) 4.85 3.617 76.85 75.617 [
+%AI3_Tile
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+4.85 3.617 m
+4.85 75.617 L
+76.85 75.617 L
+76.85 3.617 L
+4.85 3.617 L
+f
+%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 g
+ 0 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+10.6 64.867 m
+7.85 62.867 l
+S
+9.1 8.617 m
+6.85 6.867 l
+S
+78.1 68.617 m
+74.85 67.867 l
+S
+76.85 56.867 m
+74.35 55.117 l
+S
+79.6 51.617 m
+76.6 51.617 l
+S
+76.35 44.117 m
+73.6 45.867 l
+S
+78.6 35.867 m
+76.6 34.367 l
+S
+76.1 23.867 m
+73.35 26.117 l
+S
+78.1 12.867 m
+73.85 13.617 l
+S
+68.35 14.617 m
+66.1 12.867 l
+S
+76.6 30.617 m
+73.6 30.617 l
+S
+62.85 58.117 m
+60.956 60.941 l
+S
+32.85 59.617 m
+31.196 62.181 l
+S
+47.891 64.061 m
+49.744 66.742 l
+S
+72.814 2.769 m
+73.928 5.729 l
+S
+67.976 2.633 m
+67.35 5.909 l
+S
+61.85 27.617 m
+59.956 30.441 l
+S
+53.504 56.053 m
+51.85 58.617 l
+S
+52.762 1.779 m
+52.876 4.776 l
+S
+45.391 5.311 m
+47.244 7.992 l
+S
+37.062 3.375 m
+35.639 5.43 l
+S
+55.165 34.828 m
+57.518 37.491 l
+S
+20.795 3.242 m
+22.12 5.193 l
+S
+14.097 4.747 m
+15.008 8.965 l
+S
+9.736 1.91 m
+8.073 4.225 l
+S
+31.891 5.573 m
+32.005 8.571 l
+S
+12.1 70.367 m
+15.6 68.867 l
+S
+9.35 54.867 m
+9.6 58.117 l
+S
+12.85 31.867 m
+14.35 28.117 l
+S
+10.1 37.367 m
+12.35 41.117 l
+S
+34.1 71.117 m
+31.85 68.617 l
+S
+38.35 71.117 m
+41.6 68.367 l
+S
+55.1 71.117 m
+58.35 69.117 l
+S
+57.35 65.117 m
+55.35 61.867 l
+S
+64.35 66.367 m
+69.35 68.617 l
+S
+71.85 62.867 m
+69.35 61.117 l
+S
+23.6 70.867 m
+23.6 67.867 l
+S
+20.6 65.867 m
+17.35 65.367 l
+S
+24.85 61.367 m
+25.35 58.117 l
+S
+25.85 65.867 m
+29.35 66.617 l
+S
+14.1 54.117 m
+16.85 56.117 l
+S
+12.35 11.617 m
+12.6 15.617 l
+S
+12.1 19.867 m
+14.35 22.367 l
+S
+26.1 9.867 m
+23.6 13.367 l
+S
+34.6 47.117 m
+32.1 45.367 l
+S
+62.6 41.867 m
+59.85 43.367 l
+S
+31.6 35.617 m
+27.85 36.367 l
+S
+36.35 26.117 m
+34.35 24.617 l
+S
+33.85 14.117 m
+31.1 16.367 l
+S
+37.1 9.867 m
+35.1 11.117 l
+S
+34.35 20.867 m
+31.35 20.867 l
+S
+44.6 56.617 m
+42.1 54.867 l
+S
+47.35 51.367 m
+44.35 51.367 l
+S
+44.1 43.867 m
+41.35 45.617 l
+S
+43.35 33.117 m
+42.6 30.617 l
+S
+43.85 23.617 m
+41.1 25.867 l
+S
+44.35 15.617 m
+42.35 16.867 l
+S
+67.823 31.1 m
+64.823 31.1 l
+S
+27.1 32.617 m
+29.6 30.867 l
+S
+31.85 55.117 m
+34.85 55.117 l
+S
+19.6 40.867 m
+22.1 39.117 l
+S
+16.85 35.617 m
+19.85 35.617 l
+S
+20.1 28.117 m
+22.85 29.867 l
+S
+52.1 42.617 m
+54.484 44.178 l
+S
+52.437 50.146 m
+54.821 48.325 l
+S
+59.572 54.133 m
+59.35 51.117 l
+S
+50.185 10.055 m
+53.234 9.928 l
+S
+51.187 15.896 m
+53.571 14.075 l
+S
+58.322 19.883 m
+59.445 16.823 l
+S
+53.1 32.117 m
+50.6 30.367 l
+S
+52.85 24.617 m
+49.6 25.617 l
+S
+61.85 9.117 m
+59.1 10.867 l
+S
+69.35 34.617 m
+66.6 36.367 l
+S
+67.1 23.617 m
+65.1 22.117 l
+S
+24.435 46.055 m
+27.484 45.928 l
+S
+25.437 51.896 m
+27.821 50.075 l
+S
+62.6 47.117 m
+65.321 46.575 l
+S
+19.85 19.867 m
+20.35 16.617 l
+S
+21.85 21.867 m
+25.35 22.617 l
+S
+37.6 62.867 m
+41.6 62.117 l
+S
+38.323 42.1 m
+38.823 38.6 l
+S
+69.35 52.617 m
+66.85 53.867 l
+S
+14.85 62.117 m
+18.1 59.367 l
+S
+9.6 46.117 m
+7.1 44.367 l
+S
+20.6 51.617 m
+18.6 50.117 l
+S
+46.141 70.811 m
+47.994 73.492 l
+S
+69.391 40.561 m
+71.244 43.242 l
+S
+38.641 49.311 m
+39.35 52.117 l
+S
+25.141 16.811 m
+25.85 19.617 l
+S
+36.6 32.867 m
+34.6 31.367 l
+S
+6.1 68.617 m
+2.85 67.867 l
+S
+4.85 56.867 m
+2.35 55.117 l
+S
+7.6 51.617 m
+4.6 51.617 l
+S
+6.6 35.867 m
+4.6 34.367 l
+S
+6.1 12.867 m
+1.85 13.617 l
+S
+4.6 30.617 m
+1.6 30.617 l
+S
+72.814 74.769 m
+73.928 77.729 l
+S
+67.976 74.633 m
+67.35 77.909 l
+S
+52.762 73.779 m
+52.876 76.776 l
+S
+37.062 75.375 m
+35.639 77.43 l
+S
+20.795 75.242 m
+22.12 77.193 l
+S
+9.736 73.91 m
+8.073 76.225 l
+S
+10.1 23.617 m
+6.35 24.367 l
+S
+73.217 18.276 m
+71.323 21.1 l
+S
+28.823 39.6 m
+29.505 42.389 l
+S
+49.6 38.617 m
+47.6 37.117 l
+S
+60.323 73.6 m
+62.323 76.6 l
+S
+60.323 1.6 m
+62.323 4.6 l
+S
+%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Leaves - Fall )
+(Leaves - Fall ) 0 0 64.0781 78.9336 [
+%AI3_Tile
+(0 O 0 R 0.05 0.2 1 0 k
+ 0.05 0.2 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+64.0781 78.9336 m
+64.0781 0 L
+0 0 L
+0 78.9336 L
+64.0781 78.9336 L
+f
+%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.83 0 1 0 k
+ 0.83 0 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+1 D
+0 XR
+29.7578 0.9902 m
+30.4346 1.1914 30.7246 1.3428 V
+29.2559 4.0547 33.707 8.3359 34.627 9.0762 C
+35.2275 8.8506 35.3477 6.3184 34.6699 4.9805 C
+35.5137 5.1035 37.7031 3.7256 38.4609 2.4365 C
+38.5254 3.125 40.0957 6.0664 40.9219 6.4434 C
+40.002 6.8408 39.3359 8.3135 38.5742 9.7617 C
+39.5957 9.9287 40.9961 9.0078 42.4668 8.1025 C
+42.9814 8.9043 44.3555 9.875 45.6143 10.3916 C
+44.5264 11.0781 44.0313 11.8203 43.5352 13.2793 C
+42.4922 12.7139 40.3057 12.5645 39.7764 12.8516 C
+40.291 13.9648 42.5371 14.5078 43.2676 14.4551 C
+43.0137 15.3164 42.8652 17.4697 43.0391 20.0625 C
+41.3789 18.7461 39.834 17.4297 38.1738 17.4883 C
+38.4434 16.0664 37.8076 14.2607 37.4307 13.7676 C
+36.8574 14.5117 36.4463 15.3389 36.8008 17.3164 C
+35.3486 17.8008 34.1113 18.3467 32.7373 19.6045 C
+32.7373 17.7734 32.166 16.5723 31.2969 15.2959 C
+32.5576 14.8076 33.8301 13.6045 33.8252 12.5664 C
+32.9775 12.7178 31.2852 13.4619 30.793 14.4551 C
+30.0742 13.707 28.3906 12.3984 26.7871 12.3945 C
+27.9746 11.5391 28.8945 10.5059 28.9893 8.5938 C
+30.2422 9.5645 32.6953 10.1797 34.0752 9.582 C
+29.2344 5.3457 29.7031 2.3125 29.7578 0.9902 C
+f
+13.8525 29.9844 m
+13.3281 29.5127 13.1309 29.25 V
+15.623 27.4326 13.3691 21.6074 12.8555 20.5439 C
+12.2168 20.4883 10.8096 23.2285 10.8457 24.7266 C
+9.7129 23.9707 8.0488 24.0918 6.4463 24.3779 C
+7.0186 23.2891 6.6172 21.3447 5.8164 20.5439 C
+6.8184 20.5801 8.1699 19.8652 9.4785 18.8838 C
+8.6436 18.0645 6.8164 18.2246 4.9004 18.8838 C
+4.9004 17.5107 4.0781 15.7734 3.2412 14.5918 C
+4.5576 14.6484 5.7031 13.9629 6.5605 12.9316 C
+7.2256 14.5 9.2598 15.6133 10.166 15.5645 C
+10.1826 14.1992 8.6094 12.1094 7.5879 11.7109 C
+8.1875 11.041 9.207 9.5107 10.166 7.0947 C
+10.9648 9.0205 12.1348 10.2627 13.3672 11.1953 C
+12.2256 12.7578 12.3994 13.6289 12.7988 15.1074 C
+13.541 14.5664 14.5723 14.1338 14.7441 12.1309 C
+16.4609 12.416 17.5957 12.3447 19.0938 11.4434 C
+18.6387 13.1055 18.6348 14.707 18.9551 16.4063 C
+17.1055 16.2666 15.5449 16.4795 14.5156 17.9688 C
+15.3457 18.1953 17.6055 18.2549 18.4795 17.3223 C
+18.8066 18.3047 19.7012 19.7109 21.1475 20.4043 C
+19.707 20.6641 18.7227 21.7637 17.8135 23.4492 C
+17.1006 22.0332 14.873 20.3691 13.3711 20.3145 C
+15.373 24.3779 15.373 27.2959 13.8525 29.9844 C
+f
+41.2324 26.0742 m
+41.5518 26.7021 41.7549 26.959 V
+44.1523 25.0176 48.958 28.3262 49.8535 29.0957 C
+49.7432 29.7266 47.6182 30.8643 45.9004 29.834 C
+46.3408 31.123 45.4395 33.084 44.2402 34.126 C
+45.9805 34.0254 48.126 35.3867 48.6484 36.1289 C
+48.8701 35.1514 50.0527 33.8809 51.3379 32.8672 C
+51.6895 33.8398 50.9941 35.958 50.0781 37.5605 C
+51.3125 38.0605 52.4248 38.9912 52.8828 40.25 C
+53.3398 38.9336 54.3428 38.2598 55.6875 37.5039 C
+54.5273 36.0762 53.7471 33.9023 54.0273 33.0391 C
+55.3496 33.374 56.9209 36.0918 57.0439 37.1816 C
+57.9189 36.415 59.4727 35.7285 62.0537 35.4219 C
+60.3535 34.3438 59.9902 32.3516 59.4063 30.9219 C
+58.2588 31.3682 56.0898 31.4277 55.1152 30.8643 C
+55.8281 30.2852 57.168 29.7344 59.1777 29.7207 C
+59.1777 28.1758 59.6406 27.043 60.8945 25.8281 C
+59.1719 25.8418 57.0723 25.3555 55.5762 24.9629 C
+55.3281 26.292 54.4844 27.8887 53.3398 28.2891 C
+53.334 27.4277 53.5996 25.1797 54.4844 24.5117 C
+53.6201 23.9443 52.3672 22.5674 51.9102 20.8496 C
+51.2881 22.1758 50.4268 23.4805 48.5645 23.9238 C
+49.749 24.9766 50.584 26.9941 50.25 28.4609 C
+45.1973 24.4785 42.5215 25.7773 41.2324 26.0742 C
+f
+27.7578 38.7324 m
+28.4346 38.9316 28.7246 39.084 V
+27.2559 41.7969 31.707 46.0776 32.627 46.8169 C
+33.2275 46.5918 33.3477 44.0586 32.6699 42.7227 C
+33.5137 42.8457 35.7031 41.4678 36.4609 40.1787 C
+36.5254 40.8652 38.0957 43.8066 38.9219 44.1846 C
+38.002 44.582 37.3359 46.0547 36.5742 47.5039 C
+37.5957 47.6709 38.9961 46.7485 40.4668 45.8438 C
+40.9814 46.6445 42.3555 47.6177 43.6143 48.1328 C
+42.5264 48.8198 42.0313 49.5615 41.5352 51.0205 C
+40.4922 50.4556 38.3057 50.3057 37.7764 50.5938 C
+38.291 51.7056 40.5371 52.2485 41.2676 52.1958 C
+41.0137 53.0576 40.8652 55.2109 41.0391 57.8037 C
+39.3789 56.4878 37.834 55.1719 36.1738 55.2285 C
+36.4434 53.8076 35.8076 52.002 35.4307 51.5088 C
+34.8574 52.2529 34.4463 53.0796 34.8008 55.0576 C
+33.3486 55.5425 32.1113 56.0879 30.7373 57.3467 C
+30.7373 55.5146 30.166 54.314 29.2969 53.0366 C
+30.5576 52.5488 31.8301 51.3467 31.8252 50.3076 C
+30.9775 50.46 29.2852 51.2036 28.793 52.1958 C
+28.0742 51.4497 26.3906 50.1396 24.7871 50.1357 C
+25.9746 49.2817 26.8945 48.2466 26.9893 46.335 C
+28.2422 47.3057 30.6953 47.9209 32.0752 47.3237 C
+27.2344 43.0869 27.7031 40.0547 27.7578 38.7324 C
+f
+13.5195 70.3916 m
+12.9941 69.9209 12.7988 69.6587 V
+15.2891 67.8418 13.0352 62.0146 12.5225 60.9517 C
+11.8828 60.8955 10.4766 63.6367 10.5117 65.1348 C
+9.3809 64.3789 7.7148 64.4995 6.1133 64.7856 C
+6.6855 63.6987 6.2842 61.7529 5.4834 60.9517 C
+6.4854 60.9878 7.8359 60.2729 9.1455 59.2925 C
+8.3105 58.4717 6.4834 58.6338 4.5674 59.2925 C
+4.5674 57.9189 3.7461 56.1816 2.9082 54.9995 C
+4.2246 55.0576 5.3691 54.3706 6.2275 53.3408 C
+6.8926 54.9097 8.9258 56.0215 9.832 55.9727 C
+9.8496 54.6079 8.2764 52.5176 7.2539 52.1187 C
+7.8545 51.4497 8.873 49.9189 9.832 47.5039 C
+10.6309 49.4297 11.8008 50.6719 13.0342 51.6045 C
+11.8926 53.1655 12.0664 54.0366 12.4648 55.5146 C
+13.209 54.9746 14.2393 54.5415 14.4102 52.5386 C
+16.127 52.8247 17.2637 52.7529 18.7598 51.8525 C
+18.3057 53.5137 18.3027 55.1147 18.623 56.8149 C
+16.7725 56.6748 15.2129 56.8887 14.1826 58.377 C
+15.0117 58.6035 17.2725 58.6626 18.1465 57.731 C
+18.4736 58.7129 19.3691 60.1187 20.8145 60.8125 C
+19.375 61.0728 18.3896 62.1719 17.4805 63.8579 C
+16.7676 62.4429 14.541 60.7769 13.0371 60.7227 C
+15.041 64.7856 15.041 67.7046 13.5195 70.3916 C
+f
+41.2324 64.4824 m
+41.5518 65.1113 41.7549 65.3682 V
+44.1523 63.4272 48.958 66.7354 49.8535 67.5034 C
+49.7432 68.1362 47.6182 69.2725 45.9004 68.2422 C
+46.3408 69.5313 45.4395 71.4922 44.2402 72.5342 C
+45.9805 72.4341 48.126 73.7954 48.6484 74.5371 C
+48.8701 73.5601 50.0527 72.29 51.3379 71.2754 C
+51.6895 72.249 50.9941 74.3662 50.0781 75.9683 C
+51.3125 76.4692 52.4248 77.3994 52.8828 78.6582 C
+53.3398 77.3423 54.3428 76.667 55.6875 75.9111 C
+54.5273 74.4844 53.7471 72.3101 54.0273 71.4473 C
+55.3496 71.7822 56.9209 74.5 57.0439 75.5903 C
+57.9189 74.8232 59.4727 74.1372 62.0537 73.8311 C
+60.3535 72.7534 59.9902 70.7612 59.4063 69.3301 C
+58.2588 69.7773 56.0898 69.8364 55.1152 69.2725 C
+55.8281 68.6934 57.168 68.1431 59.1777 68.1284 C
+59.1777 66.583 59.6406 65.4512 60.8945 64.2373 C
+59.1719 64.249 57.0723 63.7632 55.5762 63.3721 C
+55.3281 64.7002 54.4844 66.2974 53.3398 66.6973 C
+53.334 65.8364 53.5996 63.5874 54.4844 62.9214 C
+53.6201 62.353 52.3672 60.9751 51.9102 59.2583 C
+51.2881 60.583 50.4268 61.8882 48.5645 62.333 C
+49.749 63.3862 50.584 65.4033 50.25 66.8691 C
+45.1973 62.8872 42.5215 64.1851 41.2324 64.4824 C
+f
+%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Stripes)
+(Stripes) 8.45 4.6001 80.45 76.6001 [
+%AI3_Tile
+(0 O 0 R 1 0.07 1 0 k
+ 1 0.07 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 3.6 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+8.2 8.2 m
+80.7 8.2 L
+S
+8.2 22.6001 m
+80.7 22.6001 L
+S
+8.2 37.0002 m
+80.7 37.0002 L
+S
+8.2 51.4 m
+80.7 51.4 L
+S
+8.2 65.8001 m
+80.7 65.8001 L
+S
+8.2 15.4 m
+80.7 15.4 L
+S
+8.2 29.8001 m
+80.7 29.8001 L
+S
+8.2 44.2 m
+80.7 44.2 L
+S
+8.2 58.6001 m
+80.7 58.6001 L
+S
+8.2 73.0002 m
+80.7 73.0002 L
+S
+%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginBrushPattern
+(New Pattern 1)
+0 A
+u
+1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7834.75 8587 m
+-7834.75 8563 L
+-7884.75 8563 L
+-7884.75 8587 L
+-7834.75 8587 L
+n
+u
+0 Ap
+0 O
+1 g
+-7854.75 8585 m
+-7866.96 8588.0527 -7875.4434 8578.0605 -7884.75 8570.9512 C
+F
+-7844.75 8585 m
+-7861.1279 8589.0947 -7870.8008 8569.7227 -7884.75 8565.3154 C
+F
+-7884.75 8565 m
+-7864.75 8560 -7854.75 8590 -7834.75 8585 C
+F
+-7874.75 8565 m
+-7858.3721 8560.9053 -7848.6992 8580.2773 -7834.75 8584.6846 C
+F
+-7864.75 8565 m
+-7852.54 8561.9473 -7844.0566 8571.9395 -7834.75 8579.0488 C
+F
+-7844.75 8565 m
+-7841.1279 8564.0947 -7837.835 8564.3408 -7834.75 8565.3154 C
+F
+-7874.75 8585 m
+-7878.3721 8585.9053 -7881.665 8585.6592 -7884.75 8584.6846 C
+F
+-7844.7817 8565.125 m
+-7850.9009 8563.6162 -7854.7817 8565.125 V
+-7858.877 8563.6484 -7864.7817 8565.125 V
+-7869.7446 8563.4492 -7874.7817 8565.125 V
+-7880.7969 8563.5742 -7884.7817 8565.125 V
+-7884.7817 8584.8096 L
+-7881.6958 8585.7842 -7878.2969 8585.9912 -7874.3799 8584.9082 C
+-7868.2134 8586.4912 -7864.4634 8584.9082 V
+-7859.4634 8586.4912 -7854.3799 8584.8242 V
+-7850.0474 8586.4082 -7844.3799 8584.9082 V
+-7838.8799 8586.3242 -7834.7817 8585.125 V
+-7834.7817 8565.4404 L
+-7837.5254 8564.4287 -7840.6514 8563.9287 -7844.7817 8565.125 C
+f
+0 R
+0 G
+1 J 1 j 0.5 w
+-7864.75 8585 m
+-7872.54 8586.9473 -7878.813 8583.585 -7884.75 8579.0488 C
+S
+-7854.75 8585 m
+-7866.96 8588.0527 -7875.4434 8578.0605 -7884.75 8570.9512 C
+S
+-7844.75 8585 m
+-7861.1279 8589.0947 -7870.8008 8569.7227 -7884.75 8565.3154 C
+S
+-7884.75 8565 m
+-7864.75 8560 -7854.75 8590 -7834.75 8585 C
+S
+-7874.75 8565 m
+-7858.3721 8560.9053 -7848.6992 8580.2773 -7834.75 8584.6846 C
+S
+-7864.75 8565 m
+-7852.54 8561.9473 -7844.0566 8571.9395 -7834.75 8579.0488 C
+S
+-7854.75 8565 m
+-7846.96 8563.0527 -7840.687 8566.415 -7834.75 8570.9512 C
+S
+-7844.75 8565 m
+-7841.1279 8564.0947 -7837.835 8564.3408 -7834.75 8565.3154 C
+S
+-7874.75 8585 m
+-7878.3721 8585.9053 -7881.665 8585.6592 -7884.75 8584.6846 C
+S
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 2)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7884 8586 m
+-7819.187 8586 L
+-7819.187 8521.9023 L
+-7884 8521.9023 L
+-7884 8586 L
+n
+u
+0 O
+0 g
+-7849.6978 8544.4297 m
+-7851.6094 8521.9023 L
+-7853.5215 8544.4297 L
+-7852.9033 8544.3066 -7852.2642 8544.2402 -7851.6094 8544.2402 c
+-7850.9551 8544.2402 -7850.3159 8544.3066 -7849.6978 8544.4297 C
+f
+-7861.2402 8552.3975 m
+-7884 8554.3301 L
+-7861.1138 8556.2734 L
+-7861.2856 8555.5469 -7861.3848 8554.793 -7861.3848 8554.0156 c
+-7861.3848 8553.4629 -7861.3281 8552.9248 -7861.2402 8552.3975 C
+f
+-7856.519 8545.5723 m
+-7870.1626 8536.8047 L
+-7860.2153 8549.377 L
+-7859.3574 8547.791 -7858.0718 8546.4766 -7856.519 8545.5723 C
+f
+-7853.481 8563.6074 m
+-7851.5786 8586 L
+-7849.6768 8563.5967 L
+-7850.3018 8563.7227 -7850.9473 8563.791 -7851.6094 8563.791 c
+-7852.25 8563.791 -7852.873 8563.7246 -7853.481 8563.6074 C
+f
+-7841.9609 8555.5068 m
+-7819.187 8553.5732 L
+-7842.083 8551.6289 L
+-7842.083 8551.8506 L
+-7841.9258 8552.5488 -7841.834 8553.2695 -7841.834 8554.0156 c
+-7841.834 8554.5234 -7841.8848 8555.0195 -7841.9609 8555.5068 C
+f
+-7860.1138 8558.8262 m
+-7870.1641 8571.5293 L
+-7856.2778 8562.6055 L
+-7857.8823 8561.7305 -7859.2114 8560.416 -7860.1138 8558.8262 C
+f
+-7842.9961 8549.3945 m
+-7832.875 8536.6055 L
+-7846.7666 8545.5313 L
+-7845.1768 8546.4414 -7843.8633 8547.7793 -7842.9961 8549.3945 C
+f
+-7846.6895 8562.4512 m
+-7832.873 8571.3281 L
+-7842.9658 8558.5732 L
+-7843.8198 8560.1895 -7845.1152 8561.5313 -7846.6895 8562.4512 C
+f
+-7842.8887 8558.6133 m
+-7842.3862 8557.6641 -7842.043 8556.6211 -7841.875 8555.5195 c
+-7841.7993 8555.0293 -7841.748 8554.5273 -7841.748 8554.0156 c
+-7841.748 8553.2637 -7841.8398 8552.5352 -7841.998 8551.8311 c
+-7842.1958 8550.957 -7842.5049 8550.124 -7842.918 8549.3545 c
+-7843.7954 8547.7246 -7845.1191 8546.374 -7846.7241 8545.4561 c
+-7847.6294 8544.9375 -7848.6226 8544.5537 -7849.6802 8544.3457 c
+-7850.3047 8544.2207 -7850.9497 8544.1523 -7851.6094 8544.1523 c
+-7852.2695 8544.1523 -7852.915 8544.2207 -7853.5391 8544.3457 c
+-7854.623 8544.5605 -7855.6382 8544.957 -7856.5625 8545.4961 c
+-7858.1313 8546.4102 -7859.4282 8547.7363 -7860.291 8549.335 c
+-7860.7969 8550.2695 -7861.145 8551.2969 -7861.3262 8552.3828 c
+-7861.415 8552.916 -7861.4727 8553.459 -7861.4727 8554.0156 c
+-7861.4727 8554.8008 -7861.3711 8555.5605 -7861.1978 8556.293 c
+-7860.981 8557.207 -7860.6406 8558.0732 -7860.187 8558.8701 c
+-7859.2793 8560.4727 -7857.939 8561.8008 -7856.3174 8562.6826 c
+-7855.4487 8563.1553 -7854.5 8563.498 -7853.4961 8563.6934 c
+-7852.8848 8563.8115 -7852.2554 8563.8779 -7851.6094 8563.8779 c
+-7850.9414 8563.8779 -7850.29 8563.8086 -7849.6602 8563.6826 c
+-7848.5786 8563.4668 -7847.5664 8563.0654 -7846.6455 8562.5273 c
+-7845.0566 8561.5977 -7843.751 8560.2441 -7842.8887 8558.6133 c
+f
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 3)
+0 A
+u
+1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7874.75 8587 m
+-7874.75 8563 L
+-7884.75 8563 L
+-7884.75 8587 L
+-7874.75 8587 L
+n
+u
+u
+0 Ap
+0 O
+1 g
+-7875.4058 8578.5361 m
+-7874.9878 8577.4355 -7874.75 8576.2471 -7874.75 8575 c
+-7874.75 8573.1377 -7875.2681 8571.4004 -7876.1543 8569.9072 c
+-7877.897 8566.9736 -7881.0898 8565 -7884.75 8565 C
+-7884.75 8585 L
+-7884.4297 8585 -7884.1143 8584.9814 -7883.8018 8584.9521 c
+-7881.9121 8584.7754 -7880.1807 8584.0645 -7878.7441 8582.9824 c
+-7877.2471 8581.8545 -7876.0801 8580.3184 -7875.4058 8578.5361 c
+f
+0 R
+0 G
+1 J 1 j 0.5 w
+-7884.75 8565.3174 m
+-7881.7207 8566.2744 -7878.8926 8567.9326 -7876.1543 8569.9072 C
+S
+-7884.75 8570.9512 m
+-7881.5991 8573.3564 -7878.543 8576.0869 -7875.4058 8578.5361 C
+S
+-7878.7441 8582.9824 m
+-7880.8105 8581.8916 -7882.7993 8580.5342 -7884.75 8579.043 C
+S
+-7883.8018 8584.9521 m
+-7884.1191 8584.8682 -7884.4375 8584.7852 -7884.75 8584.6865 C
+S
+-7878.7441 8582.9824 m
+-7880.1807 8584.0645 -7881.9121 8584.7744 -7883.8018 8584.9521 C
+S
+-7875.4058 8578.5361 m
+-7874.9878 8577.4355 -7874.75 8576.2471 -7874.75 8575 c
+-7874.75 8573.1377 -7875.2681 8571.4004 -7876.1543 8569.9072 C
+S
+-7884.75 8585 m
+-7884.4297 8585 -7884.1143 8584.9814 -7883.8018 8584.9521 C
+S
+-7878.7441 8582.9824 m
+-7877.2471 8581.8545 -7876.0801 8580.3184 -7875.4058 8578.5361 C
+S
+-7876.1543 8569.9072 m
+-7877.8975 8566.9736 -7881.0898 8565 -7884.75 8565 C
+S
+U
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 5)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7726.3994 8587 m
+-7726.3994 8573.4199 L
+-7885 8573.4199 L
+-7885 8587 L
+-7726.3994 8587 L
+n
+u
+u
+0 O
+0.285 0.228 0.171 0 k
+-7741.0786 8585.4844 m
+-7741.043 8586.6895 L
+-7727.5103 8587.5176 -7726.8418 8586.2822 v
+-7726.7441 8586.1016 -7726.647 8585.7148 -7726.561 8585.1934 C
+-7728.584 8585.8242 -7738.291 8585.5713 -7741.0786 8585.4844 C
+f
+0.44 0.352 0.264 0 k
+-7741.4063 8574.0234 m
+-7741.3711 8575.2676 L
+-7738.4912 8575.0488 -7728.1914 8574.3164 -7726.543 8574.8652 C
+-7726.7031 8574.2188 -7726.9199 8573.7646 -7727.2046 8573.6152 c
+-7728.8306 8572.7656 -7741.4063 8574.0234 Y
+f
+0.145 0.116 0.087 0 k
+-7741.3711 8575.2676 m
+-7741.0786 8585.4844 L
+-7738.291 8585.5713 -7728.584 8585.8242 -7726.561 8585.1934 C
+-7726.1519 8582.7773 -7725.9258 8577.3604 -7726.543 8574.8652 C
+-7728.1914 8574.3164 -7738.4912 8575.0488 -7741.3711 8575.2676 C
+f
+U
+u
+0.155 0.124 0.093 0 k
+-7766.9375 8579.2734 m
+-7765.897 8579.6563 L
+-7747.0728 8575.1465 L
+-7747.481 8574.3145 L
+-7766.3633 8576.7246 L
+-7767.252 8577.0059 L
+-7767.6504 8576.8936 -7768.1934 8576.8242 V
+-7767.6094 8577.2373 -7767.1426 8578.1406 -7766.9375 8579.2734 C
+f
+u
+0.085 0.068 0.051 0 k
+-7771.7993 8583.666 m
+-7772.5977 8583.7217 -7769.749 8583.6641 Y
+-7770.3481 8583.0176 -7770.771 8581.8203 -7770.8105 8580.4375 c
+-7770.8169 8580.2246 -7770.8105 8580.0176 -7770.7993 8579.8135 C
+-7771.041 8579.707 -7771.0918 8579.7734 -7771.6289 8579.5645 C
+-7771 8583.6113 -7771.7993 8583.666 v
+f
+0.305 0.244 0.183 0 k
+-7770.3442 8576.8672 m
+-7770.5527 8576.8105 -7770.4937 8578.9307 Y
+-7769.4785 8579.7588 L
+-7767.8359 8578.9434 L
+-7766.9375 8579.2734 L
+-7767.1426 8578.1406 -7767.6094 8577.2373 -7768.1934 8576.8242 C
+-7768.6094 8576.7715 -7769.874 8576.7998 -7770.3442 8576.8672 C
+f
+U
+0.115 0.092 0.069 0 k
+-7766.9375 8579.2734 m
+-7767.8359 8578.9434 L
+-7769.4785 8579.7588 L
+-7770.4937 8578.9307 L
+-7770.793 8579.708 -7770.7993 8579.8135 V
+-7769.5137 8580.3789 -7768.1831 8580.7402 -7766.8398 8580.9258 C
+-7766.79 8580.7275 -7766.7842 8580.543 -7766.79 8580.3369 c
+-7766.7998 8579.9717 -7766.8218 8579.6182 -7766.9375 8579.2734 C
+f
+0.41 0.328 0.246 0 k
+-7747.4512 8575.3965 m
+-7749.377 8576.6426 -7758.3862 8582.0986 -7766.8398 8580.9258 C
+-7766.9038 8582.0928 -7767.248 8583.0908 -7767.75 8583.6631 C
+-7767.1895 8583.6621 L
+-7746.7402 8586.7559 L
+-7747.0366 8576.4258 L
+-7747.0728 8575.1465 L
+-7747.2046 8575.2373 -7747.4512 8575.3965 v
+f
+0.395 0.316 0.237 0 k
+-7770.8105 8580.4375 m
+-7770.771 8581.8203 -7770.3481 8583.0176 -7769.749 8583.6641 C
+-7767.6807 8583.6631 L
+-7767.1782 8583.0908 -7766.8218 8582.0713 -7766.8398 8580.9258 C
+-7768.1831 8580.7402 -7769.5137 8580.3789 -7770.7993 8579.8135 C
+-7770.8105 8580.0176 -7770.8169 8580.2246 -7770.8105 8580.4375 c
+f
+U
+u
+0 0 0 0.11 k
+-7741.2642 8574.2012 m
+-7740.2407 8574.0352 L
+-7741.2642 8574.2012 L
+-7741.2642 8574.2012 L
+f
+0 0 0 0.34 k
+-7747.481 8574.3145 m
+-7747.0728 8575.1465 L
+-7745.6714 8574.918 L
+-7744.5234 8574.7314 L
+-7742.6758 8574.4307 L
+-7741.2642 8574.2012 L
+-7740.2407 8574.0352 L
+-7740.2954 8573.7168 -7740.3672 8573.498 -7740.4648 8573.4199 C
+-7747.481 8574.3145 L
+f
+0 0 0 0.32 k
+-7745.8042 8579.207 m
+-7746.041 8586.8613 L
+-7740.7144 8587 L
+-7739.7266 8583.5146 -7740.1816 8579.1543 V
+-7745.8042 8579.207 L
+f
+U
+0.025 0.02 0.015 0 k
+-7739.3223 8576.3848 m
+-7736.373 8576.9199 -7733.2402 8577.1602 -7730.3159 8576.3613 c
+-7730.2856 8576.3496 -7730.2754 8576.3184 -7730.2871 8576.2969 c
+-7730.2881 8576.2656 -7730.3198 8576.2559 -7730.3418 8576.2559 c
+-7733.2422 8577.0645 -7736.375 8576.8242 -7739.3042 8576.2783 c
+-7739.3262 8576.2793 -7739.3574 8576.291 -7739.3672 8576.3223 c
+-7739.3662 8576.3438 -7739.355 8576.375 -7739.3223 8576.3848 c
+-7739.3223 8576.3848 l
+f
+-7737.8374 8575.3076 m
+-7737.7295 8575.3789 -7737.6313 8575.4941 -7737.5234 8575.502 c
+-7733.7886 8575.832 -7730.1631 8575.7813 -7726.4746 8575.6641 c
+-7726.4526 8575.6641 -7726.4209 8575.6426 -7726.4214 8575.6211 c
+-7726.4214 8575.5879 -7726.4551 8575.5684 -7726.4766 8575.5684 c
+-7729.3223 8575.6816 -7732.1401 8575.6992 -7735.0039 8575.5352 c
+-7735.9336 8575.4766 -7736.9082 8575.7402 -7737.7778 8575.2207 c
+-7737.7993 8575.2109 -7737.8306 8575.2109 -7737.8506 8575.2334 c
+-7737.8618 8575.2559 -7737.8594 8575.2871 -7737.8374 8575.3076 c
+-7737.8374 8575.3076 l
+f
+-7733.373 8577.3672 m
+-7731.5098 8578.6797 -7729.3022 8579.374 -7727.1001 8579.8867 c
+-7727.0679 8579.8965 -7727.0474 8579.8848 -7727.0366 8579.8535 c
+-7727.0273 8579.8203 -7727.0488 8579.8008 -7727.0703 8579.79 c
+-7729.2617 8579.2656 -7731.459 8578.6035 -7733.3105 8577.2803 c
+-7733.3433 8577.2598 -7733.375 8577.2715 -7733.3848 8577.293 c
+-7733.4058 8577.3145 -7733.3945 8577.3457 -7733.373 8577.3672 c
+-7733.373 8577.3672 l
+f
+-7738.9321 8584.0566 m
+-7736.7295 8584.5703 -7734.5298 8585.0303 -7732.2798 8585.2754 c
+-7732.2598 8585.2852 -7732.229 8585.2637 -7732.229 8585.2422 c
+-7732.2183 8585.209 -7732.2407 8585.1777 -7732.2729 8585.1787 c
+-7734.5122 8584.8809 -7736.7305 8584.5176 -7738.9126 8583.9502 c
+-7738.9351 8583.9512 -7738.9673 8583.9629 -7738.9766 8583.9941 c
+-7738.9751 8584.0156 -7738.9648 8584.0479 -7738.9321 8584.0566 c
+-7738.9321 8584.0566 l
+f
+-7738.439 8583.3604 m
+-7736.3457 8584.1973 -7734.1016 8583.9297 -7731.9023 8583.9629 c
+-7731.8706 8583.9609 -7731.8496 8583.9395 -7731.8506 8583.9082 c
+-7731.8521 8583.875 -7731.873 8583.8555 -7731.8945 8583.8555 c
+-7734.0928 8583.8438 -7736.3374 8584.0996 -7738.4209 8583.2529 c
+-7738.4434 8583.2539 -7738.4746 8583.2656 -7738.4834 8583.2969 c
+-7738.4834 8583.3184 -7738.4722 8583.3506 -7738.439 8583.3604 c
+-7738.439 8583.3604 l
+f
+-7737.707 8584.7051 m
+-7736.3833 8584.752 -7735.1504 8584.5469 -7733.8271 8584.209 c
+-7733.3594 8584.0996 -7732.9199 8584.2266 -7732.4609 8584.2129 c
+-7731.897 8584.1973 l
+-7731.874 8584.1963 -7731.8633 8584.1855 -7731.8535 8584.1738 c
+-7731.834 8584.1523 -7731.8442 8584.1211 -7731.8662 8584.0996 c
+-7732.0625 8583.9453 l
+-7732.0742 8583.9453 -7732.085 8583.9355 -7732.0962 8583.9355 c
+-7732.5 8583.9473 l
+-7733.9551 8584.1914 -7735.457 8584.6719 -7736.8926 8584.0742 c
+-7736.9258 8584.0645 -7736.957 8584.0859 -7736.9673 8584.1074 c
+-7736.9673 8584.1396 -7736.9551 8584.1602 -7736.9336 8584.1709 c
+-7735.647 8584.6992 -7734.1714 8584.4756 -7732.8818 8584.0547 c
+-7732.0918 8584.043 L
+-7732.124 8584.0332 L
+-7731.9282 8584.1875 L
+-7731.8984 8584.0898 L
+-7732.4639 8584.1064 l
+-7732.9321 8584.1406 -7733.3848 8583.9834 -7733.8398 8584.1035 c
+-7735.1543 8584.4609 -7736.3975 8584.625 -7737.71 8584.5986 c
+-7737.7422 8584.5996 -7737.7642 8584.6211 -7737.7617 8584.6533 c
+-7737.7617 8584.6855 -7737.7402 8584.7061 -7737.707 8584.7051 c
+-7737.707 8584.7051 l
+f
+-7738.5718 8585.0605 m
+-7735.8711 8586.2207 -7732.9023 8585.5703 -7730.1279 8585.1816 c
+-7729.7832 8585.2891 l
+-7729.7617 8585.2988 -7729.7417 8585.2871 -7729.7207 8585.2656 c
+-7729.71 8585.2441 -7729.7217 8585.2129 -7729.7422 8585.2021 c
+-7730.0801 8585.0098 l
+-7732.7754 8584.3926 -7735.5391 8584.7813 -7738.271 8584.7852 c
+-7738.3022 8584.7871 -7738.3232 8584.8086 -7738.3223 8584.8398 c
+-7738.3198 8584.8721 -7738.2983 8584.8926 -7738.2681 8584.8926 c
+-7735.6738 8584.9355 -7733.0303 8584.4434 -7730.4727 8585.0742 c
+-7729.7954 8585.2891 L
+-7729.7534 8585.1914 L
+-7730.1406 8585.0859 l
+-7732.9058 8585.4424 -7735.8418 8586.1348 -7738.5313 8584.9746 c
+-7738.5537 8584.9648 -7738.585 8584.9648 -7738.5962 8584.998 c
+-7738.6055 8585.0195 -7738.605 8585.0508 -7738.5718 8585.0605 c
+-7738.5718 8585.0605 l
+f
+-7735.6895 8578.3945 m
+-7734.3945 8578.9004 -7732.9834 8578.6465 -7731.6802 8578.3438 c
+-7731.647 8578.3418 -7731.6367 8578.3203 -7731.6382 8578.2891 c
+-7731.6504 8578.2568 -7731.6714 8578.2461 -7731.7031 8578.248 c
+-7732.998 8578.5303 -7734.377 8578.8154 -7735.6504 8578.2969 c
+-7735.6826 8578.2871 -7735.7144 8578.2988 -7735.7246 8578.3311 c
+-7735.7222 8578.3525 -7735.7114 8578.3848 -7735.6895 8578.3945 c
+-7735.6895 8578.3945 l
+f
+-7736.1401 8580.2207 m
+-7734.2266 8580.6895 -7732.3145 8581.1035 -7730.355 8581.3242 c
+-7730.3242 8581.334 -7730.3022 8581.3125 -7730.293 8581.2803 c
+-7730.2954 8581.2598 -7730.3159 8581.2285 -7730.3374 8581.2285 c
+-7732.2959 8581.0078 -7734.209 8580.582 -7736.1206 8580.1133 c
+-7736.1426 8580.1152 -7736.1738 8580.126 -7736.1831 8580.1582 c
+-7736.1831 8580.1797 -7736.1719 8580.2109 -7736.1401 8580.2207 c
+-7736.1401 8580.2207 l
+f
+-7736.9336 8582.6348 m
+-7734.499 8583.4609 -7731.8647 8583.0547 -7729.3457 8583.0879 c
+-7729.313 8583.0879 -7729.293 8583.0664 -7729.293 8583.0332 c
+-7729.2954 8583.0117 -7729.3159 8582.9922 -7729.3481 8582.9922 c
+-7731.8574 8582.916 -7734.481 8583.3848 -7736.8945 8582.5264 c
+-7736.9282 8582.5273 -7736.959 8582.5391 -7736.9688 8582.5605 c
+-7736.9678 8582.5918 -7736.9561 8582.624 -7736.9336 8582.6348 c
+-7736.9336 8582.6348 l
+f
+-7732.0542 8583.8496 m
+-7730.6582 8584.5449 -7729.0503 8584.4033 -7727.5342 8584.4668 c
+-7727.502 8584.4648 -7727.4824 8584.4434 -7727.4824 8584.4121 c
+-7727.4834 8584.3906 -7727.5054 8584.3594 -7727.5366 8584.3594 c
+-7729.0137 8584.2207 -7730.6489 8584.5234 -7732.0039 8583.7617 c
+-7732.0366 8583.7529 -7732.0679 8583.7637 -7732.0786 8583.7861 c
+-7732.0879 8583.8076 -7732.0767 8583.8398 -7732.0542 8583.8496 c
+-7732.0542 8583.8496 l
+f
+-7731.3418 8580.4248 m
+-7730.3926 8580.3975 -7729.4336 8580.3701 -7728.4839 8580.3428 c
+-7728.4526 8580.3418 -7728.4312 8580.3203 -7728.4336 8580.2881 c
+-7728.4336 8580.2559 -7728.4551 8580.2354 -7728.4878 8580.2363 c
+-7729.437 8580.2637 -7730.397 8580.291 -7731.3457 8580.3184 c
+-7731.377 8580.3184 -7731.3975 8580.3418 -7731.3975 8580.373 c
+-7731.397 8580.4043 -7731.374 8580.4258 -7731.3418 8580.4248 c
+-7731.3418 8580.4248 l
+f
+-7729.1592 8578.0361 m
+-7728.6895 8578.0645 -7728.209 8578.0723 -7727.7383 8578.0918 c
+-7727.7168 8578.0908 -7727.6855 8578.0684 -7727.6865 8578.0371 c
+-7727.687 8578.0039 -7727.71 8577.9844 -7727.7417 8577.9844 c
+-7728.2114 8577.9873 -7728.6816 8577.9375 -7729.1514 8577.9395 c
+-7729.1831 8577.9297 -7729.2031 8577.9512 -7729.2134 8577.9844 c
+-7729.2129 8578.0156 -7729.1914 8578.0371 -7729.1592 8578.0361 c
+-7729.1592 8578.0361 l
+f
+-7736.9702 8580.2344 m
+-7736.5688 8580.5107 -7736.125 8580.6797 -7735.645 8580.751 c
+-7735.6113 8580.7607 -7735.5918 8580.7383 -7735.5806 8580.7168 c
+-7735.5703 8580.6855 -7735.5928 8580.6543 -7735.6152 8580.6543 c
+-7736.0854 8580.5723 -7736.5176 8580.4023 -7736.9209 8580.1475 c
+-7736.9521 8580.1377 -7736.9849 8580.1387 -7736.9946 8580.1709 c
+-7737.0039 8580.1934 -7736.9922 8580.2246 -7736.9702 8580.2344 c
+-7736.9702 8580.2344 l
+f
+-7738.1904 8586.085 m
+-7735.7344 8586.5273 -7733.2983 8587.001 -7730.7993 8586.7266 c
+-7730.7778 8586.7266 -7730.7568 8586.7041 -7730.7578 8586.6719 c
+-7730.7578 8586.6406 -7730.7798 8586.6191 -7730.8022 8586.6191 c
+-7733.291 8586.873 -7735.7344 8586.4844 -7738.1719 8585.9775 c
+-7738.1934 8585.9785 -7738.2256 8585.9902 -7738.2344 8586.0215 c
+-7738.2344 8586.043 -7738.2222 8586.0752 -7738.1904 8586.085 c
+-7738.1904 8586.085 l
+f
+0.195 0.156 0.117 0 k
+-7738.166 8574.6445 m
+-7735.7969 8574.2676 -7733.4058 8574.3477 -7731.0298 8574.5898 c
+-7730.998 8574.5879 -7730.9766 8574.5664 -7730.9766 8574.5352 c
+-7730.9785 8574.5137 -7731 8574.4824 -7731.0215 8574.4824 c
+-7733.4082 8574.2422 -7735.791 8574.1602 -7738.1694 8574.5391 c
+-7738.2026 8574.5391 -7738.2222 8574.5605 -7738.2217 8574.5938 c
+-7738.2207 8574.625 -7738.1992 8574.6465 -7738.166 8574.6445 c
+-7738.166 8574.6445 l
+f
+0.335 0.268 0.201 0 k
+-7737.4351 8574.1113 m
+-7734.9282 8574.1152 -7732.4146 8574.2773 -7729.918 8573.8965 c
+-7729.8862 8573.8945 -7729.8647 8573.873 -7729.8662 8573.8418 c
+-7729.8672 8573.8086 -7729.8896 8573.7891 -7729.9209 8573.7891 c
+-7732.418 8574.1699 -7734.9297 8574.0293 -7737.4375 8574.0059 c
+-7737.46 8574.0059 -7737.481 8574.0273 -7737.4785 8574.0596 c
+-7737.4785 8574.0918 -7737.457 8574.1123 -7737.4351 8574.1113 c
+-7737.4351 8574.1113 l
+f
+0.205 0.164 0.123 0 k
+-7738.9766 8574.3262 m
+-7737.5039 8574.668 -7736.0078 8574.4023 -7734.5391 8574.2207 c
+-7734.5078 8574.2207 -7734.4873 8574.1973 -7734.499 8574.166 c
+-7734.5 8574.1348 -7734.5215 8574.1133 -7734.5537 8574.125 c
+-7736.0103 8574.2842 -7737.4961 8574.583 -7738.9473 8574.2188 c
+-7738.9785 8574.2207 -7739.0103 8574.2324 -7739.0098 8574.2637 c
+-7739.019 8574.2852 -7738.998 8574.3164 -7738.9766 8574.3262 c
+-7738.9766 8574.3262 l
+f
+-7732.3535 8573.7949 m
+-7731.1978 8573.9219 -7730.0273 8573.8145 -7728.8926 8573.5898 c
+-7728.8711 8573.5781 -7728.8506 8573.5566 -7728.8618 8573.5244 c
+-7728.8623 8573.5029 -7728.8945 8573.4824 -7728.916 8573.4941 c
+-7730.0503 8573.7402 -7731.1914 8573.7939 -7732.3462 8573.6885 c
+-7732.3794 8573.6895 -7732.3984 8573.7109 -7732.4087 8573.7324 c
+-7732.4082 8573.7646 -7732.3862 8573.7852 -7732.3535 8573.7949 c
+-7732.3535 8573.7949 l
+f
+0.335 0.268 0.201 0 k
+-7739.2681 8576.4473 m
+-7737.9214 8577.1885 -7736.3066 8576.5977 -7734.855 8576.6416 c
+-7734.8223 8576.6406 -7734.8022 8576.6191 -7734.8022 8576.5859 c
+-7734.8042 8576.5654 -7734.8262 8576.5449 -7734.8574 8576.5449 c
+-7736.2886 8576.4902 -7737.8823 8577.0801 -7739.2168 8576.3506 c
+-7739.2383 8576.3398 -7739.2695 8576.3516 -7739.291 8576.374 c
+-7739.3008 8576.3955 -7739.2886 8576.4277 -7739.2681 8576.4473 c
+-7739.2681 8576.4473 l
+f
+-7737.8945 8578.5645 m
+-7735.6719 8579.0449 -7733.3896 8578.6162 -7731.1504 8578.5625 c
+-7731.1177 8578.5615 -7731.0977 8578.5391 -7731.0977 8578.5078 c
+-7731.1001 8578.4863 -7731.1318 8578.4668 -7731.1519 8578.4668 c
+-7733.3833 8578.4775 -7735.6519 8578.9805 -7737.875 8578.457 c
+-7737.8975 8578.457 -7737.9287 8578.4688 -7737.9375 8578.502 c
+-7737.9375 8578.5225 -7737.9258 8578.5547 -7737.8945 8578.5645 c
+-7737.8945 8578.5645 l
+f
+-7732.0273 8575.1406 m
+-7730.3496 8575.9688 -7728.499 8576.502 -7726.603 8576.3613 c
+-7726.5718 8576.3613 -7726.5513 8576.3389 -7726.5527 8576.3066 c
+-7726.5527 8576.2754 -7726.5742 8576.2539 -7726.6074 8576.2559 c
+-7728.481 8576.416 -7730.3198 8575.8604 -7731.9873 8575.0547 c
+-7732.0078 8575.0449 -7732.041 8575.0449 -7732.0503 8575.0781 c
+-7732.061 8575.0996 -7732.061 8575.1309 -7732.0273 8575.1406 c
+-7732.0273 8575.1406 l
+f
+u
+0.5 0.85 1 0.45 k
+-7885 8581.9082 m
+-7885.0254 8582.4883 -7884.5664 8583.1875 -7883.167 8583.9902 C
+-7882.8521 8584.0029 -7881.3945 8584.0234 -7879.0889 8584.0488 C
+-7879.0889 8581.8223 L
+-7881.1382 8581.8457 -7883.1177 8581.8867 -7885 8581.9082 C
+f
+-7884.5088 8580.9688 m
+-7879.0889 8580.8447 L
+-7879.0889 8579.8145 L
+-7882.644 8579.959 L
+-7883.8145 8580.3301 -7884.5088 8580.9688 V
+f
+0.5 0.85 1 0.32 k
+-7879.0889 8580.8252 m
+-7884.4746 8580.9434 L
+-7884.7695 8581.2148 -7884.9849 8581.5566 -7885 8581.9277 C
+-7883.1177 8581.9063 -7881.1382 8581.8848 -7879.0889 8581.8613 C
+-7879.0889 8580.8252 L
+f
+0.5 0.85 1 0.45 k
+-7774.1504 8580.6172 m
+-7852.3584 8581.541 -7879.1079 8581.8418 V
+-7879.1079 8584.0488 L
+-7862.8145 8584.2324 -7803.9902 8584.707 Y
+-7769.749 8583.6641 L
+-7770.457 8580.5684 L
+-7774.1504 8580.6172 L
+f
+0.5 0.85 1 0.12 k
+-7879.1079 8579.8145 m
+-7879.1079 8580.8447 L
+-7770.4258 8579 L
+-7770.3833 8576.8633 L
+-7803.6553 8576.7129 L
+-7879.1079 8579.8145 L
+f
+u
+0.065 0.052 0.039 0 k
+-7747.0728 8575.1465 m
+-7747.0366 8576.4258 L
+-7747.2954 8575.1172 L
+-7765.897 8579.6563 L
+-7766.9375 8579.2734 L
+-7766.8794 8579.6055 -7766.8398 8579.957 -7766.8306 8580.3223 c
+-7766.8242 8580.5283 -7766.8281 8580.7285 -7766.8398 8580.9258 C
+-7758.3862 8582.0986 -7748.9634 8577.6719 -7747.0366 8576.4258 C
+-7746.7402 8586.7559 L
+-7746.041 8586.8613 L
+-7745.8042 8579.207 L
+-7740.1816 8579.1543 L
+-7740.0898 8577.0137 -7740.0718 8575.0215 -7740.2407 8574.0352 C
+-7747.0728 8575.1465 L
+f
+0.4 0.7 1 0 k
+-7770.457 8580.5879 m
+-7770.4258 8578.9805 L
+-7879.1079 8580.8252 L
+-7879.1079 8581.8613 L
+-7852.3584 8581.5605 -7770.457 8580.5879 Y
+f
+U
+U
+0.025 0.02 0.015 0 k
+-7734.7344 8583.0293 m
+-7734.7344 8583.0625 -7734.7129 8583.082 -7734.6802 8583.082 c
+-7731.6714 8583.1133 -7729.4214 8582.9453 -7726.415 8582.8594 C
+-7726.4087 8582.7656 L
+-7729.3262 8582.8701 -7731.7607 8583.0078 -7734.6841 8582.9746 C
+-7734.7168 8582.9766 -7734.7358 8582.998 -7734.7344 8583.0293 C
+f
+-7726.3994 8582.7656 m
+-7726.4082 8582.7441 L
+-7726.4087 8582.7656 L
+-7726.4063 8582.7656 -7726.4033 8582.7656 -7726.3994 8582.7656 C
+f
+-7730.4487 8581.4238 m
+-7731.4458 8581.292 -7732.3394 8581.7656 -7733.2114 8582.1973 C
+-7733.2441 8582.208 -7733.2534 8582.2402 -7733.2422 8582.2715 C
+-7733.2305 8582.293 -7733.1982 8582.3027 -7733.1777 8582.291 c
+-7732.3262 8581.8301 -7731.4312 8581.4199 -7730.4678 8581.5195 c
+-7729.1079 8581.6621 -7727.9038 8582.375 -7726.5254 8582.4531 C
+-7726.4463 8582.3594 L
+-7728.04 8582.2656 -7728.8647 8581.623 -7730.4487 8581.4238 c
+f
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 6)
+0 A
+u
+1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7884.75 8563 m
+-7884.75 8587 L
+-7874.75 8587 L
+-7874.75 8563 L
+-7884.75 8563 L
+n
+0 Ap
+0 O
+1 g
+-7874.75 8565 m
+-7875.0703 8565 -7875.3857 8565.0186 -7875.6982 8565.0479 c
+-7877.5879 8565.2256 -7879.3198 8565.9346 -7880.7559 8567.0176 c
+-7882.2529 8568.1465 -7883.4199 8569.6816 -7884.0942 8571.4639 c
+-7884.5122 8572.5645 -7884.75 8573.7529 -7884.75 8575 c
+-7884.75 8576.8623 -7884.2319 8578.5996 -7883.3457 8580.0918 c
+-7881.6025 8583.0273 -7878.4102 8585 -7874.75 8585 C
+-7874.75 8565 L
+f
+0 R
+0 G
+1 J 1 j 0.5 w
+-7874.75 8584.6816 m
+-7877.7793 8583.7256 -7880.6074 8582.0674 -7883.3457 8580.0918 C
+S
+-7874.75 8579.0488 m
+-7877.8999 8576.6436 -7880.957 8573.9131 -7884.0942 8571.4639 C
+S
+-7880.7559 8567.0176 m
+-7878.6904 8568.1084 -7876.7017 8569.4668 -7874.75 8570.957 C
+S
+-7875.6982 8565.0479 m
+-7875.3809 8565.1309 -7875.063 8565.2148 -7874.75 8565.3145 C
+S
+-7880.7559 8567.0176 m
+-7879.3193 8565.9355 -7877.5879 8565.2256 -7875.6982 8565.0479 C
+S
+-7884.0942 8571.4639 m
+-7884.5122 8572.5645 -7884.75 8573.7529 -7884.75 8575 c
+-7884.75 8576.8623 -7884.231 8578.5996 -7883.3457 8580.0918 C
+S
+-7874.75 8565 m
+-7875.0703 8565 -7875.3857 8565.0186 -7875.6982 8565.0479 C
+S
+-7880.7559 8567.0176 m
+-7882.2529 8568.1465 -7883.4199 8569.6816 -7884.0942 8571.4639 C
+S
+-7883.3457 8580.0918 m
+-7881.6025 8583.0273 -7878.4102 8585 -7874.75 8585 C
+S
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 8)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7883.9521 8584.3125 m
+-7776.7954 8584.3125 L
+-7776.7954 8570.1855 L
+-7883.9521 8570.1855 L
+-7883.9521 8584.3125 L
+n
+u
+0 O
+0 0 0 1 k
+-7882.2832 8583.623 m
+-7882.8535 8586 -7882.8184 8582.0039 V
+-7883.0479 8578.8027 L
+-7883.6167 8576.4551 L
+-7883.4502 8574.123 L
+-7881.9502 8573.4551 -7865.2832 8572.123 V
+-7858.6167 8570.7891 -7849.6167 8570.7891 V
+-7784.3936 8571.4766 -7779.4912 8572.8848 v
+-7820.3882 8570.875 -7822.9688 8571.5117 v
+-7783.8569 8573.1602 -7780.8545 8574.4316 v
+-7818.79 8572.5469 -7822.167 8574.1777 v
+-7787.249 8575.9102 -7783.021 8577.5313 v
+-7789.7217 8576.8828 -7791.5127 8577.082 v
+-7788.3896 8577.5703 l
+-7793.4194 8577.502 l
+-7796.3218 8577.1289 l
+-7788.4521 8578.2422 -7787.9033 8578.8086 v
+-7784.3154 8578.1309 -7798.5186 8578.3848 v
+-7832.1177 8574.4551 -7882.2832 8583.623 V
+f
+/BBAccumRotation (5.805971) XT
+0 R
+0 0 0 0.5 K
+0.025 w
+-7883.9502 8573.123 m
+-7863.667 8571.2949 -7843.9727 8570.2207 v
+-7801.1514 8570.502 -7796.5737 8570.9004 v
+-7784.1631 8571.0313 -7776.7959 8572.0273 v
+S
+/BBAccumRotation (5.805971) XT
+0 0 0 1 K
+-7821.8369 8570.4082 m
+-7825.2959 8570.0273 -7851.2607 8570.2793 Y
+-7861.627 8570.1602 -7883.9502 8573.123 Y
+S
+/BBAccumRotation (5.805971) XT
+-7820.9873 8573.6641 m
+-7790.3608 8574.582 -7783.6606 8575.2324 v
+S
+/BBAccumRotation (5.805971) XT
+0 0 0 0.5 K
+-7829.6201 8578.2051 m
+-7794.3706 8579.6172 -7791.4058 8580.1406 v
+S
+/BBAccumRotation (5.805971) XT
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 10)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7884 8586 m
+-7833.8921 8586 L
+-7833.8921 8529.9756 L
+-7884 8529.9756 L
+-7884 8586 L
+n
+u
+0 O
+0.1 1 1 0 k
+-7846.9014 8551.5752 m
+-7848.7178 8545.0957 -7858.8247 8548.4658 Y
+-7858.791 8548.5303 L
+-7868.8999 8545.1611 -7870.7144 8551.6396 V
+-7876.6758 8569.0068 -7871.4922 8575.7451 V
+-7864.7529 8585.3369 -7860.6055 8585.3369 V
+-7857.0103 8585.2705 L
+-7852.8638 8585.2705 -7846.125 8575.6816 Y
+-7840.9409 8568.9424 -7846.9014 8551.5752 Y
+f
+u
+0 0 0 1 k
+-7851.3926 8529.9756 m
+-7852.1167 8531.4199 -7852.9238 8532.4756 V
+-7852.4058 8532.0635 -7851.5151 8531.1924 -7851.3926 8529.9756 C
+f
+-7865.064 8532.4854 m
+-7865.8711 8531.4307 -7866.5942 8529.9863 Y
+-7866.4727 8531.2021 -7865.582 8532.0732 -7865.064 8532.4854 C
+f
+U
+0 0.61 0.74 0 k
+-7850.5977 8554.4609 m
+-7851.9038 8549.7959 -7859.1816 8552.2217 Y
+-7859.1567 8552.2686 L
+-7866.436 8549.8428 -7867.7417 8554.5078 V
+-7872.0337 8567.0117 -7868.3018 8571.8633 V
+-7863.4487 8578.7686 -7860.4634 8578.7686 V
+-7857.875 8578.7227 L
+-7854.8887 8578.7227 -7850.0366 8571.8174 Y
+-7846.3042 8566.9639 -7850.5977 8554.4609 Y
+f
+u
+1 Ap
+0.73 0.43 1 0.22 k
+0 R
+0 0 0 1 K
+-7854.6226 8557.2754 m
+-7853.813 8557.2754 -7853.1558 8556.6182 -7853.1558 8555.8096 c
+-7853.1558 8555 -7853.813 8554.3428 -7854.6226 8554.3428 c
+-7855.4321 8554.3428 -7856.0889 8555 -7856.0889 8555.8096 c
+-7856.0889 8556.6182 -7855.4321 8557.2754 -7854.6226 8557.2754 c
+b
+-7854.3638 8568.9971 m
+-7853.0806 8568.9971 -7852.0415 8568.1201 -7852.0415 8567.042 c
+-7852.0415 8565.9619 -7853.0806 8565.0869 -7854.3638 8565.0869 c
+-7855.645 8565.0869 -7856.6846 8565.9619 -7856.6846 8567.042 c
+-7856.6846 8568.1201 -7855.645 8568.9971 -7854.3638 8568.9971 c
+b
+-7853.834 8580.7861 m
+-7852.2817 8580.7861 -7851.0239 8580.1299 -7851.0239 8579.3213 c
+-7851.0239 8578.5117 -7852.2817 8577.8545 -7853.834 8577.8545 c
+-7855.3862 8577.8545 -7856.645 8578.5117 -7856.645 8579.3213 c
+-7856.645 8580.1299 -7855.3862 8580.7861 -7853.834 8580.7861 c
+b
+-7849.6104 8552.5264 m
+-7848.8687 8552.5264 -7848.2671 8551.8154 -7848.2671 8550.9365 c
+-7848.2671 8550.0596 -7848.8687 8549.3477 -7849.6104 8549.3477 c
+-7850.353 8549.3477 -7850.9546 8550.0596 -7850.9546 8550.9365 c
+-7850.9546 8551.8154 -7850.353 8552.5264 -7849.6104 8552.5264 c
+b
+-7848.0034 8574.083 m
+-7848.8818 8573.7354 -7849.1494 8572.335 -7848.603 8570.9541 c
+-7848.0566 8569.5752 -7846.9014 8568.7363 -7846.0234 8569.085 c
+-7845.145 8569.4326 -7844.877 8570.833 -7845.4233 8572.2139 c
+-7845.9702 8573.5947 -7847.125 8574.4316 -7848.0034 8574.083 c
+b
+u
+-7863.0566 8557.1592 m
+-7863.8662 8557.1592 -7864.5239 8556.502 -7864.5239 8555.6934 c
+-7864.5239 8554.8828 -7863.8662 8554.2266 -7863.0566 8554.2266 c
+-7862.248 8554.2266 -7861.5913 8554.8828 -7861.5913 8555.6934 c
+-7861.5913 8556.502 -7862.248 8557.1592 -7863.0566 8557.1592 c
+b
+-7863.3159 8568.8799 m
+-7864.5991 8568.8799 -7865.6382 8568.0049 -7865.6382 8566.9248 c
+-7865.6382 8565.8447 -7864.5991 8564.9697 -7863.3159 8564.9697 c
+-7862.0342 8564.9697 -7860.9951 8565.8447 -7860.9951 8566.9248 c
+-7860.9951 8568.0049 -7862.0342 8568.8799 -7863.3159 8568.8799 c
+b
+-7863.8457 8580.6709 m
+-7865.3975 8580.6709 -7866.6558 8580.0146 -7866.6558 8579.2041 c
+-7866.6558 8578.3936 -7865.3975 8577.7383 -7863.8457 8577.7383 c
+-7862.293 8577.7383 -7861.0352 8578.3936 -7861.0352 8579.2041 c
+-7861.0352 8580.0146 -7862.293 8580.6709 -7863.8457 8580.6709 c
+b
+-7868.0679 8552.4092 m
+-7868.811 8552.4092 -7869.4121 8551.6982 -7869.4121 8550.8213 c
+-7869.4121 8549.9443 -7868.811 8549.2334 -7868.0679 8549.2334 c
+-7867.3262 8549.2334 -7866.7241 8549.9443 -7866.7241 8550.8213 c
+-7866.7241 8551.6982 -7867.3262 8552.4092 -7868.0679 8552.4092 c
+b
+-7869.6758 8573.9678 m
+-7868.7983 8573.6201 -7868.5298 8572.2188 -7869.0762 8570.8379 c
+-7869.6226 8569.457 -7870.7778 8568.6201 -7871.6558 8568.9678 c
+-7872.5342 8569.3164 -7872.8032 8570.7178 -7872.2568 8572.0967 c
+-7871.7104 8573.4775 -7870.5552 8574.3154 -7869.6758 8573.9678 c
+b
+U
+U
+0 Ap
+0 0 0 1 k
+-7859.1318 8552.6553 m
+-7859.1318 8585.3145 l
+F
+u
+-7843.3906 8538.5303 m
+-7844.0815 8537.8369 -7847.019 8538.7021 Y
+-7848.229 8538.874 -7848.0562 8541.2939 Y
+-7847.019 8543.3682 -7847.7104 8543.1943 Y
+-7848.2998 8543.1943 -7849.855 8543.1143 -7850.7822 8543.0635 C
+-7851.1226 8541.6689 -7852.6128 8540.4756 -7854.7217 8539.7695 C
+-7852.7578 8536.4775 -7854.5176 8535.7949 -7856.2935 8535.79 C
+-7856.3096 8535.7021 -7856.332 8535.6162 -7856.3599 8535.5332 C
+-7854.1089 8535.5791 -7853.6392 8533.2588 Y
+-7853.4048 8533.0635 -7853.1606 8532.7861 -7852.9238 8532.4756 C
+-7853.1416 8532.6475 -7853.2944 8532.7393 Y
+-7854.2583 8532.7393 -7855.8774 8534.4941 -7856.4966 8535.207 C
+-7856.9194 8534.4434 -7857.853 8533.9111 -7858.9434 8533.9111 c
+-7860.0698 8533.9111 -7861.0322 8534.4795 -7861.4312 8535.2852 C
+-7861.9985 8534.624 -7863.6968 8532.751 -7864.6943 8532.751 C
+-7864.8462 8532.6572 -7865.064 8532.4854 V
+-7864.8281 8532.7939 -7864.583 8533.0732 -7864.3481 8533.2686 C
+-7863.8638 8535.6563 -7861.5254 8535.5342 V
+-7861.5449 8535.5889 -7861.5674 8535.6436 -7861.5806 8535.7021 C
+-7864.9238 8535.6924 -7863.937 8538.3174 -7863.2104 8539.6602 C
+-7865.5918 8540.376 -7867.2646 8541.7012 -7867.5239 8543.25 C
+-7868.4473 8543.2998 -7869.6729 8543.3584 -7870.1802 8543.3584 C
+-7870.8726 8543.5313 -7869.835 8541.458 V
+-7869.6626 8539.0391 -7870.8726 8538.8662 V
+-7873.8096 8538.002 -7874.501 8538.6934 V
+-7875.1919 8539.5566 -7876.0562 8538.3467 V
+-7875.1919 8540.0752 -7873.291 8539.5566 V
+-7870.6982 8538.8662 -7871.3906 8540.5938 V
+-7871.9087 8544.0498 -7870.1802 8544.7402 V
+-7868.0342 8545.8545 -7866.2822 8546.0889 V
+-7865.9087 8546.4141 -7865.4639 8546.7109 -7864.958 8546.9766 C
+-7867.5562 8547.0469 -7870.2246 8547.9209 -7871.0752 8550.9561 C
+-7871.5151 8552.2432 -7872.0518 8554.2432 V
+-7873.1025 8554.8252 -7874.3022 8556.0078 -7875.541 8558.2627 C
+-7876.394 8561.4502 -7877.167 8556.7129 V
+-7878.3975 8553.6494 -7879.6504 8553.5381 V
+-7878.4702 8555.2871 -7878.9038 8556.416 V
+-7877.2998 8560.917 -7875.6138 8559.8994 V
+-7874.0986 8559.2197 -7872.688 8556.8154 V
+-7873.0698 8558.4971 -7873.4326 8560.417 -7873.6743 8562.3906 C
+-7874.4888 8562.3975 L
+-7876.3506 8561.4795 -7876.3262 8564.959 V
+-7877.1226 8568.9453 -7876.3594 8571.6826 V
+-7875.647 8574.1504 -7878.1274 8572.9307 V
+-7879.2842 8573.3242 -7879.9839 8572.7881 V
+-7882.3882 8571.4131 -7884 8573.124 V
+-7882.147 8572.8799 -7881.4482 8573.417 V
+-7879.9785 8573.5615 -7879.897 8574.1787 V
+-7876.9561 8574.8555 -7876.188 8574.0771 V
+-7874.417 8573.2139 -7875.1304 8570.3604 V
+-7875.8799 8562.4814 -7874.3198 8564.4053 V
+-7874.1182 8564.4219 -7873.8784 8564.5176 V
+-7874.1519 8568.4326 -7873.8018 8572.3252 -7871.9961 8574.8516 C
+-7875.4536 8567.333 -7870.2974 8552.3037 Y
+-7868.9609 8547.5303 -7863.127 8548.1016 -7860.145 8548.7344 C
+-7860.0718 8550.1299 -7859.8374 8551.9492 -7859.1318 8552.6553 C
+-7858.2134 8550.6963 -7858.2358 8549.0732 V
+-7857.0762 8548.7217 -7850.2817 8546.8447 -7847.4487 8550.3369 C
+-7848.4312 8547.8135 -7850.8262 8547.0186 -7853.2007 8546.9189 C
+-7852.667 8546.6318 -7852.2041 8546.3047 -7851.8257 8545.9502 C
+-7850.041 8545.7861 -7847.7104 8544.5771 Y
+-7845.9814 8543.8857 -7846.5015 8540.4307 Y
+-7847.1919 8538.7021 -7844.5991 8539.3936 Y
+-7842.7002 8539.9111 -7841.835 8538.1836 Y
+-7842.7002 8539.3936 -7843.3906 8538.5303 Y
+f
+-7837.9082 8572.9521 m
+-7838.6074 8573.4893 -7839.7632 8573.0938 Y
+-7842.2446 8574.3135 -7841.5327 8571.8467 Y
+-7840.769 8569.1104 -7841.564 8565.1221 Y
+-7841.541 8561.6445 -7843.4014 8562.5596 Y
+-7844.0342 8562.5557 L
+-7844.3198 8560.6123 -7844.7046 8558.7549 -7845.0898 8557.1699 C
+-7843.7129 8559.4199 -7842.2778 8560.0635 Y
+-7840.5913 8561.082 -7838.9878 8556.5791 Y
+-7839.4214 8555.4502 -7838.2417 8553.7021 Y
+-7839.4937 8553.8125 -7840.7246 8556.876 Y
+-7841.4976 8561.6152 -7842.3511 8558.4268 Y
+-7843.5776 8556.1904 -7844.769 8555.0098 -7845.814 8554.4229 C
+-7846.2026 8553.0635 -7846.4858 8552.2393 Y
+-7846.7002 8551.4727 -7847.0337 8550.8486 -7847.4487 8550.3369 C
+-7847.3799 8550.5127 -7847.3174 8550.6982 -7847.2632 8550.8916 C
+-7841.3022 8568.2588 -7846.4858 8574.9971 V
+-7853.2246 8584.5869 -7857.3721 8584.5869 V
+-7860.9663 8584.6514 L
+-7865.1138 8584.6514 -7871.853 8575.0615 Y
+-7871.9038 8574.9961 -7871.9463 8574.9219 -7871.9961 8574.8516 C
+-7871.7378 8575.4141 -7871.437 8575.9404 -7871.0752 8576.4092 C
+-7864.3359 8586 -7860.189 8586 V
+-7856.5942 8585.9346 L
+-7852.4482 8585.9346 -7845.709 8576.3447 Y
+-7843.5801 8573.5771 -7843.3306 8569.0176 -7843.7769 8564.6055 C
+-7843.6553 8564.5752 -7843.5698 8564.5684 Y
+-7842.0112 8562.6475 -7842.7598 8570.5244 Y
+-7843.4746 8573.3789 -7841.7026 8574.2402 Y
+-7840.9351 8575.0186 -7837.9946 8574.3428 Y
+-7837.9136 8573.7256 -7836.4434 8573.5811 Y
+-7835.7446 8573.0449 -7833.8921 8573.2881 Y
+-7835.5024 8571.5771 -7837.9082 8572.9521 Y
+f
+U
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 34)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7884.0254 8586.0264 m
+-7828.0542 8586.0264 L
+-7828.0542 8524.5342 L
+-7884.0254 8524.5342 L
+-7884.0254 8586.0264 L
+n
+u
+u
+0 O
+0.0745 0.9 0.9019 0.18 k
+0 R
+0 0 0 1 K
+1 J 1 j 0.0518 w
+-7857.5991 8562.7217 m
+-7857.3594 8573.5215 -7862.8794 8583.8398 v
+-7862.4009 8586 -7860.959 8586 v
+-7861.2002 8582.6406 -7860.2393 8582.1611 v
+-7855.9199 8570.1602 -7856.6382 8562.2402 v
+-7857.5991 8562.7217 l
+b
+-7857.5991 8562.7217 m
+-7859.2793 8568 -7871.0391 8569.2012 v
+-7875.3594 8569.6807 -7875.5991 8571.1211 v
+-7869.1206 8561.5195 -7868.1602 8561.7607 v
+-7881.3594 8556.001 -7884 8550.7197 v
+-7878.959 8553.6006 -7875.5991 8551.4404 v
+-7867.6802 8551.2012 -7862.6406 8553.3613 v
+-7858.8008 8555.2813 -7866.7202 8539.2012 v
+-7862.8794 8550.9609 -7859.2793 8524.5605 v
+-7858.3198 8529.8408 -7856.8799 8531.2813 v
+-7850.8799 8538.9609 -7851.8398 8541.1211 v
+-7852.3198 8544.9609 -7847.7598 8538.7207 v
+-7848 8548.3213 -7850.4009 8551.6807 v
+-7852.5591 8555.2813 -7846.5591 8553.1211 v
+-7840.5591 8551.2012 -7835.2793 8552.8809 v
+-7829.7598 8554.3203 -7828.0801 8551.4404 v
+-7839.8398 8563.9209 -7845.5991 8563.6807 v
+-7843.9194 8567.2813 l
+-7841.519 8572.0811 -7842 8573.2813 v
+-7857.2681 8563.8828 -7857.5991 8562.7217 v
+b
+-7857.5991 8562.7217 m
+-7854.959 8544.2402 -7857.5991 8536.5605 v
+-7859.998 8526.001 -7859.2793 8524.5605 v
+S
+-7856.1602 8551.4404 m
+-7850.1602 8546.6406 -7848.959 8541.3604 v
+S
+-7856.1602 8550.7197 m
+-7865.0391 8543.041 -7866.7202 8539.2012 v
+S
+-7828.0801 8551.4404 m
+-7829.2793 8553.6006 -7857.3594 8561.7607 y
+-7862.4009 8556.2422 -7873.9199 8553.8408 v
+-7881.5986 8552.8809 -7884 8550.7197 v
+S
+-7874.6382 8569.6807 m
+-7863.1191 8560.5615 -7857.3594 8561.7607 y
+-7843.1992 8568 -7842 8573.2813 v
+S
+U
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 36)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7883.8496 8585.9961 m
+-7833.96 8585.9961 L
+-7833.96 8534.9258 L
+-7883.8496 8534.9258 L
+-7883.8496 8585.9961 L
+n
+u
+0 O
+0.025 0.1 0.475 0 k
+-7862.1504 8553.9043 m
+-7864.4766 8552.8125 -7866.6914 8552.4434 -7868.373 8552.9238 c
+-7869.0518 8553.1172 -7869.645 8553.4473 -7870.123 8553.9238 c
+-7870.6006 8554.4023 -7870.9297 8554.9951 -7871.123 8555.6729 c
+-7872.0088 8558.7715 -7870.0103 8563.6777 -7865.9233 8567.7666 c
+-7861.834 8571.8535 -7856.9297 8573.8516 -7853.8286 8572.9668 c
+-7853.1519 8572.7715 -7852.5586 8572.4424 -7852.0806 8571.9658 c
+-7851.603 8571.4883 -7851.2754 8570.8955 -7851.082 8570.2168 c
+-7850.5176 8568.2461 -7851.1226 8565.5449 -7852.6855 8562.7891 c
+-7853.582 8561.21 -7854.791 8559.6133 -7856.2793 8558.123 c
+-7858.1504 8556.2539 -7860.1914 8554.8242 -7862.1504 8553.9043 c
+f
+u
+0.0035 0.014 0.0665 0 k
+-7861.2183 8552.9727 m
+-7863.8306 8552.0215 -7866.3975 8551.9688 -7868.373 8552.9238 C
+-7866.6914 8552.4434 -7864.4766 8552.8125 -7862.1504 8553.9043 c
+-7861.6191 8554.1543 -7861.0806 8554.4434 -7860.543 8554.7676 C
+-7858.8984 8554.0537 L
+-7859.667 8553.6172 -7860.4434 8553.2539 -7861.2183 8552.9727 c
+f
+0.015 0.06 0.285 0 k
+-7858.8984 8554.0537 m
+-7860.543 8554.7676 L
+-7859.0962 8555.6348 -7857.6426 8556.7607 -7856.2793 8558.123 c
+-7856.1538 8558.25 -7856.0327 8558.3779 -7855.9102 8558.5059 C
+-7855.2153 8556.8633 L
+-7856.3706 8555.7236 -7857.6191 8554.7813 -7858.8984 8554.0537 C
+f
+U
+u
+0.039 0.156 0.741 0 k
+-7849.687 8541.4043 m
+-7849.9746 8541.6914 -7861.2183 8552.9727 Y
+-7860.4434 8553.2539 -7859.667 8553.6172 -7858.8984 8554.0537 C
+-7845.4146 8540.5703 L
+-7847.061 8540.0996 -7848.6406 8540.3555 -7849.687 8541.4043 c
+f
+0.025 0.1 0.475 0 k
+-7845.4146 8540.5703 m
+-7858.8984 8554.0537 L
+-7857.584 8554.8027 -7856.2969 8555.7754 -7855.1143 8556.957 c
+-7855.084 8556.9863 -7855.0586 8557.0156 -7855.0278 8557.0449 C
+-7841.3408 8543.3574 L
+-7841.5264 8543.1328 -7841.7202 8542.9141 -7841.9302 8542.7012 c
+-7843.0103 8541.623 -7844.2305 8540.9082 -7845.4146 8540.5703 C
+f
+U
+u
+0.0115 0.046 0.2185 0 k
+-7835.9346 8550.3926 m
+-7833.5337 8547.9893 -7833.335 8544.0898 -7835.1382 8540.6973 C
+-7836.2954 8541.1182 L
+-7834.0938 8544.4961 -7833.8398 8548.2949 -7835.9346 8550.3926 c
+f
+0.015 0.06 0.285 0 k
+-7843.5337 8535.5957 m
+-7842.582 8534.9258 L
+-7845.2046 8534.3516 -7847.8306 8534.9141 -7849.6206 8536.7061 c
+-7848.1719 8535.2578 -7845.9082 8534.9307 -7843.5337 8535.5957 C
+f
+0.0295 0.118 0.5605 0 k
+-7843.5337 8535.5957 m
+-7845.9082 8534.9307 -7848.1719 8535.2578 -7849.6206 8536.7061 c
+-7851.019 8538.1055 -7851.3706 8540.2637 -7850.7954 8542.5469 C
+-7848.8672 8539.5449 -7845.4082 8540.5537 V
+-7843.585 8535.6309 L
+-7843.5337 8535.5957 L
+f
+*u
+0.048 0.192 0.912 0 k
+1 D
+-7835.9346 8550.3926 m
+-7837.2817 8551.7383 -7839.332 8552.1133 -7841.5234 8551.627 C
+-7851.6714 8561.7734 L
+-7851.7695 8561.5684 -7851.7695 8561.5684 -7851.6714 8561.7734 c
+-7850.2246 8564.8145 -7849.9702 8567.916 -7851.082 8570.2168 C
+-7850.5176 8568.2461 -7851.1226 8565.5449 -7852.6855 8562.7891 c
+-7853.5054 8561.3438 -7854.5918 8559.8848 -7855.9102 8558.5059 C
+-7855.2153 8556.8633 L
+-7855.1816 8556.8945 -7855.1465 8556.9238 -7855.1143 8556.957 c
+-7855.084 8556.9883 -7855.0566 8557.0176 -7855.0273 8557.0469 c
+-7855.0278 8557.0469 -7855.0278 8557.0469 -7855.0278 8557.0449 C
+-7841.3408 8543.3574 L
+-7836.3262 8541.1289 L
+-7836.2954 8541.1182 L
+-7834.0938 8544.4961 -7833.8398 8548.2949 -7835.9346 8550.3926 c
+f
+*U
+0.0215 0.086 0.4085 0 k
+0 D
+-7842.582 8534.9258 m
+-7843.5337 8535.5957 L
+-7841.6846 8536.1113 -7839.7656 8537.2285 -7838.1138 8538.8828 c
+-7837.4063 8539.5889 -7836.7998 8540.3418 -7836.2954 8541.1182 C
+-7835.1382 8540.6973 L
+-7835.6553 8539.7246 -7836.3374 8538.793 -7837.1802 8537.9512 c
+-7838.7695 8536.3594 -7840.6758 8535.3428 -7842.582 8534.9258 C
+f
+0.0205 0.082 0.3895 0 k
+-7836.2954 8541.1182 m
+-7836.7998 8540.3418 -7837.4063 8539.5889 -7838.1138 8538.8828 c
+-7839.7656 8537.2285 -7841.6846 8536.1113 -7843.5337 8535.5957 C
+-7843.585 8535.6309 L
+-7845.4082 8540.5537 L
+-7844.2114 8540.9219 -7842.9878 8541.6436 -7841.9302 8542.7012 c
+-7841.7202 8542.9141 -7841.5264 8543.1328 -7841.3408 8543.3574 C
+-7836.3262 8541.1289 L
+-7836.2954 8541.1182 L
+f
+U
+u
+0.445 0.356 0.267 0 k
+-7883.8496 8585.9961 m
+-7861.957 8562.9688 L
+-7862.2007 8562.6494 -7862.5752 8562.6133 -7862.8887 8562.6592 C
+-7867.1802 8567.2891 -7878.3145 8579.4561 -7882.7266 8584.2793 C
+-7883.5649 8585.3516 -7884 8585.9932 -7883.8496 8585.9961 C
+f
+0.15 0.12 0.09 0 k
+-7883.834 8585.9961 m
+-7882.6606 8585.7031 -7861.6934 8564.0029 Y
+-7861.6934 8563.502 -7861.7993 8563.1758 -7861.957 8562.9688 C
+-7883.8496 8585.9961 L
+-7883.8442 8585.9961 -7883.8418 8586 -7883.834 8585.9961 c
+f
+0.2 0.16 0.12 0 k
+-7882.7266 8584.2793 m
+-7878.3145 8579.4561 -7867.1802 8567.2891 -7862.8887 8562.6592 C
+-7863.2002 8562.7041 -7863.4526 8562.8301 Y
+-7864.603 8563.1328 -7878.5742 8578.9619 -7882.7266 8584.2793 C
+f
+U
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 37)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7882.9502 8585.2324 m
+-7833.0391 8585.2324 L
+-7833.0391 8521.1152 L
+-7882.9502 8521.1152 L
+-7882.9502 8585.2324 L
+n
+u
+0 O
+0 0 0 1 k
+0 R
+0 0 0 1 K
+0 w
+-7833.2358 8521.1152 m
+-7833.6064 8521.248 -7833.9858 8521.2832 -7834.3833 8521.2031 c
+-7834.4863 8521.168 l
+-7834.5254 8521.1602 -7834.5703 8521.1787 -7834.6025 8521.1992 c
+-7834.9434 8521.3926 l
+-7838.7129 8523.2959 -7842.0962 8525.8965 -7844.5 8529.4473 c
+-7845.9634 8531.5918 -7847.123 8533.8789 -7848.7993 8535.8564 c
+-7849.1729 8536.209 -7849.1758 8536.7725 -7848.834 8537.1309 c
+-7848.4951 8537.501 -7847.918 8537.5078 -7847.561 8537.165 c
+-7847.4038 8537.21 l
+-7847.2642 8537.1289 -7847.0742 8537.0703 -7847.0234 8536.957 c
+-7845.853 8534.2031 -7845.1895 8531.5137 -7843.4336 8529.1387 c
+-7841.1719 8526.0947 -7838.1777 8523.9941 -7835.0298 8522.0234 c
+-7834.3672 8521.6055 L
+-7834.4966 8521.6348 L
+-7833.7695 8521.6426 l
+-7833.791 8521.6113 -7833.8008 8521.5957 -7833.8223 8521.5645 C
+-7833.6064 8521.5234 -7833.377 8521.4746 -7833.1626 8521.4336 c
+-7833.0762 8521.4238 -7833.0186 8521.3389 -7833.0391 8521.2383 c
+-7833.0503 8521.1523 -7833.1382 8521.1084 -7833.2358 8521.1152 c
+-7833.2358 8521.1152 l
+b
+-7849.2222 8534.9951 m
+-7849.5742 8534.8066 -7849.9658 8534.6719 -7850.248 8534.3887 c
+-7856.4521 8528.1719 -7866.6802 8527.2734 -7874.0488 8533.6855 C
+-7874.1582 8533.7813 -7874.1582 8533.957 -7874.063 8534.0645 C
+-7871.0527 8532.9434 -7862.8838 8534.375 -7859.3223 8537.4121 C
+-7859.2534 8537.4668 -7859.1465 8537.4531 -7859.1055 8537.3711 C
+-7859.0503 8537.3047 -7859.0664 8537.1953 -7859.1328 8537.1563 C
+-7862.5625 8534.0859 -7867.0674 8532.29 -7871.6729 8532.748 C
+-7868.8535 8531.1855 -7865.6313 8530.4941 -7862.3984 8530.6885 c
+-7857.7144 8530.9717 -7853.4634 8533.1191 -7849.3711 8535.2793 c
+-7849.291 8535.3193 -7849.1978 8535.293 -7849.1553 8535.2109 C
+-7849.1016 8535.1309 -7849.1426 8535.0352 -7849.2222 8534.9951 c
+b
+-7858.647 8536.3359 m
+-7860.2266 8540.3613 -7862.3911 8544.3203 -7865.8018 8547.0762 c
+-7865.9648 8547.2119 -7865.9946 8547.4492 -7865.8711 8547.6055 c
+-7865.7344 8547.7676 -7865.5049 8547.7793 -7865.3481 8547.6563 c
+-7861.123 8545.5967 -7858.1904 8541.1309 -7858.1626 8536.4014 c
+-7858.1626 8536.4014 l
+-7858.1328 8536.2676 -7858.2354 8536.1348 -7858.3633 8536.1221 c
+-7858.5039 8536.1055 -7858.6318 8536.1973 -7858.647 8536.3359 c
+-7858.647 8536.3359 l
+b
+-7852.9414 8541.0176 m
+-7853.042 8541.1816 -7853.1152 8541.3838 -7853.2617 8541.4824 c
+-7856.0806 8543.3906 -7858.9785 8544.6309 -7861.8848 8546.1328 c
+-7862.0503 8546.209 -7862.1118 8546.418 -7862.0313 8546.5703 c
+-7861.9512 8546.7227 -7861.7559 8546.7793 -7861.5898 8546.7041 c
+-7858.439 8545.3232 -7854.313 8544.5 -7852.6729 8541.1797 c
+-7852.6289 8541.1113 -7852.6455 8541.0146 -7852.7266 8540.9648 c
+-7852.7959 8540.9199 -7852.897 8540.9492 -7852.9414 8541.0176 c
+-7852.9414 8541.0176 l
+b
+-7852.6602 8541.918 m
+-7852.4438 8542.4297 -7852.1431 8542.8896 -7852.0503 8543.4355 c
+-7851.2183 8548.2773 -7851.1152 8553.042 -7852.248 8557.6875 c
+-7852.248 8557.6875 l
+-7852.3418 8557.9531 -7852.2114 8558.2441 -7851.9438 8558.3389 c
+-7851.6777 8558.4336 -7851.3882 8558.3125 -7851.2935 8558.0479 c
+-7849.293 8552.8115 -7849.897 8546.7373 -7852.3711 8541.7832 c
+-7852.4063 8541.7002 -7852.498 8541.6689 -7852.582 8541.6914 c
+-7852.6641 8541.7275 -7852.6978 8541.835 -7852.6602 8541.918 c
+-7852.6602 8541.918 l
+b
+-7851.5352 8557.5938 m
+-7848.8984 8555.2275 -7846.6816 8552.252 -7845.853 8548.7363 c
+-7845.853 8548.7363 l
+-7845.7246 8548.1816 -7846.0742 8547.623 -7846.6416 8547.4902 c
+-7847.1992 8547.375 -7847.7578 8547.7246 -7847.8862 8548.2793 c
+-7848.5649 8551.5313 -7849.8711 8554.6729 -7851.7954 8557.3867 c
+-7851.7954 8557.3867 l
+-7851.8462 8557.4551 -7851.834 8557.5576 -7851.7695 8557.6201 c
+-7851.6992 8557.6699 -7851.5977 8557.6582 -7851.5352 8557.5938 c
+-7851.5352 8557.5938 l
+b
+-7836.3711 8550.1826 m
+-7837.7114 8545.8301 -7840.2598 8542.0693 -7843.689 8539.1533 C
+-7843.729 8539.0723 -7843.8242 8539.0322 -7843.9038 8539.0859 C
+-7843.9863 8539.127 -7844.0122 8539.2207 -7843.9722 8539.3018 C
+-7843.957 8539.7891 -7843.7144 8540.2334 -7843.4458 8540.5313 c
+-7838.4063 8546.1621 -7834.9902 8554.7197 -7837.3433 8561.9551 C
+-7837.0762 8556.4512 -7838.7241 8550.3008 -7842.1362 8545.6738 c
+-7843.1606 8544.2695 -7844.7422 8544.1211 -7846.3081 8544.2031 C
+-7846.4023 8544.1895 -7846.4834 8544.2432 -7846.4961 8544.3369 c
+-7846.5098 8544.4189 -7846.4551 8544.5137 -7846.3623 8544.5254 C
+-7843.1479 8545.7695 -7841.4878 8549.2246 -7840.084 8552.1943 c
+-7838.415 8555.7441 -7837.7017 8559.6387 -7838.0054 8563.5 C
+-7838.0454 8563.6777 -7838.1138 8565.3975 -7837.9775 8565.4102 C
+-7837.8306 8565.4395 -7837.709 8565.3438 -7837.6802 8565.1943 C
+-7837.645 8565.0449 -7834.6426 8555.7988 -7836.3711 8550.1826 c
+b
+-7844.4863 8537.4912 m
+-7843.3945 8533.6211 -7841.1094 8530.251 -7838.4824 8527.2383 c
+-7838.3306 8527.1045 -7838.3145 8526.8867 -7838.4502 8526.7354 c
+-7838.5752 8526.6006 -7838.8047 8526.582 -7838.957 8526.7178 c
+-7842.3306 8529.332 -7843.4487 8533.541 -7844.7954 8537.375 c
+-7844.7954 8537.375 l
+-7844.8262 8537.4648 -7844.7754 8537.5586 -7844.6982 8537.5869 c
+-7844.6094 8537.6191 -7844.5166 8537.5684 -7844.4863 8537.4912 c
+-7844.4863 8537.4912 l
+b
+-7838.5313 8562.1094 m
+-7838.5991 8562.0566 -7838.707 8562.083 -7838.748 8562.1504 C
+-7838.9634 8562.4746 -7840.6914 8564.5195 -7841.3926 8565.1406 c
+-7846.1719 8569.3945 -7849.5137 8573.9609 -7857.5391 8577.7227 c
+-7864.4512 8580.9639 -7867.1113 8583.5957 -7874.3862 8581.8262 c
+-7877.687 8581.0293 -7879.0313 8580.5313 -7880.4351 8575.4551 C
+-7881.9473 8569.2988 -7880.8672 8571.7832 -7881.084 8564.4385 c
+-7881.2222 8559.6973 -7884 8548.4551 -7871.5254 8534.2598 C
+-7871.4199 8534.1484 -7871.4336 8533.9961 -7871.5337 8533.9072 C
+-7871.6328 8533.8027 -7871.7959 8533.8164 -7871.8862 8533.916 C
+-7877.5786 8538.7168 -7881.0234 8545.6582 -7882.3145 8552.9424 c
+-7883.2871 8558.4668 -7882.9199 8563.25 -7882.666 8569.6367 c
+-7882.5688 8572.0938 -7883.6855 8579.0723 -7878.9102 8583.0625 c
+-7875.3926 8586 -7870.3911 8585.5469 -7866.3545 8584.1563 c
+-7860.6992 8582.2119 -7855.9727 8579.1465 -7850.8711 8575.6094 c
+-7847.2656 8573.125 -7839.2881 8563.2852 -7838.4785 8562.3262 C
+-7838.4351 8562.2588 -7838.4502 8562.1504 -7838.5313 8562.1094 C
+b
+-7873.0503 8549.3057 m
+-7872.168 8548.5029 -7871.7017 8549.8457 -7871.4297 8550.6016 c
+-7871.1626 8551.3574 -7870.189 8551.25 -7870.5127 8551.5732 c
+-7870.8369 8551.8975 -7870.8369 8551.9521 -7871.3232 8551.5195 c
+-7871.8086 8551.0879 -7871.8086 8551.7363 -7872.5649 8551.25 c
+-7873.3198 8550.7627 -7873.645 8549.8457 -7873.0503 8549.3057 c
+b
+-7865.6519 8553.9492 m
+-7865.3657 8553.5918 -7864.6802 8553.5723 -7864.4648 8553.8945 c
+-7864.25 8554.2197 -7863.3306 8554.2734 -7863.4937 8554.5967 c
+-7863.6543 8554.9219 -7863.6016 8555.1387 -7864.0874 8554.9219 c
+-7864.5737 8554.7051 -7864.4121 8555.2998 -7864.897 8555.084 c
+-7865.3833 8554.8672 -7865.8687 8554.2197 -7865.6519 8553.9492 c
+b
+-7857.6074 8559.0791 m
+-7857.1206 8558.7559 -7855.8794 8559.5117 -7856.4727 8559.5117 c
+-7857.0674 8559.5117 -7856.311 8560.2676 -7856.8521 8560.4834 c
+-7857.3906 8560.6992 -7857.2832 8560.4297 -7857.6074 8560.6445 c
+-7857.9297 8560.8613 -7858.3633 8561.2393 -7858.5239 8560.4297 c
+-7858.6855 8559.6191 -7858.3633 8559.6191 -7857.9849 8559.3496 c
+-7857.6074 8559.0791 -7857.6074 8559.0791 y
+b
+-7872.2402 8559.3496 m
+-7871.1074 8559.2422 -7871.8633 8559.998 -7871.269 8560.4834 c
+-7870.6738 8560.9697 -7869.918 8561.6172 -7870.729 8561.4004 c
+-7871.5391 8561.1855 -7872.9961 8561.6719 -7872.9434 8560.5381 c
+-7872.8887 8559.4033 -7872.6328 8559.3867 -7872.2402 8559.3496 c
+b
+-7866.5703 8567.6113 m
+-7866.1016 8567.3438 -7866.6802 8567.7197 -7866.0303 8567.6113 c
+-7865.3833 8567.5039 -7864.7886 8567.6113 -7865.2207 8567.8281 c
+-7865.6519 8568.0439 -7866.3008 8568.1523 -7866.4634 8567.9893 c
+-7866.625 8567.8281 -7866.9473 8567.8281 -7866.5703 8567.6113 c
+b
+-7857.0674 8567.1797 m
+-7857.4785 8566.1797 -7856.0962 8566.4238 -7855.4473 8566.7461 c
+-7854.7998 8567.0723 -7853.8262 8566.4775 -7854.4209 8566.9102 c
+-7855.0137 8567.3418 -7854.7998 8566.9102 -7855.3926 8567.2334 c
+-7855.9873 8567.5566 -7856.6895 8568.0977 -7857.0674 8567.1797 c
+b
+-7872.6738 8573.0664 m
+-7872.7222 8572.0752 -7871.8086 8572.957 -7871.269 8573.0117 c
+-7870.729 8573.0664 -7870.0801 8573.0664 -7870.2432 8573.2813 c
+-7870.4038 8573.498 -7870.459 8573.498 -7871.1626 8573.7129 c
+-7871.8633 8573.9297 -7872.6191 8574.1445 -7872.6738 8573.0664 c
+b
+-7873.1582 8567.6113 m
+-7874.0664 8567.9746 -7874.293 8567.8809 -7874.5625 8568.2051 c
+-7874.834 8568.5293 -7875.1558 8569.2314 -7875.5352 8568.0977 c
+-7875.9121 8566.9629 -7875.4282 8565.7764 -7875.0479 8565.9375 c
+-7874.6714 8566.0996 -7874.293 8566.7461 -7873.8618 8566.9629 c
+-7873.4297 8567.1797 -7872.6191 8567.3945 -7873.1582 8567.6113 c
+b
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 41)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7884 8586 m
+-7803 8586 L
+-7803 8481 L
+-7884 8481 L
+-7884 8586 L
+n
+u
+u
+u
+0 O
+0 0 0 1 k
+-7865.8057 8498.4258 m
+-7866.0742 8496.6621 -7867.1602 8495.291 -7868.5239 8495.3965 c
+-7869.8862 8495.502 -7870.707 8497.0234 -7870.7432 8498.8066 c
+-7870.748 8499.0693 -7870.6743 8500.2441 -7870.6304 8500.4775 C
+-7870.6382 8500.582 -7870.6191 8500.6738 -7870.6104 8500.7803 c
+-7870.5142 8502.0254 -7869.3574 8503.3604 -7867.9414 8503.25 c
+-7866.5249 8503.1406 -7865.4897 8501.8613 -7865.6367 8500.4727 c
+-7865.644 8500.4072 -7865.6958 8499.626 -7865.707 8499.5625 C
+-7865.6816 8499.2852 -7865.7598 8498.7256 -7865.8057 8498.4258 c
+f
+-7876.2646 8507.7334 m
+-7876.9946 8515.916 -7871.5015 8515.1191 v
+-7868.3682 8514.0186 -7869.4414 8511.1211 v
+-7869.6426 8509.752 -7871.7847 8508.498 v
+-7872.146 8508.25 -7872.7632 8507.1016 v
+-7873.1294 8505.5977 -7874.5186 8505.2979 v
+-7876.0762 8505.251 -7876.2646 8507.7334 v
+f
+-7850.7646 8516.4971 m
+F
+-7850.0762 8514.3408 m
+-7850.7847 8513.1934 -7853.8848 8513.6279 Y
+-7854.811 8513.6885 -7855.3799 8513.1113 Y
+-7857.8394 8509.0918 -7861.0386 8509.8857 -7861.4082 8509.9932 C
+-7861.4097 8509.9863 L
+-7864.999 8510.6045 -7865.2666 8515.6035 V
+-7865.4912 8516.3828 -7866.335 8516.7695 V
+-7869.2695 8517.8613 -7869.3481 8519.208 V
+-7869.8999 8521.1152 -7867.6006 8521.7422 V
+-7865.6792 8522.2568 -7863.7886 8519.8945 V
+-7862.6113 8518.6797 -7859.5762 8517.9395 V
+-7859.5728 8517.9531 L
+-7856.3594 8517.0459 -7854.6392 8517.5889 Y
+-7851.8521 8518.7676 -7850.4063 8517.4014 Y
+-7848.6826 8515.7559 -7850.0762 8514.3408 Y
+f
+-7863.9834 8497.8789 m
+-7864.5854 8496.2002 -7864.2822 8494.4775 -7863.0327 8493.9229 c
+-7861.7842 8493.3672 -7860.3384 8494.3164 -7859.4585 8495.8672 c
+-7859.3286 8496.0957 -7858.8359 8497.165 -7858.7632 8497.3906 C
+-7858.7065 8497.4785 -7858.6792 8497.5684 -7858.6362 8497.667 c
+-7858.1289 8498.8086 -7858.5122 8500.5303 -7859.8105 8501.1074 c
+-7861.1089 8501.6855 -7862.6279 8501.0527 -7863.1582 8499.7617 c
+-7863.1831 8499.7002 -7863.5078 8498.9883 -7863.5298 8498.9268 C
+-7863.6831 8498.6963 -7863.8809 8498.166 -7863.9834 8497.8789 c
+f
+-7849.7129 8500.9316 m
+-7845.1802 8507.7822 -7850.3911 8509.6943 v
+-7853.6714 8510.2168 -7854.103 8507.1572 v
+-7854.5786 8505.8564 -7853.29 8503.7354 v
+-7853.0903 8503.3447 -7853.0938 8502.04 v
+-7853.4858 8500.5449 -7852.4082 8499.6182 v
+-7851.0591 8498.8359 -7849.7129 8500.9316 v
+f
+U
+u
+-7824.7358 8550.1074 m
+-7824.3687 8548.3623 -7824.9048 8546.6963 -7826.2183 8546.3164 c
+-7827.5322 8545.9375 -7828.8345 8547.0752 -7829.4937 8548.7324 c
+-7829.5903 8548.9775 -7829.9326 8550.1025 -7829.9746 8550.3369 C
+-7830.0176 8550.4326 -7830.0322 8550.5244 -7830.0625 8550.6279 c
+-7830.4087 8551.8271 -7829.7935 8553.4805 -7828.4282 8553.875 c
+-7827.063 8554.2695 -7825.645 8553.4365 -7825.2969 8552.085 c
+-7825.2793 8552.0205 -7825.0552 8551.2705 -7825.0425 8551.207 C
+-7824.9214 8550.9551 -7824.7983 8550.4053 -7824.7358 8550.1074 c
+f
+-7838.2705 8554.6172 m
+-7841.8242 8562.0244 -7836.3999 8563.2061 v
+-7833.0801 8563.2754 -7833.0688 8560.1846 v
+-7832.7778 8558.8311 -7834.3433 8556.9072 v
+-7834.5942 8556.5459 -7834.7695 8555.2539 v
+-7834.5854 8553.7188 -7835.7793 8552.9492 v
+-7837.2222 8552.3594 -7838.2705 8554.6172 v
+f
+-7817.4648 8571.7695 m
+F
+-7816.063 8569.9912 m
+-7816.3247 8568.6689 -7819.3799 8567.9883 Y
+-7820.27 8567.7197 -7820.5986 8566.9795 Y
+-7821.4922 8562.3535 -7824.7666 8561.9746 -7825.1494 8561.9453 C
+-7825.1494 8561.9395 L
+-7828.7271 8561.2588 -7830.731 8565.8467 V
+-7831.2153 8566.4961 -7832.1416 8566.5625 V
+-7835.272 8566.5557 -7835.8169 8567.7891 V
+-7837.0039 8569.3809 -7835.0713 8570.7764 V
+-7833.4526 8571.9316 -7830.853 8570.3818 V
+-7829.3242 8569.6582 -7826.2222 8570.0293 V
+-7826.2231 8570.042 L
+-7822.896 8570.3213 -7821.4766 8571.4326 Y
+-7819.2793 8573.5146 -7817.4463 8572.7432 Y
+-7815.2554 8571.8057 -7816.063 8569.9912 Y
+f
+-7822.8374 8550.2354 m
+-7822.813 8548.4512 -7821.9258 8546.9453 -7820.5601 8546.8633 c
+-7819.1943 8546.7803 -7818.1743 8548.1768 -7817.895 8549.9385 c
+-7817.854 8550.1973 -7817.7666 8551.3711 -7817.7778 8551.6094 C
+-7817.7559 8551.7109 -7817.7617 8551.8037 -7817.7559 8551.9121 c
+-7817.6807 8553.1592 -7818.644 8554.6367 -7820.0625 8554.7217 c
+-7821.4814 8554.8066 -7822.6826 8553.6826 -7822.7246 8552.2871 c
+-7822.7271 8552.2217 -7822.7822 8551.4404 -7822.7798 8551.375 C
+-7822.8433 8551.1045 -7822.8423 8550.54 -7822.8374 8550.2354 c
+f
+-7811.0186 8557.5625 m
+-7809.1777 8565.5684 -7814.7271 8565.5303 v
+-7817.9834 8564.8691 -7817.3154 8561.8516 v
+-7817.3032 8560.4668 -7815.353 8558.9326 v
+-7815.0278 8558.6377 -7814.5742 8557.415 v
+-7814.417 8555.876 -7813.083 8555.3877 v
+-7811.5454 8555.1279 -7811.0186 8557.5625 v
+f
+U
+U
+1 Ap
+-7884 8586 m
+-7884 8481 L
+-7803 8481 L
+-7803 8586 L
+-7884 8586 L
+n
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 42)
+0 A
+u
+0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7857.4609 8559.085 m
+-7885 8559.085 L
+-7885 8586.624 L
+-7857.4609 8586.624 L
+-7857.4609 8559.085 L
+n
+0 O
+0 0.55 1 0.12 k
+-7871.7598 8577.3623 m
+-7871.7598 8587 L
+-7870.6343 8587 L
+-7870.6343 8577.3623 L
+-7871.7598 8577.3623 L
+f
+0 0.55 1 0.3 k
+-7875.4233 8572.876 m
+-7874.3096 8571.1553 -7870.8809 8569.457 -7866.4966 8569.457 c
+-7862.1152 8569.457 -7858.6138 8571.1064 -7857.5718 8572.874 C
+-7857.5718 8572.874 L
+-7858.6138 8574.6006 -7862.1152 8576.2979 -7866.4966 8576.2979 c
+-7870.875 8576.2979 -7874.3242 8574.5615 -7875.4233 8572.876 C
+f
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 45)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7885 8543.918 m
+-7885 8587 L
+-7798.2217 8587 L
+-7798.2217 8543.918 L
+-7885 8543.918 L
+n
+u
+u
+0 O
+0 0 0 1 k
+-7825.2217 8573.2363 m
+-7825.2217 8581.0742 L
+-7813.2217 8574.1445 L
+-7801.2217 8567.2168 L
+-7813.2217 8560.2891 L
+-7825.2217 8553.3613 L
+-7825.2217 8561.4824 L
+-7883.9351 8547.7168 L
+-7870.9878 8566.8027 L
+-7885 8587 L
+-7825.2217 8573.2363 L
+f
+0 1 1 0.1 k
+0 R
+0 0 0 1 K
+-7823.2217 8570.2363 m
+-7823.2217 8578.0742 L
+-7811.2217 8571.1445 L
+-7799.2217 8564.2168 L
+-7811.2217 8557.2891 L
+-7823.2217 8550.3613 L
+-7823.2217 8558.4824 L
+-7881.9351 8544.7168 L
+-7867.2754 8564.3594 L
+-7881.9351 8584 L
+-7823.2217 8570.2363 L
+b
+U
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 50)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7884 8586 m
+-7756.877 8586 L
+-7756.877 8538.415 L
+-7884 8538.415 L
+-7884 8586 L
+n
+u
+*u
+0 O
+0.9529 0.949 0.1961 0.0745 k
+-7857.793 8570.417 m
+-7857.8232 8570.2676 L
+-7859.9849 8564.3643 -7860.9438 8561.6377 -7861.2754 8560.2891 c
+-7861.3657 8560.2891 L
+-7861.6953 8561.6074 -7862.7754 8564.335 -7864.9673 8570.2676 c
+-7864.9966 8570.417 L
+-7857.793 8570.417 l
+f
+1 D
+-7868.1182 8578.9678 m
+-7869.6191 8582.5371 -7870.3994 8584.709 -7868.1182 8584.917 c
+-7868.1182 8585.9678 L
+-7870.6992 8585.9375 -7873.5806 8585.917 -7876.3418 8585.917 c
+-7880.0649 8585.917 -7882.5273 8585.9375 -7884 8585.9678 c
+-7884 8584.917 L
+-7882.1064 8584.709 -7881.0542 8582.5674 -7873.5513 8565.5029 c
+-7861.6953 8538.415 L
+-7859.8638 8538.415 L
+-7848.1582 8565.5029 L
+-7840.8047 8582.5078 -7839.7246 8584.709 -7837.8887 8584.917 c
+-7837.8887 8585.9678 L
+-7839.5142 8585.9375 -7841.916 8585.917 -7845.5767 8585.917 c
+-7848.5488 8585.917 -7851.6694 8585.9375 -7854.7026 8585.9678 c
+-7854.7026 8584.917 L
+-7852.481 8584.709 -7853.3218 8582.5078 -7854.7617 8578.9678 C
+-7868.1182 8578.9678 l
+f
+*U
+*u
+0 D
+-7813.0762 8554.0811 m
+-7813.0762 8550.4717 -7815.3535 8548.0947 -7819.1294 8548.0947 c
+-7820.2383 8548.0947 -7821.0767 8548.2158 -7821.5273 8548.2451 c
+-7821.5273 8560.5479 L
+-7820.8672 8560.6084 -7820.208 8560.6084 -7819.729 8560.6084 c
+-7818.2002 8560.6084 -7816.7026 8560.127 -7815.6841 8559.4053 c
+-7814.3945 8558.5332 -7813.0762 8556.7881 -7813.0762 8554.1416 C
+-7813.0762 8554.0811 l
+f
+1 D
+-7832.0806 8558.3926 m
+-7832.0806 8542.6445 -7832.0806 8540.4287 -7834.542 8540.2783 c
+-7834.542 8539.3184 L
+-7833.042 8539.2588 -7830.3174 8539.1992 -7827.5664 8539.1689 c
+-7825.6538 8539.1084 -7822.3945 8539.0186 -7820.1479 8538.9775 c
+-7816.582 8538.9775 -7813.585 8539.4258 -7811.0049 8540.2627 c
+-7806.353 8541.8477 -7801.9702 8545.8525 -7801.9702 8553.6602 c
+-7801.9702 8558.7432 -7804.4014 8562.3193 -7806.5034 8564.0605 c
+-7807.583 8565.0215 -7808.8135 8565.832 -7809.7744 8566.3125 c
+-7809.7744 8566.4629 L
+-7807.5234 8569.4912 -7805.6025 8572.0625 -7799.3906 8580.6426 c
+-7797.5 8583.0645 -7795.9102 8584.7383 -7794.7402 8584.9775 c
+-7794.7402 8586 L
+-7796.6602 8586 -7799 8585.8848 -7801.1294 8585.8848 c
+-7803.3511 8585.8848 -7804.8521 8586 -7806.4424 8586 c
+-7807.6729 8586 -7808.7241 8585.9404 -7809.5039 8585.2725 c
+-7813.0151 8579.8477 -7816.9121 8573.7559 -7820.1182 8568.7139 c
+-7820.5078 8568.7139 -7820.957 8568.7139 -7821.5273 8568.7139 c
+-7821.5273 8571.2852 L
+-7821.5273 8582.5264 -7821.437 8584.7686 -7819.1895 8584.9775 c
+-7819.1895 8585.9697 L
+-7820.6279 8585.9404 -7823.9194 8585.915 -7826.6992 8585.915 c
+-7829.9287 8585.915 -7832.8921 8585.9404 -7834.5122 8585.9697 c
+-7834.5122 8584.9775 L
+-7832.0518 8584.7686 -7832.0806 8582.5264 -7832.0806 8565.5918 C
+-7832.0806 8558.3926 l
+f
+*U
+*u
+0 D
+-7781.4561 8565.5928 m
+-7781.4561 8582.4941 -7781.4561 8584.6484 -7784.2832 8584.9775 C
+-7784.2832 8585.9697 l
+-7782.3887 8585.9404 -7779.0542 8585.915 -7775.7822 8585.915 c
+-7772.6294 8585.915 -7769.5688 8585.9404 -7767.2881 8585.9697 C
+-7767.2881 8584.9775 l
+-7770.2578 8584.9775 -7770.2881 8582.5244 -7770.2881 8565.5928 C
+-7770.2881 8548.1514 L
+-7762.8193 8548.1514 l
+-7759.999 8548.1514 -7758.5298 8548.96 -7757.8994 8551.2627 C
+-7756.9072 8551.2627 l
+-7756.9072 8546.4697 -7756.877 8542.415 -7756.877 8539.1709 c
+-7761.3486 8539.2012 -7766.748 8539.2314 -7772.0601 8539.2314 C
+-7779.7446 8539.2314 l
+-7784.5537 8539.2314 -7789.9966 8539.2012 -7794.9614 8539.1709 c
+-7794.9614 8542.3848 -7794.9326 8546.4697 -7794.9326 8551.2627 C
+-7793.9072 8551.2627 l
+-7793.3657 8549.1094 -7791.771 8548.1514 -7788.9438 8548.1514 C
+-7781.4561 8548.1514 l
+-7781.4561 8565.5928 L
+f
+*U
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 62)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7885 8587 m
+-7885 8548.7305 L
+-7846.7305 8548.7305 L
+-7846.7305 8587 L
+-7885 8587 L
+n
+0 O
+1 0.14 0.09 0 k
+-7846.7305 8569.9043 m
+-7846.7305 8561.3408 L
+-7885 8561.3408 L
+-7885 8569.9043 L
+-7846.7305 8569.9043 L
+f
+-7846.7305 8573.0967 m
+-7846.7305 8572.4229 L
+-7885 8572.4229 L
+-7885 8573.0967 L
+-7846.7305 8573.0967 L
+f
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 63)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7885 8587 m
+-7885 8548.7305 L
+-7846.7305 8548.7305 L
+-7846.7305 8587 L
+-7885 8587 L
+n
+0 O
+1 0.14 0.09 0 k
+-7846.7305 8565.8262 m
+-7846.7305 8574.3896 L
+-7859.3408 8574.3896 L
+-7859.3408 8587 L
+-7867.9038 8587 L
+-7867.9063 8565.8262 L
+-7867.9038 8565.8262 L
+-7867.9038 8565.8252 L
+-7846.7305 8565.8262 L
+f
+-7846.7305 8563.3076 m
+-7870.4233 8563.3076 L
+-7870.4233 8587 L
+-7871.0967 8587 L
+-7871.0977 8562.6328 L
+-7846.7305 8562.6328 L
+-7846.7305 8563.3076 L
+f
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 64)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7885 8586.999 m
+-7885 8548.7285 L
+-7846.7305 8548.7285 L
+-7846.7305 8586.999 L
+-7885 8586.999 L
+n
+0 O
+1 0.14 0.09 0 k
+-7846.7305 8561.3389 m
+-7872.3896 8561.3389 L
+-7872.3896 8586.999 L
+-7863.8262 8587 L
+-7863.8262 8569.9033 L
+-7846.7305 8569.9033 L
+-7846.7305 8561.3389 L
+f
+-7846.7305 8572.4219 m
+-7861.3081 8572.4219 L
+-7861.3081 8587 L
+-7860.6338 8587 L
+-7860.6338 8573.0957 L
+-7846.7305 8573.0957 L
+-7846.7305 8572.4219 L
+f
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 65)
+0 A
+u
+1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7857.0625 8559.4609 m
+-7884.6025 8559.4609 L
+-7884.6025 8587 L
+-7857.0625 8587 L
+-7857.0625 8559.4609 L
+n
+0 O
+0 0.55 1 0.12 k
+-7856.8418 8572.7002 m
+-7885 8572.7002 L
+-7885 8573.8252 L
+-7856.8418 8573.8252 L
+-7856.8418 8572.7002 L
+f
+u
+0 0.55 1 0.3 k
+-7883.9814 8560.5215 m
+-7884.4102 8562.5254 -7883.1865 8566.1514 -7880.0874 8569.251 c
+-7876.9878 8572.3496 -7873.3457 8573.6602 -7871.3594 8573.1455 C
+-7871.3594 8573.1455 L
+-7870.875 8571.1895 -7872.1519 8567.5117 -7875.25 8564.4141 c
+-7878.3457 8561.3184 -7882.0122 8560.1064 -7883.9814 8560.5215 C
+f
+0 0.39 0.7 0.12 k
+-7883.9814 8585.9912 m
+-7884.4102 8583.9883 -7883.1865 8580.3613 -7880.0874 8577.2617 c
+-7876.9878 8574.1641 -7873.3457 8572.8535 -7871.3594 8573.3672 C
+-7871.3594 8573.3672 L
+-7870.875 8575.3242 -7872.1519 8579.001 -7875.25 8582.0996 c
+-7878.3457 8585.1953 -7882.0122 8586.4063 -7883.9814 8585.9912 C
+f
+U
+u
+0 0.55 1 0.3 k
+-7870.1782 8585.9912 m
+-7870.6074 8583.9883 -7869.3838 8580.3613 -7866.2842 8577.2617 c
+-7863.1855 8574.1641 -7859.543 8572.8535 -7857.5576 8573.3672 C
+-7857.5566 8573.3672 L
+-7857.0718 8575.3242 -7858.3496 8579.001 -7861.4473 8582.0996 c
+-7864.543 8585.1953 -7868.209 8586.4063 -7870.1782 8585.9912 C
+f
+0 0.39 0.7 0.12 k
+-7870.1782 8560.5215 m
+-7870.6074 8562.5254 -7869.3838 8566.1514 -7866.2842 8569.251 c
+-7863.1855 8572.3496 -7859.543 8573.6602 -7857.5576 8573.1455 C
+-7857.5566 8573.1455 L
+-7857.0718 8571.1895 -7858.3496 8567.5117 -7861.4473 8564.4141 c
+-7864.543 8561.3184 -7868.209 8560.1064 -7870.1782 8560.5215 C
+f
+U
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 67)
+0 A
+u
+0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7857.4609 8559.085 m
+-7885 8559.085 L
+-7885 8586.624 L
+-7857.4609 8586.624 L
+-7857.4609 8559.085 L
+n
+0 O
+0 0.55 1 0.12 k
+-7871.7598 8577.3623 m
+-7871.7598 8587 L
+-7870.6343 8587 L
+-7870.6343 8577.3623 L
+-7871.7598 8577.3623 L
+f
+0 0.55 1 0.3 k
+-7875.4233 8572.876 m
+-7874.3096 8571.1553 -7870.8809 8569.457 -7866.4966 8569.457 c
+-7862.1152 8569.457 -7858.6138 8571.1064 -7857.5718 8572.874 C
+-7857.5718 8572.874 L
+-7858.6138 8574.6006 -7862.1152 8576.2979 -7866.4966 8576.2979 c
+-7870.875 8576.2979 -7874.3242 8574.5615 -7875.4233 8572.876 C
+f
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 69)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7857.4609 8559.4609 m
+-7885 8559.4609 L
+-7885 8587 L
+-7857.4609 8587 L
+-7857.4609 8559.4609 L
+n
+0 O
+0 0.55 1 0.3 k
+-7875.4233 8573.252 m
+-7874.3096 8571.5313 -7870.8809 8569.833 -7866.4966 8569.833 c
+-7862.1152 8569.833 -7858.6138 8571.4824 -7857.5718 8573.25 C
+-7857.5718 8573.25 L
+-7858.6138 8574.9766 -7862.1152 8576.6738 -7866.4966 8576.6738 c
+-7870.875 8576.6738 -7874.3242 8574.9375 -7875.4233 8573.252 C
+f
+U
+%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 83)
+0 A
+u
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+-7884 8585.9355 m
+-7670.4009 8585.9355 L
+-7670.4009 8578.1348 L
+-7884 8578.1348 L
+-7884 8585.9355 L
+n
+0 O
+0 0 0 1 k
+-7884 8582.0352 m
+-7873.9858 8584.5273 -7867.187 8585.875 -7855.2007 8585.9355 c
+-7842.2183 8586 -7777.2002 8585.9355 y
+-7712.1816 8586 -7699.2002 8585.9355 v
+-7687.2129 8585.875 -7680.415 8584.5273 -7670.4009 8582.0352 C
+-7680.415 8579.543 -7687.2129 8578.1953 -7699.2002 8578.1348 c
+-7712.1816 8578.0693 -7777.2002 8578.1348 y
+-7842.2183 8578.0693 -7855.2007 8578.1348 v
+-7867.187 8578.1953 -7873.9858 8579.543 -7884 8582.0352 C
+f
+U
+%AI8_EndBrushPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+4 Bn
+%AI5_BeginGradient: (Black, White)
+(Black, White) 0 2 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0 %_Br
+[
+0 0 50 100 %_BS
+%_0 0 50 100 Bs
+1 0 50 0 %_BS
+%_1 0 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Chrome)
+(Chrome) 0 6 Bd
+[
+0
+<
+464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B
+3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130
+3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625
+2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A
+1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F
+0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504
+04040403030302020202010101010000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A
+1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515
+15151515151414141414141414131313131313131312121212121212121211111111111111111010
+1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C
+0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707
+07060606060606060606050505050505050504040404040404040303030303030303030202020202
+02020201010101010101010000000000
+>
+1 %_Br
+0
+0.275
+1
+<
+6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544
+434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F
+>
+1 %_Br
+0
+<
+00000101010102020202030303040404040505050506060607070707080808090909090A0A0A0A0B
+0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101011111112121212131313141414141515151516
+161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021
+212122222222232323232424242525252526262626272727282828282929292A2A2A2A2B2B2B2B2C
+2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313132323233333333343434353535353636363637
+373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142
+42424343434344444444454545464646
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010
+1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121
+222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232
+32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243
+434444444545464647474748484949494A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354
+54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464
+6565666666676768686969696A6A6B6B
+>
+1 %_Br
+1
+0 %_Br
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141
+414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535
+35343434333333323232323131313030302F2F2F2E2E2E2E2D2D2D2C2C2C2B2B2B2B2A2A2A292929
+282828282727272626262525252524242423232322222222212121202020201F1F1F1E1E1E1D1D1D
+1D1C1C1C1B1B1B1A1A1A1A1919191818181717171616161615151514141413131313121212111111
+101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505
+04040404030303020202010101010000
+>
+0
+0
+1 %_Br
+[
+1 0 50 92 %_BS
+%_1 0 50 92 Bs
+0 0.275 1 0.12 1 50 59 %_BS
+%_0 0.275 1 0.12 1 50 59 Bs
+0 0.275 1 0.42 1 50 50 %_BS
+%_0 0.275 1 0.42 1 50 50 Bs
+1 0 50 49 %_BS
+%_1 0 50 49 Bs
+1 0 50 41 %_BS
+%_1 0 50 41 Bs
+1 0.3 0 0 1 50 0 %_BS
+%_1 0.3 0 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Rainbow)
+(Rainbow) 0 6 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+0
+1 %_Br
+1
+<
+0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E
+2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556
+5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E
+7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6
+A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE
+CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6
+F7F8F9FAFBFCFDFEFF
+>
+0
+0
+1 %_Br
+1
+<
+00000000000000000000000000000000000001010101010101010101010101010101010101010101
+01010101010101010101010101010202020202020202020202020202020202020202020202020202
+02020202020202020202030303030303030303030303030303030303030303030303030303030303
+03030303030304040404040404040404040404040404040404040404040404040404040404040404
+04040505050505050505050505050505050505050505050505050505050505050505050505050606
+06060606060606060606060606060606060606060606060606060606060606060607070707070707
+07070707070707070707070707070707
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0
+1 %_Br
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+1
+0
+1 %_Br
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+1 %_Br
+[
+0 1 0 0 1 50 100 %_BS
+%_0 1 0 0 1 50 100 Bs
+1 1 0 0 1 50 80 %_BS
+%_1 1 0 0 1 50 80 Bs
+1 0.0279 0 0 1 50 60 %_BS
+%_1 0.0279 0 0 1 50 60 Bs
+1 0 1 0 1 50 40 %_BS
+%_1 0 1 0 1 50 40 Bs
+0 0 1 0 1 50 20 %_BS
+%_0 0 1 0 1 50 20 Bs
+0 1 1 0 1 50 0 %_BS
+%_0 1 1 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Yellow & Orange Radial)
+(Yellow & Orange Radial) 1 2 Bd
+[
+0
+<
+0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122
+232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748
+494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F
+707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C
+>
+<
+FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9
+F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2
+F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB
+EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6
+>
+0
+1 %_Br
+[
+0 0 1 0 1 52 19 %_BS
+%_0 0 1 0 1 52 19 Bs
+0 0.55 0.9 0 1 50 100 %_BS
+%_0 0.55 0.9 0 1 50 100 Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+0 0 0 0 k
+(WHITE) Pc
+1 1 1 1 ([Registration]) 0 Xs
+([Registration]) Pc
+0 0 0 1 k
+(C=0 M=0 Y=0 K=100) Pc
+Bb
+2 (Black, White) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Black, White) Pc
+Bb
+2 (Chrome) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Chrome) Pc
+Bb
+2 (Rainbow) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Yellow & Orange Radial) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Yellow & Orange Radial) Pc
+(Brick) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Brick) Pc
+(Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Confetti) Pc
+(Leaves - Fall ) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Leaves - Fall ) Pc
+(Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Stripes) Pc
+0.91 0.01 0.93 0 (PANTONE 354 2X CVC) 0 x
+(PANTONE 354 2X CVC) Pc
+0 1 0.91 0 (PANTONE 485 CVC) 0 x
+(PANTONE 485 CVC) Pc
+0 0.51 1 0 (PANTONE 152 CVC) 0 x
+(PANTONE 152 CVC) Pc
+PB
+%AI5_EndPalette
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe Brush Manager Order)
+(Adobe Brush Manager Order)
+( Adobe Calligraphic Brush Tool/ 6 pt Flat / Adobe Calligraphic Brush T) -
+(ool/ 10 pt Oval/ Adobe Calligraphic Brush Tool/ 12 pt Oval / Adobe Cal) -
+(ligraphic Brush Tool/ 20 pt Oval/ Adobe Calligraphic Brush Tool/ 25 pt) -
+( Round / Adobe Calligraphic Brush Tool/ 50 pt Flat/ Adobe Scatter Brus) -
+(h Tool/ Dog Tracks/ Adobe Scatter Brush Tool/ Fall Leaf/ Adobe Scatter) -
+( Brush Tool/ Ladybug/ Adobe Scatter Brush Tool/ Push Pin/ Adobe Scatte) -
+(r Brush Tool/ Strawberry/ Adobe Scatter Brush Tool/ Twinkle Star / Ado) -
+(be ArtOnPath Brush Tool/ Marker/ Adobe ArtOnPath Brush Tool/ Tapered S) -
+(troke/ Adobe ArtOnPath Brush Tool/ Arrow/ Adobe ArtOnPath Brush Tool/ ) -
+(Paintbrush/ Adobe ArtOnPath Brush Tool/ Type/ Adobe PatternOnPath Brus) -
+(h Tool/ Double Lines/ Adobe PatternOnPath Brush Tool/ Laurel/ Adobe Pa) -
+(tternOnPath Brush Tool/ Rope /) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(6 pt Flat )
+(1 4 8 10 10 90 90 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(10 pt Oval)
+(1 1 19 15 15 130 130 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(12 pt Oval )
+(1 7 17 45 45 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(20 pt Oval)
+(1 20 20 20 100 40 80 0 2 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(25 pt Round )
+(1 10 40 100 100 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(50 pt Flat)
+(1 40 60 0 0 44 44 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Arrow)
+(1 / New Pattern 45/ / / / / 5 0.898039 0 0 /  2 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Marker)
+(1 / New Pattern 8/ / / / / 0 0 /  1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Paintbrush)
+(1 / New Pattern 5/ / / / / 1 0.5 0.85 1 0.45 /  0 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Tapered Stroke)
+(1 / New Pattern 83/ / / / / 1 0 0 0 1 /  1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Type)
+(1 / New Pattern 50/ / / / / 1 0.952941 0.94902 0.196078 0.0745098 /  1) -
+( 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Double Lines)
+(1 / New Pattern 62/ New Pattern 63/ New Pattern 64/ / / 1 1 0.14 0.09 ) -
+(0 /  1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Laurel)
+(1 / New Pattern 65/ New Pattern 42/ New Pattern 67/ / New Pattern 69/ ) -
+(1 0 0.55 1 0.3 /  1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Rope )
+(1 / New Pattern 1/ / / New Pattern 3/ New Pattern 6/ 5 0 0 0 /  1 0 1 ) -
+(0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Dog Tracks)
+(1 /New Pattern 41/ 1 0 0 0 1 / 0 1 1 0 1 1 0 0 0 0 -90 -90 0 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Fall Leaf)
+(1 /New Pattern 34/ 1 0.0745 0.9 0.9019 0.18 / 0 0.602793 1 1 0.1 1 1 -) -
+(1 1 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Ladybug)
+(1 /New Pattern 10/ 5 0.898039 0 0 / 0 1 1 0 0.803911 1.2 1 -1.55 1.55 ) -
+(1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Push Pin)
+(1 /New Pattern 36/ 1 0.025 0.1 0.475 0 / 0 1 1 0 0.401676 1 1 -1.06145) -
+( 1.06 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Strawberry)
+(1 /New Pattern 37/ 1 0 0 0 1 / 0 0.803911 1 1 0.803911 1 1 -0.5 0.5 1 ) -
+(-75 75.419 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Twinkle Star )
+(1 /New Pattern 2/ 0 1 / 1 0.5 1 1 0.25 1 1 -0.5 0.5 1 0 0 0 0 0) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_PluginGroupInfo
+(Adobe Path Blends) (Adobe Blends Plugin) (Live Blends)
+%AI8_PluginGroupInfo
+(Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (Art Brush Tool)
+%AI8_PluginGroupInfo
+(Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (Art Brush Tool)
+%AI8_PluginGroupInfo
+(Adobe Calligraphic Brush Tool) (Undo New Calligraphic Brush) (Calligraphic Brush Tool)
+%AI8_PluginGroupInfo
+(Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (Scatter Brush Tool)
+%AI5_End_NonPrinting--
+%%EndSetup
+%AI5_BeginLayer
+1 1 0 1 0 0 1 8 0 0 0 0 50 Lb
+(border) Ln
+0 A
+1 Ap
+0 R
+0 0 0 1 K
+800 Ar
+0 J 0 j 5.2327 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+390.7588 335.9102 m
+390.7588 333.4834 388.5283 331.5156 385.7754 331.5156 C
+220.209 331.5156 L
+217.457 331.5156 215.2256 333.4834 215.2256 335.9102 C
+215.2256 481.3916 L
+215.2256 483.8184 217.457 485.7856 220.209 485.7856 C
+385.7754 485.7856 L
+388.5283 485.7856 390.7588 483.8184 390.7588 481.3916 C
+390.7588 335.9102 L
+s
+LB
+%AI5_EndLayer--
+%AI5_BeginLayer
+1 1 0 1 0 0 1 20 102 102 0 0 50 Lb
+(tv) Ln
+0 A
+0 O
+0 0 0 1 k
+0 R
+0 0 0 1 K
+800 Ar
+0 J 0 j 3 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+377.3408 366.4893 m
+377.3408 363.1758 374.6543 360.4893 371.3408 360.4893 C
+234.6743 360.4893 L
+231.3608 360.4893 228.6743 363.1758 228.6743 366.4893 C
+228.6743 461.1563 L
+228.6743 464.4697 231.3608 467.1563 234.6743 467.1563 C
+371.3408 467.1563 L
+374.6543 467.1563 377.3408 464.4697 377.3408 461.1563 C
+377.3408 366.4893 L
+b
+0 0 0 0 k
+360.3711 382.1641 m
+360.3711 378.8506 357.6846 376.1641 354.3711 376.1641 C
+253.0381 376.1641 L
+249.7246 376.1641 247.0381 378.8506 247.0381 382.1641 C
+247.0381 444.1641 L
+247.0381 447.4775 249.7246 450.1641 253.0381 450.1641 C
+354.3711 450.1641 L
+357.6846 450.1641 360.3711 447.4775 360.3711 444.1641 C
+360.3711 382.1641 L
+b
+u
+0 Ap
+0 0 0 1 k
+1 w
+325.7354 369.5391 m
+322.2354 375.0391 318.2354 351.5391 342.2354 344.5391 c
+265.4619 344.5391 l
+289.4619 351.5391 285.4619 375.0391 281.9619 369.5391 c
+325.7354 369.5391 l
+b
+1 Ap
+1.0096 w
+342.9453 343.0273 m
+342.9453 342.1924 342.2539 341.5156 341.4043 341.5156 C
+266.0039 341.5156 L
+265.1523 341.5156 264.4639 342.1924 264.4639 343.0273 C
+264.4639 343.0273 L
+264.4639 343.8623 265.1523 344.5391 266.0039 344.5391 C
+341.4043 344.5391 L
+342.2539 344.5391 342.9453 343.8623 342.9453 343.0273 C
+342.9453 343.0273 L
+b
+U
+LB
+%AI5_EndLayer--
+%AI5_BeginLayer
+1 1 1 1 0 0 1 1 255 79 79 0 50 Lb
+(flames!) Ln
+0 A
+u
+0 Ap
+0 O
+0 0.51 1 0 (PANTONE 152 CVC) 0 x
+0 R
+0 0 0 1 K
+800 Ar
+0 J 0 j 3 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+268.1118 375.1055 m
+278.0723 371.9902 285.0166 362.1172 307.6953 356.7012 C
+328.5361 364.6758 339.9619 383.5098 345.8936 389.666 C
+343.8018 403.9888 340.0576 432.1499 332.6553 443.0522 C
+319.5771 453.9092 308.0566 485.27 318.7891 505.4521 C
+325.9775 515.9902 288.2168 468.6289 304.229 442.3589 C
+318.9365 416.1494 313.5049 417.688 311.5088 418.7856 C
+306.4565 424.1489 308.7578 428.8916 297.6426 440.9727 C
+282.4565 457.4297 280.1528 461.7734 296.6025 495.0522 C
+301.0166 499.0298 277.292 523.6685 275.7539 530.4106 C
+277.292 523.6685 293.3374 492.3101 277.8828 480.4922 C
+265.1763 462.8696 265.939 450.7354 264.7095 445.1323 C
+268.3765 438.5493 275.417 425.7495 278.5762 413.9326 C
+284.3765 406.5493 284.7471 391.6973 275.8027 404.2261 C
+273.8164 414.5488 252.376 431.5088 257.4292 460.0386 C
+269.9766 491.3496 240.8564 433.4292 244.603 410.4658 C
+256.2168 392.4688 270.3921 380.3086 268.1118 375.1055 C
+b
+0 1 0.91 0 (PANTONE 485 CVC) 0 x
+1 w
+263.0464 378.707 m
+271.0464 370.041 280.3799 358.707 303.0464 360.041 c
+325.7129 361.373 339.7129 382.041 341.7129 392.707 c
+343.7129 403.374 337.7129 432.708 327.0459 444.041 c
+316.3799 455.374 304.3794 488.041 313.7129 504.041 c
+323.0469 520.041 283.7129 470.707 299.7129 443.374 c
+315.7129 416.041 310.0547 417.644 306.7129 420.7075 c
+302.7129 424.374 305.1094 429.314 293.3799 442.041 c
+277.7129 459.041 275.3135 463.5659 292.3799 494.041 c
+297.0464 502.374 272.333 528.0396 y
+289.0469 495.3745 274.3799 480.041 v
+259.7129 464.7075 260.5073 452.0679 261.7129 446.041 c
+263.0464 439.374 270.3799 426.041 275.0464 416.041 c
+279.7129 406.041 280.0986 390.5684 272.3799 406.7075 c
+268.7129 414.374 246.3794 432.0405 254.7129 460.374 c
+264.7129 494.374 234.3799 434.041 242.3799 412.7075 c
+250.3799 391.373 263.0464 378.707 y
+b
+U
+LB
+%AI5_EndLayer--
+%AI5_BeginLayer
+1 1 0 1 0 0 1 2 79 255 79 0 50 Lb
+(text) Ln
+0 A
+1 To
+1 0 0 1 179.3335 327.2939 0 Tp
+0 Tv
+1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d
+%AI3_Note:
+0 D
+0 XR
+428.666 249.9619 m
+428.666 327.2939 L
+179.3335 327.2939 L
+179.3335 249.9619 L
+428.666 249.9619 L
+n
+TP
+14.3068 -43.125 Td
+2 Tr
+0 O
+0 0 0 1 k
+0 R
+0 1 0.91 0 (PANTONE 485 CVC) 0 X
+%_ 0 50 XQ
+/_Device 48 46.752 -7.1038 Tf
+0 Ts
+100 100 Tz
+0 Tt
+%_0 0 100 100 Xu
+%AI55J_GlyphSubst: GlyphSubstNone 
+1 TA
+%_ 0 XL
+0 TY
+0 TV
+36 0 Xb
+XB
+0 0 5 TC
+100 100 200 TW
+25 TG
+0 0 0 Ti
+1 Ta
+0 1 2 2 3 Th
+0 Tq
+240 Tg
+0 0 Tl
+0 Tc
+0 Tw
+(XSCREENSA) Tx 1 91 Tk
+(VER) Tx 1 0 Tk
+(\r) TX 
+TO
+LB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_shading_AI8 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_typography_AI5 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/utils/logo.gif b/utils/logo.gif
new file mode 100644 (file)
index 0000000..0e11e8c
Binary files /dev/null and b/utils/logo.gif differ
diff --git a/utils/logo.xpm b/utils/logo.xpm
new file mode 100644 (file)
index 0000000..3870d33
--- /dev/null
@@ -0,0 +1,86 @@
+/* XPM */
+static char * logo_xpm[] = {
+"50 50 33 1",
+"      c None",
+".     c #030204",
+"+     c #868586",
+"@     c #A20407",
+"#     c #4A494A",
+"$     c #530204",
+"%     c #AD4A31",
+"&     c #CF060F",
+"*     c #2C2C2B",
+"=     c #D0CECE",
+"-     c #4A3019",
+";     c #2B0505",
+">     c #8C2F04",
+",     c #FC020C",
+"'     c #6F0405",
+")     c #ADADAB",
+"!     c #B0160A",
+"~     c #EAEAE9",
+"{     c #676767",
+"]     c #A37274",
+"^     c #B99093",
+"/     c #AF3525",
+"(     c #703304",
+"_     c #575654",
+":     c #BDBDBB",
+"<     c #393839",
+"[     c #18181A",
+"}     c #939395",
+"|     c #FEFEFC",
+"1     c #777776",
+"2     c #501B07",
+"3     c #2E1707",
+"4     c #6E1E04",
+"                  ){                              ",
+"                  +.)                             ",
+"                  ~@[~                            ",
+"                   %@<                            ",
+"                   ^,$1                           ",
+"                   =&,;:   :+=                    ",
+"                   ~&,!<  =<[                     ",
+"                   ~&,&(= %;1                     ",
+"                   ~&,!-~:&[)                     ",
+"     =}}}}}}}}}}}}}1,,(<}/&({}}}}}}}}}}}}}}})     ",
+"    =[#############',!2#*&,(*###############*#    ",
+"    )*||||||||||||],,>{|],,()|||||||||||||||:[    ",
+"    )*|||||||||||),,!(=|!,,>1|||||||||||||||:[    ",
+"    )*||||||||===!,,/<~=,,,!#~||||||||||||||:[    ",
+"    )*||1.....$.$,,,%...,,,&3............*=|:[    ",
+"    )*||.....';.&,,,%..$,,,,4.............1|:[    ",
+"    )*||.....&..,,,,/..;,,,,!;............{|:[    ",
+"    )*||....;&.;,,,,&2.;,,,,,4............{|:[    ",
+"    )*||....@@(#,,,,,@.{&,,,,&3#1+++1#....{|:[    ",
+"    )*||....&&(),,,,,,'*/,,,,,!2:||||~....{|:[    ",
+"    )*||...;,&>}/,,,,,,'[&,,,,,><|||||[...{|:[    ",
+"    )*||...',,%_^,,,,,,,2$,,,,,&2:|||~[...{|:[    ",
+"    )*||...@,,!-=!,,,,,,&3&,,,,,@{|||~[...{|:[    ",
+"    )*||...@,,,>{^,,,,,,,4$,,,,,&*|||~[...{|:[    ",
+"    )*||...&,,,!-:!,,,,,,&;,,,,,,;=||~[...{|:[    ",
+"    )*||...@,,,,>-^,,,,,,,&,,,,,,')||~[...{|:[    ",
+"    )*||...',,,,,21&,,,,,,,,,,,,,@{||~[...{|:[    ",
+"    )*||...;,,,,,&[/,,,,,,,,,,,,,&#||~[...{|:[    ",
+"    )*||....@,,,,,'2,,,,,,,,,,,,,,[||~[...{|:[    ",
+"    )*||....;,,,,,&@,,,,,,,,,,,,,,;~|~[...{|:[    ",
+"    )*||....*/,,,,,,,,,,,,,,,,,,,,2=|~[...{|:[    ",
+"    )*||....<:&,,,,,,,,,,,,,,,,,,&()|~[...{|:[    ",
+"    )*||....<|],,,,,,,,,,,,,,,,,,@<~|~[...{|:[    ",
+"    )*||....*||%,,,,,,,,,,,,,,,,&[=||~....{|:[    ",
+"    )*||.....{1{',,,,,,,,,,,,,,,$<11+_....{|:[    ",
+"    )*||.........',,,,,,,,,,,,,$..........{|:[    ",
+"    )*||..........',,,,,,,,,,,$...........{|:[    ",
+"    )*||...........;@,,,,,,&@.............+|:[    ",
+"    )*||)#<<<<<<<<<<[.$$''>;..[<<<<<<<<<<{~|:[    ",
+"    )*|||||||||||||~*.........<|||||||||||||:[    ",
+"    )*|||||||||||||_...........{~|||||||||||:[    ",
+"    )*||||||||||~}[.............*}~|||||||||:[    ",
+"    )*||||||||||+*****************)|||||||||:[    ",
+"    )*||||||||||||||||||||||||||||||||||||||:[    ",
+"    =.{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{<#    ",
+"     :11111111111111111111111111111111111111+     ",
+"                                                  ",
+"                                                  ",
+"                                                  ",
+"                                                  "};
index c30eae69df562255db15b9745b9c9648809cd1da..7c6d3ec58be2cdf162d4768441a8a59206088c59 100644 (file)
@@ -1,2 +1,2 @@
 static const char screensaver_id[] =
-       "@(#)xscreensaver 3.27 (19-Jan-2001), by Jamie Zawinski (jwz@jwz.org)";
+       "@(#)xscreensaver 3.28 (23-Jan-2001), by Jamie Zawinski (jwz@jwz.org)";
index 0a52e160c2c76cc0fafab2680312249942f6279e..92fbc1a25a5dd3a2c9fc7a51207dfbd9d6b26554 100644 (file)
@@ -42,19 +42,20 @@ get_gl_visual (Screen *screen)
 # define B GLX_BLUE_SIZE
 # define D GLX_DEPTH_SIZE
 # define I GLX_BUFFER_SIZE
+# define DB GLX_DOUBLEBUFFER
 
   int attrs[][20] = {
-   { GLX_RGBA, R, 8, G, 8, B, 8, D, 8, GLX_DOUBLEBUFFER, 0 }, /* rgb double */
-   { GLX_RGBA, R, 4, G, 4, B, 4, D, 4, GLX_DOUBLEBUFFER, 0 },
-   { GLX_RGBA, R, 2, G, 2, B, 2, D, 2, GLX_DOUBLEBUFFER, 0 },
-   { GLX_RGBA, R, 8, G, 8, B, 8, D, 8,                   0 }, /* rgb single */
-   { GLX_RGBA, R, 4, G, 4, B, 4, D, 4,                   0 },
-   { GLX_RGBA, R, 2, G, 2, B, 2, D, 2,                   0 },
-   { I, 8,                       D, 8, GLX_DOUBLEBUFFER, 0 }, /* cmap double */
-   { I, 4,                       D, 4, GLX_DOUBLEBUFFER, 0 },
-   { I, 8,                       D, 8,                   0 }, /* cmap single */
-   { I, 4,                       D, 4,                   0 },
-   { GLX_RGBA, R, 1, G, 1, B, 1, D, 1,                   0 }  /* monochrome */
+    { GLX_RGBA, R, 8, G, 8, B, 8, D, 8, DB, 0 }, /* rgb double */
+    { GLX_RGBA, R, 4, G, 4, B, 4, D, 4, DB, 0 },
+    { GLX_RGBA, R, 2, G, 2, B, 2, D, 2, DB, 0 },
+    { GLX_RGBA, R, 8, G, 8, B, 8, D, 8,     0 }, /* rgb single */
+    { GLX_RGBA, R, 4, G, 4, B, 4, D, 4,     0 },
+    { GLX_RGBA, R, 2, G, 2, B, 2, D, 2,     0 },
+    { I, 8,                       D, 8, DB, 0 }, /* cmap double */
+    { I, 4,                       D, 4, DB, 0 },
+    { I, 8,                       D, 8,     0 }, /* cmap single */
+    { I, 4,                       D, 4,     0 },
+    { GLX_RGBA, R, 1, G, 1, B, 1, D, 1,     0 }  /* monochrome */
   };
 
   int i;
diff --git a/utils/xroger.c b/utils/xroger.c
deleted file mode 100644 (file)
index adbf3aa..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/* xscreensaver, Copyright (c) 1991-1998 Jamie Zawinski <jwz@jwz.org>
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation.  No representations are made about the suitability of this
- * software for any purpose.  It is provided "as is" without express or 
- * implied warranty.
- */
-
-#include "utils.h"
-
-static void
-crossbones (Display *dpy, Window window, GC draw_gc,
-           int x, int y, int w, int h)
-{
-  double xscale = w / 440.0;
-  double yscale = h / 216.0;
-  XPoint points [6];
-  points[0].x = x + xscale * 20;  points[0].y = y + yscale * 10;
-  points[1].x = x + xscale * 120; points[1].y = y + yscale * 10;
-  points[2].x = x + xscale * 243; points[2].y = y + yscale * 93;
-  points[3].x = x + xscale * 57;  points[3].y = y + yscale * 210;
-  points[4].x = x + xscale * 20;  points[4].y = y + yscale * 210;
-  points[5].x = x + xscale * 175; points[5].y = y + yscale * 113;
-  XFillPolygon (dpy, window, draw_gc, points, 6, Complex, CoordModeOrigin);
-  points[0].x = x + xscale * 202; points[0].y = y + yscale * 132;
-  points[1].x = x + xscale * 384; points[1].y = y + yscale * 10;
-  points[2].x = x + xscale * 420; points[2].y = y + yscale * 10;
-  points[3].x = x + xscale * 270; points[3].y = y + yscale * 113;
-  points[4].x = x + xscale * 420; points[4].y = y + yscale * 210;
-  points[5].x = x + xscale * 320; points[5].y = y + yscale * 210;
-  XFillPolygon (dpy, window, draw_gc, points, 6, Complex, CoordModeOrigin);
-}
-
-
-#include "spline.h"
-
-void
-skull (Display *dpy, Window window, GC draw_gc, GC erase_gc,
-       int x, int y, int w, int h)
-{
-  spline s;
-  float w100, h100;
-  XPoint points [20];
-  double sx[20], sy[20];
-  int i;
-
-  memset(&s, 0, sizeof(s));
-  s.control_x = sx;
-  s.control_y = sy;
-
-  y -= (w * 0.025);
-
-  crossbones (dpy, window, draw_gc, x, y+(h/2), w, (h / 3));
-
-  x += (w * 0.27);
-  y += (h * 0.25);
-  w *= 0.6;
-  h *= 0.6;
-
-  w100 = w / 100.0;
-  h100 = h / 100.0;
-
-  points[ 0].x = x + (0   * w100); points[ 0].y = y + (10 * h100);
-  points[ 1].x = x + (10  * w100); points[ 1].y = y + (0  * h100);
-  points[ 2].x = x + (90  * w100); points[ 2].y = y + (0  * h100);
-  points[ 3].x = x + (100 * w100); points[ 3].y = y + (10 * h100);
-  points[ 4].x = x + (100 * w100); points[ 4].y = y + (30 * h100);
-  points[ 5].x = x + (90  * w100); points[ 5].y = y + (40 * h100);
-  points[ 6].x = x + (70  * w100); points[ 6].y = y + (40 * h100);
-  points[ 7].x = x + (70  * w100); points[ 7].y = y + (50 * h100);
-  points[ 8].x = x + (30  * w100); points[ 8].y = y + (50 * h100);
-  points[ 9].x = x + (30  * w100); points[ 9].y = y + (40 * h100);
-  points[10].x = x + (10  * w100); points[10].y = y + (40 * h100);
-  points[11].x = x + (0   * w100); points[11].y = y + (30 * h100);
-
-  for (i = 0; i < 12; i++)
-    sx[i] = points[i].x, sy[i] = points[i].y;
-  s.n_controls = i;
-  s.allocated_points = i;
-  s.points = (XPoint *) calloc (i, sizeof (*s.points));
-  compute_closed_spline(&s);
-
-  XFillPolygon (dpy, window, draw_gc, points+6, 4, Complex, CoordModeOrigin);
-  XFillPolygon (dpy, window, draw_gc, s.points, s.n_points,
-               Complex, CoordModeOrigin);
-
-  points[0].x = x + (20  * w100); points[0].y = y + (18 * h100);
-  points[1].x = x + (25  * w100); points[1].y = y + (15 * h100);
-  points[2].x = x + (43  * w100); points[2].y = y + (15 * h100);
-  points[3].x = x + (45  * w100); points[3].y = y + (17 * h100);
-  points[4].x = x + (45  * w100); points[4].y = y + (25 * h100);
-  points[5].x = x + (40  * w100); points[5].y = y + (30 * h100);
-  points[6].x = x + (30  * w100); points[6].y = y + (30 * h100);
-  points[7].x = x + (20  * w100); points[7].y = y + (23 * h100);
-  for (i = 0; i < 8; i++)
-    sx[i] = points[i].x, sy[i] = points[i].y;
-  s.n_controls = i;
-  compute_closed_spline(&s);
-  XFillPolygon (dpy, window, erase_gc, s.points, s.n_points,
-               Complex, CoordModeOrigin);
-
-  points[0].x = x + (80  * w100); points[0].y = y + (18 * h100);
-  points[1].x = x + (75  * w100); points[1].y = y + (15 * h100);
-  points[2].x = x + (57  * w100); points[2].y = y + (15 * h100);
-  points[3].x = x + (55  * w100); points[3].y = y + (17 * h100);
-  points[4].x = x + (55  * w100); points[4].y = y + (25 * h100);
-  points[5].x = x + (60  * w100); points[5].y = y + (30 * h100);
-  points[6].x = x + (70  * w100); points[6].y = y + (30 * h100);
-  points[7].x = x + (80  * w100); points[7].y = y + (23 * h100);
-  for (i = 0; i < 8; i++)
-    sx[i] = points[i].x, sy[i] = points[i].y;
-  s.n_controls = i;
-  compute_closed_spline(&s);
-  XFillPolygon (dpy, window, erase_gc, s.points, s.n_points,
-               Complex, CoordModeOrigin);
-
-  points[ 0].x = x + (48  * w100); points[ 0].y = y + (30 * h100);
-  points[ 1].x = x + (52  * w100); points[ 1].y = y + (30 * h100);
-  points[ 2].x = x + (56  * w100); points[ 2].y = y + (42 * h100);
-  points[ 3].x = x + (52  * w100); points[ 3].y = y + (45 * h100);
-  points[ 4].x = x + (48  * w100); points[ 4].y = y + (45 * h100);
-  points[ 5].x = x + (44  * w100); points[ 5].y = y + (42 * h100);
-  for (i = 0; i < 6; i++)
-    sx[i] = points[i].x, sy[i] = points[i].y;
-  s.n_controls = i;
-  compute_closed_spline(&s);
-  XFillPolygon (dpy, window, erase_gc, s.points, s.n_points,
-               Complex, CoordModeOrigin);
-
-  free(s.points);
-}
index 957d8f1c7d2e9506a0087c43bef8dba1f551c4ce..ca5fe2bc7a2d51a2e7a4c48a366464e6e5afe5c5 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title:          xscreensaver
-Version:        3.27
-Entered-date:   19JAN01
+Version:        3.28
+Entered-date:   02FEB01
 Description:    A modular screen saver and locker for the X Window System.
                 Highly customizable: allows the use of any program that
                 can draw on the root window as a display mode.
@@ -10,16 +10,16 @@ Keywords:       screen saver, screen lock, lock, xlock, X11
 Author:         jwz@jwz.org (Jamie Zawinski)
 Maintained-by:  jwz@jwz.org (Jamie Zawinski)
 Primary-site:   http://www.jwz.org/xscreensaver/
-                1341K xscreensaver-3.27.tar.gz
-                44K  xscreensaver.README
+                1494K xscreensaver-3.28.tar.gz
+                45K  xscreensaver.README
                 1K   xscreensaver.lsm
 Alternate-site: sunsite.unc.edu /pub/Linux/X11/screensavers/
-                1341K xscreensaver-3.27.tar.gz
-                44K  xscreensaver.README
+                1494K xscreensaver-3.28.tar.gz
+                45K  xscreensaver.README
                 1K   xscreensaver.lsm
 Alternate-site: ftp.x.org /contrib/applications/
-                1341K xscreensaver-3.27.tar.gz
-                44K  xscreensaver.README
+                1494K xscreensaver-3.28.tar.gz
+                45K  xscreensaver.README
                 1K   xscreensaver.lsm
 Platforms:      Linux, Irix, SunOS, Solaris, HPUX, AIX, FreeBSD, NetBSD,
                 BSDI, SCO, OSF1, Ultrix, VMS.
index e36ff473c7a7c6b90fd0d657f7075cef85697335..91a55dbf8755187d94d91cb933ce011495758276 100644 (file)
@@ -1,5 +1,5 @@
 %define        name    xscreensaver
-%define        version 3.27
+%define        version 3.28
 %define        release 1
 %define        serial  1
 %define        prefix  /usr/X11R6
@@ -146,6 +146,7 @@ if [ -d $RPM_BUILD_ROOT-gl ]; then rm -r $RPM_BUILD_ROOT-gl ; fi
 %config(missingok)  /usr/bin/*.kss
 %config(missingok)  /usr/share/control-center/Desktop/screensaver-properties.desktop
 %config(missingok)  /usr/share/gnome/apps/Settings/Desktop/screensaver-properties.desktop
+%config(missingok)  /usr/share/pixmaps/*
 
 # Files for the "xscreensaver-gl" package:
 #