ftp://ftp.sunet.se/pub/vendor/sco/skunkware/osr5/x11/savers/xscreensaver/xscreensaver...
authorZygo Blaxell <zblaxell@hungrycats.org>
Mon, 2 Mar 2009 05:42:35 +0000 (00:42 -0500)
committerZygo Blaxell <zblaxell@hungrycats.org>
Mon, 2 Mar 2009 05:42:35 +0000 (00:42 -0500)
-rw-r--r-- 1 zblaxell zblaxell 2851086 Feb 27 16:43 xscreensaver-3.15-dist.tar.gz
9154ee3f0f70ba8e83ef29c136c07f453d505574  xscreensaver-3.15-dist.tar.gz

658 files changed:
INSTALL [deleted file]
Makefile.in [deleted file]
README [deleted file]
README.VMS [deleted file]
README.debugging [deleted file]
config.guess [deleted file]
config.h-vms [deleted file]
config.h.in [deleted file]
config.sub [deleted file]
configure [deleted file]
configure.in [deleted file]
driver/.gdbinit [deleted file]
driver/Makefile.in [deleted file]
driver/README [deleted file]
driver/XScreenSaver.ad.in [deleted file]
driver/XScreenSaver_ad.h [deleted file]
driver/compile_axp.com [deleted file]
driver/compile_decc.com [deleted file]
driver/demo.c [deleted file]
driver/dialogs-Xaw.c [deleted file]
driver/dialogs-Xm.c [deleted file]
driver/link_axp.com [deleted file]
driver/link_decc.com [deleted file]
driver/lock.c [deleted file]
driver/passwd-kerberos.c [deleted file]
driver/passwd-pam.c [deleted file]
driver/passwd-pwent.c [deleted file]
driver/passwd.c [deleted file]
driver/prefs.c [deleted file]
driver/prefs.h [deleted file]
driver/remote.c [deleted file]
driver/remote.h [deleted file]
driver/setuid.c [deleted file]
driver/splash.c [deleted file]
driver/stderr.c [deleted file]
driver/subprocs.c [deleted file]
driver/test-grab.c [deleted file]
driver/test-passwd.c [deleted file]
driver/test-uid.c [deleted file]
driver/test-xdpms.c [deleted file]
driver/timers.c [deleted file]
driver/vms-getpwnam.c [deleted file]
driver/vms-hpwd.c [deleted file]
driver/vms-pwd.h [deleted file]
driver/vms-validate.c [deleted file]
driver/vms_axp.opt [deleted file]
driver/vms_axp_12.opt [deleted file]
driver/vms_decc.opt [deleted file]
driver/vms_decc_12.opt [deleted file]
driver/windows.c [deleted file]
driver/xscreensaver-command.c [deleted file]
driver/xscreensaver-command.man [deleted file]
driver/xscreensaver-demo.man [deleted file]
driver/xscreensaver.c [deleted file]
driver/xscreensaver.h [deleted file]
driver/xscreensaver.man [deleted file]
driver/xscreensaver.pam [deleted file]
driver/xset.c [deleted file]
hacks/.gdbinit [deleted file]
hacks/Makefile.in [deleted file]
hacks/README [deleted file]
hacks/ant.c [deleted file]
hacks/attraction.c [deleted file]
hacks/attraction.man [deleted file]
hacks/automata.h [deleted file]
hacks/blitspin.c [deleted file]
hacks/blitspin.man [deleted file]
hacks/bouboule.c [deleted file]
hacks/bouboule.man [deleted file]
hacks/braid.c [deleted file]
hacks/braid.man [deleted file]
hacks/bsod.c [deleted file]
hacks/bsod.man [deleted file]
hacks/bubbles-default.c [deleted file]
hacks/bubbles.c [deleted file]
hacks/bubbles.h [deleted file]
hacks/bubbles.man [deleted file]
hacks/compass.c [deleted file]
hacks/compile_axp.com [deleted file]
hacks/compile_decc.com [deleted file]
hacks/coral.c [deleted file]
hacks/critical.c [deleted file]
hacks/critical.man [deleted file]
hacks/crystal.c [deleted file]
hacks/cynosure.c [deleted file]
hacks/decayscreen.c [deleted file]
hacks/decayscreen.man [deleted file]
hacks/deco.c [deleted file]
hacks/deco.man [deleted file]
hacks/deluxe.c [deleted file]
hacks/demon.c [deleted file]
hacks/discrete.c [deleted file]
hacks/distort.c [deleted file]
hacks/drift.c [deleted file]
hacks/drift.man [deleted file]
hacks/epicycle.c [deleted file]
hacks/epicycle.man [deleted file]
hacks/fadeplot.c [deleted file]
hacks/flag.c [deleted file]
hacks/flag.man [deleted file]
hacks/flame.c [deleted file]
hacks/flame.man [deleted file]
hacks/flow.c [deleted file]
hacks/forest.c [deleted file]
hacks/forest.man [deleted file]
hacks/galaxy.c [deleted file]
hacks/galaxy.man [deleted file]
hacks/glx/Makefile.in [deleted file]
hacks/glx/README [deleted file]
hacks/glx/atlantis.c [deleted file]
hacks/glx/atlantis.h [deleted file]
hacks/glx/b_draw.c [deleted file]
hacks/glx/b_lockglue.c [deleted file]
hacks/glx/b_sphere.c [deleted file]
hacks/glx/bubble3d.c [deleted file]
hacks/glx/bubble3d.h [deleted file]
hacks/glx/buildlwo.c [deleted file]
hacks/glx/buildlwo.h [deleted file]
hacks/glx/cage.c [deleted file]
hacks/glx/dolphin.c [deleted file]
hacks/glx/e_textures.h [deleted file]
hacks/glx/gears.c [deleted file]
hacks/glx/glplanet.c [deleted file]
hacks/glx/lament.c [deleted file]
hacks/glx/lament.man [deleted file]
hacks/glx/moebius.c [deleted file]
hacks/glx/morph3d.c [deleted file]
hacks/glx/pipeobjs.c [deleted file]
hacks/glx/pipes.c [deleted file]
hacks/glx/pulsar.c [deleted file]
hacks/glx/rubik.c [deleted file]
hacks/glx/s1_1.c [deleted file]
hacks/glx/s1_2.c [deleted file]
hacks/glx/s1_3.c [deleted file]
hacks/glx/s1_4.c [deleted file]
hacks/glx/s1_5.c [deleted file]
hacks/glx/s1_6.c [deleted file]
hacks/glx/s1_b.c [deleted file]
hacks/glx/shark.c [deleted file]
hacks/glx/sproingies.c [deleted file]
hacks/glx/sproingiewrap.c [deleted file]
hacks/glx/stairs.c [deleted file]
hacks/glx/superquadrics.c [deleted file]
hacks/glx/swim.c [deleted file]
hacks/glx/whale.c [deleted file]
hacks/glx/xlock-gl.c [deleted file]
hacks/glx/xpm-ximage.c [deleted file]
hacks/glx/xpm-ximage.h [deleted file]
hacks/goop.c [deleted file]
hacks/goop.man [deleted file]
hacks/grav.c [deleted file]
hacks/grav.man [deleted file]
hacks/greynetic.c [deleted file]
hacks/greynetic.man [deleted file]
hacks/halo.c [deleted file]
hacks/halo.man [deleted file]
hacks/helix.c [deleted file]
hacks/helix.man [deleted file]
hacks/hopalong.c [deleted file]
hacks/hopalong.man [deleted file]
hacks/hypercube.c [deleted file]
hacks/hypercube.man [deleted file]
hacks/ifs.c [deleted file]
hacks/ifs.man [deleted file]
hacks/images/amiga.xpm [deleted file]
hacks/images/atari.xbm [deleted file]
hacks/images/bob.xbm [deleted file]
hacks/images/bubbles/blood.pov [deleted file]
hacks/images/bubbles/blood1.xpm [deleted file]
hacks/images/bubbles/blood10.xpm [deleted file]
hacks/images/bubbles/blood11.xpm [deleted file]
hacks/images/bubbles/blood2.xpm [deleted file]
hacks/images/bubbles/blood3.xpm [deleted file]
hacks/images/bubbles/blood4.xpm [deleted file]
hacks/images/bubbles/blood5.xpm [deleted file]
hacks/images/bubbles/blood6.xpm [deleted file]
hacks/images/bubbles/blood7.xpm [deleted file]
hacks/images/bubbles/blood8.xpm [deleted file]
hacks/images/bubbles/blood9.xpm [deleted file]
hacks/images/bubbles/blue.pov [deleted file]
hacks/images/bubbles/blue1.xpm [deleted file]
hacks/images/bubbles/blue10.xpm [deleted file]
hacks/images/bubbles/blue11.xpm [deleted file]
hacks/images/bubbles/blue2.xpm [deleted file]
hacks/images/bubbles/blue3.xpm [deleted file]
hacks/images/bubbles/blue4.xpm [deleted file]
hacks/images/bubbles/blue5.xpm [deleted file]
hacks/images/bubbles/blue6.xpm [deleted file]
hacks/images/bubbles/blue7.xpm [deleted file]
hacks/images/bubbles/blue8.xpm [deleted file]
hacks/images/bubbles/blue9.xpm [deleted file]
hacks/images/bubbles/glass.pov [deleted file]
hacks/images/bubbles/glass1.xpm [deleted file]
hacks/images/bubbles/glass10.xpm [deleted file]
hacks/images/bubbles/glass11.xpm [deleted file]
hacks/images/bubbles/glass2.xpm [deleted file]
hacks/images/bubbles/glass3.xpm [deleted file]
hacks/images/bubbles/glass4.xpm [deleted file]
hacks/images/bubbles/glass5.xpm [deleted file]
hacks/images/bubbles/glass6.xpm [deleted file]
hacks/images/bubbles/glass7.xpm [deleted file]
hacks/images/bubbles/glass8.xpm [deleted file]
hacks/images/bubbles/glass9.xpm [deleted file]
hacks/images/bubbles/jade.pov [deleted file]
hacks/images/bubbles/jade1.xpm [deleted file]
hacks/images/bubbles/jade10.xpm [deleted file]
hacks/images/bubbles/jade11.xpm [deleted file]
hacks/images/bubbles/jade2.xpm [deleted file]
hacks/images/bubbles/jade3.xpm [deleted file]
hacks/images/bubbles/jade4.xpm [deleted file]
hacks/images/bubbles/jade5.xpm [deleted file]
hacks/images/bubbles/jade6.xpm [deleted file]
hacks/images/bubbles/jade7.xpm [deleted file]
hacks/images/bubbles/jade8.xpm [deleted file]
hacks/images/bubbles/jade9.xpm [deleted file]
hacks/images/earth.xbm [deleted file]
hacks/images/jigsaw/jigsaw.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_e_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_e_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_n_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_n_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_ne_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_ne_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_nw_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_nw_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_s_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_s_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_se_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_se_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_sw_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_sw_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_w_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_a_w_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_e_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_e_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_n_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_n_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_ne_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_ne_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_nw_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_nw_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_s_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_s_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_se_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_se_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_sw_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_sw_h.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_w_f.xbm [deleted file]
hacks/images/jigsaw/jigsaw_b_w_h.xbm [deleted file]
hacks/images/lament.xpm [deleted file]
hacks/images/mac.xbm [deleted file]
hacks/images/matrix.xbm [deleted file]
hacks/images/matrix.xpm [deleted file]
hacks/images/noseguy/nose-f1.xbm [deleted file]
hacks/images/noseguy/nose-f1.xpm [deleted file]
hacks/images/noseguy/nose-f2.xbm [deleted file]
hacks/images/noseguy/nose-f2.xpm [deleted file]
hacks/images/noseguy/nose-f3.xbm [deleted file]
hacks/images/noseguy/nose-f3.xpm [deleted file]
hacks/images/noseguy/nose-f4.xbm [deleted file]
hacks/images/noseguy/nose-f4.xpm [deleted file]
hacks/images/noseguy/nose-l1.xbm [deleted file]
hacks/images/noseguy/nose-l1.xpm [deleted file]
hacks/images/noseguy/nose-l2.xbm [deleted file]
hacks/images/noseguy/nose-l2.xpm [deleted file]
hacks/images/noseguy/nose-r1.xbm [deleted file]
hacks/images/noseguy/nose-r1.xpm [deleted file]
hacks/images/noseguy/nose-r2.xbm [deleted file]
hacks/images/noseguy/nose-r2.xpm [deleted file]
hacks/images/som.xbm [deleted file]
hacks/imsmap.c [deleted file]
hacks/imsmap.man [deleted file]
hacks/interference.c [deleted file]
hacks/jigsaw.c [deleted file]
hacks/jigsaw.man [deleted file]
hacks/julia.c [deleted file]
hacks/julia.man [deleted file]
hacks/kaleidescope.c [deleted file]
hacks/kaleidescope.man [deleted file]
hacks/kumppa.c [deleted file]
hacks/laser.c [deleted file]
hacks/laser.man [deleted file]
hacks/lightning.c [deleted file]
hacks/lightning.man [deleted file]
hacks/link_axp.com [deleted file]
hacks/link_decc.com [deleted file]
hacks/lisa.c [deleted file]
hacks/lisa.man [deleted file]
hacks/lissie.c [deleted file]
hacks/lmorph.c [deleted file]
hacks/lmorph.man [deleted file]
hacks/loop.c [deleted file]
hacks/maze.c [deleted file]
hacks/maze.man [deleted file]
hacks/moire.c [deleted file]
hacks/moire.man [deleted file]
hacks/moire2.c [deleted file]
hacks/mountain.c [deleted file]
hacks/munch.c [deleted file]
hacks/munch.man [deleted file]
hacks/noseguy.c [deleted file]
hacks/noseguy.man [deleted file]
hacks/pedal.c [deleted file]
hacks/pedal.man [deleted file]
hacks/penetrate.c [deleted file]
hacks/penrose.c [deleted file]
hacks/penrose.man [deleted file]
hacks/phosphor.c [deleted file]
hacks/pyro.c [deleted file]
hacks/pyro.man [deleted file]
hacks/qix.c [deleted file]
hacks/qix.man [deleted file]
hacks/rd-bomb.c [deleted file]
hacks/rd-bomb.man [deleted file]
hacks/rocks.c [deleted file]
hacks/rocks.man [deleted file]
hacks/rorschach.c [deleted file]
hacks/rorschach.man [deleted file]
hacks/rotor.c [deleted file]
hacks/screenhack.c [deleted file]
hacks/screenhack.h [deleted file]
hacks/sierpinski.c [deleted file]
hacks/sierpinski.man [deleted file]
hacks/slidescreen.c [deleted file]
hacks/slidescreen.man [deleted file]
hacks/slip.c [deleted file]
hacks/slip.man [deleted file]
hacks/sonar.c [deleted file]
hacks/sonar.man [deleted file]
hacks/sphere.c [deleted file]
hacks/sphere.man [deleted file]
hacks/spiral.c [deleted file]
hacks/spiral.man [deleted file]
hacks/spotlight.c [deleted file]
hacks/spotlight.man [deleted file]
hacks/squiral.c [deleted file]
hacks/squiral.man [deleted file]
hacks/starfish.c [deleted file]
hacks/starfish.man [deleted file]
hacks/strange.c [deleted file]
hacks/strange.man [deleted file]
hacks/swirl.c [deleted file]
hacks/swirl.man [deleted file]
hacks/t3d.c [deleted file]
hacks/t3d.man [deleted file]
hacks/triangle.c [deleted file]
hacks/truchet.c [deleted file]
hacks/vidwhacker [deleted file]
hacks/vines.c [deleted file]
hacks/vines.man [deleted file]
hacks/vms_axp.opt [deleted file]
hacks/vms_axp_12.opt [deleted file]
hacks/vms_decc.opt [deleted file]
hacks/vms_decc_12.opt [deleted file]
hacks/wander.c [deleted file]
hacks/worm.c [deleted file]
hacks/xflame.c [deleted file]
hacks/xjack.c [deleted file]
hacks/xjack.man [deleted file]
hacks/xlock_23.h [deleted file]
hacks/xlockmore.c [deleted file]
hacks/xlockmore.h [deleted file]
hacks/xlockmoreI.h [deleted file]
hacks/xlyap.c [deleted file]
hacks/xlyap.man [deleted file]
hacks/xmatrix.c [deleted file]
hacks/xroger-hack.c [deleted file]
hacks/xroger.man [deleted file]
hacks/xscreensaver-sgigl.c [deleted file]
install-sh [deleted file]
lib/X11/app-defaults/XScreenSaver [new file with mode: 0644]
local/bin/ant [new file with mode: 0755]
local/bin/atlantis [new file with mode: 0755]
local/bin/attraction [new file with mode: 0755]
local/bin/blitspin [new file with mode: 0755]
local/bin/bouboule [new file with mode: 0755]
local/bin/braid [new file with mode: 0755]
local/bin/bsod [new file with mode: 0755]
local/bin/bubble3d [new file with mode: 0755]
local/bin/bubbles [new file with mode: 0755]
local/bin/cage [new file with mode: 0755]
local/bin/compass [new file with mode: 0755]
local/bin/critical [new file with mode: 0755]
local/bin/crystal [new file with mode: 0755]
local/bin/cynosure [new file with mode: 0755]
local/bin/decayscreen [new file with mode: 0755]
local/bin/deco [new file with mode: 0755]
local/bin/deluxe [new file with mode: 0755]
local/bin/demon [new file with mode: 0755]
local/bin/discrete [new file with mode: 0755]
local/bin/distort [new file with mode: 0755]
local/bin/drift [new file with mode: 0755]
local/bin/epicycle [new file with mode: 0755]
local/bin/fadeplot [new file with mode: 0755]
local/bin/flag [new file with mode: 0755]
local/bin/flame [new file with mode: 0755]
local/bin/flow [new file with mode: 0755]
local/bin/forest [new file with mode: 0755]
local/bin/galaxy [new file with mode: 0755]
local/bin/gears [new file with mode: 0755]
local/bin/glplanet [new file with mode: 0755]
local/bin/goop [new file with mode: 0755]
local/bin/grav [new file with mode: 0755]
local/bin/greynetic [new file with mode: 0755]
local/bin/halo [new file with mode: 0755]
local/bin/helix [new file with mode: 0755]
local/bin/hopalong [new file with mode: 0755]
local/bin/hypercube [new file with mode: 0755]
local/bin/ifs [new file with mode: 0755]
local/bin/imsmap [new file with mode: 0755]
local/bin/interference [new file with mode: 0755]
local/bin/jigsaw [new file with mode: 0755]
local/bin/kaleidescope [new file with mode: 0755]
local/bin/kumppa [new file with mode: 0755]
local/bin/lament [new file with mode: 0755]
local/bin/laser [new file with mode: 0755]
local/bin/lightning [new file with mode: 0755]
local/bin/lisa [new file with mode: 0755]
local/bin/lissie [new file with mode: 0755]
local/bin/lmorph [new file with mode: 0755]
local/bin/loop [new file with mode: 0755]
local/bin/maze [new file with mode: 0755]
local/bin/moebius [new file with mode: 0755]
local/bin/moire [new file with mode: 0755]
local/bin/moire2 [new file with mode: 0755]
local/bin/morph3d [new file with mode: 0755]
local/bin/mountain [new file with mode: 0755]
local/bin/munch [new file with mode: 0755]
local/bin/noseguy [new file with mode: 0755]
local/bin/pedal [new file with mode: 0755]
local/bin/penetrate [new file with mode: 0755]
local/bin/penrose [new file with mode: 0755]
local/bin/petri [new file with mode: 0755]
local/bin/phosphor [new file with mode: 0755]
local/bin/pipes [new file with mode: 0755]
local/bin/pulsar [new file with mode: 0755]
local/bin/pyro [new file with mode: 0755]
local/bin/qix [new file with mode: 0755]
local/bin/rd-bomb [new file with mode: 0755]
local/bin/rocks [new file with mode: 0755]
local/bin/rorschach [new file with mode: 0755]
local/bin/rotor [new file with mode: 0755]
local/bin/rubik [new file with mode: 0755]
local/bin/shadebobs [new file with mode: 0755]
local/bin/sierpinski [new file with mode: 0755]
local/bin/slidescreen [new file with mode: 0755]
local/bin/slip [new file with mode: 0755]
local/bin/sonar [new file with mode: 0755]
local/bin/sphere [new file with mode: 0755]
local/bin/spiral [new file with mode: 0755]
local/bin/spotlight [new file with mode: 0755]
local/bin/sproingies [new file with mode: 0755]
local/bin/squiral [new file with mode: 0755]
local/bin/stairs [new file with mode: 0755]
local/bin/starfish [new file with mode: 0755]
local/bin/strange [new file with mode: 0755]
local/bin/superquadrics [new file with mode: 0755]
local/bin/swirl [new file with mode: 0755]
local/bin/t3d [new file with mode: 0755]
local/bin/triangle [new file with mode: 0755]
local/bin/truchet [new file with mode: 0755]
local/bin/vidwhacker [new file with mode: 0755]
local/bin/vines [new file with mode: 0755]
local/bin/wander [new file with mode: 0755]
local/bin/webcollage [new file with mode: 0755]
local/bin/worm [new file with mode: 0755]
local/bin/xcoral [new file with mode: 0755]
local/bin/xflame [new file with mode: 0755]
local/bin/xjack [new file with mode: 0755]
local/bin/xjulia [new file with mode: 0755]
local/bin/xlyap [new file with mode: 0755]
local/bin/xmatrix [new file with mode: 0755]
local/bin/xroger [new file with mode: 0755]
local/bin/xscreensaver [new file with mode: 0755]
local/bin/xscreensaver-command [new file with mode: 0755]
local/bin/xscreensaver-demo [new file with mode: 0755]
local/man/cat.1/attraction.1 [new file with mode: 0644]
local/man/cat.1/blitspin.1 [new file with mode: 0644]
local/man/cat.1/bouboule.1 [new file with mode: 0644]
local/man/cat.1/braid.1 [new file with mode: 0644]
local/man/cat.1/bsod.1 [new file with mode: 0644]
local/man/cat.1/bubbles.1 [new file with mode: 0644]
local/man/cat.1/critical.1 [new file with mode: 0644]
local/man/cat.1/decayscreen.1 [new file with mode: 0644]
local/man/cat.1/deco.1 [new file with mode: 0644]
local/man/cat.1/drift.1 [new file with mode: 0644]
local/man/cat.1/epicycle.1 [new file with mode: 0644]
local/man/cat.1/flag.1 [new file with mode: 0644]
local/man/cat.1/flame.1 [new file with mode: 0644]
local/man/cat.1/forest.1 [new file with mode: 0644]
local/man/cat.1/galaxy.1 [new file with mode: 0644]
local/man/cat.1/goop.1 [new file with mode: 0644]
local/man/cat.1/grav.1 [new file with mode: 0644]
local/man/cat.1/greynetic.1 [new file with mode: 0644]
local/man/cat.1/halo.1 [new file with mode: 0644]
local/man/cat.1/helix.1 [new file with mode: 0644]
local/man/cat.1/hopalong.1 [new file with mode: 0644]
local/man/cat.1/hypercube.1 [new file with mode: 0644]
local/man/cat.1/ifs.1 [new file with mode: 0644]
local/man/cat.1/imsmap.1 [new file with mode: 0644]
local/man/cat.1/jigsaw.1 [new file with mode: 0644]
local/man/cat.1/kaleidescope.1 [new file with mode: 0644]
local/man/cat.1/lament.1 [new file with mode: 0644]
local/man/cat.1/laser.1 [new file with mode: 0644]
local/man/cat.1/lightning.1 [new file with mode: 0644]
local/man/cat.1/lisa.1 [new file with mode: 0644]
local/man/cat.1/lmorph.1 [new file with mode: 0644]
local/man/cat.1/maze.1 [new file with mode: 0644]
local/man/cat.1/moire.1 [new file with mode: 0644]
local/man/cat.1/munch.1 [new file with mode: 0644]
local/man/cat.1/noseguy.1 [new file with mode: 0644]
local/man/cat.1/pedal.1 [new file with mode: 0644]
local/man/cat.1/penrose.1 [new file with mode: 0644]
local/man/cat.1/pyro.1 [new file with mode: 0644]
local/man/cat.1/qix.1 [new file with mode: 0644]
local/man/cat.1/rd-bomb.1 [new file with mode: 0644]
local/man/cat.1/rocks.1 [new file with mode: 0644]
local/man/cat.1/rorschach.1 [new file with mode: 0644]
local/man/cat.1/sierpinski.1 [new file with mode: 0644]
local/man/cat.1/slidescreen.1 [new file with mode: 0644]
local/man/cat.1/slip.1 [new file with mode: 0644]
local/man/cat.1/sonar.1 [new file with mode: 0644]
local/man/cat.1/sphere.1 [new file with mode: 0644]
local/man/cat.1/spiral.1 [new file with mode: 0644]
local/man/cat.1/spotlight.1 [new file with mode: 0644]
local/man/cat.1/squiral.1 [new file with mode: 0644]
local/man/cat.1/starfish.1 [new file with mode: 0644]
local/man/cat.1/strange.1 [new file with mode: 0644]
local/man/cat.1/swirl.1 [new file with mode: 0644]
local/man/cat.1/t3d.1 [new file with mode: 0644]
local/man/cat.1/vidwhacker.1 [new file with mode: 0644]
local/man/cat.1/vines.1 [new file with mode: 0644]
local/man/cat.1/webcollage.1 [new file with mode: 0644]
local/man/cat.1/xjack.1 [new file with mode: 0644]
local/man/cat.1/xjulia.1 [new file with mode: 0644]
local/man/cat.1/xlyap.1 [new file with mode: 0644]
local/man/cat.1/xroger.1 [new file with mode: 0644]
local/man/cat.1/xscreensaver-command.1 [new file with mode: 0644]
local/man/cat.1/xscreensaver-demo.1 [new file with mode: 0644]
local/man/cat.1/xscreensaver.1 [new file with mode: 0644]
local/man/man.1/attraction.1 [new file with mode: 0644]
local/man/man.1/blitspin.1 [new file with mode: 0644]
local/man/man.1/bouboule.1 [new file with mode: 0644]
local/man/man.1/braid.1 [new file with mode: 0644]
local/man/man.1/bsod.1 [new file with mode: 0644]
local/man/man.1/bubbles.1 [new file with mode: 0644]
local/man/man.1/critical.1 [new file with mode: 0644]
local/man/man.1/decayscreen.1 [new file with mode: 0644]
local/man/man.1/deco.1 [new file with mode: 0644]
local/man/man.1/drift.1 [new file with mode: 0644]
local/man/man.1/epicycle.1 [new file with mode: 0644]
local/man/man.1/flag.1 [new file with mode: 0644]
local/man/man.1/flame.1 [new file with mode: 0644]
local/man/man.1/forest.1 [new file with mode: 0644]
local/man/man.1/galaxy.1 [new file with mode: 0644]
local/man/man.1/goop.1 [new file with mode: 0644]
local/man/man.1/grav.1 [new file with mode: 0644]
local/man/man.1/greynetic.1 [new file with mode: 0644]
local/man/man.1/halo.1 [new file with mode: 0644]
local/man/man.1/helix.1 [new file with mode: 0644]
local/man/man.1/hopalong.1 [new file with mode: 0644]
local/man/man.1/hypercube.1 [new file with mode: 0644]
local/man/man.1/ifs.1 [new file with mode: 0644]
local/man/man.1/imsmap.1 [new file with mode: 0644]
local/man/man.1/jigsaw.1 [new file with mode: 0644]
local/man/man.1/kaleidescope.1 [new file with mode: 0644]
local/man/man.1/lament.1 [new file with mode: 0644]
local/man/man.1/laser.1 [new file with mode: 0644]
local/man/man.1/lightning.1 [new file with mode: 0644]
local/man/man.1/lisa.1 [new file with mode: 0644]
local/man/man.1/lmorph.1 [new file with mode: 0644]
local/man/man.1/maze.1 [new file with mode: 0644]
local/man/man.1/moire.1 [new file with mode: 0644]
local/man/man.1/munch.1 [new file with mode: 0644]
local/man/man.1/noseguy.1 [new file with mode: 0644]
local/man/man.1/pedal.1 [new file with mode: 0644]
local/man/man.1/penrose.1 [new file with mode: 0644]
local/man/man.1/pyro.1 [new file with mode: 0644]
local/man/man.1/qix.1 [new file with mode: 0644]
local/man/man.1/rd-bomb.1 [new file with mode: 0644]
local/man/man.1/rocks.1 [new file with mode: 0644]
local/man/man.1/rorschach.1 [new file with mode: 0644]
local/man/man.1/sierpinski.1 [new file with mode: 0644]
local/man/man.1/slidescreen.1 [new file with mode: 0644]
local/man/man.1/slip.1 [new file with mode: 0644]
local/man/man.1/sonar.1 [new file with mode: 0644]
local/man/man.1/sphere.1 [new file with mode: 0644]
local/man/man.1/spiral.1 [new file with mode: 0644]
local/man/man.1/spotlight.1 [new file with mode: 0644]
local/man/man.1/squiral.1 [new file with mode: 0644]
local/man/man.1/starfish.1 [new file with mode: 0644]
local/man/man.1/strange.1 [new file with mode: 0644]
local/man/man.1/swirl.1 [new file with mode: 0644]
local/man/man.1/t3d.1 [new file with mode: 0644]
local/man/man.1/vidwhacker.1 [new file with mode: 0644]
local/man/man.1/vines.1 [new file with mode: 0644]
local/man/man.1/webcollage.1 [new file with mode: 0644]
local/man/man.1/xjack.1 [new file with mode: 0644]
local/man/man.1/xjulia.1 [new file with mode: 0644]
local/man/man.1/xlyap.1 [new file with mode: 0644]
local/man/man.1/xroger.1 [new file with mode: 0644]
local/man/man.1/xscreensaver-command.1 [new file with mode: 0644]
local/man/man.1/xscreensaver-demo.1 [new file with mode: 0644]
local/man/man.1/xscreensaver.1 [new file with mode: 0644]
makevms.com [deleted file]
screenblank.txt [deleted file]
setup.com [deleted file]
utils/Makefile.in [deleted file]
utils/README [deleted file]
utils/ad2c [deleted file]
utils/alpha.c [deleted file]
utils/alpha.h [deleted file]
utils/colors.c [deleted file]
utils/colors.h [deleted file]
utils/compile_axp.com [deleted file]
utils/compile_decc.com [deleted file]
utils/erase.c [deleted file]
utils/erase.h [deleted file]
utils/fade.c [deleted file]
utils/fade.h [deleted file]
utils/grabscreen.c [deleted file]
utils/grabscreen.h [deleted file]
utils/hsv.c [deleted file]
utils/hsv.h [deleted file]
utils/overlay.c [deleted file]
utils/resources.c [deleted file]
utils/resources.h [deleted file]
utils/sgivideo.c [deleted file]
utils/sgivideo.h [deleted file]
utils/spline.c [deleted file]
utils/spline.h [deleted file]
utils/usleep.c [deleted file]
utils/usleep.h [deleted file]
utils/utils.h [deleted file]
utils/version.h [deleted file]
utils/visual-gl.c [deleted file]
utils/visual.c [deleted file]
utils/visual.h [deleted file]
utils/vms-gtod.c [deleted file]
utils/vms-gtod.h [deleted file]
utils/vms-strdup.c [deleted file]
utils/vroot.h [deleted file]
utils/xdbe.c [deleted file]
utils/xdbe.h [deleted file]
utils/xmu.c [deleted file]
utils/xmu.h [deleted file]
utils/xroger.c [deleted file]
utils/xshm.c [deleted file]
utils/xshm.h [deleted file]
utils/yarandom.c [deleted file]
utils/yarandom.h [deleted file]
xscreensaver.lsm [deleted file]
xscreensaver.lsm.sh [deleted file]
xscreensaver.spec [deleted file]

diff --git a/INSTALL b/INSTALL
deleted file mode 100644 (file)
index 50dbe43..0000000
--- a/INSTALL
+++ /dev/null
@@ -1,183 +0,0 @@
-Basic Installation
-==================
-
-   These are generic installation instructions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
-
-  4. Type `make install' to install the programs and any data files and
-     documentation.
-
-  5. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory.  After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-   In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
-     CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
-   If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
-
-`--help'
-     Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
-     messages will still be shown).
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
-
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644 (file)
index 10235b1..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-# Makefile.in --- xscreensaver, Copyright (c) 1999 Jamie Zawinski.
-# the `../configure' script generates `Makefile' from this file.
-
-@SET_MAKE@
-srcdir         = @srcdir@
-VPATH          = @srcdir@
-
-SHELL          = /bin/sh
-SUBDIRS                = utils driver hacks hacks/glx
-TARFILES       = README README.VMS README.debugging INSTALL xscreensaver.lsm \
-                 configure configure.in Makefile.in config.h.in \
-                 config.h-vms install-sh setup.com config.guess \
-                 config.sub makevms.com screenblank.txt \
-                 xscreensaver.lsm.sh xscreensaver.spec
-TAR            = tar
-COMPRESS       = gzip --verbose --best
-COMPRESS_EXT   = gz
-# COMPRESS     = compress
-# COMPRESS_EXT = Z
-
-MAKE_SUBDIR = for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) $@) || exit 5; done
-
-all::
-       @$(MAKE_SUBDIR)
-install:
-       @$(MAKE_SUBDIR)
-install-program:
-       @$(MAKE_SUBDIR)
-install-man:
-       @$(MAKE_SUBDIR)
-install-strip:
-       @$(MAKE_SUBDIR)
-uninstall:
-       @$(MAKE_SUBDIR)
-uninstall-program:
-       @$(MAKE_SUBDIR)
-uninstall-man:
-       @$(MAKE_SUBDIR)
-depend:
-       @$(MAKE_SUBDIR)
-distdepend:
-       @$(MAKE) update_spec_version
-       @$(MAKE_SUBDIR)
-TAGS: tags
-tags:
-       @$(MAKE_SUBDIR)
-clean:
-       @$(MAKE_SUBDIR)
-distclean: clean
-       -rm -f config.h Makefile config.status config.cache config.log TAGS *~ "#"*
-       @$(MAKE_SUBDIR)
-
-dist: tar
-
-# This really makes me sick...
-tar:
-       @                                                                   \
-  sh config.status ;                                                       \
-  rm -f configure ;                                                        \
-  $(MAKE) configure ;                                                      \
-  $(MAKE) distdepend ;                                                     \
-  sh xscreensaver.lsm.sh > xscreensaver.lsm.$$$$ ;                         \
-  mv xscreensaver.lsm.$$$$ xscreensaver.lsm ;                              \
-  NAME=`sed -n                                                             \
-  's/[^0-9]*\([0-9]\.[0-9][0-9]*\).*/xscreensaver-\1/p' utils/version.h` ;  \
-  rm -rf $$NAME ; ln -s . $$NAME ;                                         \
-  FILES= ;                                                                 \
-  for subdir in $(SUBDIRS) ; do                                                    \
-    d=`pwd` ;                                                              \
-    cd $$subdir ;                                                          \
-    FILES="$$FILES `$(MAKE) echo_tarfiles                                  \
-      | grep -v '^.*make\['                                                \
-      | sed \"s|^|$$subdir/|g;s| | $$subdir/|g\"                           \
-      ` ";                                                                 \
-    cd $$d ; done ;                                                        \
-  echo creating tar file $${NAME}.tar.$(COMPRESS_EXT)... ;                 \
-  $(TAR) -vchf -                                                           \
-    `echo $(TARFILES) $$FILES | sed "s|^|$$NAME/|g; s| | $$NAME/|g" `      \
-   | $(COMPRESS) > $${NAME}.tar.$(COMPRESS_EXT) ;                          \
-  rm $$NAME
-
-
-# This also makes me sick...
-# autoconf generates a configure script that begins with a very hard to read,
-# nearly impossible to customize --help blurb.  This horrid set of regexps
-# go through and clean up the help text, by inserting whitespace and ripping
-# out options we don't use.  Odds are good that this will fail with any version
-# of autoconf other than the ones I've tried (2.12 and 2.13.)
-#
-configure::
-       autoconf
-       @TMP=configure.$$$$ ;                                                \
-       echo "munging configure's --help message..." ;                       \
-       ( perl -e '                                                          \
-               my $$file="";                                                \
-               while (<>) { $$file .= $$_; }                                \
-               $$_ = $$file;                                                \
-                                                                            \
-               s/^(Configuration:)$$/\n$$1\n/m;                             \
-               s/^(Directory and file names:)$$/\n$$1\n/m;                  \
-               s/^  --sbindir=.*\n//m;                                      \
-               s/^  --libexecdir.*\n//m;                                    \
-               s/^  --datadir.*\n.*\n//m;                                   \
-               s/^  --sysconfdir.*\n//m;                                    \
-               s/^  --sharedstatedir.*\n.*\n//m;                            \
-               s/^  --localstatedir.*\n//m;                                 \
-               s/^  --infodir.*\n//m;                                       \
-               s/^(Host type:)$$/\n$$1\n/m;                                 \
-               s/\nFeatures and packages:\n.*library files are in DIR\n/\n/s;\
-               s/--enable and --with options recognized://m;                \
-               s/\n  --with-x .*?(["\n])/$$1/s;                             \
-               s/\n(Installation options:\n)/$$1/s;                         \
-                                                                            \
-               s/^  --oldincludedir=.*$$/ \
- --x-includes=DIR        X include files are in DIR\n \
- --x-libraries=DIR       X library files are in DIR/m; \
-                                                                            \
-               print;'                                                      \
-       < configure                                                          \
-       > $$TMP &&                                                           \
-       cat $$TMP > configure ) ;                                            \
-       rm -f $$TMP
-
-bump-version::
-       @                                                                   \
-  SRC=utils/version.h ;                                                            \
-  VERS=`sed -n 's/[^0-9]*\([0-9]\)\.\([0-9][0-9]*\).*/\1 \2/p' $$SRC` ;            \
-  set - $$VERS ;                                                           \
-  MAJOR="$$1"; MINOR="$$2";                                                \
-  NEW=`echo $$MINOR + 1 | bc` ;                                                    \
-  NEW=`echo $$NEW | sed 's/^\([0-9]\)$$/0\1/'` ;                           \
-  D=`date '+%d-%b-%y'`;                                                            \
-  if [ ! -f xscreensaver-$$MAJOR.$$MINOR.tar.gz ]; then                            \
-    echo "WARNING: xscreensaver-$$MAJOR.$$MINOR.tar.gz does not exist.";    \
-  fi ;                                                                     \
-  if [ -f xscreensaver-$$MAJOR.$$NEW.tar.gz ]; then                        \
-    echo "WARNING: xscreensaver-$$MAJOR.$$NEW.tar.gz already exists.";     \
-  fi ;                                                                     \
-  echo -n "Bumping $$MAJOR.$$MINOR to $$MAJOR.$$NEW ($$D), ok? ";          \
-  read line;                                                               \
-  if [ "x$$line" != "xyes" -a  "x$$line" != "xy" ]; then                   \
-    exit 1 ;                                                               \
-  fi ;                                                                     \
-  TMP=/tmp/bv.$$ ;                                                         \
-  sed -e "s/\([0-9]\.[0-9][0-9]*\)/$$MAJOR.$$NEW/"                         \
-      -e "s/\(([0-9][0-9]*-[A-Za-z][a-z][a-z]-[0-9][0-9][0-9]*\))/($$D)/"   \
-        $$SRC > $$TMP ;                                                            \
-  echo -n "New version and date are ";                                     \
-  sed -n "s/[^0-9]*\([0-9]\.[0-9][0-9]*\) (\([-A-Za-z0-9]*\)).*/\1, \2./p"  \
-     $$TMP;                                                                \
-  cat $$TMP > $$SRC ;                                                      \
-  rm -f $$TMP;                                                             \
-  echo "overwrote $$SRC";                                                  \
-  ls -lFd $$SRC
-
-update_spec_version::
-       @S=$(srcdir)/xscreensaver.spec ;                                    \
-       U=$(srcdir)/utils/version.h ;                                       \
-       V=`sed -n 's/.*\([0-9][0-9]*\.[0-9]*\).*/\1/p' < $$U` ;             \
-       echo -n "Updating version number in $$S to \"$$V\"... " ;           \
-       T=/tmp/xs.$$$$ ;                                                    \
-       sed "s/^\(Version:[^0-9]*\)\(.*\)/\1$$V/"                           \
-         < $$S > $$T ;                                                     \
-       if cmp -s $$S $$T ; then                                            \
-         echo "unchanged." ;                                               \
-       else                                                                \
-         cat $$T > $$S ;                                                   \
-         echo "done." ;                                                    \
-       fi ;                                                                \
-       rm $$T
-
-rpm::
-       @                                                                   \
-  VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][0-9]*\).*/\1/p' utils/version.h` ;  \
-  cp -p xscreensaver-$$VERS.tar.gz /usr/src/redhat/SOURCES/ ;              \
-  rpm -ba xscreensaver.spec
-
-test-tar::
-       @                                                                   \
-  VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][0-9]*\).*/\1/p' utils/version.h` ;  \
-  D=xscreensaver-$$VERS ;                                                  \
-  NAME="$$D.tar.gz" ;                                                      \
-  if [ ! -f $$NAME ]; then                                                 \
-    echo "$$NAME does not exist!  Did you forget to \`make tar'?" ;        \
-    exit 1 ;                                                               \
-  fi ;                                                                     \
-                                                                           \
-  set -e ;                                                                 \
-  set -x ;                                                                 \
-                                                                           \
-  if [ -d $$D ]; then                                                      \
-   chmod -R u+w $$D ;                                                      \
-  fi ;                                                                     \
-  rm -rf $$D ;                                                             \
-  zcat $$D.tar.gz | tar -xf - ;                                                    \
-  cd $$D ;                                                                 \
-  chmod -R a-w . ;                                                         \
-  chmod u+w . ;                                                                    \
-  mkdir BIN ;                                                              \
-  mkdir BIN/athena ;                                                       \
-  mkdir BIN/motif ;                                                        \
-  mkdir BIN/lesstif ;                                                      \
-  chmod a-w . ;                                                                    \
-                                                                           \
-  ( cd BIN/athena ;                                                        \
-    CC=cc ;                                                                \
-    export CC ;                                                                    \
-    ../../configure --with-athena ;                                        \
-    echo --------------------------------------------------------------- ;  \
-    gmake ;                                                                \
-    echo --------------------------------------------------------------- ); \
-                                                                           \
-  ( cd BIN/motif ;                                                         \
-    CC=cc ;                                                                \
-    export CC ;                                                                    \
-    ../../configure --without-xpm --without-xdbe --without-xshm            \
-                   --with-motif=/usr/local/motif ;                         \
-    echo --------------------------------------------------------------- ;  \
-    gmake ;                                                                \
-    ( cd driver; gmake xscreensaver-demo-Xaw ) ;                           \
-    echo --------------------------------------------------------------- ); \
-                                                                           \
-  ( cd BIN/lesstif ;                                                       \
-    CC=cc ;                                                                \
-    export CC ;                                                                    \
-    ../../configure --with-motif=/usr/local/lesstif ;                      \
-    echo --------------------------------------------------------------- ;  \
-    ( cd utils; gmake ) ;                                                  \
-    ( cd driver; gmake ) ;                                                 \
-    ( cd driver; gmake xscreensaver-demo-Xaw ) ;                           \
-    echo --------------------------------------------------------------- ); \
-                                                                           \
-  chmod -R u+w .
-
-
-www::
-       @                                                                   \
-  DEST=$$HOME/www/xscreensaver ;                                           \
-  VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][0-9]*\).*/\1/p' utils/version.h` ;  \
-  HEAD="xscreensaver-$$VERS" ;                                             \
-  NAME="$$HEAD.tar.gz" ;                                                   \
-                                                                           \
-  if [ ! -f $$NAME ]; then                                                 \
-    echo "$$NAME does not exist!  Did you forget to \`make tar'?" ;        \
-    exit 1 ;                                                               \
-  fi ;                                                                     \
-  if [ -f $$DEST/$$NAME ]; then                                                    \
-    echo -n "WARNING: $$DEST/$$NAME already exists!  Overwrite? ";         \
-    read line;                                                             \
-    if [ "x$$line" != "xyes" -a "x$$line" != "xy" ]; then                  \
-      exit 1 ;                                                                     \
-    fi ;                                                                   \
-  fi ;                                                                     \
-  cp -p $$NAME $$DEST/$$NAME ;                                             \
-  chmod u+w $$DEST/$$NAME ;                                                \
-  cd $$DEST ;                                                              \
-                                                                           \
-  TMP=/tmp/xd.$$$$ ;                                                       \
-  sed "s/xscreensaver-[0-9]\.[0-9][0-9]*/$$HEAD/g" download.html > $$TMP ;  \
-  echo '' ;                                                                \
-  diff -u0 download.html $$TMP ;                                           \
-  echo '' ;                                                                \
-                                                                           \
-  OLDEST=`ls xscreensaver*.tar.gz | head -1` ;                             \
-  echo -n "Delete $$DEST/$$OLDEST? ";                                      \
-  read line;                                                               \
-  if [ "x$$line" = "xyes" -o "x$$line" = "xy" ]; then                      \
-    set -x ;                                                               \
-    rm $$OLDEST ;                                                          \
-    cvs remove $$OLDEST ;                                                  \
-  else                                                                     \
-    set -x ;                                                               \
-  fi ;                                                                     \
-  cvs add -kb $$NAME ;                                                     \
-  cat $$TMP > download.html ;                                              \
-  rm -f $$TMP ;                                                                    \
-                                                                           \
-  (cd ..; $(MAKE) xscreensaver/changelog.html );                           \
-  cvs diff -u0 changelog.html ;                                                    \
-  set +x ;                                                                 \
-                                                                           \
-  echo -n "Ok? ";                                                          \
-  read line;                                                               \
-  if [ "x$$line" != "xyes" -a "x$$line" != "xy" ]; then                            \
-    exit 1 ;                                                               \
-  fi ;                                                                     \
-                                                                           \
-  cvs commit -m "$$VERS"
diff --git a/README b/README
deleted file mode 100644 (file)
index 9599795..0000000
--- a/README
+++ /dev/null
@@ -1,607 +0,0 @@
-
-                              XScreenSaver
-
-            a screen saver and locker for the X window system
-                            by Jamie Zawinski
-
-                     http://www.jwz.org/xscreensaver/
-
-To build on Unix:
-
-  -  ./configure
-  -  make
-  -  make install
-
-The `configure' shell script will attempt to figure out which options are
-appropriate for your system, and will create config.h and the various
-Makefiles for you.  Run `configure --help' to see how to override these
-choices, or to specify things like the default installation directory.
-The file `INSTALL' gives a general overview of use of these sorts of
-configure scripts (those generated by the GNU autoconf system.)
-The most important hint is probably this:
-
-     ./configure --with-motif=/opt/Motif --with-xpm=/usr/local
-
-To build on VMS, see README.VMS.
-
-If you are upgrading, you might want to delete your ~/.xscreensaver file.
-If you don't, you might not see the new graphics modes.  If you are upgrading
-from version 2.* to version 3.*, definitely do delete your .xscreensaver file.
-
-If you think you've found a bug, please let me know!  No bug report is too
-small.  But first, please read the enclosed `README.debugging' file to find
-out what kind of information would be most helpful to include in your bug
-report.
-
-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".
-
-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.
-
-xscreensaver has an extensive manual -- please read it!
-
-                              ============
-
-The xscreensaver daemon waits until the keyboard and mouse have been idle
-for a period, and then runs a graphics demo chosen at random.  The demo is
-terminated as soon as there is any mouse or keyboard activity (or, in
-locking mode, when the proper password is typed.)
-
-It is trivially easy to add new display modes to xscreensaver: any program
-which can be invoked in such a way that it draws on the root window of the
-screen can be used as a screensaver.  You just change a config file --
-there's no need to recompile or reinstall anything.
-
-                              ============
-
-Along with the xscreensaver daemon itself, this package also includes
-numerous graphics hacks for use as screensavers.  There is nothing magic
-about these: they are just programs that draw on the root window.
-
-More than 90 such programs are included.  For details, see the xscreensaver
-web page, or the enclosed manual pages.  There are also some helpful hints
-on customization in the xscreensaver app-defaults file (normally installed
-in /usr/lib/X11/app-defaults/XScreenSaver.)
-
-The latest version of xscreensaver is always available on the web at
-http://www.jwz.org/xscreensaver/.
-
-                              ============
-
-Changes since 3.11:   * Made it so that you can't scroll the screen while the
-                        lock dialog is up (with XFree86 virtual viewports.)
-                      * Fixed a bug in `flag' that caused bob's chin to get cut
-                        off after a few iterations.
-Changes since 3.10:   * Made `xjack' be black-on-white-ish, so that it looks
-                        less like a computer screen and more like the
-                        typewritten paper it's supposed to be.
-                      * New version of `pulsar'.
-                      * Fixed Solaris compilation problem in `phosphor'.
-                      * Made xscreensaver notice XFree86's virtual root window
-                        hack, so that if the X server's root window is larger
-                        than the monitor's displayable resolution, the screen
-                        saver will limit itself to the area that actually
-                        appears on the screen.
-                      * Made the xscreensaver daemon do a better job of
-                        picking the visual class that should be used for GL
-                        programs.  Less user intervention should be needed
-                        now: you can use the logical visual name `GL' instead
-                        of having to figure out by hand which one to use.
-                      * Oops, the visual was defaulting to "best" instead of
-                        "default", because the .xscreensaver file was not being
-                        loaded quite early enough.
-                      * Made configure figure out how to build icmp ping
-                        support into the `sonar' hack automatically.
-                      * Made warnings about not being able to read shadow
-                        passwords not be printed if compiled with PAM support.
-                      * Improved PAM startup diagnostics.
-                      * Worked around the Solaris PAM bug that was causing
-                        crashes there, so now PAM is turned on by default.
-                      * Made configure detect the number of arguments that
-                        pam_strerror() takes, since on Linux, this apparently
-                        changed between 2.0 and 2.2, sigh.
-                      * Made the /proc/interrupts kludge look for "PS/2 Mouse"
-                        as well as "keyboard".
-                      * Made xscreensaver notice when there has been a sudden
-                        large jump in wall-clock time, and if so, lock right
-                        away, instead of waiting for "lockTimeout" to expire
-                        first.  (Laptops need this for safer recovery from
-                        ``hibernation.'')
-                      * Added `-throttle' option to `xscreensaver-command'.
-Changes since 3.09:   * Added `phosphor', `xmatrix', and `pulsar' hacks.
-                      * Fixed a bug in the color allocator that sometimes
-                        caused `starfish' to fall back to monochrome.
-                      * Reduced the amount of code that runs before root
-                        privileges are disavowed: "normal" and "shadow"
-                        passwords now do some initialization as root, but the
-                        PAM and Kerberos authorization schemes will be
-                        initialized while running as "nobody".  Supposedly 
-                        this closes a potential security hole when using
-                        Kerberos.
-                      * Added some more sanity checking to configure.
-Changes since 3.08:   * Added `compass', `squiral', `xflame', `wander',
-                        `spotlight', and `critical' hacks.
-                      * Added some new modes to `decayscreen'.
-                      * Made `deluxe' work in monochrome.
-                      * Generalized usage of the Double-Buffer server extension
-                        in several hacks (`compass', `deluxe', `interference',
-                        `kumppa', and `moire2'.)
-                      * Fixed another visual-depth problem in `rd-bomb'.
-                      * The screen saver will now defer blanking if neither
-                        the keyboard nor the mouse could be grabbed.  Instead,
-                        it will just try again in a few minutes.  This fixes
-                        a bad interaction between xscreensaver and programs
-                        like VMware that hold the mouse and keyboard grabbed
-                        for a long time.
-                      * Added a new erase mode (expanding spiral.)
-Changes since 3.07:   * Fixed some bugs in my port of `t3d'.
-                      * Added `penetrate' and `deluxe' hacks.
-                      * When linking against Motif 2.x, also link against XPM.
-                      * Added support for using /proc/interrupts for idle
-                        detection on Linux.  Now xscreensaver shouldn't kick
-                        in when the user is active on a non-X virtual console.
-                      * Upgraded to autoconf 2.13.
-Changes since 3.06:   * Configure tweaks (sometimes -lXmu wasn't getting linked
-                        in properly; check for _Xsetlocale in -lXintl.)
-                      * Portability fixes for sonar.c.
-                      * Fixed a compilation problem when you have GL but don't
-                        have XPM.
-                      * Made configure notice when MesaGL requires -lpthread.
-                      * Made `flame' ignore SIGFPE (not sure if this is the
-                        right fix; it seems only to be needed on FreeBSD.)
-                      * Kludged `rd-bomb' work on visuals that are of depth 24
-                        but that *do not* support pixmaps of depth 32.
-                      * Fixed `halo' to work properly in TrueColor.
-                      * Changed `xscreensaver.spec' to install the hacks in
-                        /usr/X11R6/lib/xscreensaver/ by default, since that's
-                        where recent Red Hat distributions put them.
-                      * Added `t3d' hack.
-                      * Updated versions of `crystal', `hopalong', and `flow'
-                        from xlockmore.
-                      * Imported `demon' and `loop' modes from xlockmore.
-Changes since 3.05:   * Oops, the "default-n" visual descriptor was broken;
-                        it was always installing a colormap if the
-                        `installColormap' preference was set, meaning that
-                        `xearth', `xv' and friends were using the wrong
-                        colors on 8-bit systems.
-                      * Turned off HAVE_PING in `sonar', since it compiles
-                        on some Linux systems, but not others of similar
-                        vintage...
-Changes since 3.04:   * Fixed an off-by-1 in `distort'.
-                      * Added `sonar' hack.
-                      * New version of `glplanet' (with stars.)
-                      * Made all hacks exit when you type `q' or `ESC' at them,
-                        and made them obey the WM_DELETE_WINDOW ClientMessage.
-                      * Fixed a nonfatal buffer overrun in lament (note:
-                        lament still doesn't work with MesaGL 3.0: it dies in
-                        lambda_textured_triangle1(), which is Mesa's bug, not
-                        mine.)
-Changes since 3.03:   * Added an `xscreensaver.spec' file, to make it easier
-                        for other folks to generate RPMs.
-                      * Made the password code work on HPUX in the situation
-                        where: ``enhanced security'' is available; but not 
-                        used; but the user typed a password more than 8
-                        characters long anyway.  FTSOHPUX.
-Changes since 3.02:   * Made locking work when passwd aging is enabled.
-                      * Added support for PAM (Pluggable Authentication
-                        Modules.)  It is still turned off by default, though,
-                        since it doesn't seem to work on Solaris 2.6, and has
-                        been behaving erratically on Red Hat 5.1.
-                      * Made each possible authentication method be tried in
-                        turn until one succeeds; this means that Kerberos is
-                        being used, we will first check Kerberos, and if that
-                        fails, will then consult the local password file.
-                        Likewise with PAM.
-                      * Save and restore the bits under the passwd dialog,
-                        to avoid leaving a black rectangle behind when 
-                        unlocking is cancelled.
-Changes since 3.01:   * Not everyone has sys/select.h, sigh...
-Changes since 3.00:   * Some fixes to `reflect'.
-                     * Configure tweaks.
-                     * Made it log unsuccessful attempts to unlock the screen
-                       to syslog.
-                     * Fixed a bug where `xscreensaver-demo' could be seeing
-                       a different programs list than `xscreensaver' did.
-Changes since 2.34:   * The xscreensaver daemon no longer links against Motif
-                       or Athena: demo-mode and the preferences panel are no
-                       longer built in to the daemon, but are now handled by
-                       an external program, `xscreensaver-demo'.
-                       (I decided that this, along with the recent addition
-                       of the `.xscreensaver' config file, justified bumping
-                       the version number to 3.00, since this is a fairly
-                       major architectural change.)
-                     * Lines in the `*programs' resource may now begin with
-                       the character "-", meaning "don't run this hack."
-                       In this way, it's possible to disable a hack without
-                       throwing away the information about it (making it 
-                       easier to change your mind later.)  Eventually the
-                       preferences/demo mode GUI should represent this as a
-                       checkbox or something.
-                     * Fixed a short race condition where it was possible for
-                       xscreensaver to die with a BadWindow error if it was
-                       blanking the screen just as another window was being
-                       deleted.
-                     * Made it possible to disable specific modes in `bsod'.
-Changes since 2.33:   * Fixed a bug that was making `pipes' generate way too
-                       many valves.  Made the viewpoint in `pipes' be selected
-                       randomly instead of always being -10 degrees.
-                     * Fixed a bug in the XSHM code, in the case where the
-                       server supports the XSHM extension but is not the same
-                       machine as the client.
-                     * Made `rd-bomb' default to taking up the whole screen.
-                     * Made it not try to do fading/unfading if no PseudoColor
-                       visuals exist.
-                     * Initial attempt at supporting VT-locking (doesn't work
-                       yet.)
-                     * Eliminated the `captureStdout' resource; now
-                       `captureStderr' controls both streams.
-                     * Added `-capture-stderr' and `-no-capture-stderr'
-                       command-line arguments.
-                     * Added `glplanet' hack.
-                     * When a hack is selected with `xscreensaver-command
-                       -select', that hack will be used until further notice
-                       (until the saver turns off, or another activation
-                       command is issued.)
-Changes since 2.32:   * Made `xscreensaver-command' print error messages:
-                       the xscreensaver daemon now responds to ClientMessage
-                       events by writing a response message on a window
-                       property, instead of just writing to its stderr.
-                     * Made the ~/.xscreensaver file be automatically reloaded
-                       when the file date changes.
-                     * The password dialog and splash screen no longer depend
-                       on Motif or Athena.  This should clear up a number of
-                       focus problems, and is the first step on the path
-                       toward moving all of the Motif/Athena/whatever code
-                       out of the xscreensaver daemon, and into external
-                       processes.
-                     * Don't complain about LessTif 0.86 any more, since the
-                       new password dialog makes that problem go away.
-                     * Configure tweaks for Irix 6.5, SunOS 5.something.
-                     * New `-reflect' option to `distort'.
-Changes since 2.31:   * Added reading and writing of a ~/.xscreensaver file,
-                       so that the Preferences panel can save its settings.
-                     * New version of `rubik'.
-                     * Added `-select N' argument to `xscreensaver-command'.
-                     * Oops, left out some of the `bubbles3d' files...
-Changes since 2.30:   * The cursor was invisible in the password dialog. Fixed.
-                     * Made configure warn against MesaGL 2.6.
-                     * Fixed X error at startup when using non-default visual.
-                     * New version of `crystal', `ant', and `atlantis' from
-                       xlockmore.
-                     * New hack, `bubble3d'.
-                     * Added some new modes to `bsod'.
-Changes since 2.29:   * Changed the order in which -lSM and -lICE are linked
-                       to be after Motif instead of before (Lesstif on Irix
-                       needs this.)
-Changes since 2.28:   * Work around a bash bug in configure.
-                     * Tweaked HPUX paths again.  FTSOHPUX.
-                     * Made configure recommend against LessTif 0.86, due
-                       to a bug in that version that causes a security hole
-                       in the screen locking code.  LessTif 0.87 will fix it.
-                     * Made all of the `--with' options to `configure' accept
-                       a directory option as well (so that --with-motif=/FOO
-                       will add -I/FOO/include -L/FOO/lib).  I believe this is
-                       the Configure Party Line of how do to such things.
-                     * Fixed a bug where the mouse was left un-grabbed
-                       after the first time the graphics hack was changed
-                       (simplified all of the mouse-grabbing logic.)
-                     * Maybe possibly perhaps made `vidwhacker' really not
-                       leave stray xv windows around.  This time for sure.
-                     * Added a new erase mode (random dots fizzling out.)
-                     * Added `-prefs' argument to `xscreensaver-command',
-                       that brings up the Preferences dialog directly (it
-                       seems that nobody ever noticed the `Preferences' button
-                       on the Demo Mode dialog, maybe this will help.)
-                     * Added a splash screen.  Turn it off with *splash:false.
-Changes since 2.27:   * Better macsbug text in `bsod'.
-                     * New version of `distort' with many new modes.
-                     * Plugged a leak in `coral'.
-                     * Tweaked configure for HPUX.
-                     * Removed some compiler warnings.
-                     * More consistent usage of stderr versus stdout.
-                     * More diagnostics should an X error occur.
-                     * Fixed a possible crash in SGI-specific unfading code.
-Changes since 2.26:   * Improved version of `distort'.
-                     * Made `lament' compile against OpenGL 1.0 (though it
-                       still requires 1.1 to work properly.)
-                     * Updated my email address and home page.
-Changes since 2.24:   * Improved motion in `rd-bomb'.
-                     * Added XSHM (shared memory extension) support to the
-                       `distort', `interference', `moire', `rd-bomb', and
-                       `swirl' hacks, which speeds them up a bit.
-                     * Added `lament' hack.
-Changes since 2.23:   * Tweaked the order of the -L options again.
-                     * Cleaned up configure's `--help' message.
-                     * Added `kumppa' hack.
-                     * Smarter maze-solving algorithm in `maze'.
-                     * Took `xlyap' out of the default list of hacks, since
-                       it's just incredibly buggy (and slow.)  Maybe someday
-                       someone will fix it...
-                     * Added `distort' hack, but didn't add it to the default
-                       list (yet) because it's still too slow.
-                     * Made the Athena demo dialog look more like the Motif
-                       version; it has a text-entry field now, too.
-                     * Made the Athena password dialog echo asterisks, like
-                       Motif does, instead of using a flyspeck font.
-                     * Some random configure tweaks.
-                     * Added a `timestamp' resource that makes the `-verbose'
-                       messages include the time at which they were printed.
-Changes since 2.22:   * The fix for SGI's ``scheme'' nonsense broke things, and
-                       let the user's "*background" resource show through.
-                       Fixed it in a different way.
-Changes since 2.21:   * Added support for the DPMS server extension (Display
-                       Power Management System.)
-                     * Made configure advertize the `--enable-subdir' option a
-                       little more, since that seemed to cause some people
-                       stress.  Also, made that directory be built into the
-                       xscreensaver executable, as a hardcoded prefix to
-                       $PATH.  (Might help, shouldn't hurt.)
-                     * Made configure prefer the two-arg gettimeofday to the
-                       one-arg version, since AIX doesn't have any prototypes.
-                     * Made it work with Xaw3d (the 3D Athena library.)
-                     * Made `make install' create directories as necessary.
-                     * New version of lmorph from Sverre.
-                     * Added `crystal' and `discreet' hacks from xlockmore.
-                     * Added a new mode to `bsod'.
-Changes since 2.20:   * Made `xscreensaver-command -time' use different words.
-                       (It now describes the two states as "screen blanked
-                       since..."  and "screen non-blanked since..." instead of
-                       "active since..." and "inactive since..." which a lot
-                       of people interpreted as meaning the opposite of what
-                       was intended.)
-                     * Improved some error messages, in the hopes of making
-                       the distinction between the xscreensaver and
-                       xscreensaver-command programs more obvious.
-                     * Rewrote (and reorganized) parts of the xscreensaver and
-                       xscreensaver-command manual pages.
-                     * Renamed xscreensaver's `-lock' command-line option to
-                       be `-lock-mode', to avoid confusion with the `-lock'
-                       option to xscreensaver-command, which does a totally
-                       different thing.
-                     * Removed xscreensaver's `-demo' command-line option for
-                       a similar reason; use `xscreensaver-command -demo'
-                       instead.
-                     * Disabled SGI's ``scheme'' nonsense in a better way than
-                       fully-qualifying the background colors in every single
-                       hack.
-                     * Fixed some other minor cosmetic problems when *sgiMode
-                       is turned on.
-                     * Fixed an X error in `bsod -root' (how ironic...)
-Changes since 2.19:   * Fixed a bug that caused the mouse to sometimes not be
-                       grabbed properly (meaning the window manager menu could
-                       pop up over the demo-mode display.)
-                     * Fixed a bug that made the stderr output sometimes get
-                       printed twice.
-                     * Fixed a bug that made the demo-mode scrollbar move too
-                       fast.
-                     * Protected against a possible buffer overflow.
-                     * Made `vidwhacker' not leave stray xv windows around.
-                     * New version of `ant' so that Bagley doesn't calve.
-                     * Make configure on AIX get XShm from the right library.
-Changes since 2.18:   * One file was missing from the tar file.         Fixed.
-Changes since 2.17:   * Oops, atlantis wasn't being built by default.  Fixed.
-                     * Added `epicycle' hack.
-                     * Added `interference' hack.
-                     * Added `truchet' hack.
-                     * Added `bsod' hack.
-                     * Added some new modes to `vidwhacker'.
-Changes since 2.16:   * Added a -window-id argument to most hacks, so that they
-                       can draw on arbitrary externally-provided windows.
-                     * Synched with xlockmore 4.11a01.
-                     * Added `flow' hack.
-                     * Added `atlantis' GL hack.
-                     * Renamed `puzzle' hack to `jigsaw', since xlock already
-                       had a different mode called `puzzle'.
-                     * Made it self-configure properly when Motif 2.1.0 is
-                       being used (requires -lXp now, sigh...)
-Changes since 2.15:   * Made `flag' able to do XPM images.
-                     * New look for the xscreensaver logo (`xroger').
-                     * Fixed compilation error on Suns with adjunct passwords.
-                     * Got multi-architecture builds working again.
-                     * Some configure tweaks for building on HPUX and Solaris.
-                     * Fixed bug in decayscreen.
-                     * Fixed typo in passwd.c.
-                     * Made `cynosure' not die when colormap is full.
-Changes since 2.14:   * Added `cynosure' hack.
-                     * Added `moire2' hack.
-                     * Tweaked `erase.c' some more.
-                     * Made unfading a bit smoother.
-                     * Added `vidwhacker' hack (not installed by default.)
-                     * Added `stairs' hack.
-                     * Split `escher' into `cage' and `moebius', as per
-                       xlockmore.
-                     * Changed subprocess handling to use sigaction() instead
-                       of signal() if it's available (this is necessary for
-                       SCO but should work fine on other systems too.)
-                     * Various other tweaks.
-Changes since 2.13:   * Better fix for the Motif drag-and-die lossage.
-                     * Put in some kludges to work around a LessTif bug.
-                     * XScreenSaver is known to work with LessTif 0.82 now.
-                     * Made fading work on high-end SGI video hardware.
-                     * Fixed another SGI-specific bug in screen grabbing;
-                       will the madness never cease?
-                     * Fixed another crash in `xlyap'.
-Changes since 2.12:   * Made `decayscreen' do directions other than down.
-                     * Improved `puzzle'.
-                     * Fixed a crash in `xlyap'.
-                     * Added CDE info to the man page, removed `cde.txt'.
-                     * Configure tweaks for Zippy.
-                     * Turned off the signal handling in `bubbles' because
-                       it was sometimes failing to die.
-                     * Added `hacks/xscreensaver-sgigl.c' to make it possible
-                       to run SGI's ElectroPaint hack (/usr/demos/bin/ep)
-                       with xscreensaver.  Finally!
-                     * Fixed a buffer overrun in the locking code that some
-                       wily, malicious cracker must have slipped in.
-                     * Disabled Motif drag-and-drool in the dialog box
-                       buttons, since it's broken in some old versions of
-                       Motif.
-Changes since 2.11:   * Added `README.debugging'.
-                     * Added `puzzle' hack.
-                     * Added `xlyap' hack.
-                     * Added `default-n' as a visual name, so that one can
-                       have -install on by default, but turn it off for
-                       certain poorly-behaved hacks (like xv.)
-                     * Added support for grabbing frames of external video
-                       (on SGI) to the screen-grabbing hacks (decayscreen,
-                       slidescreen, slip, blitspin, and puzzle.)
-                     * Improved look of tiles in `slidescreen'; fixed its
-                       color allocation problem.
-Changes since 2.10:   * Tweaked `blitspin', added it to the default list.
-                     * Added `lissie', `mountain', `triangle', `worm',
-                       `rotor', and `ant' from xlockmore.
-                     * Updated `sierpinski', `galaxy', and `lisa'.
-                     * Thickened the lines in `braid' and `lmorph'.
-                     * Updated VMS makefiles.
-                     * Renamed `fract' to `vines'.
-                     * Added `xjack' hack.
-                     * Made a few more hacks use erase.c, and added a few
-                       more wipe styles.
-                     * Fixed compilation problem with Sun's version of OpenGL.
-                     * Added ability to use sigaction() instead of signal()
-                       to work around a SCO kernel bug.
-Changes since 2.09:   * Fixed colormap bugs in `rd-bomb'; sped up `coral'.
-                     * Configure tweaks for *BSD.
-Changes since 2.07:   * New hacks `rd-bomb' and `coral'.
-                     * New version of `maze' with some new algorithms.
-                     * New colorized version of `rocks'.
-                     * Fixed a bug in qix on 64-bit machines.
-                     * Fixed a bug in the -time option.
-                     * Fixed a bug in configure related to LessTif.
-Changes since 2.06:   * Minor header tweaks in windows.c and flag.c.
-                     * Made multi-architecture ($VPATH) builds work properly.
-                     * Merged new GL stuff from xlockmore (rubik, morph3d.)
-                     * Fixed intermittent crashes in `imsmap' and `munch'.
-                     * Added `fadeplot' hack from xlockmore.
-Changes since 2.05:   * Merged in VMS support from Patrick Moreau.
-Changes since 2.04:   * Fixed a MIT-SCREEN-SAVER-related crash, and tweaked
-                       configure to detect the extra-random -Xss library.
-Changes since 2.03:   * HP configure tweaks.  Detect and warn about LessTif.
-                     * Fixed low-color behavior of `goop', `pyro', `starfish',
-                       `greynetic', `flame', `halo', and `moire'.
-Changes since 2.02:   * Fixed flicker in `pipes'.  Fixed 3d in `bouboule'.
-                     * Added `munch' hack.
-                     * Added basic dependencies to the Makefile.in files.
-Changes since 2.01:   * Fixes for compiling with the MIT saver extension.
-                     * Made the yow/fortune program be a configure option.
-                     * Various configure tweaks.
-Changes since 2.00:   * Added `goop' and `starfish' hacks.
-                     * Added colomap cycling to `halo'.
-                     * Made `attraction' use the new colormap allocator.
-                     * Added better $PATH diagnostics.
-                     * There was a bug in frand!  Color selection should be
-                       much improved now.
-Changes since 1.34:   * Converted to use `configure' instead of `imake'.
-                     * ANSI C is now required.
-                     * Added Kerberos locking support, from Nat Lanza.
-                     * Made the stderr text use overlay planes, if possible.
-                     * Reworked the xlockmore compatibility stuff again.
-                     * Added `gears', `superquadrics', `escher', `pipes',
-                       and `sproingies' hacks (depend on OpenGL.)
-Changes since 1.33:   * Fixed some bugs, made fading be a little smoother.
-Changes since 1.32:   * Made it work with multi-headed displays.
-                     * Generalized sub-process management (Unix sucks!)
-                     * Added interactive mouse frobbing to Julia.
-                     * Added (untested) support for HPUX shadow passwords.
-                     * Made normal non-shadow passwords be checked if the
-                       shadow passwords aren't accessible for some reason.
-Changes since 1.31:   * Removed *colorPrograms and *monoPrograms resources:
-                       made it possible to specify the desired visual on a
-                       per-hack basis.
-                     * Cleaned up / restructured the driver: no more globals.
-                     * Made the Motif and Athena dialogs share more code.
-                     * Probably fixed some Athena colormap-installation bugs.
-                     * Fixed screen grabbing (cmap) on SGI 12-bit PseudoColor.
-                     * Fixed divide-by-zero in bright random colormaps.
-                     * Added an improved version of xlock's `flag' hack.
-                     * Made unfading work better, and not flicker on SGIs.
-                     * Added `sphere', `forest', `lisa' hacks from xlockmore.
-                     * Added (untested) support for SunOS Adjunct passwords.
-Changes since 1.30:   * Improved colors and colormap cycling of many hacks.
-                     * Cleaned up xlockmore compatibility layer.
-                     * Made `blitspin' able to grab an image off the screen.
-                     * Ported `swirl' and `bouboule' hacks from xlockmore.
-                     * Made the driver more careful about not leaving bits on
-                       the screen, or allowing other windows to raise
-                       themselves: it now re-blanks the screen every so often.
-                     * Added `-time' option to `xscreensaver-command'.
-                     * Improved SGI screen-grabbing some more: now it can grab
-                       TrueColor screens into PseudoColor windows and have the
-                       colors still come out semi-reasonably.
-Changes since 1.29:   * Made `slidescreen' and `decayscreen' work better on
-                       SGIs when windows of different visuals are present, by
-                       using the XReadDisplay() extension to get a true 24-bit
-                       image out of the frame buffer.
-                     * Made `noseguy' be in color, if compiled with XPM.
-                     * Ported `braid', `drift', `fract', `galaxy', `grav',
-                       `ifs', `julia', `laser', `lightning', `penrose',
-                       `sierpinski', `slip', `spiral', and `strange' hacks
-                       from xlockmore.
-                     * Merged `hopalong' hack with a more recent version.
-                     * Added `cde.txt'.
-Changes since 1.27:   * Added `deco', `moire', and `kaleidescope' hacks.
-                     * Merged in support for non-Motif locking and demo mode.
-                     * Made `blitspin' and `bubbles' work in TrueColor.
-                     * Fixed a stupid bug I introduced in `imsmap'.
-                     * Added `poly' and `gravity' options to `qix'.
-Changes since 1.26:   * Added support for SGI SCREEN_SAVER extension.
-                     * Made `fade' and `unfade' work on 8-bit SGIs.
-                     * Made the dialog boxes more Motify.
-                     * Added `bubbles' hack.
-Changes since 1.25:   * Added `lmorph' hack.
-                     * Added viscosity and mouse-control to attraction.
-                     * Fixed possible bad color choices in qix and attraction.
-                     * Added ramp-mode to halo.
-                     * Added a new RNG, which is faster and more portable
-                       than using the RNG in libc.
-                     * Made locking work on SCO.
-                     * Various other minor tweaks that I don't remember.
-Changes since 1.24:   * Made it capture the stdout/stderr of its subprocesses
-                       and present them on the screensaver window itself.
-                     * Made demo mode work correctly with non-default visuals
-                       and color maps, instead of always using the defaults.
-                     * Added -visual argument to all included screenhacks.
-                     * Support for the R6 MIT-SCREEN-SAVER server extension.
-                     * Made the demo mode list scroll properly.
-                     * Added `pedal' hack.
-Changes since 1.23:   * Fixed some private-colormap oddities in slidescreen,
-                       decayscreen, and xroger.  Fixed apparent conservation-
-                       of-mass problem in pyro; made the shrapnel round.
-Changes since 1.22:   * Minor tweaks for IRIX5; fixed locking race condition.
-Changes since 1.21:   * Minor tweaks for X11R6.
-                     * Fixes for non-default visuals.
-Changes since 1.20:   * Fixed bug in color blitspin; added default image.
-                     * Added diagnostics to noseguy.  Fixed off-by-one
-                       error in flame.  Added some missing casts.
-Changes since 1.18:   * Added `flame' hack.
-                     * Fixed a minor Motif dialog text field bug.
-                     * Fixed yet another XPointer-not-defined-in-R4 bug.
-Changes since 1.17:   * Added support for shadow password files.
-                     * Fixed some Motif-related locking bugs.
-                     * Added diagnostics when locking is disabled.
-                     * Made blitspin able to use the XPM library.
-                     * Added `decayscreen' hack.
-Changes since 1.16:   * Added `halo' hack.
-Changes since 1.15:   * Portability fixes.
-Changes since 1.14:   * Broke the driver up into more source files.
-                     * Moved the hacks into their own directory.
-                     * Made all `time' parameters accept the 00:00:00 syntax,
-                       so that even the parameters which are normally read as
-                       minutes can be specified in seconds.
-                     * Added colormap cycling to `imsmap'.
-                     * Made hyper work with K&R compilers.
-Changes since 1.13:   * Added `orbit' option to `attraction' hack.
-                     * Added `lock-timeout' option.
-                     * Cleaned up options of `maze' hack.
-Changes since 1.8:    * Added demo mode, and locking.
-                     * Added `maze' hack.
-                     * Added `norotate' option to `rocks' hack.
diff --git a/README.VMS b/README.VMS
deleted file mode 100644 (file)
index d190344..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-OpenVMS port of Xscreensavser version 2.10     October 1997
-==========================================
-
-Xscreensaver distribution can be found in 3 subdirectories:
-
-[.DRIVER]   The Xscreensaver and Xscreensaver-command programs.
-[.HACKS]    Graphic demos ,can be run either through the xscreensaver program 
-            or standalone.
-[.UTILS]    A small libraries of various utilities.
-
-This port has been tested with  VAX VMS 6.1 (compiled with DEC 5 5.0 and
-Motif 1.2) and AXP VMS 6.2 (compiled with DEC C 5.0 and Motif 1.2-4). 
-
-To rebuild, you need to rebuild [.UTILS] directory first and create the
-object library (look at the end of COMPILE*.COM procedure).
-
-You can now build the [.HACKS] directory and the [.DRIVER] directory.
-
-A one-step build is now available via the MAKEVMS.COM script. 
-
-WARNING : before building [.HACKS], you may need to correct some of the
-DECwindows bitmap files. Some files are bogus !! (they have a long line of 
-null chars  at the end). These files are under 
-SYS$COMMON:[DECW$INCLUDE.BITMAPS] directory:
-
-STIPPLE.XBM
-HLINES2.XBM
-LIGHT_GRAY.XBM
-ROOT_WEAVES.XBM
-VLINES2.XBM
-
-These files are all used by Greynetic demo.
-
-Nota: link procedure automagically select appropriate X and Motif Libraries
-(X11R4/Motif 1.1 - X11R5/Motif 1.2). 
-
-The SETUP.COM procedure gives you a definition of all DCL foreign command
-symbols needed to run Xscreensaver and all the graphic hacks. You need to
-modify this procedure if you install these programs in another directory tree.
-
-You can easily add new graphic demos without recompiling Xscreensaver. You just
-need to add them in resource file XSCREENSAVER.DAT. This file (originally
-present in [.DRIVER] directory ) can be installed under your SYS$LOGIN 
-directory for a per-user customization basis. You can also install it under 
-the system-wide user resource directory SYS$COMMON:[DECW$DEFAULT.USER] 
-(with (W:RE) protections). The new graphics hack must be run in root-window 
-mode to be accepted by Xscreensaver.
-
-The graphic demos are spawn into subprocess created by the system() call (in
-the Unix version the execvp() call is used).
-
-The VMS passord checking programs were picked up in the Xlock distribution.
-
-Enjoy,
-
-Patrick MOREAU - CENA/Athis-Mons - FRANCE  (pmoreau@cena.dgac.fr)
-                                           (moreau_p@decus.decus.fr)
diff --git a/README.debugging b/README.debugging
deleted file mode 100644 (file)
index 31364db..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-
-                              XScreenSaver
-
-              a handy guide for creating useful bug reports
-
-                                --------
-
-    It's hard to imagine, but sometimes, xscreensaver has bugs.  This
-    document gives some hints for isolating them; the more information
-    you can give me about the problem, the better the odds that I'll be
-    able to fix it.  But, if you don't have time to go through these
-    steps, please report the bug anyway -- even vague bug reports can
-    be better than no bug report at all.
-
-                                --------
-STEP ZERO:
-
-    What are you doing here?  Go read README, and then the man page.
-
-STEP ZERO, PART TWO:
-
-    Do you have the most recent version?  Go make sure.
-    http://www.jwz.org/xscreensaver/.
-
-COMPILATION PROBLEMS:
-
-    If you get an error running the `configure' script, the first thing
-    you should try is deleting the `config.cache' file, and running again.
-    If that doesn't fix it, the information I'll need to see to make
-    sense of the problem is the following:
-
-        *  everything printed to stderr/stdout when you first ran
-           ./configure;
-
-        *  the contents of the `config.log' file.
-
-    Make sure you blow away the config.cache file before regenerating
-    this info, or else the `config.log' file will be mostly empty/useless.
-
-    Experience seems to show that the most common configure problem is
-    that sites have gcc installed, but installed improperly.  The
-    configure script will always try to use gcc in preference to another
-    compiler if gcc exists, so if gcc exists but is broken, it won't
-    work.  Your options are:
-
-        *  get someone to fix the gcc installation;
-
-        *  rearrange your $PATH so that the broken gcc is not on it;
-
-        *  or pass $CC in the environment, like so:
-
-              csh:  setenv CC cc ; ./configure
-              sh:   CC=cc ; ./configure
-
-    Before doing this, you'll need to nuke `config.cache'.
-
-    If you get errors about not being able to find Motif or Athena (the
-    Xm/ or Xaw/ header files), and you can't find them on your system,
-    then your system is horked and your vendor is lame.  Perhaps the
-    problem is that you don't have some kind of ``development option''
-    installed.  Xt/ and Xaw/ (Athena) are free and available on all
-    systems; Xm/ (Motif) is available on all commercial systems except
-    SunOS 4.x and some early releases of Solaris.  For Linux and other
-    free Unixes systems, a Motif clone is available from
-    http://www.lesstif.org/.
-
-RUN-TIME PROBLEMS:
-
-    For runtime errors, it's important to keep in mind that there are
-    two parts to xscreensaver: there is the screensaver driver process
-    (the daemon that detects idleness, deals with locking, and launches
-    the demos); and there are the demos themselves (independent programs
-    that draw pretty pictures.)
-
-        *  Compile with `make CFLAGS=-g' (so that if you get a core
-          dump, there will be debugging info in it.)
-
-        *  What platform are you running on?  What does the included
-           `./config.guess' shell script print?
-
-        *  Is the problem in the driver (`xscreensaver'), the GUI
-           (`xscreensaver-demo'), or in the graphics hacks?
-
-        *  If the problem is in the GUI, was the it built using
-           Motif, Lesstif, or Athena?  Which version?
-
-        *  If the problem is in one (or more) of the hacks, which ones?
-           If you're not sure, try running `xscreensaver-demo' to go
-           through the list of them and see which work and which don't.
-
-        *  Does the problem occur when running that hack by hand, in
-           its own window (i.e., when started with no command-line args)?
-
-        *  Does the problem occur when running that hack by hand, on
-           the root window (i.e., when started with the `-root' option)?
-
-        *  IMPORTANT: What visual are you using?  Send the output of
-           the `xdpyinfo' command.
-
-        *  Does the problem go away if you give the program a different
-           `-visual' argument?  (For example, `-visual pseudocolor' or
-           `-visual truecolor'.)
-
-        *  IMPORTANT: What exactly goes wrong?  No, I don't know what
-           you mean by "crash".  Does it print an "X Error" and exit?
-           Does it dump core?  Does it go into a loop?
-
-        *  If it dumps core, what does the core file say?  Run the
-           program under a debugger, and show me the stack trace.
-           To extract a stack trace from a core file with gdb, do this:
-
-              gdb ./the-program ./core
-              bt
-
-           To extract a stack trace from a core file with dbx, do this:
-
-              dbx ./the-program ./core
-              where
-
-           If the bottom few lines of the output don't include the functions
-          `main_loop()' and `main()', then something's wrong: are you sure
-           the core file came from that program?
-
-        *  If it gets an X error, where did it come from?  Run
-           xscreensaver with the `-sync' command-line option.  When `-sync'
-           is used, X errors will cause xscreensaver to dump a core file.
-           Look at the core file with a debugger and show me the stack trace,
-           as above: I need to know where in xscreensaver that X error came
-           from.
-
-    If the problem is with the xscreensaver process itself, or if you
-    can't figure out which demo is causing the problem, or if you can't
-    reproduce the problem in isolation, then you will need to turn on
-    and examine the debugging output of the driver process.
-
-        *  Start `xscreensaver' with the command-line arguments
-
-              -verbose -no-capture
-
-           This will cause it to write a lot of debugging info to the stderr
-           of the xscreensaver process (the `-verbose' option turns on the
-           diagnostics; the `-no-capture' option prevents the data from being
-           displayed on the screensaver window as well.)
-
-           You also might want to use the `-timestamp' option, which will
-           cause the xscreensaver messages to include the time at which
-           they were printed.
-
-        *  If the problem is intermittent, you might want to capture the
-           log information to a file and examine it later.  For example,
-           you could start it from your login script like this (csh syntax):
-
-              ( cd ~/src/xscreensaver/ ; \
-                xscreensaver -sync -verbose -timestamp -no-capture \
-                >>&LOG & )
-
-        *  Hackers only: If you're feeling adventurous enough to run gdb
-           on the xscreensaver driver process itself, make sure you've
-           read the commentary at the top of xscreensaver.c.
-
------------------------------------------------------------------------------
-                                             http://www.jwz.org/xscreensaver/
-                                                 Jamie Zawinski <jwz@jwz.org>
------------------------------------------------------------------------------
diff --git a/config.guess b/config.guess
deleted file mode 100755 (executable)
index e9e4455..0000000
+++ /dev/null
@@ -1,693 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 8/24/94.)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    alpha:OSF1:*:*)
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
-       exit 0 ;;
-    21064:Windows_NT:50:3)
-       echo alpha-dec-winnt3.5
-       exit 0 ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-cbm-sysv4
-       exit 0;;
-    amiga:NetBSD:*:*)
-      echo m68k-cbm-netbsd${UNAME_RELEASE}
-      exit 0 ;;
-    amiga:OpenBSD:*:*)
-      echo m68k-cbm-openbsd${UNAME_RELEASE}
-      exit 0 ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
-       exit 0;;
-    Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit 0 ;;
-    NILE:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit 0 ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit 0 ;;
-    i86pc:SunOS:5.*:*)
-       echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit 0 ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit 0 ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-       exit 0 ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
-       exit 0 ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
-       exit 0 ;;
-    atari*:NetBSD:*:*)
-       echo m68k-atari-netbsd${UNAME_RELEASE}
-       exit 0 ;;
-    atari*:OpenBSD:*:*)
-       echo m68k-atari-openbsd${UNAME_RELEASE}
-       exit 0 ;;
-    sun3*:NetBSD:*:*)
-       echo m68k-sun-netbsd${UNAME_RELEASE}
-       exit 0 ;;
-    sun3*:OpenBSD:*:*)
-       echo m68k-sun-openbsd${UNAME_RELEASE}
-       exit 0 ;;
-    mac68k:NetBSD:*:*)
-       echo m68k-apple-netbsd${UNAME_RELEASE}
-       exit 0 ;;
-    mac68k:OpenBSD:*:*)
-       echo m68k-apple-openbsd${UNAME_RELEASE}
-       exit 0 ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
-       exit 0 ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit 0 ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
-       exit 0 ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
-       exit 0 ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       sed 's/^        //' << EOF >dummy.c
-       int main (argc, argv) int argc; char **argv; {
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       ${CC-cc} dummy.c -o dummy \
-         && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-         && rm dummy.c dummy && exit 0
-       rm -f dummy.c dummy
-       echo mips-mips-riscos${UNAME_RELEASE}
-       exit 0 ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit 0 ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit 0 ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit 0 ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit 0 ;;
-    AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
-        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
-       if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-            -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
-               echo m88k-dg-dgux${UNAME_RELEASE}
-       else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
-       fi
-        else echo i586-dg-dgux${UNAME_RELEASE}
-        fi
-       exit 0 ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit 0 ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit 0 ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit 0 ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit 0 ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-       exit 0 ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
-       exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
-    i?86:AIX:*:*)
-       echo i386-ibm-aix
-       exit 0 ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               sed 's/^                //' << EOF >dummy.c
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-               rm -f dummy.c dummy
-               echo rs6000-ibm-aix3.2.5
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit 0 ;;
-    *:AIX:*:4)
-       if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=4.${UNAME_RELEASE}
-       fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-       exit 0 ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit 0 ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-       echo romp-ibm-bsd4.4
-       exit 0 ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-       exit 0 ;;                           # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit 0 ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit 0 ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit 0 ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit 0 ;;
-    9000/[3478]??:HP-UX:*:*)
-       case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
-           9000/8?? )            HP_ARCH=hppa1.0 ;;
-       esac
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-       exit 0 ;;
-    3050*:HI-UX:*:*)
-       sed 's/^        //' << EOF >dummy.c
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-       rm -f dummy.c dummy
-       echo unknown-hitachi-hiuxwe2
-       exit 0 ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-       echo hppa1.1-hp-bsd
-       exit 0 ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit 0 ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-       echo hppa1.1-hp-osf
-       exit 0 ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit 0 ;;
-    i?86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
-       else
-           echo ${UNAME_MACHINE}-unknown-osf1
-       fi
-       exit 0 ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit 0 ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-        exit 0 ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-        exit 0 ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-        exit 0 ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-        exit 0 ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-        exit 0 ;;
-    CRAY*X-MP:*:*:*)
-       echo xmp-cray-unicos
-        exit 0 ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE}
-       exit 0 ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
-       exit 0 ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE}
-       exit 0 ;;
-    CRAY-2:*:*:*)
-       echo cray2-cray-unicos
-        exit 0 ;;
-    F300:UNIX_System_V:*:*)
-        FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit 0 ;;
-    F301:UNIX_System_V:*:*)
-       echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
-       exit 0 ;;
-    hp3[0-9][05]:NetBSD:*:*)
-       echo m68k-hp-netbsd${UNAME_RELEASE}
-       exit 0 ;;
-    hp3[0-9][05]:OpenBSD:*:*)
-       echo m68k-hp-openbsd${UNAME_RELEASE}
-       exit 0 ;;
-    i?86:BSD/386:*:* | *:BSD/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-       exit 0 ;;
-    *:FreeBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-       exit 0 ;;
-    *:NetBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-       exit 0 ;;
-    *:OpenBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-       exit 0 ;;
-    i*:CYGWIN*:*)
-       echo i386-pc-cygwin32
-       exit 0 ;;
-    p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin32
-       exit 0 ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit 0 ;;
-    *:GNU:*:*)
-       echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-       exit 0 ;;
-    *:Linux:*:*)
-       # The BFD linker knows what the default object file format is, so
-       # first see if it will tell us.
-       ld_help_string=`ld --help 2>&1`
-       if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
-         echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then
-         echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then
-         echo "powerpc-unknown-linux-gnu" ; exit 0
-       elif test "${UNAME_MACHINE}" = "alpha" ; then
-         echo alpha-unknown-linux-gnu ; exit 0
-       elif test "${UNAME_MACHINE}" = "sparc" ; then
-         echo sparc-unknown-linux-gnu ; exit 0
-       else
-         # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us
-         # useful --help.  Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout.
-         test ! -d /usr/lib/ldscripts/. \
-           && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
-         # Determine whether the default compiler is a.out or elf
-         cat >dummy.c <<EOF
-main(argc, argv)
-int argc;
-char *argv[];
-{
-#ifdef __ELF__
-  printf ("%s-pc-linux-gnu\n", argv[1]);
-#else
-  printf ("%s-pc-linux-gnuaout\n", argv[1]);
-#endif
-  return 0;
-}
-EOF
-         ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
-         rm -f dummy.c dummy
-       fi ;;
-# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
-# are messed up and put the nodename in both sysname and nodename.
-    i?86:DYNIX/ptx:4*:*)
-       echo i386-sequent-sysv4
-       exit 0 ;;
-    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
-       else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
-       fi
-       exit 0 ;;
-    i?86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-       else
-               echo ${UNAME_MACHINE}-pc-sysv32
-       fi
-       exit 0 ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit 0 ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit 0 ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-       fi
-       exit 0 ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit 0 ;;
-    M68*:*:R3V[567]*:*)
-       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && echo i486-ncr-sysv4.3${OS_REL} && exit 0
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && echo i486-ncr-sysv4 && exit 0 ;;
-    m68*:LynxOS:2.*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit 0 ;;
-    i?86:LynxOS:2.*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-    rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
-       exit 0 ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit 0 ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo ${UNAME_MACHINE}-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit 0 ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit 0 ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit 0 ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
-       exit 0 ;;
-    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
-       else
-               echo mips-unknown-sysv${UNAME_RELEASE}
-       fi
-        exit 0 ;;
-    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                           # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-cat >dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-          "4"
-#else
-         ""
-#endif
-         ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
-  printf ("vax-dec-bsd\n"); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit 0 ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit 0 ;;
-    c34*)
-       echo c34-convex-bsd
-       exit 0 ;;
-    c38*)
-       echo c38-convex-bsd
-       exit 0 ;;
-    c4*)
-       echo c4-convex-bsd
-       exit 0 ;;
-    esac
-fi
-
-#echo '(Unable to guess system type)' 1>&2
-
-exit 1
diff --git a/config.h-vms b/config.h-vms
deleted file mode 100644 (file)
index 5dd8158..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-/* This is a config.h file that has been pregenerated (from config.h.in)
- * with settings that are correct for VMS.
- */
-
-
-
-/* config.h.in --- xscreensaver, Copyright (c) 1998 Jamie Zawinski.
- *
- *  The best way to set these parameters is by running the included `configure'
- *  script.  That examines your system, and generates `config.h' from 
- *  `config.h.in'.
- *
- *  If something goes very wrong, you can edit `config.h' directly, but beware
- *  that your changes will be lost if you ever run `configure' again.
- */
-
-
-/* *************************************************************************
-                          CONFIGURING SERVER EXTENSIONS
-   ************************************************************************* */
-
-/* Define this if you have the XReadDisplay extension (I think this is an
-   SGI-only thing; it's in <X11/extensions/readdisplay.h>.)  A few of the
-   screenhacks will take advantage of this if it's available.
- */
-#undef HAVE_READ_DISPLAY_EXTENSION
-
-/* Define this if you have the Iris Video Library (dmedia/vl.h on SGI.)
-   A few of the screenhacks will take advantage of this if it's available.
- */
-#undef HAVE_SGI_VIDEO
-
-/* Define this if you have the XHPDisableReset function (an HP only thing.)
- */
-#undef HAVE_XHPDISABLERESET
-
-/*  First, some background: there are three distinct server extensions which
- *  are useful to a screen saver program: they are XIDLE, MIT-SCREEN-SAVER, 
- *  and SCREEN_SAVER.
- *
- *  The XIDLE extension resides in .../contrib/extensions/xidle/ on the X11R5
- *  contrib tape.  This extension lets the client get accurate idle-time 
- *  information from the X server in a potentially more reliable way than by
- *  simply watching for keyboard and mouse activity.  However, the XIDLE 
- *  extension has apparently not been ported to X11R6.
- *
- *  The SCREEN_SAVER extension is found (as far as I know) only in the SGI
- *  X server, and it exists in all releases since (at least) Irix 5.  The
- *  relevant header file is /usr/include/X11/extensions/XScreenSaver.h.
- *
- *  The similarly-named MIT-SCREEN-SAVER extension came into existence long
- *  after the SGI SCREEN_SAVER extension was already in use, and resides in
- *  .../contrib/extensions/screensaver/ on the X11R6 contrib tape.  It is
- *  also found in certain recent X servers built in to NCD X terminals.
- *
- *     The MIT extension does basically the same thing that the XIDLE extension
- *     does, but there are two things wrong with it: first, because of the way
- *     the extension was designed, the `fade' option to XScreenSaver will be
- *     uglier: just before the screen fades out, there will be an unattractive
- *     flicker to black, because this extension blanks the screen *before*
- *     telling us that it is time to do so.  Second, this extension is known to
- *     be buggy; on the systems I use, it works, but some people have reported
- *     X server crashes as a result of using it.  XScreenSaver uses this
- *     extension rather conservatively, because when I tried to use any of its
- *     more complicated features, I could get it to crash the server at the
- *     drop of a hat.
- *
- *     In short, the MIT-SCREEN-SAVER extension is a piece of junk.  The older
- *     SGI SCREEN_SAVER extension works great, as does XIDLE.  It would be nice
- *     If those two existed on more systems, that is, would be adopted by the
- *     X Consortium in favor of their inferior "not-invented-here" entry.
- */
-
-/*  Define this if you have the XIDLE extension installed. If you have the
- *  XIDLE extension, this is recommended.  (You have this extension if the
- *  file /usr/include/X11/extensions/xidle.h exists.)  Turning on this flag
- *  lets XScreenSaver work better with servers which support this extension; 
- *  but it will still work with servers which do not suport it, so it's a good
- *  idea to compile in support for it if you can.
- */
-#undef HAVE_XIDLE_EXTENSION
-
-/*  Define this if you have the MIT-SCREEN-SAVER extension installed.  See the
- *  caveats about this extension, above.  (It's available if the file
- *  /usr/include/X11/extensions/scrnsaver.h exists.)
- */
-#undef HAVE_MIT_SAVER_EXTENSION
-
-/*  Define this if you have the SGI SCREEN_SAVER extension.  This is standard
- *  on Irix systems, and not available elsewhere.
- */
-#undef HAVE_SGI_SAVER_EXTENSION
-
-/*  Define this if you have the SGI-VIDEO-CONTROL extension.  This is standard
- *  on Irix systems, and not available elsewhere.
- */
-#undef HAVE_SGI_VC_EXTENSION
-
-/*  Define this if you have the XDPMS extension.  This is standard on
- *  sufficiently-recent XFree86 systems, and possibly elsewhere.  (It's
- *  available if the file /usr/include/X11/extensions/dpms.h exists.)
- */
-#define HAVE_DPMS_EXTENSION 1
-
-
-/* *************************************************************************
-                          CONFIGURING GRAPHICS TOOLKITS
-   ************************************************************************* */
-
-/*  Define this if you have Motif.
- */
-#define HAVE_MOTIF 1
-
-/*  Define this if you don't have Motif, but you have Athena (-Xaw).
- */
-#undef HAVE_ATHENA
-
-/*  Define this if you have Athena, and the version you have includes the
- *  XawViewportSetCoordinates function in Viewport.h (some old versions of
- *  the library didn't have this function.)
- */
-#undef HAVE_XawViewportSetCoordinates
-
-/*  Define this if you have the XPM library installed.  Some of the demos can
- *  make use of this if it is available.
- */
-#define HAVE_XPM 1
-
-/*  Define this if you have the Xmu library.  This is standard part of X, and
- *  if your vendor doesn't ship it, you should report that as a bug.
- */
-#define HAVE_XMU 1
-
-/*  Define this if you have OpenGL.  Some of the demos require it, so if you
- *  don't have it, then those particular demos won't be built.  (This won't
- *  affect the screen saver as a whole.)
- */
-#undef HAVE_GL
-
-/*  Define this if you have OpenGL, but it's the MesaGL variant.  (The 
-    libraries have different names.)  (HAVE_GL should be defined too.)
- */
-#undef HAVE_MESA_GL
-
-/*  Define this if your version of OpenGL has the glBindTexture() routine.
-    This is the case for OpenGL 1.1, but not for OpenGL 1.0.
- */
-#undef HAVE_GLBINDTEXTURE
-
-/*  Define this if you have the X Shared Memory Extension.
- */
-#undef HAVE_XSHM_EXTENSION
-
-/*  Some screenhacks like to run an external program to generate random pieces
-    of text; set this to the one you like ("yow" and "fortune" are the most
-    likely prospects.)  Note that this is just the default; X resources can
-    be used to override it.
- */
-#define ZIPPY_PROGRAM "fortune"
-
-
-
-/* *************************************************************************
-                       CONFIGURING PASSWORD AUTHENTICATION
-   ************************************************************************* */
-
-/* Define this to remove the option of locking the screen at all.
- */
-#undef NO_LOCKING
-
-/*  Define this if you want to use Kerberos authentication to lock/unlock the
- *  screen instead of your local password.  This currently uses Kerberos V4, 
- *  but a V5 server with V4 compatibility will work.  WARNING: DO NOT USE AFS
- *  string-to-key passwords with this option. This option currently *only* 
- *  works with standard Kerberos des_string_to_key.  If your password is an
- *  AFS password and not a kerberos password, it will not authenticate 
- *  properly. See the comments in driver/kpasswd.c for more information if you
- *  need it. 
- */
-#undef HAVE_KERBEROS
-
-
-/*  Define this if your system uses `shadow' passwords, that is, the passwords
- *  live in /etc/shadow instead of /etc/passwd, and one reads them with
- *  getspnam() instead of getpwnam().  (Note that SCO systems do some random
- *  other thing; others might as well.  See the ifdefs in driver/passwd.c if
- *  you're having trouble related to reading passwords.)
- */
-#undef HAVE_SHADOW_PASSWD
-
-/*  Define this if your system is Digital or SCO Unix with so-called ``Enhanced
-    Security'', that is, the passwords live in /tcb/files/auth/<x>/<xyz> 
-    instead of in /etc/passwd, and one reads them with getprpwnam() instead 
-    of getpwnam().
- */
-#undef HAVE_ENHANCED_PASSWD
-
-/*  Define this if your system is Solaris with ``adjunct'' passwords (this is
-    the version where one gets at the passwords with getpwanam() instead of
-    getpwnam().)  I haven't tested this one, let me know if it works.
- */
-#undef HAVE_ADJUNCT_PASSWD
-
-/*  Define this if you are running HPUX with so-called ``Secure Passwords'' 
-    (if you have /usr/include/hpsecurity.h, you probably have this.)  I
-    haven't tested this one, let me know if it works.
- */
-#undef HAVE_HPUX_PASSWD
-
-/*  Define this if you are on a system that supports the VT_LOCKSWITCH and
-    VT_UNLOCKSWITCH ioctls.  If this is defined, then when the screen is
-    locked, switching to another virtual terminal will also be prevented.
-    That is, the whole console will be locked, rather than just the VT on
-    which X is running.
- */
-#define HAVE_VT_LOCKSWITCH 1
-
-
-/* *************************************************************************
-                            OTHER C ENVIRONMENT JUNK
-   ************************************************************************* */
-
-/* Define this to void* if you're using X11R4 or earlier.  */
-#undef XPointer
-
-/* Define if you have the nice function.  */
-#undef HAVE_NICE
-
-/* Define if you have the setpriority function.  */
-#undef HAVE_SETPRIORITY
-
-/* Define to empty if the keyword does not work.  */
-#undef const
-
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
-#undef HAVE_SYS_WAIT_H
-
-/* Define as __inline if that's what the C compiler calls it.  */
-#undef inline
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef mode_t
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef pid_t
-
-/* Define as the return type of signal handlers (int or void).  */
-#define RETSIGTYPE void
-
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-#undef size_t
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */
-#undef TIME_WITH_SYS_TIME
-
-/* Define if you have the gettimeofday function.  */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define if gettimeofday requires two arguments.  */
-#undef GETTIMEOFDAY_TWO_ARGS
-
-/* Define if you have the putenv function.  */
-#undef HAVE_PUTENV
-
-/* Define if you have the select function.  */
-#undef HAVE_SELECT
-
-/* Define if you have the getcwd function.  */
-#undef HAVE_GETCWD
-
-/* Define if you have the getcwd function.  */
-#undef HAVE_GETWD
-
-/* Define if you have the uname function.  */
-#undef HAVE_UNAME
-#if (__VMS_VER >= 70000000)
-# define HAVE_UNAME 1
-#endif
-
-/* Define if you have the fcntl function.  */
-#undef HAVE_FCNTL
-
-/* Define if you have the sigaction function.  */
-#undef HAVE_SIGACTION
-
-/* Define if you have the <unistd.h> header file.  */
-#undef HAVE_UNISTD_H
-
-/* Define if you have the <crypt.h> header file.  */
-#undef HAVE_CRYPT_H
-
-/* Define to use sigaction() instead of signal() for SIGCHLD-related activity.
-   This is necessary at least on SCO OpenServer 5, due to a Unix kernel bug.
- */
-#undef USE_SIGACTION
diff --git a/config.h.in b/config.h.in
deleted file mode 100644 (file)
index 1d5cd07..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-/* config.h.in --- xscreensaver, Copyright (c) 1998 Jamie Zawinski.
- *
- *  The best way to set these parameters is by running the included `configure'
- *  script.  That examines your system, and generates `config.h' from 
- *  `config.h.in'.
- *
- *  If something goes very wrong, you can edit `config.h' directly, but beware
- *  that your changes will be lost if you ever run `configure' again.
- */
-
-
-/* *************************************************************************
-                          CONFIGURING SERVER EXTENSIONS
-   ************************************************************************* */
-
-/* Define this if you have the XReadDisplay extension (I think this is an
-   SGI-only thing; it's in <X11/extensions/readdisplay.h>.)  A few of the
-   screenhacks will take advantage of this if it's available.
- */
-#undef HAVE_READ_DISPLAY_EXTENSION
-
-/* Define this if you have the Iris Video Library (dmedia/vl.h on SGI.)
-   A few of the screenhacks will take advantage of this if it's available.
- */
-#undef HAVE_SGI_VIDEO
-
-/* Define this if you have the XHPDisableReset function (an HP only thing.)
- */
-#undef HAVE_XHPDISABLERESET
-
-/*  First, some background: there are three distinct server extensions which
- *  are useful to a screen saver program: they are XIDLE, MIT-SCREEN-SAVER, 
- *  and SCREEN_SAVER.
- *
- *  The XIDLE extension resides in .../contrib/extensions/xidle/ on the X11R5
- *  contrib tape.  This extension lets the client get accurate idle-time 
- *  information from the X server in a potentially more reliable way than by
- *  simply watching for keyboard and mouse activity.  However, the XIDLE 
- *  extension has apparently not been ported to X11R6.
- *
- *  The SCREEN_SAVER extension is found (as far as I know) only in the SGI
- *  X server, and it exists in all releases since (at least) Irix 5.  The
- *  relevant header file is /usr/include/X11/extensions/XScreenSaver.h.
- *
- *  The similarly-named MIT-SCREEN-SAVER extension came into existence long
- *  after the SGI SCREEN_SAVER extension was already in use, and resides in
- *  .../contrib/extensions/screensaver/ on the X11R6 contrib tape.  It is
- *  also found in certain recent X servers built in to NCD X terminals.
- *
- *     The MIT extension does basically the same thing that the XIDLE extension
- *     does, but there are two things wrong with it: first, because of the way
- *     the extension was designed, the `fade' option to XScreenSaver will be
- *     uglier: just before the screen fades out, there will be an unattractive
- *     flicker to black, because this extension blanks the screen *before*
- *     telling us that it is time to do so.  Second, this extension is known to
- *     be buggy; on the systems I use, it works, but some people have reported
- *     X server crashes as a result of using it.  XScreenSaver uses this
- *     extension rather conservatively, because when I tried to use any of its
- *     more complicated features, I could get it to crash the server at the
- *     drop of a hat.
- *
- *     In short, the MIT-SCREEN-SAVER extension is a piece of junk.  The older
- *     SGI SCREEN_SAVER extension works great, as does XIDLE.  It would be nice
- *     If those two existed on more systems, that is, would be adopted by the
- *     X Consortium in favor of their inferior "not-invented-here" entry.
- */
-
-/*  Define this if you have the XIDLE extension installed. If you have the
- *  XIDLE extension, this is recommended.  (You have this extension if the
- *  file /usr/include/X11/extensions/xidle.h exists.)  Turning on this flag
- *  lets XScreenSaver work better with servers which support this extension; 
- *  but it will still work with servers which do not suport it, so it's a good
- *  idea to compile in support for it if you can.
- */
-#undef HAVE_XIDLE_EXTENSION
-
-/*  Define this if you have the MIT-SCREEN-SAVER extension installed.  See the
- *  caveats about this extension, above.  (It's available if the file
- *  /usr/include/X11/extensions/scrnsaver.h exists.)
- */
-#undef HAVE_MIT_SAVER_EXTENSION
-
-/*  Define this if you have the SGI SCREEN_SAVER extension.  This is standard
- *  on Irix systems, and not available elsewhere.
- */
-#undef HAVE_SGI_SAVER_EXTENSION
-
-/*  Define this if you have the SGI-VIDEO-CONTROL extension.  This is standard
- *  on Irix systems, and not available elsewhere.
- */
-#undef HAVE_SGI_VC_EXTENSION
-
-/*  Define this if you have the XDPMS extension.  This is standard on
- *  sufficiently-recent XFree86 systems, and possibly elsewhere.  (It's
- *  available if the file /usr/include/X11/extensions/dpms.h exists.)
- */
-#undef HAVE_DPMS_EXTENSION
-
-/*  Define this if you have the functions XF86VidModeGetModeLine() and
- *  XF86VidModeGetViewPort(), in support of virtual desktops where the
- *  X server's root window is bigger than the actual screen.  This is
- *  an XFree86 thing, and probably doesn't exist elsewhere.  (It's
- *  available if the file /usr/include/X11/extensions/xf86vmode.h exists.)
- */
-#undef HAVE_XF86VMODE
-
-/*  Define this if you have a Linux-like /proc/interrupts file which can be
- *  examined to determine when keyboard activity has occurred.
- */
-#undef HAVE_PROC_INTERRUPTS
-
-
-
-/* *************************************************************************
-                          CONFIGURING GRAPHICS TOOLKITS
-   ************************************************************************* */
-
-/*  Define this if you have Motif.
- */
-#undef HAVE_MOTIF
-
-/*  Define this if you don't have Motif, but you have Athena (-Xaw).
- */
-#undef HAVE_ATHENA
-
-/*  Define this if you have Athena, and the version you have includes the
- *  XawViewportSetCoordinates function in Viewport.h (some old versions of
- *  the library didn't have this function.)
- */
-#undef HAVE_XawViewportSetCoordinates
-
-/*  Define this if you have the XPM library installed.  Some of the demos can
- *  make use of this if it is available.
- */
-#undef HAVE_XPM
-
-/*  Define this if you have the Xmu library.  This is standard part of X, and
- *  if your vendor doesn't ship it, you should report that as a bug.
- */
-#undef HAVE_XMU
-
-/*  Define this if you have OpenGL.  Some of the demos require it, so if you
- *  don't have it, then those particular demos won't be built.  (This won't
- *  affect the screen saver as a whole.)
- */
-#undef HAVE_GL
-
-/*  Define this if you have OpenGL, but it's the MesaGL variant.  (The 
-    libraries have different names.)  (HAVE_GL should be defined too.)
- */
-#undef HAVE_MESA_GL
-
-/*  Define this if your version of OpenGL has the glBindTexture() routine.
-    This is the case for OpenGL 1.1, but not for OpenGL 1.0.
- */
-#undef HAVE_GLBINDTEXTURE
-
-/*  Define this if the `xscreensaver' process itself (the driver process)
-    should be linked against GL.  Most systems won't want this (in particular,
-    if you're using Linux and/or Mesa, you don't want this) but SGI systems
-    do want this.  It may also be useful on other systems that have serious
-    GL support -- you only need this if you have a lot of different visuals,
-    not all of which work with GL programs.
- */
-#undef DAEMON_USE_GL
-
-/*  Define this if you have the X Shared Memory Extension.
- */
-#undef HAVE_XSHM_EXTENSION
-
-/*  Define this if you have the X Double Buffer Extension.
- */
-#undef HAVE_DOUBLE_BUFFER_EXTENSION
-
-/*  Some screenhacks like to run an external program to generate random pieces
-    of text; set this to the one you like ("yow" and "fortune" are the most
-    likely prospects.)  Note that this is just the default; X resources can
-    be used to override it.
- */
-#define ZIPPY_PROGRAM "fortune"
-
-
-
-/* *************************************************************************
-                       CONFIGURING PASSWORD AUTHENTICATION
-   ************************************************************************* */
-
-/* Define this to remove the option of locking the screen at all.
- */
-#undef NO_LOCKING
-
-/*  Define this if you want to use Kerberos authentication to lock/unlock the
- *  screen instead of your local password.  This currently uses Kerberos V4, 
- *  but a V5 server with V4 compatibility will work.  WARNING: DO NOT USE AFS
- *  string-to-key passwords with this option. This option currently *only* 
- *  works with standard Kerberos des_string_to_key.  If your password is an
- *  AFS password and not a kerberos password, it will not authenticate 
- *  properly. See the comments in driver/kpasswd.c for more information if you
- *  need it. 
- */
-#undef HAVE_KERBEROS
-
-/*  Define this if you want to use PAM (Pluggable Authentication Modules)
- *  to lock/unlock the screen, instead of standard /etc/passwd authentication.
- */
-#undef HAVE_PAM
-
-/*  If PAM is being used, this is the name of the PAM service that xscreensaver
- *  will authenticate as.  The default is "xscreensaver", which means that the
- *  PAM library will look for an "xscreensaver" line in /etc/pam.conf, or (on
- *  recent Linux systems) will look for a file called /etc/pam.d/xscreensaver.
- *  Some systems might already have a PAM installation that is configured for
- *  xlock, so setting this to "xlock" would also work in that case.
- */
-#define PAM_SERVICE_NAME "xscreensaver"
-
-/* Define if you have PAM and pam_strerror() requires two arguments.  */
-#undef PAM_STRERROR_TWO_ARGS
-
-/*  Define this if your system uses `shadow' passwords, that is, the passwords
- *  live in /etc/shadow instead of /etc/passwd, and one reads them with
- *  getspnam() instead of getpwnam().  (Note that SCO systems do some random
- *  other thing; others might as well.  See the ifdefs in driver/passwd-pwent.c
- *  if you're having trouble related to reading passwords.)
- */
-#undef HAVE_SHADOW_PASSWD
-
-/*  Define this if your system is Digital or SCO Unix with so-called ``Enhanced
-    Security'', that is, the passwords live in /tcb/files/auth/<x>/<xyz> 
-    instead of in /etc/passwd, and one reads them with getprpwnam() instead 
-    of getpwnam().
- */
-#undef HAVE_ENHANCED_PASSWD
-
-/*  Define this if your system is Solaris with ``adjunct'' passwords (this is
-    the version where one gets at the passwords with getpwanam() instead of
-    getpwnam().)  I haven't tested this one, let me know if it works.
- */
-#undef HAVE_ADJUNCT_PASSWD
-
-/*  Define this if you are running HPUX with so-called ``Secure Passwords'' 
-    (if you have /usr/include/hpsecurity.h, you probably have this.)  I
-    haven't tested this one, let me know if it works.
- */
-#undef HAVE_HPUX_PASSWD
-
-/*  Define this if you are on a system that supports the VT_LOCKSWITCH and
-    VT_UNLOCKSWITCH ioctls.  If this is defined, then when the screen is
-    locked, switching to another virtual terminal will also be prevented.
-    That is, the whole console will be locked, rather than just the VT on
-    which X is running.  (Well, that's the theory anyway -- in practice,
-    I haven't yet figured out how to make that work.)
- */
-#undef HAVE_VT_LOCKSWITCH
-
-
-/* Define this if you the openlog(), syslog(), and closelog() functions.
-   This is used for logging failed login attempts.
- */
-#undef HAVE_SYSLOG
-
-
-/* *************************************************************************
-                            OTHER C ENVIRONMENT JUNK
-   ************************************************************************* */
-
-/* Define this to void* if you're using X11R4 or earlier.  */
-#undef XPointer
-
-/* Define if you have the nice function.  */
-#undef HAVE_NICE
-
-/* Define if you have the setpriority function.  */
-#undef HAVE_SETPRIORITY
-
-/* Define to empty if the keyword does not work.  */
-#undef const
-
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
-#undef HAVE_SYS_WAIT_H
-
-/* Define as __inline if that's what the C compiler calls it.  */
-#undef inline
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef mode_t
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef pid_t
-
-/* Define as the return type of signal handlers (int or void).  */
-#undef RETSIGTYPE
-
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-#undef size_t
-
-/* Define if you have the ANSI C header files.  */
-#undef STDC_HEADERS
-
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */
-#undef TIME_WITH_SYS_TIME
-
-/* Define if you have the gettimeofday function.  */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define if gettimeofday requires two arguments.  */
-#undef GETTIMEOFDAY_TWO_ARGS
-
-/* Define if you have the putenv function.  */
-#undef HAVE_PUTENV
-
-/* Define if you have the select function.  */
-#undef HAVE_SELECT
-
-/* Define if you have the getcwd function.  */
-#undef HAVE_GETCWD
-
-/* Define if you have the getcwd function.  */
-#undef HAVE_GETWD
-
-/* Define if you have the uname function.  */
-#undef HAVE_UNAME
-
-/* Define if you have the fcntl function.  */
-#undef HAVE_FCNTL
-
-/* Define if you have the sigaction function.  */
-#undef HAVE_SIGACTION
-
-/* Define if you have the <unistd.h> header file.  */
-#undef HAVE_UNISTD_H
-
-/* Define if you have the <crypt.h> header file.  */
-#undef HAVE_CRYPT_H
-
-/* Define if you have <sys/select.h> that defines fd_set and FD_SET.  */
-#undef HAVE_SYS_SELECT_H
-
-/* Define to use sigaction() instead of signal() for SIGCHLD-related activity.
-   This is necessary at least on SCO OpenServer 5, due to a Unix kernel bug.
- */
-#undef USE_SIGACTION
-
-/* Define this if you do pings with a `struct icmp' and  a `icmp_id' slot.
- */
-#undef HAVE_ICMP
-
-/* Define this if you do pings with a `struct icmphdr' and a `un.echo.id' slot.
- */
-#undef HAVE_ICMPHDR
diff --git a/config.sub b/config.sub
deleted file mode 100755 (executable)
index 0432524..0000000
+++ /dev/null
@@ -1,927 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-#   Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-if [ x$1 = x ]
-then
-       echo Configuration name missing. 1>&2
-       echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
-       echo "or     $0 ALIAS" 1>&2
-       echo where ALIAS is a recognized configuration type. 1>&2
-       exit 1
-fi
-
-# First pass through any local machine types.
-case $1 in
-       *local*)
-               echo $1
-               exit 0
-               ;;
-       *)
-       ;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  linux-gnu*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple)
-               os=
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco5)
-               os=sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*)
-               os=-lynxos
-               ;;
-       -ptx*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-               ;;
-       -windowsnt*)
-               os=`echo $os | sed -e 's/windowsnt/winnt/'`
-               ;;
-       -psos*)
-               os=-psos
-               ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \
-               | arme[lb] | pyramid \
-               | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
-               | alpha | we32k | ns16k | clipper | i370 | sh \
-               | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \
-               | pdp11 | mips64el | mips64orion | mips64orionel \
-               | sparc | sparclet | sparclite | sparc64)
-               basic_machine=$basic_machine-unknown
-               ;;
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i[3456]86)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
-       vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \
-             | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
-             | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
-             | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
-             | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
-             | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
-             | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
-             | mips64el-* | mips64orion-* | mips64orionel-* | f301-*)
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-cbm
-               ;;
-       amigados)
-               basic_machine=m68k-cbm
-               os=-amigados
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-cbm
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | ymp)
-               basic_machine=ymp-cray
-               os=-unicos
-               ;;
-       cray2)
-               basic_machine=cray2-cray
-               os=-unicos
-               ;;
-       [ctj]90-cray)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
-               ;;
-       dpx2* | dpx2*-bull)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
-               ;;
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-       genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
-       hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppa-next)
-               os=-nextstep3
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-       i[3456]86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
-               ;;
-       i[3456]86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
-               ;;
-       i[3456]86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
-               ;;
-       i[3456]86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   -irix*)
-                       ;;
-                   *)
-                       os=-irix4
-                       ;;
-               esac
-               ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       m88k-omron*)
-               basic_machine=m88k-omron
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
-               ;;
-       news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       next | m*-next )
-               basic_machine=m68k-next
-               case $os in
-                   -nextstep* )
-                       ;;
-                   -ns2*)
-                     os=-nextstep2
-                       ;;
-                   *)
-                     os=-nextstep3
-                       ;;
-               esac
-               ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       pbd)
-               basic_machine=sparc-tti
-               ;;
-       pbb)
-               basic_machine=m68k-tti
-               ;;
-        pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pentium | p5)
-               basic_machine=i586-intel
-               ;;
-       pentiumpro | p6)
-               basic_machine=i686-intel
-               ;;
-       pentium-* | p5-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       k5)
-               # We don't have specific support for AMD's K5 yet, so just call it a Pentium
-               basic_machine=i586-amd
-               ;;
-       nexen)
-               # We don't have specific support for Nexgen yet, so just call it a Pentium
-               basic_machine=i586-nexgen
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=rs6000-ibm
-               ;;
-       ppc)    basic_machine=powerpc-unknown
-               ;;
-       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle | ppc-le | powerpc-little)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-       sh)
-               basic_machine=sh-hitachi
-               os=-hms
-               ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
-               ;;
-       spur)
-               basic_machine=spur-unknown
-               ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
-               ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
-               ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
-               ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
-               ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
-               ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
-               ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
-               ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
-               ;;
-       sun4)
-               basic_machine=sparc-sun
-               ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
-               ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
-               ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
-               ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
-               ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
-               ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
-               ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
-               ;;
-       xmp)
-               basic_machine=xmp-cray
-               os=-unicos
-               ;;
-        xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-       none)
-               basic_machine=none-none
-               os=-none
-               ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       mips)
-               basic_machine=mips-mips
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       rs6000)
-               basic_machine=rs6000-ibm
-               ;;
-       vax)
-               basic_machine=vax-dec
-               ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
-       sparc)
-               basic_machine=sparc-sun
-               ;;
-        cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-               basic_machine=orion-highlevel
-               ;;
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-       *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-               ;;
-       *-commodore*)
-               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       -solaris)
-               os=-solaris2
-               ;;
-       -unixware* | svr4*)
-               os=-sysv4
-               ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # First accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST END IN A *, to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-             | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
-             | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -linux-gnu* | -uxpv*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       -sunos5*)
-               os=`echo $os | sed -e 's|sunos5|solaris2|'`
-               ;;
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
-               ;;
-       -osfrose*)
-               os=-osfrose
-               ;;
-       -osf*)
-               os=-osf
-               ;;
-       -utek*)
-               os=-bsd
-               ;;
-       -dynix*)
-               os=-bsd
-               ;;
-       -acis*)
-               os=-aos
-               ;;
-       -ctix* | -uts*)
-               os=-sysv
-               ;;
-       -ns2 )
-               os=-nextstep2
-               ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       -sinix*)
-               os=-sysv4
-               ;;
-       -triton*)
-               os=-sysv3
-               ;;
-       -oss*)
-               os=-sysv3
-               ;;
-       -svr4)
-               os=-sysv4
-               ;;
-       -svr3)
-               os=-sysv3
-               ;;
-       -sysvr4)
-               os=-sysv4
-               ;;
-       # This must come after -sysvr4.
-       -sysv*)
-               ;;
-       -xenix)
-               os=-xenix
-               ;;
-       -none)
-               ;;
-       *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-       *-acorn)
-               os=-riscix1.2
-               ;;
-       arm*-semi)
-               os=-aout
-               ;;
-        pdp11-*)
-               os=-none
-               ;;
-       *-dec | vax-*)
-               os=-ultrix4.2
-               ;;
-       m68*-apollo)
-               os=-domain
-               ;;
-       i386-sun)
-               os=-sunos4.0.2
-               ;;
-       m68000-sun)
-               os=-sunos3
-               # This also exists in the configure program, but was not the
-               # default.
-               # os=-sunos4
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
-               ;;
-       sparc-* | *-sun)
-               os=-sunos4.1.1
-               ;;
-       *-ibm)
-               os=-aix
-               ;;
-       *-hp)
-               os=-hpux
-               ;;
-       *-hitachi)
-               os=-hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
-               ;;
-       *-cbm)
-               os=-amigados
-               ;;
-       *-dg)
-               os=-dgux
-               ;;
-       *-dolphin)
-               os=-sysv3
-               ;;
-       m68k-ccur)
-               os=-rtu
-               ;;
-       m88k-omron*)
-               os=-luna
-               ;;
-       *-next )
-               os=-nextstep
-               ;;
-       *-sequent)
-               os=-ptx
-               ;;
-       *-crds)
-               os=-unos
-               ;;
-       *-ns)
-               os=-genix
-               ;;
-       i370-*)
-               os=-mvs
-               ;;
-       *-next)
-               os=-nextstep3
-               ;;
-        *-gould)
-               os=-sysv
-               ;;
-        *-highlevel)
-               os=-bsd
-               ;;
-       *-encore)
-               os=-bsd
-               ;;
-        *-sgi)
-               os=-irix
-               ;;
-        *-siemens)
-               os=-sysv4
-               ;;
-       *-masscomp)
-               os=-rtu
-               ;;
-       f301-fujitsu)
-               os=-uxpv
-               ;;
-       *)
-               os=-none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       -riscix*)
-                               vendor=acorn
-                               ;;
-                       -sunos*)
-                               vendor=sun
-                               ;;
-                       -aix*)
-                               vendor=ibm
-                               ;;
-                       -hpux*)
-                               vendor=hp
-                               ;;
-                       -hiux*)
-                               vendor=hitachi
-                               ;;
-                       -unos*)
-                               vendor=crds
-                               ;;
-                       -dgux*)
-                               vendor=dg
-                               ;;
-                       -luna*)
-                               vendor=omron
-                               ;;
-                       -genix*)
-                               vendor=ns
-                               ;;
-                       -mvs*)
-                               vendor=ibm
-                               ;;
-                       -ptx*)
-                               vendor=sequent
-                               ;;
-                       -vxsim* | -vxworks*)
-                               vendor=wrs
-                               ;;
-                       -aux*)
-                               vendor=apple
-                               ;;
-               esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-               ;;
-esac
-
-echo $basic_machine$os
diff --git a/configure b/configure
deleted file mode 100755 (executable)
index 412bc5e..0000000
--- a/configure
+++ /dev/null
@@ -1,8816 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
-Installation options:
-
-  --enable-subdir=DIR     Put the demo programs in a subdirectory of \`bindir',
-                          instead of putting them in bindir itself.  You can
-                          specify the name of the subdirectory.  For example,
-                          \`--exec-prefix=/usr/local --enable-subdir=demos'
-                          would put xscreensaver in /usr/local/bin/, and would
-                          put the demos in /usr/local/bin/demos/.  (If DIR
-                          begins with /, then bindir will not be prepended.)
-
-  --disable-subdir        Just put the demos in \`bindir' (this is the default.)
-"
-ac_help="$ac_help"
-ac_help="$ac_help
-Except where noted, all of the --with options below can also take a
-directory argument: for example, --with-motif=/opt/Motif.  That would
-cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
-to be added to the -L list, assuming those directories exist.
-
-X Server Extension options:
-
-  --with-sgi-ext          Include support for the SGI SCREEN_SAVER
-                          server extension, if possible (this is the default).
-  --without-sgi-ext       Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-mit-ext          Include support for the MIT-SCREEN-SAVER
-                          server extension, if possible (this is the default).
-  --without-mit-ext       Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-xidle-ext        Include support for the XIDLE server extension,
-                          if possible (this is the default).
-  --without-xidle-ext     Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-xshm-ext         Include support for the XSHM (Shared Memory) server
-                          extension, if possible (this is the default).
-  --without-xshm-ext      Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-xdbe-ext         Include support for the DOUBLE-BUFFER server
-                          extension, if possible (this is the default).
-  --without-xdbe-ext      Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL server
-                          extension, if possible (this is the default).
-  --without-sgivc-ext     Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-dpms-ext         Include support for the DPMS server extension,
-                          if possible (this is the default).
-  --without-dpms-ext      Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-xf86vmode-ext    Include support for XFree86 virtual screens, if
-                          possible (this is the default).
-  --without-xf86vmode-ext Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-proc-interrupts  Include support for consulting the /proc/interrupts
-                          file to notice keyboard activity, if possible.
-  --without-proc-interrupts   Do not compile in support for this method."
-ac_help="$ac_help
-
-X Client Toolkit options:
-
-  --with-motif            Use the Motif toolkit for the user interface, if
-                          possible (this is the default).
-  --without-motif         Do not use Motif."
-ac_help="$ac_help
-  --with-athena           Use the Athena toolkit for the user interface, if
-                          possible (this is the default if Motif isn't used.)
-  --without-athena        Do not use Athena."
-ac_help="$ac_help
-
-Graphics Demo options:
-
-  --with-xpm              Include support for XPM files in some demos,
-                          if possible (this is the default).
-  --without-xpm           Do not compile in support for XPM files."
-ac_help="$ac_help
-  --with-gl               Build those demos which depend on OpenGL,
-                          if possible (this is the default).
-  --without-gl            Do not build the OpenGL demos."
-ac_help="$ac_help
-  --with-readdisplay      Include support for the XReadDisplay server
-                          extension if possible (this is the default).
-  --without-readdisplay   Do not compile in support for this extension."
-ac_help="$ac_help
-  --with-sgivideo         Include support for SGI's Iris Video Library
-                          if possible (this is the default).
-  --without-sgivideo       Do not compile in support for this library."
-ac_help="$ac_help
-  --with-zippy=PROGRAM    Some demos are able to run an external program and
-                          display its text; this names the program to use by
-                          default (though it can be overridden with X
-                          resources.)  If you don't specify this, the default
-                          is to use \"yow\" from the Emacs distribution (if you
-                          have it) or else to use \"fortune\"."
-ac_help="$ac_help
-
-Screen Locking options:
-
-  --enable-locking        Compile in support for locking the display
-                          (this is the default.)
-  --disable-locking       Do not allow locking at all."
-ac_help="$ac_help
-
-  --enable-vt-locking     Compile in support for locking Virtual Terminals.
-                          This is the default if the system supports it, and
-                          if locking support is included (--enable-locking.)
-  --disable-vt-locking    Do not allow locking of VTs, even if locking is
-                          enabled."
-ac_help="$ac_help
-
-  --with-kerberos         Include support for Kerberos authentication,
-                          if possible (this is the default.)
-  --without-kerberos      Do not compile in support for Kerberos."
-ac_help="$ac_help
-  --with-pam              Include support for PAM (Pluggable Authentication
-                          Modules) if possible (this is the default.)
-  --without-pam           Do not compile in support for PAM."
-ac_help="$ac_help
-  --with-shadow           Include support for shadow password authentication,
-                          if possible (this is the default, if no Kerberos or
-                          PAM.)
-  --without-shadow        Do not compile in support for shadow passwords.
-"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-
-Configuration:
-
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-
-Directory and file names:
-
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-
-Host type:
-
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-EOF
-    if test -n "$ac_help"; then
-      echo "$ac_help"
-    fi
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-    ;;
-
-  *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=driver/subprocs.c
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-echo "current directory: `pwd`"
-echo "command line was: $0 $@"
-
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-
-# Make sure we can run config.sub.
-if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
-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:681: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
-  case $nonopt in
-  NONE)
-    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
-    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
-    fi ;;
-  *) host_alias=$nonopt ;;
-  esac ;;
-esac
-
-host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-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:705: 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
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:735: 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
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_prog_rejected=no
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-       continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  if test -z "$CC"; then
-    case "`uname -s`" in
-    *win32* | *WIN32*)
-      # 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:786: 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
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="cl"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
- ;;
-    esac
-  fi
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:818: 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.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 829 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:834: \"$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
-    ac_cv_prog_cc_cross=no
-  else
-    ac_cv_prog_cc_cross=yes
-  fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-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:860: 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:865: 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
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:874: \"$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
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-
-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:893: 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
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_cc_g=yes
-else
-  ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-
-
-if test -z "$GCC"; then
-  echo $ac_n "checking how to request ANSI compilation""... $ac_c" 1>&6
-echo "configure:927: checking how to request ANSI compilation" >&5
-  case "$host" in
-    *-hpux*)
-      echo "$ac_t""HPUX: adding -Ae" 1>&6
-      CC="$CC -Ae"
-    ;;
-    *-aix*)
-      echo "$ac_t""AIX: adding -qlanglvl=ansi -qhalt=e" 1>&6
-      CC="$CC -qlanglvl=ansi -qhalt=e"
-    ;;
-
-    *-dec-*)
-      echo "$ac_t""DEC: adding -std1" 1>&6
-      CC="$CC -std1"
-    ;;
-
-    *)
-      echo "$ac_t""no idea" 1>&6
-    ;;
-  esac
-fi
-
-
-echo $ac_n "checking whether the compiler works on ANSI C""... $ac_c" 1>&6
-echo "configure:951: 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 956 "configure"
-#include "confdefs.h"
- main(int ac, char **av) { return 0; } 
-EOF
-if { (eval echo configure:960: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  echo "$ac_t""no" 1>&6
-   { echo "configure: error: Couldn't build even a trivial ANSI C program: check CC." 1>&2; exit 1; }
-fi
-rm -fr conftest*
-fi
-
-
-case "$host" in
-  *-irix5* |*-irix6.0-3* )
-    if test -n "$GCC"; then
-      echo "$ac_t""Turning on gcc compiler warnings." 1>&6
-      CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
-    else
-      # not gcc
-      echo "$ac_t""Turning on SGI compiler warnings." 1>&6
-      CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
-    fi
-  ;;
-
-    *-linux-*)
-      echo "$ac_t""Turning on gcc compiler warnings." 1>&6
-      CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
-  ;;
-
-#  *-dec-osf*)
-#    if test -z "$GCC"; then
-#      AC_MSG_RESULT(Turning on DEC C compiler warnings.)
-#      CC="$CC -migrate -w0 -verbose -warnprotos"
-#    fi
-#  ;;
-
-esac
-
-
-# Try and determine whether ${INSTALL} can create intermediate directories,
-# and if not, whether "mkdir -p" works instead.  This sets ${INSTALL_DIRS}.
-# (But autoconf should earn its keep and do this for us!)
-#
-
-
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1009: 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 1024 "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:1030: \"$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 1041 "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:1047: \"$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 1058 "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:1064: \"$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
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1100: 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
-else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      # Don't use installbsd from OSF since it installs stuff as root
-      # by default.
-      for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
-         fi
-       fi
-      done
-      ;;
-    esac
-  done
-  IFS="$ac_save_IFS"
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-INSTALL_DIRS='${INSTALL} -d'
-   echo $ac_n "checking whether \"\${INSTALL} -d\" creates intermediate directories""... $ac_c" 1>&6
-echo "configure:1154: checking whether \"\${INSTALL} -d\" creates intermediate directories" >&5
-   rm -rf conftestdir
-   if mkdir conftestdir; then
-      cd conftestdir >&-
-
-      ${INSTALL} -d `pwd`/dir1/dir2 >&- 2>&-
-      if test -d dir1/dir2 ; then
-        echo "$ac_t""yes" 1>&6
-      else
-        echo "$ac_t""no" 1>&6
-        echo $ac_n "checking whether \"mkdir -p\" creates intermediate directories""... $ac_c" 1>&6
-echo "configure:1165: checking whether \"mkdir -p\" creates intermediate directories" >&5
-        rm -rf dir1
-        mkdir -p dir1/dir2 >&- 2>&-
-        if test -d dir1/dir2/. ; then
-         echo "$ac_t""yes" 1>&6
-         INSTALL_DIRS='mkdir -p'
-        else
-         echo "$ac_t""no" 1>&6
-        fi
-      fi
-      cd .. >&-
-      rm -rf conftestdir
-   fi
-
-echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1180: 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
-else
-  cat > conftestmake <<\EOF
-all:
-       @echo 'ac_maketemp="${MAKE}"'
-EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
-  eval ac_cv_prog_make_${ac_make}_set=yes
-else
-  eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftestmake
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  SET_MAKE=
-else
-  echo "$ac_t""no" 1>&6
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-
-echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1208: 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 1213 "configure"
-#include "confdefs.h"
-
-int main() {
-
-/* Ultrix mips cc rejects this.  */
-typedef int charset[2]; const charset x;
-/* SunOS 4.1.1 cc rejects this.  */
-char const *const *ccp;
-char **p;
-/* NEC SVR4.0.2 mips cc rejects this.  */
-struct point {int x, y;};
-static struct point const zero = {0,0};
-/* AIX XL C 1.02.0.0 rejects this.
-   It does not let you subtract one const X* pointer from another in an arm
-   of an if-expression whose if-part is not a constant expression */
-const char *g = "string";
-ccp = &g + (g ? g-g : 0);
-/* HPUX 7.0 cc rejects these. */
-++ccp;
-p = (char**) ccp;
-ccp = (char const *const *) p;
-{ /* SCO 3.2v4 cc rejects this.  */
-  char *t;
-  char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-  *t++ = 0;
-}
-{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-  int x[] = {25, 17};
-  const int *foo = &x[0];
-  ++foo;
-}
-{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-  typedef const int *iptr;
-  iptr p = 0;
-  ++p;
-}
-{ /* AIX XL C 1.02.0.0 rejects this saying
-     "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-  struct s { int j; const int *ap[3]; };
-  struct s *b; b->j = 5;
-}
-{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-  const int foo = 10;
-}
-
-; return 0; }
-EOF
-if { (eval echo configure:1262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_c_const=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_c_const=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_c_const" 1>&6
-if test $ac_cv_c_const = no; then
-  cat >> confdefs.h <<\EOF
-#define const 
-EOF
-
-fi
-
-echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1283: 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 1290 "configure"
-#include "confdefs.h"
-
-int main() {
-} $ac_kw foo() {
-; return 0; }
-EOF
-if { (eval echo configure:1297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_c_inline=$ac_kw; break
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-done
-
-fi
-
-echo "$ac_t""$ac_cv_c_inline" 1>&6
-case "$ac_cv_c_inline" in
-  inline | yes) ;;
-  no) cat >> confdefs.h <<\EOF
-#define inline 
-EOF
- ;;
-  *)  cat >> confdefs.h <<EOF
-#define inline $ac_cv_c_inline
-EOF
- ;;
-esac
-
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1324: 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 1329 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1337: \"$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*
-  ac_cv_header_stdc=yes
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-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 1354 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "memchr" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 1372 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "free" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1393 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-if { (eval echo configure:1404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  :
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
-  cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:1428: 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 1433 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-int main() {
-struct tm *tp;
-; return 0; }
-EOF
-if { (eval echo configure:1442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_header_time=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_time=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_header_time" 1>&6
-if test $ac_cv_header_time = yes; then
-  cat >> confdefs.h <<\EOF
-#define TIME_WITH_SYS_TIME 1
-EOF
-
-fi
-
-echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:1463: 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 1468 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-int main() {
-int s;
-wait (&s);
-s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
-; return 0; }
-EOF
-if { (eval echo configure:1484: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_header_sys_wait_h=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_sys_wait_h=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_header_sys_wait_h" 1>&6
-if test $ac_cv_header_sys_wait_h = yes; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_SYS_WAIT_H 1
-EOF
-
-fi
-
-ac_header_dirent=no
-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:1509: 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 1514 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <$ac_hdr>
-int main() {
-DIR *dirp = 0;
-; return 0; }
-EOF
-if { (eval echo configure:1522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  eval "ac_cv_header_dirent_$ac_safe=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_dirent_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
- ac_header_dirent=$ac_hdr; break
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:1547: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldir  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1555 "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
-    builtin and then its argument prototype would still apply.  */
-char opendir();
-
-int main() {
-opendir()
-; return 0; }
-EOF
-if { (eval echo configure:1566: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="$LIBS -ldir"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-else
-echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:1588: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lx  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1596 "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
-    builtin and then its argument prototype would still apply.  */
-char opendir();
-
-int main() {
-opendir()
-; return 0; }
-EOF
-if { (eval echo configure:1607: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="$LIBS -lx"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-
-echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:1631: 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 1636 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_mode_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_mode_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_mode_t" 1>&6
-if test $ac_cv_type_mode_t = no; then
-  cat >> confdefs.h <<\EOF
-#define mode_t int
-EOF
-
-fi
-
-echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:1664: 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 1669 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_pid_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_pid_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_pid_t" 1>&6
-if test $ac_cv_type_pid_t = no; then
-  cat >> confdefs.h <<\EOF
-#define pid_t int
-EOF
-
-fi
-
-echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1697: 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 1702 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_size_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_size_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_size_t" 1>&6
-if test $ac_cv_type_size_t = no; then
-  cat >> confdefs.h <<\EOF
-#define size_t unsigned
-EOF
-
-fi
-
-echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:1730: 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 1735 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
-
-int main() {
-int i;
-; return 0; }
-EOF
-if { (eval echo configure:1752: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_type_signal=void
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_type_signal=int
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_type_signal" 1>&6
-cat >> confdefs.h <<EOF
-#define RETSIGTYPE $ac_cv_type_signal
-EOF
-
-
-
-echo $ac_n "checking how to call gettimeofday""... $ac_c" 1>&6
-echo "configure:1772: 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 1777 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-                 #include <sys/time.h>
-int main() {
-struct timeval tv; struct timezone tzp;
-                 gettimeofday(&tv, &tzp);
-; return 0; }
-EOF
-if { (eval echo configure:1786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_gettimeofday_args=2
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  cat > conftest.$ac_ext <<EOF
-#line 1794 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-                                 #include <sys/time.h>
-int main() {
-struct timeval tv; gettimeofday(&tv);
-; return 0; }
-EOF
-if { (eval echo configure:1802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_gettimeofday_args=1
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_gettimeofday_args=0
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-  ac_cv_gettimeofday_args=$ac_gettimeofday_args
-fi
-
-ac_gettimeofday_args=$ac_cv_gettimeofday_args
-if test "$ac_gettimeofday_args" = 1 ; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_GETTIMEOFDAY 1
-EOF
-
-  echo "$ac_t""one argument" 1>&6
-elif test "$ac_gettimeofday_args" = 2 ; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_GETTIMEOFDAY 1
-EOF
-
-  cat >> confdefs.h <<\EOF
-#define GETTIMEOFDAY_TWO_ARGS 1
-EOF
-
-  echo "$ac_t""two arguments" 1>&6
-else
-  echo "$ac_t""unknown" 1>&6
-fi
-
-
-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:1842: 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 1847 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1870: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-for ac_func in sigaction syslog
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1897: 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 1902 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1925: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-for ac_hdr in unistd.h 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:1954: 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 1959 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1964: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-
-
-# Check whether --enable-subdir or --disable-subdir was given.
-if test "${enable_subdir+set}" = set; then
-  enableval="$enable_subdir"
-  enable_subdir="$enableval"
-else
-  enable_subdir=no
-fi
-
-if test x"$enable_subdir" = xno; then
-  HACKDIR='${bindir}'
-elif test x"$enable_subdir" = xyes -o x"$enable_subdir" = x ; then
-  echo "error: must be a subdirectory name: --enable-subdir=$enable_subdir"
-  exit 1
-else
-  # there must be a better way than this...
-  if test -z "`echo $enable_subdir | sed 's@^/.*@@'`" ; then
-    # absolute path
-    HACKDIR=$enable_subdir
-  else
-    # relative path
-    HACKDIR='${bindir}/'$enable_subdir
-  fi
-fi
-
-# canonicalize slashes.
-HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
-
-
-# If we find X, set shell vars x_includes and x_libraries to the
-# paths, otherwise set no_x=yes.
-# 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:2026: checking for X" >&5
-
-# Check whether --with-x or --without-x was given.
-if test "${with_x+set}" = set; then
-  withval="$with_x"
-  :
-fi
-
-# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
-if test "x$with_x" = xno; then
-  # The user explicitly disabled X.
-  have_x=disabled
-else
-  if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then
-    # Both variables are already set.
-    have_x=yes
-  else
-if eval "test \"`echo '$''{'ac_cv_have_x'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  # One or both of the vars are not set, and there is no cached value.
-ac_x_includes=NO ac_x_libraries=NO
-rm -fr conftestdir
-if mkdir conftestdir; then
-  cd conftestdir
-  # Make sure to not put "make" in the Imakefile rules, since we grep it out.
-  cat > Imakefile <<'EOF'
-acfindx:
-       @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"'
-EOF
-  if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
-    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-    eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
-    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
-    for ac_extension in a so sl; do
-      if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
-        test -f $ac_im_libdir/libX11.$ac_extension; then
-        ac_im_usrlibdir=$ac_im_libdir; break
-      fi
-    done
-    # Screen out bogus values from the imake configuration.  They are
-    # bogus both because they are the default anyway, and because
-    # using them would break gcc on systems where it needs fixed includes.
-    case "$ac_im_incroot" in
-       /usr/include) ;;
-       *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes="$ac_im_incroot" ;;
-    esac
-    case "$ac_im_usrlibdir" in
-       /usr/lib | /lib) ;;
-       *) test -d "$ac_im_usrlibdir" && ac_x_libraries="$ac_im_usrlibdir" ;;
-    esac
-  fi
-  cd ..
-  rm -fr conftestdir
-fi
-
-if test "$ac_x_includes" = NO; then
-  # Guess where to find include files, by looking for this one X11 .h file.
-  test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
-
-  # First, try using that file with no special directory specified.
-cat > conftest.$ac_ext <<EOF
-#line 2088 "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:2093: \"$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*
-  # We can compile using X headers with no special include directory.
-ac_x_includes=
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  # Look for the header file in a standard set of common directories.
-# Check X11 before X11Rn because it is often a symlink to the current release.
-  for ac_dir in               \
-    /usr/X11/include          \
-    /usr/X11R6/include        \
-    /usr/X11R5/include        \
-    /usr/X11R4/include        \
-                              \
-    /usr/include/X11          \
-    /usr/include/X11R6        \
-    /usr/include/X11R5        \
-    /usr/include/X11R4        \
-                              \
-    /usr/local/X11/include    \
-    /usr/local/X11R6/include  \
-    /usr/local/X11R5/include  \
-    /usr/local/X11R4/include  \
-                              \
-    /usr/local/include/X11    \
-    /usr/local/include/X11R6  \
-    /usr/local/include/X11R5  \
-    /usr/local/include/X11R4  \
-                              \
-    /usr/X386/include         \
-    /usr/x386/include         \
-    /usr/XFree86/include/X11  \
-                              \
-    /usr/include              \
-    /usr/local/include        \
-    /usr/unsupported/include  \
-    /usr/athena/include       \
-    /usr/local/x11r5/include  \
-    /usr/lpp/Xamples/include  \
-                              \
-    /usr/openwin/include      \
-    /usr/openwin/share/include \
-    ; \
-  do
-    if test -r "$ac_dir/$x_direct_test_include"; then
-      ac_x_includes=$ac_dir
-      break
-    fi
-  done
-fi
-rm -f conftest*
-fi # $ac_x_includes = NO
-
-if test "$ac_x_libraries" = NO; then
-  # Check for the libraries.
-
-  test -z "$x_direct_test_library" && x_direct_test_library=Xt
-  test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
-
-  # See if we find them without any special options.
-  # Don't add to $LIBS permanently.
-  ac_save_LIBS="$LIBS"
-  LIBS="-l$x_direct_test_library $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2162 "configure"
-#include "confdefs.h"
-
-int main() {
-${x_direct_test_function}()
-; return 0; }
-EOF
-if { (eval echo configure:2169: \"$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.
-ac_x_libraries=
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  LIBS="$ac_save_LIBS"
-# First see if replacing the include by lib works.
-# Check X11 before X11Rn because it is often a symlink to the current release.
-for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \
-    /usr/X11/lib          \
-    /usr/X11R6/lib        \
-    /usr/X11R5/lib        \
-    /usr/X11R4/lib        \
-                          \
-    /usr/lib/X11          \
-    /usr/lib/X11R6        \
-    /usr/lib/X11R5        \
-    /usr/lib/X11R4        \
-                          \
-    /usr/local/X11/lib    \
-    /usr/local/X11R6/lib  \
-    /usr/local/X11R5/lib  \
-    /usr/local/X11R4/lib  \
-                          \
-    /usr/local/lib/X11    \
-    /usr/local/lib/X11R6  \
-    /usr/local/lib/X11R5  \
-    /usr/local/lib/X11R4  \
-                          \
-    /usr/X386/lib         \
-    /usr/x386/lib         \
-    /usr/XFree86/lib/X11  \
-                          \
-    /usr/lib              \
-    /usr/local/lib        \
-    /usr/unsupported/lib  \
-    /usr/athena/lib       \
-    /usr/local/x11r5/lib  \
-    /usr/lpp/Xamples/lib  \
-    /lib/usr/lib/X11     \
-                          \
-    /usr/openwin/lib      \
-    /usr/openwin/share/lib \
-    ; \
-do
-  for ac_extension in a so sl; do
-    if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then
-      ac_x_libraries=$ac_dir
-      break 2
-    fi
-  done
-done
-fi
-rm -f conftest*
-fi # $ac_x_libraries = NO
-
-if test "$ac_x_includes" = NO || test "$ac_x_libraries" = NO; then
-  # Didn't find X anywhere.  Cache the known absence of X.
-  ac_cv_have_x="have_x=no"
-else
-  # Record where we found X for the cache.
-  ac_cv_have_x="have_x=yes \
-               ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
-fi
-fi
-  fi
-  eval "$ac_cv_have_x"
-fi # $with_x != no
-
-if test "$have_x" != yes; then
-  echo "$ac_t""$have_x" 1>&6
-  no_x=yes
-else
-  # If each of the values was on the command line, it overrides each guess.
-  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
-  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
-  # Update the cache value to reflect the command line values.
-  ac_cv_have_x="have_x=yes \
-               ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
-  echo "$ac_t""libraries $x_libraries, headers $x_includes" 1>&6
-fi
-
-if test "$no_x" = yes; then
-  # Not all programs may use this symbol, but it does not hurt to define it.
-  cat >> confdefs.h <<\EOF
-#define X_DISPLAY_MISSING 1
-EOF
-
-  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
-else
-  if test -n "$x_includes"; then
-    X_CFLAGS="$X_CFLAGS -I$x_includes"
-  fi
-
-  # It would also be nice to do this for all -L options, not just this one.
-  if test -n "$x_libraries"; then
-    X_LIBS="$X_LIBS -L$x_libraries"
-    # For Solaris; some versions of Sun CC require a space after -R and
-    # others require no space.  Words are not sufficient . . . .
-    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:2275: 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 2278 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:2285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_R_nospace=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_R_nospace=no
-fi
-rm -f conftest*
-      if test $ac_R_nospace = yes; then
-       echo "$ac_t""no" 1>&6
-       X_LIBS="$X_LIBS -R$x_libraries"
-      else
-       LIBS="$ac_xsave_LIBS -R $x_libraries"
-       cat > conftest.$ac_ext <<EOF
-#line 2301 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:2308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_R_space=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_R_space=no
-fi
-rm -f conftest*
-       if test $ac_R_space = yes; then
-         echo "$ac_t""yes" 1>&6
-         X_LIBS="$X_LIBS -R $x_libraries"
-       else
-         echo "$ac_t""neither works" 1>&6
-       fi
-      fi
-      LIBS="$ac_xsave_LIBS"
-    esac
-  fi
-
-  # Check for system-dependent libraries X programs must link with.
-  # Do this before checking for the system-independent R6 libraries
-  # (-lICE), since we may need -lsocket or whatever for X linking.
-
-  if test "$ISC" = yes; then
-    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
-  else
-    # Martyn.Johnson@cl.cam.ac.uk says this is needed for Ultrix, if the X
-    # 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:2340: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldnet  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2348 "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
-    builtin and then its argument prototype would still apply.  */
-char dnet_ntoa();
-
-int main() {
-dnet_ntoa()
-; return 0; }
-EOF
-if { (eval echo configure:2359: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
-else
-  echo "$ac_t""no" 1>&6
-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:2381: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldnet_stub  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2389 "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
-    builtin and then its argument prototype would still apply.  */
-char dnet_ntoa();
-
-int main() {
-dnet_ntoa()
-; return 0; }
-EOF
-if { (eval echo configure:2400: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    fi
-
-    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
-    # to get the SysV transport functions.
-    # chad@anasazi.com says the Pyramis MIS-ES running DC/OSx (SVR4)
-    # needs -lnsl.
-    # The nsl library prevents programs from opening the X display
-    # on Irix 5.2, according to dickey@clark.net.
-    echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:2429: 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 2434 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gethostbyname(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gethostbyname();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
-choke me
-#else
-gethostbyname();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2457: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_gethostbyname=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    if test $ac_cv_func_gethostbyname = no; then
-      echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:2478: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lnsl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2486 "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
-    builtin and then its argument prototype would still apply.  */
-char gethostbyname();
-
-int main() {
-gethostbyname()
-; return 0; }
-EOF
-if { (eval echo configure:2497: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    fi
-
-    # lieder@skyler.mavd.honeywell.com says without -lsocket,
-    # socket/setsockopt and other routines are undefined under SCO ODT
-    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
-    # on later versions), says simon@lia.di.epfl.ch: it contains
-    # gethostby* variants that don't use the nameserver (or something).
-    # -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:2527: 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 2532 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char connect(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char connect();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_connect) || defined (__stub___connect)
-choke me
-#else
-connect();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2555: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_connect=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    if test $ac_cv_func_connect = no; then
-      echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:2576: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2584 "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
-    builtin and then its argument prototype would still apply.  */
-char connect();
-
-int main() {
-connect()
-; return 0; }
-EOF
-if { (eval echo configure:2595: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    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:2619: 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 2624 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char remove(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char remove();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_remove) || defined (__stub___remove)
-choke me
-#else
-remove();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2647: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_remove=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'remove`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    if test $ac_cv_func_remove = no; then
-      echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:2668: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lposix  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2676 "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
-    builtin and then its argument prototype would still apply.  */
-char remove();
-
-int main() {
-remove()
-; return 0; }
-EOF
-if { (eval echo configure:2687: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    fi
-
-    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:2711: 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 2716 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shmat(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char shmat();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_shmat) || defined (__stub___shmat)
-choke me
-#else
-shmat();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2739: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_shmat=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'shmat`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    if test $ac_cv_func_shmat = no; then
-      echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:2760: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lipc  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2768 "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
-    builtin and then its argument prototype would still apply.  */
-char shmat();
-
-int main() {
-shmat()
-; return 0; }
-EOF
-if { (eval echo configure:2779: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    fi
-  fi
-
-  # Check for libraries that X11R6 Xt/Xaw programs need.
-  ac_save_LDFLAGS="$LDFLAGS"
-  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
-  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
-  # check for ICE first), but we must link in the order -lSM -lICE or
-  # we get undefined symbols.  So assume we have SM if we have ICE.
-  # These have to be linked with before -lX11, unlike the other
-  # libraries we check for below, so use a different variable.
-  #  --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
-  echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
-echo "configure:2812: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lICE $X_EXTRA_LIBS $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2820 "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
-    builtin and then its argument prototype would still apply.  */
-char IceConnectionNumber();
-
-int main() {
-IceConnectionNumber()
-; return 0; }
-EOF
-if { (eval echo configure:2831: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  LDFLAGS="$ac_save_LDFLAGS"
-
-fi
-
-
-if test "$have_x" != yes; then
-  { echo "configure: error: Couldn't find X11 headers/libs.  Try \`$0 --help'." 1>&2; exit 1; }
-fi
-
-
-# Try and find the app-defaults directory.
-# It sucks that autoconf doesn't do this already...
-#
-
-
-
-
-
-
-
-
-    echo $ac_n "checking for X app-defaults directory""... $ac_c" 1>&6
-echo "configure:2873: 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
-  
-  rm -fr conftestdir
-  if mkdir conftestdir; then
-    cd conftestdir >&-
-    # Make sure to not put "make" in the Imakefile rules, since we grep it out.
-    cat > Imakefile <<'EOF'
-acfindx:
-       @echo 'ac_x_app_defaults="${XAPPLOADDIR}"'
-EOF
-    if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
-      # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
-      eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
-    fi
-    cd .. >&-
-    rm -fr conftestdir
-  fi
-      if test x"$ac_x_app_defaults" = x; then
-        
-  # Look for the directory under a standard set of common directories.
-  # Check X11 before X11Rn because it's often a symlink to the current release.
-  for ac_dir in                                        \
-    /usr/X11/lib/app-defaults                  \
-    /usr/X11R6/lib/app-defaults                        \
-    /usr/X11R6/lib/X11/app-defaults            \
-    /usr/X11R5/lib/app-defaults                        \
-    /usr/X11R5/lib/X11/app-defaults            \
-    /usr/X11R4/lib/app-defaults                        \
-    /usr/X11R4/lib/X11/app-defaults            \
-                                               \
-    /usr/lib/X11/app-defaults                  \
-    /usr/lib/X11R6/app-defaults                        \
-    /usr/lib/X11R5/app-defaults                        \
-    /usr/lib/X11R4/app-defaults                        \
-                                               \
-    /usr/local/X11/lib/app-defaults            \
-    /usr/local/X11R6/lib/app-defaults          \
-    /usr/local/X11R5/lib/app-defaults          \
-    /usr/local/X11R4/lib/app-defaults          \
-                                               \
-    /usr/local/lib/X11/app-defaults            \
-    /usr/local/lib/X11R6/app-defaults          \
-    /usr/local/lib/X11R6/X11/app-defaults      \
-    /usr/local/lib/X11R5/app-defaults          \
-    /usr/local/lib/X11R5/X11/app-defaults      \
-    /usr/local/lib/X11R4/app-defaults          \
-    /usr/local/lib/X11R4/X11/app-defaults      \
-                                               \
-    /usr/X386/lib/X11/app-defaults             \
-    /usr/x386/lib/X11/app-defaults             \
-    /usr/XFree86/lib/X11/app-defaults          \
-                                               \
-    /usr/lib/X11/app-defaults                  \
-    /usr/local/lib/X11/app-defaults            \
-    /usr/unsupported/lib/X11/app-defaults      \
-    /usr/athena/lib/X11/app-defaults           \
-    /usr/local/x11r5/lib/X11/app-defaults      \
-    /usr/lpp/Xamples/lib/X11/app-defaults      \
-    /lib/usr/lib/X11/app-defaults              \
-                                               \
-    /usr/openwin/lib/app-defaults              \
-    /usr/openwin/lib/X11/app-defaults          \
-    /usr/openwin/share/lib/app-defaults                \
-    /usr/openwin/share/lib/X11/app-defaults    \
-                                               \
-    /X11R6/lib/app-defaults                    \
-    /X11R5/lib/app-defaults                    \
-    /X11R4/lib/app-defaults                    \
-    ; \
-  do
-    if test -d "$ac_dir"; then
-      ac_x_app_defaults=$ac_dir
-      break
-    fi
-  done
-
-      fi
-      if test x"$ac_x_app_defaults" = x; then
-        ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
-      else
-        # Record where we found app-defaults for the cache.
-        ac_cv_x_app_defaults="$ac_x_app_defaults"
-      fi
-fi
-
-echo "$ac_t""$ac_cv_x_app_defaults" 1>&6
-    eval ac_x_app_defaults="$ac_cv_x_app_defaults"
-
-APPDEFAULTS=$ac_x_app_defaults
-
-
-# Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
-#
-
-
-# Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
-#
-
-
-# Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
-#
-
-
-
-# Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
-# Use this sparingly; it probably doesn't work very well on X programs.
-#
-
-
-# Like AC_TRY_RUN, but it uses the already-computed -I directories.
-# (But not the -L directories!)
-#
-
-
-
-
-# Usage: HANDLE_X_PATH_ARG([variable_name],
-#                         [--command-line-option],
-#                         [descriptive string])
-#
-# All of the --with options take three forms:
-#
-#   --with-foo (or --with-foo=yes)
-#   --without-foo (or --with-foo=no)
-#   --with-foo=/DIR
-#
-# This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
-# a directory (string beginning with a slash) it checks to see whether
-# /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
-# as appropriate.
-#
-
-
-
-
-# check for the HP XHPDisableReset server extension headers.
-#
-
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 3020 "configure"
-#include "confdefs.h"
-#include <X11/XHPlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "XHPDisableReset" >/dev/null 2>&1; then
-  rm -rf conftest*
-  cat >> confdefs.h <<\EOF
-#define HAVE_XHPDISABLERESET 1
-EOF
-
-                  SAVER_LIBS="-lXhp11 $SAVER_LIBS"
-fi
-rm -f conftest*
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-
-
-# Check for the availability of the XPointer typedef, and define it otherwise.
-#
-echo $ac_n "checking for XPointer""... $ac_c" 1>&6
-echo "configure:3041: checking for XPointer" >&5
-if eval "test \"`echo '$''{'ac_cv_xpointer'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 3052 "configure"
-#include "confdefs.h"
-#include <X11/Xlib.h>
-int main() {
-XPointer foo = (XPointer) 0;
-; return 0; }
-EOF
-if { (eval echo configure:3059: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_xpointer=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_xpointer=no
-fi
-rm -f conftest*
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_xpointer" 1>&6
-if test "$ac_cv_xpointer" != yes; then
-  cat >> confdefs.h <<\EOF
-#define XPointer char*
-EOF
-
-fi
-
-
-# Random special-cases for certain pathological OSes.  You know who you are.
-#
-case "$host" in
-  *-hpux*)
-
-    # The following arcana was gleaned from conversations with
-    # Eric Schwartz <erics@col.hp.com>:
-    #
-    # On HPUX 10.x, the parts of X that HP considers "standard" live in
-    # /usr/{include,lib}/X11R6/.  The parts that HP doesn't consider
-    # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
-    # Also, there are symlinks from /usr/include/ and /usr/lib/ into
-    # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
-    # you don't need any -I or -L arguments.
-    #
-    # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
-    # are the same division as 10.x.  However, there are no symlinks to
-    # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
-    # arguments are always necessary.
-    #
-    # However, X11R6 was available on HPUX 9.x as a patch: if that
-    # patch was installed, then all of X11R6 went in to
-    # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
-    #
-    # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
-    # whether R5 was available as a patch; R6 undoubtedly was not.)
-    #
-    # So.  We try and use the highest numbered pair of
-    # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
-    # that are available.  We do not mix and match different versions
-    # of X.
-    #
-    # Questions I still don't know the answers to: (do you?)
-    #
-    #   * Does HPUX 10.x come with /usr/contrib/X11R6/ standard?  
-    #     Or does that need to be installed separately?
-    #
-    #   * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
-    #     /usr/contrib/X11R6/ could be installed as a patch, what was in
-    #     that contrib directory?  Did it contain so-called "standard"
-    #     X11R6, or did it include Xaw and Xmu as well?  If the former,
-    #     where did one find Xaw and Xmu on 9.x R6 systems?  Would this
-    #     be a situation where one had to reach into the R5 headers and
-    #     libs to find Xmu?  That is, must both R6 and R5 directories
-    #     be on the -I and -L lists in that case?
-    #
-    for version in X11R6 X11R5 X11R4 ; do
-      # if either pair of directories exists...
-      if test -d /usr/lib/$version || test -d /usr/contrib/$version/lib ; then
-         # if contrib exists, use it...
-         if test -d /usr/contrib/$version/lib ; then
-           X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
-           X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
-         fi
-         # if the "standard" one exists, use it.
-         if test -d /usr/lib/$version ; then
-           X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
-           X_LIBS="$X_LIBS -L/usr/lib/$version"
-         fi
-         # since at least one of the pair exists, go no farther.
-         break
-      fi
-    done
-
-    # Now find Motif.  Thanks for not making xmkmf find this by
-    # default, you losers.
-    #
-    if test -d /usr/lib/Motif1.2 ; then
-      X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
-      X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
-    elif test -d /usr/lib/Motif1.1 ; then
-      X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
-      X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
-    fi
-
-    # Now let's check for the pseudo-standard locations for OpenGL and XPM.
-    #
-    if test -d /opt/Mesa/lib ; then
-      X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
-      X_LIBS="-L/opt/Mesa/lib $X_LIBS"
-    fi
-
-    if test -d /opt/xpm/lib/X11 ; then
-      X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
-      X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
-    fi
-
-    # On HPUX, default to installing in /opt/xscreensaver/ instead of
-    # in /usr/local/, unless there is already an xscreensaver in
-    # /usr/local/bin/.  This can be overridden with the --prefix arg
-    # to configure.  I'm not sure this is the right thing to do, but
-    # Richard Lloyd says so...
-    #
-    if test \! -x /usr/local/bin/xscreensaver ; then
-      ac_default_prefix=/opt/xscreensaver
-    fi
-
-  ;;
-  *-solaris*)
-
-    # Thanks for not making xmkmf find this by default, pinheads.
-    # And thanks for moving things around again, too.  Is this
-    # really the standard location now?  What happened to the
-    # joke that this kind of thing went in /opt?
-    # cthomp says "answer: CDE (Common Disorganized Environment)"
-    #
-    if test -f /usr/dt/include/Xm/Xm.h ; then
-      X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
-      X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
-
-      # 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:3193: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lgen  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3201 "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
-    builtin and then its argument prototype would still apply.  */
-char regcmp();
-
-int main() {
-regcmp()
-; return 0; }
-EOF
-if { (eval echo configure:3212: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  X_LIBS="$X_LIBS -lgen"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    fi
-  ;;
-esac
-
-
-
-# Check for Xmu (some fucked up vendors don't ship it...)
-#
-have_xmu=no
-
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:3249: 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 3254 "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:3259: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xmu=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-if test "$have_xmu" = no ; then
-  XMU_SRCS='$(UTILS_SRC)/xmu.c'
-  XMU_OBJS='$(UTILS_BIN)/xmu.o'
-else
-  XMU_SRCS=''
-  XMU_OBJS=''
-  SAVER_LIBS="-lXmu $SAVER_LIBS"
-  HACK_LIBS="-lXmu $HACK_LIBS"
-  TOOLKIT_LIBS="-lXmu $TOOLKIT_LIBS"
-  cat >> confdefs.h <<\EOF
-#define HAVE_XMU 1
-EOF
-
-fi
-
-
-# See comp.windows.x FAQ question 124 about _get_wmShellWidgetClass on 4.1.x.
-# The right fix is to get OpenWindows 3.0 patches 100512-02 and 100573-03.
-#
-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:3304: 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
-  ac_save_LDFLAGS="$LDFLAGS"
-                   if test \! -z "$x_libraries" ; then
-                     LDFLAGS="$LDFLAGS -L$x_libraries"
-                   fi
-                   # Note: this trick never works!  (Generally.)
-                   # We're only getting away with using AC_TRY_LINK
-                   # with X libraries because we know it's SunOS.
-                   LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
-                   cat > conftest.$ac_ext <<EOF
-#line 3317 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:3324: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_sunos_xmu_bug=yes
-fi
-rm -f conftest*
-                   LDFLAGS="$ac_save_LDFLAGS"
-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:3340: 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 3347 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:3354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_cv_ld_static=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_ld_static=no
-fi
-rm -f conftest*
-                   LDFLAGS="$ac_save_LDFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_ld_static" 1>&6
-      if test "$ac_cv_ld_static" = yes ; then
-        LDFLAGS="$LDFLAGS -static"
-      else
-       LDFLAGS="$LDFLAGS -Bstatic"
-      fi
-    fi
-    ;;
-  esac
-fi
-
-
-# Check for the SGI SCREEN_SAVER server extension header.
-#
-have_sgi=no
-with_sgi_req=unspecified
-# Check whether --with-sgi-ext or --without-sgi-ext was given.
-if test "${with_sgi_ext+set}" = set; then
-  withval="$with_sgi_ext"
-  with_sgi="$withval"; with_sgi_req="$withval"
-else
-  with_sgi=yes
-fi
-
-
-
-   case "$with_sgi" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for SGI SCREEN_SAVER headers""... $ac_c" 1>&6
-echo "configure:3399: checking for SGI SCREEN_SAVER headers" >&5
-     d=$with_sgi/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for SGI SCREEN_SAVER libs""... $ac_c" 1>&6
-echo "configure:3409: checking for SGI SCREEN_SAVER libs" >&5
-     d=$with_sgi/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_sgi_req="yes"
-     with_sgi=$with_sgi_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-sgi-ext must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_sgi" = yes; then
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:3447: 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 3452 "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:3457: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_sgi=yes
-                    cat >> confdefs.h <<\EOF
-#define HAVE_SGI_SAVER_EXTENSION 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-
-elif test "$with_sgi" != no; then
-  echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
-  exit 1
-fi
-
-# Check for the MIT-SCREEN-SAVER server extension header,
-# unless the SGI extension has already been found.
-#
-have_mit=no
-with_mit_req=unspecified
-# Check whether --with-mit-ext or --without-mit-ext was given.
-if test "${with_mit_ext+set}" = set; then
-  withval="$with_mit_ext"
-  with_mit="$withval"; with_mit_req="$withval"
-else
-  with_mit=yes
-fi
-
-
-
-   case "$with_mit" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for MIT-SCREEN-SAVER headers""... $ac_c" 1>&6
-echo "configure:3510: checking for MIT-SCREEN-SAVER headers" >&5
-     d=$with_mit/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for MIT-SCREEN-SAVER libs""... $ac_c" 1>&6
-echo "configure:3520: checking for MIT-SCREEN-SAVER libs" >&5
-     d=$with_mit/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_mit_req="yes"
-     with_mit=$with_mit_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-mit-ext must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$have_sgi" != yes; then
-  if test "$with_mit" = yes; then
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:3559: 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 3564 "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:3569: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_mit=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-
-    # Now check to see if it's really in the library; XF86Free-3.3 ships
-    # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
-    #
-    if test "$have_mit" = yes; then
-      
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for XScreenSaverRegister in -lXext""... $ac_c" 1>&6
-echo "configure:3613: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXext -lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3621 "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
-    builtin and then its argument prototype would still apply.  */
-char XScreenSaverRegister();
-
-int main() {
-XScreenSaverRegister()
-; return 0; }
-EOF
-if { (eval echo configure:3632: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo Xext | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lXext $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-have_mit=no
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-
-      if test "$have_mit" = no; then
-       # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
-       # of in Xext.  Thank you master, may I have another.
-        
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for XScreenSaverRegister in -lXExExt""... $ac_c" 1>&6
-echo "configure:3683: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXExExt -lX11 -lXext -lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3691 "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
-    builtin and then its argument prototype would still apply.  */
-char XScreenSaverRegister();
-
-int main() {
-XScreenSaverRegister()
-; return 0; }
-EOF
-if { (eval echo configure:3702: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-      fi
-
-      if test "$have_mit" = no; then
-       # Double fuck!  Looks like some versions of XFree86 (whichever version
-       # it is that comes with RedHat Linux 2.0 -- I can't find a version 
-       # number) put this garbage in Xss instead of Xext.  Thank you master,
-       #  may I have another.
-        
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for XScreenSaverRegister in -lXss""... $ac_c" 1>&6
-echo "configure:3748: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXss -lX11 -lXext -lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3756 "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
-    builtin and then its argument prototype would still apply.  */
-char XScreenSaverRegister();
-
-int main() {
-XScreenSaverRegister()
-; return 0; }
-EOF
-if { (eval echo configure:3767: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-      fi
-
-    if test "$have_mit" = yes; then
-      cat >> confdefs.h <<\EOF
-#define HAVE_MIT_SAVER_EXTENSION 1
-EOF
-
-    fi
-
-    fi
-
-  elif test "$with_mit" != no; then
-    echo "error: must be yes or no: --with-mit-ext=$with_mit"
-    exit 1
-  fi
-fi
-
-
-# Check for the XIDLE server extension header.
-#
-have_xidle=no
-with_xidle_req=unspecified
-# Check whether --with-xidle-ext or --without-xidle-ext was given.
-if test "${with_xidle_ext+set}" = set; then
-  withval="$with_xidle_ext"
-  with_xidle="$withval"; with_xidle_req="$withval"
-else
-  with_xidle=yes
-fi
-
-
-
-   case "$with_xidle" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for XIDLE headers""... $ac_c" 1>&6
-echo "configure:3827: checking for XIDLE headers" >&5
-     d=$with_xidle/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for XIDLE libs""... $ac_c" 1>&6
-echo "configure:3837: checking for XIDLE libs" >&5
-     d=$with_xidle/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_xidle_req="yes"
-     with_xidle=$with_xidle_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-xidle-ext must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_xidle" = yes; then
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:3875: 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 3880 "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:3885: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xidle=yes
-                    cat >> confdefs.h <<\EOF
-#define HAVE_XIDLE_EXTENSION 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-elif test "$with_xidle" != no; then
-  echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
-  exit 1
-fi
-
-
-# Check for the XSHM server extension header.
-#
-have_xshm=no
-with_xshm_req=unspecified
-# Check whether --with-xshm-ext or --without-xshm-ext was given.
-if test "${with_xshm_ext+set}" = set; then
-  withval="$with_xshm_ext"
-  with_xshm="$withval"; with_xshm_req="$withval"
-else
-  with_xshm=yes
-fi
-
-
-
-   case "$with_xshm" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for XSHM headers""... $ac_c" 1>&6
-echo "configure:3937: checking for XSHM headers" >&5
-     d=$with_xshm/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for XSHM libs""... $ac_c" 1>&6
-echo "configure:3947: checking for XSHM libs" >&5
-     d=$with_xshm/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_xshm_req="yes"
-     with_xshm=$with_xshm_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-xshm-ext must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_xshm" = yes; then
-
-  # first check for Xshm.h.
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:3987: 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 3992 "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:3997: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xshm=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-
-  # if that succeeded, then check for sys/ipc.h.
-  if test "$have_xshm" = yes; then
-    have_xshm=no
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  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:4031: 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 4036 "configure"
-#include "confdefs.h"
-#include <sys/ipc.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4041: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xshm=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  fi
-
-  # if that succeeded, then check for sys/shm.h.
-  if test "$have_xshm" = yes; then
-    have_xshm=no
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  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:4076: 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 4081 "configure"
-#include "confdefs.h"
-#include <sys/shm.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4086: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xshm=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  fi
-
-  # AIX is pathological, as usual: apparently it's normal for the Xshm headers
-  # to exist, but the library code to not exist.  And even better, the library
-  # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
-  # lib doesn't exist, give up.
-  #
-  case "$host" in
-    *-aix*)
-      have_xshm=no
-      
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for XShmQueryExtension in -lXextSam""... $ac_c" 1>&6
-echo "configure:4135: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXextSam -lX11 -lXext -lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4143 "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
-    builtin and then its argument prototype would still apply.  */
-char XShmQueryExtension();
-
-int main() {
-XShmQueryExtension()
-; return 0; }
-EOF
-if { (eval echo configure:4154: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xshm=yes; SAVER_LIBS="$SAVER_LIBS -lXextSam"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-    ;;
-  esac
-
-  # if that succeeded, then we've really got it.
-  if test "$have_xshm" = yes; then
-    cat >> confdefs.h <<\EOF
-#define HAVE_XSHM_EXTENSION 1
-EOF
-
-  fi
-
-elif test "$with_xshm" != no; then
-  echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
-  exit 1
-fi
-
-
-# Check for the DOUBLE-BUFFER server extension header.
-#
-have_xdbe=no
-with_xdbe_req=unspecified
-# Check whether --with-xdbe-ext or --without-xdbe-ext was given.
-if test "${with_xdbe_ext+set}" = set; then
-  withval="$with_xdbe_ext"
-  with_xdbe="$withval"; with_xdbe_req="$withval"
-else
-  with_xdbe=yes
-fi
-
-
-
-   case "$with_xdbe" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for DOUBLE-BUFFER headers""... $ac_c" 1>&6
-echo "configure:4213: checking for DOUBLE-BUFFER headers" >&5
-     d=$with_xdbe/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for DOUBLE-BUFFER libs""... $ac_c" 1>&6
-echo "configure:4223: checking for DOUBLE-BUFFER libs" >&5
-     d=$with_xdbe/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_xdbe_req="yes"
-     with_xdbe=$with_xdbe_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-xdbe-ext must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_xdbe" = yes; then
-
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:4262: 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 4267 "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:4272: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xdbe=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  if test "$have_xdbe" = yes; then
-    cat >> confdefs.h <<\EOF
-#define HAVE_DOUBLE_BUFFER_EXTENSION 1
-EOF
-    
-  fi
-
-elif test "$with_xdbe" != no; then
-  echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
-  exit 1
-fi
-
-
-# Check for the SGI-VIDEO-CONTROL server extension header.
-#
-have_sgivc=no
-with_sgivc_req=unspecified
-# Check whether --with-sgivc-ext or --without-sgivc-ext was given.
-if test "${with_sgivc_ext+set}" = set; then
-  withval="$with_sgivc_ext"
-  with_sgivc="$withval"; with_sgivc_req="$withval"
-else
-  with_sgivc=yes
-fi
-
-
-
-   case "$with_sgivc" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for SGI-VIDEO-CONTROL headers""... $ac_c" 1>&6
-echo "configure:4327: checking for SGI-VIDEO-CONTROL headers" >&5
-     d=$with_sgivc/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for SGI-VIDEO-CONTROL libs""... $ac_c" 1>&6
-echo "configure:4337: checking for SGI-VIDEO-CONTROL libs" >&5
-     d=$with_sgivc/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_sgivc_req="yes"
-     with_sgivc=$with_sgivc_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-sgivc-ext must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_sgivc" = yes; then
-
-  # first check for XSGIvc.h
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:4377: 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 4382 "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:4387: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_sgivc=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-
-  # if that succeeded, then check for the -lXsgivc
-  if test "$have_sgivc" = yes; then
-    have_sgivc=no
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for XSGIvcQueryGammaMap in -lXsgivc""... $ac_c" 1>&6
-echo "configure:4430: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXsgivc -lXext -lX11 $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4438 "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
-    builtin and then its argument prototype would still apply.  */
-char XSGIvcQueryGammaMap();
-
-int main() {
-XSGIvcQueryGammaMap()
-; return 0; }
-EOF
-if { (eval echo configure:4449: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-  fi
-
-  # if that succeeded, then we've really got it.
-  if test "$have_sgivc" = yes; then
-    cat >> confdefs.h <<\EOF
-#define HAVE_SGI_VC_EXTENSION 1
-EOF
-
-  fi
-
-elif test "$with_sgivc" != no; then
-  echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
-  exit 1
-fi
-
-
-# Check for the DPMS server extension header.
-#
-have_dpms=no
-with_dpms_req=unspecified
-# Check whether --with-dpms-ext or --without-dpms-ext was given.
-if test "${with_dpms_ext+set}" = set; then
-  withval="$with_dpms_ext"
-  with_dpms="$withval"; with_dpms_req="$withval"
-else
-  with_dpms=yes
-fi
-
-
-
-   case "$with_dpms" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for DPMS headers""... $ac_c" 1>&6
-echo "configure:4507: checking for DPMS headers" >&5
-     d=$with_dpms/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for DPMS libs""... $ac_c" 1>&6
-echo "configure:4517: checking for DPMS libs" >&5
-     d=$with_dpms/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_dpms_req="yes"
-     with_dpms=$with_dpms_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-dpms-ext must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_dpms" = yes; then
-
-  # first check for dpms.h
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:4557: 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 4562 "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:4567: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_dpms=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-
-  # if that succeeded, then check for the -lXdpms
-  if test "$have_dpms" = yes; then
-    have_dpms=no
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for DPMSInfo in -lXdpms""... $ac_c" 1>&6
-echo "configure:4610: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXdpms -lXext -lX11 $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4618 "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
-    builtin and then its argument prototype would still apply.  */
-char DPMSInfo();
-
-int main() {
-DPMSInfo()
-; return 0; }
-EOF
-if { (eval echo configure:4629: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-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"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-  fi
-
-  # if that succeeded, then we've really got it.
-  if test "$have_dpms" = yes; then
-    cat >> confdefs.h <<\EOF
-#define HAVE_DPMS_EXTENSION 1
-EOF
-
-  fi
-
-elif test "$with_dpms" != no; then
-  echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
-  exit 1
-fi
-
-
-# Check for the XF86VMODE server extension header.
-#
-have_xf86vmode=no
-with_xf86vmode_req=unspecified
-# Check whether --with-xf86vmode-ext or --without-xf86vmode-ext was given.
-if test "${with_xf86vmode_ext+set}" = set; then
-  withval="$with_xf86vmode_ext"
-  with_xf86vmode="$withval"; with_xf86vmode_req="$withval"
-else
-  with_xf86vmode=yes
-fi
-
-
-
-   case "$with_xf86vmode" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for xf86vmode headers""... $ac_c" 1>&6
-echo "configure:4687: checking for xf86vmode headers" >&5
-     d=$with_xf86vmode/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for xf86vmode libs""... $ac_c" 1>&6
-echo "configure:4697: checking for xf86vmode libs" >&5
-     d=$with_xf86vmode/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_xf86vmode_req="yes"
-     with_xf86vmode=$with_xf86vmode_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-xf86vmode-ext must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_xf86vmode" = yes; then
-
-  # first check for xf86vmode.h
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:4737: 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 4742 "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:4747: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xf86vmode=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-
-  # if that succeeded, then check for the -lXxf86vm
-  if test "$have_xf86vmode" = yes; then
-    have_xf86vmode=no
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for XF86VidModeGetViewPort in -lXxf86vm""... $ac_c" 1>&6
-echo "configure:4790: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXxf86vm -lXext -lX11 $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4798 "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
-    builtin and then its argument prototype would still apply.  */
-char XF86VidModeGetViewPort();
-
-int main() {
-XF86VidModeGetViewPort()
-; return 0; }
-EOF
-if { (eval echo configure:4809: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-  fi
-
-  # if that succeeded, then we've really got it.
-  if test "$have_xf86vmode" = yes; then
-    cat >> confdefs.h <<\EOF
-#define HAVE_XF86VMODE 1
-EOF
-
-  fi
-
-elif test "$with_xf86vmode" != no; then
-  echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
-  exit 1
-fi
-
-
-# Check for /proc/interrupts
-#
-have_proc_interrupts=no
-with_proc_interrupts_req=unspecified
-# Check whether --with-proc-interrupts or --without-proc-interrupts was given.
-if test "${with_proc_interrupts+set}" = set; then
-  withval="$with_proc_interrupts"
-  with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"
-else
-  with_proc_interrupts=yes
-fi
-
-
-if test "$with_proc_interrupts" = yes; then
-
-   echo $ac_n "checking whether /proc/interrupts contains keyboard data""... $ac_c" 1>&6
-echo "configure:4863: 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
-  ac_cv_have_proc_interrupts=no
-     if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
-       ac_cv_have_proc_interrupts=yes
-     fi
-    
-fi
-
-   have_proc_interrupts=$ac_cv_have_proc_interrupts
-
-  echo "$ac_t""$have_proc_interrupts" 1>&6
-
-  if test "$have_proc_interrupts" = yes; then
-    cat >> confdefs.h <<\EOF
-#define HAVE_PROC_INTERRUPTS 1
-EOF
-
-  fi
-
-elif test "$with_proc_interrupts" != no; then
-  echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
-  exit 1
-fi
-
-
-
-# Check for Motif and Athena --with and --without arguments.
-#
-have_motif=no
-have_athena=no
-have_athena3d=no
-with_motif_req=unspecified
-with_athena_req=unspecified
-
-# Check whether --with-motif or --without-motif was given.
-if test "${with_motif+set}" = set; then
-  withval="$with_motif"
-  with_motif="$withval"; with_motif_req="$withval"
-else
-  with_motif=no
-fi
-
-
-
-   case "$with_motif" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for Motif headers""... $ac_c" 1>&6
-echo "configure:4916: checking for Motif headers" >&5
-     d=$with_motif/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for Motif libs""... $ac_c" 1>&6
-echo "configure:4926: checking for Motif libs" >&5
-     d=$with_motif/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_motif_req="yes"
-     with_motif=$with_motif_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-motif must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-# Check whether --with-athena or --without-athena was given.
-if test "${with_athena+set}" = set; then
-  withval="$with_athena"
-  with_athena="$withval"; with_athena_req="$withval"
-else
-  with_athena=no
-fi
-
-
-
-   case "$with_athena" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for Athena headers""... $ac_c" 1>&6
-echo "configure:4971: checking for Athena headers" >&5
-     d=$with_athena/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for Athena libs""... $ac_c" 1>&6
-echo "configure:4981: checking for Athena libs" >&5
-     d=$with_athena/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_athena_req="yes"
-     with_athena=$with_athena_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-athena must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_motif" != yes -a "$with_motif" != no ; then
-  echo "error: must be yes or no: --with-motif=$with_motif"
-  exit 1
-fi
-
-if test "$with_athena" != yes -a "$with_athena" != no ; then
-  echo "error: must be yes or no: --with-athena=$with_athena"
-  exit 1
-fi
-
-
-# Saying --without-motif is the same as saying --with-athena.
-if test "$with_motif_req" = no ; then
-  with_athena_req=yes
-  with_athena=yes
-fi
-
-# Saying --without-athena is the same as saying --with-motif.
-if test "$with_athena_req" = no ; then
-  with_motif_req=yes
-  with_motif=yes
-fi
-
-# Check for Motif and Athena headers.
-
-check_motif() {
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:5044: 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 5049 "configure"
-#include "confdefs.h"
-#include <Xm/Xm.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5054: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_motif=yes
-                    cat >> confdefs.h <<\EOF
-#define HAVE_MOTIF 1
-EOF
-
-                    TOOLKIT_LIBS="-lXm $TOOLKIT_LIBS"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-}
-
-check_athena() {
-  have_athena=no
-  have_athena3d=no
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  ac_safe=`echo "X11/Xaw/Dialog.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for X11/Xaw/Dialog.h""... $ac_c" 1>&6
-echo "configure:5094: checking for X11/Xaw/Dialog.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 5099 "configure"
-#include "confdefs.h"
-#include <X11/Xaw/Dialog.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5104: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_athena=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  if test "$have_athena" = yes; then
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for Xaw3dComputeTopShadowRGB in -lXaw3d""... $ac_c" 1>&6
-echo "configure:5144: checking for Xaw3dComputeTopShadowRGB in -lXaw3d" >&5
-ac_lib_var=`echo Xaw3d'_'Xaw3dComputeTopShadowRGB | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXaw3d -lXt -lXmu -lXext -lX11 $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 5152 "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
-    builtin and then its argument prototype would still apply.  */
-char Xaw3dComputeTopShadowRGB();
-
-int main() {
-Xaw3dComputeTopShadowRGB()
-; return 0; }
-EOF
-if { (eval echo configure:5163: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_athena=yes; have_athena3d=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-  fi
-
-  if test "$have_athena3d" = yes; then
-    TOOLKIT_LIBS="-lXaw3d $TOOLKIT_LIBS"
-  elif test "$have_athena" = yes; then
-    TOOLKIT_LIBS="-lXaw $TOOLKIT_LIBS"
-  fi
-}
-
-
-# If they asked for both motif and athena, check motif then athena.
-# If they asked for only motif, check motif then athena.
-# If they asked for only athena, check athena then motif.
-# If they asked for neither, check motif then athena.
-
-proselytize_motif=yes
-if test "$with_motif" = yes; then
-  # asked for both, or for motif only
-  check_motif
-  if test "$have_motif" = yes; then
-    with_athena=no
-    with_athena_req=no
-  else
-    check_athena
-  fi
-
-elif test "$with_athena" = yes; then
-  # asked for athena only
-  check_athena
-  if test "$have_athena" = yes; then
-    with_motif=no
-    proselytize_motif=no
-  else
-    check_motif
-  fi
-
-else
-  # asked for neither
-  check_motif
-  if test "$have_motif" = yes; then
-    with_athena=no
-  else
-    check_athena
-  fi
-
-fi
-
-if test "$have_motif" = yes; then
-  proselytize_motif=no
-fi
-
-# If we have Athena, check whether it's a version that includes
-# XawViewportSetCoordinates in Viewport.h (R3 (or R4?) don't.)
-if test "$have_athena" = yes ; then
-  echo $ac_n "checking for XawViewportSetCoordinates in Viewport.h""... $ac_c" 1>&6
-echo "configure:5240: checking for XawViewportSetCoordinates in Viewport.h" >&5
-if eval "test \"`echo '$''{'ac_cv_have_XawViewportSetCoordinates'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_cv_have_XawViewportSetCoordinates=no
-                 
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 5252 "configure"
-#include "confdefs.h"
-#include <X11/Xaw/Viewport.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "XawViewportSetCoordinates" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_have_XawViewportSetCoordinates=yes
-fi
-rm -f conftest*
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_have_XawViewportSetCoordinates" 1>&6
-  if test "$ac_cv_have_XawViewportSetCoordinates" = yes ; then
-    cat >> confdefs.h <<\EOF
-#define HAVE_XawViewportSetCoordinates 1
-EOF
-
-  fi
-fi
-
-
-# If we have Motif, check whether it's really LessTif.
-#
-have_lesstif=no
-if test "$have_motif" = yes ; then
-  echo $ac_n "checking whether Motif is really LessTif""... $ac_c" 1>&6
-echo "configure:5281: 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
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 5292 "configure"
-#include "confdefs.h"
-#include <Xm/Xm.h>
-int main() {
-long vers = LesstifVersion;
-; return 0; }
-EOF
-if { (eval echo configure:5299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_have_lesstif=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_have_lesstif=no
-fi
-rm -f conftest*
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_have_lesstif" 1>&6
-  have_lesstif=$ac_cv_have_lesstif
-fi
-
-# don't cache these
-unset ac_cv_lesstif_version
-unset ac_cv_lesstif_version_string
-
-lesstif_version=unknown
-lesstif_version_string=unknown
-
-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:5327: 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
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  if test "$cross_compiling" = yes; then
-  ac_cv_lesstif_version=unknown
-                    ac_cv_lesstif_version_string=unknown
-else
-  cat > conftest.$ac_ext <<EOF
-#line 5342 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-                    #include <Xm/Xm.h>
-                    int main() {
-                      FILE *f = fopen("conftest-lt", "w");
-                      if (!f) exit(1);
-                      fprintf(f, "%d %d.%d\n", LesstifVersion,
-                         LESSTIF_VERSION, LESSTIF_REVISION);
-                      fclose(f);
-                      exit(0);
-                    }
-EOF
-if { (eval echo configure:5355: \"$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/ .*//'`
-                    ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_lesstif_version=unknown
-                    ac_cv_lesstif_version_string=unknown
-fi
-rm -fr conftest*
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_lesstif_version_string" 1>&6
-  rm -f conftest-lt
-  lesstif_version=$ac_cv_lesstif_version
-  lesstif_version_string=$ac_cv_lesstif_version_string
-
-fi
-
-
-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:5385: 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
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  if test "$cross_compiling" = yes; then
-  ac_cv_motif_version=unknown
-                    ac_cv_motif_version_string=unknown
-else
-  cat > conftest.$ac_ext <<EOF
-#line 5400 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-                    #include <Xm/Xm.h>
-                    int main() {
-                      FILE *f = fopen("conftest-mt", "w");
-                      if (!f) exit(1);
-                      fprintf(f, "%d %d.%d\n", XmVersion,
-                         XmVERSION, XmREVISION);
-                      fclose(f);
-                      exit(0);
-                    }
-EOF
-if { (eval echo configure:5413: \"$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/ .*//'`
-                    ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_motif_version=unknown
-                    ac_cv_motif_version_string=unknown
-fi
-rm -fr conftest*
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_motif_version_string" 1>&6
-  rm -f conftest-mt
-  motif_version=$ac_cv_motif_version
-  motif_version_string=$ac_cv_motif_version_string
-
-fi
-
-
-# If this is Motif 2.x, and we have XPM, then link against XPM as well.
-# The deal is, Motif 2.x requires XPM -- but it's a compilation option of
-# the library whether to build the XPM code into libXm, or whether to rely
-# on an external libXm.  So the only way to tell whether XPM is a link-time
-# requirement is to examine libXm.a, which is very difficult to do in an
-# autoconf script.  So... if it's Motif 2.x, we always link against XPM if
-# the XPM lib exists (and this will be a no-op if libXm happens to already
-# have the XPM code in it.)
-#
-motif_requires_xpm=no
-if test "$have_motif" = yes ; then
-   echo $ac_n "checking whether Motif requires XPM""... $ac_c" 1>&6
-echo "configure:5451: checking whether Motif requires XPM" >&5
-   if test "$motif_version" -ge 2000; then
-     motif_requires_xpm=yes
-     echo "$ac_t""maybe" 1>&6
-   else
-     echo "$ac_t""no" 1>&6
-   fi
-fi
-
-
-
-# Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
-# Extension".   Why this extension isn't in -lXext with all the others,
-# I have no idea.
-#
-have_xp_ext=no
-if test "$have_motif" = yes ; then
-   have_xp_ext=no
-   
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for XpQueryExtension in -lXp""... $ac_c" 1>&6
-echo "configure:5486: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXp -lX11 -lXext -lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 5494 "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
-    builtin and then its argument prototype would still apply.  */
-char XpQueryExtension();
-
-int main() {
-XpQueryExtension()
-; return 0; }
-EOF
-if { (eval echo configure:5505: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xp_ext=yes; TOOLKIT_LIBS="$TOOLKIT_LIBS -lXp"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-fi
-
-
-# Check for _Xsetlocale in -lXintl, since at least some recent versions
-# of Motif (on Linux) need it.
-#
-have_xintl=no
-if test "$have_motif" = yes ; then
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for _Xsetlocale in -lXintl""... $ac_c" 1>&6
-echo "configure:5552: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lXintl -lX11 -lXext -lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 5560 "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
-    builtin and then its argument prototype would still apply.  */
-char _Xsetlocale();
-
-int main() {
-_Xsetlocale()
-; return 0; }
-EOF
-if { (eval echo configure:5571: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xintl=yes
-else
-  echo "$ac_t""no" 1>&6
-have_xintl=no
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-  if test "$have_xintl" = yes; then
-    TOOLKIT_LIBS="$TOOLKIT_LIBS -lXintl"
-  fi
-fi
-
-
-# check for XPM header.
-#
-have_xpm=no
-with_xpm_req=unspecified
-# Check whether --with-xpm or --without-xpm was given.
-if test "${with_xpm+set}" = set; then
-  withval="$with_xpm"
-  with_xpm="$withval"; with_xpm_req="$withval"
-else
-  with_xpm=yes
-fi
-
-
-
-   case "$with_xpm" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for XPM headers""... $ac_c" 1>&6
-echo "configure:5620: checking for XPM headers" >&5
-     d=$with_xpm/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for XPM libs""... $ac_c" 1>&6
-echo "configure:5630: checking for XPM libs" >&5
-     d=$with_xpm/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_xpm_req="yes"
-     with_xpm=$with_xpm_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-xpm must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_xpm" = yes; then
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:5668: 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 5673 "configure"
-#include "confdefs.h"
-#include <X11/xpm.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5678: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_xpm=yes
-                   cat >> confdefs.h <<\EOF
-#define HAVE_XPM 1
-EOF
-
-                   XPM_LIBS="-lXpm"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-elif test "$with_xpm" != no; then
-  echo "error: must be yes or no: --with-xpm=$with_xpm"
-  exit 1
-fi
-
-# See comment near $motif_requires_xpm, above.
-# Need to do this here, after both Motif and XPM have been checked for.
-#
-if test "$have_motif" = yes -a "$have_xpm" = yes ; then
-  if test "$motif_requires_xpm" = yes ; then
-    TOOLKIT_LIBS="$TOOLKIT_LIBS $XPM_LIBS"
-  fi
-fi
-
-
-# check for the GL header
-#
-have_gl=no
-ac_have_mesa_gl=no
-with_gl_req=unspecified
-# Check whether --with-gl or --without-gl was given.
-if test "${with_gl+set}" = set; then
-  withval="$with_gl"
-  with_gl="$withval"; with_gl_req="$withval"
-else
-  with_gl=yes
-fi
-
-
-
-   case "$with_gl" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for GL headers""... $ac_c" 1>&6
-echo "configure:5741: checking for GL headers" >&5
-     d=$with_gl/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for GL libs""... $ac_c" 1>&6
-echo "configure:5751: checking for GL libs" >&5
-     d=$with_gl/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_gl_req="yes"
-     with_gl=$with_gl_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-gl must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-ac_mesagl_version=unknown
-ac_mesagl_version_string=unknown
-
-if test "$with_gl" = yes; then
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:5792: 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 5797 "configure"
-#include "confdefs.h"
-#include <GL/gl.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5802: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_gl=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  if test "$have_gl" = yes ; then
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  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:5833: 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 5838 "configure"
-#include "confdefs.h"
-#include <GL/glx.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5843: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_gl=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  fi
-
-  # If we have the headers, try and figure out which vendor it's from.
-  #
-  if test "$have_gl" = yes ; then
-
-    cat >> confdefs.h <<\EOF
-#define HAVE_GL 1
-EOF
-
-
-    # We need to know whether it's MesaGL so that we know which libraries
-    # to link against.
-    #
-    echo $ac_n "checking whether GL is really MesaGL""... $ac_c" 1>&6
-echo "configure:5880: 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
-  ac_cv_have_mesa_gl=no
-       
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 5892 "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
-  rm -rf conftest*
-  ac_cv_have_mesa_gl=yes
-fi
-rm -f conftest*
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-      
-fi
-
-    ac_have_mesa_gl=$ac_cv_have_mesa_gl
-    echo "$ac_t""$ac_have_mesa_gl" 1>&6
-
-    if test "$ac_have_mesa_gl" = no ; then
-      gl_lib_1="GL"
-      GL_LIBS="-lGL -lGLU"
-    else
-      cat >> confdefs.h <<\EOF
-#define HAVE_MESA_GL 1
-EOF
-
-      gl_lib_1="MesaGL"
-      GL_LIBS="-lMesaGL -lMesaGLU"
-    fi
-
-
-    # If it's MesaGL, we'd like to issue a warning if the version number
-    # is less than or equal to 2.6, because that version had a security bug.
-    #
-    if test "$ac_have_mesa_gl" = yes; then
-
-      # don't cache these.
-      unset ac_cv_mesagl_version
-      unset ac_cv_mesagl_version_string
-
-      echo $ac_n "checking MesaGL version number""... $ac_c" 1>&6
-echo "configure:5933: 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 5938 "configure"
-#include "confdefs.h"
-#include <GL/gl.h>
-configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
-EOF
-
-        ac_save_CPPFLAGS="$CPPFLAGS"
-        if test \! -z "$includedir" ; then 
-          CPPFLAGS="$CPPFLAGS -I$includedir"
-        fi
-        CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-         # M4 sucks!!
-        
-        mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | sed -n \
-             's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
-        
-
-         rm -f conftest.$ac_ext
-
-        CPPFLAGS="$ac_save_CPPFLAGS"
-
-        if test "$mglv" = ""; then
-           ac_mesagl_version=unknown
-           ac_mesagl_version_string=unknown
-         else
-           ac_mesagl_version_string=$mglv
-           maj=`echo $mglv | sed -n 's/\..*//p'`
-           min=`echo $mglv | sed -n 's/.*\.//p'`
-           ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
-           if test -z "$ac_mesagl_version"; then
-            ac_mesagl_version=unknown
-             ac_mesagl_version_string=unknown
-          fi
-         fi
-         ac_cv_mesagl_version=$ac_mesagl_version
-         ac_cv_mesagl_version_string=$ac_mesagl_version_string
-      
-fi
-
-      ac_mesagl_version=$ac_cv_mesagl_version
-      ac_mesagl_version_string=$ac_cv_mesagl_version_string
-      echo "$ac_t""$ac_cv_mesagl_version_string" 1>&6
-    fi
-
-
-    # If it's MesaGL, check to see if it requires -lpthread.
-    #
-    have_pthread=no
-    mesa_requires_pthread=no
-    if test "$ac_have_mesa_gl" = yes; then
-
-      echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
-echo "configure:5991: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lpthread  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 5999 "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
-    builtin and then its argument prototype would still apply.  */
-char pthread_create();
-
-int main() {
-pthread_create()
-; return 0; }
-EOF
-if { (eval echo configure:6010: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_pthread=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-      if test "$have_pthread" = yes; then
-        
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for gl_get_thread_context in -l$gl_lib_1""... $ac_c" 1>&6
-echo "configure:6048: checking for gl_get_thread_context in -l$gl_lib_1" >&5
-ac_lib_var=`echo $gl_lib_1'_'gl_get_thread_context | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-l$gl_lib_1 $GL_LIBS -lpthread -lX11 -lXext -lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 6056 "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
-    builtin and then its argument prototype would still apply.  */
-char gl_get_thread_context();
-
-int main() {
-gl_get_thread_context()
-; return 0; }
-EOF
-if { (eval echo configure:6067: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  mesa_requires_pthread=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-      fi
-
-      if test "$mesa_requires_pthread" = yes; then
-        GL_LIBS="$GL_LIBS -lpthread"
-      fi
-    fi
-
-    # Check for OpenGL 1.1 features.
-    #
-    
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  echo $ac_n "checking for glBindTexture in -l$gl_lib_1""... $ac_c" 1>&6
-echo "configure:6115: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-l$gl_lib_1 $GL_LIBS -lX11 -lXext -lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 6123 "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
-    builtin and then its argument prototype would still apply.  */
-char glBindTexture();
-
-int main() {
-glBindTexture()
-; return 0; }
-EOF
-if { (eval echo configure:6134: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_GLBINDTEXTURE 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"
-
-
-    # Check whether the `xscreensaver' executable should link against GL.
-    # See comments in utils/visual-gl.c for why this is sometimes necessary.
-    #
-    echo $ac_n "checking whether drastic GL measures must be taken""... $ac_c" 1>&6
-echo "configure:6165: checking whether drastic GL measures must be taken" >&5
-    case "$host" in
-      *-sgi*)
-        echo "$ac_t""yes -- hello, SGI." 1>&6
-        cat >> confdefs.h <<\EOF
-#define DAEMON_USE_GL 1
-EOF
-
-        SAVER_GL_SRCS='$(UTILS_SRC)/visual-gl.c'
-        SAVER_GL_OBJS='$(UTILS_BIN)/visual-gl.o'
-        SAVER_GL_LIBS="$GL_LIBS"
-      ;;
-      *)
-        echo "$ac_t""no -- non-SGI." 1>&6
-        SAVER_GL_SRCS=''
-        SAVER_GL_OBJS=''
-        SAVER_GL_LIBS=''
-      ;;
-    esac
-
-  fi
-
-elif test "$with_gl" != no; then
-  echo "error: must be yes or no: --with-gl=$with_gl"
-  exit 1
-fi
-
-
-# check for SGI XReadDisplay server extension header.
-#
-have_readdisplay=no
-with_readdisplay_req=unspecified
-# Check whether --with-readdisplay or --without-readdisplay was given.
-if test "${with_readdisplay+set}" = set; then
-  withval="$with_readdisplay"
-  with_readdisplay="$withval"; with_readdisplay_req="$withval"
-else
-  with_readdisplay=yes
-fi
-
-
-
-   case "$with_readdisplay" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for XReadDisplay headers""... $ac_c" 1>&6
-echo "configure:6213: checking for XReadDisplay headers" >&5
-     d=$with_readdisplay/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for XReadDisplay libs""... $ac_c" 1>&6
-echo "configure:6223: checking for XReadDisplay libs" >&5
-     d=$with_readdisplay/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_readdisplay_req="yes"
-     with_readdisplay=$with_readdisplay_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-readdisplay must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_readdisplay" = yes; then
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:6261: 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 6266 "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:6271: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_READ_DISPLAY_EXTENSION 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-elif test "$with_readdisplay" != no; then
-  echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
-  exit 1
-fi
-
-
-# check for SGI's Iris Video Library header.
-#
-have_sgivideo=no
-with_sgivideo_req=unspecified
-# Check whether --with-sgivideo or --without-sgivideo was given.
-if test "${with_sgivideo+set}" = set; then
-  withval="$with_sgivideo"
-  with_sgivideo="$withval"; with_sgivideo_req="$withval"
-else
-  with_sgivideo=yes
-fi
-
-
-
-   case "$with_sgivideo" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for Iris Video headers""... $ac_c" 1>&6
-echo "configure:6322: checking for Iris Video headers" >&5
-     d=$with_sgivideo/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for Iris Video libs""... $ac_c" 1>&6
-echo "configure:6332: checking for Iris Video libs" >&5
-     d=$with_sgivideo/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_sgivideo_req="yes"
-     with_sgivideo=$with_sgivideo_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-sgivideo must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-if test "$with_sgivideo" = yes; then
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  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:6370: 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 6375 "configure"
-#include "confdefs.h"
-#include <dmedia/vl.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6380: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_sgivideo=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  if test "$have_sgivideo" = yes; then
-    have_sgivideo=no
-    echo $ac_n "checking for vlOpenVideo in -lvl""... $ac_c" 1>&6
-echo "configure:6405: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lvl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 6413 "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
-    builtin and then its argument prototype would still apply.  */
-char vlOpenVideo();
-
-int main() {
-vlOpenVideo()
-; return 0; }
-EOF
-if { (eval echo configure:6424: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_sgivideo=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    if test "$have_sgivideo" = yes; then
-      SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
-      SGI_VIDEO_LIBS="-lvl"
-      cat >> confdefs.h <<\EOF
-#define HAVE_SGI_VIDEO 1
-EOF
-
-    fi
-  fi
-elif test "$with_sgivideo" != no; then
-  echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
-  exit 1
-fi
-
-
-
-# Try to find a program to generate random text.
-#
-# Zippy is funnier than the idiocy generally spat out by `fortune',
-# so try to find that, by invoking Emacs and asking it where its 
-# libexec directory is ("yow" lives in there.)
-#
-# If that doesn't work, see if fortune, zippy, or yow are on $PATH,
-# and if so, use them.
-#
-# If that doesn't work, look in /usr/games, and if it's there, use
-# the full pathname.
-#
-with_zippy_req=""
-# Check whether --with-zippy or --without-zippy was given.
-if test "${with_zippy+set}" = set; then
-  withval="$with_zippy"
-   with_zippy_req="$withval"; with_zippy="$withval" 
-else
-   with_zippy_req="$withval"; with_zippy="$withval" 
-fi
-
-
-if test "$with_zippy" = no || test "$with_zippy" = yes ; then
-  with_zippy=""
-  with_zippy_req=""
-fi
-
-if test -n "$with_zippy_req" ; then
-  ac_cv_zippy_program=""
-  case "$with_zippy_req" in
-    /*)
-      echo $ac_n "checking for $with_zippy_req""... $ac_c" 1>&6
-echo "configure:6492: checking for $with_zippy_req" >&5
-      if test -x "$with_zippy_req" ; then
-        echo "$ac_t""yes" 1>&6
-      else
-        echo "$ac_t""no" 1>&6
-        with_zippy=""
-      fi
-    ;;
-    *)
-      # don't cache
-      unset ac_cv_path_zip2
-      # 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:6506: 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
-  case "$zip2" in
-  /*)
-  ac_cv_path_zip2="$zip2" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_zip2="$zip2" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_zip2="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-zip2="$ac_cv_path_zip2"
-if test -n "$zip2"; then
-  echo "$ac_t""$zip2" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-      if test "$zip2" = ""; then
-        with_zippy=""
-      fi
-    ;;
-  esac
-  ac_cv_zippy_program="$with_zippy"
-
-elif test -n "$ac_cv_zippy_program"; then
-  echo "$ac_t""checking for zippy... (cached) $ac_cv_zippy_program" 1>&6
-fi
-
-if test ! -n "$ac_cv_zippy_program"; then
-
-  for ac_prog in emacs
-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:6556: 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
-  if test -n "$emacs_exe"; then
-  ac_cv_prog_emacs_exe="$emacs_exe" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_emacs_exe="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-emacs_exe="$ac_cv_prog_emacs_exe"
-if test -n "$emacs_exe"; then
-  echo "$ac_t""$emacs_exe" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$emacs_exe" && break
-done
-
-  for ac_prog in xemacs
-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:6590: 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
-  if test -n "$xemacs_exe"; then
-  ac_cv_prog_xemacs_exe="$xemacs_exe" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_xemacs_exe="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-xemacs_exe="$ac_cv_prog_xemacs_exe"
-if test -n "$xemacs_exe"; then
-  echo "$ac_t""$xemacs_exe" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$xemacs_exe" && break
-done
-
-
-  ac_cv_zippy_program=""
-  eargs='-batch -q -nw --eval'
-
-  if test -n "$emacs_exe" ; then
-    echo $ac_n "checking for emacs yow""... $ac_c" 1>&6
-echo "configure:6625: checking for emacs yow" >&5
-    #
-    # get emacs to tell us where the libexec directory is.
-    #
-    dir=`$emacs_exe $eargs '(princ (concat exec-directory "\n"))' \
-        2>/dev/null | tail -1`
-    dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
-    #
-    # try running libexec/yow and see if it exits without error.
-    #
-    if test x"$dir" != x -a -x "$dir/yow" ; then
-      if $dir/yow >&- 2>&- ; then
-       ac_cv_zippy_program="$dir/yow"
-       echo "$ac_t""$ac_cv_zippy_program" 1>&6
-      else
-       echo "$ac_t""no" 1>&6
-      fi
-    fi
-  fi
-
-  if test -z "$ac_cv_zippy_program" ; then
-    echo $ac_n "checking for xemacs yow""... $ac_c" 1>&6
-echo "configure:6647: checking for xemacs yow" >&5
-    if test -n "$xemacs_exe" ; then
-      #
-      # get xemacs to tell us where the libexec directory is.
-      #
-      dir=`$xemacs_exe $eargs '(princ (concat exec-directory "\n"))' \
-          2>/dev/null | tail -1`
-      dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
-      #
-      # try running libexec/yow and see if it exits without error.
-      #
-      if test x"$dir" != x -a -x "$dir/yow" ; then
-        if $dir/yow >&- 2>&- ; then
-         ac_cv_zippy_program="$dir/yow"
-         echo "$ac_t""$ac_cv_zippy_program" 1>&6
-       else
-         #
-         # in some xemacs installations, the pathname of the yow.lines file
-         # isn't hardcoded into the yow executable, and must be passed on 
-         # the command line.  See if it's in libexec/../etc/.
-
-         # M4 sucks!!
-         
-         dir_up=`echo "$dir" | sed 's@/[^/]*$@@'`
-         
-
-         yowlines="$dir_up/etc/yow.lines"
-         if $dir/yow -f $yowlines >&- 2>&- ; then
-           ac_cv_zippy_program="$dir/yow -f $yowlines"
-           echo "$ac_t""$ac_cv_zippy_program" 1>&6
-         else
-            #
-            # In newer XEmacs releases, yow.lines is in a different place,
-            # and the easiest way to get it is by calling the new function
-            # `locate-data-file'.
-            #
-            yowlines=`$xemacs_exe $eargs \
-              '(princ (concat (locate-data-file "yow.lines") "\n"))' \
-              2>/dev/null | tail -1`
-            if $dir/yow -f $yowlines >&- 2>&- ; then
-              ac_cv_zippy_program="$dir/yow -f $yowlines"
-              echo "$ac_t""$ac_cv_zippy_program" 1>&6
-            else
-              echo "$ac_t""no" 1>&6
-            fi
-         fi
-        fi
-      fi
-    fi
-  fi
-
-  # if that didn't work, try for some other programs...
-  if test -z "$ac_cv_zippy_program" ; then
-    fortune=''
-    for ac_prog in fortune zippy yow
-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:6706: 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
-  if test -n "$fortune"; then
-  ac_cv_prog_fortune="$fortune" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_fortune="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-fortune="$ac_cv_prog_fortune"
-if test -n "$fortune"; then
-  echo "$ac_t""$fortune" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$fortune" && break
-done
-
-    # if that didn't work, try for those programs in /usr/games...
-    if test -z "$fortune" ; then
-      for ac_prog in fortune zippy yow
-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:6742: 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
-  case "$fortune" in
-  /*)
-  ac_cv_path_fortune="$fortune" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_fortune="$fortune" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="/usr/games:/usr/local/games"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_fortune="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-fortune="$ac_cv_path_fortune"
-if test -n "$fortune"; then
-  echo "$ac_t""$fortune" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$fortune" && break
-done
-test -n "$fortune" || fortune="fortune"
-
-    fi
-  fi
-fi
-
-if test -z "$ac_cv_zippy_program" ; then
-  ac_cv_zippy_program=fortune
-fi
-
-cat >> confdefs.h <<EOF
-#define ZIPPY_PROGRAM "$ac_cv_zippy_program"
-EOF
-
-
-
-
-
-# Allow locking to be disabled at compile-time.
-#
-have_kerberos=no
-with_kerberos_req=unspecified
-have_shadow=no
-with_shadow_req=unspecified
-have_pam=no
-with_pam_req=unspecified
-need_setuid=no
-
-# Check whether --enable-locking or --disable-locking was given.
-if test "${enable_locking+set}" = set; then
-  enableval="$enable_locking"
-  enable_locking="$enableval"
-else
-  enable_locking=yes
-fi
-
-if test "$enable_locking" = yes; then
-  true
-elif test "$enable_locking" = no; then
-  cat >> confdefs.h <<\EOF
-#define NO_LOCKING 1
-EOF
-
-else
-  echo "error: must be yes or no: --enable-locking=$enable_locking"
-  exit 1
-fi
-
-
-
-# Check to see if we can lock Virtual-Terminal switching, but allow that 
-# to be disabled at compile-time.
-#
-ac_vt_lockswitch=no
-# Check whether --enable-vt-locking or --disable-vt-locking was given.
-if test "${enable_vt_locking+set}" = set; then
-  enableval="$enable_vt_locking"
-  enable_vt_locking="$enableval"
-else
-  enable_vt_locking=yes
-fi
-
-if test "$enable_vt_locking" = yes; then
-
-  echo $ac_n "checking for the VT_LOCKSWITCH ioctl""... $ac_c" 1>&6
-echo "configure:6841: checking for the VT_LOCKSWITCH ioctl" >&5
-  if eval "test \"`echo '$''{'ac_cv_vt_lockswitch'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 6846 "configure"
-#include "confdefs.h"
-#include <fcntl.h>
-                   #include <sys/ioctl.h>
-                   #include <sys/vt.h>
-int main() {
-int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;
-; return 0; }
-EOF
-if { (eval echo configure:6855: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_vt_lockswitch=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_vt_lockswitch=no
-fi
-rm -f conftest*
-fi
-
-  ac_vt_lockswitch=$ac_cv_vt_lockswitch
-  echo "$ac_t""$ac_vt_lockswitch" 1>&6
-
-elif test "$enable_vt_locking" = no; then
-  true
-else
-  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
-  exit 1
-fi
-
-if test "$ac_vt_lockswitch" = yes; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_VT_LOCKSWITCH 1
-EOF
-
-  # the VT_LOCKSWITCH ioctl can only be used when running as root.
-  # #### but it doesn't work yet, so don't worry about that for now.
-#  need_setuid=yes
-fi
-
-
-
-if test "$enable_locking" = yes; then
-
-  # Check for Kerberos.
-  #
-  # Check whether --with-kerberos or --without-kerberos was given.
-if test "${with_kerberos+set}" = set; then
-  withval="$with_kerberos"
-  with_kerberos="$withval"; with_kerberos_req="$withval"
-else
-  with_kerberos=yes
-fi
-
-
-  
-   case "$with_kerberos" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for Kerberos headers""... $ac_c" 1>&6
-echo "configure:6909: checking for Kerberos headers" >&5
-     d=$with_kerberos/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for Kerberos libs""... $ac_c" 1>&6
-echo "configure:6919: checking for Kerberos libs" >&5
-     d=$with_kerberos/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_kerberos_req="yes"
-     with_kerberos=$with_kerberos_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-kerberos must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-  if test "$with_kerberos" = yes; then
-    echo $ac_n "checking for Kerberos""... $ac_c" 1>&6
-echo "configure:6950: checking for Kerberos" >&5
-if eval "test \"`echo '$''{'ac_cv_kerberos'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 6961 "configure"
-#include "confdefs.h"
-#include <krb.h>
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:6968: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_kerberos=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_kerberos=no
-fi
-rm -f conftest*
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_kerberos" 1>&6
-    if test "$ac_cv_kerberos" = yes ; then
-      have_kerberos=yes
-      cat >> confdefs.h <<\EOF
-#define HAVE_KERBEROS 1
-EOF
-
-
-      # from Tim Showalter <tjs+@andrew.cmu.edu>
-      PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
-      echo $ac_n "checking for res_search""... $ac_c" 1>&6
-echo "configure:6992: 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 6997 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char res_search(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char res_search();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_res_search) || defined (__stub___res_search)
-choke me
-#else
-res_search();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:7020: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_res_search=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'res_search`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for res_search in -lresolv""... $ac_c" 1>&6
-echo "configure:7038: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lresolv  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 7046 "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
-    builtin and then its argument prototype would still apply.  */
-char res_search();
-
-int main() {
-res_search()
-; return 0; }
-EOF
-if { (eval echo configure:7057: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  PASSWD_LIBS="${PASSWD_LIBS} -lresolv"
-else
-  echo "$ac_t""no" 1>&6
-echo "configure: warning: Can't find DNS resolver libraries needed for Kerberos" 1>&2
-       
-fi
-
-fi
-
-
-    fi
-  elif test "$with_kerberos" != no; then
-    echo "error: must be yes or no: --with-kerberos=$with_kerberos"
-    exit 1
-  fi
-  
-  # Check for PAM.
-  # Check whether --with-pam or --without-pam was given.
-if test "${with_pam+set}" = set; then
-  withval="$with_pam"
-  with_pam="$withval"; with_pam_req="$withval"
-else
-  with_pam=yes
-fi
-
-
-  
-   case "$with_pam" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for PAM headers""... $ac_c" 1>&6
-echo "configure:7105: checking for PAM headers" >&5
-     d=$with_pam/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for PAM libs""... $ac_c" 1>&6
-echo "configure:7115: checking for PAM libs" >&5
-     d=$with_pam/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_pam_req="yes"
-     with_pam=$with_pam_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-pam must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-  if test "$with_pam" = yes; then
-    echo $ac_n "checking for PAM""... $ac_c" 1>&6
-echo "configure:7146: checking for PAM" >&5
-if eval "test \"`echo '$''{'ac_cv_pam'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 7157 "configure"
-#include "confdefs.h"
-#include <security/pam_appl.h>
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:7164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_pam=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_pam=no
-fi
-rm -f conftest*
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_pam" 1>&6
-    if test "$ac_cv_pam" = yes ; then
-         have_pam=yes
-         cat >> confdefs.h <<\EOF
-#define HAVE_PAM 1
-EOF
-
-         PASSWD_LIBS="${PASSWD_LIBS} -lpam -ldl"
-
-
-          echo $ac_n "checking how to call pam_strerror""... $ac_c" 1>&6
-echo "configure:7188: 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 7193 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-                            #include <stdlib.h>
-                            #include <security/pam_appl.h>
-int main() {
-pam_handle_t *pamh = 0;
-                            char *s = pam_strerror(pamh, PAM_SUCCESS);
-; return 0; }
-EOF
-if { (eval echo configure:7203: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_pam_strerror_args=2
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  cat > conftest.$ac_ext <<EOF
-#line 7211 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-                                            #include <stdlib.h>
-                                            #include <security/pam_appl.h>
-int main() {
-char *s =
-                                             pam_strerror(PAM_SUCCESS);
-; return 0; }
-EOF
-if { (eval echo configure:7221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_pam_strerror_args=1
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_pam_strerror_args=0
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-            ac_cv_pam_strerror_args=$ac_pam_strerror_args
-fi
-
-          ac_pam_strerror_args=$ac_cv_pam_strerror_args
-          if test "$ac_pam_strerror_args" = 1 ; then
-            echo "$ac_t""one argument" 1>&6
-          elif test "$ac_pam_strerror_args" = 2 ; then
-            cat >> confdefs.h <<\EOF
-#define PAM_STRERROR_TWO_ARGS 1
-EOF
-
-            echo "$ac_t""two arguments" 1>&6
-          else
-            echo "$ac_t""unknown" 1>&6
-          fi
-    fi
-  elif test "$with_pam" != no; then
-       echo "error: must be yes or no: --with-pam=$with_pam"
-       exit 1
-  fi
-
-  # Next, check for the nine billion variants of shadow passwords...
-
-  pwent_cruft_done=no
-  # Check whether --with-shadow or --without-shadow was given.
-if test "${with_shadow+set}" = set; then
-  withval="$with_shadow"
-  with_shadow="$withval"; with_shadow_req="$withval"
-else
-  with_shadow=yes
-fi
-
-
-  
-   case "$with_shadow" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     echo $ac_n "checking for shadow password headers""... $ac_c" 1>&6
-echo "configure:7273: checking for shadow password headers" >&5
-     d=$with_shadow/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     echo $ac_n "checking for shadow password libs""... $ac_c" 1>&6
-echo "configure:7283: checking for shadow password libs" >&5
-     d=$with_shadow/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       echo "$ac_t""$d" 1>&6
-     else
-       echo "$ac_t""not found ($d: no such directory)" 1>&6
-     fi
-
-     # replace the directory string with "yes".
-     with_shadow_req="yes"
-     with_shadow=$with_shadow_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to --with-shadow must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  
-
-  if test "$with_shadow" = no; then
-    pwent_cruft_done=yes
-  elif test "$with_shadow" != yes; then
-    echo "error: must be yes or no: --with-shadow=$with_shadow"
-    exit 1
-  fi
-
-
-  # Sun's "adjunct" passwords.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    echo $ac_n "checking for Sun-style shadow passwords""... $ac_c" 1>&6
-echo "configure:7324: 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
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 7335 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-                                     #include <unistd.h>
-                                     #include <sys/types.h>
-                                     #include <sys/label.h>
-                                     #include <sys/audit.h>
-                                     #include <pwdadj.h>
-int main() {
-struct passwd_adjunct *p = getpwanam("nobody");
-                        const char *pw = p->pwa_passwd;
-; return 0; }
-EOF
-if { (eval echo configure:7348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_sun_adjunct=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_sun_adjunct=no
-fi
-rm -f conftest*
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_sun_adjunct" 1>&6
-    if test "$ac_cv_sun_adjunct" = yes; then
-      have_shadow=yes
-      need_setuid=yes
-      pwent_cruft_done=yes
-      cat >> confdefs.h <<\EOF
-#define HAVE_ADJUNCT_PASSWD 1
-EOF
-
-    fi
-  fi
-
-  # DEC and SCO so-called "enhanced" security.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    echo $ac_n "checking for DEC-style shadow passwords""... $ac_c" 1>&6
-echo "configure:7377: 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
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 7388 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-                                     #include <unistd.h>
-                                     #include <sys/types.h>
-                                     #include <pwd.h>
-                                     #include <sys/security.h>
-                                     #include <prot.h>
-int main() {
-struct pr_passwd *p;
-                        const char *pw;
-                        set_auth_parameters(0, 0);
-                        check_auth_parameters();
-                        p = getprpwnam("nobody");
-                        pw = p->ufld.fd_encrypt;
-; return 0; }
-EOF
-if { (eval echo configure:7405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_enhanced_passwd=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_enhanced_passwd=no
-fi
-rm -f conftest*
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_enhanced_passwd" 1>&6
-    if test $ac_cv_enhanced_passwd = yes; then
-      have_shadow=yes
-      need_setuid=yes
-      pwent_cruft_done=yes
-      cat >> confdefs.h <<\EOF
-#define HAVE_ENHANCED_PASSWD 1
-EOF
-
-
-      # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
-      # (I'm told it needs -lcurses too, but I don't understand why.)
-      echo $ac_n "checking for getprpwnam in -lprot""... $ac_c" 1>&6
-echo "configure:7431: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lprot -lx $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 7439 "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
-    builtin and then its argument prototype would still apply.  */
-char getprpwnam();
-
-int main() {
-getprpwnam()
-; return 0; }
-EOF
-if { (eval echo configure:7450: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"
-else
-  echo "$ac_t""no" 1>&6
-# On DEC, getprpwnam() is in -lsecurity
-                   echo $ac_n "checking for getprpwnam in -lsecurity""... $ac_c" 1>&6
-echo "configure:7470: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsecurity  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 7478 "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
-    builtin and then its argument prototype would still apply.  */
-char getprpwnam();
-
-int main() {
-getprpwnam()
-; return 0; }
-EOF
-if { (eval echo configure:7489: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  PASSWD_LIBS="$PASSWD_LIBS -lsecurity"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-    fi
-  fi
-
-  # HP's entry in the "Not Invented Here" Sweepstakes.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    echo $ac_n "checking for HP-style shadow passwords""... $ac_c" 1>&6
-echo "configure:7518: 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
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 7529 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-                                     #include <unistd.h>
-                                     #include <sys/types.h>
-                                     #include <pwd.h>
-                                     #include <hpsecurity.h>
-                                     #include <prot.h>
-int main() {
-struct s_passwd *p = getspwnam("nobody");
-                        const char *pw = p->pw_passwd;
-; return 0; }
-EOF
-if { (eval echo configure:7542: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_hpux_passwd=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_hpux_passwd=no
-fi
-rm -f conftest*
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_hpux_passwd" 1>&6
-    if test "$ac_cv_hpux_passwd" = yes; then
-      have_shadow=yes
-      need_setuid=yes
-      pwent_cruft_done=yes
-      cat >> confdefs.h <<\EOF
-#define HAVE_HPUX_PASSWD 1
-EOF
-
-
-      # on HPUX, bigcrypt is in -lsec
-      echo $ac_n "checking for bigcrypt in -lsec""... $ac_c" 1>&6
-echo "configure:7567: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsec  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 7575 "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
-    builtin and then its argument prototype would still apply.  */
-char bigcrypt();
-
-int main() {
-bigcrypt()
-; return 0; }
-EOF
-if { (eval echo configure:7586: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  PASSWD_LIBS="$PASSWD_LIBS -lsec"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    fi
-  fi
-
-  # Traditional (ha!) shadow passwords.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    echo $ac_n "checking for generic shadow passwords""... $ac_c" 1>&6
-echo "configure:7613: 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
-  
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  cat > conftest.$ac_ext <<EOF
-#line 7624 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-                                     #include <unistd.h>
-                                     #include <sys/types.h>
-                                     #include <pwd.h>
-                                     #include <shadow.h>
-int main() {
-struct spwd *p = getspnam("nobody");
-                        const char *pw = p->sp_pwdp;
-; return 0; }
-EOF
-if { (eval echo configure:7636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_shadow=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_shadow=no
-fi
-rm -f conftest*
-  CPPFLAGS="$ac_save_CPPFLAGS"
-fi
-
-echo "$ac_t""$ac_cv_shadow" 1>&6
-    if test "$ac_cv_shadow" = yes; then
-      have_shadow=yes
-      need_setuid=yes
-      pwent_cruft_done=yes
-      cat >> confdefs.h <<\EOF
-#define HAVE_SHADOW_PASSWD 1
-EOF
-
-
-      # 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:7662: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lc  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 7670 "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
-    builtin and then its argument prototype would still apply.  */
-char getspnam();
-
-int main() {
-getspnam()
-; return 0; }
-EOF
-if { (eval echo configure:7681: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_getspnam=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-      if test "$have_getspnam" = no ; then
-        echo $ac_n "checking for getspnam in -lgen""... $ac_c" 1>&6
-echo "configure:7703: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lgen  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 7711 "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
-    builtin and then its argument prototype would still apply.  */
-char getspnam();
-
-int main() {
-getspnam()
-; return 0; }
-EOF
-if { (eval echo configure:7722: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-      fi
-    fi
-  fi
-
-  # On FreeBSD, getpwnam() and friends work just like on non-shadow-password
-  # systems -- except you only get stuff in the pw_passwd field if the running
-  # program is setuid.  So, guess that we've got this lossage to contend with
-  # if /etc/master.passwd exists, and default to a setuid installation.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    echo $ac_n "checking for FreeBSD-style shadow passwords""... $ac_c" 1>&6
-echo "configure:7753: 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
-  if test -f /etc/master.passwd ; then
-                     ac_cv_master_passwd=yes
-                   else
-                     ac_cv_master_passwd=no
-                   fi
-fi
-
-echo "$ac_t""$ac_cv_master_passwd" 1>&6
-    if test "$ac_cv_master_passwd" = yes; then
-      need_setuid=yes
-      pwent_cruft_done=yes
-    fi
-  fi
-
-  # 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:7774: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lc  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 7782 "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
-    builtin and then its argument prototype would still apply.  */
-char crypt();
-
-int main() {
-crypt()
-; return 0; }
-EOF
-if { (eval echo configure:7793: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_crypt=yes
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  if test "$have_crypt" = no ; then
-    echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:7815: 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
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lcrypt  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 7823 "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
-    builtin and then its argument prototype would still apply.  */
-char crypt();
-
-int main() {
-crypt()
-; return 0; }
-EOF
-if { (eval echo configure:7834: \"$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
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  fi
-
-
-  # Most of the above shadow mechanisms will have set need_setuid to yes,
-  # if they were found.  But, on some systems, we need setuid even when
-  # using plain old vanilla passwords.
-  #
-  if test "$need_setuid" = no ; then
-    case "$host" in
-      *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
-        need_setuid=yes
-      ;;
-    esac
-  fi
-
-fi
-
-
-# for the "sonar" hack -- check how to ping.
-#
-echo $ac_n "checking for struct icmp""... $ac_c" 1>&6
-echo "configure:7875: 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 7880 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-                  #include <stdio.h>
-                  #include <math.h>
-                  #include <unistd.h>
-                  #include <limits.h>
-                  #include <signal.h>
-                  #include <fcntl.h>
-                  #include <sys/types.h>
-                  #include <sys/time.h>
-                  #include <sys/ipc.h>
-                  #include <sys/shm.h>
-                  #include <sys/socket.h>
-                  #include <netinet/in_systm.h>
-                  #include <netinet/in.h>
-                  #include <netinet/ip.h>
-                  #include <netinet/ip_icmp.h>
-                  #include <netinet/udp.h>
-                  #include <arpa/inet.h>
-                  #include <netdb.h>
-int main() {
-struct icmp i;
-                  struct sockaddr s;
-                  struct sockaddr_in si;
-                  struct ip ip;
-                  i.icmp_type = ICMP_ECHO;
-                  i.icmp_code = 0;
-                  i.icmp_cksum = 0;
-                  i.icmp_id = 0;
-                  i.icmp_seq = 0;
-                  si.sin_family = AF_INET;
-                  ip.ip_hl = 0;
-; return 0; }
-EOF
-if { (eval echo configure:7915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_have_icmp=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_have_icmp=no
-fi
-rm -f conftest*
-fi
-
-ac_have_icmp=$ac_cv_have_icmp
-echo "$ac_t""$ac_cv_have_icmp" 1>&6
-
-echo $ac_n "checking for struct icmphdr""... $ac_c" 1>&6
-echo "configure:7931: 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 7936 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-                  #include <stdio.h>
-                  #include <math.h>
-                  #include <unistd.h>
-                  #include <limits.h>
-                  #include <signal.h>
-                  #include <fcntl.h>
-                  #include <sys/types.h>
-                  #include <sys/time.h>
-                  #include <sys/ipc.h>
-                  #include <sys/shm.h>
-                  #include <sys/socket.h>
-                  #include <netinet/in_systm.h>
-                  #include <netinet/in.h>
-                  #include <netinet/ip.h>
-                  #include <netinet/ip_icmp.h>
-                  #include <netinet/udp.h>
-                  #include <arpa/inet.h>
-                  #include <netdb.h>
-int main() {
-struct icmphdr i;
-                  struct sockaddr s;
-                  struct sockaddr_in si;
-                  struct ip ip;
-                  i.type = ICMP_ECHO;
-                  i.code = 0;
-                  i.cksum = 0;
-                  i.un.echo.id = 0;
-                  i.un.echo.sequence = 0;
-                  si.sin_family = AF_INET;
-                  ip.ip_hl = 0;
-; return 0; }
-EOF
-if { (eval echo configure:7971: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_have_icmphdr=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_have_icmphdr=no
-fi
-rm -f conftest*
-fi
-
-ac_have_icmphdr=$ac_cv_have_icmphdr
-echo "$ac_t""$ac_cv_have_icmphdr" 1>&6
-
-if test "$ac_have_icmp" = yes ; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_ICMP 1
-EOF
-
-fi
-if test "$ac_have_icmphdr" = yes ; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_ICMPHDR 1
-EOF
-
-fi
-
-
-
-########################## end of tests.
-
-
-if test \! -z "$includedir" ; then 
-  INCLUDES="-I$includedir"
-fi
-
-if test \! -z "$libdir" ; then
-  LDFLAGS="$LDFLAGS -L$libdir"
-fi
-
-
-##### should have options to override the DEPEND crap, I guess...
-DEPEND=makedepend
-DEPEND_FLAGS=
-DEPEND_DEFINES=
-
-
-# Done testing things -- now substitute in some stuff for the Makefiles.
-#
-if test "$have_motif" = yes; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_MOTIF 1
-EOF
-
-  TOOLKIT_SRCS='$(MOTIF_SRCS)'
-  TOOLKIT_OBJS='$(MOTIF_OBJS)'
-elif test "$have_athena" = yes; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_ATHENA 1
-EOF
-
-  TOOLKIT_SRCS='$(ATHENA_SRCS)'
-  TOOLKIT_OBJS='$(ATHENA_OBJS)'
-else
-  TOOLKIT_SRCS=''
-  TOOLKIT_OBJS=''
-fi
-
-if test "$have_kerberos" = yes; then
-  PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
-  PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
-fi
-if test "$have_pam" = yes; then
-  PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
-  PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
-  INSTALL_PAM="install-pam"
-fi
-  PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
-  PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
-
-
-if test "$enable_locking" = yes; then
-  LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
-  LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
-else
-  LOCK_SRCS=''
-  LOCK_OBJS=''
-fi
-
-if test "$need_setuid" = yes; then
-  NEED_SETUID=yes
-  INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
-else
-  NEED_SETUID=no
-  INSTALL_SETUID='$(INSTALL_PROGRAM)'
-fi
-
-tab='  '
-if test "$have_gl" = yes; then
-  GL_EXES='$(GL_EXES)'
-  GL_MEN='$(GL_MEN)'
-  GL_KLUDGE="${tab}  "
-else
-  GL_KLUDGE="  -${tab}  "
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Print some warnings before emitting the Makefiles.
-#
-warn_prefix_1="    Warning:"
-warn_prefix_2="       Note:"
-warn_prefix="$warn_prefix_1"
-
-warning=no
-warnsep='    #################################################################'
-
-warnpre() {
-  if test "$warning" = no ; then
-    echo '' ; echo "$warnsep" ; echo ''
-    warning=yes
-  fi
-}
-
-warn() {
-  warnpre
-  if test "$warning" = long ; then echo '' ; fi
-  warning=yes
-  echo "$warn_prefix $@"
-}
-
-warnL() {
-  was=$warning
-  warnpre
-  warning=yes
-  if test "$was" != no ; then echo '' ; fi
-  echo "$warn_prefix $@"
-}
-
-warn2() {
-  echo "             $@"
-  warning=long
-}
-
-note() {
-  warn_prefix="$warn_prefix_2"
-  warn $@
-  warn_prefix="$warn_prefix_1"
-}
-
-noteL() {
-  warn_prefix="$warn_prefix_2"
-  warnL $@
-  warn_prefix="$warn_prefix_1"
-}
-
-
-if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
-  warn 'The SGI saver extension was requested, but was not found.'
-fi
-
-if test "$with_mit_req" = yes -a "$have_mit" = no ; then
-  warn 'The MIT saver extension was requested, but was not found.'
-fi
-
-if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
-  warn 'The XIdle extension was requested, but was not found.'
-fi
-
-if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
-  warn 'The XSHM extension was requested, but was not found.'
-fi
-
-if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
-  warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
-fi
-
-if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
-  warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
-fi
-
-if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
-  warn 'The DPMS extension was requested, but was not found.'
-fi
-
-if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
-  warn 'The XF86VMODE extension was requested, but was not found.'
-fi
-
-if test "$have_motif" = no -a "$have_athena" = no ; then
-  warnL "Neither Motif nor Athena widgets seem to be available;"
-  warn2 "the \`xscreensaver-demo' program requires one or the"
-  warn2 "other."
-  proselytize_motif=no
-
-elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
-  warnL "Use of Motif was requested, but it wasn't found;"
-  warn2 "Athena will be used instead."
-
-elif test "$with_athena_req" = yes -a "$have_athena" = no ; then
-  warnL "Use of Athena was requested, but it wasn't found;"
-  warn2 "Motif will be used instead."
-fi
-
-if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
-
-  preferred_lesstif=0.86
-
-  if test "$lesstif_version" = unknown; then
-    warnL "Unable to determine the LessTif version number!"
-    warn2 "Make sure you are using version $preferred_lesstif or newer."
-    warn2 "See <http://www.lesstif.org/>."
-
-  elif test \! $lesstif_version -gt 82; then
-    warnL "LessTif version $lesstif_version_string is being used."
-    warn2 "LessTif versions 0.82 and earlier are too buggy to"
-    warn2 "use with XScreenSaver; it is strongly recommended"
-    warn2 "that you upgrade to at least version $preferred_lesstif!"
-    warn2 "See <http://www.lesstif.org/>."
-  fi
-fi
-
-if test "$proselytize_motif" = yes ; then
-    warnL "Athena widgets are being used instead of Motif."
-    warn2 "The \`xscreensaver-demo' program looks much better"
-    warn2 "with Motif.  Wouldn't you rather be using Motif?"
-    warn2 "It is shipped by every commercial Unix vendor;"
-    warn2 "and there is a free implementation available as"
-    warn2 "well: see <http://www.lesstif.org/>."
-fi
-
-
-if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
-  preferred_mesagl=3.0
-
-  if test "$ac_mesagl_version" = unknown; then
-    warnL "Unable to determine the MesaGL version number!"
-    warn2 "Make sure you are using version $preferred_mesagl or newer."
-
-  elif test \! "$ac_mesagl_version" -gt 2006; then
-    warnL "MesaGL version $ac_mesagl_version_string is being used."
-    warn2 "MesaGL versions 2.6 and earlier have a security bug."
-    warn2 "It is strongly recommended that you upgrade to at"
-    warn2 "least version $preferred_mesagl."
-  fi
-fi
-
-
-if test "$have_xpm" = no ; then
-  if test "$with_xpm_req" = yes ; then
-    warnL 'Use of XPM was requested, but it was not found.'
-  elif test "$with_xpm_req" = no ; then
-    noteL 'The XPM library is not being used.'
-  else
-    noteL 'The XPM library was not found.'
-  fi
-
-  echo ''
-  warn2 'Some of the demos will not be as colorful as they'
-  warn2 'could be.  You might want to consider installing XPM'
-  warn2 'and re-running configure.  (Remember to delete the'
-  warn2 'config.cache file first.)  You can find XPM at most'
-  warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
-fi
-
-if test "$have_gl" = no ; then
-  if test "$with_gl_req" = yes ; then
-    warnL 'Use of GL was requested, but it was not found.'
-  elif test "$with_gl_req" = no ; then
-    noteL 'The OpenGL 3D library is not being used.'
-  else
-    noteL 'The OpenGL 3D library was not found.'
-  fi
-
-  echo ''
-  warn2 'Those demos which use 3D will not be built or installed.'
-  warn2 'You might want to consider installing OpenGL and'
-  warn2 're-running configure.  (Remember to delete the'
-  warn2 "config.cache file first.)  If your vendor doesn't ship"
-  warn2 'their own implementation of OpenGL, you can get a free'
-  warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
-  warn2 'info, see <http://www.opengl.org/>.'
-
-fi
-
-if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
-  warn 'Use of XReadDisplay was requested, but it was not found.'
-fi
-
-if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then
-  warn 'Use of the Iris Video Library was requested, but it was not found.'
-fi
-
-if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
-  warn 'Use of Kerberos was requested, but it was not found.'
-fi
-
-if test "$with_pam_req" = yes -a "$have_pam" = no ; then
-  warn 'Use of PAM was requested, but it was not found.'
-fi
-
-if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
-  warn 'Use of shadow passwords was requested, but they were not found.'
-fi
-
-if test -n "$with_zippy_req"; then
-  if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then
-    warnL "$with_zippy_req was requested as the Zippy program,"
-    warn2 "but was not found.  The default will be used instead."
-  fi
-fi
-
-if test "$warning" != no; then
-  echo '' ; echo "$warnsep" ; echo ''
-fi
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile
-         utils/Makefile
-         driver/Makefile
-         hacks/Makefile
-         hacks/glx/Makefile
-         driver/XScreenSaver.ad config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@host@%$host%g
-s%@host_alias@%$host_alias%g
-s%@host_cpu@%$host_cpu%g
-s%@host_vendor@%$host_vendor%g
-s%@host_os@%$host_os%g
-s%@CC@%$CC%g
-s%@CPP@%$CPP%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@SET_MAKE@%$SET_MAKE%g
-s%@X_CFLAGS@%$X_CFLAGS%g
-s%@X_PRE_LIBS@%$X_PRE_LIBS%g
-s%@X_LIBS@%$X_LIBS%g
-s%@X_EXTRA_LIBS@%$X_EXTRA_LIBS%g
-s%@zip2@%$zip2%g
-s%@emacs_exe@%$emacs_exe%g
-s%@xemacs_exe@%$xemacs_exe%g
-s%@fortune@%$fortune%g
-s%@INCLUDES@%$INCLUDES%g
-s%@SAVER_LIBS@%$SAVER_LIBS%g
-s%@TOOLKIT_LIBS@%$TOOLKIT_LIBS%g
-s%@HACK_LIBS@%$HACK_LIBS%g
-s%@XPM_LIBS@%$XPM_LIBS%g
-s%@GL_LIBS@%$GL_LIBS%g
-s%@PASSWD_LIBS@%$PASSWD_LIBS%g
-s%@INSTALL_SETUID@%$INSTALL_SETUID%g
-s%@INSTALL_DIRS@%$INSTALL_DIRS%g
-s%@NEED_SETUID@%$NEED_SETUID%g
-s%@INSTALL_PAM@%$INSTALL_PAM%g
-s%@SGI_VIDEO_OBJS@%$SGI_VIDEO_OBJS%g
-s%@SGI_VIDEO_LIBS@%$SGI_VIDEO_LIBS%g
-s%@TOOLKIT_SRCS@%$TOOLKIT_SRCS%g
-s%@TOOLKIT_OBJS@%$TOOLKIT_OBJS%g
-s%@PASSWD_SRCS@%$PASSWD_SRCS%g
-s%@PASSWD_OBJS@%$PASSWD_OBJS%g
-s%@XMU_SRCS@%$XMU_SRCS%g
-s%@XMU_OBJS@%$XMU_OBJS%g
-s%@SAVER_GL_SRCS@%$SAVER_GL_SRCS%g
-s%@SAVER_GL_OBJS@%$SAVER_GL_OBJS%g
-s%@SAVER_GL_LIBS@%$SAVER_GL_LIBS%g
-s%@LOCK_SRCS@%$LOCK_SRCS%g
-s%@LOCK_OBJS@%$LOCK_OBJS%g
-s%@GL_EXES@%$GL_EXES%g
-s%@GL_MEN@%$GL_MEN%g
-s%@GL_KLUDGE@%$GL_KLUDGE%g
-s%@HACKDIR@%$HACKDIR%g
-s%@APPDEFAULTS@%$APPDEFAULTS%g
-s%@DEPEND@%$DEPEND%g
-s%@DEPEND_FLAGS@%$DEPEND_FLAGS%g
-s%@DEPEND_DEFINES@%$DEPEND_DEFINES%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
-  fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile
-         utils/Makefile
-         driver/Makefile
-         hacks/Makefile
-         hacks/glx/Makefile
-         driver/XScreenSaver.ad"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
-
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
-ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_uB='\([     ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
-  CONFIG_HEADERS="config.h"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  echo creating $ac_file
-
-  rm -f conftest.frag conftest.in conftest.out
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  cat $ac_file_inputs > conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h.  And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-
-rm -f conftest.tail
-while :
-do
-  ac_lines=`grep -c . conftest.vals`
-  # grep -c gives empty output for an empty file on some AIX systems.
-  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-  # Write a limited-size here document to conftest.frag.
-  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
-  echo 'CEOF
-  sed -f conftest.frag conftest.in > conftest.out
-  rm -f conftest.in
-  mv conftest.out conftest.in
-' >> $CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-  rm -f conftest.vals
-  mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
-  rm -f conftest.frag conftest.h
-  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
-  cat conftest.in >> conftest.h
-  rm -f conftest.in
-  if cmp -s $ac_file conftest.h 2>/dev/null; then
-    echo "$ac_file is unchanged"
-    rm -f conftest.h
-  else
-    # Remove last slash and all that follows it.  Not all systems have dirname.
-      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-      # The file is in a subdirectory.
-      test ! -d "$ac_dir" && mkdir "$ac_dir"
-    fi
-    rm -f $ac_file
-    mv conftest.h $ac_file
-  fi
-fi; done
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-
-# You are in a twisty maze of namespaces and syntaxes, all alike.
-# Fuck the skull of Unix.
-#
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-
-# canonicalize slashes.
-bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
-HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
-
-
-# Sanity check the subdir
-for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
-  if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
-    echo ""
-    { echo "configure: error: \"--enable-subdir=${bindir}/${bad_choice}\" won't work.
-                   There will be an executable installed with that name, so
-                   that can't be the name of a directory as well.  Please
-                   re-configure with a different directory name." 1>&2; exit 1; }
-  fi
-done
-
-
-do_dir_warning=no
-
-# Now let's see if there's a previous RPM version already installed.  Blargh!
-
-# M4 sucks!!
-
-rpmv=`(rpm -qv xscreensaver) 2>&- | \
-      sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-[0-9][0-9]*$/\1/'`
-
-
-if test \! -z "$rpmv" ; then
-  rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
-  rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
-
-  warning=no
-  warnL "There is already an installed RPM of xscreensaver $rpmv"
-  warn2 "on this system.  You might want to remove it (with"
-  warn2 '"rpm -ve xscreensaver") before running "make install"'
-  warn2 "from this directory."
-  echo ""
-  warn2 "Alternately, you could build this version of xscreensaver"
-  warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
-  warn2 "file is included.  See the RPM documentation for more info."
-  echo ""
-
-  if test "$rpmbdir" = "$rpmhdir" ; then
-    warn2 "The RPM version was installed in $rpmbdir."
-  else
-    warn2 "The RPM version was installed in $rpmbdir,"
-    warn2 "with demos in $rpmhdir."
-  fi
-
-  do_dir_warning=yes
-fi
-
-
-if test "${bindir}" = "${HACKDIR}" ; then
-  do_dir_warning=yes
-fi
-
-if test "$do_dir_warning" = yes; then
-  echo ""
-  echo "$warnsep"
-  echo ""
-  echo '      When you run "make install", the "xscreensaver",'
-  echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
-  echo "      will be installed in ${bindir}."
-  echo ""
-  echo "      The various graphics demos (90+ different executables) will"
-  echo "      also be installed in ${HACKDIR}."
-  echo ""
-  echo "      If you would prefer the demos to be installed elsewhere"
-  echo "      (for example, in a dedicated directory) you should re-run"
-  echo "      configure with the --enable-subdir=DIR option.  For more"
-  echo "      information, run $0 --help."
-  echo ""
-  echo "$warnsep"
-  echo ""
-fi
diff --git a/configure.in b/configure.in
deleted file mode 100644 (file)
index 3de83e0..0000000
+++ /dev/null
@@ -1,2434 +0,0 @@
-# configure.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski.
-#
-
-AC_INIT(driver/subprocs.c)
-
-echo "current directory: `pwd`"
-echo "command line was: $0 $@"
-
-AC_CONFIG_HEADER(config.h)
-AC_CANONICAL_HOST
-
-AC_PROG_CC
-
-if test -z "$GCC"; then
-  AC_MSG_CHECKING(how to request ANSI compilation)
-  case "$host" in
-    *-hpux*)
-      AC_MSG_RESULT(HPUX: adding -Ae)
-      CC="$CC -Ae"
-    ;;
-    *-aix*)
-      AC_MSG_RESULT(AIX: adding -qlanglvl=ansi -qhalt=e)
-      CC="$CC -qlanglvl=ansi -qhalt=e"
-    ;;
-
-    *-dec-*)
-      AC_MSG_RESULT(DEC: adding -std1)
-      CC="$CC -std1"
-    ;;
-
-    *)
-      AC_MSG_RESULT(no idea)
-    ;;
-  esac
-fi
-
-
-AC_MSG_CHECKING([whether the compiler works on ANSI C])
-AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
-   AC_MSG_RESULT(yes),
-   AC_MSG_RESULT(no)
-   AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.),
-   AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
-
-case "$host" in
-  *-irix5* |*-irix6.[0-3]* )
-    if test -n "$GCC"; then
-      AC_MSG_RESULT(Turning on gcc compiler warnings.)
-      CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
-    else
-      # not gcc
-      AC_MSG_RESULT(Turning on SGI compiler warnings.)
-      CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
-    fi
-  ;;
-
-    *-linux-*)
-      AC_MSG_RESULT(Turning on gcc compiler warnings.)
-      CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
-  ;;
-
-#  *-dec-osf*)
-#    if test -z "$GCC"; then
-#      AC_MSG_RESULT(Turning on DEC C compiler warnings.)
-#      CC="$CC -migrate -w0 -verbose -warnprotos"
-#    fi
-#  ;;
-
-esac
-
-
-# Try and determine whether ${INSTALL} can create intermediate directories,
-# and if not, whether "mkdir -p" works instead.  This sets ${INSTALL_DIRS}.
-# (But autoconf should earn its keep and do this for us!)
-#
-AC_DEFUN(AC_PROG_INSTALL_DIRS,
-  [INSTALL_DIRS='${INSTALL} -d'
-   AC_MSG_CHECKING(whether \"\${INSTALL} -d\" creates intermediate directories)
-   rm -rf conftestdir
-   if mkdir conftestdir; then
-      cd conftestdir >&-
-
-      ${INSTALL} -d `pwd`/dir1/dir2 >&- 2>&-
-      if test -d dir1/dir2 ; then
-        AC_MSG_RESULT(yes)
-      else
-        AC_MSG_RESULT(no)
-        AC_MSG_CHECKING(whether \"mkdir -p\" creates intermediate directories)
-        rm -rf dir1
-        mkdir -p dir1/dir2 >&- 2>&-
-        if test -d dir1/dir2/. ; then
-         AC_MSG_RESULT(yes)
-         INSTALL_DIRS='mkdir -p'
-        else
-         AC_MSG_RESULT(no)
-        fi
-      fi
-      cd .. >&-
-      rm -rf conftestdir
-   fi
-])
-
-
-AC_PROG_CPP
-AC_PROG_INSTALL
-AC_PROG_INSTALL_DIRS
-AC_PROG_MAKE_SET
-
-AC_C_CONST
-AC_C_INLINE
-
-AC_HEADER_STDC
-AC_HEADER_TIME
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-
-AC_TYPE_MODE_T
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-AC_TYPE_SIGNAL
-
-AC_MSG_CHECKING(how to call gettimeofday)
-AC_CACHE_VAL(ac_cv_gettimeofday_args,
- [AC_TRY_COMPILE([#include <stdlib.h>
-                 #include <sys/time.h>],
-                [struct timeval tv; struct timezone tzp;
-                 gettimeofday(&tv, &tzp);],
-                [ac_gettimeofday_args=2],
-                [AC_TRY_COMPILE([#include <stdlib.h>
-                                 #include <sys/time.h>],
-                                [struct timeval tv; gettimeofday(&tv);],
-                                [ac_gettimeofday_args=1],
-                                [ac_gettimeofday_args=0])])
-  ac_cv_gettimeofday_args=$ac_gettimeofday_args])
-ac_gettimeofday_args=$ac_cv_gettimeofday_args
-if test "$ac_gettimeofday_args" = 1 ; then
-  AC_DEFINE(HAVE_GETTIMEOFDAY)
-  AC_MSG_RESULT(one argument)
-elif test "$ac_gettimeofday_args" = 2 ; then
-  AC_DEFINE(HAVE_GETTIMEOFDAY)
-  AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
-  AC_MSG_RESULT(two arguments)
-else
-  AC_MSG_RESULT(unknown)
-fi
-
-
-AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv)
-AC_CHECK_FUNCS(sigaction syslog)
-
-AC_CHECK_HEADERS(unistd.h crypt.h sys/select.h)
-
-dnl    /usr/local/src/ssh-1.2.17/putenv.c -- AC_REPLACE_FUNCS(putenv)
-
-
-AC_ARG_ENABLE(subdir,[
-Installation options:
-
-  --enable-subdir=DIR     Put the demo programs in a subdirectory of \`bindir',
-                          instead of putting them in bindir itself.  You can
-                          specify the name of the subdirectory.  For example,
-                          \`--exec-prefix=/usr/local --enable-subdir=demos'
-                          would put xscreensaver in /usr/local/bin/, and would
-                          put the demos in /usr/local/bin/demos/.  (If DIR
-                          begins with /, then bindir will not be prepended.)
-
-  --disable-subdir        Just put the demos in \`bindir' (this is the default.)
-],
-  [enable_subdir="$enableval"],[enable_subdir=no])
-if test x"$enable_subdir" = xno; then
-  HACKDIR='${bindir}'
-elif test x"$enable_subdir" = xyes -o x"$enable_subdir" = x ; then
-  echo "error: must be a subdirectory name: --enable-subdir=$enable_subdir"
-  exit 1
-else
-  # there must be a better way than this...
-  if test -z "`echo $enable_subdir | sed 's@^/.*@@'`" ; then
-    # absolute path
-    HACKDIR=$enable_subdir
-  else
-    # relative path
-    HACKDIR='${bindir}/'$enable_subdir
-  fi
-fi
-
-# canonicalize slashes.
-HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
-
-
-AC_PATH_XTRA
-
-if test "$have_x" != yes; then
-  AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
-fi
-
-
-# Try and find the app-defaults directory.
-# It sucks that autoconf doesn't do this already...
-#
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
-  rm -fr conftestdir
-  if mkdir conftestdir; then
-    cd conftestdir >&-
-    # Make sure to not put "make" in the Imakefile rules, since we grep it out.
-    cat > Imakefile <<'EOF'
-acfindx:
-       @echo 'ac_x_app_defaults="${XAPPLOADDIR}"'
-EOF
-    if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
-      # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
-      eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
-    fi
-    cd .. >&-
-    rm -fr conftestdir
-  fi])
-
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
-  # Look for the directory under a standard set of common directories.
-  # Check X11 before X11Rn because it's often a symlink to the current release.
-  for ac_dir in                                        \
-    /usr/X11/lib/app-defaults                  \
-    /usr/X11R6/lib/app-defaults                        \
-    /usr/X11R6/lib/X11/app-defaults            \
-    /usr/X11R5/lib/app-defaults                        \
-    /usr/X11R5/lib/X11/app-defaults            \
-    /usr/X11R4/lib/app-defaults                        \
-    /usr/X11R4/lib/X11/app-defaults            \
-                                               \
-    /usr/lib/X11/app-defaults                  \
-    /usr/lib/X11R6/app-defaults                        \
-    /usr/lib/X11R5/app-defaults                        \
-    /usr/lib/X11R4/app-defaults                        \
-                                               \
-    /usr/local/X11/lib/app-defaults            \
-    /usr/local/X11R6/lib/app-defaults          \
-    /usr/local/X11R5/lib/app-defaults          \
-    /usr/local/X11R4/lib/app-defaults          \
-                                               \
-    /usr/local/lib/X11/app-defaults            \
-    /usr/local/lib/X11R6/app-defaults          \
-    /usr/local/lib/X11R6/X11/app-defaults      \
-    /usr/local/lib/X11R5/app-defaults          \
-    /usr/local/lib/X11R5/X11/app-defaults      \
-    /usr/local/lib/X11R4/app-defaults          \
-    /usr/local/lib/X11R4/X11/app-defaults      \
-                                               \
-    /usr/X386/lib/X11/app-defaults             \
-    /usr/x386/lib/X11/app-defaults             \
-    /usr/XFree86/lib/X11/app-defaults          \
-                                               \
-    /usr/lib/X11/app-defaults                  \
-    /usr/local/lib/X11/app-defaults            \
-    /usr/unsupported/lib/X11/app-defaults      \
-    /usr/athena/lib/X11/app-defaults           \
-    /usr/local/x11r5/lib/X11/app-defaults      \
-    /usr/lpp/Xamples/lib/X11/app-defaults      \
-    /lib/usr/lib/X11/app-defaults              \
-                                               \
-    /usr/openwin/lib/app-defaults              \
-    /usr/openwin/lib/X11/app-defaults          \
-    /usr/openwin/share/lib/app-defaults                \
-    /usr/openwin/share/lib/X11/app-defaults    \
-                                               \
-    /X11R6/lib/app-defaults                    \
-    /X11R5/lib/app-defaults                    \
-    /X11R4/lib/app-defaults                    \
-    ; \
-  do
-    if test -d "$ac_dir"; then
-      ac_x_app_defaults=$ac_dir
-      break
-    fi
-  done
-])
-
-
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
-  [AC_REQUIRE_CPP()
-    AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
-     [AC_PATH_X_APP_DEFAULTS_XMKMF
-      if test x"$ac_x_app_defaults" = x; then
-        AC_PATH_X_APP_DEFAULTS_DIRECT
-      fi
-      if test x"$ac_x_app_defaults" = x; then
-        ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
-      else
-        # Record where we found app-defaults for the cache.
-        ac_cv_x_app_defaults="$ac_x_app_defaults"
-      fi])
-    eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
-
-AC_PATH_X_APP_DEFAULTS
-
-APPDEFAULTS=$ac_x_app_defaults
-
-
-# Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
-#
-AC_DEFUN(AC_CHECK_X_HEADER, [
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  AC_CHECK_HEADER([$1], [$2])
-  CPPFLAGS="$ac_save_CPPFLAGS"])
-
-# Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
-#
-AC_DEFUN(AC_EGREP_X_HEADER, [
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  AC_EGREP_HEADER([$1], [$2], [$3], [$4])
-  CPPFLAGS="$ac_save_CPPFLAGS"])
-
-# Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
-#
-AC_DEFUN(AC_TRY_X_COMPILE, [
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  AC_TRY_COMPILE([$1], [$2], [$3], [$4])
-  CPPFLAGS="$ac_save_CPPFLAGS"])
-
-
-# Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
-# Use this sparingly; it probably doesn't work very well on X programs.
-#
-AC_DEFUN(AC_CHECK_X_LIB, [
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LDFLAGS="$LDFLAGS"
-
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  # note: $X_CFLAGS includes $x_includes
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-  if test \! -z "$libdir" ; then
-    LDFLAGS="$LDFLAGS -L$libdir"
-  fi
-  # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
-
-  AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LDFLAGS="$ac_save_LDFLAGS"])
-
-# Like AC_TRY_RUN, but it uses the already-computed -I directories.
-# (But not the -L directories!)
-#
-AC_DEFUN(AC_TRY_X_RUN, [
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  AC_TRY_RUN([$1], [$2], [$3], [$4])
-  CPPFLAGS="$ac_save_CPPFLAGS"])
-
-
-
-# Usage: HANDLE_X_PATH_ARG([variable_name],
-#                         [--command-line-option],
-#                         [descriptive string])
-#
-# All of the --with options take three forms:
-#
-#   --with-foo (or --with-foo=yes)
-#   --without-foo (or --with-foo=no)
-#   --with-foo=/DIR
-#
-# This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
-# a directory (string beginning with a slash) it checks to see whether
-# /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
-# as appropriate.
-#
-AC_DEFUN(HANDLE_X_PATH_ARG, [
-   case "$[$1]" in
-    yes) ;;
-    no)  ;;
-
-    /*)
-     AC_MSG_CHECKING([for [$3] headers])
-     d=$[$1]/include
-     if test -d $d; then
-       X_CFLAGS="-I$d $X_CFLAGS"
-       AC_MSG_RESULT($d)
-     else
-       AC_MSG_RESULT(not found ($d: no such directory))
-     fi
-
-     AC_MSG_CHECKING([for [$3] libs])
-     d=$[$1]/lib
-     if test -d $d; then
-       X_LIBS="-L$d $X_LIBS"
-       AC_MSG_RESULT($d)
-     else
-       AC_MSG_RESULT(not found ($d: no such directory))
-     fi
-
-     # replace the directory string with "yes".
-     [$1]_req="yes"
-     [$1]=$[$1]_req
-     ;;
-
-    *)
-     echo ""
-     echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
-     echo "       If it is a directory, then \`DIR/include' will be added to"
-     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
-     exit 1
-     ;;
-   esac
-
-   # why is this necessary?
-   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
-   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
-   withval=
-  ])
-
-
-
-# check for the HP XHPDisableReset server extension headers.
-#
-AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
-                 [AC_DEFINE(HAVE_XHPDISABLERESET)
-                  SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
-
-
-# Check for the availability of the XPointer typedef, and define it otherwise.
-#
-AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
-               [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
-                                 [XPointer foo = (XPointer) 0;],
-                                 [ac_cv_xpointer=yes],
-                                 [ac_cv_xpointer=no])])
-if test "$ac_cv_xpointer" != yes; then
-  AC_DEFINE(XPointer,[char*])
-fi
-
-
-# Random special-cases for certain pathological OSes.  You know who you are.
-#
-case "$host" in
-  *-hpux*)
-
-    # The following arcana was gleaned from conversations with
-    # Eric Schwartz <erics@col.hp.com>:
-    #
-    # On HPUX 10.x, the parts of X that HP considers "standard" live in
-    # /usr/{include,lib}/X11R6/.  The parts that HP doesn't consider
-    # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
-    # Also, there are symlinks from /usr/include/ and /usr/lib/ into
-    # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
-    # you don't need any -I or -L arguments.
-    #
-    # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
-    # are the same division as 10.x.  However, there are no symlinks to
-    # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
-    # arguments are always necessary.
-    #
-    # However, X11R6 was available on HPUX 9.x as a patch: if that
-    # patch was installed, then all of X11R6 went in to
-    # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
-    #
-    # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
-    # whether R5 was available as a patch; R6 undoubtedly was not.)
-    #
-    # So.  We try and use the highest numbered pair of
-    # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
-    # that are available.  We do not mix and match different versions
-    # of X.
-    #
-    # Questions I still don't know the answers to: (do you?)
-    #
-    #   * Does HPUX 10.x come with /usr/contrib/X11R6/ standard?  
-    #     Or does that need to be installed separately?
-    #
-    #   * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
-    #     /usr/contrib/X11R6/ could be installed as a patch, what was in
-    #     that contrib directory?  Did it contain so-called "standard"
-    #     X11R6, or did it include Xaw and Xmu as well?  If the former,
-    #     where did one find Xaw and Xmu on 9.x R6 systems?  Would this
-    #     be a situation where one had to reach into the R5 headers and
-    #     libs to find Xmu?  That is, must both R6 and R5 directories
-    #     be on the -I and -L lists in that case?
-    #
-    for version in X11R6 X11R5 X11R4 ; do
-      # if either pair of directories exists...
-      if test -d /usr/lib/$version || test -d /usr/contrib/$version/lib ; then
-         # if contrib exists, use it...
-         if test -d /usr/contrib/$version/lib ; then
-           X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
-           X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
-         fi
-         # if the "standard" one exists, use it.
-         if test -d /usr/lib/$version ; then
-           X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
-           X_LIBS="$X_LIBS -L/usr/lib/$version"
-         fi
-         # since at least one of the pair exists, go no farther.
-         break
-      fi
-    done
-
-    # Now find Motif.  Thanks for not making xmkmf find this by
-    # default, you losers.
-    #
-    if test -d /usr/lib/Motif1.2 ; then
-      X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
-      X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
-    elif test -d /usr/lib/Motif1.1 ; then
-      X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
-      X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
-    fi
-
-    # Now let's check for the pseudo-standard locations for OpenGL and XPM.
-    #
-    if test -d /opt/Mesa/lib ; then
-      X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
-      X_LIBS="-L/opt/Mesa/lib $X_LIBS"
-    fi
-
-    if test -d /opt/xpm/lib/X11 ; then
-      X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
-      X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
-    fi
-
-    # On HPUX, default to installing in /opt/xscreensaver/ instead of
-    # in /usr/local/, unless there is already an xscreensaver in
-    # /usr/local/bin/.  This can be overridden with the --prefix arg
-    # to configure.  I'm not sure this is the right thing to do, but
-    # Richard Lloyd says so...
-    #
-    if test \! -x /usr/local/bin/xscreensaver ; then
-      ac_default_prefix=/opt/xscreensaver
-    fi
-
-  ;;
-  *-solaris*)
-
-    # Thanks for not making xmkmf find this by default, pinheads.
-    # And thanks for moving things around again, too.  Is this
-    # really the standard location now?  What happened to the
-    # joke that this kind of thing went in /opt?
-    # cthomp says "answer: CDE (Common Disorganized Environment)"
-    #
-    if test -f /usr/dt/include/Xm/Xm.h ; then
-      X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
-      X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
-
-      # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
-      AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
-    fi
-  ;;
-esac
-
-
-
-# Check for Xmu (some fucked up vendors don't ship it...)
-#
-have_xmu=no
-AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes])
-if test "$have_xmu" = no ; then
-  XMU_SRCS='$(UTILS_SRC)/xmu.c'
-  XMU_OBJS='$(UTILS_BIN)/xmu.o'
-else
-  XMU_SRCS=''
-  XMU_OBJS=''
-  SAVER_LIBS="-lXmu $SAVER_LIBS"
-  HACK_LIBS="-lXmu $HACK_LIBS"
-  TOOLKIT_LIBS="-lXmu $TOOLKIT_LIBS"
-  AC_DEFINE(HAVE_XMU)
-fi
-
-
-# See comp.windows.x FAQ question 124 about _get_wmShellWidgetClass on 4.1.x.
-# The right fix is to get OpenWindows 3.0 patches 100512-02 and 100573-03.
-#
-if test "$have_xmu" = yes ; then
-  case "$host" in
-    *-sunos4*)
-    AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
-                  ac_cv_sunos_xmu_bug,
-                  [ac_save_LDFLAGS="$LDFLAGS"
-                   if test \! -z "$x_libraries" ; then
-                     LDFLAGS="$LDFLAGS -L$x_libraries"
-                   fi
-                   # Note: this trick never works!  (Generally.)
-                   # We're only getting away with using AC_TRY_LINK
-                   # with X libraries because we know it's SunOS.
-                   LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
-                   AC_TRY_LINK(,,
-                               [ac_cv_sunos_xmu_bug=no],
-                               [ac_cv_sunos_xmu_bug=yes])
-                   LDFLAGS="$ac_save_LDFLAGS"])
-    if test "$ac_cv_sunos_xmu_bug" = yes ; then
-      AC_CACHE_CHECK([whether the compiler understands -static], 
-                    ac_cv_ld_static,
-                    [ac_save_LDFLAGS="$LDFLAGS"
-                     LDFLAGS="$LDFLAGS -static"
-                     AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
-                   LDFLAGS="$ac_save_LDFLAGS"])
-      if test "$ac_cv_ld_static" = yes ; then
-        LDFLAGS="$LDFLAGS -static"
-      else
-       LDFLAGS="$LDFLAGS -Bstatic"
-      fi
-    fi
-    ;;
-  esac
-fi
-
-
-# Check for the SGI SCREEN_SAVER server extension header.
-#
-have_sgi=no
-with_sgi_req=unspecified
-AC_ARG_WITH(sgi-ext,
-[Except where noted, all of the --with options below can also take a
-directory argument: for example, --with-motif=/opt/Motif.  That would
-cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
-to be added to the -L list, assuming those directories exist.
-
-X Server Extension options:
-
-  --with-sgi-ext          Include support for the SGI SCREEN_SAVER
-                          server extension, if possible (this is the default).
-  --without-sgi-ext       Do not compile in support for this extension.],
-  [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
-
-HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
-
-if test "$with_sgi" = yes; then
-  AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
-                   [have_sgi=yes
-                    AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)])
-
-elif test "$with_sgi" != no; then
-  echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
-  exit 1
-fi
-
-# Check for the MIT-SCREEN-SAVER server extension header,
-# unless the SGI extension has already been found.
-#
-have_mit=no
-with_mit_req=unspecified
-AC_ARG_WITH(mit-ext,
-[  --with-mit-ext          Include support for the MIT-SCREEN-SAVER
-                          server extension, if possible (this is the default).
-  --without-mit-ext       Do not compile in support for this extension.],
-  [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
-
-HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
-
-if test "$have_sgi" != yes; then
-  if test "$with_mit" = yes; then
-    AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes])
-
-    # Now check to see if it's really in the library; XF86Free-3.3 ships
-    # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
-    #
-    if test "$have_mit" = yes; then
-      AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [], [have_mit=no], -lm)
-
-      if test "$have_mit" = no; then
-       # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
-       # of in Xext.  Thank you master, may I have another.
-        AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
-                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
-                      [], -lX11 -lXext -lm)
-      fi
-
-      if test "$have_mit" = no; then
-       # Double fuck!  Looks like some versions of XFree86 (whichever version
-       # it is that comes with RedHat Linux 2.0 -- I can't find a version 
-       # number) put this garbage in Xss instead of Xext.  Thank you master,
-       #  may I have another.
-        AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
-                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
-                      [], -lX11 -lXext -lm)
-      fi
-
-    if test "$have_mit" = yes; then
-      AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
-    fi
-
-    fi
-
-  elif test "$with_mit" != no; then
-    echo "error: must be yes or no: --with-mit-ext=$with_mit"
-    exit 1
-  fi
-fi
-
-
-# Check for the XIDLE server extension header.
-#
-have_xidle=no
-with_xidle_req=unspecified
-AC_ARG_WITH(xidle-ext,
-[  --with-xidle-ext        Include support for the XIDLE server extension,
-                          if possible (this is the default).
-  --without-xidle-ext     Do not compile in support for this extension.],
-  [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
-
-HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
-
-if test "$with_xidle" = yes; then
-  AC_CHECK_X_HEADER(X11/extensions/xidle.h,
-                   [have_xidle=yes
-                    AC_DEFINE(HAVE_XIDLE_EXTENSION)])
-elif test "$with_xidle" != no; then
-  echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
-  exit 1
-fi
-
-
-# Check for the XSHM server extension header.
-#
-have_xshm=no
-with_xshm_req=unspecified
-AC_ARG_WITH(xshm-ext,
-[  --with-xshm-ext         Include support for the XSHM (Shared Memory) server
-                          extension, if possible (this is the default).
-  --without-xshm-ext      Do not compile in support for this extension.],
-  [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
-
-HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
-
-if test "$with_xshm" = yes; then
-
-  # first check for Xshm.h.
-  AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
-
-  # if that succeeded, then check for sys/ipc.h.
-  if test "$have_xshm" = yes; then
-    have_xshm=no
-    AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
-  fi
-
-  # if that succeeded, then check for sys/shm.h.
-  if test "$have_xshm" = yes; then
-    have_xshm=no
-    AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
-  fi
-
-  # AIX is pathological, as usual: apparently it's normal for the Xshm headers
-  # to exist, but the library code to not exist.  And even better, the library
-  # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
-  # lib doesn't exist, give up.
-  #
-  case "$host" in
-    *-aix*)
-      have_xshm=no
-      AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
-                    [have_xshm=yes; SAVER_LIBS="$SAVER_LIBS -lXextSam"],
-                      [], -lX11 -lXext -lm)
-    ;;
-  esac
-
-  # if that succeeded, then we've really got it.
-  if test "$have_xshm" = yes; then
-    AC_DEFINE(HAVE_XSHM_EXTENSION)
-  fi
-
-elif test "$with_xshm" != no; then
-  echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
-  exit 1
-fi
-
-
-# Check for the DOUBLE-BUFFER server extension header.
-#
-have_xdbe=no
-with_xdbe_req=unspecified
-AC_ARG_WITH(xdbe-ext,
-[  --with-xdbe-ext         Include support for the DOUBLE-BUFFER server
-                          extension, if possible (this is the default).
-  --without-xdbe-ext      Do not compile in support for this extension.],
-  [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
-
-HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
-
-if test "$with_xdbe" = yes; then
-
-  AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes])
-  if test "$have_xdbe" = yes; then
-    AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
-  fi
-
-elif test "$with_xdbe" != no; then
-  echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
-  exit 1
-fi
-
-
-# Check for the SGI-VIDEO-CONTROL server extension header.
-#
-have_sgivc=no
-with_sgivc_req=unspecified
-AC_ARG_WITH(sgivc-ext,
-[  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL server
-                          extension, if possible (this is the default).
-  --without-sgivc-ext     Do not compile in support for this extension.],
-  [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
-
-HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
-
-if test "$with_sgivc" = yes; then
-
-  # first check for XSGIvc.h
-  AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes])
-
-  # if that succeeded, then check for the -lXsgivc
-  if test "$have_sgivc" = yes; then
-    have_sgivc=no
-    AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
-                 [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [],
-                 -lXext -lX11)
-  fi
-
-  # if that succeeded, then we've really got it.
-  if test "$have_sgivc" = yes; then
-    AC_DEFINE(HAVE_SGI_VC_EXTENSION)
-  fi
-
-elif test "$with_sgivc" != no; then
-  echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
-  exit 1
-fi
-
-
-# Check for the DPMS server extension header.
-#
-have_dpms=no
-with_dpms_req=unspecified
-AC_ARG_WITH(dpms-ext,
-[  --with-dpms-ext         Include support for the DPMS server extension,
-                          if possible (this is the default).
-  --without-dpms-ext      Do not compile in support for this extension.],
-  [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
-
-HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
-
-if test "$with_dpms" = yes; then
-
-  # first check for dpms.h
-  AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
-
-  # if that succeeded, then check for the -lXdpms
-  if test "$have_dpms" = yes; then
-    have_dpms=no
-    AC_CHECK_X_LIB(Xdpms, DPMSInfo,
-                 [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [],
-                 -lXext -lX11)
-  fi
-
-  # if that succeeded, then we've really got it.
-  if test "$have_dpms" = yes; then
-    AC_DEFINE(HAVE_DPMS_EXTENSION)
-  fi
-
-elif test "$with_dpms" != no; then
-  echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
-  exit 1
-fi
-
-
-# Check for the XF86VMODE server extension header.
-#
-have_xf86vmode=no
-with_xf86vmode_req=unspecified
-AC_ARG_WITH(xf86vmode-ext,
-[  --with-xf86vmode-ext    Include support for XFree86 virtual screens, if
-                          possible (this is the default).
-  --without-xf86vmode-ext Do not compile in support for this extension.],
-  [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
-  [with_xf86vmode=yes])
-
-HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
-
-if test "$with_xf86vmode" = yes; then
-
-  # first check for xf86vmode.h
-  AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes])
-
-  # if that succeeded, then check for the -lXxf86vm
-  if test "$have_xf86vmode" = yes; then
-    have_xf86vmode=no
-    AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
-                 [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"], [],
-                 -lXext -lX11)
-  fi
-
-  # if that succeeded, then we've really got it.
-  if test "$have_xf86vmode" = yes; then
-    AC_DEFINE(HAVE_XF86VMODE)
-  fi
-
-elif test "$with_xf86vmode" != no; then
-  echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
-  exit 1
-fi
-
-
-# Check for /proc/interrupts
-#
-have_proc_interrupts=no
-with_proc_interrupts_req=unspecified
-AC_ARG_WITH(proc-interrupts,
-[  --with-proc-interrupts  Include support for consulting the /proc/interrupts
-                          file to notice keyboard activity, if possible.
-  --without-proc-interrupts   Do not compile in support for this method.],
-  [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
-  [with_proc_interrupts=yes])
-
-if test "$with_proc_interrupts" = yes; then
-
-   AC_MSG_CHECKING(whether /proc/interrupts contains keyboard data)
-   AC_CACHE_VAL(ac_cv_have_proc_interrupts,
-    [ac_cv_have_proc_interrupts=no
-     if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
-       ac_cv_have_proc_interrupts=yes
-     fi
-    ])
-   have_proc_interrupts=$ac_cv_have_proc_interrupts
-
-  AC_MSG_RESULT($have_proc_interrupts)
-
-  if test "$have_proc_interrupts" = yes; then
-    AC_DEFINE(HAVE_PROC_INTERRUPTS)
-  fi
-
-elif test "$with_proc_interrupts" != no; then
-  echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
-  exit 1
-fi
-
-
-
-# Check for Motif and Athena --with and --without arguments.
-#
-have_motif=no
-have_athena=no
-have_athena3d=no
-with_motif_req=unspecified
-with_athena_req=unspecified
-
-AC_ARG_WITH(motif,[
-X Client Toolkit options:
-
-  --with-motif            Use the Motif toolkit for the user interface, if
-                          possible (this is the default).
-  --without-motif         Do not use Motif.],
-  [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
-
-HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
-
-AC_ARG_WITH(athena,
-[  --with-athena           Use the Athena toolkit for the user interface, if
-                          possible (this is the default if Motif isn't used.)
-  --without-athena        Do not use Athena.],
-  [with_athena="$withval"; with_athena_req="$withval"],[with_athena=no])
-
-HANDLE_X_PATH_ARG(with_athena, --with-athena, Athena)
-
-if test "$with_motif" != yes -a "$with_motif" != no ; then
-  echo "error: must be yes or no: --with-motif=$with_motif"
-  exit 1
-fi
-
-if test "$with_athena" != yes -a "$with_athena" != no ; then
-  echo "error: must be yes or no: --with-athena=$with_athena"
-  exit 1
-fi
-
-
-# Saying --without-motif is the same as saying --with-athena.
-if test "$with_motif_req" = no ; then
-  with_athena_req=yes
-  with_athena=yes
-fi
-
-# Saying --without-athena is the same as saying --with-motif.
-if test "$with_athena_req" = no ; then
-  with_motif_req=yes
-  with_motif=yes
-fi
-
-# Check for Motif and Athena headers.
-
-check_motif() {
-  AC_CHECK_X_HEADER(Xm/Xm.h,
-                   [have_motif=yes
-                    AC_DEFINE(HAVE_MOTIF)
-                    TOOLKIT_LIBS="-lXm $TOOLKIT_LIBS"])
-}
-
-check_athena() {
-  have_athena=no
-  have_athena3d=no
-  AC_CHECK_X_HEADER(X11/Xaw/Dialog.h, [have_athena=yes])
-  if test "$have_athena" = yes; then
-    AC_CHECK_X_LIB(Xaw3d, Xaw3dComputeTopShadowRGB,
-                  [have_athena=yes; have_athena3d=yes], [],
-                  -lXt -lXmu -lXext -lX11)
-  fi
-
-  if test "$have_athena3d" = yes; then
-    TOOLKIT_LIBS="-lXaw3d $TOOLKIT_LIBS"
-  elif test "$have_athena" = yes; then
-    TOOLKIT_LIBS="-lXaw $TOOLKIT_LIBS"
-  fi
-}
-
-
-# If they asked for both motif and athena, check motif then athena.
-# If they asked for only motif, check motif then athena.
-# If they asked for only athena, check athena then motif.
-# If they asked for neither, check motif then athena.
-
-proselytize_motif=yes
-if test "$with_motif" = yes; then
-  # asked for both, or for motif only
-  check_motif
-  if test "$have_motif" = yes; then
-    with_athena=no
-    with_athena_req=no
-  else
-    check_athena
-  fi
-
-elif test "$with_athena" = yes; then
-  # asked for athena only
-  check_athena
-  if test "$have_athena" = yes; then
-    with_motif=no
-    proselytize_motif=no
-  else
-    check_motif
-  fi
-
-else
-  # asked for neither
-  check_motif
-  if test "$have_motif" = yes; then
-    with_athena=no
-  else
-    check_athena
-  fi
-
-fi
-
-if test "$have_motif" = yes; then
-  proselytize_motif=no
-fi
-
-# If we have Athena, check whether it's a version that includes
-# XawViewportSetCoordinates in Viewport.h (R3 (or R4?) don't.)
-if test "$have_athena" = yes ; then
-  AC_CACHE_CHECK([for XawViewportSetCoordinates in Viewport.h], 
-                ac_cv_have_XawViewportSetCoordinates,
-                [ac_cv_have_XawViewportSetCoordinates=no
-                 AC_EGREP_X_HEADER(XawViewportSetCoordinates, 
-                                   X11/Xaw/Viewport.h,
-                                   ac_cv_have_XawViewportSetCoordinates=yes)])
-  if test "$ac_cv_have_XawViewportSetCoordinates" = yes ; then
-    AC_DEFINE(HAVE_XawViewportSetCoordinates)
-  fi
-fi
-
-
-# If we have Motif, check whether it's really LessTif.
-#
-have_lesstif=no
-if test "$have_motif" = yes ; then
-  AC_CACHE_CHECK([whether Motif is really LessTif], 
-                ac_cv_have_lesstif,
-                [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
-                                  [long vers = LesstifVersion;],
-                                  [ac_cv_have_lesstif=yes],
-                                  [ac_cv_have_lesstif=no])])
-  have_lesstif=$ac_cv_have_lesstif
-fi
-
-# don't cache these
-unset ac_cv_lesstif_version
-unset ac_cv_lesstif_version_string
-
-lesstif_version=unknown
-lesstif_version_string=unknown
-
-if test "$have_lesstif" = yes ; then
-  ltv=unknown
-  echo unknown > conftest-lt
-  AC_CACHE_CHECK([LessTif version number],
-                ac_cv_lesstif_version_string,
-      [AC_TRY_X_RUN([#include <stdio.h>
-                    #include <Xm/Xm.h>
-                    int main() {
-                      FILE *f = fopen("conftest-lt", "w");
-                      if (!f) exit(1);
-                      fprintf(f, "%d %d.%d\n", LesstifVersion,
-                         LESSTIF_VERSION, LESSTIF_REVISION);
-                      fclose(f);
-                      exit(0);
-                    }],
-                   [ltv=`cat conftest-lt`
-                    ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
-                    ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
-                   [ac_cv_lesstif_version=unknown
-                    ac_cv_lesstif_version_string=unknown],
-                   [ac_cv_lesstif_version=unknown
-                    ac_cv_lesstif_version_string=unknown])])
-  rm -f conftest-lt
-  lesstif_version=$ac_cv_lesstif_version
-  lesstif_version_string=$ac_cv_lesstif_version_string
-
-fi
-
-
-if test "$have_motif" = yes ; then
-  mtv=unknown
-  echo unknown > conftest-mt
-  AC_CACHE_CHECK([Motif version number],
-                ac_cv_motif_version_string,
-      [AC_TRY_X_RUN([#include <stdio.h>
-                    #include <Xm/Xm.h>
-                    int main() {
-                      FILE *f = fopen("conftest-mt", "w");
-                      if (!f) exit(1);
-                      fprintf(f, "%d %d.%d\n", XmVersion,
-                         XmVERSION, XmREVISION);
-                      fclose(f);
-                      exit(0);
-                    }],
-                   [mtv=`cat conftest-mt`
-                    ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
-                    ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
-                   [ac_cv_motif_version=unknown
-                    ac_cv_motif_version_string=unknown],
-                   [ac_cv_motif_version=unknown
-                    ac_cv_motif_version_string=unknown])])
-  rm -f conftest-mt
-  motif_version=$ac_cv_motif_version
-  motif_version_string=$ac_cv_motif_version_string
-
-fi
-
-
-# If this is Motif 2.x, and we have XPM, then link against XPM as well.
-# The deal is, Motif 2.x requires XPM -- but it's a compilation option of
-# the library whether to build the XPM code into libXm, or whether to rely
-# on an external libXm.  So the only way to tell whether XPM is a link-time
-# requirement is to examine libXm.a, which is very difficult to do in an
-# autoconf script.  So... if it's Motif 2.x, we always link against XPM if
-# the XPM lib exists (and this will be a no-op if libXm happens to already
-# have the XPM code in it.)
-#
-motif_requires_xpm=no
-if test "$have_motif" = yes ; then
-   AC_MSG_CHECKING(whether Motif requires XPM)
-   if test "$motif_version" -ge 2000; then
-     motif_requires_xpm=yes
-     AC_MSG_RESULT(maybe)
-   else
-     AC_MSG_RESULT(no)
-   fi
-fi
-
-
-
-# Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
-# Extension".   Why this extension isn't in -lXext with all the others,
-# I have no idea.
-#
-have_xp_ext=no
-if test "$have_motif" = yes ; then
-   have_xp_ext=no
-   AC_CHECK_X_LIB(Xp, XpQueryExtension,
-                 [have_xp_ext=yes; TOOLKIT_LIBS="$TOOLKIT_LIBS -lXp"],
-                 [], -lX11 -lXext -lm)
-fi
-
-
-# Check for _Xsetlocale in -lXintl, since at least some recent versions
-# of Motif (on Linux) need it.
-#
-have_xintl=no
-if test "$have_motif" = yes ; then
-  AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
-                 -lX11 -lXext -lm)
-  if test "$have_xintl" = yes; then
-    TOOLKIT_LIBS="$TOOLKIT_LIBS -lXintl"
-  fi
-fi
-
-
-# check for XPM header.
-#
-have_xpm=no
-with_xpm_req=unspecified
-AC_ARG_WITH(xpm,[
-Graphics Demo options:
-
-  --with-xpm              Include support for XPM files in some demos,
-                          if possible (this is the default).
-  --without-xpm           Do not compile in support for XPM files.],
-  [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
-
-HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
-
-if test "$with_xpm" = yes; then
-  AC_CHECK_X_HEADER(X11/xpm.h,
-                  [have_xpm=yes
-                   AC_DEFINE(HAVE_XPM)
-                   XPM_LIBS="-lXpm"])
-elif test "$with_xpm" != no; then
-  echo "error: must be yes or no: --with-xpm=$with_xpm"
-  exit 1
-fi
-
-# See comment near $motif_requires_xpm, above.
-# Need to do this here, after both Motif and XPM have been checked for.
-#
-if test "$have_motif" = yes -a "$have_xpm" = yes ; then
-  if test "$motif_requires_xpm" = yes ; then
-    TOOLKIT_LIBS="$TOOLKIT_LIBS $XPM_LIBS"
-  fi
-fi
-
-
-# check for the GL header
-#
-have_gl=no
-ac_have_mesa_gl=no
-with_gl_req=unspecified
-AC_ARG_WITH(gl,
-[  --with-gl               Build those demos which depend on OpenGL,
-                          if possible (this is the default).
-  --without-gl            Do not build the OpenGL demos.],
-  [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
-
-HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
-
-ac_mesagl_version=unknown
-ac_mesagl_version_string=unknown
-
-if test "$with_gl" = yes; then
-  AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
-  if test "$have_gl" = yes ; then
-    AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
-  fi
-
-  # If we have the headers, try and figure out which vendor it's from.
-  #
-  if test "$have_gl" = yes ; then
-
-    AC_DEFINE(HAVE_GL)
-
-    # We need to know whether it's MesaGL so that we know which libraries
-    # to link against.
-    #
-    AC_MSG_CHECKING(whether GL is really MesaGL)
-    AC_CACHE_VAL(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_have_mesa_gl=$ac_cv_have_mesa_gl
-    AC_MSG_RESULT($ac_have_mesa_gl)
-
-    if test "$ac_have_mesa_gl" = no ; then
-      gl_lib_1="GL"
-      GL_LIBS="-lGL -lGLU"
-    else
-      AC_DEFINE(HAVE_MESA_GL)
-      gl_lib_1="MesaGL"
-      GL_LIBS="-lMesaGL -lMesaGLU"
-    fi
-
-
-    # If it's MesaGL, we'd like to issue a warning if the version number
-    # is less than or equal to 2.6, because that version had a security bug.
-    #
-    if test "$ac_have_mesa_gl" = yes; then
-
-      # don't cache these.
-      unset ac_cv_mesagl_version
-      unset ac_cv_mesagl_version_string
-
-      AC_MSG_CHECKING(MesaGL version number)
-      AC_CACHE_VAL(ac_cv_mesagl_version_string,
-       [cat > conftest.$ac_ext <<EOF
-#line __oline__ "configure"
-#include "confdefs.h"
-#include <GL/gl.h>
-configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
-EOF
-
-        ac_save_CPPFLAGS="$CPPFLAGS"
-        if test \! -z "$includedir" ; then 
-          CPPFLAGS="$CPPFLAGS -I$includedir"
-        fi
-        CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-         # M4 sucks!!
-        changequote(X,Y)
-        mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
-             's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
-        changequote([,])
-
-         rm -f conftest.$ac_ext
-
-        CPPFLAGS="$ac_save_CPPFLAGS"
-
-        if test "$mglv" = ""; then
-           ac_mesagl_version=unknown
-           ac_mesagl_version_string=unknown
-         else
-           ac_mesagl_version_string=$mglv
-           maj=`echo $mglv | sed -n 's/\..*//p'`
-           min=`echo $mglv | sed -n 's/.*\.//p'`
-           ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
-           if test -z "$ac_mesagl_version"; then
-            ac_mesagl_version=unknown
-             ac_mesagl_version_string=unknown
-          fi
-         fi
-         ac_cv_mesagl_version=$ac_mesagl_version
-         ac_cv_mesagl_version_string=$ac_mesagl_version_string
-      ])
-      ac_mesagl_version=$ac_cv_mesagl_version
-      ac_mesagl_version_string=$ac_cv_mesagl_version_string
-      AC_MSG_RESULT($ac_cv_mesagl_version_string)
-    fi
-
-
-    # If it's MesaGL, check to see if it requires -lpthread.
-    #
-    have_pthread=no
-    mesa_requires_pthread=no
-    if test "$ac_have_mesa_gl" = yes; then
-
-      AC_CHECK_LIB(pthread, pthread_create, [have_pthread=yes], [],)
-      if test "$have_pthread" = yes; then
-        AC_CHECK_X_LIB($gl_lib_1, gl_get_thread_context,
-                       [mesa_requires_pthread=yes], [],
-                      $GL_LIBS -lpthread -lX11 -lXext -lm)
-      fi
-
-      if test "$mesa_requires_pthread" = yes; then
-        GL_LIBS="$GL_LIBS -lpthread"
-      fi
-    fi
-
-    # Check for OpenGL 1.1 features.
-    #
-    AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
-                  [], $GL_LIBS -lX11 -lXext -lm)
-
-
-    # Check whether the `xscreensaver' executable should link against GL.
-    # See comments in utils/visual-gl.c for why this is sometimes necessary.
-    #
-    AC_MSG_CHECKING(whether drastic GL measures must be taken)
-    case "$host" in
-      *-sgi*)
-        AC_MSG_RESULT([yes -- hello, SGI.])
-        AC_DEFINE(DAEMON_USE_GL)
-        SAVER_GL_SRCS='$(UTILS_SRC)/visual-gl.c'
-        SAVER_GL_OBJS='$(UTILS_BIN)/visual-gl.o'
-        SAVER_GL_LIBS="$GL_LIBS"
-      ;;
-      *)
-        AC_MSG_RESULT([no -- non-SGI.])
-        SAVER_GL_SRCS=''
-        SAVER_GL_OBJS=''
-        SAVER_GL_LIBS=''
-      ;;
-    esac
-
-  fi
-
-elif test "$with_gl" != no; then
-  echo "error: must be yes or no: --with-gl=$with_gl"
-  exit 1
-fi
-
-
-# check for SGI XReadDisplay server extension header.
-#
-have_readdisplay=no
-with_readdisplay_req=unspecified
-AC_ARG_WITH(readdisplay,
-[  --with-readdisplay      Include support for the XReadDisplay server
-                          extension if possible (this is the default).
-  --without-readdisplay   Do not compile in support for this extension.],
-  [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
-  [with_readdisplay=yes])
-
-HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
-
-if test "$with_readdisplay" = yes; then
-  AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
-                   AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
-elif test "$with_readdisplay" != no; then
-  echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
-  exit 1
-fi
-
-
-# check for SGI's Iris Video Library header.
-#
-have_sgivideo=no
-with_sgivideo_req=unspecified
-AC_ARG_WITH(sgivideo,
-[  --with-sgivideo         Include support for SGI's Iris Video Library
-                          if possible (this is the default).
-  --without-sgivideo       Do not compile in support for this library.],
-  [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
-  [with_sgivideo=yes])
-
-HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video)
-
-if test "$with_sgivideo" = yes; then
-  AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes)
-  if test "$have_sgivideo" = yes; then
-    have_sgivideo=no
-    AC_CHECK_LIB(vl, vlOpenVideo, have_sgivideo=yes)
-    if test "$have_sgivideo" = yes; then
-      SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
-      SGI_VIDEO_LIBS="-lvl"
-      AC_DEFINE(HAVE_SGI_VIDEO)
-    fi
-  fi
-elif test "$with_sgivideo" != no; then
-  echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
-  exit 1
-fi
-
-
-
-# Try to find a program to generate random text.
-#
-# Zippy is funnier than the idiocy generally spat out by `fortune',
-# so try to find that, by invoking Emacs and asking it where its 
-# libexec directory is ("yow" lives in there.)
-#
-# If that doesn't work, see if fortune, zippy, or yow are on $PATH,
-# and if so, use them.
-#
-# If that doesn't work, look in /usr/games, and if it's there, use
-# the full pathname.
-#
-with_zippy_req=""
-AC_ARG_WITH(zippy,
-[  --with-zippy=PROGRAM    Some demos are able to run an external program and
-                          display its text; this names the program to use by
-                          default (though it can be overridden with X
-                          resources.)  If you don't specify this, the default
-                          is to use \"yow\" from the Emacs distribution (if you
-                          have it) or else to use \"fortune\".],
-  [ with_zippy_req="$withval"; with_zippy="$withval" ],
-  [ with_zippy_req="$withval"; with_zippy="$withval" ])
-
-if test "$with_zippy" = no || test "$with_zippy" = yes ; then
-  with_zippy=""
-  with_zippy_req=""
-fi
-
-if test -n "$with_zippy_req" ; then
-  ac_cv_zippy_program=""
-  case "$with_zippy_req" in
-    /*)
-      AC_MSG_CHECKING([for $with_zippy_req])
-      if test -x "$with_zippy_req" ; then
-        AC_MSG_RESULT(yes)
-      else
-        AC_MSG_RESULT(no)
-        with_zippy=""
-      fi
-    ;;
-    *)
-      # don't cache
-      unset ac_cv_path_zip2
-      AC_PATH_PROG(zip2, $with_zippy_req, [])
-      if test "$zip2" = ""; then
-        with_zippy=""
-      fi
-    ;;
-  esac
-  ac_cv_zippy_program="$with_zippy"
-
-elif test -n "$ac_cv_zippy_program"; then
-  AC_MSG_RESULT([checking for zippy... (cached) $ac_cv_zippy_program])
-fi
-
-if test ! -n "$ac_cv_zippy_program"; then
-
-  AC_CHECK_PROGS(emacs_exe, emacs)
-  AC_CHECK_PROGS(xemacs_exe, xemacs)
-
-  ac_cv_zippy_program=""
-  eargs='-batch -q -nw --eval'
-
-  if test -n "$emacs_exe" ; then
-    AC_MSG_CHECKING([for emacs yow])
-    #
-    # get emacs to tell us where the libexec directory is.
-    #
-    dir=`$emacs_exe $eargs '(princ (concat exec-directory "\n"))' \
-        2>/dev/null | tail -1`
-    dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
-    #
-    # try running libexec/yow and see if it exits without error.
-    #
-    if test x"$dir" != x -a -x "$dir/yow" ; then
-      if $dir/yow >&- 2>&- ; then
-       ac_cv_zippy_program="$dir/yow"
-       AC_MSG_RESULT($ac_cv_zippy_program)
-      else
-       AC_MSG_RESULT(no)
-      fi
-    fi
-  fi
-
-  if test -z "$ac_cv_zippy_program" ; then
-    AC_MSG_CHECKING([for xemacs yow])
-    if test -n "$xemacs_exe" ; then
-      #
-      # get xemacs to tell us where the libexec directory is.
-      #
-      dir=`$xemacs_exe $eargs '(princ (concat exec-directory "\n"))' \
-          2>/dev/null | tail -1`
-      dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
-      #
-      # try running libexec/yow and see if it exits without error.
-      #
-      if test x"$dir" != x -a -x "$dir/yow" ; then
-        if $dir/yow >&- 2>&- ; then
-         ac_cv_zippy_program="$dir/yow"
-         AC_MSG_RESULT($ac_cv_zippy_program)
-       else
-         #
-         # in some xemacs installations, the pathname of the yow.lines file
-         # isn't hardcoded into the yow executable, and must be passed on 
-         # the command line.  See if it's in libexec/../etc/.
-
-         # M4 sucks!!
-         changequote(X,Y)
-         dir_up=`echo "$dir" | sed 's@/[^/]*$@@'`
-         changequote([,])
-
-         yowlines="$dir_up/etc/yow.lines"
-         if $dir/yow -f $yowlines >&- 2>&- ; then
-           ac_cv_zippy_program="$dir/yow -f $yowlines"
-           AC_MSG_RESULT($ac_cv_zippy_program)
-         else
-            #
-            # In newer XEmacs releases, yow.lines is in a different place,
-            # and the easiest way to get it is by calling the new function
-            # `locate-data-file'.
-            #
-            yowlines=`$xemacs_exe $eargs \
-              '(princ (concat (locate-data-file "yow.lines") "\n"))' \
-              2>/dev/null | tail -1`
-            if $dir/yow -f $yowlines >&- 2>&- ; then
-              ac_cv_zippy_program="$dir/yow -f $yowlines"
-              AC_MSG_RESULT($ac_cv_zippy_program)
-            else
-              AC_MSG_RESULT(no)
-            fi
-         fi
-        fi
-      fi
-    fi
-  fi
-
-  # if that didn't work, try for some other programs...
-  if test -z "$ac_cv_zippy_program" ; then
-    fortune=''
-    AC_CHECK_PROGS(fortune, [fortune zippy yow])
-    # if that didn't work, try for those programs in /usr/games...
-    if test -z "$fortune" ; then
-      AC_PATH_PROGS(fortune, [fortune zippy yow], fortune,
-                   /usr/games:/usr/local/games)
-    fi
-  fi
-fi
-
-if test -z "$ac_cv_zippy_program" ; then
-  ac_cv_zippy_program=fortune
-fi
-
-AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program")
-
-
-
-
-# Allow locking to be disabled at compile-time.
-#
-have_kerberos=no
-with_kerberos_req=unspecified
-have_shadow=no
-with_shadow_req=unspecified
-have_pam=no
-with_pam_req=unspecified
-need_setuid=no
-
-AC_ARG_ENABLE(locking,[
-Screen Locking options:
-
-  --enable-locking        Compile in support for locking the display
-                          (this is the default.)
-  --disable-locking       Do not allow locking at all.],
-  [enable_locking="$enableval"],[enable_locking=yes])
-if test "$enable_locking" = yes; then
-  true
-elif test "$enable_locking" = no; then
-  AC_DEFINE(NO_LOCKING)
-else
-  echo "error: must be yes or no: --enable-locking=$enable_locking"
-  exit 1
-fi
-
-
-
-# Check to see if we can lock Virtual-Terminal switching, but allow that 
-# to be disabled at compile-time.
-#
-ac_vt_lockswitch=no
-AC_ARG_ENABLE(vt-locking,[
-  --enable-vt-locking     Compile in support for locking Virtual Terminals.
-                          This is the default if the system supports it, and
-                          if locking support is included (--enable-locking.)
-  --disable-vt-locking    Do not allow locking of VTs, even if locking is
-                          enabled.],
-  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
-if test "$enable_vt_locking" = yes; then
-
-  AC_MSG_CHECKING(for the VT_LOCKSWITCH ioctl)
-  AC_CACHE_VAL(ac_cv_vt_lockswitch,
-   [AC_TRY_COMPILE([#include <fcntl.h>
-                   #include <sys/ioctl.h>
-                   #include <sys/vt.h>],
-                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
-                  [ac_cv_vt_lockswitch=yes],
-                  [ac_cv_vt_lockswitch=no])])
-  ac_vt_lockswitch=$ac_cv_vt_lockswitch
-  AC_MSG_RESULT($ac_vt_lockswitch)
-
-elif test "$enable_vt_locking" = no; then
-  true
-else
-  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
-  exit 1
-fi
-
-if test "$ac_vt_lockswitch" = yes; then
-  AC_DEFINE(HAVE_VT_LOCKSWITCH)
-  # the VT_LOCKSWITCH ioctl can only be used when running as root.
-  # #### but it doesn't work yet, so don't worry about that for now.
-#  need_setuid=yes
-fi
-
-
-
-if test "$enable_locking" = yes; then
-
-  # Check for Kerberos.
-  #
-  AC_ARG_WITH(kerberos, [
-  --with-kerberos         Include support for Kerberos authentication,
-                          if possible (this is the default.)
-  --without-kerberos      Do not compile in support for Kerberos.],
-  [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
-
-  HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
-
-  if test "$with_kerberos" = yes; then
-    AC_CACHE_CHECK([for Kerberos], ac_cv_kerberos,
-                  [AC_TRY_X_COMPILE([#include <krb.h>],,
-                                    [ac_cv_kerberos=yes],
-                                    [ac_cv_kerberos=no])])
-    if test "$ac_cv_kerberos" = yes ; then
-      have_kerberos=yes
-      AC_DEFINE(HAVE_KERBEROS)
-
-      # from Tim Showalter <tjs+@andrew.cmu.edu>
-      PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
-      AC_CHECK_FUNC(res_search,,
-        AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
-          AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
-       ))
-
-    fi
-  elif test "$with_kerberos" != no; then
-    echo "error: must be yes or no: --with-kerberos=$with_kerberos"
-    exit 1
-  fi
-  
-  # Check for PAM.
-  AC_ARG_WITH(pam,
-[  --with-pam              Include support for PAM (Pluggable Authentication
-                          Modules) if possible (this is the default.)
-  --without-pam           Do not compile in support for PAM.],
-  [with_pam="$withval"; with_pam_req="$withval"],[with_pam=yes])
-
-  HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
-
-  if test "$with_pam" = yes; then
-    AC_CACHE_CHECK([for PAM], ac_cv_pam,
-                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
-                                    [ac_cv_pam=yes],
-                                    [ac_cv_pam=no])])
-    if test "$ac_cv_pam" = yes ; then
-         have_pam=yes
-         AC_DEFINE(HAVE_PAM)
-         PASSWD_LIBS="${PASSWD_LIBS} -lpam -ldl"
-
-
-          AC_MSG_CHECKING(how to call pam_strerror)
-          AC_CACHE_VAL(ac_cv_pam_strerror_args,
-           [AC_TRY_COMPILE([#include <stdio.h>
-                            #include <stdlib.h>
-                            #include <security/pam_appl.h>],
-                           [pam_handle_t *pamh = 0;
-                            char *s = pam_strerror(pamh, PAM_SUCCESS);],
-                           [ac_pam_strerror_args=2],
-                           [AC_TRY_COMPILE([#include <stdio.h>
-                                            #include <stdlib.h>
-                                            #include <security/pam_appl.h>],
-                                           [char *s =
-                                             pam_strerror(PAM_SUCCESS);],
-                                           [ac_pam_strerror_args=1],
-                                           [ac_pam_strerror_args=0])])
-            ac_cv_pam_strerror_args=$ac_pam_strerror_args])
-          ac_pam_strerror_args=$ac_cv_pam_strerror_args
-          if test "$ac_pam_strerror_args" = 1 ; then
-            AC_MSG_RESULT(one argument)
-          elif test "$ac_pam_strerror_args" = 2 ; then
-            AC_DEFINE(PAM_STRERROR_TWO_ARGS)
-            AC_MSG_RESULT(two arguments)
-          else
-            AC_MSG_RESULT(unknown)
-          fi
-    fi
-  elif test "$with_pam" != no; then
-       echo "error: must be yes or no: --with-pam=$with_pam"
-       exit 1
-  fi
-
-  # Next, check for the nine billion variants of shadow passwords...
-
-  pwent_cruft_done=no
-  AC_ARG_WITH(shadow,
-[  --with-shadow           Include support for shadow password authentication,
-                          if possible (this is the default, if no Kerberos or
-                          PAM.)
-  --without-shadow        Do not compile in support for shadow passwords.
-],
-  [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
-
-  HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
-
-  if test "$with_shadow" = no; then
-    pwent_cruft_done=yes
-  elif test "$with_shadow" != yes; then
-    echo "error: must be yes or no: --with-shadow=$with_shadow"
-    exit 1
-  fi
-
-
-  # Sun's "adjunct" passwords.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
-                  [AC_TRY_X_COMPILE([#include <stdlib.h>
-                                     #include <unistd.h>
-                                     #include <sys/types.h>
-                                     #include <sys/label.h>
-                                     #include <sys/audit.h>
-                                     #include <pwdadj.h>],
-                       [struct passwd_adjunct *p = getpwanam("nobody");
-                        const char *pw = p->pwa_passwd;],
-                       [ac_cv_sun_adjunct=yes],
-                       [ac_cv_sun_adjunct=no])])
-    if test "$ac_cv_sun_adjunct" = yes; then
-      have_shadow=yes
-      need_setuid=yes
-      pwent_cruft_done=yes
-      AC_DEFINE(HAVE_ADJUNCT_PASSWD)
-    fi
-  fi
-
-  # DEC and SCO so-called "enhanced" security.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
-                  [AC_TRY_X_COMPILE([#include <stdlib.h>
-                                     #include <unistd.h>
-                                     #include <sys/types.h>
-                                     #include <pwd.h>
-                                     #include <sys/security.h>
-                                     #include <prot.h>],
-                       [struct pr_passwd *p;
-                        const char *pw;
-                        set_auth_parameters(0, 0);
-                        check_auth_parameters();
-                        p = getprpwnam("nobody");
-                        pw = p->ufld.fd_encrypt;],
-                       [ac_cv_enhanced_passwd=yes],
-                       [ac_cv_enhanced_passwd=no])])
-    if test $ac_cv_enhanced_passwd = yes; then
-      have_shadow=yes
-      need_setuid=yes
-      pwent_cruft_done=yes
-      AC_DEFINE(HAVE_ENHANCED_PASSWD)
-
-      # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
-      # (I'm told it needs -lcurses too, but I don't understand why.)
-      AC_CHECK_LIB(prot, getprpwnam, 
-                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
-                  [# On DEC, getprpwnam() is in -lsecurity
-                   AC_CHECK_LIB(security, getprpwnam, 
-                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
-                  [-lx])
-    fi
-  fi
-
-  # HP's entry in the "Not Invented Here" Sweepstakes.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
-                  [AC_TRY_X_COMPILE([#include <stdlib.h>
-                                     #include <unistd.h>
-                                     #include <sys/types.h>
-                                     #include <pwd.h>
-                                     #include <hpsecurity.h>
-                                     #include <prot.h>],
-                       [struct s_passwd *p = getspwnam("nobody");
-                        const char *pw = p->pw_passwd;],
-                       [ac_cv_hpux_passwd=yes],
-                       [ac_cv_hpux_passwd=no])])
-    if test "$ac_cv_hpux_passwd" = yes; then
-      have_shadow=yes
-      need_setuid=yes
-      pwent_cruft_done=yes
-      AC_DEFINE(HAVE_HPUX_PASSWD)
-
-      # on HPUX, bigcrypt is in -lsec
-      AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
-    fi
-  fi
-
-  # Traditional (ha!) shadow passwords.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
-                  [AC_TRY_X_COMPILE([#include <stdlib.h>
-                                     #include <unistd.h>
-                                     #include <sys/types.h>
-                                     #include <pwd.h>
-                                     #include <shadow.h>],
-                       [struct spwd *p = getspnam("nobody");
-                        const char *pw = p->sp_pwdp;],
-                       [ac_cv_shadow=yes],
-                       [ac_cv_shadow=no])])
-    if test "$ac_cv_shadow" = yes; then
-      have_shadow=yes
-      need_setuid=yes
-      pwent_cruft_done=yes
-      AC_DEFINE(HAVE_SHADOW_PASSWD)
-
-      # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
-      have_getspnam=no
-      AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
-      if test "$have_getspnam" = no ; then
-        AC_CHECK_LIB(gen, getspnam,
-                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
-      fi
-    fi
-  fi
-
-  # On FreeBSD, getpwnam() and friends work just like on non-shadow-password
-  # systems -- except you only get stuff in the pw_passwd field if the running
-  # program is setuid.  So, guess that we've got this lossage to contend with
-  # if /etc/master.passwd exists, and default to a setuid installation.
-  #
-  if test "$pwent_cruft_done" = no ; then
-    AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
-                  [if test -f /etc/master.passwd ; then
-                     ac_cv_master_passwd=yes
-                   else
-                     ac_cv_master_passwd=no
-                   fi])
-    if test "$ac_cv_master_passwd" = yes; then
-      need_setuid=yes
-      pwent_cruft_done=yes
-    fi
-  fi
-
-  # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
-  have_crypt=no
-  AC_CHECK_LIB(c, crypt, [have_crypt=yes])
-  if test "$have_crypt" = no ; then
-    AC_CHECK_LIB(crypt, crypt,
-                 [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
-  fi
-
-
-  # Most of the above shadow mechanisms will have set need_setuid to yes,
-  # if they were found.  But, on some systems, we need setuid even when
-  # using plain old vanilla passwords.
-  #
-  if test "$need_setuid" = no ; then
-    case "$host" in
-      *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
-        need_setuid=yes
-      ;;
-    esac
-  fi
-
-fi
-
-
-# for the "sonar" hack -- check how to ping.
-#
-AC_MSG_CHECKING(for struct icmp)
-AC_CACHE_VAL(ac_cv_have_icmp,
- [AC_TRY_COMPILE([#include <stdlib.h>
-                  #include <stdio.h>
-                  #include <math.h>
-                  #include <unistd.h>
-                  #include <limits.h>
-                  #include <signal.h>
-                  #include <fcntl.h>
-                  #include <sys/types.h>
-                  #include <sys/time.h>
-                  #include <sys/ipc.h>
-                  #include <sys/shm.h>
-                  #include <sys/socket.h>
-                  #include <netinet/in_systm.h>
-                  #include <netinet/in.h>
-                  #include <netinet/ip.h>
-                  #include <netinet/ip_icmp.h>
-                  #include <netinet/udp.h>
-                  #include <arpa/inet.h>
-                  #include <netdb.h>],
-                 [struct icmp i;
-                  struct sockaddr s;
-                  struct sockaddr_in si;
-                  struct ip ip;
-                  i.icmp_type = ICMP_ECHO;
-                  i.icmp_code = 0;
-                  i.icmp_cksum = 0;
-                  i.icmp_id = 0;
-                  i.icmp_seq = 0;
-                  si.sin_family = AF_INET;
-                  ip.ip_hl = 0;],
-                 [ac_cv_have_icmp=yes],
-                 [ac_cv_have_icmp=no])])
-ac_have_icmp=$ac_cv_have_icmp
-AC_MSG_RESULT($ac_cv_have_icmp)
-
-AC_MSG_CHECKING(for struct icmphdr)
-AC_CACHE_VAL(ac_cv_have_icmphdr,
- [AC_TRY_COMPILE([#include <stdlib.h>
-                  #include <stdio.h>
-                  #include <math.h>
-                  #include <unistd.h>
-                  #include <limits.h>
-                  #include <signal.h>
-                  #include <fcntl.h>
-                  #include <sys/types.h>
-                  #include <sys/time.h>
-                  #include <sys/ipc.h>
-                  #include <sys/shm.h>
-                  #include <sys/socket.h>
-                  #include <netinet/in_systm.h>
-                  #include <netinet/in.h>
-                  #include <netinet/ip.h>
-                  #include <netinet/ip_icmp.h>
-                  #include <netinet/udp.h>
-                  #include <arpa/inet.h>
-                  #include <netdb.h>],
-                 [struct icmphdr i;
-                  struct sockaddr s;
-                  struct sockaddr_in si;
-                  struct ip ip;
-                  i.type = ICMP_ECHO;
-                  i.code = 0;
-                  i.cksum = 0;
-                  i.un.echo.id = 0;
-                  i.un.echo.sequence = 0;
-                  si.sin_family = AF_INET;
-                  ip.ip_hl = 0;],
-                 [ac_cv_have_icmphdr=yes],
-                 [ac_cv_have_icmphdr=no])])
-ac_have_icmphdr=$ac_cv_have_icmphdr
-AC_MSG_RESULT($ac_cv_have_icmphdr)
-
-if test "$ac_have_icmp" = yes ; then
-  AC_DEFINE(HAVE_ICMP)
-fi
-if test "$ac_have_icmphdr" = yes ; then
-  AC_DEFINE(HAVE_ICMPHDR)
-fi
-
-
-
-########################## end of tests.
-
-
-if test \! -z "$includedir" ; then 
-  INCLUDES="-I$includedir"
-fi
-
-if test \! -z "$libdir" ; then
-  LDFLAGS="$LDFLAGS -L$libdir"
-fi
-
-
-##### should have options to override the DEPEND crap, I guess...
-DEPEND=makedepend
-DEPEND_FLAGS=
-DEPEND_DEFINES=
-
-
-# Done testing things -- now substitute in some stuff for the Makefiles.
-#
-if test "$have_motif" = yes; then
-  AC_DEFINE(HAVE_MOTIF)
-  TOOLKIT_SRCS='$(MOTIF_SRCS)'
-  TOOLKIT_OBJS='$(MOTIF_OBJS)'
-elif test "$have_athena" = yes; then
-  AC_DEFINE(HAVE_ATHENA)
-  TOOLKIT_SRCS='$(ATHENA_SRCS)'
-  TOOLKIT_OBJS='$(ATHENA_OBJS)'
-else
-  TOOLKIT_SRCS=''
-  TOOLKIT_OBJS=''
-fi
-
-if test "$have_kerberos" = yes; then
-  PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
-  PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
-fi
-if test "$have_pam" = yes; then
-  PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
-  PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
-  INSTALL_PAM="install-pam"
-fi
-  PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
-  PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
-
-
-if test "$enable_locking" = yes; then
-  LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
-  LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
-else
-  LOCK_SRCS=''
-  LOCK_OBJS=''
-fi
-
-if test "$need_setuid" = yes; then
-  NEED_SETUID=yes
-  INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
-else
-  NEED_SETUID=no
-  INSTALL_SETUID='$(INSTALL_PROGRAM)'
-fi
-
-tab='  '
-if test "$have_gl" = yes; then
-  GL_EXES='$(GL_EXES)'
-  GL_MEN='$(GL_MEN)'
-  GL_KLUDGE="${tab}  "
-else
-  GL_KLUDGE="  -${tab}  "
-fi
-
-AC_SUBST(INCLUDES)
-
-AC_SUBST(SAVER_LIBS)
-AC_SUBST(TOOLKIT_LIBS)
-AC_SUBST(HACK_LIBS)
-AC_SUBST(XPM_LIBS)
-AC_SUBST(GL_LIBS)
-AC_SUBST(PASSWD_LIBS)
-AC_SUBST(INSTALL_SETUID)
-AC_SUBST(INSTALL_DIRS)
-AC_SUBST(NEED_SETUID)
-AC_SUBST(INSTALL_PAM)
-AC_SUBST(SGI_VIDEO_OBJS)
-AC_SUBST(SGI_VIDEO_LIBS)
-
-AC_SUBST(TOOLKIT_SRCS)
-AC_SUBST(TOOLKIT_OBJS)
-AC_SUBST(PASSWD_SRCS)
-AC_SUBST(PASSWD_OBJS)
-AC_SUBST(XMU_SRCS)
-AC_SUBST(XMU_OBJS)
-AC_SUBST(SAVER_GL_SRCS)
-AC_SUBST(SAVER_GL_OBJS)
-AC_SUBST(SAVER_GL_LIBS)
-AC_SUBST(LOCK_SRCS)
-AC_SUBST(LOCK_OBJS)
-AC_SUBST(GL_EXES)
-AC_SUBST(GL_MEN)
-AC_SUBST(GL_KLUDGE)
-AC_SUBST(HACKDIR)
-AC_SUBST(APPDEFAULTS)
-
-AC_SUBST(DEPEND)
-AC_SUBST(DEPEND_FLAGS)
-AC_SUBST(DEPEND_DEFINES)
-
-# Print some warnings before emitting the Makefiles.
-#
-warn_prefix_1="    Warning:"
-warn_prefix_2="       Note:"
-warn_prefix="$warn_prefix_1"
-
-warning=no
-warnsep='    #################################################################'
-
-warnpre() {
-  if test "$warning" = no ; then
-    echo '' ; echo "$warnsep" ; echo ''
-    warning=yes
-  fi
-}
-
-warn() {
-  warnpre
-  if test "$warning" = long ; then echo '' ; fi
-  warning=yes
-  echo "$warn_prefix $@"
-}
-
-warnL() {
-  was=$warning
-  warnpre
-  warning=yes
-  if test "$was" != no ; then echo '' ; fi
-  echo "$warn_prefix $@"
-}
-
-warn2() {
-  echo "             $@"
-  warning=long
-}
-
-note() {
-  warn_prefix="$warn_prefix_2"
-  warn $@
-  warn_prefix="$warn_prefix_1"
-}
-
-noteL() {
-  warn_prefix="$warn_prefix_2"
-  warnL $@
-  warn_prefix="$warn_prefix_1"
-}
-
-
-if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
-  warn 'The SGI saver extension was requested, but was not found.'
-fi
-
-if test "$with_mit_req" = yes -a "$have_mit" = no ; then
-  warn 'The MIT saver extension was requested, but was not found.'
-fi
-
-if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
-  warn 'The XIdle extension was requested, but was not found.'
-fi
-
-if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
-  warn 'The XSHM extension was requested, but was not found.'
-fi
-
-if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
-  warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
-fi
-
-if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
-  warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
-fi
-
-if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
-  warn 'The DPMS extension was requested, but was not found.'
-fi
-
-if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
-  warn 'The XF86VMODE extension was requested, but was not found.'
-fi
-
-if test "$have_motif" = no -a "$have_athena" = no ; then
-  warnL "Neither Motif nor Athena widgets seem to be available;"
-  warn2 "the \`xscreensaver-demo' program requires one or the"
-  warn2 "other."
-  proselytize_motif=no
-
-elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
-  warnL "Use of Motif was requested, but it wasn't found;"
-  warn2 "Athena will be used instead."
-
-elif test "$with_athena_req" = yes -a "$have_athena" = no ; then
-  warnL "Use of Athena was requested, but it wasn't found;"
-  warn2 "Motif will be used instead."
-fi
-
-if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
-
-  preferred_lesstif=0.86
-
-  if test "$lesstif_version" = unknown; then
-    warnL "Unable to determine the LessTif version number!"
-    warn2 "Make sure you are using version $preferred_lesstif or newer."
-    warn2 "See <http://www.lesstif.org/>."
-
-  elif test \! $lesstif_version -gt 82; then
-    warnL "LessTif version $lesstif_version_string is being used."
-    warn2 "LessTif versions 0.82 and earlier are too buggy to"
-    warn2 "use with XScreenSaver; it is strongly recommended"
-    warn2 "that you upgrade to at least version $preferred_lesstif!"
-    warn2 "See <http://www.lesstif.org/>."
-  fi
-fi
-
-if test "$proselytize_motif" = yes ; then
-    warnL "Athena widgets are being used instead of Motif."
-    warn2 "The \`xscreensaver-demo' program looks much better"
-    warn2 "with Motif.  Wouldn't you rather be using Motif?"
-    warn2 "It is shipped by every commercial Unix vendor;"
-    warn2 "and there is a free implementation available as"
-    warn2 "well: see <http://www.lesstif.org/>."
-fi
-
-
-if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
-  preferred_mesagl=3.0
-
-  if test "$ac_mesagl_version" = unknown; then
-    warnL "Unable to determine the MesaGL version number!"
-    warn2 "Make sure you are using version $preferred_mesagl or newer."
-
-  elif test \! "$ac_mesagl_version" -gt 2006; then
-    warnL "MesaGL version $ac_mesagl_version_string is being used."
-    warn2 "MesaGL versions 2.6 and earlier have a security bug."
-    warn2 "It is strongly recommended that you upgrade to at"
-    warn2 "least version $preferred_mesagl."
-  fi
-fi
-
-
-if test "$have_xpm" = no ; then
-  if test "$with_xpm_req" = yes ; then
-    warnL 'Use of XPM was requested, but it was not found.'
-  elif test "$with_xpm_req" = no ; then
-    noteL 'The XPM library is not being used.'
-  else
-    noteL 'The XPM library was not found.'
-  fi
-
-  echo ''
-  warn2 'Some of the demos will not be as colorful as they'
-  warn2 'could be.  You might want to consider installing XPM'
-  warn2 'and re-running configure.  (Remember to delete the'
-  warn2 'config.cache file first.)  You can find XPM at most'
-  warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
-fi
-
-if test "$have_gl" = no ; then
-  if test "$with_gl_req" = yes ; then
-    warnL 'Use of GL was requested, but it was not found.'
-  elif test "$with_gl_req" = no ; then
-    noteL 'The OpenGL 3D library is not being used.'
-  else
-    noteL 'The OpenGL 3D library was not found.'
-  fi
-
-  echo ''
-  warn2 'Those demos which use 3D will not be built or installed.'
-  warn2 'You might want to consider installing OpenGL and'
-  warn2 're-running configure.  (Remember to delete the'
-  warn2 "config.cache file first.)  If your vendor doesn't ship"
-  warn2 'their own implementation of OpenGL, you can get a free'
-  warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
-  warn2 'info, see <http://www.opengl.org/>.'
-
-fi
-
-if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
-  warn 'Use of XReadDisplay was requested, but it was not found.'
-fi
-
-if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then
-  warn 'Use of the Iris Video Library was requested, but it was not found.'
-fi
-
-if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
-  warn 'Use of Kerberos was requested, but it was not found.'
-fi
-
-if test "$with_pam_req" = yes -a "$have_pam" = no ; then
-  warn 'Use of PAM was requested, but it was not found.'
-fi
-
-if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
-  warn 'Use of shadow passwords was requested, but they were not found.'
-fi
-
-if test -n "$with_zippy_req"; then
-  if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then
-    warnL "$with_zippy_req was requested as the Zippy program,"
-    warn2 "but was not found.  The default will be used instead."
-  fi
-fi
-
-if test "$warning" != no; then
-  echo '' ; echo "$warnsep" ; echo ''
-fi
-
-
-AC_OUTPUT(Makefile
-         utils/Makefile
-         driver/Makefile
-         hacks/Makefile
-         hacks/glx/Makefile
-         driver/XScreenSaver.ad)
-
-# You are in a twisty maze of namespaces and syntaxes, all alike.
-# Fuck the skull of Unix.
-#
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-
-# canonicalize slashes.
-bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
-HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
-
-
-# Sanity check the subdir
-for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
-  if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
-    echo ""
-    AC_MSG_ERROR([\"--enable-subdir=${bindir}/${bad_choice}\" won't work.
-                   There will be an executable installed with that name, so
-                   that can't be the name of a directory as well.  Please
-                   re-configure with a different directory name.])
-  fi
-done
-
-
-do_dir_warning=no
-
-# Now let's see if there's a previous RPM version already installed.  Blargh!
-
-# M4 sucks!!
-changequote(X,Y)
-rpmv=`(rpm -qv xscreensaver) 2>&- | \
-      sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-[0-9][0-9]*$/\1/'`
-changequote([,])
-
-if test \! -z "$rpmv" ; then
-  rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
-  rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
-
-  warning=no
-  warnL "There is already an installed RPM of xscreensaver $rpmv"
-  warn2 "on this system.  You might want to remove it (with"
-  warn2 '"rpm -ve xscreensaver") before running "make install"'
-  warn2 "from this directory."
-  echo ""
-  warn2 "Alternately, you could build this version of xscreensaver"
-  warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
-  warn2 "file is included.  See the RPM documentation for more info."
-  echo ""
-
-  if test "$rpmbdir" = "$rpmhdir" ; then
-    warn2 "The RPM version was installed in $rpmbdir."
-  else
-    warn2 "The RPM version was installed in $rpmbdir,"
-    warn2 "with demos in $rpmhdir."
-  fi
-
-  do_dir_warning=yes
-fi
-
-
-if test "${bindir}" = "${HACKDIR}" ; then
-  do_dir_warning=yes
-fi
-
-if test "$do_dir_warning" = yes; then
-  echo ""
-  echo "$warnsep"
-  echo ""
-  echo '      When you run "make install", the "xscreensaver",'
-  echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
-  echo "      will be installed in ${bindir}."
-  echo ""
-  echo "      The various graphics demos (90+ different executables) will"
-  echo "      also be installed in ${HACKDIR}."
-  echo ""
-  echo "      If you would prefer the demos to be installed elsewhere"
-  echo "      (for example, in a dedicated directory) you should re-run"
-  echo "      configure with the --enable-subdir=DIR option.  For more"
-  echo "      information, run $0 --help."
-  echo ""
-  echo "$warnsep"
-  echo ""
-fi
diff --git a/driver/.gdbinit b/driver/.gdbinit
deleted file mode 100644 (file)
index cb7d98a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# If you're debugging xscreensaver and you are running a virtual root window
-# manager, you'd better let the process handle these signals: it remaps the
-# virtual root window when they arrive.  If you don't do this, your window
-# manager will be hosed.
-#
-# Also, gdb copes badly with breakpoints in functions that are called on the
-# other side of a fork().  The Trace/BPT traps cause the spawned process to
-# die.
-#
-#handle 1 pass nostop
-#handle 3 pass nostop
-#handle 4 pass nostop
-#handle 6 pass nostop
-#handle 7 pass nostop
-#handle 8 pass nostop
-#handle 9 pass nostop
-#handle 10 pass nostop
-#handle 11 pass nostop
-#handle 12 pass nostop
-#handle 13 pass nostop
-#handle 15 pass nostop
-#handle 19 pass nostop
-b exit
-set args -debug
-#b purify_stop_here
diff --git a/driver/Makefile.in b/driver/Makefile.in
deleted file mode 100644 (file)
index 68a676f..0000000
+++ /dev/null
@@ -1,545 +0,0 @@
-# driver/Makefile.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski.
-# the `../configure' script generates `driver/Makefile' from this file.
-
-@SET_MAKE@
-.SUFFIXES:
-.SUFFIXES: .c .o
-
-srcdir         = @srcdir@
-VPATH          = @srcdir@
-
-install_prefix =
-prefix         = @prefix@
-exec_prefix    = @exec_prefix@
-bindir         = @bindir@
-mandir         = @mandir@
-man1dir                = $(mandir)/man1
-mansuffix      = 1
-
-CC             = @CC@
-CFLAGS         = @CFLAGS@
-LDFLAGS                = @LDFLAGS@
-DEFS           = @DEFS@
-DEFS2          = $(DEFS) -DDEFAULT_PATH_PREFIX='"@HACKDIR@"'
-LIBS           = @LIBS@
-
-DEPEND         = @DEPEND@
-DEPEND_FLAGS   = @DEPEND_FLAGS@
-DEPEND_DEFINES = @DEPEND_DEFINES@
-
-SHELL          = /bin/sh
-INSTALL                = @INSTALL@
-SUID_FLAGS      = -o root -m 4755
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SETUID  = @INSTALL_SETUID@
-INSTALL_DATA   = @INSTALL_DATA@
-INSTALL_DIRS   = @INSTALL_DIRS@
-
-X_CFLAGS       = @X_CFLAGS@
-X_LIBS         = @X_LIBS@
-X_PRE_LIBS     = @X_PRE_LIBS@
-X_EXTRA_LIBS   = @X_EXTRA_LIBS@
-
-# Note:
-#
-# X_LIBS would more properly be called X_LDFLAGS (it contains the -L args.)
-# X_PRE_LIBS contains extra libraries you have to link against on some systems,
-#         and that must come before -lX11.  (e.g., -lSM and -lICE.)
-# X_EXTRA_LIBS contains extra libraries needed by X that aren't a part of X.
-#         (e.g., -lsocket, -lnsl, etc.)
-#
-# I think (but am not totally sure) that LIBS is also really "LDFLAGS".
-#
-# SAVER_LIBS is the link line for "xscreensaver", and
-# CMD_LIBS is the link line for "xscreensaver-command".
-
-
-AD_DIR         = @APPDEFAULTS@
-PAM_DIR                = /etc/pam.d
-PAM_CONF       = /etc/pam.conf
-
-UTILS_SRC      = $(srcdir)/../utils
-UTILS_BIN      = ../utils
-
-INCLUDES       = -I. -I$(srcdir) -I$(UTILS_SRC) -I.. @INCLUDES@
-
-MOTIF_SRCS     = dialogs-Xm.c
-MOTIF_OBJS     = dialogs-Xm.o
-
-ATHENA_SRCS    = dialogs-Xaw.c
-ATHENA_OBJS    = dialogs-Xaw.o
-
-PWENT_SRCS     = passwd-pwent.c
-PWENT_OBJS     = passwd-pwent.o
-
-KERBEROS_SRCS  = passwd-kerberos.c
-KERBEROS_OBJS  = passwd-kerberos.o
-
-PAM_SRCS       = passwd-pam.c
-PAM_OBJS       = passwd-pam.o
-
-LOCK_SRCS_1    = lock.c passwd.c
-LOCK_OBJS_1    = lock.o passwd.o
-
-TEST_SRCS      = test-passwd.c test-uid.c test-xdpms.c test-grab.c
-
-TOOLKIT_SRCS   = @TOOLKIT_SRCS@
-TOOLKIT_OBJS   = @TOOLKIT_OBJS@
-TOOLKIT_LIBS   = @TOOLKIT_LIBS@
-
-PASSWD_SRCS    = @PASSWD_SRCS@
-PASSWD_OBJS    = @PASSWD_OBJS@
-PASSWD_LIBS    = @PASSWD_LIBS@
-
-LOCK_SRCS      = @LOCK_SRCS@
-LOCK_OBJS      = @LOCK_OBJS@
-
-XMU_SRCS       = @XMU_SRCS@
-XMU_OBJS       = @XMU_OBJS@
-
-GL_SRCS                = @SAVER_GL_SRCS@
-GL_OBJS                = @SAVER_GL_OBJS@
-GL_LIBS                = @SAVER_GL_LIBS@
-
-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)/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)/yarandom.o \
-                 $(DEMO_UTIL_OBJS)
-
-SAVER_SRCS_1   = xscreensaver.c windows.c timers.c subprocs.c \
-                 xset.c splash.c setuid.c stderr.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_UTIL_SRCS) $(GL_SRCS) $(XMU_SRCS)
-SAVER_OBJS     = $(SAVER_OBJS_1) prefs.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    = demo.c prefs.c
-DEMO_OBJS_1    = demo.o prefs.o
-
-DEMO_SRCS      = $(DEMO_SRCS_1) remote.c \
-                 $(TOOLKIT_SRCS) $(DEMO_UTIL_SRCS)
-DEMO_OBJS      = $(DEMO_OBJS_1) remote.o \
-                 $(TOOLKIT_OBJS) $(DEMO_UTIL_OBJS)
-
-SAVER_LIBS     = $(LIBS) $(X_LIBS) @SAVER_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)
-
-DEMO_LIBS      = $(LIBS) $(X_LIBS) $(TOOLKIT_LIBS) \
-                 $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS)
-
-EXES           = xscreensaver xscreensaver-command xscreensaver-demo
-
-HDRS           = XScreenSaver_ad.h xscreensaver.h prefs.h remote.h
-MEN            = xscreensaver.man xscreensaver-demo.man \
-                 xscreensaver-command.man
-EXTRAS         = README Makefile.in XScreenSaver.ad.in xscreensaver.pam \
-                 .gdbinit
-VMSFILES       = compile_axp.com compile_decc.com link_axp.com link_decc.com \
-                 vms-getpwnam.c vms-pwd.h vms-hpwd.c vms-validate.c \
-                 vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
-
-TARFILES       = $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) \
-                 $(MOTIF_SRCS) $(ATHENA_SRCS) $(PWENT_SRCS) $(KERBEROS_SRCS) \
-                 $(PAM_SRCS) $(LOCK_SRCS_1) $(DEMO_SRCS_1) $(CMD_SRCS) \
-                 $(HDRS) $(TEST_SRCS) $(MEN)
-
-
-all: $(EXES)
-
-install:   install-program   install-ad   install-man   @INSTALL_PAM@
-uninstall: uninstall-program uninstall-ad uninstall-man
-
-install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
-               INSTALL_SETUID='$(INSTALL_SETUID) -s' \
-               install
-
-install-program: $(EXES)
-       @if [ ! -d $(bindir) ]; then $(INSTALL_DIRS) $(bindir) ; fi
-       @inst="$(INSTALL_PROGRAM)" ;                                    \
-       if [ @NEED_SETUID@ = yes ]; then                                \
-          me="`whoami`" ;                                              \
-          if [ "$$me" = root ]; then                                   \
-            inst="$(INSTALL_SETUID)" ;                                 \
-          else                                                         \
-           e=echo ;                                                    \
- $$e ""                                                                             ;\
- $$e "  ####################################################################";\
- $$e "  Warning: xscreensaver has been compiled with support for shadow"     ;\
- $$e "           passwords.  If your system actually uses shadow passwords," ;\
- $$e "           then xscreensaver must be installed as a setuid root"      ;\
- $$e "           program in order for locking to work.  To do this, you"     ;\
- $$e "           must run 'make install' as 'root', not as '$$me'."         ;\
- $$e ""                                                                             ;\
- $$e "           For now, xscreensaver will be installed non-setuid, which"  ;\
- $$e "           means that locking might not work.  (Try it and see.)"             ;\
- $$e "  ####################################################################";\
- $$e ""                                                                             ;\
-          fi ;                                                         \
-       fi ;                                                            \
-       echo $$inst xscreensaver $(bindir)/xscreensaver ;               \
-       $$inst xscreensaver $(bindir)/xscreensaver
-       $(INSTALL_PROGRAM) xscreensaver-command $(bindir)/xscreensaver-command
-       $(INSTALL_PROGRAM) xscreensaver-demo $(bindir)/xscreensaver-demo
-
-install-ad: XScreenSaver.ad
-       @if [ ! -d $(AD_DIR) ]; then $(INSTALL_DIRS) $(AD_DIR) ; fi
-       @-echo $(INSTALL_DATA) XScreenSaver.ad $(AD_DIR)/XScreenSaver ;       \
-       if $(INSTALL_DATA) XScreenSaver.ad $(AD_DIR)/XScreenSaver ; then      \
-         true ;                                                              \
-       else                                                                  \
-         e=echo ;                                                            \
-         if [ -f $(AD_DIR)/XScreenSaver ]; then                              \
- $$e ""                                                                             ;\
- $$e "  ####################################################################";\
- $$e "  Warning: unable to install $(AD_DIR)/XScreenSaver"                  ;\
- $$e "           That file exists, and is unwritable.  It is probably from"  ;\
- $$e "           an older version of xscreensaver, and could cause things"   ;\
- $$e "           to malfunction.  Please delete it!"                        ;\
- $$e "  ####################################################################";\
- $$e ""                                                                             ;\
-           exit 1 ;                                                          \
-         else                                                                \
- $$e ""                                                                             ;\
- $$e "  ####################################################################";\
- $$e "  Warning: unable to install $(AD_DIR)/XScreenSaver"                  ;\
- $$e "           The directory is unwritable.  This is probably ok;"        ;\
- $$e "           xscreensaver should work without that file."               ;\
- $$e "  ####################################################################";\
- $$e ""                                                                             ;\
-           exit 0 ;                                                          \
-         fi                                                                  \
-       fi
-
-install-man: $(MEN)
-       @men="$(MEN)" ;                                                 \
-       if [ ! -d $(man1dir) ]; then $(INSTALL_DIRS) $(man1dir) ; fi ;  \
-       for man in $$men; do                                            \
-         instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo $(INSTALL_DATA) $(srcdir)/$$man $(man1dir)/$$instname ;  \
-         $(INSTALL_DATA) $(srcdir)/$$man $(man1dir)/$$instname ;       \
-       done
-
-uninstall-program:
-       @for program in $(EXES); do                                     \
-         echo rm -f $(bindir)/$$program ;                              \
-         rm -f $(bindir)/$$program ;                                   \
-       done
-
-uninstall-ad:
-       rm -f $(AD_DIR)/XScreenSaver
-
-uninstall-man:
-       @men="$(MEN)" ;                                                 \
-       for man in $$men; do                                            \
-         instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo rm -f $(man1dir)/$$instname ;                            \
-         rm -f $(man1dir)/$$instname ;                                 \
-       done
-
-install-pam:
-       @src="$(srcdir)/xscreensaver.pam" ;                             \
-       dest=`sed -n 's/.*PAM_SERVICE_NAME[     ]*"\([^"]*\)".*$$/\1/p' \
-          < ../config.h` ;                                             \
-       dir="$(PAM_DIR)" ;                                              \
-       conf="$(PAM_CONF)" ;                                            \
-                                                                       \
-       if [ -d $$dir ] ; then                                          \
-         echo $(INSTALL_DATA) $$src $$dir/$$dest ;                     \
-         $(INSTALL_DATA) $$src $$dir/$$dest ;                          \
-         if [ ! -f $$dir/$$dest ]; then                                \
-           e=echo ;                                                    \
- $$e ""                                                                             ;\
- $$e "  ####################################################################";\
- $$e "  Warning: xscreensaver has been compiled with support for Pluggable"  ;\
- $$e "           Authentication Modules (PAM).  However, we were unable to"  ;\
- $$e "           install the file $$dir/$$dest.  PAM is unlikely"           ;\
- $$e "           to work without this file (and old-style password"         ;\
- $$e "           authentication will be used instead, which may or may not"  ;\
- $$e "           work.)"                                                    ;\
- $$e "  ####################################################################";\
- $$e ""                                                                             ;\
-         fi ;                                                          \
-       elif [ -f $$conf ]; then                                        \
-         if ( grep $$dest $$conf >/dev/null ); then                    \
-          true ;                                                       \
-         else                                                          \
-           e=echo ;                                                    \
- $$e ""                                                                             ;\
- $$e "  ####################################################################";\
- $$e "  Warning: xscreensaver has been compiled with support for Pluggable"  ;\
- $$e "           Authentication Modules (PAM).  To complete the installation";\
- $$e "           of PAM support, you must add this to the file $$conf:"             ;\
- $$e "  ####################################################################";\
- $$e ""                                                                             ;\
-           cat $$src | grep -v '#%' | sed "s/^/        $$dest  /" ;    \
-           echo "";                                                    \
-         fi ;                                                          \
-       fi
-
-
-clean:
-       -rm -f *.o a.out core $(EXES) XScreenSaver_ad.h
-
-distclean: clean
-       -rm -f Makefile XScreenSaver.ad TAGS *~ "#"*
-
-# Adds all current dependencies to Makefile
-depend: XScreenSaver_ad.h
-       $(DEPEND) -s '# DO NOT DELETE: updated by make depend'              \
-       $(DEPEND_FLAGS) --                                                  \
-       $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
-       $(SAVER_SRCS) $(CMD_SRCS)
-
-# Adds some dependencies to Makefile.in -- not totally accurate, but pretty
-# close.  This excludes dependencies on files in /usr/include, etc.  It tries
-# to include only dependencies on files which are themselves a part of this
-# package.
-distdepend: update_ad_version update_man_version XScreenSaver_ad.h
-       @echo updating dependencies in `pwd`/Makefile.in... ;               \
-       $(DEPEND) -w 0 -f -                                                 \
-       -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
-       $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
-       $(SAVER_SRCS_1) $(MOTIF_SRCS) $(ATHENA_SRCS) $(PWENT_SRCS)          \
-       $(LOCK_SRCS_1) $(DEMO_SRCS_1) $(CMD_SRCS) $(TEST_SRCS) |            \
-       (                                                                   \
-         awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \
-         sed -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d'                        \
-             -e 's@\.\./utils@$$(UTILS_SRC)@g'                             \
-             -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'                            \
-             -e 's@$$.*\(XScreenSaver_ad\)@\1@g'                           \
-             -e 's@ $$(srcdir)/\(.*config\.h\)@ \1@g' ;                    \
-         echo ''                                                           \
-       ) > /tmp/distdepend.$$$$ &&                                         \
-       mv Makefile.in Makefile.in.bak &&                                   \
-       mv /tmp/distdepend.$$$$ Makefile.in
-
-# Updates the version number in the app-defaults file to be in sync with 
-# the version number in version.h.  This is so people can tell when they
-# have a version skew between the app-defaults file and the executable.
-update_ad_version::
-       @S=XScreenSaver.ad.in ;                                             \
-       U=$(UTILS_SRC)/version.h ;                                          \
-       V=`sed -n 's/.*\([0-9][0-9]*\.[0-9]*\).*/\1/p' < $$U` ;             \
-       D=`date '+%d-%b-%y'` ;                                              \
-       echo -n "Updating version number in $$S to $$V $$D... " ;           \
-       T=/tmp/xs.$$$$ ;                                                    \
-       sed -e "s/\(.*version \)[0-9][0-9]*\.[0-9]*\(.*\)/\1$$V\2/"         \
-           -e "s/\([0-9][0-9]-[A-Z][a-z][a-z]-[0-9][0-9]\)/$$D/"           \
-         < $$S > $$T ;                                                     \
-       if cmp -s $$S $$T ; then                                            \
-         echo "unchanged." ;                                               \
-       else                                                                \
-         cat $$T > $$S ;                                                   \
-         echo "done." ;                                                    \
-       fi ;                                                                \
-       rm $$T
-
-update_man_version::
-       @for S in $(MEN); do                                                \
-       U=$(UTILS_SRC)/version.h ;                                          \
-       V=`sed -n 's/.*\([0-9][0-9]*\.[0-9]*\).*/\1/p' < $$U` ;             \
-       V="`date '+%d-%b-%y'` ($$V)" ;                                      \
-       echo -n "Updating footer in $$S to \"$$V\"... " ;                   \
-       T=/tmp/xs.$$$$ ;                                                    \
-       sed "s/^\(\.TH[^\"]*\)\"[^\"]*\"\(.*\)/\1\"$$V\"\2/"                \
-         < $$S > $$T ;                                                     \
-       if cmp -s $$S $$T ; then                                            \
-         echo "unchanged." ;                                               \
-       else                                                                \
-         cat $$T > $$S ;                                                   \
-         echo "done." ;                                                    \
-       fi ;                                                                \
-       rm $$T ;                                                            \
-       done
-
-TAGS: tags
-tags:
-       find $(srcdir) -name '*.[chly]' -print | xargs etags -a
-
-echo_tarfiles:
-       @$(MAKE) XScreenSaver_ad.h 2>&1 >&- /dev/null
-       @echo $(TARFILES)
-
-
-# Rules for noticing when the objects from the utils directory are out of
-# date with respect to their sources, and going and building them according
-# to the rules in their own Makefile...
-#
-$(UTILS_BIN)/fade.o:           $(UTILS_SRC)/fade.c
-$(UTILS_BIN)/overlay.o:                $(UTILS_SRC)/overlay.c
-$(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)/spline.o:         $(UTILS_SRC)/spline.c
-$(UTILS_BIN)/yarandom.o:       $(UTILS_SRC)/yarandom.c
-
-$(SAVER_UTIL_OBJS):
-       cd $(UTILS_BIN) ; \
-       $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
-
-# How we build object files in this directory.
-.c.o:
-       $(CC) -c $(INCLUDES) $(DEFS)  $(CFLAGS) $(X_CFLAGS) $<
-
-# subprocs is the only one that takes an extra -D option.
-subprocs.o: subprocs.c
-       $(CC) -c $(INCLUDES) $(DEFS2) $(CFLAGS) $(X_CFLAGS) $<
-
-
-# How we build the default app-defaults file into the program.
-#
-XScreenSaver_ad.h: XScreenSaver.ad
-       $(SHELL) $(UTILS_SRC)/ad2c XScreenSaver.ad > XScreenSaver_ad.h
-
-# The executables linked in this directory.
-#
-xscreensaver: $(SAVER_OBJS)
-       $(CC) $(LDFLAGS) -o $@ $(SAVER_OBJS) $(SAVER_LIBS)
-
-xscreensaver-command: $(CMD_OBJS)
-       $(CC) $(LDFLAGS) -o $@ $(CMD_OBJS) $(CMD_LIBS)
-
-xscreensaver-demo: $(DEMO_OBJS)
-       $(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(DEMO_LIBS)
-
-
-
-TEST_PASSWD_OBJS = test-passwd.o $(LOCK_OBJS_1) $(PASSWD_OBJS) \
-        subprocs.o setuid.o splash.o prefs.o \
-       $(SAVER_UTIL_OBJS)
-test-passwd.o: XScreenSaver_ad.h
-
-test-passwd: $(TEST_PASSWD_OBJS) XScreenSaver_ad.h
-       $(CC) $(LDFLAGS) -o $@ $(TEST_PASSWD_OBJS) $(SAVER_LIBS)
-
-test-uid: test-uid.o
-       $(CC) $(LDFLAGS) -o $@ test-uid.o
-
-test-xdpms: test-xdpms.o
-       $(CC) $(LDFLAGS) -o $@ test-xdpms.o $(SAVER_LIBS)
-
-test-grab: test-grab.o
-       $(CC) $(LDFLAGS) -o $@ test-grab.o $(SAVER_LIBS)
-
-
-# This kludge is so that I can build/test the Athena version of the
-# xscreensaver-demo program without having to re-run configure.
-# Normally it builds it with Motif if possible; this lets me build
-# both.
-#
-xscreensaver-demo-Xaw: $(ATHENA_OBJS) demo-Xaw.o $(DEMO_OBJS)
-       $(CC) $(LDFLAGS) -o $@ demo-Xaw.o prefs.o remote.o \
-               $(ATHENA_OBJS) $(DEMO_UTIL_OBJS) \
-               $(LIBS) $(X_LIBS) -lXaw \
-               $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS)
-xscreensaver-demo-Xaw3d: $(ATHENA_OBJS) demo-Xaw.o $(DEMO_OBJS)
-       $(CC) $(LDFLAGS) -o $@ demo-Xaw.o prefs.o remote.o \
-               $(ATHENA_OBJS) $(DEMO_UTIL_OBJS) \
-               $(LIBS) $(X_LIBS) -lXaw3d \
-               $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS)
-demo-Xaw.o: demo.c XScreenSaver_ad.h
-       $(CC) -o $@ -c -DHAVE_ATHENA_KLUDGE \
-       $(INCLUDES) $(DEFS2) $(CFLAGS) $(X_CFLAGS) $<
-
-
-
-##############################################################################
-#
-# DO NOT DELETE: updated by make distdepend
-# $(srcdir)/DO $(srcdir)/NOT $(srcdir)/DELETE: $(srcdir)/updated $(srcdir)/by $(srcdir)/make $(srcdir)/distdepend
-
-xscreensaver.o: ../config.h
-xscreensaver.o: $(srcdir)/xscreensaver.h
-xscreensaver.o: $(srcdir)/prefs.h
-xscreensaver.o: $(UTILS_SRC)/version.h
-xscreensaver.o: $(UTILS_SRC)/yarandom.h
-xscreensaver.o: $(UTILS_SRC)/resources.h
-xscreensaver.o: $(UTILS_SRC)/visual.h
-xscreensaver.o: $(UTILS_SRC)/usleep.h
-xscreensaver.o: XScreenSaver_ad.h
-windows.o: ../config.h
-windows.o: $(srcdir)/xscreensaver.h
-windows.o: $(srcdir)/prefs.h
-windows.o: $(UTILS_SRC)/visual.h
-windows.o: $(UTILS_SRC)/fade.h
-timers.o: ../config.h
-timers.o: $(srcdir)/xscreensaver.h
-timers.o: $(srcdir)/prefs.h
-subprocs.o: ../config.h
-subprocs.o: $(srcdir)/xscreensaver.h
-subprocs.o: $(srcdir)/prefs.h
-subprocs.o: $(UTILS_SRC)/yarandom.h
-xset.o: ../config.h
-xset.o: $(srcdir)/xscreensaver.h
-xset.o: $(srcdir)/prefs.h
-splash.o: ../config.h
-splash.o: $(srcdir)/xscreensaver.h
-splash.o: $(srcdir)/prefs.h
-splash.o: $(UTILS_SRC)/resources.h
-setuid.o: ../config.h
-setuid.o: $(srcdir)/xscreensaver.h
-setuid.o: $(srcdir)/prefs.h
-stderr.o: ../config.h
-stderr.o: $(srcdir)/xscreensaver.h
-stderr.o: $(srcdir)/prefs.h
-stderr.o: $(UTILS_SRC)/resources.h
-stderr.o: $(UTILS_SRC)/visual.h
-dialogs-Xm.o: ../config.h
-dialogs-Xm.o: $(UTILS_SRC)/visual.h
-dialogs-Xaw.o: ../config.h
-dialogs-Xaw.o: $(UTILS_SRC)/visual.h
-passwd-pwent.o: ../config.h
-lock.o: ../config.h
-lock.o: $(srcdir)/xscreensaver.h
-lock.o: $(srcdir)/prefs.h
-lock.o: $(UTILS_SRC)/resources.h
-passwd.o: ../config.h
-demo.o: ../config.h
-demo.o: $(UTILS_SRC)/version.h
-demo.o: $(srcdir)/prefs.h
-demo.o: $(UTILS_SRC)/resources.h
-demo.o: $(UTILS_SRC)/visual.h
-demo.o: $(srcdir)/remote.h
-demo.o: $(UTILS_SRC)/usleep.h
-demo.o: XScreenSaver_ad.h
-prefs.o: ../config.h
-prefs.o: $(srcdir)/prefs.h
-prefs.o: $(UTILS_SRC)/resources.h
-remote.o: ../config.h
-remote.o: $(srcdir)/remote.h
-xscreensaver-command.o: ../config.h
-xscreensaver-command.o: $(srcdir)/remote.h
-xscreensaver-command.o: $(UTILS_SRC)/version.h
-test-passwd.o: ../config.h
-test-passwd.o: $(srcdir)/xscreensaver.h
-test-passwd.o: $(srcdir)/prefs.h
-test-passwd.o: $(UTILS_SRC)/resources.h
-test-passwd.o: $(UTILS_SRC)/version.h
-test-passwd.o: $(UTILS_SRC)/visual.h
-test-passwd.o: XScreenSaver_ad.h
-test-uid.o: ../config.h
-test-xdpms.o: ../config.h
-test-grab.o: ../config.h
-
diff --git a/driver/README b/driver/README
deleted file mode 100644 (file)
index df64793..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-This directory contains the source for xscreensaver and xscreensaver-command,
-the screensaver driver, and the program for externally controlling it.  Some
-stuff from the ../utils/ directory is used here as well.
-
-If you have compilation problems, check the parameters in ../config.h.
diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in
deleted file mode 100644 (file)
index b820738..0000000
+++ /dev/null
@@ -1,514 +0,0 @@
-!
-!                              XScreenSaver
-!
-!            a screen saver and locker for the X window system
-!                            by Jamie Zawinski
-!
-!                              version 3.12
-!                                10-May-99
-!
-! See "man xscreensaver" for more info.  The latest version is always
-! available at http://www.jwz.org/xscreensaver/
-
-
-! These resources, when placed in the system-wide app-defaults directory
-! (e.g., /usr/lib/X11/app-defaults/XScreenSaver) will provide the default
-! settings for new users.  However, if you have a ".xscreensaver" file in
-! your home directory, the settings in that file take precedence.
-
-
-*timeout:              10
-*cycle:                        10
-*lockTimeout:          0
-*passwdTimeout:                30
-*nice:                 10
-*lock:                 False
-*lockVTs:              True
-*verbose:              False
-*timestamp:            False
-*fade:                 True
-*unfade:               False
-*fadeSeconds:          3
-*fadeTicks:            20
-*splash:               True
-*splashDuration:       5
-*visualID:             default
-
-*captureStderr:        True
-*overlayTextForeground:        #FFFF00
-*overlayTextBackground:        #000000
-*overlayStderr:                True
-*font:                 *-medium-r-*-140-*-m-*
-
-! The default is to use these extensions if available (as noted.)
-*sgiSaverExtension:    True
-*mitSaverExtension:    False
-*xidleExtension:       True
-*procInterrupts:       True
-
-! This is what the "Demo" button on the splash screen runs (/bin/sh syntax.)
-*demoCommand: xscreensaver-demo
-
-! This is what the "Prefs" button on the splash screen runs (/bin/sh syntax.)
-*prefsCommand: xscreensaver-demo -prefs
-
-! This is the URL that the "Help" button on the splash screen loads.
-*helpURL: http://www.jwz.org/xscreensaver/man.html
-
-! This is how the "Help" button loads URLs (/bin/sh syntax.)
-! The "helpURL" will be substituted for up to two occurrences of "%s".
-*loadURL: netscape -remote 'openURL(%s)' || netscape '%s'
-
-
-! Turning on "installColormap" interacts erratically with twm and tvtwm,
-! but seems to work fine with mwm and olwm.  Try it and see.  If your
-! screen turns some color other than black, the window manager is buggy,
-! and you need to set this resource to False (or get a WM that works.)
-!
-*installColormap:      True
-
-
-! Any program which can draw on the root window will work as a screensaver.
-! The following resource enumerates them.
-!
-! Programs are separated by newlines (specified in resource files with \n).
-! Lines may be continued with a lone \ at the end of the line.
-!
-! Each line is an `sh' command.
-!
-! If the first (non-blank) character on the line is "-", then that means
-! that this command is disabled: it's still in the list, but it won't ever
-! be used.  (This is just to make it easy to disable and then re-enable 
-! them later.)
-!
-! If the first word on the line is the name of a visual followed by a
-! colon, then that visual will be used for the program, if it is available.
-! If no such visual is available, then the program will be skipped.  In
-! this way, you can specify that you want certain programs to run only
-! on color screens, and others only on mono screens, by making use of the
-! magic visual names "color" and "mono".  Likewise, if some hacks prefer
-! colormaps, but others prefer 24-bit windows, that also can be arranged
-! (in this case, by using "PseudoColor:" versus "TrueColor:".)
-!
-! Some of the screenhacks are written using OpenGL.  OpenGL programs are
-! a bit different than normal X programs, in that they prefer visuals that
-! are *half* as deep as the screen.  You can tell xscreensaver to select a
-! good visual for a GL program by using the magic visual name "GL".
-!
-! All programs must be launched in such a way that they draw on the root
-! window; they should not be spawned in the background with "&".  If shell
-! metacharacters are used, they must be understandable to `sh', not `csh'
-! (the $SHELL variable is not consulted, for unfortunate but good reasons.)
-!
-! Be sure to check out Demo Mode: run the `xscreensaver-demo' program to
-! edit the current list of programs interactively, try out the various modes,
-! and change other parameters.  See the man page for details.
-!
-*programs:     qix -root -solid -delay 0 -segments 100                 \n\
-               attraction -root -mode balls                            \n\
-               attraction -root -mode lines -points 3 -segments 200    \n\
-               attraction -root -mode splines -segments 300            \n\
-               attraction -root -mode lines -radius 300                  \
-                       -orbit -vmult 0.5                               \n\
-               pyro -root                                              \n\
-               helix -root                                             \n\
-               pedal -root                                             \n\
-               rorschach -root -offset 7                               \n\
-               hopalong -root                                          \n\
-               greynetic -root                                         \n\
-               xroger -root                                            \n\
-               imsmap -root                                            \n\
-               slidescreen -root                                       \n\
-               decayscreen -root                                       \n\
-               jigsaw -root                                            \n\
-               blitspin -root -grab                                    \n\
-               slip -root                                              \n\
-               distort -root                                           \n\
-               spotlight -root                                         \n\
-               hypercube -root                                         \n\
-               halo -root                                              \n\
-               maze -root                                              \n\
-               noseguy -root                                           \n\
-               flame -root                                             \n\
-               lmorph -root                                            \n\
-               deco -root                                              \n\
-               moire -root                                             \n\
-               moire2 -root                                            \n\
-               lightning -root                                         \n\
-               strange -root                                           \n\
-               spiral -root                                            \n\
-               laser -root                                             \n\
-               grav -root                                              \n\
-               grav -root -trail -decay                                \n\
-               drift -root                                             \n\
-               ifs -root                                               \n\
-               julia -root                                             \n\
-               penrose -root                                           \n\
-               sierpinski -root                                        \n\
-               braid -root                                             \n\
-               galaxy -root                                            \n\
-               bouboule -root                                          \n\
-               swirl -root                                             \n\
-               flag -root                                              \n\
-               sphere -root                                            \n\
-               forest -root                                            \n\
-               lisa -root                                              \n\
-               lissie -root                                            \n\
-               goop -root                                              \n\
-               starfish -root                                          \n\
-               starfish -root -blob                                    \n\
-               munch -root                                             \n\
-               fadeplot -root                                          \n\
-               coral -root                                             \n\
-               mountain -root                                          \n\
-               triangle -root                                          \n\
-               worm -root                                              \n\
-               rotor -root                                             \n\
-               ant -root                                               \n\
-               demon -root                                             \n\
-               loop -root                                              \n\
-               vines -root                                             \n\
-               kaleidescope -root                                      \n\
-               xjack -root                                             \n\
-  -            xlyap -root -randomize                                  \n\
-               cynosure -root                                          \n\
-               flow -root                                              \n\
-               epicycle -root                                          \n\
-               interference -root                                      \n\
-               truchet -root -randomize                                \n\
-               bsod -root                                              \n\
-               crystal -root                                           \n\
-               discrete -root                                          \n\
-               kumppa -root                                            \n\
-               rd-bomb -root                                           \n\
-               rd-bomb -root -speed 1 -size 0.1                        \n\
-               sonar -root                                             \n\
-               t3d -root                                               \n\
-               penetrate -root                                         \n\
-               deluxe -root                                            \n\
-               compass -root                                           \n\
-               squiral -root                                           \n\
-               xflame -root                                            \n\
-               wander -root                                            \n\
-               wander -root -advance 0 -size 10 -circles True            \
-                 -length 10000 -reset 100000                           \n\
-               critical -root                                          \n\
-               phosphor -root                                          \n\
-               xmatrix -root                                           \n\
-                                                                         \
-       mono:   rocks -root                                             \n\
-       color:  rocks -root -fg darksalmon                              \n\
-                                                                         \
-       mono:   qix -root -linear -count 5 -size 200 -spread 30           \
-                       -segments 75 -solid -xor                        \n\
-                                                                         \
-       color:  attraction -root -mode polygons                         \n\
-       color:  attraction -root -mode filled-splines -segments 0       \n\
-       color:  attraction -root -glow -points 10                       \n\
-       color:  bubbles -root                                           \n\
-                                                                         \
-  PseudoColor: qix -root -count 4 -solid -transparent                  \n\
-  PseudoColor: qix -root -count 5 -solid -transparent -linear            \
-                       -segments 250 -size 100                         \n\
-                                                                         \
-@GL_KLUDGE@ GL:        gears -root                                             \n\
-@GL_KLUDGE@ GL:        superquadrics -root                                     \n\
-@GL_KLUDGE@ GL:        morph3d -root                                           \n\
-@GL_KLUDGE@ GL:        cage -root                                              \n\
-@GL_KLUDGE@ GL:        moebius -root                                           \n\
-@GL_KLUDGE@ GL:        stairs -root                                            \n\
-@GL_KLUDGE@ GL:        pipes -root                                             \n\
-@GL_KLUDGE@ GL:        sproingies -root                                        \n\
-@GL_KLUDGE@ GL:        rubik -root                                             \n\
-@GL_KLUDGE@ GL:        atlantis -root                                          \n\
-@GL_KLUDGE@ GL:        lament -root                                            \n\
-@GL_KLUDGE@ GL:        bubble3d -root                                          \n\
-@GL_KLUDGE@ GL:        glplanet -root                                          \n\
-@GL_KLUDGE@ GL:        pulsar -root                                            \n\
-  -       GL:  pulsar -root -texture -mipmap -texture_quality            \
-                      -light -fog                                      \n
-
-! Some other programs that you might want to track down (these work as
-! XScreenSaver helpers, but are not distributed with it):
-!
-!              xdaliclock -root -builtin2                              \n\
-!              xswarm -r 2>&-                                          \n\
-!              xwave -root                                             \n\
-!              xbouncebits ...                                         \n\
-!              ico -r -faces -sleep 1 -obj ico                         \n\
-!              xsplinefun                                              \n\
-!              xmountains -b -M                                        \n\
-!      color:  xfishtank -c black -d -r 2                              \n\
-!
-! xtacy is ok, but it only works on the default visual.  We can satisfy
-! that constraint like so:
-!
-!     default: xtacy -root -delay 100 -funky -number 3                 \n\
-!     default: xtacy -root -delay 100 -gravity                         \n\
-!     default: xtacy -root -delay 100 -mixer                           \n\
-!     default: xtacy -root -delay 100 -taffy -pal 4                    \n\
-! 
-! To display a randomized slideshow of images, you can do something like this:
-!
-!     default-n: xv -root -rmode 5  image-1.gif  -quit
-!     default-n: xv -root -rmode 5  image-2.gif  -quit
-!     default-n: xv -root -rmode 5  image-3.gif  -quit
-!              ...and so on...
-!
-! Note that we've used "default-n" as the visual name, rather than just
-! "default": this means "default visual, no install", that is, it's like
-! specifying the command-line arguments "-visual default -no-install".
-! This is necessary because, when XV is running in "-root" mode, it always
-! assumes that the default visual and colormap are being used, rather than 
-! examining the window it is drawing on to see what visual and colormap it 
-! has.  If we didn't force the default visual to be used, xv would get an
-! X error.  If we didn't force the default colormap to be installed, the
-! colors would be all wrong.  "default-i" may also be used as a visual name
-! (meaning, "-visual default -install") but you probably won't ever need
-! to use that.
-!
-! XEarth is nice, too:
-!
-!     default-n: xearth -nostars -wait 0 -timewarp 400 -pos sunrel/38/-30
-!
-!
-! Some of the GL demos that SGI ships work with XScreenSaver; most don't.
-! XScreenSaver includes a program (not built or installed by default)
-! called "xscreensaver-sgigl".  To use the SGI demos with XScreenSaver,
-! build that program, and use it to launch the SGI demos.  For example,
-! on Irix 6.2, you can do this:
-!
-!     xscreensaver-sgigl /usr/demos/bin/ep -S
-!     xscreensaver-sgigl /usr/demos/bin/bongo
-!
-! On Irix 6.3, things have moved, so you need to do it like this:
-!
-!     xscreensaver-sgigl /usr/sbin/ep -S
-!
-! 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.
-!
-!
-! Also, since these actually end up mapping their own windows instead of
-! drawing on the XScreenSaver-provided root, when they are being run from
-! demo-mode, you can't pop up the demo-mode dialog just by clicking the
-! mouse: you must first type ESC to make the SGI programs exit.  This sucks.
-! Things should work properly when they are being run by xscreensaver in
-! non-demo-mode, however.
-!
-! Basically, the SGI demo writers went out of their way to make my life hell.
-
-
-
-!=============================================================================
-!
-!      You probably don't want to change anything after this point.
-!
-!=============================================================================
-
-
-XScreenSaver.pointerPollTime:          5
-XScreenSaver.initialDelay:             0
-XScreenSaver.windowCreationTimeout:    30
-XScreenSaver.bourneShell:              /bin/sh
-
-
-! Resources for the password and splash-screen dialog boxes of
-! the "xscreensaver" daemon.
-!
-*Dialog.headingFont:           *-times-bold-r-*-*-*-180-*-*-*-iso8859-1
-*Dialog.bodyFont:              *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
-*Dialog.labelFont:             *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
-*Dialog.buttonFont:            *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
-*Dialog.foreground:            #000000
-*Dialog.background:            #BFBFBF
-*Dialog.Button.foreground:     #000000
-*Dialog.Button.background:     #D0D0D0
-*Dialog.text.foreground:       #000000
-*Dialog.text.background:       #FFFFFF
-*Dialog.logo.foreground:       #FF0000
-*Dialog.logo.background:       #FFFFFF
-*Dialog.topShadowColor:                #E7E7E7
-*Dialog.bottomShadowColor:     #737373
-*Dialog.logo.width:            200
-*Dialog.logo.height:           200
-*Dialog.internalBorderWidth:   30
-*Dialog.borderWidth:           1
-*Dialog.shadowThickness:       4
-
-*passwd.heading.label:         XScreenSaver %s
-*passwd.body.label:            This display is locked.
-*passwd.user.label:            User:
-*passwd.passwd.label:          Password:
-*passwd.passwdFont:            *-courier-medium-r-*-*-*-140-*-*-*-iso8859-1
-*passwd.thermometer.width:     8
-
-*splash.heading.label:         XScreenSaver %s
-*splash.body.label:            Copyright Â© 1991-1999 by
-*splash.body2.label:           Jamie Zawinski <jwz@jwz.org>
-*splash.demo.label:            Demo
-*splash.prefs.label:           Prefs
-*splash.help.label:            Help
-
-
-! Resources for the Motif dialog boxes of the "xscreensaver-demo" program.
-! 
-*fontList:                       *-helvetica-medium-r-*-*-*-120-*-*-*-iso8859-1
-*demoDialog*label1.fontList:     *-helvetica-medium-r-*-*-*-140-*-*-*-iso8859-1
-*XmTextField.fontList:             *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1
-*label0.fontList:                  *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
-XScreenSaver*XmList.fontList:      *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1
-! Need to fully-qualify the preceeding in the case of of *sgiMode.
-
-*XmDialogShell*foreground:             #000000
-*XmDialogShell*background:             #E5E5E5
-*XmDialogShell*XmTextField.foreground: #000000
-*XmDialogShell*XmTextField.background: #FFFFFF
-*XmDialogShell*demoList.foreground:    #000000
-*XmDialogShell*demoList.background:    #FFFFFF
-
-*XmDialogShell.title:          XScreenSaver
-*versionWarning_popup.title:   XScreenSaver Warning
-*demoForm_popup.title:         XScreenSaver Demo
-*preferencesForm_popup.title:  XScreenSaver Preferences
-*allowShellResize:             True
-*autoUnmanage:                 False
-
-! This doesn't work.  Motif ignores it if there is a scroll-list!
-*demoDialog.maxWidth:          600
-
-*label1.labelString:           XScreenSaver %s
-*label1.label:                 XScreenSaver %s
-*label2.labelString: Copyright Â© 1991-1999 by Jamie Zawinski <jwz@jwz.org>
-*label2.label:      Copyright Â© 1991-1999 by Jamie Zawinski <jwz@jwz.org>
-*demoList.visibleItemCount:    10
-*demoList.automaticSelection:  True
-*next.labelString:             Run Next
-*prev.labelString:             Run Previous
-*edit.labelString:             Preferences
-*restart.labelString:          Reinitialize
-*done.labelString:             Quit
-
-*preferencesLabel.labelString: XScreenSaver Parameters
-
-*timeoutLabel.labelString:     Saver Timeout
-*cycleLabel.labelString:       Cycle Timeout
-*fadeSecondsLabel.labelString: Fade Duration
-*fadeTicksLabel.labelString:   Fade Ticks
-*lockLabel.labelString:                Lock Timeout
-*passwdLabel.labelString:      Password Timeout
-*preferencesForm*XmTextField.columns:  8
-
-*verboseToggle.labelString:    Verbose
-*cmapToggle.labelString:       Install Colormap
-*fadeToggle.labelString:       Fade Colormap
-*unfadeToggle.labelString:     Unfade Colormap
-*lockToggle.labelString:       Require Password
-*preferencesDone.labelString:  OK
-*preferencesCancel.labelString:        Cancel
-
-
-! Disable Motif drag-and-drop in dialog boxes.  This is kind of pathetic, but
-! in some older versions of Motif, most any attempt to drag cause immediate
-! flaming death from above.  This *should* rip the legs off that bug.
-! (But sadly, Lesstif 0.86 and earlier ignore these resources *and* have
-! buggy drag-and-drop.)
-!
-XScreenSaver*dragInitiatorProtocolStyle: DRAG_NONE
-XScreenSaver*dragReceiverProtocolStyle:  DRAG_NONE
-
-
-
-! Resources for the Athena dialog boxes of the "xscreensaver-demo" program.
-! 
-*demo_dialog.title:            XScreenSaver Demo
-*preferences_dialog.title:     XScreenSaver Preferences
-*warning_dialog.title:         XScreenSaver Warning
-
-! For some reason, it doesn't size correctly by itself.
-*demo_dialog.geometry:         =640x400
-
-*demo_dialog*font:             *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1
-*preferences_dialog*font:      *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1
-*demo_dialog*label1.font:      *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
-*preferences_dialog*label1.font:*-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
-XScreenSaver*warning_dialog*label0.font:       \
-                               *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
-XScreenSaver*warning_dialog*Label.font:        \
-                               *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1
-XScreenSaver*warning_dialog*Command.font: \
-                               *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
-XScreenSaver.demo_dialog*List.font:    \
-                               *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1
-XScreenSaver.demo_dialog*Text*font:    \
-                               *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1
-
-XScreenSaver.demo_dialog*foreground:                   #000000
-XScreenSaver.demo_dialog*background:                   #E5E5E5
-XScreenSaver.demo_dialog*List.background:              #FFFFFF
-XScreenSaver.demo_dialog*Scrollbar.background:         #D9D9D9
-XScreenSaver.demo_dialog*Command.background:           #D9D9D9
-XScreenSaver.demo_dialog*Text*background:              #FFFFFF
-
-XScreenSaver.preferences_dialog*foreground:            #000000
-XScreenSaver.preferences_dialog*background:            #E5E5E5
-XScreenSaver.preferences_dialog*Command.background:    #D9D9D9
-XScreenSaver.preferences_dialog*Toggle.background:     #D9D9D9
-XScreenSaver.preferences_dialog*Text*background:       #FFFFFF
-
-XScreenSaver.warning_dialog*foreground:                        #000000
-XScreenSaver.warning_dialog*background:                        #E5E5E5
-XScreenSaver.warning_dialog*Command.background:                #D9D9D9
-
-*preferences_dialog*Dialog.value.translations: #override\n\
-       <Key>Return: beginning-of-line()\n
-
-*demo_dialog*viewport.height:                  200
-*Form.borderWidth:                             0
-*Box.borderWidth:                              0
-*Label.borderWidth:                            0
-*preferences_dialog*Dialog.borderWidth:                0
-
-*demo_dialog*next.label:                       Run Next
-*demo_dialog*prev.label:                       Run Previous
-*demo_dialog*edit.label:                       Preferences
-*demo_dialog*restart.label:                    Reinitialize
-*demo_dialog*done.label:                       Quit
-XScreenSaver.demo_dialog*Command.internalWidth:  10
-XScreenSaver.demo_dialog*Command.internalHeight: 4
-
-*preferences_dialog*timeout.label:             Saver Timeout:
-*preferences_dialog*cycle.label:               Cycle Timeout:
-*preferences_dialog*fade.label:                        Fade Duration:
-*preferences_dialog*ticks.label:               Fade Ticks:
-*preferences_dialog*lockTime.label:            Lock Timeout:
-*preferences_dialog*passwdTime.label:          Password Timeout:
-XScreenSaver.preferences_dialog*Command.internalWidth:  10
-XScreenSaver.preferences_dialog*Command.internalHeight: 4
-
-*preferences_dialog*label1.label:              XScreenSaver Parameters
-*preferences_dialog*buttonbox.verbose.label:   Verbose
-*preferences_dialog*buttonbox.cmap.label:      Install Colormap
-*preferences_dialog*buttonbox.fade.label:      Fade Colormap
-*preferences_dialog*buttonbox.unfade.label:    Unfade Colormap
-*preferences_dialog*buttonbox.lock.label:      Require Password
-*preferences_dialog*done.label:                        Ok
-*preferences_dialog*cancel.label:              Cancel
-
-*warning_dialog*ok.label:                      Ok
-
-*warning_dialog*horizDistance:                 30
-*warning_dialog*vertDistance:                  0
-
-*warning_dialog*Label.internalWidth:           1
-*warning_dialog*Label.internalHeight:          0
-
-*warning_dialog*label0.horizDistance:          80
-*warning_dialog*label0.vertDistance:           20
-
-*warning_dialog*Command.horizDistance:         160
-*warning_dialog*Command.vertDistance:          20
-*warning_dialog*Command.internalWidth:         20
-*warning_dialog*Command.internalHeight:                5
diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h
deleted file mode 100644 (file)
index 66a777b..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-"*timeout:             10",
-"*cycle:                       10",
-"*lockTimeout:         0",
-"*passwdTimeout:               30",
-"*nice:                        10",
-"*lock:                        False",
-"*lockVTs:             True",
-"*verbose:             False",
-"*timestamp:           False",
-"*fade:                        True",
-"*unfade:              False",
-"*fadeSeconds:         3",
-"*fadeTicks:           20",
-"*splash:              True",
-"*splashDuration:      5",
-"*visualID:            default",
-"*captureStderr:       True",
-"*overlayTextForeground:       #FFFF00",
-"*overlayTextBackground:       #000000",
-"*overlayStderr:               True",
-"*font:                        *-medium-r-*-140-*-m-*",
-"*sgiSaverExtension:   True",
-"*mitSaverExtension:   False",
-"*xidleExtension:      True",
-"*procInterrupts:      True",
-"*demoCommand: xscreensaver-demo",
-"*prefsCommand: xscreensaver-demo -prefs",
-"*helpURL: http://www.jwz.org/xscreensaver/man.html",
-"*loadURL: netscape -remote 'openURL(%s)' || netscape '%s'",
-"*installColormap:     True",
-"*programs:    qix -root -solid -delay 0 -segments 100                 \\n\
-               attraction -root -mode balls                            \\n\
-               attraction -root -mode lines -points 3 -segments 200    \\n\
-               attraction -root -mode splines -segments 300            \\n\
-               attraction -root -mode lines -radius 300                  \
-                       -orbit -vmult 0.5                               \\n\
-               pyro -root                                              \\n\
-               helix -root                                             \\n\
-               pedal -root                                             \\n\
-               rorschach -root -offset 7                               \\n\
-               hopalong -root                                          \\n\
-               greynetic -root                                         \\n\
-               xroger -root                                            \\n\
-               imsmap -root                                            \\n\
-               slidescreen -root                                       \\n\
-               decayscreen -root                                       \\n\
-               jigsaw -root                                            \\n\
-               blitspin -root -grab                                    \\n\
-               slip -root                                              \\n\
-               distort -root                                           \\n\
-               spotlight -root                                         \\n\
-               hypercube -root                                         \\n\
-               halo -root                                              \\n\
-               maze -root                                              \\n\
-               noseguy -root                                           \\n\
-               flame -root                                             \\n\
-               lmorph -root                                            \\n\
-               deco -root                                              \\n\
-               moire -root                                             \\n\
-               moire2 -root                                            \\n\
-               lightning -root                                         \\n\
-               strange -root                                           \\n\
-               spiral -root                                            \\n\
-               laser -root                                             \\n\
-               grav -root                                              \\n\
-               grav -root -trail -decay                                \\n\
-               drift -root                                             \\n\
-               ifs -root                                               \\n\
-               julia -root                                             \\n\
-               penrose -root                                           \\n\
-               sierpinski -root                                        \\n\
-               braid -root                                             \\n\
-               galaxy -root                                            \\n\
-               bouboule -root                                          \\n\
-               swirl -root                                             \\n\
-               flag -root                                              \\n\
-               sphere -root                                            \\n\
-               forest -root                                            \\n\
-               lisa -root                                              \\n\
-               lissie -root                                            \\n\
-               goop -root                                              \\n\
-               starfish -root                                          \\n\
-               starfish -root -blob                                    \\n\
-               munch -root                                             \\n\
-               fadeplot -root                                          \\n\
-               coral -root                                             \\n\
-               mountain -root                                          \\n\
-               triangle -root                                          \\n\
-               worm -root                                              \\n\
-               rotor -root                                             \\n\
-               ant -root                                               \\n\
-               demon -root                                             \\n\
-               loop -root                                              \\n\
-               vines -root                                             \\n\
-               kaleidescope -root                                      \\n\
-               xjack -root                                             \\n\
-  -            xlyap -root -randomize                                  \\n\
-               cynosure -root                                          \\n\
-               flow -root                                              \\n\
-               epicycle -root                                          \\n\
-               interference -root                                      \\n\
-               truchet -root -randomize                                \\n\
-               bsod -root                                              \\n\
-               crystal -root                                           \\n\
-               discrete -root                                          \\n\
-               kumppa -root                                            \\n\
-               rd-bomb -root                                           \\n\
-               rd-bomb -root -speed 1 -size 0.1                        \\n\
-               sonar -root                                             \\n\
-               t3d -root                                               \\n\
-               penetrate -root                                         \\n\
-               deluxe -root                                            \\n\
-               compass -root                                           \\n\
-               squiral -root                                           \\n\
-               xflame -root                                            \\n\
-               wander -root                                            \\n\
-               wander -root -advance 0 -size 10 -circles True            \
-                 -length 10000 -reset 100000                           \\n\
-               critical -root                                          \\n\
-               phosphor -root                                          \\n\
-               xmatrix -root                                           \\n\
-                                                                         \
-       mono:   rocks -root                                             \\n\
-       color:  rocks -root -fg darksalmon                              \\n\
-                                                                         \
-       mono:   qix -root -linear -count 5 -size 200 -spread 30           \
-                       -segments 75 -solid -xor                        \\n\
-                                                                         \
-       color:  attraction -root -mode polygons                         \\n\
-       color:  attraction -root -mode filled-splines -segments 0       \\n\
-       color:  attraction -root -glow -points 10                       \\n\
-       color:  bubbles -root                                           \\n\
-                                                                         \
-  PseudoColor: qix -root -count 4 -solid -transparent                  \\n\
-  PseudoColor: qix -root -count 5 -solid -transparent -linear            \
-                       -segments 250 -size 100                         \\n\
-                                                                         \
-          GL:  gears -root                                             \\n\
-          GL:  superquadrics -root                                     \\n\
-          GL:  morph3d -root                                           \\n\
-          GL:  cage -root                                              \\n\
-          GL:  moebius -root                                           \\n\
-          GL:  stairs -root                                            \\n\
-          GL:  pipes -root                                             \\n\
-          GL:  sproingies -root                                        \\n\
-          GL:  rubik -root                                             \\n\
-          GL:  atlantis -root                                          \\n\
-          GL:  lament -root                                            \\n\
-          GL:  bubble3d -root                                          \\n\
-          GL:  glplanet -root                                          \\n\
-          GL:  pulsar -root                                            \\n\
-  -       GL:  pulsar -root -texture -mipmap -texture_quality            \
-                      -light -fog                                      \\n",
-" ",
-"XScreenSaver.pointerPollTime:         5",
-"XScreenSaver.initialDelay:            0",
-"XScreenSaver.windowCreationTimeout:   30",
-"XScreenSaver.bourneShell:             /bin/sh",
-"*Dialog.headingFont:          *-times-bold-r-*-*-*-180-*-*-*-iso8859-1",
-"*Dialog.bodyFont:             *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1",
-"*Dialog.labelFont:            *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1",
-"*Dialog.buttonFont:           *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1",
-"*Dialog.foreground:           #000000",
-"*Dialog.background:           #BFBFBF",
-"*Dialog.Button.foreground:    #000000",
-"*Dialog.Button.background:    #D0D0D0",
-"*Dialog.text.foreground:      #000000",
-"*Dialog.text.background:      #FFFFFF",
-"*Dialog.logo.foreground:      #FF0000",
-"*Dialog.logo.background:      #FFFFFF",
-"*Dialog.topShadowColor:               #E7E7E7",
-"*Dialog.bottomShadowColor:    #737373",
-"*Dialog.logo.width:           200",
-"*Dialog.logo.height:          200",
-"*Dialog.internalBorderWidth:  30",
-"*Dialog.borderWidth:          1",
-"*Dialog.shadowThickness:      4",
-"*passwd.heading.label:                XScreenSaver %s",
-"*passwd.body.label:           This display is locked.",
-"*passwd.user.label:           User:",
-"*passwd.passwd.label:         Password:",
-"*passwd.passwdFont:           *-courier-medium-r-*-*-*-140-*-*-*-iso8859-1",
-"*passwd.thermometer.width:    8",
-"*splash.heading.label:                XScreenSaver %s",
-"*splash.body.label:           Copyright Â© 1991-1999 by",
-"*splash.body2.label:          Jamie Zawinski <jwz@jwz.org>",
-"*splash.demo.label:           Demo",
-"*splash.prefs.label:          Prefs",
-"*splash.help.label:           Help",
-"*fontList:                       *-helvetica-medium-r-*-*-*-120-*-*-*-iso8859-1",
-"*demoDialog*label1.fontList:     *-helvetica-medium-r-*-*-*-140-*-*-*-iso8859-1",
-"*XmTextField.fontList:             *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1",
-"*label0.fontList:                  *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1",
-"XScreenSaver*XmList.fontList:      *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1",
-"*XmDialogShell*foreground:            #000000",
-"*XmDialogShell*background:            #E5E5E5",
-"*XmDialogShell*XmTextField.foreground:        #000000",
-"*XmDialogShell*XmTextField.background:        #FFFFFF",
-"*XmDialogShell*demoList.foreground:   #000000",
-"*XmDialogShell*demoList.background:   #FFFFFF",
-"*XmDialogShell.title:         XScreenSaver",
-"*versionWarning_popup.title:  XScreenSaver Warning",
-"*demoForm_popup.title:                XScreenSaver Demo",
-"*preferencesForm_popup.title: XScreenSaver Preferences",
-"*allowShellResize:            True",
-"*autoUnmanage:                        False",
-"*demoDialog.maxWidth:         600",
-"*label1.labelString:          XScreenSaver %s",
-"*label1.label:                        XScreenSaver %s",
-"*label2.labelString: Copyright Â© 1991-1999 by Jamie Zawinski <jwz@jwz.org>",
-"*label2.label:             Copyright Â© 1991-1999 by Jamie Zawinski <jwz@jwz.org>",
-"*demoList.visibleItemCount:   10",
-"*demoList.automaticSelection: True",
-"*next.labelString:            Run Next",
-"*prev.labelString:            Run Previous",
-"*edit.labelString:            Preferences",
-"*restart.labelString:         Reinitialize",
-"*done.labelString:            Quit",
-"*preferencesLabel.labelString:        XScreenSaver Parameters",
-"*timeoutLabel.labelString:    Saver Timeout",
-"*cycleLabel.labelString:      Cycle Timeout",
-"*fadeSecondsLabel.labelString:        Fade Duration",
-"*fadeTicksLabel.labelString:  Fade Ticks",
-"*lockLabel.labelString:               Lock Timeout",
-"*passwdLabel.labelString:     Password Timeout",
-"*preferencesForm*XmTextField.columns: 8",
-"*verboseToggle.labelString:   Verbose",
-"*cmapToggle.labelString:      Install Colormap",
-"*fadeToggle.labelString:      Fade Colormap",
-"*unfadeToggle.labelString:    Unfade Colormap",
-"*lockToggle.labelString:      Require Password",
-"*preferencesDone.labelString: OK",
-"*preferencesCancel.labelString:       Cancel",
-"XScreenSaver*dragInitiatorProtocolStyle: DRAG_NONE",
-"XScreenSaver*dragReceiverProtocolStyle:  DRAG_NONE",
-"*demo_dialog.title:           XScreenSaver Demo",
-"*preferences_dialog.title:    XScreenSaver Preferences",
-"*warning_dialog.title:                XScreenSaver Warning",
-"*demo_dialog.geometry:                =640x400",
-"*demo_dialog*font:            *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1",
-"*preferences_dialog*font:     *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1",
-"*demo_dialog*label1.font:     *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1",
-"*preferences_dialog*label1.font:*-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1",
-"XScreenSaver*warning_dialog*label0.font:      \
-                               *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1",
-"XScreenSaver*warning_dialog*Label.font:       \
-                               *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1",
-"XScreenSaver*warning_dialog*Command.font: \
-                               *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1",
-"XScreenSaver.demo_dialog*List.font:   \
-                               *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1",
-"XScreenSaver.demo_dialog*Text*font:   \
-                               *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1",
-"XScreenSaver.demo_dialog*foreground:                  #000000",
-"XScreenSaver.demo_dialog*background:                  #E5E5E5",
-"XScreenSaver.demo_dialog*List.background:             #FFFFFF",
-"XScreenSaver.demo_dialog*Scrollbar.background:                #D9D9D9",
-"XScreenSaver.demo_dialog*Command.background:          #D9D9D9",
-"XScreenSaver.demo_dialog*Text*background:             #FFFFFF",
-"XScreenSaver.preferences_dialog*foreground:           #000000",
-"XScreenSaver.preferences_dialog*background:           #E5E5E5",
-"XScreenSaver.preferences_dialog*Command.background:   #D9D9D9",
-"XScreenSaver.preferences_dialog*Toggle.background:    #D9D9D9",
-"XScreenSaver.preferences_dialog*Text*background:      #FFFFFF",
-"XScreenSaver.warning_dialog*foreground:                       #000000",
-"XScreenSaver.warning_dialog*background:                       #E5E5E5",
-"XScreenSaver.warning_dialog*Command.background:               #D9D9D9",
-"*preferences_dialog*Dialog.value.translations: #override\\n\
-       <Key>Return: beginning-of-line()\\n",
-"*demo_dialog*viewport.height:                 200",
-"*Form.borderWidth:                            0",
-"*Box.borderWidth:                             0",
-"*Label.borderWidth:                           0",
-"*preferences_dialog*Dialog.borderWidth:               0",
-"*demo_dialog*next.label:                      Run Next",
-"*demo_dialog*prev.label:                      Run Previous",
-"*demo_dialog*edit.label:                      Preferences",
-"*demo_dialog*restart.label:                   Reinitialize",
-"*demo_dialog*done.label:                      Quit",
-"XScreenSaver.demo_dialog*Command.internalWidth:  10",
-"XScreenSaver.demo_dialog*Command.internalHeight: 4",
-"*preferences_dialog*timeout.label:            Saver Timeout:",
-"*preferences_dialog*cycle.label:              Cycle Timeout:",
-"*preferences_dialog*fade.label:                       Fade Duration:",
-"*preferences_dialog*ticks.label:              Fade Ticks:",
-"*preferences_dialog*lockTime.label:           Lock Timeout:",
-"*preferences_dialog*passwdTime.label:         Password Timeout:",
-"XScreenSaver.preferences_dialog*Command.internalWidth:  10",
-"XScreenSaver.preferences_dialog*Command.internalHeight: 4",
-"*preferences_dialog*label1.label:             XScreenSaver Parameters",
-"*preferences_dialog*buttonbox.verbose.label:  Verbose",
-"*preferences_dialog*buttonbox.cmap.label:     Install Colormap",
-"*preferences_dialog*buttonbox.fade.label:     Fade Colormap",
-"*preferences_dialog*buttonbox.unfade.label:   Unfade Colormap",
-"*preferences_dialog*buttonbox.lock.label:     Require Password",
-"*preferences_dialog*done.label:                       Ok",
-"*preferences_dialog*cancel.label:             Cancel",
-"*warning_dialog*ok.label:                     Ok",
-"*warning_dialog*horizDistance:                        30",
-"*warning_dialog*vertDistance:                 0",
-"*warning_dialog*Label.internalWidth:          1",
-"*warning_dialog*Label.internalHeight:         0",
-"*warning_dialog*label0.horizDistance:         80",
-"*warning_dialog*label0.vertDistance:          20",
-"*warning_dialog*Command.horizDistance:                160",
-"*warning_dialog*Command.vertDistance:         20",
-"*warning_dialog*Command.internalWidth:                20",
-"*warning_dialog*Command.internalHeight:               5",
diff --git a/driver/compile_axp.com b/driver/compile_axp.com
deleted file mode 100644 (file)
index d6ed0e8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) DEMO.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) DIALOGS-XM.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) LOCK.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) PASSWD.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) STDERR.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,NO_SETUID)/INCL=([],[-],[-.UTILS]) SUBPROCS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) TIMERS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) WINDOWS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) XSCREENSAVER-COMMAND.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,NO_SETUID)/INCL=([],[-],[-.UTILS]) XSCREENSAVER.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) XSET.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-GETPWNAM.C
-$!!! CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) GETPWUID.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-HPWD.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-VALIDATE.C
diff --git a/driver/compile_decc.com b/driver/compile_decc.com
deleted file mode 100644 (file)
index d6ed0e8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) DEMO.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) DIALOGS-XM.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) LOCK.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) PASSWD.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) STDERR.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,NO_SETUID)/INCL=([],[-],[-.UTILS]) SUBPROCS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) TIMERS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) WINDOWS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) XSCREENSAVER-COMMAND.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,NO_SETUID)/INCL=([],[-],[-.UTILS]) XSCREENSAVER.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) XSET.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-GETPWNAM.C
-$!!! CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) GETPWUID.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-HPWD.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-],[-.UTILS]) VMS-VALIDATE.C
diff --git a/driver/demo.c b/driver/demo.c
deleted file mode 100644 (file)
index 10b246e..0000000
+++ /dev/null
@@ -1,1320 +0,0 @@
-/* demo.c --- implements the interactive demo-mode and options dialogs.
- * xscreensaver, Copyright (c) 1993-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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifdef HAVE_ATHENA_KLUDGE      /* don't ask */
-# undef HAVE_MOTIF
-# define HAVE_ATHENA 1
-#endif
-
-#include <stdlib.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifndef VMS
-# include <pwd.h>              /* for getpwuid() */
-#else /* VMS */
-# include "vms-pwd.h"
-#endif /* VMS */
-
-#ifdef HAVE_UNAME
-# include <sys/utsname.h>      /* for uname() */
-#endif /* HAVE_UNAME */
-
-#include <stdio.h>
-
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-
-/* We don't actually use any widget internals, but these are included
-   so that gdb will have debug info for the widgets... */
-#include <X11/IntrinsicP.h>
-#include <X11/ShellP.h>
-
-#ifdef HAVE_MOTIF
-# include <Xm/Xm.h>
-# include <Xm/Text.h>
-# include <Xm/List.h>
-# include <Xm/ToggleB.h>
-# include <Xm/MessageB.h>
-# include <Xm/LabelG.h>
-# include <Xm/RowColumn.h>
-
-#else  /* HAVE_ATHENA */
-  /* Athena demo code contributed by Jon A. Christopher <jac8782@tamu.edu> */
-  /* Copyright 1997, with the same permissions as above. */
-# include <X11/Shell.h>
-# include <X11/Xaw/Form.h>
-# include <X11/Xaw/Box.h>
-# include <X11/Xaw/List.h>
-# include <X11/Xaw/Command.h>
-# include <X11/Xaw/Toggle.h>
-# include <X11/Xaw/Viewport.h>
-# include <X11/Xaw/Dialog.h>
-# include <X11/Xaw/Scrollbar.h>
-# include <X11/Xaw/Text.h>
-#endif /* HAVE_ATHENA */
-
-#include "version.h"
-#include "prefs.h"
-#include "resources.h"         /* for parse_time() */
-#include "visual.h"            /* for has_writable_cells() */
-#include "remote.h"            /* for xscreensaver_command() */
-#include "usleep.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-
-char *progname = 0;
-char *progclass = "XScreenSaver";
-XrmDatabase db;
-
-typedef struct {
-  saver_preferences *a, *b;
-} prefs_pair;
-
-
-char *blurb (void) { return progname; }
-
-static void run_hack (Display *dpy, int n);
-
-#ifdef HAVE_ATHENA
-static saver_preferences *global_prefs_kludge = 0;    /* I hate C so much... */
-#endif /* HAVE_ATHENA */
-
-static char *short_version = 0;
-
-Atom XA_VROOT;
-Atom XA_SCREENSAVER, XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_VERSION;
-Atom XA_SCREENSAVER_TIME, XA_SCREENSAVER_ID, XA_SELECT, XA_DEMO, XA_RESTART;
-
-extern void create_demo_dialog (Widget, Visual *, Colormap);
-extern void create_preferences_dialog (Widget, Visual *, Colormap);
-
-extern Widget demo_dialog;
-extern Widget label1;
-extern Widget text_line;
-extern Widget demo_form;
-extern Widget demo_list;
-extern Widget next, prev, done, restart, edit;
-
-extern Widget preferences_dialog;
-extern Widget preferences_form;
-extern Widget prefs_done, prefs_cancel;
-extern Widget timeout_text, cycle_text, fade_text, fade_ticks_text;
-extern Widget lock_timeout_text, passwd_timeout_text;
-extern Widget verbose_toggle, install_cmap_toggle, fade_toggle, unfade_toggle,
-  lock_toggle;
-
-
-#ifdef HAVE_MOTIF
-
-# define set_toggle_button_state(toggle,state) \
-  XmToggleButtonSetState ((toggle), (state), True)
-# define set_text_string(text_widget,string) \
-  XmTextSetString ((text_widget), (string))
-# define add_button_callback(button,cb,arg) \
-  XtAddCallback ((button), XmNactivateCallback, (cb), (arg))
-# define add_toggle_callback(button,cb,arg) \
-  XtAddCallback ((button), XmNvalueChangedCallback, (cb), (arg))
-# define add_text_callback add_toggle_callback
-
-#else  /* HAVE_ATHENA */
-
-# define set_toggle_button_state(toggle,state) \
-  XtVaSetValues((toggle), XtNstate, (state),  0)
-# define set_text_string(text_widget,string) \
-  XtVaSetValues ((text_widget), XtNvalue, (string), 0)
-# define add_button_callback(button,cb,arg) \
-  XtAddCallback ((button), XtNcallback, (cb), (arg))
-# define add_toggle_callback add_button_callback
-# define add_text_callback(b,c,a) ERROR!
-
-#endif /* HAVE_ATHENA */
-
-
-#define disable_widget(widget) \
-  XtVaSetValues((widget), XtNsensitive, False, 0)
-
-
-static char *
-get_text_string (Widget text_widget)
-{
-#ifdef HAVE_MOTIF
-  return XmTextGetString (text_widget);
-#else  /* HAVE_ATHENA */
-  char *string = 0;
-  if (XtIsSubclass(text_widget, textWidgetClass))
-    XtVaGetValues (text_widget, XtNstring, &string, 0);
-  else if (XtIsSubclass(text_widget, dialogWidgetClass))
-    XtVaGetValues (text_widget, XtNvalue, &string, 0);
-  else
-    string = 0;
-
-  return string;
-#endif /* HAVE_ATHENA */
-}
-
-static char *
-get_label_string (Widget label_widget)
-{
-#ifdef HAVE_MOTIF
-  char *label = 0;
-  XmString xm_label = 0;
-  XtVaGetValues (label_widget, XmNlabelString, &xm_label, 0);
-  if (!xm_label)
-    return 0;
-  XmStringGetLtoR (xm_label, XmSTRING_DEFAULT_CHARSET, &label);
-  return label;
-#else  /* HAVE_ATHENA */
-  char *label = 0;
-  XtVaGetValues (label_widget, XtNlabel, &label, 0);
-  return (label ? strdup(label) : 0);
-#endif /* HAVE_ATHENA */
-}
-
-
-static void
-set_label_string (Widget label_widget, char *string)
-{
-#ifdef HAVE_MOTIF
-  XmString xm_string = XmStringCreate (string, XmSTRING_DEFAULT_CHARSET);
-  XtVaSetValues (label_widget, XmNlabelString, xm_string, 0);
-  XmStringFree (xm_string);
-#else  /* HAVE_ATHENA */
-  XtVaSetValues (label_widget, XtNlabel, string, 0);
-#endif /* HAVE_ATHENA */
-}
-
-
-static void
-format_into_label (Widget label, const char *arg)
-{
-  char *text = get_label_string (label);
-  char *buf = (char *) malloc ((text ? strlen(text) : 0) + strlen(arg) + 100);
-
-  if (!text || !strcmp (text, XtName (label)))
-      strcpy (buf, "ERROR: RESOURCES ARE NOT INSTALLED CORRECTLY");
-    else
-      sprintf (buf, text, arg);
-
-    set_label_string (label, buf);
-    free (buf);
-    XtFree (text);
-}
-
-
-/* Why this behavior isn't automatic in *either* toolkit, I'll never know.
- */
-static void
-ensure_selected_item_visible (Widget list)
-{
-#ifdef HAVE_MOTIF
-  int *pos_list = 0;
-  int pos_count = 0;
-  if (XmListGetSelectedPos (list, &pos_list, &pos_count) && pos_count > 0)
-    {
-      int top = -2;
-      int visible = 0;
-      XtVaGetValues (list,
-                    XmNtopItemPosition, &top,
-                    XmNvisibleItemCount, &visible,
-                    0);
-      if (pos_list[0] >= top + visible)
-       {
-         int pos = pos_list[0] - visible + 1;
-         if (pos < 0) pos = 0;
-         XmListSetPos (list, pos);
-       }
-      else if (pos_list[0] < top)
-       {
-         XmListSetPos (list, pos_list[0]);
-       }
-    }
-  if (pos_list)
-    XtFree ((char *) pos_list);
-
-#else  /* HAVE_ATHENA */
-# ifdef HAVE_XawViewportSetCoordinates
-
-  int margin = 16;     /* should be line height or something. */
-  int count = 0;
-  int pos;
-  Dimension list_h = 0, vp_h = 0;
-  Dimension top_margin = 4;  /* I don't know where this value comes from */
-  Position vp_x = 0, vp_y = 0, current_y;
-  double cratio;
-  Widget viewport = XtParent(demo_list);
-  Widget sb = (viewport ? XtNameToWidget(viewport, "*vertical") : 0);
-  float sb_top = 0, sb_size = 0;
-  XawListReturnStruct *current = XawListShowCurrent(demo_list);
-  if (!current || !sb) return;
-
-  XtVaGetValues(demo_list,
-               XtNnumberStrings, &count,
-               XtNheight, &list_h,
-               0);
-  if (count < 2 || list_h < 10) return;
-
-  XtVaGetValues(viewport, XtNheight, &vp_h, XtNx, &vp_x, XtNy, &vp_y, 0);
-  if (vp_h < 10) return;
-
-  XtVaGetValues(sb, XtNtopOfThumb, &sb_top, XtNshown, &sb_size, 0);
-  if (sb_size <= 0) return;
-
-  pos = current->list_index;
-  cratio = ((double) pos)  / ((double) count);
-  current_y = (cratio * list_h);
-
-  if (cratio < sb_top ||
-      cratio > sb_top + sb_size)
-    {
-      if (cratio < sb_top)
-       current_y -= (vp_h - margin - margin);
-      else
-       current_y -= margin;
-
-      if ((long)current_y >= (long) list_h)
-       current_y = (Position) ((long)list_h - (long)vp_h);
-
-      if ((long)current_y < (long)top_margin)
-       current_y = (Position)top_margin;
-
-      XawViewportSetCoordinates (viewport, vp_x, current_y);
-    }
-# endif /* HAVE_XawViewportSetCoordinates */
-#endif /* HAVE_ATHENA */
-}
-
-
-/* Callback for the text area:
-   - note the text the user has entered;
-   - change the corresponding element in `screenhacks';
-   - write the .xscreensaver file;
-   - tell the xscreensaver daemon to run that hack.
- */
-static void
-text_cb (Widget text_widget, XtPointer client_data, XtPointer call_data)
-{
-  Display *dpy = XtDisplay (text_widget);
-  saver_preferences *p = (saver_preferences *) client_data;
-  char *new_text = get_text_string (text_widget);
-
-  int hack_number = -1;                /* 0-based */
-
-#ifdef HAVE_ATHENA
-  XawListReturnStruct *current = XawListShowCurrent(demo_list);
-  hack_number = current->list_index;
-#else  /* HAVE_MOTIF */
-  int *pos_list = 0;
-  int pos_count = 0;
-  if (XmListGetSelectedPos (demo_list, &pos_list, &pos_count))
-    hack_number = pos_list[0] - 1;
-  if (pos_list)
-    XtFree ((char *) pos_list);
-#endif /* HAVE_MOTIF */
-
-  ensure_selected_item_visible (demo_list);
-
-  if (hack_number < 0 || hack_number >= p->screenhacks_count)
-    {
-      set_text_string (text_widget, "");
-      XBell (dpy, 0);
-    }
-  else
-    {
-fprintf(stderr, "%d:\nold: %s\nnew: %s\n",
-       hack_number, p->screenhacks [hack_number], new_text);
-
-      if (p->screenhacks [hack_number])
-       free (p->screenhacks [hack_number]);
-      p->screenhacks [hack_number] = strdup (new_text);
-
-#ifdef HAVE_MOTIF
-
-      XmListDeselectAllItems (demo_list);
-      {
-       XmString xmstr = XmStringCreate (new_text, XmSTRING_DEFAULT_CHARSET);
-       XmListReplaceItemsPos (demo_list, &xmstr, 1, hack_number+1);
-       XmStringFree (xmstr);
-      }
-      XmListSelectPos (demo_list, hack_number+1, True);
-
-#else  /* HAVE_ATHENA */
-
-      {
-       Widget vp = XtParent(demo_list);
-       Widget sb = (vp ? XtNameToWidget(vp, "*vertical") : 0);
-       Dimension list_h = 0;
-       Position vp_x = 0, vp_y = 0;
-       float sb_top = 0;
-
-       XawListUnhighlight (demo_list);
-
-       XtVaGetValues (vp, XtNx, &vp_x, 0);
-       XtVaGetValues (sb, XtNtopOfThumb, &sb_top, 0);
-       XtVaGetValues (demo_list, XtNheight, &list_h, 0);
-       vp_y = (sb_top * list_h);
-       XtVaSetValues (demo_list,
-                      XtNlist, p->screenhacks,
-                      XtNnumberStrings, p->screenhacks_count,
-                      0);
-       XawViewportSetCoordinates (vp, vp_x, vp_y);
-       XawListHighlight (demo_list, hack_number);
-      }
-
-#endif /* HAVE_ATHENA */
-
-      write_init_file (p, short_version);
-      XSync (dpy, False);
-      usleep (500000);         /* give the disk time to settle down */
-
-      run_hack (dpy, hack_number+1);
-    }
-}
-
-
-#ifdef HAVE_ATHENA
-/* Bend over backwards to make hitting Return in the text field do the
-   right thing. 
-   */
-static void text_enter (Widget w, XEvent *event, String *av, Cardinal *ac)
-{
-  text_cb (w, global_prefs_kludge, 0);   /* I hate C so much... */
-}
-
-static XtActionsRec actions[] = {{"done",      text_enter}
-                               };
-static char translations[] = ("<Key>Return:    done()\n"
-                             "<Key>Linefeed:   done()\n"
-                             "Ctrl<Key>M:      done()\n"
-                             "Ctrl<Key>J:      done()\n");
-#endif /* HAVE_ATHENA */
-
-
-/* Callback for the Run Next button.
- */
-static void
-next_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-#ifdef HAVE_ATHENA
-  XawListReturnStruct *current = XawListShowCurrent(demo_list);
-  int cnt;
-  XtVaGetValues (demo_list, XtNnumberStrings, &cnt, 0);
-  if (current->list_index == XAW_LIST_NONE ||
-      current->list_index + 1 >= cnt)
-    current->list_index = 0;
-  else
-    current->list_index++;
-  XawListHighlight(demo_list, current->list_index);
-
-  ensure_selected_item_visible (demo_list);
-  current = XawListShowCurrent(demo_list);
-  XtVaSetValues(text_line, XtNstring, current->string, 0);
-
-  run_hack (XtDisplay (button), current->list_index + 1);
-
-#else  /* HAVE_MOTIF */
-
-  saver_preferences *p = (saver_preferences *) client_data;
-  int *pos_list = 0;
-  int pos_count = 0;
-  int pos;
-  if (! XmListGetSelectedPos (demo_list, &pos_list, &pos_count))
-    {
-      pos = 1;
-      XmListDeselectAllItems (demo_list);      /* LessTif lossage */
-      XmListSelectPos (demo_list, pos, True);
-    }
-  else
-    {
-      pos = pos_list[0] + 1;
-      if (pos > p->screenhacks_count)
-       pos = 1;
-      XmListDeselectAllItems (demo_list);      /* LessTif lossage */
-      XmListSelectPos (demo_list, pos, True);
-    }
-     
-  ensure_selected_item_visible (demo_list);
-  run_hack (XtDisplay (button), pos);
-  if (pos_list)
-    XtFree ((char *) pos_list);
-
-#endif /* HAVE_MOTIF */
-}
-
-
-/* Callback for the Run Previous button.
- */
-static void
-prev_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-#ifdef HAVE_ATHENA
-  XawListReturnStruct *current = XawListShowCurrent(demo_list);
-  int cnt;
-  XtVaGetValues (demo_list, XtNnumberStrings, &cnt, 0);
-  if (current->list_index == XAW_LIST_NONE ||
-      current->list_index <= 0)
-    current->list_index = cnt-1;
-  else
-    current->list_index--;
-  XawListHighlight(demo_list, current->list_index);
-
-  ensure_selected_item_visible (demo_list);
-  current = XawListShowCurrent(demo_list);
-  XtVaSetValues(text_line, XtNstring, current->string, 0);
-
-  run_hack (XtDisplay (button), current->list_index + 1);
-
-#else  /* HAVE_MOTIF */
-
-  saver_preferences *p = (saver_preferences *) client_data;
-  int *pos_list = 0;
-  int pos_count = 0;
-  int pos;
-  if (! XmListGetSelectedPos (demo_list, &pos_list, &pos_count))
-    {
-      pos = p->screenhacks_count;
-      XmListDeselectAllItems (demo_list);      /* LessTif lossage */
-      XmListSelectPos (demo_list, pos, True);
-    }
-  else
-    {
-      pos = pos_list[0] - 1;
-      if (pos == 0)
-       pos = p->screenhacks_count;
-      XmListDeselectAllItems (demo_list);      /* LessTif lossage */
-      XmListSelectPos (demo_list, pos, True);
-    }
-     
-  ensure_selected_item_visible (demo_list);
-  run_hack (XtDisplay (button), pos);
-  if (pos_list)
-    XtFree ((char *) pos_list);
-
-#endif /* HAVE_MOTIF */
-}
-
-
-/* Callback run when a list element is double-clicked.
- */
-static void
-select_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-/*  saver_preferences *p = (saver_preferences *) client_data; */
-
-#ifdef HAVE_ATHENA
-  XawListReturnStruct *item = (XawListReturnStruct*)call_data;
-  XtVaSetValues(text_line, XtNstring, item->string, 0);
-  run_hack (XtDisplay (button), item->list_index + 1);
-
-#else  /* HAVE_MOTIF */
-  XmListCallbackStruct *lcb = (XmListCallbackStruct *) call_data;
-  char *string = 0;
-  if (lcb->item)
-    XmStringGetLtoR (lcb->item, XmSTRING_DEFAULT_CHARSET, &string);
-  set_text_string (text_line, (string ? string : ""));
-
-  if (lcb->reason == XmCR_DEFAULT_ACTION && string)
-    run_hack (XtDisplay (button), lcb->item_position);
-
-  if (string)
-    XtFree (string);
-#endif /* HAVE_MOTIF */
-}
-
-
-
-static void pop_preferences_dialog (prefs_pair *pair);
-static void make_preferences_dialog (prefs_pair *pair, Widget parent);
-
-/* Callback for the Preferences button.
- */
-static void
-preferences_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  prefs_pair *pair = (prefs_pair *) client_data;
-  Widget parent = button;
-
-  do {
-    parent = XtParent(parent);
-  } while (XtParent(parent));
-
-  if (! preferences_dialog)
-    make_preferences_dialog (pair, parent);
-  pop_preferences_dialog (pair);
-}
-
-/* Callback for the Quit button.
- */
-static void
-quit_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  /* Save here?  Right now we don't need to, because we save every time
-     the text field is edited, or the Preferences OK button is pressed.
-  */
-  exit (0);
-}
-
-
-/* Callback for the (now unused) Restart button.
- */
-static void
-restart_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  xscreensaver_command (XtDisplay (button), XA_RESTART, 0, False);
-}
-
-
-static void
-pop_up_dialog_box (Widget dialog, Widget form)
-{
-#ifdef HAVE_ATHENA
-  XtRealizeWidget (dialog);
-  XtPopup (dialog, XtGrabNone);
-#else  /* HAVE_MOTIF */
-  XtRealizeWidget (form);
-  XtManageChild (form);
-#endif /* HAVE_MOTIF */
-  XMapRaised (XtDisplay (dialog), XtWindow (dialog));
-}
-
-
-static void
-make_demo_dialog (Widget toplevel_shell, prefs_pair *pair)
-{
-  saver_preferences *p =  pair->a;
-  /* saver_preferences *p2 = pair->b; */
-
-  Widget parent = toplevel_shell;
-  char **hacks = p->screenhacks;
-
-  create_demo_dialog (parent,
-                     DefaultVisualOfScreen (XtScreen (parent)),
-                     DefaultColormapOfScreen (XtScreen (parent)));
-  format_into_label (label1, short_version);
-
-  add_button_callback (next,    next_cb,        (XtPointer) p);
-  add_button_callback (prev,    prev_cb,        (XtPointer) p);
-  add_button_callback (done,    quit_cb,        (XtPointer) p);
-  if (restart)
-    add_button_callback(restart,restart_cb,     (XtPointer) p);
-  add_button_callback (edit,    preferences_cb, (XtPointer) pair);
-
-#ifdef HAVE_MOTIF
-  XtAddCallback (demo_list, XmNbrowseSelectionCallback,
-                select_cb, (XtPointer) p);
-  XtAddCallback (demo_list, XmNdefaultActionCallback,
-                select_cb, (XtPointer) p);
-  XtAddCallback (text_line, XmNactivateCallback, text_cb, (XtPointer) p);
-
-  if (hacks)
-    for (; *hacks; hacks++)
-      {
-       XmString xmstr = XmStringCreate (*hacks, XmSTRING_DEFAULT_CHARSET);
-       XmListAddItem (demo_list, xmstr, 0);
-       XmStringFree (xmstr);
-      }
-
-#else  /* HAVE_ATHENA */
-
-  /* Hook up the text line. */
-
-  XtAppAddActions(XtWidgetToApplicationContext(text_line),
-                 actions, XtNumber(actions));
-  XtOverrideTranslations(text_line, XtParseTranslationTable(translations));
-
-
-  /* Must realize the widget before populating the list, or the dialog
-     will be as wide as the longest string.
-  */
-  XtRealizeWidget (demo_dialog);
-
-  XtVaSetValues (demo_list,
-                XtNlist, hacks,
-                XtNnumberStrings, p->screenhacks_count,
-                0);
-  XtAddCallback (demo_list, XtNcallback, select_cb, p);
-
-  /* Now that we've populated the list, make sure that the list is as
-     wide as the dialog itself.
-  */
-  {
-    Widget viewport = XtParent(demo_list);
-    Widget subform = XtParent(viewport);
-    Widget box = XtNameToWidget(demo_dialog, "*box");
-    Widget label1 = XtNameToWidget(demo_dialog, "*label1");
-    Widget label2 = XtNameToWidget(demo_dialog, "*label2");
-    Dimension x=0, y=0, w=0, h=0, bw=0, w2=0;
-    XtVaGetValues(subform,
-                 XtNwidth, &w, XtNheight, &h, XtNborderWidth, &bw, 0);
-    XtVaGetValues(box, XtNwidth, &w2, 0);
-    if (w2 != w)
-      XtResizeWidget(subform, w2, h, bw);
-
-    /* Why isn't the viewport getting centered? */
-    XtVaGetValues(viewport,
-                 XtNx, &x, XtNy, &y, XtNheight, &h, XtNborderWidth, &bw, 0);
-    XtConfigureWidget(viewport, x, y, w2-x-x, h, bw);
-
-    /* And the text line, too. */
-    XtVaGetValues(text_line,
-                 XtNwidth, &w, XtNheight, &h, XtNborderWidth, &bw, 0);
-    XtVaGetValues(viewport, XtNwidth, &w2, 0);
-    if (w2 != w)
-      XtResizeWidget(text_line, w2, h, bw);
-
-    /* And the labels too. */
-    XtVaGetValues(label1,
-                 XtNwidth, &w, XtNheight, &h, XtNborderWidth, &bw, 0);
-    if (w2 != w)
-      XtResizeWidget(label1, w2, h, bw);
-
-    XtVaGetValues(label2,
-                 XtNwidth, &w, XtNheight, &h, XtNborderWidth, &bw, 0);
-    if (w2 != w)
-      XtResizeWidget(label2, w2, h, bw);
-
-  }
-
-#endif /* HAVE_ATHENA */
-
-  pop_up_dialog_box(demo_dialog, demo_form);
-
-#ifdef HAVE_ATHENA
-  /* For Athena, have to do this after the dialog is managed. */
-  ensure_selected_item_visible (demo_list);
-#endif /* HAVE_ATHENA */
-}
-
-\f
-/* the Preferences dialog
- */
-
-/* Helper for the text fields that contain time specifications:
-   this parses the text, and does error checking.
- */
-static void 
-hack_time_text (Display *dpy, char *line, Time *store, Bool sec_p)
-{
-  if (*line)
-    {
-      int value;
-      value = parse_time (line, sec_p, True);
-      value *= 1000;   /* Time measures in microseconds */
-      if (value < 0)
-       /*XBell (dpy, 0)*/;
-      else
-       *store = value;
-    }
-}
-
-
-/* Callback for text fields that hold a time that default to seconds,
-   when not fully spelled out.  client_data is an Time* where the value goes.
- */
-static void
-prefs_sec_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  hack_time_text (XtDisplay (button), get_text_string (button),
-               (Time *) client_data, True);
-}
-
-
-/* Callback for text fields that hold a time that default to minutes,
-   when not fully spelled out.  client_data is an Time* where the value goes.
- */
-static void
-prefs_min_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  hack_time_text (XtDisplay (button), get_text_string (button),
-               (Time *) client_data, False);
-}
-
-
-/* Callback for text fields that hold an integer value.
-   client_data is an int* where the value goes.
- */
-static void
-prefs_int_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  char *line = get_text_string (button);
-  int *store = (int *) client_data;
-  unsigned int value;
-  char c;
-  if (! *line)
-    ;
-  else if (sscanf (line, "%u%c", &value, &c) != 1)
-    XBell (XtDisplay (button), 0);
-  else
-    *store = value;
-}
-
-/* Callback for toggle buttons.  client_data is an Bool* where the value goes.
- */
-static void
-prefs_bool_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  Bool *store = (Bool *) client_data;
-#ifdef HAVE_MOTIF
-  *store = ((XmToggleButtonCallbackStruct *) call_data)->set;
-#else /* HAVE_ATHENA */
-  Boolean state = FALSE;
-  XtVaGetValues (button, XtNstate, &state, 0);
-  *store = state;
-#endif /* HAVE_ATHENA */
-}
-
-
-/* Callback for the Cancel button on the Preferences dialog.
- */
-static void
-prefs_cancel_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  XtDestroyWidget (preferences_dialog);
-  preferences_dialog = 0;
-  XMapRaised (XtDisplay (demo_dialog), XtWindow (demo_dialog));
-}
-
-
-/* Callback for the OK button on the Preferences dialog.
- */
-static void
-prefs_ok_cb (Widget button, XtPointer client_data, XtPointer call_data)
-{
-  prefs_pair *pair = (prefs_pair *) client_data;
-  saver_preferences *p =  pair->a;
-  saver_preferences *p2 = pair->b;
-
-  prefs_cancel_cb (button, 0, call_data);
-
-#ifdef HAVE_ATHENA
-  /* Athena doesn't let us put callbacks on these widgets, so run
-     all the callbacks by hand when OK is pressed. */
-  prefs_min_cb (timeout_text,        (XtPointer) &p2->timeout,        0);
-  prefs_min_cb (cycle_text,          (XtPointer) &p2->cycle,          0);
-  prefs_sec_cb (fade_text,           (XtPointer) &p2->fade_seconds,   0);
-  prefs_int_cb (fade_ticks_text,     (XtPointer) &p2->fade_ticks,     0);
-  prefs_min_cb (lock_timeout_text,   (XtPointer) &p2->lock_timeout,   0);
-  prefs_sec_cb (passwd_timeout_text, (XtPointer) &p2->passwd_timeout, 0);
-#endif /* HAVE_ATHENA */
-
-  p->timeout       = p2->timeout;
-  p->cycle         = p2->cycle;
-  p->lock_timeout   = p2->lock_timeout;
-  p->passwd_timeout = p2->passwd_timeout;
-  p->fade_seconds   = p2->fade_seconds;
-  p->fade_ticks            = p2->fade_ticks;
-  p->verbose_p     = p2->verbose_p;
-  p->install_cmap_p = p2->install_cmap_p;
-  p->fade_p        = p2->fade_p;
-  p->unfade_p      = p2->unfade_p;
-  p->lock_p        = p2->lock_p;
-
-  write_init_file (p, short_version);
-}
-
-
-static void
-make_preferences_dialog (prefs_pair *pair, Widget parent)
-{
-  saver_preferences *p =  pair->a;
-  saver_preferences *p2 = pair->b;
-
-  Screen *screen = XtScreen (parent);
-  Display *dpy = XtDisplay (parent);
-
-  *p2 = *p;    /* copy all slots of p into p2. */
-
-  create_preferences_dialog (parent,
-                            DefaultVisualOfScreen (screen),
-                            DefaultColormapOfScreen (screen));
-
-  add_button_callback (prefs_done,   prefs_ok_cb,     (XtPointer) pair);
-  add_button_callback (prefs_cancel, prefs_cancel_cb, 0);
-
-#define CB(widget,type,slot) \
-       add_text_callback ((widget), (type), (XtPointer) (slot))
-#define CBT(widget,type,slot) \
-       add_toggle_callback ((widget), (type), (XtPointer) (slot))
-
-#ifdef HAVE_MOTIF
-  /* When using Athena widgets, we can't set callbacks for these,
-     so in that case, we run them by hand when "OK" is pressed. */
-  CB (timeout_text,            prefs_min_cb,  &p2->timeout);
-  CB (cycle_text,              prefs_min_cb,  &p2->cycle);
-  CB (fade_text,               prefs_sec_cb,  &p2->fade_seconds);
-  CB (fade_ticks_text,         prefs_int_cb,  &p2->fade_ticks);
-  CB (lock_timeout_text,       prefs_min_cb,  &p2->lock_timeout);
-  CB (passwd_timeout_text,     prefs_sec_cb,  &p2->passwd_timeout);
-#endif /* HAVE_MOTIF */
-
-  CBT (verbose_toggle,         prefs_bool_cb, &p2->verbose_p);
-  CBT (install_cmap_toggle,    prefs_bool_cb, &p2->install_cmap_p);
-  CBT (fade_toggle,            prefs_bool_cb, &p2->fade_p);
-  CBT (unfade_toggle,          prefs_bool_cb, &p2->unfade_p);
-  CBT (lock_toggle,            prefs_bool_cb, &p2->lock_p);
-#undef CB
-#undef CBT
-
-  {
-    Bool found_any_writable_cells = False;
-    int nscreens = ScreenCount(dpy);
-    int i;
-    for (i = 0; i < nscreens; i++)
-      {
-       Screen *s = ScreenOfDisplay (dpy, i);
-       if (has_writable_cells (s, DefaultVisualOfScreen (s)))
-         {
-           found_any_writable_cells = True;
-           break;
-         }
-      }
-
-    if (! found_any_writable_cells)    /* fading isn't possible */
-      {
-       disable_widget (fade_text);
-       disable_widget (fade_ticks_text);
-       disable_widget (install_cmap_toggle);
-       disable_widget (fade_toggle);
-       disable_widget (unfade_toggle);
-      }
-  }
-}
-
-
-/* Formats a `Time' into "H:MM:SS".  (Time is microseconds.)
- */
-static void
-format_time (char *buf, Time time)
-{
-  int s = time / 1000;
-  unsigned int h = 0, m = 0;
-  if (s >= 60)
-    {
-      m += (s / 60);
-      s %= 60;
-    }
-  if (m >= 60)
-    {
-      h += (m / 60);
-      m %= 60;
-    }
-  sprintf (buf, "%u:%02u:%02u", h, m, s);
-}
-
-
-static void
-pop_preferences_dialog (prefs_pair *pair)
-{
-  /* saver_preferences *p =  pair->a; */
-  saver_preferences *p2 = pair->b;
-  char s[100];
-
-  format_time (s, p2->timeout);        set_text_string(timeout_text, s);
-  format_time (s, p2->cycle);          set_text_string(cycle_text, s);
-  format_time (s, p2->lock_timeout);   set_text_string(lock_timeout_text, s);
-  format_time (s, p2->passwd_timeout); set_text_string(passwd_timeout_text, s);
-  format_time (s, p2->fade_seconds);   set_text_string(fade_text, s);
-  sprintf (s, "%u", p2->fade_ticks);   set_text_string(fade_ticks_text, s);
-
-  set_toggle_button_state (verbose_toggle,     p2->verbose_p);
-  set_toggle_button_state (install_cmap_toggle, p2->install_cmap_p);
-  set_toggle_button_state (fade_toggle,                p2->fade_p);
-  set_toggle_button_state (unfade_toggle,      p2->unfade_p);
-  set_toggle_button_state (lock_toggle,                p2->lock_p);
-
-  pop_up_dialog_box (preferences_dialog, preferences_form);
-}
-
-
-static void
-run_hack (Display *dpy, int n)
-{
-  if (n <= 0) abort();
-  xscreensaver_command (dpy, XA_DEMO, n, False);
-}
-
-
-static void
-warning_dialog_dismiss_cb (Widget button, XtPointer client_data,
-                          XtPointer call_data)
-{
-  Widget shell = (Widget) client_data;
-  XtDestroyWidget (shell);
-}
-
-static void
-warning_dialog (Widget parent, const char *message)
-{
-  char *msg = strdup (message);
-  char *head;
-
-  Widget dialog = 0;
-  Widget label = 0;
-  Widget ok = 0;
-  int i = 0;
-
-#ifdef HAVE_MOTIF
-
-  Widget w;
-  Widget container;
-  XmString xmstr;
-  Arg av[10];
-  int ac = 0;
-
-  ac = 0;
-  dialog = XmCreateWarningDialog (parent, "versionWarning", av, ac);
-
-  w = XmMessageBoxGetChild (dialog, XmDIALOG_MESSAGE_LABEL);
-  if (w) XtUnmanageChild (w);
-  w = XmMessageBoxGetChild (dialog, XmDIALOG_CANCEL_BUTTON);
-  if (w) XtUnmanageChild (w);
-  w = XmMessageBoxGetChild (dialog, XmDIALOG_HELP_BUTTON);
-  if (w) XtUnmanageChild (w);
-
-  ok = XmMessageBoxGetChild (dialog, XmDIALOG_OK_BUTTON);
-
-  ac = 0;
-  XtSetArg (av[ac], XmNnumColumns, 1); ac++;
-  XtSetArg (av[ac], XmNorientation, XmVERTICAL); ac++;
-  XtSetArg (av[ac], XmNpacking, XmPACK_COLUMN); ac++;
-  XtSetArg (av[ac], XmNrowColumnType, XmWORK_AREA); ac++;
-  XtSetArg (av[ac], XmNspacing, 0); ac++;
-  container = XmCreateRowColumn (dialog, "container", av, ac);
-
-#else  /* HAVE_ATHENA */
-
-  Widget form;
-  dialog = XtVaCreatePopupShell("warning_dialog", transientShellWidgetClass,
-                               parent, 0);
-  form = XtVaCreateManagedWidget("warning_form", formWidgetClass, dialog, 0);
-
-#endif /* HAVE_ATHENA */
-
-  head = msg;
-  while (head)
-    {
-      char name[20];
-      char *s = strchr (head, '\n');
-      if (s) *s = 0;
-
-      sprintf (name, "label%d", i++);
-
-#ifdef HAVE_MOTIF
-      xmstr = XmStringCreate (head, XmSTRING_DEFAULT_CHARSET);
-      ac = 0;
-      XtSetArg (av[ac], XmNlabelString, xmstr); ac++;
-      label = XmCreateLabelGadget (container, name, av, ac);
-      XtManageChild (label);
-      XmStringFree (xmstr);
-#else  /* HAVE_ATHENA */
-      
-      label = XtVaCreateManagedWidget (name, labelWidgetClass,
-                                      form,
-                                      XtNleft, XtChainLeft,
-                                      XtNright, XtChainRight,
-                                      XtNlabel, head,
-                                      (label ? XtNfromVert : XtNtop),
-                                      (label ? label : XtChainTop),
-                                      0);
-
-#endif /* HAVE_ATHENA */
-
-      if (s)
-       head = s+1;
-      else
-       head = 0;
-    }
-
-#ifdef HAVE_MOTIF
-
-  XtManageChild (container);
-  XtRealizeWidget (dialog);
-  XtManageChild (dialog);
-
-#else  /* HAVE_ATHENA */
-
-  ok = XtVaCreateManagedWidget ("ok", commandWidgetClass, form,
-                               XtNleft, XtChainLeft,
-                               XtNbottom, XtChainBottom,
-                               XtNfromVert, label,
-                               0);
-
-  XtRealizeWidget (dialog);
-  XtPopup (dialog, XtGrabNone);
-
-#endif /* HAVE_ATHENA */
-
-  add_button_callback (ok, warning_dialog_dismiss_cb, dialog);
-
-  free (msg);
-}
-
-
-\f
-/* The main demo-mode command loop.
- */
-
-#if 0
-static Bool
-mapper (XrmDatabase *db, XrmBindingList bindings, XrmQuarkList quarks,
-       XrmRepresentation *type, XrmValue *value, XPointer closure)
-{
-  int i;
-  for (i = 0; quarks[i]; i++)
-    {
-      if (bindings[i] == XrmBindTightly)
-       fprintf (stderr, (i == 0 ? "" : "."));
-      else if (bindings[i] == XrmBindLoosely)
-       fprintf (stderr, "*");
-      else
-       fprintf (stderr, " ??? ");
-      fprintf(stderr, "%s", XrmQuarkToString (quarks[i]));
-    }
-
-  fprintf (stderr, ": %s\n", (char *) value->addr);
-
-  return False;
-}
-#endif
-
-static void
-the_network_is_not_the_computer (Widget parent)
-{
-  Display *dpy = XtDisplay (parent);
-  char *rversion, *ruser, *rhost;
-  char *luser, *lhost;
-  char *msg = 0;
-  struct passwd *p = getpwuid (getuid ());
-  const char *d = DisplayString (dpy);
-
-# if defined(HAVE_UNAME)
-  struct utsname uts;
-  if (uname (&uts) < 0)
-    lhost = "<UNKNOWN>";
-  else
-    lhost = uts.nodename;
-# elif defined(VMS)
-  strcpy (lhost, getenv("SYS$NODE"));
-# else  /* !HAVE_UNAME && !VMS */
-  strcat (lhost, "<UNKNOWN>");
-# endif /* !HAVE_UNAME && !VMS */
-
-  if (p && p->pw_name)
-    luser = p->pw_name;
-  else
-    luser = "???";
-
-  server_xscreensaver_version (dpy, &rversion, &ruser, &rhost);
-
-  /* Make a buffer that's big enough for a number of copies of all the
-     strings, plus some. */
-  msg = (char *) malloc (10 * ((rversion ? strlen(rversion) : 0) +
-                              (ruser ? strlen(ruser) : 0) +
-                              (rhost ? strlen(rhost) : 0) +
-                              strlen(lhost) +
-                              strlen(luser) +
-                              strlen(d) +
-                              30));
-  *msg = 0;
-
-  if (!rversion || !*rversion)
-    {
-      sprintf (msg,
-              "Warning:\n\n"
-              "xscreensaver doesn't seem to be running on display \"%s\".",
-              d);
-    }
-  else if (p && ruser && *ruser && !!strcmp (ruser, p->pw_name))
-    {
-      /* Warn that the two processes are running as different users.
-       */
-      sprintf(msg,
-              "Warning:\n\n"
-             "%s is running as user \"%s\" on host \"%s\".\n"
-             "But the xscreensaver managing display \"%s\"\n"
-             "is running as user \"%s\" on host \"%s\".\n"
-             "\n"
-             "Since they are different users, they won't be reading/writing\n"
-             "the same ~/.xscreensaver file, so %s isn't\n"
-             "going to work right.\n"
-             "\n"
-             "Either re-run %s as \"%s\", or re-run\n"
-             "xscreensaver as \"%s\".\n",
-             progname, luser, lhost,
-             d,
-             (ruser ? ruser : "???"), (rhost ? rhost : "???"),
-             progname,
-             progname, (ruser ? ruser : "???"),
-             luser);
-    }
-  else if (rhost && *rhost && !!strcmp (rhost, lhost))
-    {
-      /* Warn that the two processes are running on different hosts.
-       */
-      sprintf (msg,
-              "Warning:\n\n"
-              "%s is running as user \"%s\" on host \"%s\".\n"
-              "But the xscreensaver managing display \"%s\"\n"
-              "is running as user \"%s\" on host \"%s\".\n"
-              "\n"
-              "If those two machines don't share a file system (that is,\n"
-              "if they don't see the same ~%s/.xscreensaver file) then\n"
-              "%s won't work right.",
-              progname, luser, lhost,
-              d,
-              (ruser ? ruser : "???"), (rhost ? rhost : "???"),
-              luser,
-              progname);
-    }
-  else if (!!strcmp (rversion, short_version))
-    {
-      /* Warn that the version numbers don't match.
-       */
-      sprintf (msg,
-              "Warning:\n\n"
-              "This is %s version %s.\n"
-              "But the xscreensaver managing display \"%s\"\n"
-              "is version %s.  This could cause problems.",
-              progname, short_version,
-              d,
-              rversion);
-    }
-
-
-  if (*msg)
-    warning_dialog (parent, msg);
-
-  free (msg);
-}
-
-
-static char *defaults[] = {
-#include "XScreenSaver_ad.h"
- 0
-};
-
-int
-main (int argc, char **argv)
-{
-  XtAppContext app;
-  prefs_pair Pair, *pair;
-  saver_preferences P, P2, *p, *p2;
-  Bool prefs = False;
-  int i;
-  Display *dpy;
-  Widget toplevel_shell;
-  char *real_progname = argv[0];
-  char *s;
-
-  s = strrchr (real_progname, '/');
-  if (s) real_progname = s+1;
-
-  p = &P;
-  p2 = &P2;
-  pair = &Pair;
-  pair->a = p;
-  pair->b = p2;
-  memset (p,  0, sizeof (*p));
-  memset (p2, 0, sizeof (*p2));
-
-  /* We must read exactly the same resources as xscreensaver.
-     That means we must have both the same progclass *and* progname,
-     at least as far as the resource database is concerned.  So,
-     put "xscreensaver" in argv[0] while initializing Xt.
-   */
-  argv[0] = "xscreensaver";
-
-  toplevel_shell = XtAppInitialize (&app, progclass, 0, 0, &argc, argv,
-                                   defaults, 0, 0);
-  dpy = XtDisplay (toplevel_shell);
-  db = XtDatabase (dpy);
-  XtGetApplicationNameAndClass (dpy, &progname, &progclass);
-
-  for (i = 1; i < argc; i++)
-    {
-      char *s = argv[i];
-      if (s[0] == '-' && s[1] == '-')
-       s++;
-      if (!strcmp (s, "-prefs"))
-       prefs = True;
-      else
-       {
-         fprintf (stderr, "usage: %s [ -display dpy-string ] [ -prefs ]\n",
-                  real_progname);
-         exit (1);
-       }
-    }
-
-  short_version = (char *) malloc (5);
-  memcpy (short_version, screensaver_id + 17, 4);
-  short_version [4] = 0;
-
-  p->db = db;
-  load_init_file (p);
-  *p2 = *p;
-
-
-  /* Now that Xt has been initialized, we can set our `progname' variable
-     to something that makes more sense (like our "real" argv[0].)
-   */
-  progname = real_progname;
-
-
-#ifdef HAVE_ATHENA
-  global_prefs_kludge = p;     /* I hate C so much... */
-#endif /* HAVE_ATHENA */
-
-#if 0
-  {
-    XrmName name = { 0 };
-    XrmClass class = { 0 };
-    int count = 0;
-    XrmEnumerateDatabase (db, &name, &class, XrmEnumAllLevels, mapper,
-                         (XtPointer) &count);
-  }
-#endif
-
-
-  XA_VROOT = XInternAtom (dpy, "__SWM_VROOT", False);
-  XA_SCREENSAVER = XInternAtom (dpy, "SCREENSAVER", False);
-  XA_SCREENSAVER_VERSION = XInternAtom (dpy, "_SCREENSAVER_VERSION",False);
-  XA_SCREENSAVER_TIME = XInternAtom (dpy, "_SCREENSAVER_TIME", False);
-  XA_SCREENSAVER_ID = XInternAtom (dpy, "_SCREENSAVER_ID", False);
-  XA_SCREENSAVER_RESPONSE = XInternAtom (dpy, "_SCREENSAVER_RESPONSE", False);
-  XA_SELECT = XInternAtom (dpy, "SELECT", False);
-  XA_DEMO = XInternAtom (dpy, "DEMO", False);
-  XA_RESTART = XInternAtom (dpy, "RESTART", False);
-
-  make_demo_dialog (toplevel_shell, pair);
-
-  if (prefs)
-    {
-      make_preferences_dialog (pair, toplevel_shell);
-      pop_preferences_dialog (pair);
-    }
-
-  the_network_is_not_the_computer (preferences_dialog
-                                  ? preferences_dialog
-                                  : demo_dialog);
-
-  XtAppMainLoop(app);
-  exit (0);
-}
diff --git a/driver/dialogs-Xaw.c b/driver/dialogs-Xaw.c
deleted file mode 100644 (file)
index 757a91e..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-/* dialogs-Xaw.c --- Athena widgets for demo, options, and password dialogs.
- * xscreensaver, Copyright (c) 1997, 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.
- *
- * Most of this code contributed by Jon A. Christopher <jac8782@tamu.edu>
- * Copyright 1997, with the same permissions as above.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/Box.h>
-#include <X11/Xaw/List.h>
-#include <X11/Xaw/Command.h>
-#include <X11/Xaw/Toggle.h>
-#include <X11/Xaw/Viewport.h>
-#include <X11/Xaw/Dialog.h>
-#include <X11/Xaw/AsciiText.h>
-
-#include <stdio.h>
-
-#include "visual.h"    /* for visual_depth() */
-
-Widget preferences_dialog;
-Widget preferences_form;
-Widget timeout_text;
-Widget cycle_text;
-Widget fade_text;
-Widget fade_ticks_text;
-Widget lock_timeout_text;
-Widget passwd_timeout_text;
-Widget verbose_toggle;
-Widget install_cmap_toggle;
-Widget fade_toggle;
-Widget unfade_toggle;
-Widget lock_toggle;
-Widget prefs_done;
-Widget prefs_cancel;
-
-Widget demo_dialog;
-Widget demo_form;
-Widget label1;
-/*Widget label2;*/
-/*Widget text_area;*/
-Widget demo_list;
-Widget text_line;
-/*Widget vline;*/
-Widget next;
-Widget prev;
-Widget edit;
-Widget done;
-Widget restart;
-/*Widget spacer;*/
-
-static Widget buttonbox, textbox, okbox;
-
-
-void
-create_preferences_dialog(Widget parent, Visual *visual, Colormap colormap)
-{
-  Widget rlabel;
-  int depth = visual_depth(XtScreen(parent), visual);
-
-  preferences_dialog = 
-    XtVaCreatePopupShell("preferences_dialog", transientShellWidgetClass, parent,
-                        XtNvisual, visual,
-                        XtNcolormap, colormap,
-                        XtNdepth, depth,
-                        NULL);
-
-  preferences_form =
-    XtVaCreateManagedWidget("preferences_form", formWidgetClass,
-                           preferences_dialog,
-                        XtNvisual, visual,
-                        XtNcolormap, colormap,
-                        XtNdepth, depth,
-                           NULL);
-
-  rlabel = XtVaCreateManagedWidget("label1", labelWidgetClass, preferences_form,
-                                  XtNleft, XtChainLeft,
-                                  XtNright, XtChainRight,
-                                  XtNtop, XtChainTop,
-                                  NULL);
-
-  textbox=
-    XtVaCreateManagedWidget("textbox", formWidgetClass, preferences_form,
-                           XtNleft, XtChainLeft,
-                           XtNfromVert, rlabel,
-                           NULL);
-  okbox=
-    XtVaCreateManagedWidget("textbox", boxWidgetClass, preferences_form,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNfromVert, textbox,
-                           XtNorientation, XtorientHorizontal,
-                           NULL);
-  timeout_text=
-    XtVaCreateManagedWidget("timeout", dialogWidgetClass, textbox,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNtop, XtChainTop,
-                           NULL);
-  cycle_text=
-    XtVaCreateManagedWidget("cycle", dialogWidgetClass, textbox,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNfromVert, timeout_text,
-                           NULL);
-  fade_text=
-    XtVaCreateManagedWidget("fade", dialogWidgetClass, textbox,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNfromVert, cycle_text,
-                           NULL);
-
-  fade_ticks_text =
-    XtVaCreateManagedWidget("ticks", dialogWidgetClass, textbox,
-                           XtNtop, XtChainTop,
-                           XtNright, XtChainRight,
-                           XtNfromHoriz, timeout_text,
-                           NULL);
-
-  lock_timeout_text =
-    XtVaCreateManagedWidget("lockTime", dialogWidgetClass, textbox,
-                           XtNfromVert, fade_ticks_text,
-                           XtNright, XtChainRight,
-                           XtNfromHoriz, cycle_text,
-                           NULL);
-
-  passwd_timeout_text =
-    XtVaCreateManagedWidget("passwdTime", dialogWidgetClass, textbox,
-                           XtNfromVert, lock_timeout_text,
-                           XtNright, XtChainRight,
-                           XtNfromHoriz, fade_text,
-                           NULL);
-
-  buttonbox=
-    XtVaCreateManagedWidget("buttonbox", boxWidgetClass, preferences_form,
-                           XtNfromVert, rlabel,
-                           XtNfromHoriz, textbox,
-                           XtNright, XtChainRight,
-                           XtNorientation, XtorientVertical,
-                           NULL);
-  verbose_toggle =
-    XtVaCreateManagedWidget("verbose", toggleWidgetClass, buttonbox,
-                           NULL);
-  install_cmap_toggle =
-    XtVaCreateManagedWidget("cmap", toggleWidgetClass, buttonbox,
-                           NULL);
-  fade_toggle =
-    XtVaCreateManagedWidget("fade", toggleWidgetClass, buttonbox,
-                           NULL);
-  unfade_toggle =
-    XtVaCreateManagedWidget("unfade", toggleWidgetClass, buttonbox,
-                           NULL);
-  lock_toggle = 
-    XtVaCreateManagedWidget("lock", toggleWidgetClass, buttonbox,
-                           NULL);
-
-
-  prefs_done = XtVaCreateManagedWidget("done", commandWidgetClass, okbox,
-                                    NULL);
-  prefs_cancel = XtVaCreateManagedWidget("cancel", commandWidgetClass, okbox,
-                                      NULL);
-}
-
-void
-create_demo_dialog(Widget parent, Visual *visual, Colormap colormap)
-{
-  Widget subform, box, viewport, label2;
-  int depth = visual_depth(XtScreen(parent), visual);
-
-  demo_dialog = 
-    XtVaCreatePopupShell("demo_dialog", transientShellWidgetClass, parent,
-                        XtNvisual, visual,
-                        XtNcolormap, colormap,
-                        XtNdepth, depth,
-                        NULL);
-
-  demo_form =
-    XtVaCreateManagedWidget("demo_form", formWidgetClass, demo_dialog,
-                           XtNvisual, visual,
-                           XtNcolormap, colormap,
-                           XtNdepth, depth,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNtop, XtChainTop,
-                           NULL);
-
-  label1 = XtVaCreateManagedWidget("label1", labelWidgetClass, demo_form,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNtop, XtChainTop,
-                           NULL);
-
-  label2 = XtVaCreateManagedWidget("label2", labelWidgetClass, demo_form,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNfromVert, label1,
-                           NULL);
-
-  subform =
-    XtVaCreateManagedWidget("subform", formWidgetClass, demo_form,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNfromVert, label2,
-                           XtNresizable, True,
-                           NULL);
-  viewport =
-    XtVaCreateManagedWidget("viewport", viewportWidgetClass, subform,
-                           XtNtop, XtChainTop,
-                           XtNleft, XtChainLeft,
-                           XtNright, XtChainRight,
-                           XtNallowVert, TRUE,
-                           XtNallowHoriz, TRUE,
-                           XtNforceBars, TRUE,
-                           NULL);
-
-  demo_list = XtVaCreateManagedWidget("demo_list", listWidgetClass, viewport,
-                                     XtNverticalList, TRUE,
-                                     XtNdefaultColumns, 1,
-                                     NULL);
-
-  text_line = XtVaCreateManagedWidget("text", asciiTextWidgetClass, subform,
-                                     XtNleft, XtChainLeft,
-                                     XtNright, XtChainRight,
-                                     XtNfromVert, viewport,
-                                     XtNbottom, XtChainBottom,
-                                     XtNeditType, XawtextEdit,
-                                     NULL);
-
-  box =
-    XtVaCreateManagedWidget("box", boxWidgetClass, demo_form,
-                           XtNleft, XtChainLeft,
-                           XtNfromVert, subform,
-                           XtNbottom, XtChainBottom,
-                           XtNright, XtChainRight,
-                           XtNorientation, XtEhorizontal,
-                           NULL);
-  next = XtVaCreateManagedWidget("next", commandWidgetClass, box, NULL);
-  prev = XtVaCreateManagedWidget("prev", commandWidgetClass, box, NULL);
-  edit = XtVaCreateManagedWidget("edit", commandWidgetClass, box, NULL);
-#if 0
-  restart = XtVaCreateManagedWidget("restart", commandWidgetClass, box, NULL);
-#endif
-  done = XtVaCreateManagedWidget("done", commandWidgetClass, box, NULL);
-}
diff --git a/driver/dialogs-Xm.c b/driver/dialogs-Xm.c
deleted file mode 100644 (file)
index 930b7b7..0000000
+++ /dev/null
@@ -1,573 +0,0 @@
-/* dialogs-Xm.c --- Motif widgets for demo, options, and password dialogs.
- * xscreensaver, Copyright (c) 1993-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.
- */
-
-/* The code in this file started off its life as the output of XDesigner,
-   but I've since hacked it by hand...  It's a mess, avert your eyes.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <X11/Xatom.h>
-#include <X11/Intrinsic.h>
-#include <X11/Shell.h>
-
-#include <Xm/Xm.h>
-#include <Xm/DialogS.h>
-#include <Xm/DrawnB.h>
-#include <Xm/Form.h>
-#include <Xm/Label.h>
-#include <Xm/List.h>
-#include <Xm/PushB.h>
-#include <Xm/ScrollBar.h>
-#include <Xm/Separator.h>
-#include <Xm/TextF.h>
-#include <Xm/ToggleB.h>
-
-#include <Xm/SelectioB.h>
-
-#include <stdio.h>
-
-#include "visual.h"    /* for visual_depth() */
-
-Widget preferences_dialog;
-Widget preferences_form;
-Widget timeout_text;
-Widget cycle_text;
-Widget fade_text;
-Widget fade_ticks_text;
-Widget lock_timeout_text;
-Widget passwd_timeout_text;
-Widget verbose_toggle;
-Widget install_cmap_toggle;
-Widget fade_toggle;
-Widget unfade_toggle;
-Widget lock_toggle;
-Widget prefs_done;
-Widget prefs_cancel;
-
-Widget demo_dialog;
-Widget demo_form;
-Widget label1;
-Widget label2;
-Widget text_area;
-Widget demo_list;
-Widget text_line;
-Widget vline;
-Widget next;
-Widget prev;
-Widget edit;
-Widget done;
-Widget restart;
-Widget spacer;
-
-void
-create_preferences_dialog(Widget parent, Visual *visual, Colormap colormap)
-{
-  Widget children[22];      /* Children to manage */
-  Arg al[64];           /* Arg List */
-  register int ac = 0;      /* Arg Count */
-  Widget widget12;
-  Widget widget13;
-  Widget widget14;
-  Widget widget15;
-  Widget widget16;
-  Widget widget17;
-  Widget widget18;
-  Widget widget48;
-  Widget widget29;
-
-  Widget real_dialog;
-  Widget w;
-
-  ac = 0;
-  XtSetArg (al[ac], XmNvisual, visual); ac++;
-  XtSetArg (al[ac], XmNcolormap, colormap); ac++;
-  XtSetArg (al[ac], XmNdepth, visual_depth(XtScreen(parent), visual)); ac++;
-
-  real_dialog = XmCreatePromptDialog (parent, "preferencesForm", al, ac);
-  preferences_dialog = XtParent(real_dialog);
-
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SEPARATOR);
-  if (w) XtUnmanageChild (w);
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
-  if (w) XtUnmanageChild (w);
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SELECTION_LABEL);
-  if (w) XtUnmanageChild (w);
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_HELP_BUTTON);
-  if (w) XtUnmanageChild (w);
-
-  ac = 0;
-  XtSetArg (al [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
-  XtSetArg (al [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
-  XtSetArg (al [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg (al [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  preferences_form = XmCreateForm (real_dialog, "form", al, ac);
-  XtManageChild (preferences_form);
-
-  ac = 0;
-
-  widget12 = XmCreateLabel ( preferences_form, "preferencesLabel", al, ac );
-  widget13 = XmCreateSeparator ( preferences_form, "separator", al, ac );
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
-  widget14 = XmCreateLabel ( preferences_form, "timeoutLabel", al, ac );
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
-  widget15 = XmCreateLabel ( preferences_form, "cycleLabel", al, ac );
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
-  widget16 = XmCreateLabel ( preferences_form, "fadeSecondsLabel", al, ac );
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
-  widget17 = XmCreateLabel ( preferences_form, "fadeTicksLabel", al, ac );
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
-  widget18 = XmCreateLabel ( preferences_form, "lockLabel", al, ac );
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
-  widget48 = XmCreateLabel ( preferences_form, "passwdLabel", al, ac );
-  ac = 0;
-  timeout_text = XmCreateTextField ( preferences_form, "timeoutText", al, ac );
-  cycle_text = XmCreateTextField ( preferences_form, "cycleText", al, ac );
-  fade_text = XmCreateTextField ( preferences_form, "fadeSecondsText", al, ac);
-  fade_ticks_text = XmCreateTextField ( preferences_form, "fadeTicksText", al, ac);
-  lock_timeout_text = XmCreateTextField ( preferences_form, "passwdText", al, ac);
-  passwd_timeout_text = XmCreateTextField ( preferences_form, "lockText", al, ac);
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
-  verbose_toggle = XmCreateToggleButton (preferences_form,"verboseToggle",al,ac);
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
-  install_cmap_toggle = XmCreateToggleButton ( preferences_form, "cmapToggle", al, ac);
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
-  fade_toggle = XmCreateToggleButton ( preferences_form, "fadeToggle", al, ac);
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
-  unfade_toggle = XmCreateToggleButton (preferences_form,"unfadeToggle",al,ac);
-  ac = 0;
-  XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
-  lock_toggle = XmCreateToggleButton ( preferences_form, "lockToggle", al, ac);
-  ac = 0;
-  widget29 = XmCreateSeparator ( preferences_form, "separator", al, ac );
-
-  prefs_done = XmSelectionBoxGetChild (real_dialog, XmDIALOG_OK_BUTTON);
-  prefs_cancel = XmSelectionBoxGetChild (real_dialog, XmDIALOG_CANCEL_BUTTON);
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 4); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetValues ( widget12,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 4); ac++;
-  XtSetArg(al[ac], XmNtopWidget, widget12); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 0); ac++;
-  XtSetValues ( widget13,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 4); ac++;
-  XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, timeout_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 20); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightWidget, timeout_text); ac++;
-  XtSetValues ( widget14,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, cycle_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 20); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightWidget, cycle_text); ac++;
-  XtSetValues ( widget15,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, fade_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 20); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightWidget, fade_text); ac++;
-  XtSetValues ( widget16,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, fade_ticks_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, fade_ticks_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 20); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightWidget, fade_ticks_text); ac++;
-  XtSetValues ( widget17,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, lock_timeout_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, lock_timeout_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 19); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightWidget, lock_timeout_text); ac++;
-  XtSetValues ( widget18,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, passwd_timeout_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, passwd_timeout_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 14); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightWidget, passwd_timeout_text); ac++;
-  XtSetValues ( widget48,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 4); ac++;
-  XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 141); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
-  XtSetValues ( timeout_text,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 2); ac++;
-  XtSetArg(al[ac], XmNtopWidget, timeout_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, timeout_text); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
-  XtSetValues ( cycle_text,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 2); ac++;
-  XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, cycle_text); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
-  XtSetValues ( fade_text,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 2); ac++;
-  XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, fade_text); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
-  XtSetValues ( fade_ticks_text,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 2); ac++;
-  XtSetArg(al[ac], XmNtopWidget, fade_ticks_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, fade_ticks_text); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
-  XtSetValues ( lock_timeout_text,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 4); ac++;
-  XtSetArg(al[ac], XmNtopWidget, lock_timeout_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, lock_timeout_text); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
-  XtSetValues ( passwd_timeout_text,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 4); ac++;
-  XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, timeout_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 20); ac++;
-  XtSetArg(al[ac], XmNleftWidget, timeout_text); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 20); ac++;
-  XtSetValues ( verbose_toggle,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, cycle_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, verbose_toggle); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 20); ac++;
-  XtSetValues ( install_cmap_toggle,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, fade_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, install_cmap_toggle); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 20); ac++;
-  XtSetValues ( fade_toggle,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, fade_ticks_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, fade_ticks_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, fade_toggle); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 20); ac++;
-  XtSetValues ( unfade_toggle,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, lock_timeout_text); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
-  XtSetArg(al[ac], XmNbottomWidget, lock_timeout_text); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 0); ac++;
-  XtSetArg(al[ac], XmNleftWidget, unfade_toggle); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 20); ac++;
-  XtSetValues ( lock_toggle,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 0); ac++;
-  XtSetArg(al[ac], XmNtopWidget, passwd_timeout_text); ac++;
-
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNbottomOffset, 4); ac++;
-
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetValues ( widget29,al, ac );
-  ac = 0;
-
-
-
-  ac = 0;
-  children[ac++] = widget12;
-  children[ac++] = widget13;
-  children[ac++] = widget14;
-  children[ac++] = widget15;
-  children[ac++] = widget16;
-  children[ac++] = widget17;
-  children[ac++] = widget18;
-  children[ac++] = widget48;
-  children[ac++] = timeout_text;
-  children[ac++] = cycle_text;
-  children[ac++] = fade_text;
-  children[ac++] = fade_ticks_text;
-  children[ac++] = lock_timeout_text;
-  children[ac++] = passwd_timeout_text;
-  children[ac++] = verbose_toggle;
-  children[ac++] = install_cmap_toggle;
-  children[ac++] = fade_toggle;
-  children[ac++] = unfade_toggle;
-  children[ac++] = lock_toggle;
-  children[ac++] = widget29;
-
-  XtManageChildren(children, ac);
-  ac = 0;
-
-  preferences_form = real_dialog;
-}
-
-
-void
-create_demo_dialog(Widget parent, Visual *visual, Colormap colormap)
-{
-  Arg al[64];           /* Arg List */
-  register int ac = 0;      /* Arg Count */
-
-  Widget real_dialog;
-  Widget w;
-
-
-  ac = 0;
-  XtSetArg (al[ac], XmNvisual, visual); ac++;
-  XtSetArg (al[ac], XmNcolormap, colormap); ac++;
-  XtSetArg (al[ac], XmNdepth, visual_depth(XtScreen(parent), visual)); ac++;
-
-
-  real_dialog = XmCreatePromptDialog (parent, "demoForm", al, ac);
-  demo_dialog = XtParent(real_dialog);
-
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SEPARATOR);
-  if (w) XtUnmanageChild (w);
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
-  if (w) XtUnmanageChild (w);
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SELECTION_LABEL);
-  if (w) XtUnmanageChild (w);
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_OK_BUTTON);
-  if (w) XtUnmanageChild (w);
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_CANCEL_BUTTON);
-  if (w) XtUnmanageChild (w);
-  w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_HELP_BUTTON);
-  if (w) XtUnmanageChild (w);
-
-  ac = 0;
-  XtSetArg (al [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
-  XtSetArg (al [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
-  XtSetArg (al [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg (al [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  demo_form = XmCreateForm (real_dialog, "form", al, ac);
-  XtManageChild (demo_form);
-
-  label1 = XmCreateLabel ( demo_form, "label1", al, ac );
-  label2 = XmCreateLabel ( demo_form, "label2", al, ac );
-  demo_list = XmCreateScrolledList ( demo_form, "demoList", al, ac );
-  text_area = XtParent ( demo_list );
-
-  ac = 0;
-  text_line = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
-  XtManageChild(text_line);
-
-  /* #### ARRGH!  This is apparently the only way to make hitting return in
-     the text field not *ALSO* activate the most-recently-selected button!
-
-     This has the unfortunate side effect of making the buttons not be
-     keyboard-traversable, but that's less bad than not being able to try
-     out new switches by typing them into the text field.
-
-     XmSelectionBox(3M) says in the "Additional Behavior" section:
-         KActivate:
-                   Calls the activate callbacks for the button with
-                   the keyboard focus.  [... ]  In a List widget or
-                   single-line Text widget, the List or Text action
-                   associated with KActivate is called before the
-                   SelectionBox actions associated with KActivate."
-
-     So they take it as a given that when running activateCallback on a single-
-     line Text widget, you'll also want to run activateCallback on whatever the
-     currently-focussed button is as well!  Morons!  Villains!  Shitheads!
-
-     (Perhaps there's some way to override XmSelectionBox's KActivate behavior.
-     I doubt it, but if there is, I don't know it.)
-  */
-  ac = 0;
-  XtSetArg(al[ac], XmNtraversalOn, False); ac++;
-
-  next = XmCreatePushButton ( real_dialog, "next", al, ac );
-  prev = XmCreatePushButton ( real_dialog, "prev", al, ac );
-  edit = XmCreatePushButton ( real_dialog, "edit", al, ac );
-  done = XmCreatePushButton ( real_dialog, "done", al, ac );
-#if 0
-  restart = XmCreatePushButton ( real_dialog, "restart", al, ac );
-#endif
-  XtManageChild(next);
-  XtManageChild(prev);
-  XtManageChild(edit);
-  XtManageChild(done);
-#if 0
-  XtManageChild(restart);
-#endif
-
-  ac = 0;
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 5); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetValues ( label1,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 4); ac++;
-  XtSetArg(al[ac], XmNtopWidget, label1); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetValues ( label2,al, ac );
-  ac = 0;
-
-  XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
-  XtSetArg(al[ac], XmNtopOffset, 4); ac++;
-  XtSetArg(al[ac], XmNtopWidget, label2); ac++;
-  XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNleftOffset, 4); ac++;
-  XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
-  XtSetArg(al[ac], XmNrightOffset, 4); ac++;
-  XtSetValues ( text_area,al, ac );
-
-  XtManageChild(demo_list);
-  XtManageChild(label1);
-  XtManageChild(label2);
-
-  demo_form = real_dialog;
-}
diff --git a/driver/link_axp.com b/driver/link_axp.com
deleted file mode 100644 (file)
index a141892..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-$! We fisrt test the version of DECW/Motif ; if 1.2 we need to link with new
-$! X11R5 libraries
-$@sys$update:decw$get_image_version sys$share:decw$xlibshr.exe decw$version
-$ if f$extract(4,3,decw$version).eqs."1.2"
-$ then
-$! DECW/Motif 1.2 : link with X11R5 libraries
-$ link xscreensaver-command,vms_axp_12.opt/opt
-$ link xscreensaver,demo,dialogs-xm,lock,passwd,stderr,subprocs,timers, -
-  windows,xset,vms-getpwnam,vms-hpwd,vms-validate,vms_axp_12.opt/opt
-$ else
-$! Else, link with X11R4 libraries
-$ link xscreensaver-command,vms_axp.opt/opt
-$ link xscreensaver,demo,dialogs-xm,lock,passwd,stderr,subprocs,timers, -
-  windows,xset,vms-getpwnam,vms-hpwd,vms-validate,vms_axp.opt/opt
-$ endif
diff --git a/driver/link_decc.com b/driver/link_decc.com
deleted file mode 100644 (file)
index d1de0d0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-$! We fisrt test the version of DECW/Motif ; if 1.2 we need to link with new
-$! X11R5 libraries
-$@sys$update:decw$get_image_version sys$share:decw$xlibshr.exe decw$version
-$ if f$extract(4,3,decw$version).eqs."1.2"
-$ then
-$! DECW/Motif 1.2 : link with X11R5 libraries
-$ link xscreensaver-command,vms_decc_12.opt/opt
-$ link xscreensaver,demo,dialogs-xm,lock,passwd,stderr,subprocs,timers, -
-  windows,xset,vms-getpwnam,vms-hpwd,vms-validate,vms_decc_12.opt/opt
-$ else
-$! Else, link with X11R4 libraries
-$ link xscreensaver-command,vms_decc.opt/opt
-$ link xscreensaver,demo,dialogs-xm,lock,passwd,stderr,subprocs,timers, -
-  windows,xset,vms-getpwnam,vms-hpwd,vms-validate,vms_decc.opt/opt
-$ endif
diff --git a/driver/lock.c b/driver/lock.c
deleted file mode 100644 (file)
index 4ca3d51..0000000
+++ /dev/null
@@ -1,1024 +0,0 @@
-/* lock.c --- handling the password dialog for locking-mode.
- * xscreensaver, Copyright (c) 1993-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.
- */
-
-/* Athena locking code contributed by Jon A. Christopher <jac8782@tamu.edu> */
-/* Copyright 1997, with the same permissions as above. */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifndef NO_LOCKING   /* whole file */
-
-#include <X11/Intrinsic.h>
-#include "xscreensaver.h"
-#include "resources.h"
-
-#ifdef HAVE_SYSLOG
-# include <syslog.h>
-#endif /* HAVE_SYSLOG */
-
-#ifdef HAVE_XF86VMODE
-# include <X11/extensions/xf86vmode.h>
-#endif /* HAVE_XF86VMODE */
-
-#ifdef _VROOT_H_
-ERROR!  You must not include vroot.h in this file.
-#endif
-
-#ifndef VMS
-# include <pwd.h>
-#else /* VMS */
-
-extern char *getenv(const char *name);
-extern int validate_user(char *name, char *password);
-
-static Bool
-vms_passwd_valid_p(char *pw, Bool verbose_p)
-{
-  return (validate_user (getenv("USER"), typed_passwd) == 1);
-}
-# undef passwd_valid_p
-# define passwd_valid_p vms_passwd_valid_p
-
-#endif /* VMS */
-
-
-#undef MAX
-#define MAX(a,b) ((a)>(b)?(a):(b))
-
-enum passwd_state { pw_read, pw_ok, pw_null, pw_fail, pw_cancel, pw_time };
-
-struct passwd_dialog_data {
-
-  enum passwd_state state;
-  char typed_passwd [80];
-  XtIntervalId timer;
-  int i_beam;
-
-  float ratio;
-  Position x, y;
-  Dimension width;
-  Dimension height;
-  Dimension border_width;
-
-  char *heading_label;
-  char *body_label;
-  char *user_label;
-  char *passwd_label;
-  char *user_string;
-  char *passwd_string;
-
-  XFontStruct *heading_font;
-  XFontStruct *body_font;
-  XFontStruct *label_font;
-  XFontStruct *passwd_font;
-
-  Pixel foreground;
-  Pixel background;
-  Pixel passwd_foreground;
-  Pixel passwd_background;
-  Pixel logo_foreground;
-  Pixel logo_background;
-  Pixel shadow_top;
-  Pixel shadow_bottom;
-
-  Dimension logo_width;
-  Dimension logo_height;
-  Dimension thermo_width;
-  Dimension internal_border;
-  Dimension shadow_width;
-
-  Dimension passwd_field_x, passwd_field_y;
-  Dimension passwd_field_width, passwd_field_height;
-
-  Dimension thermo_field_x, thermo_field_y;
-  Dimension thermo_field_height;
-
-  Pixmap save_under;
-};
-
-static void draw_passwd_window (saver_info *si);
-static void update_passwd_window (saver_info *si, const char *printed_passwd,
-                                 float ratio);
-static void destroy_passwd_window (saver_info *si);
-static void undo_vp_motion (saver_info *si);
-static void set_vp_mode_switch_locked (saver_info *si, Bool locked_p);
-
-
-static void
-make_passwd_window (saver_info *si)
-{
-  struct passwd *p = getpwuid (getuid ());
-  XSetWindowAttributes attrs;
-  unsigned long attrmask = 0;
-  Screen *screen = si->default_screen->screen;
-  passwd_dialog_data *pw = (passwd_dialog_data *) calloc (1, sizeof(*pw));
-  Colormap cmap = DefaultColormapOfScreen (screen);
-  char *f;
-
-  pw->ratio = 1.0;
-
-  pw->heading_label = get_string_resource ("passwd.heading.label",
-                                          "Dialog.Label.Label");
-  pw->body_label = get_string_resource ("passwd.body.label",
-                                       "Dialog.Label.Label");
-  pw->user_label = get_string_resource ("passwd.user.label",
-                                       "Dialog.Label.Label");
-  pw->passwd_label = get_string_resource ("passwd.passwd.label",
-                                         "Dialog.Label.Label");
-
-  if (!pw->heading_label)
-    pw->heading_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY");
-  if (!pw->body_label)
-    pw->body_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY");
-  if (!pw->user_label) pw->user_label = strdup("ERROR");
-  if (!pw->passwd_label) pw->passwd_label = strdup("ERROR");
-
-  /* Put the version number in the label. */
-  {
-    char *s = (char *) malloc (strlen(pw->heading_label) + 20);
-    sprintf(s, pw->heading_label, si->version);
-    free (pw->heading_label);
-    pw->heading_label = s;
-  }
-
-  pw->user_string = (p->pw_name ? p->pw_name : "???");
-  pw->passwd_string = strdup("");
-
-  f = get_string_resource ("passwd.headingFont", "Dialog.Font");
-  pw->heading_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
-  if (!pw->heading_font) pw->heading_font = XLoadQueryFont (si->dpy, "fixed");
-  if (f) free (f);
-
-  f = get_string_resource("passwd.bodyFont", "Dialog.Font");
-  pw->body_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
-  if (!pw->body_font) pw->body_font = XLoadQueryFont (si->dpy, "fixed");
-  if (f) free (f);
-
-  f = get_string_resource("passwd.labelFont", "Dialog.Font");
-  pw->label_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
-  if (!pw->label_font) pw->label_font = XLoadQueryFont (si->dpy, "fixed");
-  if (f) free (f);
-
-  f = get_string_resource("passwd.passwdFont", "Dialog.Font");
-  pw->passwd_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
-  if (!pw->passwd_font) pw->passwd_font = XLoadQueryFont (si->dpy, "fixed");
-  if (f) free (f);
-
-  pw->foreground = get_pixel_resource ("passwd.foreground",
-                                      "Dialog.Foreground",
-                                      si->dpy, cmap);
-  pw->background = get_pixel_resource ("passwd.background",
-                                      "Dialog.Background",
-                                      si->dpy, cmap);
-
-  if (pw->foreground == pw->background)
-    {
-      /* Make sure the error messages show up. */
-      pw->foreground = BlackPixelOfScreen (screen);
-      pw->background = WhitePixelOfScreen (screen);
-    }
-
-  pw->passwd_foreground = get_pixel_resource ("passwd.text.foreground",
-                                             "Dialog.Text.Foreground",
-                                             si->dpy, cmap);
-  pw->passwd_background = get_pixel_resource ("passwd.text.background",
-                                             "Dialog.Text.Background",
-                                             si->dpy, cmap);
-  pw->logo_foreground = get_pixel_resource ("passwd.logo.foreground",
-                                           "Dialog.Logo.Foreground",
-                                           si->dpy, cmap);
-  pw->logo_background = get_pixel_resource ("passwd.logo.background",
-                                           "Dialog.Logo.Background",
-                                           si->dpy, cmap);
-  pw->shadow_top = get_pixel_resource ("passwd.topShadowColor",
-                                      "Dialog.Foreground",
-                                      si->dpy, cmap);
-  pw->shadow_bottom = get_pixel_resource ("passwd.bottomShadowColor",
-                                         "Dialog.Background",
-                                         si->dpy, cmap);
-
-  pw->logo_width = get_integer_resource ("passwd.logo.width",
-                                        "Dialog.Logo.Width");
-  pw->logo_height = get_integer_resource ("passwd.logo.height",
-                                         "Dialog.Logo.Height");
-  pw->thermo_width = get_integer_resource ("passwd.thermometer.width",
-                                          "Dialog.Thermometer.Width");
-  pw->internal_border = get_integer_resource ("passwd.internalBorderWidth",
-                                             "Dialog.InternalBorderWidth");
-  pw->shadow_width = get_integer_resource ("passwd.shadowThickness",
-                                          "Dialog.ShadowThickness");
-
-  if (pw->logo_width == 0)  pw->logo_width = 150;
-  if (pw->logo_height == 0) pw->logo_height = 150;
-  if (pw->internal_border == 0) pw->internal_border = 15;
-  if (pw->shadow_width == 0) pw->shadow_width = 4;
-  if (pw->thermo_width == 0) pw->thermo_width = pw->shadow_width;
-
-  {
-    int direction, ascent, descent;
-    XCharStruct overall;
-
-    pw->width = 0;
-    pw->height = 0;
-
-    /* Measure the heading_label. */
-    XTextExtents (pw->heading_font,
-                 pw->heading_label, strlen(pw->heading_label),
-                 &direction, &ascent, &descent, &overall);
-    if (overall.width > pw->width) pw->width = overall.width;
-    pw->height += ascent + descent;
-
-    /* Measure the body_label. */
-    XTextExtents (pw->body_font,
-                 pw->body_label, strlen(pw->body_label),
-                 &direction, &ascent, &descent, &overall);
-    if (overall.width > pw->width) pw->width = overall.width;
-    pw->height += ascent + descent;
-
-    {
-      Dimension w2 = 0, w3 = 0;
-      Dimension h2 = 0, h3 = 0;
-      const char *passwd_string = "MMMMMMMMMMMM";
-
-      /* Measure the user_label. */
-      XTextExtents (pw->label_font,
-                   pw->user_label, strlen(pw->user_label),
-                   &direction, &ascent, &descent, &overall);
-      if (overall.width > w2)  w2 = overall.width;
-      h2 += ascent + descent;
-
-      /* Measure the passwd_label. */
-      XTextExtents (pw->label_font,
-                   pw->passwd_label, strlen(pw->passwd_label),
-                   &direction, &ascent, &descent, &overall);
-      if (overall.width > w2)  w2 = overall.width;
-      h2 += ascent + descent;
-
-      /* Measure the user_string. */
-      XTextExtents (pw->passwd_font,
-                   pw->user_string, strlen(pw->user_string),
-                   &direction, &ascent, &descent, &overall);
-      overall.width += (pw->shadow_width * 4);
-      ascent += (pw->shadow_width * 4);
-      if (overall.width > w3)  w3 = overall.width;
-      h3 += ascent + descent;
-
-      /* Measure the (maximally-sized, dummy) passwd_string. */
-      XTextExtents (pw->passwd_font,
-                   passwd_string, strlen(passwd_string),
-                   &direction, &ascent, &descent, &overall);
-      overall.width += (pw->shadow_width * 4);
-      ascent += (pw->shadow_width * 4);
-      if (overall.width > w3)  w3 = overall.width;
-      h3 += ascent + descent;
-
-      w2 = w2 + w3 + (pw->shadow_width * 2);
-      h2 = MAX (h2, h3);
-
-      if (w2 > pw->width)  pw->width  = w2;
-      pw->height += h2;
-    }
-
-    pw->width  += (pw->internal_border * 2);
-    pw->height += (pw->internal_border * 4);
-
-    pw->width += pw->thermo_width + (pw->shadow_width * 3);
-
-    if (pw->logo_height > pw->height)
-      pw->height = pw->logo_height;
-    else if (pw->height > pw->logo_height)
-      pw->logo_height = pw->height;
-
-    pw->logo_width = pw->logo_height;
-
-    pw->width += pw->logo_width;
-  }
-
-  attrmask |= CWOverrideRedirect; attrs.override_redirect = True;
-  attrmask |= CWEventMask; attrs.event_mask = ExposureMask|KeyPressMask;
-
-  {
-    int x, y, w, h;
-    get_screen_viewport (si->default_screen, &x, &y, &w, &h, False);
-    if (si->prefs.debug_p) w /= 2;
-    pw->x = x + ((w + pw->width) / 2) - pw->width;
-    pw->y = y + ((h + pw->height) / 2) - pw->height;
-    if (pw->x < x) pw->x = x;
-    if (pw->y < y) pw->y = y;
-  }
-
-  pw->border_width = get_integer_resource ("passwd.borderWidth",
-                                           "Dialog.BorderWidth");
-
-  si->passwd_dialog =
-    XCreateWindow (si->dpy,
-                  RootWindowOfScreen(screen),
-                  pw->x, pw->y, pw->width, pw->height, pw->border_width,
-                  DefaultDepthOfScreen (screen), InputOutput,
-                  DefaultVisualOfScreen(screen),
-                  attrmask, &attrs);
-  XSetWindowBackground (si->dpy, si->passwd_dialog, pw->background);
-
-
-  /* Before mapping the window, save the bits that are underneath the
-     rectangle the window will occlude.  When we lower the window, we
-     restore these bits.  This works, because the running screenhack
-     has already been sent SIGSTOP, so we know nothing else is drawing
-     right now! */
-  {
-    XGCValues gcv;
-    GC gc;
-    pw->save_under = XCreatePixmap (si->dpy,
-                                    si->default_screen->screensaver_window,
-                                    pw->width + (pw->border_width*2) + 1,
-                                    pw->height + (pw->border_width*2) + 1,
-                                    si->default_screen->current_depth);
-    gcv.function = GXcopy;
-    gc = XCreateGC (si->dpy, pw->save_under, GCFunction, &gcv);
-    XCopyArea (si->dpy, si->default_screen->screensaver_window,
-               pw->save_under, gc,
-               pw->x - pw->border_width, pw->y - pw->border_width,
-               pw->width + (pw->border_width*2) + 1,
-               pw->height + (pw->border_width*2) + 1,
-               0, 0);
-    XFreeGC (si->dpy, gc);
-  }
-
-  XMapRaised (si->dpy, si->passwd_dialog);
-  XSync (si->dpy, False);
-
-  move_mouse_grab (si, si->passwd_dialog, si->screens[0].cursor);
-  undo_vp_motion (si);
-  set_vp_mode_switch_locked (si, True);
-
-  si->pw_data = pw;
-
-  draw_passwd_window (si);
-  XSync (si->dpy, False);
-}
-
-
-void
-draw_passwd_window (saver_info *si)
-{
-  passwd_dialog_data *pw = si->pw_data;
-  XGCValues gcv;
-  GC gc1, gc2;
-  int spacing, height;
-  int x1, x2, x3, y1, y2;
-  int sw;
-  int tb_height;
-
-  height = (pw->heading_font->ascent + pw->heading_font->descent +
-           pw->body_font->ascent + pw->body_font->descent +
-           (2 * MAX ((pw->label_font->ascent + pw->label_font->descent),
-                     (pw->passwd_font->ascent + pw->passwd_font->descent +
-                      (pw->shadow_width * 4)))));
-  spacing = ((pw->height - (2 * pw->shadow_width) -
-             pw->internal_border - height)) / 8;
-  if (spacing < 0) spacing = 0;
-
-  gcv.foreground = pw->foreground;
-  gc1 = XCreateGC (si->dpy, si->passwd_dialog, GCForeground, &gcv);
-  gc2 = XCreateGC (si->dpy, si->passwd_dialog, GCForeground, &gcv);
-  x1 = pw->logo_width + pw->thermo_width + (pw->shadow_width * 3);
-  x3 = pw->width - (pw->shadow_width * 2);
-  y1 = (pw->shadow_width * 2) + spacing + spacing;
-
-  /* top heading
-   */
-  XSetFont (si->dpy, gc1, pw->heading_font->fid);
-  sw = string_width (pw->heading_font, pw->heading_label);
-  x2 = (x1 + ((x3 - x1 - sw) / 2));
-  y1 += spacing + pw->heading_font->ascent + pw->heading_font->descent;
-  XDrawString (si->dpy, si->passwd_dialog, gc1, x2, y1,
-              pw->heading_label, strlen(pw->heading_label));
-
-  /* text below top heading
-   */
-  XSetFont (si->dpy, gc1, pw->body_font->fid);
-  y1 += spacing + pw->body_font->ascent + pw->body_font->descent;
-  sw = string_width (pw->body_font, pw->body_label);
-  x2 = (x1 + ((x3 - x1 - sw) / 2));
-  XDrawString (si->dpy, si->passwd_dialog, gc1, x2, y1,
-              pw->body_label, strlen(pw->body_label));
-
-
-  tb_height = (pw->passwd_font->ascent + pw->passwd_font->descent +
-              (pw->shadow_width * 4));
-
-  /* the "User:" prompt
-   */
-  y1 += spacing;
-  y2 = y1;
-  XSetForeground (si->dpy, gc1, pw->foreground);
-  XSetFont (si->dpy, gc1, pw->label_font->fid);
-  y1 += (spacing + tb_height);
-  x2 = (x1 + pw->internal_border +
-       MAX(string_width (pw->label_font, pw->user_label),
-           string_width (pw->label_font, pw->passwd_label)));
-  XDrawString (si->dpy, si->passwd_dialog, gc1,
-              x2 - string_width (pw->label_font, pw->user_label),
-              y1,
-              pw->user_label, strlen(pw->user_label));
-
-  /* the "Password:" prompt
-   */
-  y1 += (spacing + tb_height);
-  XDrawString (si->dpy, si->passwd_dialog, gc1,
-              x2 - string_width (pw->label_font, pw->passwd_label),
-              y1,
-              pw->passwd_label, strlen(pw->passwd_label));
-
-
-  XSetForeground (si->dpy, gc2, pw->passwd_background);
-
-  /* the "user name" text field
-   */
-  y1 = y2;
-  XSetForeground (si->dpy, gc1, pw->passwd_foreground);
-  XSetFont (si->dpy, gc1, pw->passwd_font->fid);
-  y1 += (spacing + tb_height);
-  x2 += (pw->shadow_width * 4);
-
-  pw->passwd_field_width = x3 - x2 - pw->internal_border;
-  pw->passwd_field_height = (pw->passwd_font->ascent +
-                            pw->passwd_font->descent +
-                            pw->shadow_width);
-
-  XFillRectangle (si->dpy, si->passwd_dialog, gc2,
-                 x2 - pw->shadow_width,
-                 y1 - (pw->passwd_font->ascent + pw->passwd_font->descent),
-                 pw->passwd_field_width, pw->passwd_field_height);
-  XDrawString (si->dpy, si->passwd_dialog, gc1, x2, y1,
-              pw->user_string, strlen(pw->user_string));
-
-  /* the "password" text field
-   */
-  y1 += (spacing + tb_height);
-
-  pw->passwd_field_x = x2 - pw->shadow_width;
-  pw->passwd_field_y = y1 - (pw->passwd_font->ascent +
-                            pw->passwd_font->descent);
-
-  /* The shadow around the text fields
-   */
-  y1 = y2;
-  y1 += (spacing + (pw->shadow_width * 3));
-  x1 = x2 - (pw->shadow_width * 2);
-  x2 = pw->passwd_field_width + (pw->shadow_width * 2);
-  y2 = pw->passwd_field_height + (pw->shadow_width * 2);
-
-  draw_shaded_rectangle (si->dpy, si->passwd_dialog,
-                        x1, y1, x2, y2,
-                        pw->shadow_width,
-                        pw->shadow_bottom, pw->shadow_top);
-
-  y1 += (spacing + pw->passwd_font->ascent + pw->passwd_font->descent +
-        (pw->shadow_width * 4));
-  draw_shaded_rectangle (si->dpy, si->passwd_dialog,
-                        x1, y1, x2, y2,
-                        pw->shadow_width,
-                        pw->shadow_bottom, pw->shadow_top);
-
-  /* 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));
-
-  /* The thermometer
-   */
-  pw->thermo_field_x = pw->logo_width + pw->shadow_width;
-  pw->thermo_field_y = pw->shadow_width * 3;
-  pw->thermo_field_height = pw->height - (pw->shadow_width * 6);
-
-  /* Solid border inside the logo box. */
-  XSetForeground (si->dpy, gc1, pw->foreground);
-  XDrawRectangle (si->dpy, si->passwd_dialog, gc1, x1, y1, x2-1, y2-1);
-
-  /* The shadow around the logo
-   */
-  draw_shaded_rectangle (si->dpy, si->passwd_dialog,
-                        pw->shadow_width * 2,
-                        pw->shadow_width * 2,
-                        pw->logo_width - (pw->shadow_width * 4),
-                        pw->logo_height - (pw->shadow_width * 4),
-                        pw->shadow_width,
-                        pw->shadow_bottom, pw->shadow_top);
-
-  /* The shadow around the thermometer
-   */
-  draw_shaded_rectangle (si->dpy, si->passwd_dialog,
-                        pw->logo_width,
-                        pw->shadow_width * 2,
-                        pw->thermo_width + (pw->shadow_width * 2),
-                        pw->height - (pw->shadow_width * 4),
-                        pw->shadow_width,
-                        pw->shadow_bottom, pw->shadow_top);
-
-  /* Solid border inside the thermometer. */
-  XSetForeground (si->dpy, gc1, pw->foreground);
-  XDrawRectangle (si->dpy, si->passwd_dialog, gc1, 
-                 pw->logo_width + pw->shadow_width,
-                 pw->shadow_width * 3,
-                 pw->thermo_width - 1,
-                 pw->height - (pw->shadow_width * 6) - 1);
-
-  /* The shadow around the whole window
-   */
-  draw_shaded_rectangle (si->dpy, si->passwd_dialog,
-                        0, 0, pw->width, pw->height, pw->shadow_width,
-                        pw->shadow_top, pw->shadow_bottom);
-
-  XFreeGC (si->dpy, gc1);
-  XFreeGC (si->dpy, gc2);
-
-  update_passwd_window (si, pw->passwd_string, pw->ratio);
-}
-
-
-void
-update_passwd_window (saver_info *si, const char *printed_passwd, float ratio)
-{
-  passwd_dialog_data *pw = si->pw_data;
-  XGCValues gcv;
-  GC gc1, gc2;
-  int x, y;
-  XRectangle rects[1];
-
-  pw->ratio = ratio;
-  gcv.foreground = pw->passwd_foreground;
-  gcv.font = pw->passwd_font->fid;
-  gc1 = XCreateGC (si->dpy, si->passwd_dialog, GCForeground|GCFont, &gcv);
-  gcv.foreground = pw->passwd_background;
-  gc2 = XCreateGC (si->dpy, si->passwd_dialog, GCForeground, &gcv);
-
-  if (printed_passwd)
-    {
-      char *s = strdup (printed_passwd);
-      if (pw->passwd_string) free (pw->passwd_string);
-      pw->passwd_string = s;
-    }
-
-  /* the "password" text field
-   */
-  rects[0].x =  pw->passwd_field_x;
-  rects[0].y =  pw->passwd_field_y;
-  rects[0].width = pw->passwd_field_width;
-  rects[0].height = pw->passwd_field_height;
-
-  XFillRectangle (si->dpy, si->passwd_dialog, gc2,
-                  rects[0].x, rects[0].y, rects[0].width, rects[0].height);
-
-  XSetClipRectangles (si->dpy, gc1, 0, 0, rects, 1, Unsorted);
-
-  XDrawString (si->dpy, si->passwd_dialog, gc1,
-               rects[0].x + pw->shadow_width,
-               rects[0].y + (pw->passwd_font->ascent +
-                             pw->passwd_font->descent),
-               pw->passwd_string, strlen(pw->passwd_string));
-
-  XSetClipMask (si->dpy, gc1, None);
-
-  /* The I-beam
-   */
-  if (pw->i_beam != 0)
-    {
-      x = (rects[0].x + pw->shadow_width +
-          string_width (pw->passwd_font, pw->passwd_string));
-      y = rects[0].y + pw->shadow_width;
-
-      if (x > rects[0].x + rects[0].width - 1)
-        x = rects[0].x + rects[0].width - 1;
-      XDrawLine (si->dpy, si->passwd_dialog, gc1, 
-                x, y, x, y + pw->passwd_font->ascent);
-    }
-
-  pw->i_beam = (pw->i_beam + 1) % 4;
-
-
-  /* the thermometer
-   */
-  y = pw->thermo_field_height * (1.0 - pw->ratio);
-  if (y > 0)
-    {
-      XFillRectangle (si->dpy, si->passwd_dialog, gc2,
-                     pw->thermo_field_x + 1,
-                     pw->thermo_field_y + 1,
-                     pw->thermo_width-2,
-                     y);
-      XSetForeground (si->dpy, gc1, pw->logo_foreground);
-      XFillRectangle (si->dpy, si->passwd_dialog, gc1,
-                     pw->thermo_field_x + 1,
-                     pw->thermo_field_y + 1 + y,
-                     pw->thermo_width-2,
-                     MAX (0, pw->thermo_field_height - y - 2));
-    }
-
-  XFreeGC (si->dpy, gc1);
-  XFreeGC (si->dpy, gc2);
-  XSync (si->dpy, False);
-}
-
-
-void
-destroy_passwd_window (saver_info *si)
-{
-  passwd_dialog_data *pw = si->pw_data;
-  Screen *screen = si->default_screen->screen;
-  Colormap cmap = DefaultColormapOfScreen (screen);
-  Pixel black = BlackPixelOfScreen (screen);
-  Pixel white = WhitePixelOfScreen (screen);
-
-  if (pw->timer)
-    XtRemoveTimeOut (pw->timer);
-
-  move_mouse_grab (si, RootWindowOfScreen(si->screens[0].screen),
-                   si->screens[0].cursor);
-  set_vp_mode_switch_locked (si, False);
-
-  if (si->passwd_dialog)
-    {
-      XDestroyWindow (si->dpy, si->passwd_dialog);
-      si->passwd_dialog = 0;
-    }
-  
-  if (pw->save_under)
-    {
-      XGCValues gcv;
-      GC gc;
-      gcv.function = GXcopy;
-      gc = XCreateGC (si->dpy, si->default_screen->screensaver_window,
-                      GCFunction, &gcv);
-      XCopyArea (si->dpy, pw->save_under,
-                 si->default_screen->screensaver_window, gc,
-                 0, 0,
-                 pw->width + (pw->border_width*2) + 1,
-                 pw->height + (pw->border_width*2) + 1,
-                 pw->x - pw->border_width, pw->y - pw->border_width);
-      XFreePixmap (si->dpy, pw->save_under);
-      pw->save_under = 0;
-      XFreeGC (si->dpy, gc);
-    }
-
-  if (pw->heading_label) free (pw->heading_label);
-  if (pw->body_label)    free (pw->body_label);
-  if (pw->user_label)    free (pw->user_label);
-  if (pw->passwd_label)  free (pw->passwd_label);
-
-  if (pw->heading_font) XFreeFont (si->dpy, pw->heading_font);
-  if (pw->body_font)    XFreeFont (si->dpy, pw->body_font);
-  if (pw->label_font)   XFreeFont (si->dpy, pw->label_font);
-  if (pw->passwd_font)  XFreeFont (si->dpy, pw->passwd_font);
-
-  if (pw->foreground != black && pw->foreground != white)
-    XFreeColors (si->dpy, cmap, &pw->foreground, 1, 0L);
-  if (pw->background != black && pw->background != white)
-    XFreeColors (si->dpy, cmap, &pw->background, 1, 0L);
-  if (pw->passwd_foreground != black && pw->passwd_foreground != white)
-    XFreeColors (si->dpy, cmap, &pw->passwd_foreground, 1, 0L);
-  if (pw->passwd_background != black && pw->passwd_background != white)
-    XFreeColors (si->dpy, cmap, &pw->passwd_background, 1, 0L);
-  if (pw->logo_foreground != black && pw->logo_foreground != white)
-    XFreeColors (si->dpy, cmap, &pw->logo_foreground, 1, 0L);
-  if (pw->logo_background != black && pw->logo_background != white)
-    XFreeColors (si->dpy, cmap, &pw->logo_background, 1, 0L);
-  if (pw->shadow_top != black && pw->shadow_top != white)
-    XFreeColors (si->dpy, cmap, &pw->shadow_top, 1, 0L);
-  if (pw->shadow_bottom != black && pw->shadow_bottom != white)
-    XFreeColors (si->dpy, cmap, &pw->shadow_bottom, 1, 0L);
-
-  memset (pw, 0, sizeof(*pw));
-  free (pw);
-
-  si->pw_data = 0;
-}
-
-static void
-undo_vp_motion (saver_info *si)
-{
-#ifdef HAVE_XF86VMODE
-  saver_preferences *p = &si->prefs;
-  int screen = 0;  /* always screen 0 */
-  saver_screen_info *ssi = &si->screens[screen];
-  int event, error, x, y;
-  Bool status;
-
-  if (ssi->blank_vp_x == -1 && ssi->blank_vp_y == -1)
-    return;
-  if (!XF86VidModeQueryExtension (si->dpy, &event, &error))
-    return;
-  if (!XF86VidModeGetViewPort (si->dpy, 0, &x, &y))
-    return;
-  if (ssi->blank_vp_x == x && ssi->blank_vp_y == y)
-    return;
-    
-  /* We're going to move the viewport.  The mouse has just been grabbed on
-     (and constrained to, thus warped to) the password window, so it is no
-     longer near the edge of the screen.  However, wait a bit anyway, just
-     to make sure the server drains its last motion event, so that the
-     screen doesn't continue to scroll after we've reset the viewport.
-   */
-  XSync (si->dpy, False);
-  usleep (250);  /* 1/4 second */
-  XSync (si->dpy, False);
-
-  status = XF86VidModeSetViewPort (si->dpy, screen,
-                                   ssi->blank_vp_x, ssi->blank_vp_y);
-
-  if (!status)
-    fprintf (stderr, "%s: unable to move vp from (%d,%d) back to (%d,%d)!\n",
-             blurb(), x, y, ssi->blank_vp_x, ssi->blank_vp_y);
-  else if (p->verbose_p)
-    fprintf (stderr, "%s: vp moved to (%d,%d); moved it back to (%d,%d).\n",
-             blurb(), x, y, ssi->blank_vp_x, ssi->blank_vp_y);
-
-#endif /* HAVE_XF86VMODE */
-}
-
-
-static void
-set_vp_mode_switch_locked (saver_info *si, Bool locked_p)
-{
-#ifdef HAVE_XF86VMODE
-  saver_preferences *p = &si->prefs;
-  int screen = 0;  /* always screen 0 */
-  int event, error;
-  Bool status;
-
-  if (!XF86VidModeQueryExtension (si->dpy, &event, &error))
-    return;
-  status = XF86VidModeLockModeSwitch (si->dpy, screen, locked_p);
-
-  if (!status)
-    fprintf (stderr, "%s: unable to %s vp switching!\n",
-             blurb(), (locked_p ? "lock" : "unlock"));
-  else if (p->verbose_p)
-    fprintf (stderr, "%s: %s vp switching.\n",
-             blurb(), (locked_p ? "locked" : "unlocked"));
-#endif /* HAVE_XF86VMODE */
-}
-
-
-\f
-/* Interactions
- */
-
-static void
-passwd_animate_timer (XtPointer closure, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-  int tick = 166;
-  passwd_dialog_data *pw = si->pw_data;
-
-  if (!pw) return;
-
-  pw->ratio -= (1.0 / ((double) si->prefs.passwd_timeout / (double) tick));
-  if (pw->ratio < 0)
-    {
-      pw->ratio = 0;
-      if (pw->state == pw_read)
-       pw->state = pw_time;
-    }
-
-  update_passwd_window (si, 0, pw->ratio);
-
-  if (pw->state == pw_read)
-    pw->timer = XtAppAddTimeOut (si->app, tick, passwd_animate_timer,
-                                (XtPointer) si);
-  else
-    pw->timer = 0;
-
-  idle_timer ((XtPointer) si, id);
-}
-
-
-static void
-handle_passwd_key (saver_info *si, XKeyEvent *event)
-{
-  saver_preferences *p = &si->prefs;
-  passwd_dialog_data *pw = si->pw_data;
-  int pw_size = sizeof (pw->typed_passwd) - 1;
-  char *typed_passwd = pw->typed_passwd;
-  char s[2];
-  char *stars = 0;
-  int i;
-  int size = XLookupString (event, s, 1, 0, 0);
-
-  if (size != 1) return;
-
-  s[1] = 0;
-
-  switch (*s)
-    {
-    case '\010': case '\177':                          /* Backspace */
-      if (!*typed_passwd)
-       XBell (si->dpy, 0);
-      else
-       typed_passwd [strlen(typed_passwd)-1] = 0;
-      break;
-
-    case '\025': case '\030':                          /* Erase line */
-      memset (typed_passwd, 0, pw_size);
-      break;
-
-    case '\012': case '\015':                          /* Enter */
-      if (pw->state != pw_read)
-       ;  /* already done? */
-      else if (typed_passwd[0] == 0)
-       pw->state = pw_null;
-      else
-        {
-          update_passwd_window (si, "Checking...", pw->ratio);
-          XSync (si->dpy, False);
-          if (passwd_valid_p (typed_passwd, p->verbose_p))
-            pw->state = pw_ok;
-          else
-            pw->state = pw_fail;
-          update_passwd_window (si, "", pw->ratio);
-        }
-      break;
-
-    default:
-      i = strlen (typed_passwd);
-      if (i >= pw_size-1)
-       XBell (si->dpy, 0);
-      else
-       {
-         typed_passwd [i] = *s;
-         typed_passwd [i+1] = 0;
-       }
-      break;
-    }
-
-  i = strlen(typed_passwd);
-  stars = (char *) malloc(i+1);
-  memset (stars, '*', i);
-  stars[i] = 0;
-  update_passwd_window (si, stars, pw->ratio);
-  free (stars);
-}
-
-
-static void
-passwd_event_loop (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  char *msg = 0;
-  XEvent event;
-  passwd_animate_timer ((XtPointer) si, 0);
-
-  while (si->pw_data && si->pw_data->state == pw_read)
-    {
-      XtAppNextEvent (si->app, &event);
-      if (event.xany.window == si->passwd_dialog && event.xany.type == Expose)
-       draw_passwd_window (si);
-      else if (event.xany.type == KeyPress)
-       handle_passwd_key (si, &event.xkey);
-      else
-       XtDispatchEvent (&event);
-    }
-
-  switch (si->pw_data->state)
-    {
-    case pw_ok:   msg = 0; break;
-    case pw_null: msg = ""; break;
-    case pw_time: msg = "Timed out!"; break;
-    default:      msg = "Sorry!"; break;
-    }
-
-  if (si->pw_data->state == pw_fail)
-    si->unlock_failures++;
-
-  if (p->verbose_p)
-    switch (si->pw_data->state)
-      {
-      case pw_ok:
-       fprintf (stderr, "%s: password correct.\n", blurb()); break;
-      case pw_fail:
-       fprintf (stderr, "%s: password incorrect!\n", blurb()); break;
-      case pw_null:
-      case pw_cancel:
-       fprintf (stderr, "%s: password entry cancelled.\n", blurb()); break;
-      case pw_time:
-       fprintf (stderr, "%s: password entry timed out.\n", blurb()); break;
-      default: break;
-      }
-
-#ifdef HAVE_SYSLOG
-  if (si->pw_data->state == pw_fail)
-    {
-      /* If they typed a password (as opposed to just hitting return) and
-        the password was invalid, log it.
-      */
-      struct passwd *pw = getpwuid (getuid ());
-      char *d = DisplayString (si->dpy);
-      char *u = (pw->pw_name ? pw->pw_name : "???");
-      int opt = 0;
-      int fac = 0;
-
-# ifdef LOG_PID
-      opt = LOG_PID;
-# endif
-
-# if defined(LOG_AUTHPRIV)
-      fac = LOG_AUTHPRIV;
-# elif defined(LOG_AUTH)
-      fac = LOG_AUTH;
-# else
-      fac = LOG_DAEMON;
-# endif
-
-      if (!d) d = "";
-      openlog (progname, opt, fac);
-      syslog (LOG_NOTICE, "FAILED LOGIN %d ON DISPLAY \"%s\", FOR \"%s\"",
-             si->unlock_failures, d, u);
-      closelog ();
-    }
-#endif /* HAVE_SYSLOG */
-
-  if (si->pw_data->state == pw_fail)
-    XBell (si->dpy, False);
-
-  if (si->pw_data->state == pw_ok && si->unlock_failures != 0)
-    {
-      if (si->unlock_failures == 1)
-       fprintf (real_stderr,
-                "%s: WARNING: 1 failed attempt to unlock the screen.\n",
-                blurb());
-      else
-       fprintf (real_stderr,
-                "%s: WARNING: %d failed attempts to unlock the screen.\n",
-                blurb(), si->unlock_failures);
-      fflush (real_stderr);
-
-      si->unlock_failures = 0;
-    }
-
-  if (msg)
-    {
-      si->pw_data->i_beam = 0;
-      update_passwd_window (si, msg, 0.0);
-      XSync (si->dpy, False);
-      sleep (1);
-
-      /* Swallow all pending KeyPress/KeyRelease events. */
-      {
-       XEvent e;
-       while (XCheckMaskEvent (si->dpy, KeyPressMask|KeyReleaseMask, &e))
-         ;
-      }
-    }
-}
-
-
-Bool
-unlock_p (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  Screen *screen = si->default_screen->screen;
-  Colormap cmap = DefaultColormapOfScreen (screen);
-  Bool status;
-
-  if (p->verbose_p)
-    fprintf (stderr, "%s: prompting for password.\n", blurb());
-
-  if (si->pw_data || si->passwd_dialog)
-    destroy_passwd_window (si);
-
-  make_passwd_window (si);
-  if (cmap) XInstallColormap (si->dpy, cmap);
-
-  passwd_event_loop (si);
-
-  status = (si->pw_data->state == pw_ok);
-  destroy_passwd_window (si);
-
-  cmap = si->default_screen->cmap;
-  if (cmap) XInstallColormap (si->dpy, cmap);
-
-  return status;
-}
-
-#endif /* !NO_LOCKING -- whole file */
diff --git a/driver/passwd-kerberos.c b/driver/passwd-kerberos.c
deleted file mode 100644 (file)
index 1e28d60..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/* kpasswd.c --- verify kerberos passwords.
- * written by Nat Lanza (magus@cs.cmu.edu) for
- * xscreensaver, Copyright (c) 1993-1997, 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifndef NO_LOCKING  /* whole file */
-
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <krb.h>
-#include <des.h>
-
-#if !defined(VMS) && !defined(HAVE_ADJUNCT_PASSWD)
-# include <pwd.h>
-#endif
-
-
-#ifdef __bsdi__
-# include <sys/param.h>
-# if _BSDI_VERSION >= 199608
-#  define BSD_AUTH
-# endif
-#endif /* __bsdi__ */
-
-/* blargh */
-#undef  Bool
-#undef  True
-#undef  False
-#define Bool  int
-#define True  1
-#define False 0
-
-/* The user information we need to store */
-static char realm[REALM_SZ];
-static char  name[ANAME_SZ];
-static char  inst[INST_SZ];
-static char *tk_file;
-
-
-/* Called at startup to grab user, instance, and realm information
-   from the user's ticketfile (remember, name.inst@realm). Since we're
-   using tf_get_pname(), this should work even if your kerberos username
-   isn't the same as your local username. We grab the ticket at startup
-   time so that even if your ticketfile dies while the screen's locked
-   we'll still have the information to unlock it.
-
-   Problems: the password dialog currently displays local username, so if
-     you have some non-standard name/instance when you run xscreensaver,
-     you'll need to remember what it was when unlocking, or else you lose.
-
-     Also, we use des_string_to_key(), so if you have an AFS password
-     (encrypted with ka_StringToKey()), you'll lose. Get a kerberos password;
-     it isn't that hard.
-
-   Like the original lock_init, we return false if something went wrong.
-   We don't use the arguments we're given, though.
- */
-Bool
-kerberos_lock_init (int argc, char **argv, Bool verbose_p)
-{
-    int k_errno;
-    
-    memset(name, 0, sizeof(name));
-    memset(inst, 0, sizeof(inst));
-    
-    /* find out where the user's keeping his tickets.
-       squirrel it away for later use. */
-    tk_file = tkt_string();
-
-    /* open ticket file or die trying. */
-    if ((k_errno = tf_init(tk_file, R_TKT_FIL))) {
-       return False;
-    }
-
-    /* same with principal and instance names */
-    if ((k_errno = tf_get_pname(name)) ||
-       (k_errno = tf_get_pinst(inst))) {
-       return False;
-    }
-
-    /* close the ticketfile to release the lock on it. */
-    tf_close();
-
-    /* figure out what realm we're authenticated to. this ought
-       to be the local realm, but it pays to be sure. */
-    if ((k_errno = krb_get_tf_realm(tk_file, realm))) {
-       return False;
-    }
-
-    /* last-minute sanity check on what we got. */
-    if ((strlen(name)+strlen(inst)+strlen(realm)+3) >
-       (REALM_SZ + ANAME_SZ + INST_SZ + 3)) {
-       return False;
-    }
-
-    /* success */
-    return True;
-}
-
-
-/* des_string_to_key() wants this. If C didn't suck, we could have an
-   anonymous function do this. Even a local one. But it does, so here
-   we are. Calling it ive_got_your_local_function_right_here_buddy()
-   would have been rude.
- */
-static int 
-key_to_key(char *user, char *instance, char *realm, char *passwd, C_Block key)
-{
-  memcpy(key, passwd, sizeof(des_cblock));
-  return (0);
-}
-
-/* Called to see if the user's typed password is valid. We do this by asking
-   the kerberos server for a ticket and checking to see if it gave us one.
-   We need to move the ticketfile first, or otherwise we end up updating the
-   user's tkfile with new tickets. This would break services like zephyr that
-   like to stay authenticated, and it would screw with AFS authentication at
-   some sites. So, we do a quick, painful hack with a tmpfile.
- */
-Bool
-kerberos_passwd_valid_p (const char *typed_passwd, Bool verbose_p)
-{
-    C_Block mitkey;
-    Bool success;
-    char *newtkfile;
-
-    /* temporarily switch to a new ticketfile.
-       I'm not using tmpnam() because it isn't entirely portable.
-       this could probably be fixed with autoconf. */
-    newtkfile = malloc(80 * sizeof(char));
-    memset(newtkfile, 0, sizeof(newtkfile));
-
-    sprintf(newtkfile, "/tmp/xscrn-%i", getpid());
-
-    krb_set_tkt_string(newtkfile);
-
-    /* encrypt the typed password. if you have an AFS password instead
-       of a kerberos one, you lose *right here*. If you want to use AFS
-       passwords, you can use ka_StringToKey() instead. As always, ymmv. */
-    des_string_to_key(typed_passwd, mitkey);
-
-    if (krb_get_in_tkt(name, inst, realm, "krbtgt", realm, DEFAULT_TKT_LIFE,
-                      key_to_key, NULL, mitkey) != 0) {
-       success = False;
-    } else {
-       success = True;
-    }
-
-    /* quickly block out the tempfile and password to prevent snooping,
-       then restore the old ticketfile and cleean up a bit. */
-    
-    dest_tkt();
-    krb_set_tkt_string(tk_file);
-    free(newtkfile);
-    memset(mitkey, 0, sizeof(mitkey));
-    
-
-    /* Did we verify successfully? */
-    return success;
-}
-
-#endif /* NO_LOCKING -- whole file */
diff --git a/driver/passwd-pam.c b/driver/passwd-pam.c
deleted file mode 100644 (file)
index 0d14e26..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-/* passwd-pam.c --- verifying typed passwords with PAM
- * (Pluggable Authentication Modules.)
- * written by Bill Nottingham <notting@redhat.com> (and jwz) for
- * xscreensaver, Copyright (c) 1993-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.
- *
- * Some PAM resources:
- *
- *    PAM home page:
- *    http://www.us.kernel.org/pub/linux/libs/pam/
- *
- *    PAM FAQ:
- *    http://www.us.kernel.org/pub/linux/libs/pam/FAQ
- *
- *    PAM Application Developers' Guide:
- *    http://www.us.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam_appl.html
- *
- *    PAM Mailing list archives:
- *    http://www.linuxhq.com/lnxlists/linux-pam/
- *
- *    Compatibility notes, especially between Linux and Solaris:
- *    http://www.contrib.andrew.cmu.edu/u/shadow/pam.html
- *
- *    The Open Group's PAM API documentation:
- *    http://www.opengroup.org/onlinepubs/8329799/pam_start.htm
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifndef NO_LOCKING  /* whole file */
-
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-extern char *blurb(void);
-
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <pwd.h>
-#include <grp.h>
-#include <security/pam_appl.h>
-
-#include <sys/stat.h>
-
-
-/* blargh */
-#undef  Bool
-#undef  True
-#undef  False
-#define Bool  int
-#define True  1
-#define False 0
-
-#undef countof
-#define countof(x) (sizeof((x))/sizeof(*(x)))
-
-static int pam_conversation (int nmsgs,
-                             const struct pam_message **msg,
-                             struct pam_response **resp,
-                             void *closure);
-
-struct pam_closure {
-  const char *user;
-  const char *typed_passwd;
-  Bool verbose_p;
-};
-
-
-#ifdef HAVE_PAM_FAIL_DELAY
-   /* We handle delays ourself.*/
-   /* Don't set this to 0 (Linux bug workaround.) */
-# define PAM_NO_DELAY(pamh) pam_fail_delay ((pamh), 1)
-#else  /* !HAVE_PAM_FAIL_DELAY */
-# define PAM_NO_DELAY(pamh) /* */
-#endif /* !HAVE_PAM_FAIL_DELAY */
-
-
-/* On SunOS 5.6, and on Linux with PAM 0.64, pam_strerror() takes two args.
-   On some other Linux systems with some other version of PAM (e.g.,
-   whichever Debian release comes with a 2.2.5 kernel) it takes one arg.
-   I can't tell which is more "recent" or "correct" behavior, so configure
-   figures out which is in use for us.  Shoot me!
- */
-#ifdef PAM_STRERROR_TWO_ARGS
-# define PAM_STRERROR(pamh, status) pam_strerror((pamh), (status))
-#else  /* !PAM_STRERROR_TWO_ARGS */
-# define PAM_STRERROR(pamh, status) pam_strerror((status))
-#endif /* !PAM_STRERROR_TWO_ARGS */
-
-
-/* PAM sucks in that there is no way to tell whether a particular service
-   is configured at all.  That is, there is no way to tell the difference
-   between "authentication of the FOO service is not allowed" and "the
-   user typed the wrong password."
-
-   On RedHat 5.1 systems, if a service name is not known, it defaults to
-   being not allowed (because the fallback service, /etc/pam.d/other, is
-   set to `pam_deny'.)
-
-   On Solaris 2.6 systems, unknown services default to authenticating normally.
-
-   So, we could simply require that the person who installs xscreensaver
-   set up an "xscreensaver" PAM service.  However, if we went that route,
-   it would have a really awful failure mode: the failure mode would be that
-   xscreensaver was willing to *lock* the screen, but would be unwilling to
-   *unlock* the screen.  (With the non-PAM password code, the analagous
-   situation -- security not being configured properly, for example do to the
-   executable not being installed as setuid root -- the failure mode is much
-   more palettable, in that xscreensaver will refuse to *lock* the screen,
-   because it can know up front that there is no password that will work.)
-
-   Another route would be to have the service name to consult be computed at
-   compile-time (perhaps with a configure option.)  However, that doesn't
-   really solve the problem, because it means that the same executable might
-   work fine on one machine, but refuse to unlock when run on another
-   machine.
-
-   Another alternative would be to look in /etc/pam.conf or /etc/pam.d/ at
-   runtime to see what services actually exist.  But I think that's no good,
-   because who is to say that the PAM info is actually specified in those
-   files?  Opening and reading those files is not a part of the PAM client
-   API, so it's not guarenteed to work on any given system.
-
-   An alternative I tried was to specify a list of services to try, and to
-   try them all in turn ("xscreensaver", "xlock", "xdm", and "login").
-   This worked, but it was slow (and I also had to do some contortions to
-   work around bugs in Linux PAM 0.64-3.)
-
-   So what we do today is, try PAM once, and if that fails, try the usual
-   getpwent() method.  So if PAM doesn't work, it will at least make an
-   attempt at looking up passwords in /etc/passwd or /etc/shadow instead.
-
-   This all kind of blows.  I'm not sure what else to do.
- */
-
-
-/* On SunOS 5.6, the `pam_conv.appdata_ptr' slot seems to be ignored, and
-   the `closure' argument to pc.conv always comes in as random garbage.
-   So we get around this by using a global variable instead.  Shoot me!
- */
-static void *suns_pam_implementation_blows = 0;
-
-
-/* This can be called at any time, and says whether the typed password
-   belongs to either the logged in user (real uid, not effective); or
-   to root.
- */
-Bool
-pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p)
-{
-  const char *service = PAM_SERVICE_NAME;
-  pam_handle_t *pamh = 0;
-  int status = -1;
-  struct pam_conv pc;
-  struct pam_closure c;
-  char *user = 0;
-
-  struct passwd *p = getpwuid (getuid ());
-  if (!p) return False;
-
-  user = strdup (p->pw_name);
-
-  c.user = user;
-  c.typed_passwd = typed_passwd;
-  c.verbose_p = verbose_p;
-
-  pc.conv = &pam_conversation;
-  pc.appdata_ptr = (void *) &c;
-
-  /* On SunOS 5.6, the `appdata_ptr' slot seems to be ignored, and the
-     `closure' argument to pc.conv always comes in as random garbage. */
-  suns_pam_implementation_blows = (void *) &c;
-
-
-  /* Initialize PAM.
-   */
-  status = pam_start (service, c.user, &pc, &pamh);
-  if (verbose_p)
-    fprintf (stderr, "%s: pam_start (\"%s\", \"%s\", ...) ==> %d (%s)\n",
-             blurb(), service, c.user,
-             status, PAM_STRERROR (pamh, status));
-  if (status != PAM_SUCCESS) goto DONE;
-
-  /* #### We should set PAM_TTY to the display we're using, but we
-     don't have that handy from here.  So set it to :0.0, which is a
-     good guess (and has the bonus of counting as a "secure tty" as
-     far as PAM is concerned...)
-   */
-  {
-    const char *tty = ":0.0";
-    status = pam_set_item (pamh, PAM_TTY, strdup(tty));
-    if (verbose_p)
-      fprintf (stderr, "%s:   pam_set_item (p, PAM_TTY, \"%s\") ==> %d (%s)\n",
-               blurb(), tty, status, PAM_STRERROR(pamh, status));
-  }
-
-  /* Try to authenticate as the current user.
-   */
-  PAM_NO_DELAY(pamh);
-  status = pam_authenticate (pamh, 0);
-  if (verbose_p)
-    fprintf (stderr, "%s:   pam_authenticate (...) ==> %d (%s)\n",
-             blurb(), status, PAM_STRERROR(pamh, status));
-  if (status == PAM_SUCCESS)  /* Win! */
-    goto DONE;
-
-  /* If that didn't work, set the user to root, and try to authenticate again.
-   */
-  c.user = "root";
-  status = pam_set_item (pamh, PAM_USER, strdup(c.user));
-  if (verbose_p)
-    fprintf (stderr, "%s:   pam_set_item(p, PAM_USER, \"%s\") ==> %d (%s)\n",
-             blurb(), c.user, status, PAM_STRERROR(pamh, status));
-  if (status != PAM_SUCCESS) goto DONE;
-
-  PAM_NO_DELAY(pamh);
-  status = pam_authenticate (pamh, 0);
-  if (verbose_p)
-    fprintf (stderr, "%s:   pam_authenticate (...) ==> %d (%s)\n",
-             blurb(), status, PAM_STRERROR(pamh, status));
-
- DONE:
-  if (user) free (user);
-  if (pamh)
-    {
-      int status2 = pam_end (pamh, status);
-      pamh = 0;
-      if (verbose_p)
-        fprintf (stderr, "%s: pam_end (...) ==> %d (%s)\n",
-                 blurb(), status2,
-                 (status2 == PAM_SUCCESS ? "Success" : "Failure"));
-    }
-  return (status == PAM_SUCCESS ? True : False);
-}
-
-
-Bool 
-pam_priv_init (int argc, char **argv, Bool verbose_p)
-{
-  /* We have nothing to do at init-time.
-     However, we might as well do some error checking.
-     If "/etc/pam.d" exists and is a directory, but "/etc/pam.d/xlock"
-     does not exist, warn that PAM probably isn't going to work.
-
-     This is a priv-init instead of a non-priv init in case the directory
-     is unreadable or something (don't know if that actually happens.)
-   */
-  const char   dir[] = "/etc/pam.d";
-  const char  file[] = "/etc/pam.d/" PAM_SERVICE_NAME;
-  const char file2[] = "/etc/pam.conf";
-  struct stat st;
-
-  if (stat (dir, &st) == 0 && st.st_mode & S_IFDIR)
-    {
-      if (stat (file, &st) != 0)
-        fprintf (stderr,
-                 "%s: warning: %s does not exist.\n"
-                 "%s: password authentication via PAM is unlikely to work.\n",
-                 blurb(), file, blurb());
-    }
-  else if (stat (file2, &st) == 0)
-    {
-      FILE *f = fopen (file2, "r");
-      if (f)
-        {
-          Bool ok = False;
-          char buf[255];
-          while (fgets (buf, sizeof(buf), f))
-            if (strstr (buf, PAM_SERVICE_NAME))
-              {
-                ok = True;
-                break;
-              }
-          fclose (f);
-          if (!ok)
-            {
-              fprintf (stderr,
-                  "%s: warning: %s does not list the `%s' service.\n"
-                  "%s: password authentication via PAM is unlikely to work.\n",
-                       blurb(), file2, PAM_SERVICE_NAME, blurb());
-            }
-        }
-      /* else warn about file2 existing but being unreadable? */
-    }
-  else
-    {
-      fprintf (stderr,
-               "%s: warning: neither %s nor %s exist.\n"
-               "%s: password authentication via PAM is unlikely to work.\n",
-               blurb(), file2, file, blurb());
-    }
-
-  /* Return true anyway, just in case. */
-  return True;
-}
-
-
-/* This is the function PAM calls to have a conversation with the user.
-   Really, this function should be the thing that pops up dialog boxes
-   as needed, and prompts for various strings.
-
-   But, for now, xscreensaver uses its normal password-prompting dialog
-   first, and then this function simply returns the result that has been
-   typed.
-
-   This means that if PAM was using a retina scanner for auth, xscreensaver
-   would prompt for a password; then pam_conversation() would be called
-   with a string like "Please look into the retina scanner".  The user
-   would never see this string, and the prompted-for password would be
-   ignored.
- */
-static int
-pam_conversation (int nmsgs,
-                  const struct pam_message **msg,
-                  struct pam_response **resp,
-                  void *closure)
-{
-  int replies = 0;
-  struct pam_response *reply = 0;
-  struct pam_closure *c = (struct pam_closure *) closure;
-
-  /* On SunOS 5.6, the `closure' argument always comes in as random garbage. */
-  c = (struct pam_closure *) suns_pam_implementation_blows;
-
-
-  reply = (struct pam_response *) calloc (nmsgs, sizeof (*reply));
-  if (!reply) return PAM_CONV_ERR;
-       
-  for (replies = 0; replies < nmsgs; replies++)
-    {
-      switch (msg[replies]->msg_style)
-        {
-        case PAM_PROMPT_ECHO_ON:
-          reply[replies].resp_retcode = PAM_SUCCESS;
-          reply[replies].resp = strdup (c->user);         /* freed by PAM */
-          if (c->verbose_p)
-            fprintf (stderr, "%s:     PAM ECHO_ON(\"%s\") ==> \"%s\"\n",
-                     blurb(), msg[replies]->msg,
-                     reply[replies].resp);
-          break;
-        case PAM_PROMPT_ECHO_OFF:
-          reply[replies].resp_retcode = PAM_SUCCESS;
-          reply[replies].resp = strdup (c->typed_passwd);   /* freed by PAM */
-          if (c->verbose_p)
-            fprintf (stderr, "%s:     PAM ECHO_OFF(\"%s\") ==> password\n",
-                     blurb(), msg[replies]->msg);
-          break;
-        case PAM_TEXT_INFO:
-          /* ignore it... */
-          reply[replies].resp_retcode = PAM_SUCCESS;
-          reply[replies].resp = 0;
-          if (c->verbose_p)
-            fprintf (stderr, "%s:     PAM TEXT_INFO(\"%s\") ==> ignored\n",
-                     blurb(), msg[replies]->msg);
-          break;
-        case PAM_ERROR_MSG:
-          /* ignore it... */
-          reply[replies].resp_retcode = PAM_SUCCESS;
-          reply[replies].resp = 0;
-          if (c->verbose_p)
-            fprintf (stderr, "%s:     PAM ERROR_MSG(\"%s\") ==> ignored\n",
-                     blurb(), msg[replies]->msg);
-          break;
-        default:
-          /* Must be an error of some sort... */
-          free (reply);
-          if (c->verbose_p)
-            fprintf (stderr, "%s:     PAM unknown %d(\"%s\") ==> ignored\n",
-                     blurb(), msg[replies]->msg_style, msg[replies]->msg);
-          return PAM_CONV_ERR;
-        }
-    }
-  *resp = reply;
-  return PAM_SUCCESS;
-}
-
-#endif /* NO_LOCKING -- whole file */
diff --git a/driver/passwd-pwent.c b/driver/passwd-pwent.c
deleted file mode 100644 (file)
index a2d5e0c..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/* passwd-pwent.c --- verifying typed passwords with the OS.
- * xscreensaver, Copyright (c) 1993-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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifndef NO_LOCKING  /* whole file */
-
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifdef HAVE_CRYPT_H
-# include <crypt.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#ifndef VMS
-# include <pwd.h>
-# include <grp.h>
-#else /* VMS */
-# include "vms-pwd.h"
-#endif /* VMS */
-
-
-#ifdef __bsdi__
-# include <sys/param.h>
-# if _BSDI_VERSION >= 199608
-#  define BSD_AUTH
-# endif
-#endif /* __bsdi__ */
-
-
-#if defined(HAVE_SHADOW_PASSWD)              /* passwds live in /etc/shadow */
-
-#   include <shadow.h>
-#   define PWTYPE   struct spwd *
-#   define PWPSLOT  sp_pwdp
-#   define GETPW    getspnam
-
-#elif defined(HAVE_ENHANCED_PASSWD)      /* passwds live in /tcb/files/auth/ */
-                                     /* M.Matsumoto <matsu@yao.sharp.co.jp> */
-#   include <sys/security.h>
-#   include <prot.h>
-
-#   define PWTYPE   struct pr_passwd *
-#   define PWPSLOT  ufld.fd_encrypt
-#   define GETPW    getprpwnam
-
-#elif defined(HAVE_ADJUNCT_PASSWD)
-
-#   include <sys/label.h>
-#   include <sys/audit.h>
-#   include <pwdadj.h>
-
-#   define PWTYPE   struct passwd_adjunct *
-#   define PWPSLOT  pwa_passwd
-#   define GETPW    getpwanam
-
-#elif defined(HAVE_HPUX_PASSWD)
-
-#   include <hpsecurity.h>
-#   include <prot.h>
-
-#   define PWTYPE   struct s_passwd *
-#   define PWPSLOT  pw_passwd
-#   define GETPW    getspwnam
-
-#   define HAVE_BIGCRYPT
-
-#endif
-
-
-/* blargh */
-#undef  Bool
-#undef  True
-#undef  False
-#define Bool  int
-#define True  1
-#define False 0
-
-
-extern const char *blurb(void);
-
-static char *encrypted_root_passwd = 0;
-static char *encrypted_user_passwd = 0;
-
-#ifdef VMS
-# define ROOT "SYSTEM"
-#else
-# define ROOT "root"
-#endif
-
-
-
-#ifndef VMS
-
-static char *
-user_name (void)
-{
-  /* I think that just checking $USER here is not the best idea. */
-
-  const char *u = 0;
-
-  /* It has been reported that getlogin() returns the wrong user id on some
-     very old SGI systems...  And I've seen it return the string "rlogin"
-     sometimes!  Screw it, using getpwuid() should be enough...
-   */
-/* u = (char *) getlogin ();
- */
-
-  /* getlogin() fails if not attached to a terminal; in that case, use
-     getpwuid().  (Note that in this case, we're not doing shadow stuff, since
-     all we're interested in is the name, not the password.  So that should
-     still work.  Right?) */
-  if (!u || !*u)
-    {
-      struct passwd *p = getpwuid (getuid ());
-      u = (p ? p->pw_name : 0);
-    }
-
-  return (u ? strdup(u) : 0);
-}
-
-#else  /* VMS */
-
-static char *
-user_name (void)
-{
-  char *u = getenv("USER");
-  return (u ? strdup(u) : 0);
-}
-
-#endif /* VMS */
-
-
-static Bool
-passwd_known_p (const char *pw)
-{
-  return (pw &&
-         pw[0] != '*' &&       /* This would be sensible...         */
-         strlen(pw) > 4);      /* ...but this is what Solaris does. */
-}
-
-
-static char *
-get_encrypted_passwd(const char *user)
-{
-  char *result = 0;
-
-#ifdef PWTYPE
-  if (user && *user && !result)
-    {                                  /* First check the shadow passwords. */
-      PWTYPE p = GETPW((char *) user);
-      if (p && passwd_known_p (p->PWPSLOT))
-       result = strdup(p->PWPSLOT);
-    }
-#endif /* PWTYPE */
-
-  if (user && *user && !result)
-    {                                  /* Check non-shadow passwords too. */
-      struct passwd *p = getpwnam(user);
-      if (p && passwd_known_p (p->pw_passwd))
-       result = strdup(p->pw_passwd);
-    }
-
-  /* The manual for passwd(4) on HPUX 10.10 says:
-
-         Password aging is put in effect for a particular user if his
-         encrypted password in the password file is followed by a comma and
-         a nonnull string of characters from the above alphabet.  This
-         string defines the "age" needed to implement password aging.
-
-     So this means that passwd->pw_passwd isn't simply a string of cyphertext,
-     it might have trailing junk.  So, if there is a comma in the string, and
-     that comma is beyond position 13, terminate the string before the comma.
-   */
-  if (result && strlen(result) > 13)
-    {
-      char *s = strchr (result+13, ',');
-      if (s)
-       *s = 0;
-    }
-
-#ifndef HAVE_PAM
-  /* We only issue this warning if not compiled with support for PAM.
-     If we're using PAM, it's not unheard of that normal pwent passwords
-     would be unavailable. */
-
-  if (!result)
-    fprintf (stderr, "%s: couldn't get password of \"%s\"\n",
-            blurb(), (user ? user : "(null)"));
-#endif /* !HAVE_PAM */
-
-  return result;
-}
-
-
-
-/* This has to be called before we've changed our effective user ID,
-   because it might need privileges to get at the encrypted passwords.
-   Returns false if we weren't able to get any passwords, and therefore,
-   locking isn't possible.  (It will also have written to stderr.)
- */
-
-#ifndef VMS
-
-Bool
-pwent_priv_init (int argc, char **argv, Bool verbose_p)
-{
-  char *u;
-
-#ifdef HAVE_ENHANCED_PASSWD
-  set_auth_parameters(argc, argv);
-  check_auth_parameters();
-#endif /* HAVE_DEC_ENHANCED */
-
-  u = user_name();
-  encrypted_user_passwd = get_encrypted_passwd(u);
-  encrypted_root_passwd = get_encrypted_passwd(ROOT);
-  if (u) free (u);
-
-  if (encrypted_user_passwd)
-    return True;
-  else
-    return False;
-}
-
-
-Bool
-pwent_lock_init (int argc, char **argv, Bool verbose_p)
-{
-  if (encrypted_user_passwd)
-    return True;
-  else
-    return False;
-}
-
-
-
-static Bool
-passwds_match_p (const char *cleartext, const char *ciphertext)
-{
-  char *s = 0;  /* note that on some systems, crypt() may return null */
-
-  s = (char *) crypt (cleartext, ciphertext);
-  if (s && !strcmp (s, ciphertext))
-    return True;
-
-#ifdef HAVE_BIGCRYPT
-  /* There seems to be no way to tell at runtime if an HP machine is in
-     "trusted" mode, and thereby, which of crypt() or bigcrypt() we should
-     be calling to compare passwords.  So call them both, and see which
-     one works. */
-
-  s = (char *) bigcrypt (cleartext, ciphertext);
-  if (s && !strcmp (s, ciphertext))
-    return True;
-
-#endif /* HAVE_BIGCRYPT */
-  
-  return False;
-}
-
-
-
-/* This can be called at any time, and says whether the typed password
-   belongs to either the logged in user (real uid, not effective); or
-   to root.
- */
-Bool
-pwent_passwd_valid_p (const char *typed_passwd, Bool verbose_p)
-{
-  if (encrypted_user_passwd &&
-      passwds_match_p (typed_passwd, encrypted_user_passwd))
-    return True;
-
-  /* do not allow root to have a null password. */
-  else if (typed_passwd[0] &&
-          encrypted_root_passwd &&
-           passwds_match_p (typed_passwd, encrypted_root_passwd))
-    return True;
-
-  else
-    return False;
-}
-
-#else  /* VMS */
-Bool pwent_lock_init (int argc, char **argv, Bool verbose_p) { return True; }
-#endif /* VMS */
-
-#endif /* NO_LOCKING -- whole file */
diff --git a/driver/passwd.c b/driver/passwd.c
deleted file mode 100644 (file)
index b55334c..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* passwd.c --- verifying typed passwords with the OS.
- * xscreensaver, Copyright (c) 1993-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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifndef NO_LOCKING  /* whole file */
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-extern char *blurb(void);
-
-
-/* blargh */
-#undef  Bool
-#undef  True
-#undef  False
-#define Bool  int
-#define True  1
-#define False 0
-
-#undef countof
-#define countof(x) (sizeof((x))/sizeof(*(x)))
-
-struct auth_methods {
-  const char *name;
-  Bool (*init) (int argc, char **argv, Bool verbose_p);
-  Bool (*priv_init) (int argc, char **argv, Bool verbose_p);
-  Bool (*valid_p) (const char *typed_passwd, Bool verbose_p);
-  Bool initted_p;
-  Bool priv_initted_p;
-};
-
-
-#ifdef HAVE_KERBEROS
-extern Bool kerberos_lock_init (int argc, char **argv, Bool verbose_p);
-extern Bool kerberos_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
-#endif
-#ifdef HAVE_PAM
-extern Bool pam_priv_init (int argc, char **argv, Bool verbose_p);
-extern Bool pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
-#endif
-extern Bool pwent_lock_init (int argc, char **argv, Bool verbose_p);
-extern Bool pwent_priv_init (int argc, char **argv, Bool verbose_p);
-extern Bool pwent_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
-
-
-/* The authorization methods to try, in order.
-   Note that the last one (the pwent version) is actually two auth methods,
-   since that code tries shadow passwords, and then non-shadow passwords.
-   (It's all in the same file since the APIs are randomly nearly-identical.)
- */
-struct auth_methods methods[] = {
-# ifdef HAVE_KERBEROS
-  { "Kerberos",         kerberos_lock_init, 0, kerberos_passwd_valid_p,
-                        False, False },
-# endif
-# ifdef HAVE_PAM
-  { "PAM",              0, pam_priv_init, pam_passwd_valid_p, 
-                        False, False },
-# endif
-  { "normal",           pwent_lock_init, pwent_priv_init, pwent_passwd_valid_p,
-                        False, False }
-};
-
-
-Bool
-lock_priv_init (int argc, char **argv, Bool verbose_p)
-{
-  int i;
-  Bool any_ok = False;
-  for (i = 0; i < countof(methods); i++)
-    {
-      if (!methods[i].priv_init)
-        methods[i].priv_initted_p = True;
-      else
-        methods[i].priv_initted_p = methods[i].priv_init (argc, argv,
-                                                          verbose_p);
-
-      if (methods[i].priv_initted_p)
-        any_ok = True;
-      else if (verbose_p)
-        fprintf (stderr, "%s: initialization of %s passwords failed.\n",
-                 blurb(), methods[i].name);
-    }
-  return any_ok;
-}
-
-
-Bool
-lock_init (int argc, char **argv, Bool verbose_p)
-{
-  int i;
-  Bool any_ok = False;
-  for (i = 0; i < countof(methods); i++)
-    {
-      if (!methods[i].priv_initted_p)  /* Bail if lock_priv_init failed. */
-        continue;
-
-      if (!methods[i].init)
-        methods[i].initted_p = True;
-      else
-        methods[i].initted_p = methods[i].init (argc, argv, verbose_p);
-
-      if (methods[i].initted_p)
-        any_ok = True;
-      else if (verbose_p)
-        fprintf (stderr, "%s: initialization of %s passwords failed.\n",
-                 blurb(), methods[i].name);
-    }
-  return any_ok;
-}
-
-
-Bool 
-passwd_valid_p (const char *typed_passwd, Bool verbose_p)
-{
-  int i, j;
-  for (i = 0; i < countof(methods); i++)
-    {
-      if (methods[i].initted_p &&
-          methods[i].valid_p (typed_passwd, verbose_p))
-        {
-          /* If we successfully authenticated by method N, but attempting
-             to authenticate by method N-1 failed, mention that (since if
-             an earlier authentication method fails and a later one succeeds,
-             something screwy is probably going on.)
-           */
-          if (verbose_p && i > 0)
-            {
-              for (j = 0; j < i; j++)
-                if (methods[j].initted_p)
-                  fprintf (stderr,
-                           "%s: authentication via %s passwords failed.\n",
-                           blurb(), methods[j].name);
-              fprintf (stderr,
-                       "%s: but authentication via %s passwords succeeded.\n",
-                       blurb(), methods[i].name);
-            }
-
-          return True;         /* Successfully authenticated! */
-        }
-    }
-
-  return False;                        /* Authentication failure. */
-}
-
-#endif /* NO_LOCKING -- whole file */
diff --git a/driver/prefs.c b/driver/prefs.c
deleted file mode 100644 (file)
index cdf9579..0000000
+++ /dev/null
@@ -1,999 +0,0 @@
-/* dotfile.c --- management of the ~/.xscreensaver file.
- * xscreensaver, Copyright (c) 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xresource.h>
-
-#ifndef VMS
-# include <pwd.h>
-#else /* VMS */
-# include "vms-pwd.h"
-#endif /* VMS */
-
-
-/* This file doesn't need the Xt headers, so stub these types out... */
-#undef XtPointer
-#define XtAppContext void*
-#define XtIntervalId void*
-#define XtPointer    void*
-#define Widget       void*
-
-
-/* Just in case there's something pathological about stat.h... */
-#ifndef  S_IRUSR
-# define S_IRUSR 00400
-#endif
-#ifndef  S_IWUSR
-# define S_IWUSR 00200
-#endif
-#ifndef  S_IXUSR
-# define S_IXUSR 00100
-#endif
-#ifndef  S_IXGRP
-# define S_IXGRP 00010
-#endif
-#ifndef  S_IXOTH
-# define S_IXOTH 00001
-#endif
-
-
-#include "prefs.h"
-#include "resources.h"
-
-
-extern char *progname;
-extern char *progclass;
-extern const char *blurb (void);
-
-
-
-static void get_screenhacks (saver_preferences *p);
-
-
-const char *
-init_file_name (void)
-{
-  static char *file = 0;
-
-  if (!file)
-    {
-      struct passwd *p = getpwuid (getuid ());
-
-      if (!p || !p->pw_name || !*p->pw_name)
-       {
-         fprintf (stderr, "%s: couldn't get user info of uid %d\n",
-                  blurb(), getuid ());
-         file = "";
-       }
-      else if (!p->pw_dir || !*p->pw_dir)
-       {
-         fprintf (stderr, "%s: couldn't get home directory of \"%s\"\n",
-                  blurb(), (p->pw_name ? p->pw_name : "???"));
-         file = "";
-       }
-      else
-       {
-         const char *home = p->pw_dir;
-         const char *name = ".xscreensaver";
-         file = (char *) malloc(strlen(home) + strlen(name) + 2);
-         strcpy(file, home);
-         if (!*home || home[strlen(home)-1] != '/')
-           strcat(file, "/");
-         strcat(file, name);
-       }
-    }
-
-  if (file && *file)
-    return file;
-  else
-    return 0;
-}
-
-
-static const char *
-init_file_tmp_name (void)
-{
-  static char *file = 0;
-  if (!file)
-    {
-      const char *name = init_file_name();
-      const char *suffix = ".tmp";
-      if (!name || !*name)
-       file = "";
-      else
-       {
-         file = (char *) malloc(strlen(name) + strlen(suffix) + 2);
-         strcpy(file, name);
-         strcat(file, suffix);
-       }
-    }
-
-  if (file && *file)
-    return file;
-  else
-    return 0;
-}
-
-
-static const char * const prefs[] = {
-  "timeout",
-  "cycle",
-  "lock",
-  "lockVTs",
-  "lockTimeout",
-  "passwdTimeout",
-  "visualID",
-  "installColormap",
-  "verbose",
-  "timestamp",
-  "splash",                    /* not saved -- same as "splashDuration: 0" */
-  "splashDuration",
-  "demoCommand",
-  "prefsCommand",
-  "helpURL",
-  "loadURL",
-  "nice",
-  "fade",
-  "unfade",
-  "fadeSeconds",
-  "fadeTicks",
-  "captureStderr",
-  "captureStdout",             /* not saved -- obsolete */
-  "font",
-  "",
-  "programs",
-  "",
-  "pointerPollTime",
-  "windowCreationTimeout",
-  "initialDelay",
-  "sgiSaverExtension",
-  "mitSaverExtension",
-  "xidleExtension",
-  "procInterrupts",
-  "overlayStderr",
-  "overlayTextBackground",     /* not saved -- X resources only */
-  "overlayTextForeground",     /* not saved -- X resources only */
-  "bourneShell",               /* not saved -- X resources only */
-  0
-};
-
-static char *
-strip (char *s)
-{
-  char *s2;
-  while (*s == '\t' || *s == ' ' || *s == '\r' || *s == '\n')
-    s++;
-  for (s2 = s; *s2; s2++)
-    ;
-  for (s2--; s2 >= s; s2--) 
-    if (*s2 == '\t' || *s2 == ' ' || *s2 == '\r' || *s2 =='\n') 
-      *s2 = 0;
-    else
-      break;
-  return s;
-}
-
-\f
-/* Reading
- */
-
-static int
-handle_entry (XrmDatabase *db, const char *key, const char *value,
-             const char *filename, int line)
-{
-  int i;
-  for (i = 0; prefs[i]; i++)
-    if (*prefs[i] && !strcasecmp(key, prefs[i]))
-      {
-       char *val = strdup(value);
-       char *spec = (char *) malloc(strlen(progclass) + strlen(prefs[i]) +10);
-       strcpy(spec, progclass);
-       strcat(spec, ".");
-       strcat(spec, prefs[i]);
-
-       XrmPutStringResource (db, spec, val);
-
-       free(spec);
-       free(val);
-       return 0;
-      }
-
-  fprintf(stderr, "%s: %s:%d: unknown option \"%s\"\n",
-         blurb(), filename, line, key);
-  return 1;
-}
-
-
-static int
-parse_init_file (saver_preferences *p)
-{
-  time_t write_date = 0;
-  const char *name = init_file_name();
-  int line = 0;
-  struct stat st;
-  FILE *in;
-  int buf_size = 1024;
-  char *buf;
-
-  if (!name) return 0;
-
-  if (stat(name, &st) != 0)
-    {
-      p->init_file_date = 0;
-      return 0;
-    }
-
-  in = fopen(name, "r");
-  if (!in)
-    {
-      char *buf = (char *) malloc(1024 + strlen(name));
-      sprintf(buf, "%s: error reading \"%s\"", blurb(), name);
-      perror(buf);
-      free(buf);
-      return -1;
-    }
-
-  if (fstat (fileno(in), &st) == 0)
-    {
-      write_date = st.st_mtime;
-    }
-  else
-    {
-      char *buf = (char *) malloc(1024 + strlen(name));
-      sprintf(buf, "%s: couldn't re-stat \"%s\"", blurb(), name);
-      perror(buf);
-      free(buf);
-      return -1;
-    }
-
-  buf = (char *) malloc(buf_size);
-
-  while (fgets (buf, buf_size-1, in))
-    {
-      char *key, *value;
-      int L = strlen(buf);
-
-      line++;
-      while (L > 2 &&
-            (buf[L-1] != '\n' ||       /* whole line didn't fit in buffer */
-             buf[L-2] == '\\'))        /* or line ended with backslash */
-       {
-         if (buf[L-2] == '\\')         /* backslash-newline gets swallowed */
-           {
-             buf[L-2] = 0;
-             L -= 2;
-           }
-         buf_size += 1024;
-         buf = (char *) realloc(buf, buf_size);
-         if (!buf) exit(1);
-
-         line++;
-         if (!fgets (buf + L, buf_size-L-1, in))
-           break;
-         L = strlen(buf);
-       }
-
-      /* Now handle other backslash escapes. */
-      {
-       int i, j;
-       for (i = 0; buf[i]; i++)
-         if (buf[i] == '\\')
-           {
-             switch (buf[i+1])
-               {
-               case 'n': buf[i] = '\n'; break;
-               case 'r': buf[i] = '\r'; break;
-               case 't': buf[i] = '\t'; break;
-               default:  buf[i] = buf[i+1]; break;
-               }
-             for (j = i+2; buf[j]; j++)
-               buf[j-1] = buf[j];
-             buf[j-1] = 0;
-           }
-      }
-
-      key = strip(buf);
-
-      if (*key == '#' || *key == '!' || *key == ';' ||
-         *key == '\n' || *key == 0)
-       continue;
-
-      value = strchr (key, ':');
-      if (!value)
-       {
-         fprintf(stderr, "%s: %s:%d: unparsable line: %s\n", blurb(),
-                 name, line, key);
-         continue;
-       }
-      else
-       {
-         *value++ = 0;
-         value = strip(value);
-       }
-
-      if (!p->db) abort();
-      handle_entry (&p->db, key, value, name, line);
-    }
-  free(buf);
-
-  p->init_file_date = write_date;
-  return 0;
-}
-
-
-Bool
-init_file_changed_p (saver_preferences *p)
-{
-  const char *name = init_file_name();
-  struct stat st;
-
-  if (!name) return False;
-
-  if (stat(name, &st) != 0)
-    return False;
-
-  if (p->init_file_date == st.st_mtime)
-    return False;
-
-  return True;
-}
-
-\f
-/* Writing
- */
-
-static int
-tab_to (FILE *out, int from, int to)
-{
-  int tab_width = 8;
-  int to_mod = (to / tab_width) * tab_width;
-  while (from < to_mod)
-    {
-      fprintf(out, "\t");
-      from = (((from / tab_width) + 1) * tab_width);
-    }
-  while (from < to)
-    {
-      fprintf(out, " ");
-      from++;
-    }
-  return from;
-}
-
-static void
-write_entry (FILE *out, const char *key, const char *value)
-{
-  char *v = strdup(value ? value : "");
-  char *v2 = v;
-  char *nl = 0;
-  int col;
-  Bool do_visual_kludge = (!strcmp(key, "programs"));
-  Bool do_wrap = do_visual_kludge;
-  int tab = (do_visual_kludge ? 16 : 23);
-  int tab2 = 3;
-  Bool first = True;
-
-  fprintf(out, "%s:", key);
-  col = strlen(key) + 1;
-
-  while (1)
-    {
-      char *s;
-      Bool disabled_p = False;
-
-      v2 = strip(v2);
-      nl = strchr(v2, '\n');
-      if (nl)
-       *nl = 0;
-
-      if (do_visual_kludge && *v2 == '-')
-       {
-         disabled_p = True;
-         v2++;
-         v2 = strip(v2);
-       }
-
-      if (first && disabled_p)
-       first = False;
-
-      if (first)
-       first = False;
-      else
-       {
-         col = tab_to(out, col, 75);
-         fprintf(out, " \\n\\\n");
-         col = 0;
-       }
-
-      if (disabled_p)
-       {
-         fprintf(out, "-");
-         col++;
-       }
-
-      s = (do_visual_kludge ? strpbrk(v2, " \t\n:") : 0);
-      if (s && *s == ':')
-       col = tab_to (out, col, tab2);
-      else
-       col = tab_to (out, col, tab);
-
-      if (do_wrap &&
-         strlen(v2) + col > 75)
-       {
-         int L = strlen(v2);
-         int start = 0;
-         int end = start;
-         while (start < L)
-           {
-             while (v2[end] == ' ' || v2[end] == '\t')
-               end++;
-             while (v2[end] != ' ' && v2[end] != '\t' &&
-                    v2[end] != '\n' && v2[end] != 0)
-               end++;
-             if (col + (end - start) >= 74)
-               {
-                 col = tab_to (out, col, 75);
-                 fprintf(out, "   \\\n");
-                 col = tab_to (out, 0, tab + 2);
-                 while (v2[start] == ' ' || v2[start] == '\t')
-                   start++;
-               }
-
-             while (start < end)
-               {
-                 fputc(v2[start++], out);
-                 col++;
-               }
-           }
-       }
-      else
-       {
-         fprintf (out, "%s", v2);
-         col += strlen(v2);
-       }
-
-      if (nl)
-       v2 = nl + 1;
-      else
-       break;
-    }
-
-  fprintf(out, "\n");
-  free(v);
-}
-
-void
-write_init_file (saver_preferences *p, const char *version_string)
-{
-  const char *name = init_file_name();
-  const char *tmp_name = init_file_tmp_name();
-  struct stat st;
-  int i, j;
-
-  /* Kludge, since these aren't in the saver_preferences struct as strings...
-   */
-  char *visual_name;
-  char *programs;
-  Bool capture_stderr_p;
-  Bool overlay_stderr_p;
-  char *stderr_font;
-  FILE *out;
-
-  if (!name) return;
-
-  if (p->verbose_p)
-    fprintf (stderr, "%s: writing \"%s\".\n", blurb(), name);
-
-  unlink (tmp_name);
-  out = fopen(tmp_name, "w");
-  if (!out)
-    {
-      char *buf = (char *) malloc(1024 + strlen(name));
-      sprintf(buf, "%s: error writing \"%s\"", blurb(), name);
-      perror(buf);
-      free(buf);
-      return;
-    }
-
-  /* Give the new .xscreensaver file the same permissions as the old one;
-     except ensure that it is readable and writable by owner, and not
-     executable.
-   */
-  if (stat(name, &st) == 0)
-    {
-      mode_t mode = st.st_mode;
-      mode |= S_IRUSR | S_IWUSR;
-      mode &= ~(S_IXUSR | S_IXGRP | S_IXOTH);
-      if (fchmod (fileno(out), mode) != 0)
-       {
-         char *buf = (char *) malloc(1024 + strlen(name));
-         sprintf (buf, "%s: error fchmodding \"%s\" to 0%o", blurb(),
-                  tmp_name, (unsigned int) mode);
-         perror(buf);
-         free(buf);
-         return;
-       }
-    }
-
-  /* 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");
-
-  i = 0;
-  for (j = 0; j < p->screenhacks_count; j++)
-    i += strlen(p->screenhacks[j]) + 2;
-  {
-    char *ss = programs = (char *) malloc(i + 10);
-    *ss = 0;
-    for (j = 0; j < p->screenhacks_count; j++)
-      {
-       strcat(ss, p->screenhacks[j]);
-       ss += strlen(ss);
-       *ss++ = '\n';
-       *ss = 0;
-      }
-  }
-
-  {
-    struct passwd *pw = getpwuid (getuid ());
-    char *whoami = (pw && pw->pw_name && *pw->pw_name
-                   ? pw->pw_name
-                   : "<unknown>");
-    time_t now = time ((time_t *) 0);
-    char *timestr = (char *) ctime (&now);
-    char *nl = (char *) strchr (timestr, '\n');
-    if (nl) *nl = 0;
-    fprintf (out,
-            "# %s Preferences File\n"
-            "# Written by %s %s for %s on %s.\n"
-            "# http://www.jwz.org/xscreensaver/\n"
-            "\n",
-            progclass, progname, version_string, whoami, timestr);
-  }
-
-  for (j = 0; prefs[j]; j++)
-    {
-      char buf[255];
-      const char *pr = prefs[j];
-      enum pref_type { pref_str, pref_int, pref_bool, pref_time
-      } type = pref_str;
-      const char *s = 0;
-      int i = 0;
-      Bool b = False;
-      Time t = 0;
-
-      if (pr && !*pr)
-       {
-         fprintf(out, "\n");
-         continue;
-       }
-
-# undef CHECK
-# define CHECK(X) else if (!strcmp(pr, X))
-      if (!pr || !*pr)         ;
-      CHECK("timeout")         type = pref_time, t = p->timeout;
-      CHECK("cycle")           type = pref_time, t = p->cycle;
-      CHECK("lock")            type = pref_bool, b = p->lock_p;
-# if 0 /* #### not ready yet */
-      CHECK("lockVTs")         type = pref_bool, b = p->lock_vt_p;
-# else
-      CHECK("lockVTs")         continue;  /* don't save */
-# endif
-      CHECK("lockTimeout")     type = pref_time, t = p->lock_timeout;
-      CHECK("passwdTimeout")   type = pref_time, t = p->passwd_timeout;
-      CHECK("visualID")                type = pref_str,  s =    visual_name;
-      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("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;
-      CHECK("helpURL")         type = pref_str,  s = p->help_url;
-      CHECK("loadURL")         type = pref_str,  s = p->load_url_command;
-      CHECK("nice")            type = pref_int,  i = p->nice_inferior;
-      CHECK("fade")            type = pref_bool, b = p->fade_p;
-      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("captureStdout")   continue;  /* don't save */
-      CHECK("font")            type = pref_str,  s =    stderr_font;
-      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;
-      CHECK("initialDelay")    type = pref_time, t = p->initial_delay;
-      CHECK("sgiSaverExtension")type = pref_bool, b=p->use_sgi_saver_extension;
-      CHECK("mitSaverExtension")type = pref_bool, b=p->use_mit_saver_extension;
-      CHECK("xidleExtension")  type = pref_bool, b = p->use_xidle_extension;
-      CHECK("procInterrupts")  type = pref_bool, b = p->use_proc_interrupts;
-      CHECK("overlayStderr")   type = pref_bool, b = overlay_stderr_p;
-      CHECK("overlayTextBackground") continue;  /* don't save */
-      CHECK("overlayTextForeground") continue;  /* don't save */
-      CHECK("bourneShell")     continue;
-      else                     abort();
-# undef CHECK
-
-      switch (type)
-       {
-       case pref_str:
-         break;
-       case pref_int:
-         sprintf(buf, "%d", i);
-         s = buf;
-         break;
-       case pref_bool:
-         s = b ? "True" : "False";
-         break;
-       case pref_time:
-         {
-           unsigned int hour = 0, min = 0, sec = (unsigned int) (t/1000);
-           if (sec >= 60)
-             {
-               min += (sec / 60);
-               sec %= 60;
-             }
-           if (min >= 60)
-             {
-               hour += (min / 60);
-               min %= 60;
-             }
-           sprintf (buf, "%u:%02u:%02u", hour, min, sec);
-           s = buf;
-         }
-         break;
-       default:
-         abort();
-         break;
-       }
-      write_entry (out, pr, s);
-    }
-
-  fprintf(out, "\n");
-
-  if (visual_name) free(visual_name);
-  if (stderr_font) free(stderr_font);
-  if (programs) free(programs);
-
-  if (fclose(out) == 0)
-    {
-      time_t write_date = 0;
-
-      if (stat(tmp_name, &st) == 0)
-       {
-         write_date = st.st_mtime;
-       }
-      else
-       {
-         char *buf = (char *) malloc(1024 + strlen(tmp_name) + strlen(name));
-         sprintf(buf, "%s: couldn't stat \"%s\"", blurb(), tmp_name);
-         perror(buf);
-         unlink (tmp_name);
-         free(buf);
-         return;
-       }
-
-      if (rename (tmp_name, name) != 0)
-       {
-         char *buf = (char *) malloc(1024 + strlen(tmp_name) + strlen(name));
-         sprintf(buf, "%s: error renaming \"%s\" to \"%s\"",
-                 blurb(), tmp_name, name);
-         perror(buf);
-         unlink (tmp_name);
-         free(buf);
-         return;
-       }
-      else
-       {
-         p->init_file_date = write_date;
-
-         /* Since the .xscreensaver file is used for IPC, let's try and make
-            sure that the bits actually land on the disk right away. */
-         sync ();
-       }
-    }
-  else
-    {
-      char *buf = (char *) malloc(1024 + strlen(name));
-      sprintf(buf, "%s: error closing \"%s\"", blurb(), name);
-      perror(buf);
-      free(buf);
-      unlink (tmp_name);
-      return;
-    }
-}
-
-\f
-/* Parsing the resource database
- */
-
-
-/* Populate `saver_preferences' with the contents of the resource database.
-   Note that this may be called multiple times -- it is re-run each time
-   the ~/.xscreensaver file is reloaded.
-
-   This function can be very noisy, since it issues resource syntax errors
-   and so on.
- */
-void
-load_init_file (saver_preferences *p)
-{
-  static Bool first_time = True;
-  
-  if (parse_init_file (p) != 0)                /* file might have gone away */
-    if (!first_time) return;
-
-  first_time = False;
-
-  p->xsync_p       = get_boolean_resource ("synchronous", "Synchronous");
-  p->verbose_p     = get_boolean_resource ("verbose", "Boolean");
-  p->timestamp_p    = get_boolean_resource ("timestamp", "Boolean");
-  p->lock_p        = get_boolean_resource ("lock", "Boolean");
-  p->lock_vt_p     = get_boolean_resource ("lockVTs", "Boolean");
-  p->fade_p        = get_boolean_resource ("fade", "Boolean");
-  p->unfade_p      = get_boolean_resource ("unfade", "Boolean");
-  p->fade_seconds   = 1000 * get_seconds_resource ("fadeSeconds", "Time");
-  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->initial_delay   = 1000 * get_seconds_resource ("initialDelay", "Time");
-  p->splash_duration = 1000 * get_seconds_resource ("splashDuration", "Time");
-  p->timeout         = 1000 * get_minutes_resource ("timeout", "Time");
-  p->lock_timeout    = 1000 * get_minutes_resource ("lockTimeout", "Time");
-  p->cycle           = 1000 * get_minutes_resource ("cycle", "Time");
-  p->passwd_timeout  = 1000 * get_seconds_resource ("passwdTimeout", "Time");
-  p->pointer_timeout = 1000 * get_seconds_resource ("pointerPollTime", "Time");
-  p->notice_events_timeout = 1000*get_seconds_resource("windowCreationTimeout",
-                                                      "Time");
-  p->shell = get_string_resource ("bourneShell", "BourneShell");
-
-  p->demo_command = get_string_resource("demoCommand", "URL");
-  p->prefs_command = get_string_resource("prefsCommand", "URL");
-  p->help_url = get_string_resource("helpURL", "URL");
-  p->load_url_command = get_string_resource("loadURL", "LoadURL");
-
-  {
-    char *s;
-    if ((s = get_string_resource ("splash", "Boolean")))
-      if (!get_boolean_resource("splash", "Boolean"))
-       p->splash_duration = 0;
-    if (s) free (s);
-  }
-
-  p->use_xidle_extension = get_boolean_resource ("xidleExtension","Boolean");
-  p->use_mit_saver_extension = get_boolean_resource ("mitSaverExtension",
-                                                    "Boolean");
-  p->use_sgi_saver_extension = get_boolean_resource ("sgiSaverExtension",
-                                                    "Boolean");
-  p->use_proc_interrupts = get_boolean_resource ("procInterrupts", "Boolean");
-
-  /* Throttle the various timeouts to reasonable values.
-   */
-  if (p->passwd_timeout <= 0) p->passwd_timeout = 30000;        /* 30 secs */
-  if (p->timeout < 10000) p->timeout = 10000;                   /* 10 secs */
-  if (p->cycle != 0 && p->cycle < 2000) p->cycle = 2000;        /*  2 secs */
-  if (p->pointer_timeout <= 0) p->pointer_timeout = 5000;       /*  5 secs */
-  if (p->notice_events_timeout <= 0)
-    p->notice_events_timeout = 10000;                           /* 10 secs */
-  if (p->fade_seconds <= 0 || p->fade_ticks <= 0)
-    p->fade_p = False;
-  if (! p->fade_p) p->unfade_p = False;
-
-  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 (p->debug_p)
-    {
-      p->xsync_p = True;
-      p->verbose_p = True;
-      p->timestamp_p = True;
-      p->initial_delay = 0;
-    }
-}
-
-\f
-/* Parsing the programs resource.
- */
-
-static char *
-reformat_hack (const char *hack)
-{
-  int i;
-  const char *in = hack;
-  int indent = 15;
-  char *h2 = (char *) malloc(strlen(in) + indent + 2);
-  char *out = h2;
-  Bool disabled_p = False;
-
-  while (isspace(*in)) in++;           /* skip whitespace */
-
-  if (*in == '-')                      /* Handle a leading "-". */
-    {
-      in++;
-      hack = in;
-      *out++ = '-';
-      *out++ = ' ';
-      disabled_p = True;
-      while (isspace(*in)) in++;
-    }
-  else
-    {
-      *out++ = ' ';
-      *out++ = ' ';
-    }
-
-  while (*in && !isspace(*in) && *in != ':')
-    *out++ = *in++;                    /* snarf first token */
-  while (isspace(*in)) in++;           /* skip whitespace */
-
-  if (*in == ':')
-    *out++ = *in++;                    /* copy colon */
-  else
-    {
-      in = hack;
-      out = h2 + 2;                    /* reset to beginning */
-    }
-
-  *out = 0;
-
-  while (isspace(*in)) in++;           /* skip whitespace */
-  for (i = strlen(h2); i < indent; i++)        /* indent */
-    *out++ = ' ';
-
-  /* copy the rest of the line. */
-  while (*in)
-    {
-      /* shrink all whitespace to one space, for the benefit of the "demo"
-        mode display.  We only do this when we can easily tell that the
-        whitespace is not significant (no shell metachars).
-       */
-      switch (*in)
-       {
-       case '\'': case '"': case '`': case '\\':
-         {
-           /* Metachars are scary.  Copy the rest of the line unchanged. */
-           while (*in)
-             *out++ = *in++;
-         }
-         break;
-       case ' ': case '\t':
-         {
-           while (*in == ' ' || *in == '\t')
-             in++;
-           *out++ = ' ';
-         }
-         break;
-       default:
-         *out++ = *in++;
-         break;
-       }
-    }
-  *out = 0;
-
-  /* strip trailing whitespace. */
-  out = out-1;
-  while (out > h2 && (*out == ' ' || *out == '\t' || *out == '\n'))
-    *out-- = 0;
-
-  return h2;
-}
-
-
-static void
-get_screenhacks (saver_preferences *p)
-{
-  int i = 0;
-  int start = 0;
-  int end = 0;
-  int size;
-  char *d;
-
-  d = get_string_resource ("monoPrograms", "MonoPrograms");
-  if (d && !*d) { free(d); d = 0; }
-  if (!d)
-    d = get_string_resource ("colorPrograms", "ColorPrograms");
-  if (d && !*d) { free(d); d = 0; }
-
-  if (d)
-    {
-      fprintf (stderr,
-       "%s: the `monoPrograms' and `colorPrograms' resources are obsolete;\n\
-       see the manual for details.\n", blurb());
-      free(d);
-    }
-
-  d = get_string_resource ("programs", "Programs");
-
-  if (p->screenhacks)
-    {
-      for (i = 0; i < p->screenhacks_count; i++)
-       if (p->screenhacks[i])
-         free (p->screenhacks[i]);
-      free(p->screenhacks);
-      p->screenhacks = 0;
-    }
-
-  if (!d || !*d)
-    {
-      p->screenhacks_count = 0;
-      p->screenhacks = 0;
-      return;
-    }
-
-  size = strlen (d);
-
-
-  /* Count up the number of newlines (which will be equal to or larger than
-     the number of hacks.)
-   */
-  i = 0;
-  for (i = 0; d[i]; i++)
-    if (d[i] == '\n')
-      i++;
-  i++;
-
-  p->screenhacks = (char **) calloc (sizeof (char *), i+1);
-
-  /* Iterate over the lines in `d' (the string with newlines)
-     and make new strings to stuff into the `screenhacks' array.
-   */
-  p->screenhacks_count = 0;
-  while (start < size)
-    {
-      /* skip forward over whitespace. */
-      while (d[start] == ' ' || d[start] == '\t' || d[start] == '\n')
-       start++;
-
-      /* skip forward to newline or end of string. */
-      end = start;
-      while (d[end] != 0 && d[end] != '\n')
-       end++;
-
-      /* null terminate. */
-      d[end] = 0;
-
-      p->screenhacks[p->screenhacks_count++] = reformat_hack (d + start);
-      if (p->screenhacks_count >= i)
-       abort();
-
-      start = end+1;
-    }
-
-  if (p->screenhacks_count == 0)
-    {
-      free (p->screenhacks);
-      p->screenhacks = 0;
-    }
-}
diff --git a/driver/prefs.h b/driver/prefs.h
deleted file mode 100644 (file)
index 62c768d..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/* xscreensaver, Copyright (c) 1993-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.
- */
-
-#ifndef __XSCREENSAVER_PREFS_H__
-#define __XSCREENSAVER_PREFS_H__
-
-typedef struct saver_preferences saver_preferences;
-
-
-/* This structure holds all the user-specified parameters, read from the
-   command line, the resource database, or entered through a dialog box.
- */
-struct saver_preferences {
-
-  XrmDatabase db;              /* The resource database into which the
-                                  init file is merged, and out of which the
-                                  preferences are parsed. */
-
-  time_t init_file_date;       /* The date (from stat()) of the .xscreensaver
-                                  file the last time this process read or
-                                  wrote it. */
-
-  Bool verbose_p;              /* whether to print out lots of status info */
-  Bool timestamp_p;            /* whether to mark messages with a timestamp */
-  Bool debug_p;                        /* pay no mind to the man behind the curtain */
-  Bool xsync_p;                        /* whether XSynchronize has been called */
-
-  Bool lock_p;                 /* whether to lock as well as save */
-  Bool lock_vt_p;              /* whether to lock VTs too, if possible */
-
-  Bool fade_p;                 /* whether to fade to black, if possible */
-  Bool unfade_p;               /* whether to fade from black, if possible */
-  int fade_seconds;            /* how long that should take */
-  int fade_ticks;              /* how many ticks should be used */
-
-  Bool install_cmap_p;         /* whether we should use our own colormap
-                                  when using the screen's default visual. */
-
-  char **screenhacks;          /* the programs to run */
-  int screenhacks_count;
-
-  int nice_inferior;           /* nice value for subprocs */
-
-  Time initial_delay;          /* how long to sleep after launch */
-  Time splash_duration;                /* how long the splash screen stays up */
-  Time timeout;                        /* how much idle time before activation */
-  Time lock_timeout;           /* how long after activation locking starts */
-  Time cycle;                  /* how long each hack should run */
-  Time passwd_timeout;         /* how much time before pw dialog goes down */
-  Time pointer_timeout;                /* how often to check mouse position */
-  Time notice_events_timeout;  /* how long after window creation to select */
-  Time watchdog_timeout;       /* how often to re-raise and re-blank screen */
-
-  Bool use_xidle_extension;    /* which extension to use, if possible */
-  Bool use_mit_saver_extension;
-  Bool use_sgi_saver_extension;
-  Bool use_proc_interrupts;
-
-  char *shell;                 /* where to find /bin/sh */
-
-  char *demo_command;          /* How to enter demo mode. */
-  char *prefs_command;         /* How to edit preferences. */
-  char *help_url;              /* Where the help document resides. */
-  char *load_url_command;      /* How one loads URLs. */
-};
-
-
-extern void load_init_file (saver_preferences *p);
-extern Bool init_file_changed_p (saver_preferences *p);
-extern void write_init_file (saver_preferences *p, const char *version_string);
-const char *init_file_name (void);
-
-#endif /* __XSCREENSAVER_PREFS_H__ */
diff --git a/driver/remote.c b/driver/remote.c
deleted file mode 100644 (file)
index 6eb2cb1..0000000
+++ /dev/null
@@ -1,439 +0,0 @@
-/* xscreensaver-command, Copyright (c) 1991-1998
- *  by 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 <stdlib.h>
-#include <sys/time.h>
-#include <sys/types.h>
-
-#ifdef HAVE_SYS_SELECT_H
-# include <sys/select.h>
-#endif /* HAVE_SYS_SELECT_H */
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <X11/Xproto.h>                /* for CARD32 */
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>         /* for XGetClassHint() */
-#include <X11/Xos.h>
-
-#include "remote.h"
-
-#ifdef _VROOT_H_
-ERROR! you must not include vroot.h in this file
-#endif
-
-extern char *progname;
-extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_RESPONSE;
-extern Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_TIME;
-extern Atom XA_VROOT, XA_SELECT, XA_DEMO;
-
-
-static XErrorHandler old_handler = 0;
-static Bool got_badwindow = False;
-static int
-BadWindow_ehandler (Display *dpy, XErrorEvent *error)
-{
-  if (error->error_code == BadWindow)
-    {
-      got_badwindow = True;
-      return 0;
-    }
-  else
-    {
-      fprintf (stderr, "%s: ", progname);
-      return (*old_handler) (dpy, error);
-    }
-}
-
-
-
-static Window
-find_screensaver_window (Display *dpy, char **version)
-{
-  int i;
-  Window root = RootWindowOfScreen (DefaultScreenOfDisplay (dpy));
-  Window root2, parent, *kids;
-  unsigned int nkids;
-
-  if (version) *version = 0;
-
-  if (! XQueryTree (dpy, root, &root2, &parent, &kids, &nkids))
-    abort ();
-  if (root != root2)
-    abort ();
-  if (parent)
-    abort ();
-  if (! (kids && nkids))
-    abort ();
-  for (i = 0; i < nkids; i++)
-    {
-      Atom type;
-      int format;
-      unsigned long nitems, bytesafter;
-      char *v;
-
-      if (XGetWindowProperty (dpy, kids[i],
-                             XA_SCREENSAVER_VERSION,
-                             0, 200, False, XA_STRING,
-                             &type, &format, &nitems, &bytesafter,
-                             (unsigned char **) &v)
-         == Success
-         && type != None)
-       {
-         if (version)
-           *version = v;
-         return kids[i];
-       }
-    }
-  fprintf (stderr, "%s: no screensaver is running on display %s\n", progname,
-          DisplayString (dpy));
-  return 0;
-}
-
-
-static int
-send_xscreensaver_command (Display *dpy, Atom command, long arg,
-                          Window *window_ret)
-{
-  char *v = 0;
-  Window window = find_screensaver_window (dpy, &v);
-  XWindowAttributes xgwa;
-
-  if (window_ret)
-    *window_ret = window;
-
-  if (!window)
-    return -1;
-
-  /* Select for property change events, so that we can read the response. */
-  XGetWindowAttributes (dpy, window, &xgwa);
-  XSelectInput (dpy, window, xgwa.your_event_mask | PropertyChangeMask);
-
-  if (command == XA_SCREENSAVER_TIME ||
-      command == XA_SCREENSAVER_VERSION)
-    {
-      XClassHint hint;
-      memset (&hint, 0, sizeof(hint));
-      if (!v || !*v)
-       {
-         fprintf (stderr, "%s: version property not set on window 0x%x?\n",
-                  progname, (unsigned int) window);
-         return -1;
-       }
-
-      XGetClassHint(dpy, window, &hint);
-      if (!hint.res_class)
-       {
-         fprintf (stderr, "%s: class hints not set on window 0x%x?\n",
-                  progname, (unsigned int) window);
-         return -1;
-       }
-
-      fprintf (stdout, "%s %s", hint.res_class, v);
-
-      if (command != XA_SCREENSAVER_TIME)
-       {
-         fprintf (stdout, "\n");
-       }
-      else
-       {
-         Atom type;
-         int format;
-         unsigned long nitems, bytesafter;
-         unsigned char *data = 0;
-         Bool active_p = False;
-
-         if (XGetWindowProperty (dpy, window, XA_VROOT,
-                                 0, 0, False, XA_WINDOW,
-                                 &type, &format, &nitems, &bytesafter,
-                                 &data)
-             == Success
-             && type != None)
-           active_p = True;
-
-         if (data) free (data);
-         data = 0;
-
-         if (XGetWindowProperty (dpy, window,
-                                 XA_SCREENSAVER_TIME,
-                                 0, 1, False, XA_INTEGER,
-                                 &type, &format, &nitems, &bytesafter,
-                                 &data)
-             == Success
-             && type == XA_INTEGER
-             && data)
-           {
-             CARD32 time32 = *((CARD32 *)data);
-             time_t tt = (time_t) time32;
-
-             if (active_p)
-               fprintf (stdout, ": screen blanked since ");
-             else
-               /* suggestions for a better way to phrase this are welcome. */
-               fprintf (stdout, ": screen non-blanked since ");
-             fprintf (stdout, "%s", ctime(&tt));
-             if (data) free (data);
-           }
-         else
-           {
-             if (data) free (data);
-             fprintf (stdout, "\n");
-             fflush (stdout);
-             fprintf (stderr, "%s: no time on window 0x%x (%s %s).\n",
-                      progname, (unsigned int) window,
-                      hint.res_class, (v ? v : "???"));
-             return -1;
-           }
-       }
-
-      /* No need to read a response for these commands. */
-      return 1;
-    }
-  else
-    {
-      XEvent event;
-      long arg1 = arg;
-      long arg2 = 0;
-
-      if (arg < 0)
-       abort();
-      else if (arg == 0 && command == XA_SELECT)
-       abort();
-      else if (arg != 0 && command == XA_DEMO)
-       {
-         arg1 = 300;   /* version number of the XA_DEMO protocol, */
-         arg2 = arg;   /* since it didn't use to take an argument. */
-       }
-
-      event.xany.type = ClientMessage;
-      event.xclient.display = dpy;
-      event.xclient.window = window;
-      event.xclient.message_type = XA_SCREENSAVER;
-      event.xclient.format = 32;
-      memset (&event.xclient.data, 0, sizeof(event.xclient.data));
-      event.xclient.data.l[0] = (long) command;
-      event.xclient.data.l[1] = arg1;
-      event.xclient.data.l[2] = arg2;
-      if (! XSendEvent (dpy, window, False, 0L, &event))
-       {
-         fprintf (stderr, "%s: XSendEvent(dpy, 0x%x ...) failed.\n",
-                  progname, (unsigned int) window);
-         return -1;
-       }
-    }
-  XSync (dpy, 0);
-  return 0;
-}
-
-
-static int
-xscreensaver_command_response (Display *dpy, Window window, Bool verbose_p)
-{
-  int fd = ConnectionNumber (dpy);
-  int timeout = 10;
-  int status;
-  fd_set fds;
-  struct timeval tv;
-
-  while (1)
-    {
-      FD_ZERO(&fds);
-      FD_SET(fd, &fds);
-      memset(&tv, 0, sizeof(tv));
-      tv.tv_sec = timeout;
-      status = select (fd+1, &fds, 0, &fds, &tv);
-
-      if (status < 0)
-       {
-         char buf[1024];
-         sprintf (buf, "%s: waiting for reply", progname);
-         perror (buf);
-         return status;
-       }
-      else if (status == 0)
-       {
-         fprintf (stderr, "%s: no response to command.\n", progname);
-         return -1;
-       }
-      else
-       {
-         XEvent event;
-         XNextEvent (dpy, &event);
-         if (event.xany.type == PropertyNotify &&
-             event.xproperty.state == PropertyNewValue &&
-             event.xproperty.atom == XA_SCREENSAVER_RESPONSE)
-           {
-             Status st2;
-             Atom type;
-             int format;
-             unsigned long nitems, bytesafter;
-             char *msg = 0;
-
-             old_handler = XSetErrorHandler (BadWindow_ehandler);
-             XSync (dpy, False);
-
-             st2 = XGetWindowProperty (dpy, window,
-                                       XA_SCREENSAVER_RESPONSE,
-                                       0, 1024, True,
-                                       AnyPropertyType,
-                                       &type, &format, &nitems, &bytesafter,
-                                       (unsigned char **) &msg);
-
-             if (got_badwindow)
-               {
-                 fprintf (stdout,
-                          "%s: xscreensaver window has been deleted.\n",
-                          progname);
-                 return 0;
-               }
-
-             if (st2 == Success && type != None)
-               {
-                 if (type != XA_STRING || format != 8)
-                   {
-                     fprintf (stderr,
-                              "%s: unrecognized response property.\n",
-                              progname);
-                     if (msg) XFree (msg);
-                     return -1;
-                   }
-                 else if (!msg || (msg[0] != '+' && msg[0] != '-'))
-                   {
-                     fprintf (stderr,
-                              "%s: unrecognized response message.\n",
-                              progname);
-                     if (msg) XFree (msg);
-                     return -1;
-                   }
-                 else
-                   {
-                     int ret = (msg[0] == '+' ? 0 : -1);
-                     if (verbose_p || ret != 0)
-                       fprintf ((ret < 0 ? stderr : stdout),
-                                "%s: %s\n",
-                                progname,
-                                msg+1);
-                     XFree (msg);
-                     return ret;
-                   }
-               }
-           }
-       }
-    }
-}
-
-
-int
-xscreensaver_command (Display *dpy, Atom command, long arg, Bool verbose_p)
-{
-  Window w = 0;
-  int status = send_xscreensaver_command (dpy, command, arg, &w);
-  if (status == 0)
-    status = xscreensaver_command_response (dpy, w, verbose_p);
-  fflush (stdout);
-  fflush (stderr);
-  return status;
-}
-
-
-void
-server_xscreensaver_version (Display *dpy,
-                            char **version_ret,
-                            char **user_ret,
-                            char **host_ret)
-{
-  Window window = find_screensaver_window (dpy, 0);
-
-  Atom type;
-  int format;
-  unsigned long nitems, bytesafter;
-
-  if (version_ret)
-    *version_ret = 0;
-  if (host_ret)
-    *host_ret = 0;
-
-  if (!window)
-    return;
-
-  if (version_ret)
-    {
-      char *v = 0;
-      XGetWindowProperty (dpy, window, XA_SCREENSAVER_VERSION, 0, 1,
-                         False, XA_STRING, &type, &format, &nitems,
-                         &bytesafter, (unsigned char **) &v);
-      if (v)
-       {
-         *version_ret = strdup (v);
-         XFree (v);
-       }
-    }
-
-  if (user_ret || host_ret)
-    {
-      char *id = 0;
-      const char *user = 0;
-      const char *host = 0;
-
-      XGetWindowProperty (dpy, window, XA_SCREENSAVER_ID, 0, 512,
-                         False, XA_STRING, &type, &format, &nitems,
-                         &bytesafter, (unsigned char **) &id);
-      if (id && *id)
-       {
-         const char *old_tag = " on host ";
-         const char *s = strstr (id, old_tag);
-         if (s)
-           {
-             /* found ID of the form "1234 on host xyz". */
-             user = 0;
-             host = s + strlen (old_tag);
-           }
-         else
-           {
-             char *o = 0, *p = 0, *c = 0;
-             o = strchr (id, '(');
-             if (o) p = strchr (o, '@');
-             if (p) c = strchr (p, ')');
-             if (c)
-               {
-                 /* found ID of the form "1234 (user@host)". */
-                 user = o+1;
-                 host = p+1;
-                 *p = 0;
-                 *c = 0;
-               }
-           }
-
-       }
-
-      if (user && *user && *user != '?')
-       *user_ret = strdup (user);
-      else
-       *user_ret = 0;
-
-      if (host && *host && *host != '?')
-       *host_ret = strdup (host);
-      else
-       *host_ret = 0;
-
-      if (id)
-       XFree (id);
-    }
-}
diff --git a/driver/remote.h b/driver/remote.h
deleted file mode 100644 (file)
index d368e43..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* xscreensaver-command, Copyright (c) 1991-1998
- *  by 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.
- */
-
-#ifndef _XSCREENSAVER_REMOTE_H_
-#define _XSCREENSAVER_REMOTE_H_
-
-extern int xscreensaver_command (Display *dpy, Atom command, long arg,
-                                Bool verbose_p);
-
-extern void server_xscreensaver_version (Display *dpy,
-                                        char **version_ret,
-                                        char **user_ret,
-                                        char **host_ret);
-
-#endif /* _XSCREENSAVER_REMOTE_H_ */
diff --git a/driver/setuid.c b/driver/setuid.c
deleted file mode 100644 (file)
index 83ad494..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-/* setuid.c --- management of runtime privileges.
- * xscreensaver, Copyright (c) 1993-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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <X11/Xlib.h>          /* not used for much... */
-
-/* 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"
-
-#ifndef EPERM
-#include <errno.h>
-#endif
-
-#include <pwd.h>               /* for getpwnam() and struct passwd */
-#include <grp.h>               /* for getgrgid() and struct group */
-
-static const char *
-uid_gid_string (uid_t uid, gid_t gid)
-{
-  static char buf[255];
-  struct passwd *p = 0;
-  struct group *g = 0;
-  p = getpwuid (uid);
-  g = getgrgid (gid);
-  sprintf (buf, "%s/%s (%ld/%ld)",
-          (p && p->pw_name ? p->pw_name : "???"),
-          (g && g->gr_name ? g->gr_name : "???"),
-          (long) uid, (long) gid);
-  return buf;
-}
-
-
-void
-describe_uids (saver_info *si, FILE *out)
-{
-  uid_t uid = getuid();
-  gid_t gid = getgid();
-  uid_t euid = geteuid();
-  gid_t egid = getegid();
-  char *s1 = strdup (uid_gid_string (uid, gid));
-  char *s2 = strdup (uid_gid_string (euid, egid));
-
-  if (si->orig_uid && *si->orig_uid &&
-      (!!strcmp (si->orig_uid, s1) ||
-       !!strcmp (si->orig_uid, s2)))
-    fprintf (out, "%s: initial effective uid/gid was %s\n", blurb(),
-            si->orig_uid);
-
-  fprintf (out, "%s: running as %s", blurb(), s1);
-  if (uid != euid || gid != egid)
-    fprintf (out, "; effectively %s", s2);
-  fprintf(out, "\n");
-  free(s1);
-  free(s2);
-}
-
-
-static int
-set_ids_by_name (struct passwd *p, struct group *g, char **message_ret)
-{
-  int uid_errno = 0;
-  int gid_errno = 0;
-  uid_t uid = p->pw_uid;
-  gid_t gid = g->gr_gid;
-
-  if (message_ret)
-    *message_ret = 0;
-
-  /* Rumor has it that some implementations of of setuid() do nothing
-     when called with -1; therefore, if the "nobody" user has a uid of
-     -1, then that would be Really Bad.  Rumor further has it that such
-     systems really ought to be using -2 for "nobody", since that works.
-     So, if we get a uid (or gid, for good measure) of -1, switch to -2
-     instead.
-   */
-  if (gid == (gid_t) -1) gid = (gid_t) -2;
-  if (uid == (uid_t) -1) uid = (uid_t) -2;
-
-  errno = 0;
-  if (setgid (gid) != 0)
-    gid_errno = errno ? errno : -1;
-
-  errno = 0;
-  if (setuid (uid) != 0)
-    uid_errno = errno ? errno : -1;
-
-  if (uid_errno == 0 && gid_errno == 0)
-    {
-      static char buf [1024];
-      sprintf (buf, "changed uid/gid to %s/%s (%ld/%ld).",
-              p->pw_name, (g ? g->gr_name : "???"),
-              (long) uid, (long) gid);
-      if (message_ret)
-       *message_ret = buf;
-      return 0;
-    }
-  else
-    {
-      char buf [1024];
-      if (gid_errno)
-       {
-         sprintf (buf, "%s: couldn't set gid to %s (%ld)",
-                  blurb(),
-                  (g ? g->gr_name : "???"),
-                  (long) gid);
-         if (gid_errno == -1)
-           fprintf(stderr, "%s: unknown error\n", buf);
-         else
-           perror(buf);
-       }
-
-      if (uid_errno)
-       {
-         sprintf (buf, "%s: couldn't set uid to %s (%ld)",
-                  blurb(),
-                  (p ? p->pw_name : "???"),
-                  (long) uid);
-         if (uid_errno == -1)
-           fprintf(stderr, "%s: unknown error\n", buf);
-         else
-           perror(buf);
-       }
-
-      return -1;
-    }
-}
-
-static int
-set_ids_by_number (uid_t uid, gid_t gid, char **message_ret)
-{
-  struct passwd *p;
-  struct group *g;
-
-  errno = 0;
-  p = getpwuid (uid);
-  if (!p)
-    {
-      char buf [1024];
-      sprintf (buf, "%s: error looking up name of user %d", blurb(),
-              (long) uid);
-      if (errno)
-       perror (buf);
-      else
-       fprintf (stderr, "%s: unknown error.\n", buf);
-      return -1;
-    }
-
-  errno = 0;
-  g = getgrgid (gid);
-  if (!g)
-    {
-      char buf [1024];
-      sprintf (buf, "%s: error looking up name of group %d", blurb(),
-              (long) gid);
-      if (errno)
-       perror (buf);
-      else
-       fprintf (stderr, "%s: unknown error.\n", buf);
-      return -1;
-    }
-
-  return set_ids_by_name (p, g, message_ret);
-}
-
-
-/* If we've been run as setuid or setgid to someone else (most likely root)
-   turn off the extra permissions so that random user-specified programs
-   don't get special privileges.  (On some systems it is necessary to install
-   this program as setuid root in order to read the passwd file to implement
-   lock-mode.)
-
-     *** WARNING: DO NOT DISABLE ANY OF THE FOLLOWING CODE!
-         If you do so, you will open a security hole.  See the sections
-         of the xscreensaver manual titled "LOCKING AND ROOT LOGINS", 
-         and "USING XDM".
- */
-void
-hack_uid (saver_info *si)
-{
-
-  /* Discard privileges, and set the effective user/group ids to the
-     real user/group ids.  That is, give up our "chmod +s" rights.
-   */
-  {
-    uid_t euid = geteuid();
-    gid_t egid = getegid();
-    uid_t uid = getuid();
-    gid_t gid = getgid();
-
-    si->orig_uid = strdup (uid_gid_string (euid, egid));
-
-    if (uid != euid || gid != egid)
-      if (set_ids_by_number (uid, gid, &si->uid_message) != 0)
-       saver_exit (si, 1, 0);
-  }
-
-
-  /* Locking can't work when running as root, because we have no way of
-     knowing what the user id of the logged in user is (so we don't know
-     whose password to prompt for.)
-
-     *** WARNING: DO NOT DISABLE THIS CODE!
-         If you do so, you will open a security hole.  See the sections
-         of the xscreensaver manual titled "LOCKING AND ROOT LOGINS",
-         and "USING XDM".
-   */
-  if (getuid() == (uid_t) 0)
-    {
-      si->locking_disabled_p = True;
-      si->nolock_reason = "running as root";
-    }
-
-
-  /* If we're running as root, switch to a safer user.  This is above and
-     beyond the fact that we've disabling locking, above -- the theory is
-     that running graphics demos as root is just always a stupid thing
-     to do, since they have probably never been security reviewed and are
-     more likely to be buggy than just about any other kind of program.
-     (And that assumes non-malicious code.  There are also attacks here.)
-
-     *** WARNING: DO NOT DISABLE THIS CODE!
-         If you do so, you will open a security hole.  See the sections
-         of the xscreensaver manual titled "LOCKING AND ROOT LOGINS", 
-         and "USING XDM".
-   */
-  if (getuid() == (uid_t) 0)
-    {
-      struct passwd *p;
-
-      p = getpwnam ("nobody");
-      if (! p) p = getpwnam ("noaccess");
-      if (! p) p = getpwnam ("daemon");
-      if (! p)
-       {
-         fprintf (stderr,
-                  "%s: running as root, and couldn't find a safer uid.\n",
-                  blurb());
-         saver_exit(si, 1, 0);
-       }
-
-      if (set_ids_by_number (p->pw_uid, p->pw_gid, &si->uid_message) != 0)
-       saver_exit (si, -1, 0);
-    }
-
-
-  /* If there's anything even remotely funny looking about the passwd struct,
-     or if we're running as some other user from the list below (a
-     non-comprehensive selection of users known to be privileged in some way,
-     and not normal end-users) then disable locking.  If it was possible,
-     switching to "nobody" would be the thing to do, but only root itself has
-     the privs to do that.
-
-     *** WARNING: DO NOT DISABLE THIS CODE!
-         If you do so, you will open a security hole.  See the sections
-         of the xscreensaver manual titled "LOCKING AND ROOT LOGINS",
-         and "USING XDM".
-   */
-  {
-    uid_t uid = getuid ();             /* get it again */
-    struct passwd *p = getpwuid (uid); /* get it again */
-
-    if (!p ||
-       uid == (uid_t)  0 ||
-       uid == (uid_t) -1 ||
-       uid == (uid_t) -2 ||
-       p->pw_uid == (uid_t)  0 ||
-       p->pw_uid == (uid_t) -1 ||
-       p->pw_uid == (uid_t) -2 ||
-       !p->pw_name ||
-       !*p->pw_name ||
-       !strcmp (p->pw_name, "root") ||
-       !strcmp (p->pw_name, "nobody") ||
-       !strcmp (p->pw_name, "noaccess") ||
-       !strcmp (p->pw_name, "operator") ||
-       !strcmp (p->pw_name, "daemon") ||
-       !strcmp (p->pw_name, "bin") ||
-       !strcmp (p->pw_name, "adm") ||
-       !strcmp (p->pw_name, "sys") ||
-       !strcmp (p->pw_name, "games"))
-      {
-       static char buf [1024];
-       sprintf (buf, "running as %s",
-                (p && p->pw_name && *p->pw_name
-                 ? p->pw_name : "<unknown>"));
-       si->nolock_reason = buf;
-       si->locking_disabled_p = True;
-       si->dangerous_uid_p = True;
-      }
-  }
-}
diff --git a/driver/splash.c b/driver/splash.c
deleted file mode 100644 (file)
index fabd882..0000000
+++ /dev/null
@@ -1,756 +0,0 @@
-/* xscreensaver, Copyright (c) 1991-1998 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
- * 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 <X11/Intrinsic.h>
-
-#include "xscreensaver.h"
-#include "resources.h"
-
-#undef MAX
-#define MAX(a,b) ((a)>(b)?(a):(b))
-
-void
-draw_shaded_rectangle (Display *dpy, Window window,
-                      int x, int y,
-                      int width, int height,
-                      int thickness,
-                      unsigned long top_color,
-                      unsigned long bottom_color)
-{
-  XPoint points[4];
-  XGCValues gcv;
-  GC gc1, gc2;
-  if (thickness == 0) return;
-
-  gcv.foreground = top_color;
-  gc1 = XCreateGC (dpy, window, GCForeground, &gcv);
-  gcv.foreground = bottom_color;
-  gc2 = XCreateGC (dpy, window, GCForeground, &gcv);
-
-  points [0].x = x;
-  points [0].y = y;
-  points [1].x = x + width;
-  points [1].y = y;
-  points [2].x = x + width - thickness;
-  points [2].y = y + thickness;
-  points [3].x = x;
-  points [3].y = y + thickness;
-  XFillPolygon (dpy, window, gc1, points, 4, Convex, CoordModeOrigin);
-
-  points [0].x = x;
-  points [0].y = y + thickness;
-  points [1].x = x;
-  points [1].y = y + height;
-  points [2].x = x + thickness;
-  points [2].y = y + height - thickness;
-  points [3].x = x + thickness;
-  points [3].y = y + thickness;
-  XFillPolygon (dpy, window, gc1, points, 4, Convex, CoordModeOrigin);
-
-  points [0].x = x + width;
-  points [0].y = y;
-  points [1].x = x + width - thickness;
-  points [1].y = y + thickness;
-  points [2].x = x + width - thickness;
-  points [2].y = y + height - thickness;
-  points [3].x = x + width;
-  points [3].y = y + height - thickness;
-  XFillPolygon (dpy, window, gc2, points, 4, Convex, CoordModeOrigin);
-
-  points [0].x = x;
-  points [0].y = y + height;
-  points [1].x = x + width;
-  points [1].y = y + height;
-  points [2].x = x + width;
-  points [2].y = y + height - thickness;
-  points [3].x = x + thickness;
-  points [3].y = y + height - thickness;
-  XFillPolygon (dpy, window, gc2, points, 4, Convex, CoordModeOrigin);
-
-  XFreeGC (dpy, gc1);
-  XFreeGC (dpy, gc2);
-}
-
-
-int
-string_width (XFontStruct *font, char *s)
-{
-  int direction, ascent, descent;
-  XCharStruct overall;
-  XTextExtents (font, s, strlen(s), &direction, &ascent, &descent, &overall);
-  return overall.width;
-}
-
-
-static void update_splash_window (saver_info *si);
-static void draw_splash_window (saver_info *si);
-static void destroy_splash_window (saver_info *si);
-static void unsplash_timer (XtPointer closure, XtIntervalId *id);
-
-static void do_demo (saver_info *si);
-static void do_prefs (saver_info *si);
-static void do_help (saver_info *si);
-
-
-struct splash_dialog_data {
-  XtIntervalId timer;
-
-  Dimension width;
-  Dimension height;
-
-  char *heading_label;
-  char *body_label;
-  char *body2_label;
-  char *demo_label;
-  char *prefs_label;
-  char *help_label;
-
-  XFontStruct *heading_font;
-  XFontStruct *body_font;
-  XFontStruct *button_font;
-
-  Pixel foreground;
-  Pixel background;
-  Pixel button_foreground;
-  Pixel button_background;
-  Pixel logo_foreground;
-  Pixel logo_background;
-  Pixel shadow_top;
-  Pixel shadow_bottom;
-
-  Dimension logo_width;
-  Dimension logo_height;
-  Dimension internal_border;
-  Dimension shadow_width;
-
-  Dimension button_width, button_height;
-  Dimension demo_button_x, demo_button_y;
-  Dimension prefs_button_x, prefs_button_y;
-  Dimension help_button_x, help_button_y;
-
-  int pressed;
-};
-
-
-void
-make_splash_dialog (saver_info *si)
-{
-  int x, y, bw;
-  XSetWindowAttributes attrs;
-  unsigned long attrmask = 0;
-  splash_dialog_data *sp;
-  Screen *screen = si->default_screen->screen;
-  Colormap cmap = DefaultColormapOfScreen (screen);
-  char *f;
-
-  if (si->sp_data)
-    return;
-  if (si->prefs.splash_duration <= 0)
-    return;
-
-  sp = (splash_dialog_data *) calloc (1, sizeof(*sp));
-
-  sp->heading_label = get_string_resource ("splash.heading.label",
-                                          "Dialog.Label.Label");
-  sp->body_label = get_string_resource ("splash.body.label",
-                                       "Dialog.Label.Label");
-  sp->body2_label = get_string_resource ("splash.body2.label",
-                                        "Dialog.Label.Label");
-  sp->demo_label = get_string_resource ("splash.demo.label",
-                                       "Dialog.Button.Label");
-  sp->prefs_label = get_string_resource ("splash.prefs.label",
-                                       "Dialog.Button.Label");
-  sp->help_label = get_string_resource ("splash.help.label",
-                                       "Dialog.Button.Label");
-
-  if (!sp->heading_label)
-    sp->heading_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY");
-  if (!sp->body_label)
-    sp->body_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY");
-  if (!sp->body2_label)
-    sp->body2_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY");
-  if (!sp->demo_label) sp->demo_label = strdup("ERROR");
-  if (!sp->prefs_label) sp->prefs_label = strdup("ERROR");
-  if (!sp->help_label) sp->help_label = strdup("ERROR");
-
-  /* Put the version number in the label. */
-  {
-    char *s = (char *) malloc (strlen(sp->heading_label) + 20);
-    sprintf(s, sp->heading_label, si->version);
-    free (sp->heading_label);
-    sp->heading_label = s;
-  }
-
-  f = get_string_resource ("splash.headingFont", "Dialog.Font");
-  sp->heading_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
-  if (!sp->heading_font) sp->heading_font = XLoadQueryFont (si->dpy, "fixed");
-  if (f) free (f);
-
-  f = get_string_resource("splash.bodyFont", "Dialog.Font");
-  sp->body_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
-  if (!sp->body_font) sp->body_font = XLoadQueryFont (si->dpy, "fixed");
-  if (f) free (f);
-
-  f = get_string_resource("splash.buttonFont", "Dialog.Font");
-  sp->button_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
-  if (!sp->button_font) sp->button_font = XLoadQueryFont (si->dpy, "fixed");
-  if (f) free (f);
-
-  sp->foreground = get_pixel_resource ("splash.foreground",
-                                      "Dialog.Foreground",
-                                      si->dpy, cmap);
-  sp->background = get_pixel_resource ("splash.background",
-                                      "Dialog.Background",
-                                      si->dpy, cmap);
-
-  if (sp->foreground == sp->background)
-    {
-      /* Make sure the error messages show up. */
-      sp->foreground = BlackPixelOfScreen (screen);
-      sp->background = WhitePixelOfScreen (screen);
-    }
-
-  sp->button_foreground = get_pixel_resource ("splash.Button.foreground",
-                                             "Dialog.Button.Foreground",
-                                             si->dpy, cmap);
-  sp->button_background = get_pixel_resource ("splash.Button.background",
-                                             "Dialog.Button.Background",
-                                             si->dpy, cmap);
-  sp->logo_foreground = get_pixel_resource ("splash.logo.foreground",
-                                           "Dialog.Logo.Foreground",
-                                           si->dpy, cmap);
-  sp->logo_background = get_pixel_resource ("splash.logo.background",
-                                           "Dialog.Logo.Background",
-                                           si->dpy, cmap);
-  sp->shadow_top = get_pixel_resource ("splash.topShadowColor",
-                                      "Dialog.Foreground",
-                                      si->dpy, cmap);
-  sp->shadow_bottom = get_pixel_resource ("splash.bottomShadowColor",
-                                         "Dialog.Background",
-                                         si->dpy, cmap);
-
-  sp->logo_width = get_integer_resource ("splash.logo.width",
-                                        "Dialog.Logo.Width");
-  sp->logo_height = get_integer_resource ("splash.logo.height",
-                                         "Dialog.Logo.Height");
-  sp->internal_border = get_integer_resource ("splash.internalBorderWidth",
-                                             "Dialog.InternalBorderWidth");
-  sp->shadow_width = get_integer_resource ("splash.shadowThickness",
-                                          "Dialog.ShadowThickness");
-
-  if (sp->logo_width == 0)  sp->logo_width = 150;
-  if (sp->logo_height == 0) sp->logo_height = 150;
-  if (sp->internal_border == 0) sp->internal_border = 15;
-  if (sp->shadow_width == 0) sp->shadow_width = 4;
-
-  {
-    int direction, ascent, descent;
-    XCharStruct overall;
-
-    sp->width = 0;
-    sp->height = 0;
-
-    /* Measure the heading_label. */
-    XTextExtents (sp->heading_font,
-                 sp->heading_label, strlen(sp->heading_label),
-                 &direction, &ascent, &descent, &overall);
-    if (overall.width > sp->width) sp->width = overall.width;
-    sp->height += ascent + descent;
-
-    /* Measure the body_label. */
-    XTextExtents (sp->body_font,
-                 sp->body_label, strlen(sp->body_label),
-                 &direction, &ascent, &descent, &overall);
-    if (overall.width > sp->width) sp->width = overall.width;
-    sp->height += ascent + descent;
-
-    /* Measure the body2_label. */
-    XTextExtents (sp->body_font,
-                 sp->body2_label, strlen(sp->body2_label),
-                 &direction, &ascent, &descent, &overall);
-    if (overall.width > sp->width) sp->width = overall.width;
-    sp->height += ascent + descent;
-
-    {
-      Dimension w2 = 0, w3 = 0, w4 = 0;
-      Dimension h2 = 0, h3 = 0, h4 = 0;
-
-      /* Measure the Demo button. */
-      XTextExtents (sp->button_font,
-                   sp->demo_label, strlen(sp->demo_label),
-                   &direction, &ascent, &descent, &overall);
-      w2 = overall.width;
-      h2 = ascent + descent;
-
-      /* Measure the Prefs button. */
-      XTextExtents (sp->button_font,
-                   sp->prefs_label, strlen(sp->prefs_label),
-                   &direction, &ascent, &descent, &overall);
-      w3 = overall.width;
-      h3 = ascent + descent;
-
-      /* Measure the Help button. */
-      XTextExtents (sp->button_font,
-                   sp->help_label, strlen(sp->help_label),
-                   &direction, &ascent, &descent, &overall);
-      w4 = overall.width;
-      h4 = ascent + descent;
-
-      w2 = MAX(w2, w3); w2 = MAX(w2, w4);
-      h2 = MAX(h2, h3); h2 = MAX(h2, h4);
-
-      w2 += ((ascent + descent) / 2) + (sp->shadow_width * 2);
-      h2 += ((ascent + descent) / 2) + (sp->shadow_width * 2);
-
-      sp->button_width = w2;
-      sp->button_height = h2;
-
-      w2 *= 3;
-
-      w2 += ((ascent + descent) * 2);  /* for space between buttons */
-
-      if (w2 > sp->width) sp->width = w2;
-      sp->height += h2;
-    }
-
-    sp->width  += (sp->internal_border * 2);
-    sp->height += (sp->internal_border * 3);
-
-    if (sp->logo_height > sp->height)
-      sp->height = sp->logo_height;
-    else if (sp->height > sp->logo_height)
-      sp->logo_height = sp->height;
-
-    sp->logo_width = sp->logo_height;
-
-    sp->width += sp->logo_width;
-  }
-
-  attrmask |= CWOverrideRedirect; attrs.override_redirect = True;
-  attrmask |= CWEventMask;
-  attrs.event_mask = (ExposureMask | ButtonPressMask | ButtonReleaseMask);
-
-  {
-    int sx, sy, w, h;
-    get_screen_viewport (si->default_screen, &sx, &sy, &w, &h, False);
-    if (si->prefs.debug_p) w /= 2;
-    x = sx + (((w + sp->width)  / 2) - sp->width);
-    y = sy + (((h + sp->height) / 2) - sp->height);
-    if (x < sx) x = sx;
-    if (y < sy) y = sy;
-  }
-
-  bw = get_integer_resource ("splash.borderWidth", "Dialog.BorderWidth");
-
-  si->splash_dialog =
-    XCreateWindow (si->dpy,
-                  RootWindowOfScreen(screen),
-                  x, y, sp->width, sp->height, bw,
-                  DefaultDepthOfScreen (screen), InputOutput,
-                  DefaultVisualOfScreen(screen),
-                  attrmask, &attrs);
-  XSetWindowBackground (si->dpy, si->splash_dialog, sp->background);
-
-  XMapRaised (si->dpy, si->splash_dialog);
-  XSync (si->dpy, False);
-
-  si->sp_data = sp;
-
-  sp->timer = XtAppAddTimeOut (si->app, si->prefs.splash_duration,
-                              unsplash_timer, (XtPointer) si);
-
-  draw_splash_window (si);
-  XSync (si->dpy, False);
-}
-
-static void
-draw_splash_window (saver_info *si)
-{
-  splash_dialog_data *sp = si->sp_data;
-  XGCValues gcv;
-  GC gc1, gc2;
-  int hspacing, vspacing, height;
-  int x1, x2, x3, y1, y2;
-  int sw;
-
-  height = (sp->heading_font->ascent + sp->heading_font->descent +
-           sp->body_font->ascent + sp->body_font->descent +
-           sp->body_font->ascent + sp->body_font->descent +
-           sp->button_font->ascent + sp->button_font->descent);
-  vspacing = ((sp->height
-              - (4 * sp->shadow_width)
-              - (2 * sp->internal_border)
-              - height) / 5);
-  if (vspacing < 0) vspacing = 0;
-  if (vspacing > (sp->heading_font->ascent * 2))
-    vspacing = (sp->heading_font->ascent * 2);
-           
-  gcv.foreground = sp->foreground;
-  gc1 = XCreateGC (si->dpy, si->splash_dialog, GCForeground, &gcv);
-  gc2 = XCreateGC (si->dpy, si->splash_dialog, GCForeground, &gcv);
-  x1 = sp->logo_width;
-  x3 = sp->width - (sp->shadow_width * 2);
-  y1 = sp->internal_border;
-
-  /* top heading
-   */
-  XSetFont (si->dpy, gc1, sp->heading_font->fid);
-  sw = string_width (sp->heading_font, sp->heading_label);
-  x2 = (x1 + ((x3 - x1 - sw) / 2));
-  y1 += sp->heading_font->ascent;
-  XDrawString (si->dpy, si->splash_dialog, gc1, x2, y1,
-              sp->heading_label, strlen(sp->heading_label));
-  y1 += sp->heading_font->descent;
-
-  /* text below top heading
-   */
-  XSetFont (si->dpy, gc1, sp->body_font->fid);
-  y1 += vspacing + sp->body_font->ascent;
-  sw = string_width (sp->body_font, sp->body_label);
-  x2 = (x1 + ((x3 - x1 - sw) / 2));
-  XDrawString (si->dpy, si->splash_dialog, gc1, x2, y1,
-              sp->body_label, strlen(sp->body_label));
-  y1 += sp->body_font->descent;
-
-  y1 += sp->body_font->ascent;
-  sw = string_width (sp->body_font, sp->body2_label);
-  x2 = (x1 + ((x3 - x1 - sw) / 2));
-  XDrawString (si->dpy, si->splash_dialog, gc1, x2, y1,
-              sp->body2_label, strlen(sp->body2_label));
-  y1 += sp->body_font->descent;
-
-  /* The buttons
-   */
-  XSetForeground (si->dpy, gc1, sp->button_foreground);
-  XSetForeground (si->dpy, gc2, sp->button_background);
-
-/*  y1 += (vspacing * 2);*/
-  y1 = sp->height - sp->internal_border - sp->button_height;
-
-  x1 += sp->internal_border;
-  y2 = (y1 + ((sp->button_height -
-              (sp->button_font->ascent + sp->button_font->descent))
-             / 2)
-       + sp->button_font->ascent);
-  hspacing = ((sp->width - x1 - (sp->shadow_width * 2) -
-              sp->internal_border - (sp->button_width * 3))
-             / 2);
-
-  x2 = x1 + ((sp->button_width - string_width(sp->button_font, sp->demo_label))
-            / 2);
-  XFillRectangle (si->dpy, si->splash_dialog, gc2, x1, y1,
-                 sp->button_width, sp->button_height);
-  XDrawString (si->dpy, si->splash_dialog, gc1, x2, y2,
-              sp->demo_label, strlen(sp->demo_label));
-  sp->demo_button_x = x1;
-  sp->demo_button_y = y1;
-  
-  x1 += hspacing + sp->button_width;
-  x2 = x1 + ((sp->button_width - string_width(sp->button_font,sp->prefs_label))
-            / 2);
-  XFillRectangle (si->dpy, si->splash_dialog, gc2, x1, y1,
-                 sp->button_width, sp->button_height);
-  XDrawString (si->dpy, si->splash_dialog, gc1, x2, y2,
-              sp->prefs_label, strlen(sp->prefs_label));
-  sp->prefs_button_x = x1;
-  sp->prefs_button_y = y1;
-
-  x1 += hspacing + sp->button_width;
-  x2 = x1 + ((sp->button_width - string_width(sp->button_font,sp->help_label))
-            / 2);
-  XFillRectangle (si->dpy, si->splash_dialog, gc2, x1, y1,
-                 sp->button_width, sp->button_height);
-  XDrawString (si->dpy, si->splash_dialog, gc1, x2, y2,
-              sp->help_label, strlen(sp->help_label));
-  sp->help_button_x = x1;
-  sp->help_button_y = y1;
-
-
-  /* the logo
-   */
-  XSetForeground (si->dpy, gc1, sp->logo_foreground);
-  XSetForeground (si->dpy, gc2, sp->logo_background);
-
-  x1 = sp->shadow_width * 3;
-  y1 = sp->shadow_width * 3;
-  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));
-
-
-  /* The shadow around the logo
-   */
-  draw_shaded_rectangle (si->dpy, si->splash_dialog,
-                        sp->shadow_width * 2,
-                        sp->shadow_width * 2,
-                        sp->logo_width - (sp->shadow_width * 4),
-                        sp->logo_height - (sp->shadow_width * 4),
-                        sp->shadow_width,
-                        sp->shadow_bottom, sp->shadow_top);
-
-  /* The shadow around the whole window
-   */
-  draw_shaded_rectangle (si->dpy, si->splash_dialog,
-                        0, 0, sp->width, sp->height, sp->shadow_width,
-                        sp->shadow_top, sp->shadow_bottom);
-
-  XFreeGC (si->dpy, gc1);
-  XFreeGC (si->dpy, gc2);
-
-  update_splash_window (si);
-}
-
-
-static void
-update_splash_window (saver_info *si)
-{
-  splash_dialog_data *sp = si->sp_data;
-  int pressed;
-  if (!sp) return;
-  pressed = sp->pressed;
-
-  /* The shadows around the buttons
-   */
-  draw_shaded_rectangle (si->dpy, si->splash_dialog,
-                        sp->demo_button_x, sp->demo_button_y,
-                        sp->button_width, sp->button_height, sp->shadow_width,
-                        (pressed == 1 ? sp->shadow_bottom : sp->shadow_top),
-                        (pressed == 1 ? sp->shadow_top : sp->shadow_bottom));
-  draw_shaded_rectangle (si->dpy, si->splash_dialog,
-                        sp->prefs_button_x, sp->prefs_button_y,
-                        sp->button_width, sp->button_height, sp->shadow_width,
-                        (pressed == 2 ? sp->shadow_bottom : sp->shadow_top),
-                        (pressed == 2 ? sp->shadow_top : sp->shadow_bottom));
-  draw_shaded_rectangle (si->dpy, si->splash_dialog,
-                        sp->help_button_x, sp->help_button_y,
-                        sp->button_width, sp->button_height, sp->shadow_width,
-                        (pressed == 3 ? sp->shadow_bottom : sp->shadow_top),
-                        (pressed == 3 ? sp->shadow_top : sp->shadow_bottom));
-}
-
-static void
-destroy_splash_window (saver_info *si)
-{
-  splash_dialog_data *sp = si->sp_data;
-  Screen *screen = si->default_screen->screen;
-  Colormap cmap = DefaultColormapOfScreen (screen);
-  Pixel black = BlackPixelOfScreen (screen);
-  Pixel white = WhitePixelOfScreen (screen);
-
-  if (sp->timer)
-    XtRemoveTimeOut (sp->timer);
-
-  if (si->splash_dialog)
-    {
-      XDestroyWindow (si->dpy, si->splash_dialog);
-      si->splash_dialog = 0;
-    }
-  
-  if (sp->heading_label) free (sp->heading_label);
-  if (sp->body_label)    free (sp->body_label);
-  if (sp->demo_label)    free (sp->demo_label);
-  if (sp->prefs_label)   free (sp->prefs_label);
-  if (sp->help_label)    free (sp->help_label);
-
-  if (sp->heading_font) XFreeFont (si->dpy, sp->heading_font);
-  if (sp->body_font)    XFreeFont (si->dpy, sp->body_font);
-  if (sp->button_font)  XFreeFont (si->dpy, sp->button_font);
-
-  if (sp->foreground != black && sp->foreground != white)
-    XFreeColors (si->dpy, cmap, &sp->foreground, 1, 0L);
-  if (sp->background != black && sp->background != white)
-    XFreeColors (si->dpy, cmap, &sp->background, 1, 0L);
-  if (sp->button_foreground != black && sp->button_foreground != white)
-    XFreeColors (si->dpy, cmap, &sp->button_foreground, 1, 0L);
-  if (sp->button_background != black && sp->button_background != white)
-    XFreeColors (si->dpy, cmap, &sp->button_background, 1, 0L);
-  if (sp->logo_foreground != black && sp->logo_foreground != white)
-    XFreeColors (si->dpy, cmap, &sp->logo_foreground, 1, 0L);
-  if (sp->logo_background != black && sp->logo_background != white)
-    XFreeColors (si->dpy, cmap, &sp->logo_background, 1, 0L);
-  if (sp->shadow_top != black && sp->shadow_top != white)
-    XFreeColors (si->dpy, cmap, &sp->shadow_top, 1, 0L);
-  if (sp->shadow_bottom != black && sp->shadow_bottom != white)
-    XFreeColors (si->dpy, cmap, &sp->shadow_bottom, 1, 0L);
-
-  memset (sp, 0, sizeof(*sp));
-  free (sp);
-
-  si->sp_data = 0;
-}
-
-void
-handle_splash_event (saver_info *si, XEvent *event)
-{
-  splash_dialog_data *sp = si->sp_data;
-  int which = 0;
-  if (!sp) return;
-
-  switch (event->xany.type)
-    {
-    case Expose:
-      draw_splash_window (si);
-      break;
-
-    case ButtonPress: case ButtonRelease:
-
-      if (event->xbutton.x >= sp->demo_button_x &&
-         event->xbutton.x < sp->demo_button_x + sp->button_width &&
-         event->xbutton.y >= sp->demo_button_y &&
-         event->xbutton.y < sp->demo_button_y + sp->button_height)
-       which = 1;
-
-      else if (event->xbutton.x >= sp->prefs_button_x &&
-              event->xbutton.x < sp->prefs_button_x + sp->button_width &&
-              event->xbutton.y >= sp->prefs_button_y &&
-              event->xbutton.y < sp->prefs_button_y + sp->button_height)
-       which = 2;
-
-      else if (event->xbutton.x >= sp->help_button_x &&
-              event->xbutton.x < sp->help_button_x + sp->button_width &&
-              event->xbutton.y >= sp->help_button_y &&
-              event->xbutton.y < sp->help_button_y + sp->button_height)
-       which = 3;
-
-      if (event->xany.type == ButtonPress)
-       {
-         sp->pressed = which;
-         update_splash_window (si);
-         if (which == 0)
-           XBell (si->dpy, False);
-       }
-      else if (event->xany.type == ButtonRelease)
-       {
-         if (which && sp->pressed == which)
-           {
-             destroy_splash_window (si);
-             switch (which)
-               {
-               case 1: do_demo (si); break;
-               case 2: do_prefs (si); break;
-               case 3: do_help (si); break;
-               default: abort();
-               }
-           }
-         sp->pressed = 0;
-         update_splash_window (si);
-       }
-      break;
-
-    default:
-      break;
-    }
-}
-
-static void
-unsplash_timer (XtPointer closure, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-  if (si && si->sp_data)
-    destroy_splash_window (si);
-}
-
-\f
-/* Button callbacks */
-
-#ifdef VMS
-# define pid_t int
-# define fork  vfork
-#endif /* VMS */
-
-static void
-fork_and_exec (saver_info *si, const char *command, const char *desc)
-{
-  saver_preferences *p = &si->prefs;
-  pid_t forked;
-  char buf [512];
-  char *av[5];
-  int ac;
-
-  if (!command || !*command)
-    {
-      fprintf (stderr, "%s: no %s command has been specified.\n",
-              blurb(), desc);
-      return;
-    }
-
-  switch ((int) (forked = fork ()))
-    {
-    case -1:
-      sprintf (buf, "%s: couldn't fork", blurb());
-      perror (buf);
-      break;
-
-    case 0:
-      close (ConnectionNumber (si->dpy));              /* close display fd */
-      hack_subproc_environment (si->default_screen);   /* set $DISPLAY */
-      ac = 0;
-      av [ac++] = (char *) p->shell;
-      av [ac++] = (char *) "-c";
-      av [ac++] = (char *) command;
-      av [ac]   = 0;
-      execvp (av[0], av);                              /* shouldn't return. */
-
-      sprintf (buf, "%s: execvp(\"%s\", \"%s\", \"%s\") failed",
-              blurb(), av[0], av[1], av[2]);
-      perror (buf);
-      fflush (stderr);
-      fflush (stdout);
-      exit (1);                         /* Note that this only exits a child fork.  */
-      break;
-
-    default:
-      /* parent fork. */
-      break;
-    }
-}
-
-
-static void
-do_demo (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  fork_and_exec (si, p->demo_command, "demo-mode");
-}
-
-static void
-do_prefs (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  fork_and_exec (si, p->prefs_command, "preferences");
-}
-
-static void
-do_help (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  char *help_command;
-
-  if (!p->help_url || !*p->help_url)
-    {
-      fprintf (stderr, "%s: no Help URL has been specified.\n", blurb());
-      return;
-    }
-
-  help_command = (char *) malloc (strlen (p->load_url_command) +
-                                 (strlen (p->help_url) * 2) + 10);
-  sprintf (help_command, p->load_url_command, p->help_url, p->help_url);
-  fork_and_exec (si, help_command, "URL-loading");
-  free (help_command);
-}
diff --git a/driver/stderr.c b/driver/stderr.c
deleted file mode 100644 (file)
index fafb1e5..0000000
+++ /dev/null
@@ -1,444 +0,0 @@
-/* stderr.c --- capturing stdout/stderr output onto the screensaver window.
- * 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.
- */
-
-/* stderr hackery - Why Unix Sucks, reason number 32767.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-
-#include <stdio.h>
-#include <time.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifdef HAVE_FCNTL
-# include <fcntl.h>
-#endif
-
-#include <X11/Intrinsic.h>
-
-#include "xscreensaver.h"
-#include "resources.h"
-#include "visual.h"
-
-FILE *real_stderr = 0;
-FILE *real_stdout = 0;
-
-
-/* It's ok for these to be global, since they refer to the one and only
-   stderr stream, not to a particular screen or window or visual.
- */
-static char stderr_buffer [4096];
-static char *stderr_tail = 0;
-static time_t stderr_last_read = 0;
-
-static void make_stderr_overlay_window (saver_screen_info *);
-
-
-void
-reset_stderr (saver_screen_info *ssi)
-{
-  saver_info *si = ssi->global;
-
-  if (si->prefs.debug_p)
-    fprintf ((real_stderr ? real_stderr : stderr),
-            "%s: resetting stderr\n", blurb());
-
-  ssi->stderr_text_x = 0;
-  ssi->stderr_text_y = 0;
-
-  if (ssi->stderr_gc)
-    XFreeGC (si->dpy, ssi->stderr_gc);
-  ssi->stderr_gc = 0;
-
-  if (ssi->stderr_overlay_window)
-    XDestroyWindow(si->dpy, ssi->stderr_overlay_window);
-  ssi->stderr_overlay_window = 0;
-
-  if (ssi->stderr_cmap)
-    XFreeColormap(si->dpy, ssi->stderr_cmap);
-  ssi->stderr_cmap = 0;
-}
-
-void
-clear_stderr (saver_screen_info *ssi)
-{
-  saver_info *si = ssi->global;
-  ssi->stderr_text_x = 0;
-  ssi->stderr_text_y = 0;
-  if (ssi->stderr_overlay_window)
-    XClearWindow (si->dpy, ssi->stderr_overlay_window);
-}
-
-
-static void
-print_stderr_1 (saver_screen_info *ssi, char *string)
-{
-  saver_info *si = ssi->global;
-  Display *dpy = si->dpy;
-  Screen *screen = ssi->screen;
-  Window window = (ssi->stderr_overlay_window ?
-                  ssi->stderr_overlay_window :
-                  ssi->screensaver_window);
-  int h_border = 20;
-  int v_border = 20;
-  char *head = string;
-  char *tail;
-
-  if (! ssi->stderr_font)
-    {
-      char *font_name = get_string_resource ("font", "Font");
-      if (!font_name) font_name = "fixed";
-      ssi->stderr_font = XLoadQueryFont (dpy, font_name);
-      if (! ssi->stderr_font) ssi->stderr_font = XLoadQueryFont (dpy, "fixed");
-      ssi->stderr_line_height = (ssi->stderr_font->ascent +
-                                ssi->stderr_font->descent);
-    }
-
-  if (! ssi->stderr_gc)
-    {
-      XGCValues gcv;
-      Pixel fg, bg;
-      Colormap cmap = ssi->cmap;
-
-      if (!ssi->stderr_overlay_window &&
-         get_boolean_resource("overlayStderr", "Boolean"))
-       {
-         make_stderr_overlay_window (ssi);
-         if (ssi->stderr_overlay_window)
-           window = ssi->stderr_overlay_window;
-         if (ssi->stderr_cmap)
-           cmap = ssi->stderr_cmap;
-       }
-
-      fg = get_pixel_resource ("overlayTextForeground","Foreground",dpy,cmap);
-      bg = get_pixel_resource ("overlayTextBackground","Background",dpy,cmap);
-      gcv.font = ssi->stderr_font->fid;
-      gcv.foreground = fg;
-      gcv.background = bg;
-      ssi->stderr_gc = XCreateGC (dpy, window,
-                                 (GCFont | GCForeground | GCBackground),
-                                 &gcv);
-    }
-
-
-  if (ssi->stderr_cmap)
-    XInstallColormap(si->dpy, ssi->stderr_cmap);
-
-  for (tail = string; *tail; tail++)
-    {
-      if (*tail == '\n' || *tail == '\r')
-       {
-         int maxy = HeightOfScreen (screen) - v_border - v_border;
-         if (tail != head)
-           XDrawImageString (dpy, window, ssi->stderr_gc,
-                             ssi->stderr_text_x + h_border,
-                             ssi->stderr_text_y + v_border +
-                             ssi->stderr_font->ascent,
-                             head, tail - head);
-         ssi->stderr_text_x = 0;
-         ssi->stderr_text_y += ssi->stderr_line_height;
-         head = tail + 1;
-         if (*tail == '\r' && *head == '\n')
-           head++, tail++;
-
-         if (ssi->stderr_text_y > maxy - ssi->stderr_line_height)
-           {
-#if 0
-             ssi->stderr_text_y = 0;
-#else
-             int offset = ssi->stderr_line_height * 5;
-              XWindowAttributes xgwa;
-              XGetWindowAttributes (dpy, window, &xgwa);
-
-             XCopyArea (dpy, window, window, ssi->stderr_gc,
-                        0, v_border + offset,
-                        xgwa.width,
-                        (xgwa.height - v_border - v_border - offset),
-                        0, v_border);
-             XClearArea (dpy, window,
-                         0, xgwa.height - v_border - offset,
-                         xgwa.width, offset, False);
-             ssi->stderr_text_y -= offset;
-#endif
-           }
-       }
-    }
-  if (tail != head)
-    {
-      int direction, ascent, descent;
-      XCharStruct overall;
-      XDrawImageString (dpy, window, ssi->stderr_gc,
-                       ssi->stderr_text_x + h_border,
-                       ssi->stderr_text_y + v_border
-                         + ssi->stderr_font->ascent,
-                       head, tail - head);
-      XTextExtents (ssi->stderr_font, tail, tail - head,
-                   &direction, &ascent, &descent, &overall);
-      ssi->stderr_text_x += overall.width;
-    }
-}
-
-static void
-make_stderr_overlay_window (saver_screen_info *ssi)
-{
-  saver_info *si = ssi->global;
-  unsigned long transparent_pixel = 0;
-  Visual *visual = get_overlay_visual (ssi->screen, &transparent_pixel);
-  if (visual)
-    {
-      int depth = visual_depth (ssi->screen, visual);
-      XSetWindowAttributes attrs;
-      XWindowAttributes xgwa;
-      unsigned long attrmask;
-      XGetWindowAttributes (si->dpy, ssi->screensaver_window, &xgwa);
-
-      if (si->prefs.debug_p)
-       fprintf(real_stderr,
-               "%s: using overlay visual 0x%0x for stderr text layer.\n",
-               blurb(), (int) XVisualIDFromVisual (visual));
-
-      ssi->stderr_cmap = XCreateColormap(si->dpy,
-                                        RootWindowOfScreen(ssi->screen),
-                                        visual, AllocNone);
-
-      attrmask = (CWColormap | CWBackPixel | CWBackingPixel | CWBorderPixel |
-                 CWBackingStore | CWSaveUnder);
-      attrs.colormap = ssi->stderr_cmap;
-      attrs.background_pixel = transparent_pixel;
-      attrs.backing_pixel = transparent_pixel;
-      attrs.border_pixel = transparent_pixel;
-      attrs.backing_store = NotUseful;
-      attrs.save_under = False;
-
-      ssi->stderr_overlay_window =
-       XCreateWindow(si->dpy, ssi->screensaver_window, 0, 0,
-                     xgwa.width, xgwa.height,
-                     0, depth, InputOutput, visual, attrmask, &attrs);
-      XMapRaised(si->dpy, ssi->stderr_overlay_window);
-    }
-}
-
-
-static void
-print_stderr (saver_info *si, char *string)
-{
-  saver_preferences *p = &si->prefs;
-  int i;
-
-  /* In verbose mode, copy it to stderr as well. */
-  if (p->verbose_p)
-    fprintf (real_stderr, "%s", string);
-
-  for (i = 0; i < si->nscreens; i++)
-    print_stderr_1 (&si->screens[i], string);
-}
-
-
-static void
-stderr_popup_timer_fn (XtPointer closure, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-  char *s = stderr_buffer;
-  if (*s)
-    {
-      /* If too much data was printed, then something has gone haywire,
-        so truncate it. */
-      char *trailer = "\n\n<< stderr diagnostics have been truncated >>\n\n";
-      int max = sizeof (stderr_buffer) - strlen (trailer) - 5;
-      if (strlen (s) > max)
-       strcpy (s + max, trailer);
-      /* Now show the user. */
-      print_stderr (si, s);
-    }
-
-  stderr_tail = stderr_buffer;
-  si->stderr_popup_timer = 0;
-}
-
-
-static void
-stderr_callback (XtPointer closure, int *fd, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-  char *s;
-  int left;
-  int size;
-  int read_this_time = 0;
-
-  if (stderr_tail == 0)
-    stderr_tail = stderr_buffer;
-
-  left = ((sizeof (stderr_buffer) - 2) - (stderr_tail - stderr_buffer));
-
-  s = stderr_tail;
-  *s = 0;
-
-  /* Read as much data from the fd as we can, up to our buffer size. */
-  if (left > 0)
-    {
-      while ((size = read (*fd, (void *) s, left)) > 0)
-       {
-         left -= size;
-         s += size;
-         read_this_time += size;
-       }
-      *s = 0;
-    }
-  else
-    {
-      char buf2 [1024];
-      /* The buffer is full; flush the rest of it. */
-      while (read (*fd, (void *) buf2, sizeof (buf2)) > 0)
-       ;
-    }
-
-  stderr_tail = s;
-  stderr_last_read = time ((time_t *) 0);
-
-  /* Now we have read some data that we would like to put up in a dialog
-     box.  But more data may still be coming in - so don't pop up the
-     dialog right now, but instead, start a timer that will pop it up
-     a second from now.  Should more data come in in the meantime, we
-     will be called again, and will reset that timer again.  So the
-     dialog will only pop up when a second has elapsed with no new data
-     being written to stderr.
-
-     However, if the buffer is full (meaning lots of data has been written)
-     then we don't reset the timer.
-   */
-  if (read_this_time > 0)
-    {
-      if (si->stderr_popup_timer)
-       XtRemoveTimeOut (si->stderr_popup_timer);
-
-      si->stderr_popup_timer =
-       XtAppAddTimeOut (si->app, 1 * 1000, stderr_popup_timer_fn,
-                        (XtPointer) si);
-    }
-}
-
-void
-initialize_stderr (saver_info *si)
-{
-  static Boolean done = False;
-  int fds [2];
-  int in, out;
-  int new_stdout, new_stderr;
-  int stdout_fd = 1;
-  int stderr_fd = 2;
-  int flags = 0;
-  Boolean stderr_dialog_p;
-
-  if (done) return;
-  done = True;
-
-  real_stderr = stderr;
-  real_stdout = stdout;
-
-  stderr_dialog_p = get_boolean_resource ("captureStderr", "Boolean");
-
-  if (!stderr_dialog_p)
-    return;
-
-  if (pipe (fds))
-    {
-      perror ("error creating pipe:");
-      return;
-    }
-
-  in = fds [0];
-  out = fds [1];
-
-# ifdef HAVE_FCNTL
-
-#  if defined(O_NONBLOCK)
-   flags = O_NONBLOCK;
-#  elif defined(O_NDELAY)
-   flags = O_NDELAY;
-#  else
-   ERROR!! neither O_NONBLOCK nor O_NDELAY are defined.
-#  endif
-
-    /* Set both sides of the pipe to nonblocking - this is so that
-       our reads (in stderr_callback) will terminate, and so that
-       out writes (in the client programs) will silently fail when
-       the pipe is full, instead of hosing the program. */
-  if (fcntl (in, F_SETFL, flags) != 0)
-    {
-      perror ("fcntl:");
-      return;
-    }
-  if (fcntl (out, F_SETFL, flags) != 0)
-    {
-      perror ("fcntl:");
-      return;
-    }
-
-# endif /* !HAVE_FCNTL */
-
-  if (stderr_dialog_p)
-    {
-      FILE *new_stderr_file;
-      FILE *new_stdout_file;
-
-      new_stderr = dup (stderr_fd);
-      if (new_stderr < 0)
-       {
-         perror ("could not dup() a stderr:");
-         return;
-       }
-      if (! (new_stderr_file = fdopen (new_stderr, "w")))
-       {
-         perror ("could not fdopen() the new stderr:");
-         return;
-       }
-      real_stderr = new_stderr_file;
-
-      close (stderr_fd);
-      if (dup2 (out, stderr_fd) < 0)
-       {
-         perror ("could not dup() a new stderr:");
-         return;
-       }
-
-
-      new_stdout = dup (stdout_fd);
-      if (new_stdout < 0)
-       {
-         perror ("could not dup() a stdout:");
-         return;
-       }
-      if (! (new_stdout_file = fdopen (new_stdout, "w")))
-       {
-         perror ("could not fdopen() the new stdout:");
-         return;
-       }
-      real_stdout = new_stdout_file;
-
-      close (stdout_fd);
-      if (dup2 (out, stdout_fd) < 0)
-       {
-         perror ("could not dup() a new stdout:");
-         return;
-       }
-    }
-
-  XtAppAddInput (si->app, in, (XtPointer) XtInputReadMask, stderr_callback,
-                (XtPointer) si);
-}
diff --git a/driver/subprocs.c b/driver/subprocs.c
deleted file mode 100644 (file)
index 53dd884..0000000
+++ /dev/null
@@ -1,1088 +0,0 @@
-/* subprocs.c --- choosing, spawning, and killing screenhacks.
- * xscreensaver, Copyright (c) 1991, 1992, 1993, 1995, 1997, 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <X11/Xlib.h>          /* not used for much... */
-
-#ifndef ESRCH
-# include <errno.h>
-#endif
-
-#include <sys/time.h>          /* sys/resource.h needs this for timeval */
-
-#ifdef HAVE_SYS_WAIT_H
-# include <sys/wait.h>         /* for waitpid() and associated macros */
-#endif
-
-#if defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
-# include <sys/resource.h>     /* for setpriority() and PRIO_PROCESS */
-#endif
-
-#ifdef VMS
-# include <processes.h>
-# include <unixio.h>           /* for close */
-# include <unixlib.h>          /* for getpid */
-# define pid_t int
-# define fork  vfork
-#endif /* VMS */
-
-#include <signal.h>            /* for the signal names */
-
-#if !defined(SIGCHLD) && defined(SIGCLD)
-# define SIGCHLD SIGCLD
-#endif
-
-#if 0 /* putenv() is declared in stdlib.h on modern linux systems. */
-#ifdef HAVE_PUTENV
-extern int putenv (/* const char * */);        /* getenv() is in stdlib.h... */
-#endif
-#endif
-
-extern int kill (pid_t, int);          /* signal() is in sys/signal.h... */
-
-/* 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"
-#include "yarandom.h"
-
-
-extern saver_info *global_si_kludge;   /* I hate C so much... */
-
-static void
-nice_subproc (int nice_level)
-{
-  if (nice_level == 0)
-    return;
-
-#if defined(HAVE_NICE)
-  {
-    int old_nice = nice (0);
-    int n = nice_level - old_nice;
-    errno = 0;
-    if (nice (n) == -1 && errno != 0)
-      {
-       char buf [512];
-       sprintf (buf, "%s: nice(%d) failed", blurb(), n);
-       perror (buf);
-    }
-  }
-#elif defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
-  if (setpriority (PRIO_PROCESS, getpid(), nice_level) != 0)
-    {
-      char buf [512];
-      sprintf (buf, "%s: setpriority(PRIO_PROCESS, %lu, %d) failed",
-              blurb(), (unsigned long) getpid(), nice_level);
-      perror (buf);
-    }
-#else
-  fprintf (stderr,
-          "%s: don't know how to change process priority on this system.\n",
-          blurb());
-
-#endif
-}
-
-
-#ifndef VMS
-
-static void
-exec_simple_command (const char *command)
-{
-  char *av[1024];
-  int ac = 0;
-  char *token = strtok (strdup(command), " \t");
-  while (token)
-    {
-      av[ac++] = token;
-      token = strtok(0, " \t");
-    }
-  av[ac] = 0;
-
-  execvp (av[0], av);                  /* shouldn't return. */
-
-  {
-    char buf [512];
-    sprintf (buf, "%s: could not execute \"%s\"", blurb(), av[0]);
-    perror (buf);
-
-    if (errno == ENOENT &&
-       (token = getenv("PATH")))
-      {
-# ifndef PATH_MAX
-#  ifdef MAXPATHLEN
-#   define PATH_MAX MAXPATHLEN
-#  else
-#   define PATH_MAX 2048
-#  endif
-# endif
-       char path[PATH_MAX];
-       fprintf (stderr, "\n");
-       *path = 0;
-# if defined(HAVE_GETCWD)
-       getcwd (path, sizeof(path));
-# elif defined(HAVE_GETWD)
-       getwd (path);
-# endif
-       if (*path)
-         fprintf (stderr, "    Current directory is: %s\n", path);
-       fprintf (stderr, "    PATH is:\n");
-       token = strtok (strdup(token), ":");
-       while (token)
-         {
-           fprintf (stderr, "        %s\n", token);
-           token = strtok(0, ":");
-         }
-       fprintf (stderr, "\n");
-      }
-  }
-  fflush(stderr);
-  fflush(stdout);
-  exit (1);    /* Note that this only exits a child fork.  */
-}
-
-
-static void
-exec_complex_command (const char *shell, const char *command)
-{
-  char *av[5];
-  int ac = 0;
-  char *command2 = (char *) malloc (strlen (command) + 6);
-  memcpy (command2, "exec ", 5);
-  memcpy (command2 + 5, command, strlen (command) + 1);
-
-  /* Invoke the shell as "/bin/sh -c 'exec prog -arg -arg ...'" */
-  av [ac++] = (char *) shell;
-  av [ac++] = "-c";
-  av [ac++] = command2;
-  av [ac]   = 0;
-
-  execvp (av[0], av);                  /* shouldn't return. */
-
-  {
-    char buf [512];
-    sprintf (buf, "%s: execvp(\"%s\") failed", blurb(), av[0]);
-    perror (buf);
-    fflush(stderr);
-    fflush(stdout);
-    exit (1);  /* Note that this only exits a child fork.  */
-  }
-}
-
-#else  /* VMS */
-
-static void
-exec_vms_command (const char *command)
-{
-  system (command);
-  fflush (stderr);
-  fflush (stdout);
-  exit (1);    /* Note that this only exits a child fork.  */
-}
-
-#endif /* !VMS */
-
-
-static void
-exec_screenhack (saver_info *si, const char *command)
-{
-  /* I don't believe what a sorry excuse for an operating system UNIX is!
-
-     - I want to spawn a process.
-     - I want to know it's pid so that I can kill it.
-     - I would like to receive a message when it dies of natural causes.
-     - I want the spawned process to have user-specified arguments.
-
-     If shell metacharacters are present (wildcards, backquotes, etc), the
-     only way to parse those arguments is to run a shell to do the parsing
-     for you.
-
-     And the only way to know the pid of the process is to fork() and exec()
-     it in the spawned side of the fork.
-
-     But if you're running a shell to parse your arguments, this gives you
-     the pid of the *shell*, not the pid of the *process* that you're
-     actually interested in, which is an *inferior* of the shell.  This also
-     means that the SIGCHLD you get applies to the shell, not its inferior.
-     (Why isn't that sufficient?  I don't remember any more, but it turns
-     out that it isn't.)
-
-     So, the only solution, when metacharacters are present, is to force the
-     shell to exec() its inferior.  What a fucking hack!  We prepend "exec "
-     to the command string, and hope it doesn't contain unquoted semicolons
-     or ampersands (we don't search for them, because we don't want to
-     prohibit their use in quoted strings (messages, for example) and parsing
-     out the various quote characters is too much of a pain.)
-
-     (Actually, Clint Wong <clint@jts.com> points out that process groups
-     might be used to take care of this problem; this may be worth considering
-     some day, except that, 1: this code works now, so why fix it, and 2: from
-     what I've seen in Emacs, dealing with process groups isn't especially
-     portable.)
-   */
-  saver_preferences *p = &si->prefs;
-
-#ifndef VMS
-  Bool hairy_p = !!strpbrk (command, "*?$&!<>[];`'\\\"=");
-  /* note: = is in the above because of the sh syntax "FOO=bar cmd". */
-
-  if (getuid() == (uid_t) 0 || geteuid() == (uid_t) 0)
-    {
-      /* If you're thinking of commenting this out, think again.
-         If you do so, you will open a security hole.  Mail jwz
-         so that he may enlighten you as to the error of your ways.
-       */
-      fprintf (stderr, "%s: we're still running as root!  Disaster!\n",
-               blurb());
-      saver_exit (si, 1, 0);
-    }
-
-  if (p->verbose_p)
-    fprintf (stderr, "%s: spawning \"%s\" in pid %lu%s.\n",
-            blurb(), command, (unsigned long) getpid (),
-            (hairy_p ? " (via shell)" : ""));
-
-  if (hairy_p)
-    /* If it contains any shell metacharacters, do it the hard way,
-       and fork a shell to parse the arguments for us. */
-    exec_complex_command (p->shell, command);
-  else
-    /* Otherwise, we can just exec the program directly. */
-    exec_simple_command (command);
-
-#else /* VMS */
-  if (p->verbose_p)
-    fprintf (stderr, "%s: spawning \"%s\" in pid %lu.\n",
-            blurb(), command, getpid());
-  exec_vms_command (command);
-#endif /* VMS */
-
-  abort();     /* that shouldn't have returned. */
-}
-
-
-\f
-/* Management of child processes, and de-zombification.
- */
-
-enum job_status {
-  job_running, /* the process is still alive */
-  job_stopped, /* we have sent it a STOP signal */
-  job_killed,  /* we have sent it a TERM signal */
-  job_dead     /* we have wait()ed for it, and it's dead -- this state only
-                  occurs so that we can avoid calling free() from a signal
-                  handler.  Shortly after going into this state, the list
-                  element will be removed. */
-};
-
-struct screenhack_job {
-  char *name;
-  pid_t pid;
-  enum job_status status;
-  struct screenhack_job *next;
-};
-
-static struct screenhack_job *jobs = 0;
-
-/* for debugging -- nothing calls this, but it's useful to invoke from gdb. */
-void
-show_job_list (void)
-{
-  struct screenhack_job *job;
-  fprintf(stderr, "%s: job list:\n", blurb());
-  for (job = jobs; job; job = job->next)
-    fprintf (stderr, "  %5ld: (%s) %s\n",
-            (long) job->pid,
-            (job->status == job_running ? "running" :
-             job->status == job_stopped ? "stopped" :
-             job->status == job_killed  ? " killed" :
-             job->status == job_dead    ? "   dead" : "    ???"),
-            job->name);
-  fprintf (stderr, "\n");
-}
-
-
-static void clean_job_list (void);
-
-static struct screenhack_job *
-make_job (pid_t pid, const char *cmd)
-{
-  struct screenhack_job *job = (struct screenhack_job *) malloc (sizeof(*job));
-
-  static char name [1024];
-  const char *in = cmd;
-  char *out = name;
-
-  clean_job_list();
-
-  while (isspace(*in)) in++;           /* skip whitespace */
-  while (!isspace(*in) && *in != ':')
-    *out++ = *in++;                    /* snarf first token */
-  while (isspace(*in)) in++;           /* skip whitespace */
-  if (*in == ':')                      /* token was a visual name; skip it. */
-    {
-      in++;
-      out = name;
-      while (isspace(*in)) in++;               /* skip whitespace */
-      while (!isspace(*in)) *out++ = *in++;    /* snarf first token */
-    }
-  *out = 0;
-
-  job->name = strdup(name);
-  job->pid = pid;
-  job->status = job_running;
-  job->next = jobs;
-  jobs = job;
-
-  return jobs;
-}
-
-
-static void
-free_job (struct screenhack_job *job)
-{
-  if (!job)
-    return;
-  else if (job == jobs)
-    jobs = jobs->next;
-  else
-    {
-      struct screenhack_job *job2, *prev;
-      for (prev = 0, job2 = jobs;
-          job2;
-          prev = job2, job2 = job2->next)
-       if (job2 == job)
-         {
-           prev->next = job->next;
-           break;
-         }
-    }
-  free(job->name);
-  free(job);
-}
-
-
-/* Cleans out dead jobs from the jobs list -- this must only be called
-   from the main thread, not from a signal handler. 
- */
-static void
-clean_job_list (void)
-{
-  struct screenhack_job *job, *prev, *next;
-  for (prev = 0, job = jobs, next = (job ? job->next : 0);
-       job;
-       prev = job, job = next, next = (job ? job->next : 0))
-    {
-      if (job->status == job_dead)
-       {
-         if (prev)
-           prev->next = next;
-         free_job (job);
-         job = prev;
-       }
-    }
-}
-
-
-static struct screenhack_job *
-find_job (pid_t pid)
-{
-  struct screenhack_job *job;
-  for (job = jobs; job; job = job->next)
-    if (job->pid == pid)
-      return job;
-  return 0;
-}
-
-static void await_dying_children (saver_info *si);
-#ifndef VMS
-static void describe_dead_child (saver_info *, pid_t, int wait_status);
-#endif
-
-
-/* Semaphore to temporarily turn the SIGCHLD handler into a no-op.
-   Don't alter this directly -- use block_sigchld() / unblock_sigchld().
- */
-static int block_sigchld_handler = 0;
-
-
-static void
-block_sigchld (void)
-{
-#ifdef HAVE_SIGACTION
-  sigset_t child_set;
-  sigemptyset (&child_set);
-  sigaddset (&child_set, SIGCHLD);
-  sigprocmask (SIG_BLOCK, &child_set, 0);
-#endif /* HAVE_SIGACTION */
-
-  block_sigchld_handler++;
-}
-
-static void
-unblock_sigchld (void)
-{
-#ifdef HAVE_SIGACTION
-  sigset_t child_set;
-  sigemptyset(&child_set);
-  sigaddset(&child_set, SIGCHLD);
-  sigprocmask(SIG_UNBLOCK, &child_set, 0);
-#endif /* HAVE_SIGACTION */
-
-  block_sigchld_handler--;
-}
-
-static int
-kill_job (saver_info *si, pid_t pid, int signal)
-{
-  saver_preferences *p = &si->prefs;
-  struct screenhack_job *job;
-  int status = -1;
-
-  clean_job_list();
-
-  if (block_sigchld_handler)
-    /* This function should not be called from the signal handler. */
-    abort();
-
-  block_sigchld();                     /* we control the horizontal... */
-
-  job = find_job (pid);
-  if (!job ||
-      !job->pid ||
-      job->status == job_killed)
-    {
-      if (p->verbose_p)
-       fprintf (stderr, "%s: no child %ld to signal!\n",
-                blurb(), (long) pid);
-      goto DONE;
-    }
-
-  switch (signal) {
-  case SIGTERM: job->status = job_killed;  break;
-#ifdef SIGSTOP
-    /* #### there must be a way to do this on VMS... */
-  case SIGSTOP: job->status = job_stopped; break;
-  case SIGCONT: job->status = job_running; break;
-#endif /* SIGSTOP */
-  default: abort();
-  }
-
-#ifdef SIGSTOP
-  if (p->verbose_p)
-    fprintf (stderr, "%s: %s pid %lu.\n", blurb(),
-            (signal == SIGTERM ? "killing" :
-             signal == SIGSTOP ? "suspending" :
-             signal == SIGCONT ? "resuming" : "signalling"),
-            (unsigned long) job->pid);
-#else  /* !SIGSTOP */
-  if (p->verbose_p)
-    fprintf (stderr, "%s: %s pid %lu.\n", blurb(), "killing",
-            (unsigned long) job->pid);
-#endif /* !SIGSTOP */
-
-  status = kill (job->pid, signal);
-
-  if (p->verbose_p && status < 0)
-    {
-      if (errno == ESRCH)
-       fprintf (stderr, "%s: child process %lu (%s) was already dead.\n",
-                blurb(), job->pid, job->name);
-      else
-       {
-         char buf [1024];
-         sprintf (buf, "%s: couldn't kill child process %lu (%s)",
-                  blurb(), job->pid, job->name);
-         perror (buf);
-       }
-    }
-
-  await_dying_children (si);
-
- DONE:
-  unblock_sigchld();
-  if (block_sigchld_handler < 0)
-    abort();
-
-  clean_job_list();
-  return status;
-}
-
-
-#ifdef SIGCHLD
-static RETSIGTYPE
-sigchld_handler (int sig)
-{
-  saver_info *si = global_si_kludge;   /* I hate C so much... */
-
-  if (si->prefs.debug_p)
-    fprintf(stderr, "%s: got SIGCHLD%s\n", blurb(),
-           (block_sigchld_handler ? " (blocked)" : ""));
-
-  if (block_sigchld_handler < 0)
-    abort();
-  else if (block_sigchld_handler == 0)
-    {
-      block_sigchld();
-      await_dying_children (si);
-      unblock_sigchld();
-    }
-
-  init_sigchld();
-}
-#endif /* SIGCHLD */
-
-
-#ifndef VMS
-static void
-await_dying_children (saver_info *si)
-{
-  while (1)
-    {
-      int wait_status = 0;
-      pid_t kid;
-
-      errno = 0;
-      kid = waitpid (-1, &wait_status, WNOHANG|WUNTRACED);
-
-      if (si->prefs.debug_p)
-       {
-         if (kid < 0 && errno)
-           fprintf (stderr, "%s: waitpid(-1) ==> %ld (%d)\n", blurb(),
-                    (long) kid, errno);
-         else
-           fprintf (stderr, "%s: waitpid(-1) ==> %ld\n", blurb(),
-                    (long) kid);
-       }
-
-      /* 0 means no more children to reap.
-        -1 means error -- except "interrupted system call" isn't a "real"
-        error, so if we get that, we should just try again. */
-      if (kid == 0 ||
-         (kid < 0 && errno != EINTR))
-       break;
-
-      describe_dead_child (si, kid, wait_status);
-    }
-}
-
-
-static void
-describe_dead_child (saver_info *si, pid_t kid, int wait_status)
-{
-  int i;
-  saver_preferences *p = &si->prefs;
-  struct screenhack_job *job = find_job (kid);
-  const char *name = job ? job->name : "<unknown>";
-
-  if (WIFEXITED (wait_status))
-    {
-      int exit_status = WEXITSTATUS (wait_status);
-
-      /* Treat exit code as a signed 8-bit quantity. */
-      if (exit_status & 0x80) exit_status |= ~0xFF;
-
-      /* One might assume that exiting with non-0 means something went wrong.
-        But that loser xswarm exits with the code that it was killed with, so
-        it *always* exits abnormally.  Treat abnormal exits as "normal" (don't
-        mention them) if we've just killed the subprocess.  But mention them
-        if they happen on their own.
-       */
-      if (!job ||
-         (exit_status != 0 &&
-          (p->verbose_p || job->status != job_killed)))
-       fprintf (stderr,
-                "%s: child pid %lu (%s) exited abnormally (code %d).\n",
-                blurb(), (unsigned long) kid, name, exit_status);
-      else if (p->verbose_p)
-       fprintf (stderr, "%s: child pid %lu (%s) exited normally.\n",
-                blurb(), (unsigned long) kid, name);
-
-      if (job)
-       job->status = job_dead;
-    }
-  else if (WIFSIGNALED (wait_status))
-    {
-      if (p->verbose_p ||
-         !job ||
-         job->status != job_killed ||
-         WTERMSIG (wait_status) != SIGTERM)
-       fprintf (stderr, "%s: child pid %lu (%s) terminated with %s.\n",
-                blurb(), (unsigned long) kid, name,
-                signal_name (WTERMSIG(wait_status)));
-
-      if (job)
-       job->status = job_dead;
-    }
-  else if (WIFSTOPPED (wait_status))
-    {
-      if (p->verbose_p)
-       fprintf (stderr, "%s: child pid %lu (%s) stopped with %s.\n",
-                blurb(), (unsigned long) kid, name,
-                signal_name (WSTOPSIG (wait_status)));
-
-      if (job)
-       job->status = job_stopped;
-    }
-  else
-    {
-      fprintf (stderr, "%s: child pid %lu (%s) died in a mysterious way!",
-              blurb(), (unsigned long) kid, name);
-      if (job)
-       job->status = job_dead;
-    }
-
-  /* Clear out the pid so that screenhack_running_p() knows it's dead.
-   */
-  if (!job || job->status == job_dead)
-    for (i = 0; i < si->nscreens; i++)
-      {
-       saver_screen_info *ssi = &si->screens[i];
-       if (kid == ssi->pid)
-         ssi->pid = 0;
-      }
-}
-
-#else  /* VMS */
-static void await_dying_children (saver_info *si) { return; }
-#endif /* VMS */
-
-
-void
-init_sigchld (void)
-{
-#ifdef SIGCHLD
-
-# ifdef HAVE_SIGACTION /* Thanks to Tom Kelly <tom@ancilla.toronto.on.ca> */
-
-  static Bool sigchld_initialized_p = 0;
-  if (!sigchld_initialized_p)
-    {
-      struct sigaction action, old;
-
-      action.sa_handler = sigchld_handler;
-      sigemptyset(&action.sa_mask);
-      action.sa_flags = 0;
-
-      if (sigaction(SIGCHLD, &action, &old) < 0)
-       {
-         char buf [255];
-         sprintf (buf, "%s: couldn't catch SIGCHLD", blurb());
-         perror (buf);
-       }
-      sigchld_initialized_p = True;
-    }
-
-# else  /* !HAVE_SIGACTION */
-
-  if (((long) signal (SIGCHLD, sigchld_handler)) == -1L)
-    {
-      char buf [255];
-      sprintf (buf, "%s: couldn't catch SIGCHLD", blurb());
-      perror (buf);
-    }
-# endif /* !HAVE_SIGACTION */
-#endif /* SIGCHLD */
-}
-
-
-
-\f
-
-static Bool
-hack_enabled_p (const char *hack)
-{
-  const char *s = hack;
-  while (isspace(*s)) s++;
-  return (*s != '-');
-}
-
-static Bool
-select_visual_of_hack (saver_screen_info *ssi, const char *hack)
-{
-  saver_info *si = ssi->global;
-  saver_preferences *p = &si->prefs;
-  Bool selected;
-  static char vis [1024];
-  const char *in = hack;
-  char *out = vis;
-  while (isspace(*in)) in++;           /* skip whitespace */
-  if (*in == '-') in++;                        /* skip optional "-" */
-  while (isspace(*in)) in++;           /* skip whitespace */
-
-  while (!isspace(*in) && *in != ':')
-    *out++ = *in++;                    /* snarf first token */
-  while (isspace(*in)) in++;           /* skip whitespace */
-  *out = 0;
-
-  if (*in == ':')
-    selected = select_visual(ssi, vis);
-  else
-    selected = select_visual(ssi, 0);
-
-  if (!selected && (p->verbose_p || si->demoing_p))
-    {
-      if (*in == ':') in++;
-      while (isspace(*in)) in++;
-      fprintf (stderr,
-              (si->demoing_p
-               ? "%s: warning, no \"%s\" visual for \"%s\".\n"
-               : "%s: no \"%s\" visual; skipping \"%s\".\n"),
-              blurb(), (*vis ? vis : "???"), in);
-    }
-
-  return selected;
-}
-
-
-static void
-spawn_screenhack_1 (saver_screen_info *ssi, Bool first_time_p)
-{
-  saver_info *si = ssi->global;
-  saver_preferences *p = &si->prefs;
-  raise_window (si, first_time_p, True, False);
-  XFlush (si->dpy);
-
-  if (p->screenhacks_count)
-    {
-      char *hack;
-      pid_t forked;
-      char buf [255];
-      int new_hack;
-      int retry_count = 0;
-      Bool force = False;
-
-    AGAIN:
-
-      if (p->screenhacks_count == 1)
-       /* If there is only one hack in the list, there is no choice. */
-       new_hack = 0;
-
-      else if (si->selection_mode == -1)
-       /* Select the next hack, wrapping. */
-       new_hack = (ssi->current_hack + 1) % p->screenhacks_count;
-
-      else if (si->selection_mode == -2)
-       /* Select the previous hack, wrapping. */
-       new_hack = ((ssi->current_hack + p->screenhacks_count - 1)
-                   % p->screenhacks_count);
-
-      else if (si->selection_mode > 0)
-       /* Select a specific hack, by number.  No negotiation. */
-       {
-         new_hack = ((si->selection_mode - 1) % p->screenhacks_count);
-         force = True;
-       }
-      else
-       {
-         /* Select a random hack (but not the one we just ran.) */
-         while ((new_hack = random () % p->screenhacks_count)
-                == ssi->current_hack)
-           ;
-       }
-
-      ssi->current_hack = new_hack;
-      hack = p->screenhacks[ssi->current_hack];
-
-      /* If the hack is disabled, or there is no visual for this hack,
-        then try again (move forward, or backward, or re-randomize.)
-        Unless this hack was specified explicitly, in which case,
-        use it regardless.
-       */
-      if (force)
-        select_visual_of_hack (ssi, hack);
-        
-      if (!force &&
-         (!hack_enabled_p (hack) ||
-          !select_visual_of_hack (ssi, hack)))
-       {
-         if (++retry_count > (p->screenhacks_count*4))
-           {
-             /* Uh, oops.  Odds are, there are no suitable visuals,
-                and we're looping.  Give up.  (This is totally lame,
-                what we should do is make a list of suitable hacks at
-                the beginning, then only loop over them.)
-             */
-             if (p->verbose_p)
-               fprintf(stderr,
-                       "%s: no suitable visuals for these programs.\n",
-                       blurb());
-             return;
-           }
-         else
-           goto AGAIN;
-       }
-
-      /* Turn off "next" and "prev" modes now, but "demo" mode is only
-        turned off by explicit action.
-       */
-      if (si->selection_mode < 0)
-       si->selection_mode = 0;
-
-
-      /* If there's a visual description on the front of the command, nuke it.
-       */
-      {
-       char *in = hack;
-       while (isspace(*in)) in++;                      /* skip whitespace */
-       if (*in == '-') in++;                           /* skip optional "-" */
-       while (isspace(*in)) in++;                      /* skip whitespace */
-       hack = in;
-       while (!isspace(*in) && *in != ':') in++;       /* snarf first token */
-       while (isspace(*in)) in++;                      /* skip whitespace */
-       if (*in == ':')
-         {
-           in++;
-           while (isspace(*in)) in++;
-           hack = in;
-         }
-      }
-
-      switch ((int) (forked = fork ()))
-       {
-       case -1:
-         sprintf (buf, "%s: couldn't fork", blurb());
-         perror (buf);
-         restore_real_vroot (si);
-         saver_exit (si, 1, 0);
-
-       case 0:
-         close (ConnectionNumber (si->dpy));   /* close display fd */
-         nice_subproc (p->nice_inferior);      /* change process priority */
-         hack_subproc_environment (ssi);       /* set $DISPLAY */
-         exec_screenhack (si, hack);           /* this does not return */
-         abort();
-         break;
-
-       default:
-         ssi->pid = forked;
-         (void) make_job (forked, hack);
-         break;
-       }
-    }
-}
-
-
-void
-spawn_screenhack (saver_info *si, Bool first_time_p)
-{
-  int i;
-
-  if (!monitor_powered_on_p (si))
-    {
-      if (si->prefs.verbose_p)
-       fprintf (stderr,
-                "%s: server reports that monitor has powered down; "
-                "not launching a new hack.\n", blurb());
-      return;
-    }
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      spawn_screenhack_1 (ssi, first_time_p);
-    }
-}
-
-
-void
-kill_screenhack (saver_info *si)
-{
-  int i;
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      if (ssi->pid)
-       kill_job (si, ssi->pid, SIGTERM);
-      ssi->pid = 0;
-    }
-}
-
-
-void
-suspend_screenhack (saver_info *si, Bool suspend_p)
-{
-#ifdef SIGSTOP /* older VMS doesn't have it... */
-  int i;
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      if (ssi->pid)
-       kill_job (si, ssi->pid, (suspend_p ? SIGSTOP : SIGCONT));
-    }
-#endif /* SIGSTOP */
-}
-
-
-/* Called when we're exiting abnormally, to kill off the subproc. */
-void
-emergency_kill_subproc (saver_info *si)
-{
-  int i;
-#ifdef SIGCHLD
-  signal (SIGCHLD, SIG_IGN);
-#endif /* SIGCHLD */
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      if (ssi->pid)
-       {
-         kill_job (si, ssi->pid, SIGTERM);
-         ssi->pid = 0;
-       }
-    }
-}
-
-Bool
-screenhack_running_p (saver_info *si)
-{
-  Bool result = True;
-  int i;
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      if (!ssi->pid)
-       result = False;
-    }
-  return result;
-}
-
-\f
-/* Environment variables. */
-
-
-/* Modifies $PATH in the current environment, so that if DEFAULT_PATH_PREFIX
-   is defined, the xscreensaver daemon will search that directory for hacks.
- */
-void
-hack_environment (saver_info *si)
-{
-#if defined(HAVE_PUTENV) && defined(DEFAULT_PATH_PREFIX)
-  static const char *def_path = DEFAULT_PATH_PREFIX;
-  if (def_path && *def_path)
-    {
-      const char *opath = getenv("PATH");
-      char *npath = (char *) malloc(strlen(def_path) + strlen(opath) + 20);
-      strcpy (npath, "PATH=");
-      strcat (npath, def_path);
-      strcat (npath, ":");
-      strcat (npath, opath);
-
-      if (putenv (npath))
-       abort ();
-    }
-#endif /* HAVE_PUTENV && DEFAULT_PATH_PREFIX */
-}
-
-
-void
-hack_subproc_environment (saver_screen_info *ssi)
-{
-  /* Store $DISPLAY into the environment, so that the $DISPLAY variable that
-     the spawned processes inherit is correct.  First, it must be on the same
-     host and display as the value of -display passed in on our command line
-     (which is not necessarily the same as what our $DISPLAY variable is.)
-     Second, the screen number in the $DISPLAY passed to the subprocess should
-     be the screen on which this particular hack is running -- not the display
-     specification which the driver itself is using, since the driver ignores
-     its screen number and manages all existing screens.
-   */
-  saver_info *si = ssi->global;
-  const char *odpy = DisplayString (si->dpy);
-  char *ndpy = (char *) malloc(strlen(odpy) + 20);
-  int screen_number;
-  char *s;
-
-  for (screen_number = 0; screen_number < si->nscreens; screen_number++)
-    if (ssi == &si->screens[screen_number])
-      break;
-
-  strcpy (ndpy, "DISPLAY=");
-  s = ndpy + strlen(ndpy);
-  strcpy (s, odpy);
-
-  while (*s && *s != ':') s++;                 /* skip to colon */
-  while (*s == ':') s++;                       /* skip over colons */
-  while (isdigit(*s)) s++;                     /* skip over dpy number */
-  while (*s == '.') s++;                       /* skip over dot */
-  if (s[-1] != '.') *s++ = '.';                        /* put on a dot */
-  sprintf(s, "%d", screen_number);             /* put on screen number */
-
-  /* Allegedly, BSD 4.3 didn't have putenv(), but nobody runs such systems
-     any more, right?  It's not Posix, but everyone seems to have it. */
-#ifdef HAVE_PUTENV
-  if (putenv (ndpy))
-    abort ();
-#endif /* HAVE_PUTENV */
-}
-
-\f
-/* Restarting the xscreensaver process from scratch. */
-
-static char **saved_argv;
-
-void
-save_argv (int argc, char **argv)
-{
-  saved_argv = (char **) calloc (argc+2, sizeof (char *));
-  saved_argv [argc] = 0;
-  while (argc--)
-    {
-      int i = strlen (argv [argc]) + 1;
-      saved_argv [argc] = (char *) malloc (i);
-      memcpy (saved_argv [argc], argv [argc], i);
-    }
-}
-
-
-/* Re-execs the process with the arguments in saved_argv.
-   Does not return unless there was an error.
- */
-void
-restart_process (saver_info *si)
-{
-  if (si->prefs.verbose_p)
-    {
-      int i;
-      fprintf (real_stderr, "%s: re-executing", blurb());
-      for (i = 0; saved_argv[i]; i++)
-       fprintf (real_stderr, " %s", saved_argv[i]);
-      fprintf (real_stderr, "\n");
-    }
-  describe_uids (si, real_stderr);
-  fprintf (real_stderr, "\n");
-
-  fflush (real_stdout);
-  fflush (real_stderr);
-  execvp (saved_argv [0], saved_argv); /* shouldn't return */
-  {
-    char buf [512];
-    sprintf (buf, "%s: could not restart process", blurb());
-    perror(buf);
-    fflush(stderr);
-  }
-  XBell(si->dpy, 0);
-}
diff --git a/driver/test-grab.c b/driver/test-grab.c
deleted file mode 100644 (file)
index 9b4a914..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* test-uid.c --- playing with grabs.
- * xscreensaver, Copyright (c) 1999 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 <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include <sys/time.h>
-
-#include <X11/Xlib.h>
-#include <X11/Intrinsic.h>
-
-char *progname = 0;
-char *progclass = "XScreenSaver";
-
-#define ALL_POINTER_EVENTS \
-       (ButtonPressMask | ButtonReleaseMask | EnterWindowMask | \
-        LeaveWindowMask | PointerMotionMask | PointerMotionHintMask | \
-        Button1MotionMask | Button2MotionMask | Button3MotionMask | \
-        Button4MotionMask | Button5MotionMask | ButtonMotionMask)
-
-int
-main (int argc, char **argv)
-{
-  XtAppContext app;
-  int kstatus, mstatus;
-  Cursor cursor = 0;
-  int delay = 60 * 15;
-  Widget toplevel_shell = XtAppInitialize (&app, progclass, 0, 0,
-                                          &argc, argv, 0, 0, 0);
-  Display *dpy = XtDisplay (toplevel_shell);
-  Window w = RootWindow (dpy, DefaultScreen(dpy));
-  XtGetApplicationNameAndClass (dpy, &progname, &progclass);
-
-  kstatus = XGrabKeyboard (dpy, w, True,
-                           GrabModeSync, GrabModeAsync,
-                           CurrentTime);
-  fprintf (stderr, "%s: grabbing keyboard on 0x%x... %s.\n",
-           progname, (unsigned long) w,
-           (kstatus == GrabSuccess ? "GrabSuccess" :
-            kstatus == AlreadyGrabbed ? "AlreadyGrabbed" :
-            kstatus == GrabInvalidTime ? "GrabInvalidTime" :
-            kstatus == GrabNotViewable ? "GrabNotViewable" :
-            kstatus == GrabFrozen ? "GrabFrozen" :
-            "???"));
-
-  mstatus = XGrabPointer (dpy, w, True, ALL_POINTER_EVENTS,
-                          GrabModeAsync, GrabModeAsync, None,
-                          cursor, CurrentTime);
-  fprintf (stderr, "%s: grabbing mouse on 0x%x... %s.\n",
-           progname, (unsigned long) w,
-           (mstatus == GrabSuccess ? "GrabSuccess" :
-            mstatus == AlreadyGrabbed ? "AlreadyGrabbed" :
-            mstatus == GrabInvalidTime ? "GrabInvalidTime" :
-            mstatus == GrabNotViewable ? "GrabNotViewable" :
-            mstatus == GrabFrozen ? "GrabFrozen" :
-            "???"));
-
-  XSync(dpy, False);
-
-  if (kstatus == GrabSuccess || mstatus == GrabSuccess)
-    {
-      fprintf (stderr, "%s: sleeping for %d:%02d:%02d...\n",
-               progname,
-               delay / (60 * 60),
-               (delay % (60 * 60)) / 60,
-               delay % 60);
-      fflush(stderr);
-      sleep (delay);
-      XSync(dpy, False);
-    }
-
-  exit (0);
-}
diff --git a/driver/test-passwd.c b/driver/test-passwd.c
deleted file mode 100644 (file)
index dfb7da2..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/* xscreensaver, Copyright (c) 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.
- */
-
-/* This is a kludgy test harness for debugging the password dialog box.
-   It's somewhat easier to debug it here than in the xscreensaver executable
-   itself.
- */
-
-#define WHICH 0
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <pwd.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-
-#include "xscreensaver.h"
-#include "resources.h"
-#include "version.h"
-#include "visual.h"
-
-char *progname = 0;
-char *progclass = 0;
-XrmDatabase db = 0;
-saver_info *global_si_kludge;
-
-FILE *real_stderr, *real_stdout;
-
-void monitor_power_on (saver_info *si) {}
-Bool monitor_powered_on_p (saver_info *si) { return True; }
-void initialize_screensaver_window (saver_info *si) {}
-void raise_window (saver_info *si, Bool i, Bool b, Bool d) {}
-Bool blank_screen (saver_info *si) {return False;}
-void unblank_screen (saver_info *si) {}
-Bool select_visual (saver_screen_info *ssi, const char *v) { return False; }
-Bool window_exists_p (Display *dpy, Window window) {return True;}
-void start_notice_events_timer (saver_info *si, Window w, Bool b) {}
-Bool handle_clientmessage (saver_info *si, XEvent *e, Bool u) { return False; }
-int BadWindow_ehandler (Display *dpy, XErrorEvent *error) { exit(1); }
-const char *signal_name(int signal) { return "???"; }
-void restore_real_vroot (saver_info *si) {}
-void saver_exit (saver_info *si, int status, const char *core) { exit(status);}
-
-const char *blurb(void) { return progname; }
-Atom XA_SCREENSAVER, XA_DEMO, XA_PREFS;
-
-void
-get_screen_viewport (saver_screen_info *ssi,
-                     int *x_ret, int *y_ret,
-                     int *w_ret, int *h_ret,
-                     Bool verbose_p)
-{
-  *x_ret = 0;
-  *y_ret = 0;
-  *w_ret = WidthOfScreen (ssi->screen);
-  *h_ret = HeightOfScreen (ssi->screen);
-}
-
-
-void
-idle_timer (XtPointer closure, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-  XEvent fake_event;
-  fake_event.type = 0; /* XAnyEvent type, ignored. */
-  fake_event.xany.display = si->dpy;
-  fake_event.xany.window  = 0;
-  XPutBackEvent (si->dpy, &fake_event);
-}
-
-
-static char *fallback[] = {
-#include "XScreenSaver_ad.h"
- 0
-};
-
-int
-main (int argc, char **argv)
-{
-  Widget toplevel_shell = 0;
-  saver_screen_info ssip;
-  saver_info sip;
-  saver_info *si = &sip;
-  saver_preferences *p = &si->prefs;
-
-  memset(&sip, 0, sizeof(sip));
-  memset(&ssip, 0, sizeof(ssip));
-
-  si->nscreens = 1;
-  si->screens = si->default_screen = &ssip;
-  ssip.global = si;
-
-  global_si_kludge = si;
-  real_stderr = stderr;
-  real_stdout = stdout;
-
-  si->version = (char *) malloc (5);
-  memcpy (si->version, screensaver_id + 17, 4);
-  progname = argv[0];
-  {
-    char *s = strrchr(progname, '/');
-    if (*s) strcpy (progname, s+1);
-  }
-
-  /* before hack_uid() for proper permissions */
-  lock_priv_init (argc, argv, True);
-
-  hack_uid (si);
-
-  if (! lock_init (argc, argv, si->prefs.verbose_p))
-    {
-      si->locking_disabled_p = True;
-      si->nolock_reason = "error getting password";
-    }
-
-  progclass = "XScreenSaver";
-
-#if (WHICH != 2)
-  toplevel_shell = XtAppInitialize (&si->app, progclass, 0, 0,
-                                   &argc, argv, fallback,
-                                   0, 0);
-
-  si->dpy = XtDisplay (toplevel_shell);
-  p->db = XtDatabase (si->dpy);
-  si->default_screen->toplevel_shell = toplevel_shell;
-  si->default_screen->screen = XtScreen(toplevel_shell);
-  si->default_screen->default_visual =
-    si->default_screen->current_visual =
-      DefaultVisualOfScreen(si->default_screen->screen);
-  si->default_screen->screensaver_window =
-    RootWindowOfScreen(si->default_screen->screen);
-  si->default_screen->current_depth =
-    visual_depth(si->default_screen->screen,
-                 si->default_screen->current_visual);
-
-  db = p->db;
-  XtGetApplicationNameAndClass (si->dpy, &progname, &progclass);
-
-  load_init_file (&si->prefs);
-
-#endif /* (WHICH != 2) */
-
-  p->verbose_p = True;
-
-  while (1)
-    {
-#if WHICH == 0
-      if (unlock_p (si))
-       fprintf (stderr, "%s: password correct\n", progname);
-      else
-       fprintf (stderr, "%s: password INCORRECT!\n", progname);
-
-      XSync(si->dpy, False);
-      sleep (3);
-#elif WHICH == 1
-      {
-       XEvent event;
-       make_splash_dialog (si);
-       XtAppAddTimeOut (si->app, p->splash_duration + 1000,
-                        idle_timer, (XtPointer) si);
-       while (si->splash_dialog)
-         {
-           XtAppNextEvent (si->app, &event);
-           if (event.xany.window == si->splash_dialog)
-             handle_splash_event (si, &event);
-           XtDispatchEvent (&event);
-         }
-       XSync (si->dpy, False);
-       sleep (1);
-      }
-#elif WHICH == 2
-      {
-        char *pass;
-        char buf[255];
-        struct passwd *p = getpwuid (getuid ());
-        printf ("\n%s: %s's password: ", progname, p->pw_name);
-
-        pass = fgets (buf, sizeof(buf)-1, stdin);
-        if (!pass || !*pass)
-          exit (0);
-        if (pass[strlen(pass)-1] == '\n')
-          pass[strlen(pass)-1] = 0;
-
-        if (passwd_valid_p (pass, True))
-          printf ("%s: Ok!\n", progname);
-        else
-          printf ("%s: Wrong!\n", progname);
-      }
-#endif
-    }
-}
diff --git a/driver/test-uid.c b/driver/test-uid.c
deleted file mode 100644 (file)
index 0a75fcf..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/* test-uid.c --- playing with setuid.
- * xscreensaver, Copyright (c) 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <pwd.h>
-#include <grp.h>
-
-static void
-print(void)
-{
-  int uid = getuid();
-  int gid = getgid();
-  int euid = geteuid();
-  int egid = getegid();
-  struct passwd *p = 0;
-  struct group *g = 0;
-
-  p = getpwuid (uid);
-  g = getgrgid (gid);
-  fprintf(stderr, "real user/group: %ld/%ld (%s/%s)\n", (long) uid, (long) gid,
-         (p && p->pw_name ? p->pw_name : "???"),
-         (g && g->gr_name ? g->gr_name : "???"));
-
-  p = getpwuid (euid);
-  g = getgrgid (egid);
-  fprintf(stderr, "eff. user/group: %ld/%ld (%s/%s)\n", (long)euid, (long)egid,
-         (p && p->pw_name ? p->pw_name : "???"),
-         (g && g->gr_name ? g->gr_name : "???"));
-}
-
-int
-main (int argc, char **argv)
-{
-  int i;
-  struct passwd *p = 0;
-  struct group *g = 0;
-
-  if (argc <= 1)
-    {
-      fprintf(stderr,
-             "usage: %s [ user/group ... ]\n"
-             "\tEach argument may be a user name, or user/group.\n"
-             "\tThis program will attempt to setuid/setgid to each\n"
-             "\tin turn, and report the results.  The user and group\n"
-             "\tnames may be strings, or numeric.\n",
-             argv[0]);
-      exit(1);
-    }
-
-  print();
-  for (i = 1; i < argc; i++)
-    {
-      char *user = argv[i];
-      char *group = strchr(user, '/');
-      if (!group)
-       group = strchr(user, '.');
-      if (group)
-       *group++ = 0;
-
-      if (group && *group)
-       {
-         long gid = 0;
-         int was_numeric = 0;
-
-         g = 0;
-         if (*group == '-' || (*group >= '0' && *group <= '9'))
-           if (1 == sscanf(group, "%ld", &gid))
-             {
-               g = getgrgid (gid);
-               was_numeric = 1;
-             }
-
-         if (!g)
-           g = getgrnam(group);
-
-         if (g)
-           {
-             gid = g->gr_gid;
-             group = g->gr_name;
-           }
-         else
-           {
-             if (was_numeric)
-               {
-                 fprintf(stderr, "no group numbered %s.\n", group);
-                 group = "";
-               }
-             else
-               {
-                 fprintf(stderr, "no group named %s.\n", group);
-                 goto NOGROUP;
-               }
-           }
-
-         fprintf(stderr, "setgid(%ld) \"%s\"", gid, group);
-         if (setgid(gid) == 0)
-           fprintf(stderr, " succeeded.\n");
-         else
-           perror(" failed");
-
-       NOGROUP: ;
-       }
-
-      if (user && *user)
-       {
-         long uid = 0;
-         int was_numeric = 0;
-
-         p = 0;
-         if (*user == '-' || (*user >= '0' && *user <= '9'))
-           if (1 == sscanf(user, "%ld", &uid))
-             {
-               p = getpwuid (uid);
-               was_numeric = 1;
-             }
-
-         if (!p)
-           p = getpwnam(user);
-
-         if (p)
-           {
-             uid = p->pw_uid;
-             user = p->pw_name;
-           }
-         else
-           {
-             if (was_numeric)
-               {
-                 fprintf(stderr, "no user numbered \"%s\".\n", user);
-                 user = "";
-               }
-             else
-               {
-                 fprintf(stderr, "no user named %s.\n", user);
-                 goto NOUSER;
-               }
-           }
-
-         fprintf(stderr, "setuid(%ld) \"%s\"", uid, user);
-         if (setuid(uid) == 0)
-           fprintf(stderr, " succeeded.\n");
-         else
-           perror(" failed");
-       NOUSER: ;
-       }
-      print();
-    }
-
-  fprintf(stderr,
-         "running \"whoami\" and \"groups\" in a sub-process reports:\n");
-  fflush(stdout);
-  fflush(stderr);
-  system ("/bin/sh -c 'echo \"`whoami` / `groups`\"'");
-
-  fflush(stdout);
-  fflush(stderr);
-  exit(0);
-}
diff --git a/driver/test-xdpms.c b/driver/test-xdpms.c
deleted file mode 100644 (file)
index 79a0dfd..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/* test-xdpms.c --- playing with the XDPMS extension.
- * xscreensaver, Copyright (c) 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include <sys/time.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Intrinsic.h>
-
-#include <X11/Xproto.h>
-#include <X11/extensions/dpms.h>
-#include <X11/extensions/dpmsstr.h>
-
-extern Bool DPMSQueryExtension (Display *dpy, int *event_ret, int *error_ret);
-extern Bool DPMSCapable (Display *dpy);
-extern Status DPMSForceLevel (Display *dpy, CARD16 level);
-extern Status DPMSInfo (Display *dpy, CARD16 *power_level, BOOL *state);
-
-extern Status DPMSGetVersion (Display *dpy, int *major_ret, int *minor_ret);
-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);
-
-
-char *progname = 0;
-char *progclass = "XScreenSaver";
-
-static const char *
-blurb (void)
-{
-  static char buf[255];
-  time_t now = time ((time_t *) 0);
-  char *ct = (char *) ctime (&now);
-  int n = strlen(progname);
-  if (n > 100) n = 99;
-  strncpy(buf, progname, n);
-  buf[n++] = ':';
-  buf[n++] = ' ';
-  strncpy(buf+n, ct+11, 8);
-  strcpy(buf+n+9, ": ");
-  return buf;
-}
-
-
-int
-main (int argc, char **argv)
-{
-  int delay = 10;
-
-  int event_number, error_number;
-  int major, minor;
-  CARD16 standby, suspend, off;
-  CARD16 state;
-  BOOL onoff;
-
-  XtAppContext app;
-  Widget toplevel_shell = XtAppInitialize (&app, progclass, 0, 0,
-                                          &argc, argv, 0, 0, 0);
-  Display *dpy = XtDisplay (toplevel_shell);
-  XtGetApplicationNameAndClass (dpy, &progname, &progclass);
-
-  if (!DPMSQueryExtension(dpy, &event_number, &error_number))
-    {
-      fprintf(stderr, "%s: DPMSQueryExtension(dpy, ...) ==> False\n",
-             blurb());
-      fprintf(stderr, "%s: server does not support the XDPMS extension.\n",
-             blurb());
-      exit(1);
-    }
-  else
-    fprintf(stderr, "%s: DPMSQueryExtension(dpy, ...) ==> %d, %d\n", blurb(),
-           event_number, error_number);
-
-  if (!DPMSCapable(dpy))
-    {
-      fprintf(stderr, "%s: DPMSCapable(dpy) ==> False\n", blurb());
-      fprintf(stderr, "%s: server says hardware doesn't support DPMS.\n",
-             blurb());
-      exit(1);
-    }
-  else
-    fprintf(stderr, "%s: DPMSCapable(dpy) ==> True\n", blurb());
-
-  if (!DPMSGetVersion(dpy, &major, &minor))
-    {
-      fprintf(stderr, "%s: DPMSGetVersion(dpy, ...) ==> False\n", blurb());
-      fprintf(stderr, "%s: server didn't report XDPMS version numbers?\n",
-             blurb());
-    }
-  else
-    fprintf(stderr, "%s: DPMSGetVersion(dpy, ...) ==> %d, %d\n", blurb(),
-           major, minor);
-
-  if (!DPMSGetTimeouts(dpy, &standby, &suspend, &off))
-    {
-      fprintf(stderr, "%s: DPMSGetTimeouts(dpy, ...) ==> False\n", blurb());
-      fprintf(stderr, "%s: server didn't report DPMS timeouts?\n", blurb());
-    }
-  else
-    fprintf(stderr,
-           "%s: DPMSGetTimeouts(dpy, ...)\n"
-           "\t ==> standby = %d, suspend = %d, off = %d\n",
-           blurb(), standby, suspend, off);
-
-  while (1)
-    {
-      if (!DPMSInfo(dpy, &state, &onoff))
-       {
-         fprintf(stderr, "%s: DPMSInfo(dpy, ...) ==> False\n", blurb());
-         fprintf(stderr, "%s: couldn't read DPMS state?\n", blurb());
-         onoff = 0;
-         state = -1;
-       }
-      else
-       {
-         fprintf(stderr, "%s: DPMSInfo(dpy, ...) ==> %s, %s\n", blurb(),
-                 (state == DPMSModeOn ? "DPMSModeOn" :
-                  state == DPMSModeStandby ? "DPMSModeStandby" :
-                  state == DPMSModeSuspend ? "DPMSModeSuspend" :
-                  state == DPMSModeOff ? "DPMSModeOff" : "???"),
-                 (onoff == 1 ? "On" : onoff == 0 ? "Off" : "???"));
-       }
-
-      if (state == DPMSModeStandby ||
-         state == DPMSModeSuspend ||
-         state == DPMSModeOff)
-       {
-         Status st;
-         fprintf(stderr, "%s: monitor is off; turning it on.\n", blurb());
-         st = DPMSForceLevel (dpy, DPMSModeOn);
-         fprintf (stderr, "%s: DPMSForceLevel (dpy, DPMSModeOn) ==> %s\n",
-                  blurb(), (st ? "Ok" : "Error"));
-       }
-
-      sleep (delay);
-    }
-}
diff --git a/driver/timers.c b/driver/timers.c
deleted file mode 100644 (file)
index ef5d543..0000000
+++ /dev/null
@@ -1,1084 +0,0 @@
-/* timers.c --- detecting when the user is idle, and other timer-related tasks.
- * xscreensaver, Copyright (c) 1991-1997, 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-/* #define DEBUG_TIMERS */
-
-#include <stdio.h>
-#include <X11/Xlib.h>
-#include <X11/Intrinsic.h>
-#include <X11/Xos.h>
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/Error.h>
-# else /* VMS */
-#  include <Xmu/Error.h>
-# endif /* VMS */
-# else /* !HAVE_XMU */
-# include "xmu.h"
-#endif /* !HAVE_XMU */
-
-#ifdef HAVE_XIDLE_EXTENSION
-#include <X11/extensions/xidle.h>
-#endif /* HAVE_XIDLE_EXTENSION */
-
-#ifdef HAVE_MIT_SAVER_EXTENSION
-#include <X11/extensions/scrnsaver.h>
-#endif /* HAVE_MIT_SAVER_EXTENSION */
-
-#ifdef HAVE_SGI_SAVER_EXTENSION
-#include <X11/extensions/XScreenSaver.h>
-#endif /* HAVE_SGI_SAVER_EXTENSION */
-
-#ifdef HAVE_XHPDISABLERESET
-# include <X11/XHPlib.h>
-  extern Bool hp_locked_p;     /* from windows.c */
-#endif /* HAVE_XHPDISABLERESET */
-
-#include "xscreensaver.h"
-
-#ifdef HAVE_PROC_INTERRUPTS
-static Bool proc_interrupts_activity_p (saver_info *si);
-#endif /* HAVE_PROC_INTERRUPTS */
-
-static void check_for_clock_skew (saver_info *si);
-
-
-void
-idle_timer (XtPointer closure, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-
-  /* What an amazingly shitty design.  Not only does Xt execute timeout
-     events from XtAppNextEvent() instead of from XtDispatchEvent(), but
-     there is no way to tell Xt to block until there is an X event OR a
-     timeout happens.  Once your timeout proc is called, XtAppNextEvent()
-     still won't return until a "real" X event comes in.
-
-     So this function pushes a stupid, gratuitous, unnecessary event back
-     on the event queue to force XtAppNextEvent to return Right Fucking Now.
-     When the code in sleep_until_idle() sees an event of type XAnyEvent,
-     which the server never generates, it knows that a timeout has occurred.
-   */
-  XEvent fake_event;
-  fake_event.type = 0; /* XAnyEvent type, ignored. */
-  fake_event.xany.display = si->dpy;
-  fake_event.xany.window  = 0;
-  XPutBackEvent (si->dpy, &fake_event);
-}
-
-
-static void
-schedule_wakeup_event (saver_info *si, Time when, Bool verbose_p)
-{
-  /* Wake up periodically to ask the server if we are idle. */
-  si->timer_id = XtAppAddTimeOut (si->app, when, idle_timer,
-                                  (XtPointer) si);
-
-#ifdef DEBUG_TIMERS
-  if (verbose_p)
-    fprintf (stderr, "%s: starting idle_timer (%ld, %ld)\n",
-             blurb(), when, si->timer_id);
-#endif /* DEBUG_TIMERS */
-}
-
-
-static void
-notice_events (saver_info *si, Window window, Bool top_p)
-{
-  saver_preferences *p = &si->prefs;
-  XWindowAttributes attrs;
-  unsigned long events;
-  Window root, parent, *kids;
-  unsigned int nkids;
-
-  if (XtWindowToWidget (si->dpy, window))
-    /* If it's one of ours, don't mess up its event mask. */
-    return;
-
-  if (!XQueryTree (si->dpy, window, &root, &parent, &kids, &nkids))
-    return;
-  if (window == root)
-    top_p = False;
-
-  XGetWindowAttributes (si->dpy, window, &attrs);
-  events = ((attrs.all_event_masks | attrs.do_not_propagate_mask)
-           & KeyPressMask);
-
-  /* Select for SubstructureNotify on all windows.
-     Select for KeyPress on all windows that already have it selected.
-
-     Note that we can't select for ButtonPress, because of X braindamage:
-     only one client at a time may select for ButtonPress on a given
-     window, though any number can select for KeyPress.  Someone explain
-     *that* to me.
-
-     So, if the user spends a while clicking the mouse without ever moving
-     the mouse or touching the keyboard, we won't know that they've been
-     active, and the screensaver will come on.  That sucks, but I don't
-     know how to get around it.
-   */
-  XSelectInput (si->dpy, window, SubstructureNotifyMask | events);
-
-  if (top_p && p->verbose_p && (events & KeyPressMask))
-    {
-      /* Only mention one window per tree (hack hack). */
-      fprintf (stderr, "%s: selected KeyPress on 0x%lX\n", blurb(),
-              (unsigned long) window);
-      top_p = False;
-    }
-
-  if (kids)
-    {
-      while (nkids)
-       notice_events (si, kids [--nkids], top_p);
-      XFree ((char *) kids);
-    }
-}
-
-
-int
-BadWindow_ehandler (Display *dpy, XErrorEvent *error)
-{
-  /* When we notice a window being created, we spawn a timer that waits
-     30 seconds or so, and then selects events on that window.  This error
-     handler is used so that we can cope with the fact that the window
-     may have been destroyed <30 seconds after it was created.
-   */
-  if (error->error_code == BadWindow ||
-      error->error_code == BadMatch ||
-      error->error_code == BadDrawable)
-    return 0;
-  else
-    return saver_ehandler (dpy, error);
-}
-
-
-struct notice_events_timer_arg {
-  saver_info *si;
-  Window w;
-};
-
-static void
-notice_events_timer (XtPointer closure, XtIntervalId *id)
-{
-  struct notice_events_timer_arg *arg =
-    (struct notice_events_timer_arg *) closure;
-
-  XErrorHandler old_handler = XSetErrorHandler (BadWindow_ehandler);
-
-  saver_info *si = arg->si;
-  Window window = arg->w;
-
-  free(arg);
-  notice_events (si, window, True);
-  XSync (si->dpy, False);
-  XSetErrorHandler (old_handler);
-}
-
-void
-start_notice_events_timer (saver_info *si, Window w, Bool verbose_p)
-{
-  saver_preferences *p = &si->prefs;
-  struct notice_events_timer_arg *arg =
-    (struct notice_events_timer_arg *) malloc(sizeof(*arg));
-  arg->si = si;
-  arg->w = w;
-  XtAppAddTimeOut (si->app, p->notice_events_timeout, notice_events_timer,
-                  (XtPointer) arg);
-
-  if (verbose_p)
-    fprintf (stderr, "%s: starting notice_events_timer for 0x%X (%lu)\n",
-             blurb(), (unsigned int) w, p->notice_events_timeout);
-}
-
-
-/* When the screensaver is active, this timer will periodically change
-   the running program.
- */
-void
-cycle_timer (XtPointer closure, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-  saver_preferences *p = &si->prefs;
-  Time how_long = p->cycle;
-
-  if (si->selection_mode > 0 &&
-      screenhack_running_p (si))
-    /* If we're in "SELECT n" mode, the cycle timer going off will just
-       restart this same hack again.  There's not much point in doing this
-       every 5 or 10 minutes, but on the other hand, leaving one hack running
-       for days is probably not a great idea, since they tend to leak and/or
-       crash.  So, restart the thing once an hour. */
-    how_long = 1000 * 60 * 60;
-
-  if (si->dbox_up_p)
-    {
-      if (p->verbose_p)
-       fprintf (stderr, "%s: dialog box up; delaying hack change.\n",
-                blurb());
-      how_long = 30000; /* 30 secs */
-    }
-  else
-    {
-      maybe_reload_init_file (si);
-      if (p->verbose_p)
-       fprintf (stderr, "%s: changing graphics hacks.\n", blurb());
-      kill_screenhack (si);
-
-      if (!si->throttled_p)
-        spawn_screenhack (si, False);
-      else
-        {
-          raise_window (si, True, True, False);
-          if (p->verbose_p)
-            fprintf (stderr, "%s: not launching new hack (throttled.)\n",
-                     blurb());
-        }
-    }
-
-  si->cycle_id = XtAppAddTimeOut (si->app, how_long, cycle_timer,
-                                 (XtPointer) si);
-
-#ifdef DEBUG_TIMERS
-  if (p->verbose_p)
-    fprintf (stderr, "%s: starting cycle_timer (%ld, %ld)\n",
-           blurb(), how_long, si->cycle_id);
-#endif /* DEBUG_TIMERS */
-}
-
-
-void
-activate_lock_timer (XtPointer closure, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-  saver_preferences *p = &si->prefs;
-
-  if (p->verbose_p)
-    fprintf (stderr, "%s: timed out; activating lock.\n", blurb());
-  si->locked_p = True;
-
-#ifdef HAVE_XHPDISABLERESET
-  if (!hp_locked_p)
-    {
-      XHPDisableReset (si->dpy);       /* turn off C-Sh-Reset */
-      hp_locked_p = True;
-    }
-#endif
-}
-
-
-/* Call this when user activity (or "simulated" activity) has been noticed.
- */
-static void
-reset_timers (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  if (si->using_mit_saver_extension || si->using_sgi_saver_extension)
-    return;
-
-  if (si->timer_id)
-    {
-#ifdef DEBUG_TIMERS
-      if (p->verbose_p)
-        fprintf (stderr, "%s: killing idle_timer  (%ld, %ld)\n",
-                 blurb(), p->timeout, si->timer_id);
-#endif /* DEBUG_TIMERS */
-      XtRemoveTimeOut (si->timer_id);
-    }
-
-  schedule_wakeup_event (si, p->timeout, p->verbose_p); /* sets si->timer_id */
-
-  if (si->cycle_id) abort ();  /* no cycle timer when inactive */
-
-  si->last_activity_time = time ((time_t *) 0);
-}
-
-
-/* When we aren't using a server extension, this timer is used to periodically
-   wake up and poll the mouse position, which is possibly more reliable than
-   selecting motion events on every window.
- */
-static void
-check_pointer_timer (XtPointer closure, XtIntervalId *id)
-{
-  int i;
-  saver_info *si = (saver_info *) closure;
-  saver_preferences *p = &si->prefs;
-  Bool active_p = False;
-
-  if (!si->using_proc_interrupts &&
-      (si->using_xidle_extension ||
-       si->using_mit_saver_extension ||
-       si->using_sgi_saver_extension))
-    /* If an extension is in use, we should not be polling the mouse.
-       Unless we're also checking /proc/interrupts, in which case, we should.
-     */
-    abort ();
-
-  si->check_pointer_timer_id =
-    XtAppAddTimeOut (si->app, p->pointer_timeout, check_pointer_timer,
-                    (XtPointer) si);
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      Window root, child;
-      int root_x, root_y, x, y;
-      unsigned int mask;
-
-      XQueryPointer (si->dpy, ssi->screensaver_window, &root, &child,
-                    &root_x, &root_y, &x, &y, &mask);
-
-      if (root_x == ssi->poll_mouse_last_root_x &&
-         root_y == ssi->poll_mouse_last_root_y &&
-         child  == ssi->poll_mouse_last_child &&
-         mask   == ssi->poll_mouse_last_mask)
-       continue;
-
-      active_p = True;
-
-#ifdef DEBUG_TIMERS
-      if (p->verbose_p)
-       if (root_x == ssi->poll_mouse_last_root_x &&
-           root_y == ssi->poll_mouse_last_root_y &&
-           child  == ssi->poll_mouse_last_child)
-         fprintf (stderr, "%s: modifiers changed at %s on screen %d.\n",
-                  blurb(), timestring(), i);
-       else
-         fprintf (stderr, "%s: pointer moved at %s on screen %d.\n",
-                  blurb(), timestring(), i);
-#endif /* DEBUG_TIMERS */
-
-      si->last_activity_screen    = ssi;
-      ssi->poll_mouse_last_root_x = root_x;
-      ssi->poll_mouse_last_root_y = root_y;
-      ssi->poll_mouse_last_child  = child;
-      ssi->poll_mouse_last_mask   = mask;
-    }
-
-#ifdef HAVE_PROC_INTERRUPTS
-  if (!active_p &&
-      si->using_proc_interrupts &&
-      proc_interrupts_activity_p (si))
-    {
-# ifdef DEBUG_TIMERS
-      if (p->verbose_p)
-        fprintf (stderr, "%s: /proc/interrupts activity at %s.\n",
-                 blurb(), timestring());
-# endif /* DEBUG_TIMERS */
-      active_p = True;
-    }
-#endif /* HAVE_PROC_INTERRUPTS */
-
-
-  if (active_p)
-    reset_timers (si);
-
-  check_for_clock_skew (si);
-}
-
-
-/* An unfortunate situation is this: the saver is not active, because the
-   user has been typing.  The machine is a laptop.  The user closes the lid
-   and suspends it.  The CPU halts.  Some hours later, the user opens the
-   lid.  At this point, Xt's timers will fire, and xscreensaver will blank
-   the screen.
-
-   So far so good -- well, not really, but it's the best that we can do,
-   since the OS doesn't send us a signal *before* shutdown -- but if the
-   user had delayed locking (lockTimeout > 0) then we should start off
-   in the locked state, rather than only locking N minutes from when the
-   lid was opened.  Also, eschewing fading is probably a good idea, to
-   clamp down as soon as possible.
-
-   We only do this when we'd be polling the mouse position anyway.
-   This amounts to an assumption that machines with APM support also
-   have /proc/interrupts.
- */
-static void
-check_for_clock_skew (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  time_t now = time ((time_t *) 0);
-  long shift = now - si->last_wall_clock_time;
-
-#ifdef DEBUG_TIMERS
-  if (p->verbose_p)
-    fprintf (stderr, "%s: checking wall clock (%d).\n", blurb(),
-             (si->last_wall_clock_time == 0 ? 0 : shift));
-#endif /* DEBUG_TIMERS */
-
-  if (si->last_wall_clock_time != 0 &&
-      shift > (p->timeout / 1000))
-    {
-      if (p->verbose_p)
-        fprintf (stderr, "%s: wall clock has jumped by %d:%02d:%02d!\n",
-                 blurb(),
-                 (shift / (60 * 60)), ((shift / 60) % 60), (shift % 60));
-
-      si->emergency_lock_p = True;
-      idle_timer ((XtPointer) si, 0);
-    }
-
-  si->last_wall_clock_time = now;
-}
-
-
-
-static void
-dispatch_event (saver_info *si, XEvent *event)
-{
-  /* If this is for the splash dialog, pass it along.
-     Note that the password dialog is handled with its own event loop,
-     so events for that window will never come through here.
-   */
-  if (si->splash_dialog && event->xany.window == si->splash_dialog)
-    handle_splash_event (si, event);
-
-  XtDispatchEvent (event);
-}
-
-
-/* methods of detecting idleness:
-
-      explicitly informed by SGI SCREEN_SAVER server event;
-      explicitly informed by MIT-SCREEN-SAVER server event;
-      poll server idle time with XIDLE extension;
-      select events on all windows, and note absence of recent events;
-      note that /proc/interrupts has not changed in a while;
-      activated by clientmessage.
-
-   methods of detecting non-idleness:
-
-      read events on the xscreensaver window;
-      explicitly informed by SGI SCREEN_SAVER server event;
-      explicitly informed by MIT-SCREEN-SAVER server event;
-      select events on all windows, and note events on any of them;
-      note that /proc/interrupts has changed;
-      deactivated by clientmessage.
-
-   I trust that explains why this function is a big hairy mess.
- */
-void
-sleep_until_idle (saver_info *si, Bool until_idle_p)
-{
-  saver_preferences *p = &si->prefs;
-  XEvent event;
-
-  /* We need to select events on all windows if we're not using any extensions.
-     Otherwise, we don't need to. */
-  Bool scanning_all_windows = !(si->using_xidle_extension ||
-                                si->using_mit_saver_extension ||
-                                si->using_sgi_saver_extension);
-
-  /* We need to periodically wake up and check for idleness if we're not using
-     any extensions, or if we're using the XIDLE extension.  The other two
-     extensions explicitly deliver events when we go idle/non-idle, so we
-     don't need to poll. */
-  Bool polling_for_idleness = !(si->using_mit_saver_extension ||
-                                si->using_sgi_saver_extension);
-
-  /* Whether we need to periodically wake up and check to see if the mouse has
-     moved.  We only need to do this when not using any extensions.  The reason
-     this isn't the same as `polling_for_idleness' is that the "idleness" poll
-     can happen (for example) 5 minutes from now, whereas the mouse-position
-     poll should happen with low periodicity.  We don't need to poll the mouse
-     position with the XIDLE extension, but we do need to periodically wake up
-     and query the server with that extension.  For our purposes, polling
-     /proc/interrupts is just like polling the mouse position.  It has to
-     happen on the same kind of schedule. */
-  Bool polling_mouse_position = (si->using_proc_interrupts ||
-                                 !(si->using_xidle_extension ||
-                                   si->using_mit_saver_extension ||
-                                   si->using_sgi_saver_extension));
-
-  if (until_idle_p)
-    {
-      if (polling_for_idleness)
-        /* This causes a no-op event to be delivered to us in a while, so that
-           we come back around through the event loop again.  Use of this timer
-           is economical: for example, if the screensaver should come on in 5
-           minutes, and the user has been idle for 2 minutes, then this
-           timeout will go off no sooner than 3 minutes from now.  */
-        schedule_wakeup_event (si, p->timeout, p->verbose_p);
-
-      if (polling_mouse_position)
-        /* Check to see if the mouse has moved, and set up a repeating timer
-           to do so periodically (typically, every 5 seconds.) */
-       check_pointer_timer ((XtPointer) si, 0);
-    }
-
-  while (1)
-    {
-      XtAppNextEvent (si->app, &event);
-
-      switch (event.xany.type) {
-      case 0:          /* our synthetic "timeout" event has been signalled */
-       if (until_idle_p)
-         {
-           Time idle;
-#ifdef HAVE_XIDLE_EXTENSION
-           if (si->using_xidle_extension)
-             {
-                /* The XIDLE extension uses the synthetic event to prod us into
-                   re-asking the server how long the user has been idle. */
-               if (! XGetIdleTime (si->dpy, &idle))
-                 {
-                   fprintf (stderr, "%s: XGetIdleTime() failed.\n", blurb());
-                   saver_exit (si, 1, 0);
-                 }
-             }
-           else
-#endif /* HAVE_XIDLE_EXTENSION */
-#ifdef HAVE_MIT_SAVER_EXTENSION
-             if (si->using_mit_saver_extension)
-               {
-                 /* We don't need to do anything in this case - the synthetic
-                    event isn't necessary, as we get sent specific events
-                    to wake us up.  In fact, this event generally shouldn't
-                     be being delivered when the MIT extension is in use. */
-                 idle = 0;
-               }
-           else
-#endif /* HAVE_MIT_SAVER_EXTENSION */
-#ifdef HAVE_SGI_SAVER_EXTENSION
-             if (si->using_sgi_saver_extension)
-               {
-                 /* We don't need to do anything in this case - the synthetic
-                    event isn't necessary, as we get sent specific events
-                    to wake us up.  In fact, this event generally shouldn't
-                     be being delivered when the SGI extension is in use. */
-                 idle = 0;
-               }
-           else
-#endif /* HAVE_SGI_SAVER_EXTENSION */
-             {
-                /* Otherwise, no server extension is in use.  The synthetic
-                   event was to tell us to wake up and see if the user is now
-                   idle.  Compute the amount of idle time by comparing the
-                   `last_activity_time' to the wall clock.  The l_a_t was set
-                   by calling `reset_timers()', which is called only in only
-                   two situations: when polling the mouse position has revealed
-                   the the mouse has moved (user activity) or when we have read
-                   an event (again, user activity.)
-                 */
-               idle = 1000 * (si->last_activity_time - time ((time_t *) 0));
-             }
-
-           if (idle >= p->timeout)
-              {
-                /* Look, we've been idle long enough.  We're done. */
-                goto DONE;
-              }
-            else if (si->emergency_lock_p)
-              {
-                /* Oops, the wall clock has jumped far into the future, so
-                   we need to lock down in a hurry! */
-                goto DONE;
-              }
-            else
-              {
-                /* The event went off, but it turns out that the user has not
-                   yet been idle for long enough.  So re-signal the event.
-                   */
-                if (polling_for_idleness)
-                  schedule_wakeup_event (si, p->timeout - idle, p->verbose_p);
-              }
-         }
-       break;
-
-      case ClientMessage:
-       if (handle_clientmessage (si, &event, until_idle_p))
-         goto DONE;
-       break;
-
-      case CreateNotify:
-        /* A window has been created on the screen somewhere.  If we're
-           supposed to scan all windows for events, prepare this window. */
-       if (scanning_all_windows)
-         {
-            Window w = event.xcreatewindow.window;
-#ifdef DEBUG_TIMERS
-           start_notice_events_timer (si, w, p->verbose_p);
-#else  /* !DEBUG_TIMERS */
-           start_notice_events_timer (si, w, False);
-#endif /* !DEBUG_TIMERS */
-         }
-       break;
-
-      case KeyPress:
-      case KeyRelease:
-      case ButtonPress:
-      case ButtonRelease:
-      case MotionNotify:
-
-#ifdef DEBUG_TIMERS
-       if (p->verbose_p)
-         {
-           if (event.xany.type == MotionNotify)
-             fprintf (stderr,"%s: MotionNotify at %s\n",blurb(),timestring());
-           else if (event.xany.type == KeyPress)
-             fprintf (stderr, "%s: KeyPress seen on 0x%X at %s\n", blurb(),
-                      (unsigned int) event.xkey.window, timestring ());
-           else if (event.xany.type == ButtonPress)
-             fprintf (stderr, "%s: ButtonPress seen on 0x%X at %s\n", blurb(),
-                      (unsigned int) event.xbutton.window, timestring ());
-         }
-#endif /* DEBUG_TIMERS */
-
-       /* If any widgets want to handle this event, let them. */
-       dispatch_event (si, &event);
-
-       /* We got a user event.
-          If we're waiting for the user to become active, this is it.
-          If we're waiting until the user becomes idle, reset the timers
-          (since now we have longer to wait.)
-        */
-       if (!until_idle_p)
-         {
-           if (si->demoing_p &&
-               (event.xany.type == MotionNotify ||
-                event.xany.type == KeyRelease))
-             /* When we're demoing a single hack, mouse motion doesn't
-                cause deactivation.  Only clicks and keypresses do. */
-             ;
-           else
-             /* If we're not demoing, then any activity causes deactivation.
-              */
-             goto DONE;
-         }
-       else
-         reset_timers (si);
-
-       break;
-
-      default:
-
-#ifdef HAVE_MIT_SAVER_EXTENSION
-       if (event.type == si->mit_saver_ext_event_number)
-         {
-            /* This event's number is that of the MIT-SCREEN-SAVER server
-               extension.  This extension has one event number, and the event
-               itself contains sub-codes that say what kind of event it was
-               (an "idle" or "not-idle" event.)
-             */
-           XScreenSaverNotifyEvent *sevent =
-             (XScreenSaverNotifyEvent *) &event;
-           if (sevent->state == ScreenSaverOn)
-             {
-               int i = 0;
-               if (p->verbose_p)
-                 fprintf (stderr, "%s: MIT ScreenSaverOn event received.\n",
-                          blurb());
-
-               /* Get the "real" server window(s) out of the way as soon
-                  as possible. */
-               for (i = 0; i < si->nscreens; i++)
-                 {
-                   saver_screen_info *ssi = &si->screens[i];
-                   if (ssi->server_mit_saver_window &&
-                       window_exists_p (si->dpy,
-                                        ssi->server_mit_saver_window))
-                     XUnmapWindow (si->dpy, ssi->server_mit_saver_window);
-                 }
-
-               if (sevent->kind != ScreenSaverExternal)
-                 {
-                   fprintf (stderr,
-                        "%s: ScreenSaverOn event wasn't of type External!\n",
-                            blurb());
-                 }
-
-               if (until_idle_p)
-                 goto DONE;
-             }
-           else if (sevent->state == ScreenSaverOff)
-             {
-               if (p->verbose_p)
-                 fprintf (stderr, "%s: MIT ScreenSaverOff event received.\n",
-                          blurb());
-               if (!until_idle_p)
-                 goto DONE;
-             }
-           else
-             fprintf (stderr,
-                      "%s: unknown MIT-SCREEN-SAVER event %d received!\n",
-                      blurb(), sevent->state);
-         }
-       else
-
-#endif /* HAVE_MIT_SAVER_EXTENSION */
-
-
-#ifdef HAVE_SGI_SAVER_EXTENSION
-       if (event.type == (si->sgi_saver_ext_event_number + ScreenSaverStart))
-         {
-            /* The SGI SCREEN_SAVER server extension has two event numbers,
-               and this event matches the "idle" event. */
-           if (p->verbose_p)
-             fprintf (stderr, "%s: SGI ScreenSaverStart event received.\n",
-                      blurb());
-
-           if (until_idle_p)
-             goto DONE;
-         }
-       else if (event.type == (si->sgi_saver_ext_event_number +
-                               ScreenSaverEnd))
-         {
-            /* The SGI SCREEN_SAVER server extension has two event numbers,
-               and this event matches the "idle" event. */
-           if (p->verbose_p)
-             fprintf (stderr, "%s: SGI ScreenSaverEnd event received.\n",
-                      blurb());
-           if (!until_idle_p)
-             goto DONE;
-         }
-       else
-#endif /* HAVE_SGI_SAVER_EXTENSION */
-
-          /* Just some random event.  Let the Widgets handle it, if desired. */
-         dispatch_event (si, &event);
-      }
-    }
- DONE:
-
-
-  /* If there's a user event on the queue, swallow it.
-     If we're using a server extension, and the user becomes active, we
-     get the extension event before the user event -- so the keypress or
-     motion or whatever is still on the queue.  This makes "unfade" not
-     work, because it sees that event, and bugs out.  (This problem
-     doesn't exhibit itself without an extension, because in that case,
-     there's only one event generated by user activity, not two.)
-   */
-  XCheckMaskEvent (si->dpy, (KeyPressMask|ButtonPressMask|PointerMotionMask),
-                  &event);
-
-
-  if (si->check_pointer_timer_id)
-    {
-      XtRemoveTimeOut (si->check_pointer_timer_id);
-      si->check_pointer_timer_id = 0;
-    }
-  if (si->timer_id)
-    {
-      XtRemoveTimeOut (si->timer_id);
-      si->timer_id = 0;
-    }
-
-  if (until_idle_p && si->cycle_id)    /* no cycle timer when inactive */
-    abort ();
-
-  return;
-}
-
-
-\f
-/* Some crap for dealing with /proc/interrupts.
-
-   On Linux systems, it's possible to see the hardware interrupt count
-   associated with the keyboard.  We can therefore use that as another method
-   of detecting idleness.
-
-   Why is it a good idea to do this?  Because it lets us detect keyboard
-   activity that is not associated with X events.  For example, if the user
-   has switched to another virtual console, it's good for xscreensaver to not
-   be running graphics hacks on the (non-visible) X display.  The common
-   complaint that checking /proc/interrupts addresses is that the user is
-   playing Quake on a non-X console, and the GL hacks are perceptibly slowing
-   the game...
-
-   This is tricky for a number of reasons.
-
-     * First, we must be sure to only do this when running on an X server that
-       is on the local machine (because otherwise, we'd be reacting to the
-       wrong keyboard.)  The way we do this is by noting that the $DISPLAY is
-       pointing to display 0 on the local machine.  It *could* be that display
-       1 is also on the local machine (e.g., two X servers, each on a different
-       virtual-terminal) but it's also possible that screen 1 is an X terminal,
-       using this machine as the host.  So we can't take that chance.
-
-     * Second, one can only access these interrupt numbers in a completely
-       and utterly brain-damaged way.  You would think that one would use an
-       ioctl for this.  But no.  The ONLY way to get this information is to
-       open the pseudo-file /proc/interrupts AS A FILE, and read the numbers
-       out of it TEXTUALLY.  Because this is Unix, and all the world's a file,
-       and the only real data type is the short-line sequence of ASCII bytes.
-
-       Now it's all well and good that the /proc/interrupts pseudo-file
-       exists; that's a clever idea, and a useful API for things that are
-       already textually oriented, like shell scripts, and users doing
-       interactive debugging sessions.  But to make a *C PROGRAM* open a file
-       and parse the textual representation of integers out of it is just
-       insane.
-
-     * Third, you can't just hold the file open, and fseek() back to the
-       beginning to get updated data!  If you do that, the data never changes.
-       And I don't want to call open() every five seconds, because I don't want
-       to risk going to disk for any inodes.  It turns out that if you dup()
-       it early, then each copy gets fresh data, so we can get around that in
-       this way (but for how many releases, one might wonder?)
-
-     * Fourth, the format of the output of the /proc/interrupts file is
-       undocumented, and has changed several times already!  In Linux 2.0.33,
-       even on a multiprocessor machine, it looks like this:
-
-          0:  309453991   timer
-          1:    4771729   keyboard
-   
-       but on later kernels with MP machines, it looks like this:
-
-                   CPU0       CPU1
-          0:    1671450    1672618    IO-APIC-edge  timer
-          1:      13037      13495    IO-APIC-edge  keyboard
-
-       Joy!  So how are we expected to parse that?  Well, this code doesn't
-       parse it: it saves the last line with the string "keyboard" in it, and
-       does a string-comparison to note when it has changed.
-
-   Thanks to Nat Friedman <nat@nat.org> for figuring out all of this crap.
-
-   Note that this only checks for lines with "keyboard" or "PS/2 Mouse" in
-   them.  If you have a serial mouse, it won't detect that, it will only detect
-   keyboard activity.  That's because there's no way to tell the difference
-   between a serial mouse and a general serial port, and it would be somewhat
-   unfortunate to have the screensaver turn off when the modem on COM1 burped.
- */
-
-
-#ifdef HAVE_PROC_INTERRUPTS
-
-#define PROC_INTERRUPTS "/proc/interrupts"
-
-Bool
-query_proc_interrupts_available (saver_info *si, const char **why)
-{
-  /* We can use /proc/interrupts if $DISPLAY points to :0, and if the
-     "/proc/interrupts" file exists and is readable.
-   */
-  FILE *f;
-  if (why) *why = 0;
-
-  if (!display_is_on_console_p (si))
-    {
-      if (why) *why = "not on primary console";
-      return False;
-    }
-
-  f = fopen (PROC_INTERRUPTS, "r");
-  if (!f)
-    return False;
-
-  fclose (f);
-  return True;
-}
-
-
-static Bool
-proc_interrupts_activity_p (saver_info *si)
-{
-  static FILE *f0 = 0;
-  FILE *f1 = 0;
-  int fd;
-  static char last_kbd_line[255] = { 0, };
-  static char last_ptr_line[255] = { 0, };
-  char new_line[sizeof(last_kbd_line)];
-  Bool got_kbd = False, kbd_diff = False;
-  Bool got_ptr = False, ptr_diff = False;
-
-  if (!f0)
-    {
-      /* First time -- open the file. */
-      f0 = fopen (PROC_INTERRUPTS, "r");
-      if (!f0)
-        {
-          char buf[255];
-          sprintf(buf, "%s: error opening %s", blurb(), PROC_INTERRUPTS);
-          perror (buf);
-          goto FAIL;
-        }
-    }
-
-  if (f0 == (FILE *) -1)           /* means we got an error initializing. */
-    return False;
-
-  fd = dup (fileno (f0));
-  if (fd < 0)
-    {
-      char buf[255];
-      sprintf(buf, "%s: could not dup() the %s fd", blurb(), PROC_INTERRUPTS);
-      perror (buf);
-      goto FAIL;
-    }
-
-  f1 = fdopen (fd, "r");
-  if (!f1)
-    {
-      char buf[255];
-      sprintf(buf, "%s: could not fdopen() the %s fd", blurb(),
-              PROC_INTERRUPTS);
-      perror (buf);
-      goto FAIL;
-    }
-
-  /* Actually, I'm unclear on why this fseek() is necessary, given the timing
-     of the dup() above, but it is. */
-  if (fseek (f1, 0, SEEK_SET) != 0)
-    {
-      char buf[255];
-      sprintf(buf, "%s: error rewinding %s", blurb(), PROC_INTERRUPTS);
-      perror (buf);
-      goto FAIL;
-    }
-
-  /* Now read through the pseudo-file until we find the "keyboard" line. */
-
-  while (fgets (new_line, sizeof(new_line)-1, f1))
-    {
-      if (!got_kbd && strstr (new_line, "keyboard"))
-        {
-          kbd_diff = (*last_kbd_line && !!strcmp (new_line, last_kbd_line));
-          strcpy (last_kbd_line, new_line);
-          got_kbd = True;
-        }
-      else if (!got_ptr && strstr (new_line, "PS/2 Mouse"))
-        {
-          ptr_diff = (*last_ptr_line && !!strcmp (new_line, last_ptr_line));
-          strcpy (last_ptr_line, new_line);
-          got_ptr = True;
-        }
-
-      if (got_kbd && got_ptr)
-        break;
-    }
-
-  if (got_kbd || got_ptr)
-    {
-      fclose (f1);
-      return (kbd_diff || ptr_diff);
-    }
-
-
-  /* If we got here, we didn't find either a "keyboard" or a "PS/2 Mouse"
-     line in the file at all. */
-  fprintf (stderr, "%s: no keyboard or mouse data in %s?\n",
-           blurb(), PROC_INTERRUPTS);
-
- FAIL:
-  if (f1)
-    fclose (f1);
-
-  if (f0 && f0 != (FILE *) -1)
-    fclose (f0);
-
-  f0 = (FILE *) -1;
-  return False;
-}
-
-#endif /* HAVE_PROC_INTERRUPTS */
-
-\f
-/* This timer goes off every few minutes, whether the user is idle or not,
-   to try and clean up anything that has gone wrong.
-
-   It calls disable_builtin_screensaver() so that if xset has been used,
-   or some other program (like xlock) has messed with the XSetScreenSaver()
-   settings, they will be set back to sensible values (if a server extension
-   is in use, messing with xlock can cause xscreensaver to never get a wakeup
-   event, and could cause monitor power-saving to occur, and all manner of
-   heinousness.)
-
-   If the screen is currently blanked, it raises the window, in case some
-   other window has been mapped on top of it.
-
-   If the screen is currently blanked, and there is no hack running, it
-   clears the window, in case there is an error message printed on it (we
-   don't want the error message to burn in.)
- */
-
-static void
-watchdog_timer (XtPointer closure, XtIntervalId *id)
-{
-  saver_info *si = (saver_info *) closure;
-
-  disable_builtin_screensaver (si, False);
-
-  if (si->screen_blanked_p)
-    {
-      Bool running_p = screenhack_running_p (si);
-
-      if (si->dbox_up_p)
-        {
-#ifdef DEBUG_TIMERS
-          if (si->prefs.verbose_p)
-            fprintf (stderr, "%s: dialog box is up: not raising screen.\n",
-                     blurb());
-#endif /* DEBUG_TIMERS */
-        }
-      else
-        {
-#ifdef DEBUG_TIMERS
-          if (si->prefs.verbose_p)
-            fprintf (stderr, "%s: watchdog timer raising %sscreen.\n",
-                     blurb(), (running_p ? "" : "and clearing "));
-#endif /* DEBUG_TIMERS */
-
-          raise_window (si, True, True, running_p);
-        }
-
-      if (!monitor_powered_on_p (si))
-       {
-         if (si->prefs.verbose_p)
-           fprintf (stderr,
-                    "%s: server reports that monitor has powered down; "
-                    "killing running hacks.\n", blurb());
-         kill_screenhack (si);
-       }
-
-      /* Re-schedule this timer.  The watchdog timer defaults to a bit less
-         than the hack cycle period, but is never longer than one hour.
-       */
-      si->watchdog_id = 0;
-      reset_watchdog_timer (si, True);
-    }
-}
-
-
-void
-reset_watchdog_timer (saver_info *si, Bool on_p)
-{
-  saver_preferences *p = &si->prefs;
-
-  if (si->watchdog_id)
-    {
-      XtRemoveTimeOut (si->watchdog_id);
-      si->watchdog_id = 0;
-    }
-
-  if (on_p && p->watchdog_timeout)
-    {
-      si->watchdog_id = XtAppAddTimeOut (si->app, p->watchdog_timeout,
-                                        watchdog_timer, (XtPointer) si);
-
-#ifdef DEBUG_TIMERS
-      if (p->verbose_p)
-       fprintf (stderr, "%s: restarting watchdog_timer (%ld, %ld)\n",
-                blurb(), p->watchdog_timeout, si->watchdog_id);
-#endif /* DEBUG_TIMERS */
-
-    }
-}
diff --git a/driver/vms-getpwnam.c b/driver/vms-getpwnam.c
deleted file mode 100644 (file)
index ec0650c..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- *     getpwnam(name) - retrieves a UAF entry
- *
- *     Author:         Patrick L. Mahan
- *     Location:       TGV, Inc
- *     Date:           15-Nov-1991
- *
- *     Purpose:        Provides emulation for the UNIX getpwname routine.
- *
- *     Modification History
- *
- *     Date        | Who       | Version       | Reason
- *     ------------+-----------+---------------+---------------------------
- *     15-Nov-1991 | PLM       | 1.0           | First Write
- */
-
-#define PASSWDROUTINES
-
-#include <stdio.h>
-#include <descrip.h>
-#include <uaidef.h>
-#include <string.h>
-#include <stdlib.h>
-#include <starlet.h>
-#include "vms-pwd.h"
-
-struct uic {
-   unsigned short uid;
-   unsigned short gid;
-};
-
-#define TEST(ptr, str) { if (ptr == NULL) {    \
-                               fprintf(stderr, "getpwnam: memory allocation failure for \"%s\"\n",     \
-                                       str);   \
-                               return ((struct passwd *)(NULL));       \
-                         } }
-
-struct passwd *getpwnam(name)
-char *name;
-{
-   int  istatus;
-   int  UserNameLen;
-   int  UserOwnerLen;
-   int  UserDeviceLen;
-   int  UserDirLen;
-   static char UserName[13];
-   static char UserOwner[32];
-   static char UserDevice[32];
-   static char UserDir[64];
-   char *cptr, *sptr;
-   unsigned long int UserPwd[2];
-   unsigned short int UserSalt;
-   unsigned long int UserEncrypt;
-   struct uic UicValue;
-   struct passwd *entry;
-
-   struct dsc$descriptor_s VMSNAME = 
-       {strlen(name), DSC$K_DTYPE_T, DSC$K_CLASS_S, name};
-
-   struct itmlist3 {
-       unsigned short int length;
-       unsigned short int item;
-       unsigned long  int addr;
-       unsigned long  int retaddr;
-   } ItemList[] = {
-       {12, UAI$_USERNAME, (unsigned long)&UserName, (unsigned long)&UserNameLen},
-       {8,  UAI$_PWD, (unsigned long)&UserPwd, 0},
-       {4,  UAI$_UIC, (unsigned long)&UicValue, 0},
-       {32, UAI$_OWNER, (unsigned long)&UserOwner, (unsigned long)&UserOwnerLen},
-       {32, UAI$_DEFDEV, (unsigned long)&UserDevice, (unsigned long)&UserDeviceLen},
-       {64, UAI$_DEFDIR, (unsigned long)&UserDir, (unsigned long)&UserDirLen},
-       {2,  UAI$_SALT, (unsigned long)&UserSalt, 0},
-       {4,  UAI$_ENCRYPT, (unsigned long)&UserEncrypt, 0},
-       {0, 0, 0, 0}
-   };
-
-   UserNameLen = 0;
-   istatus = sys$getuai (0, 0, &VMSNAME, &ItemList, 0, 0, 0);
-
-   if (!(istatus & 1)) {
-       fprintf (stderr, "getpwnam: unable to retrieve passwd entry for %s\n",
-                 name);
-       fprintf (stderr, "getpwnam: vms error number is 0x%x\n", istatus);
-       return ((struct passwd *)NULL);
-   }
-
-   entry = (struct passwd *) calloc (1, sizeof(struct passwd));
-   TEST(entry, "PASSWD_ENTRY");
-
-   entry->pw_uid = UicValue.uid;
-   entry->pw_gid = UicValue.gid;
-   entry->pw_salt = UserSalt;
-   entry->pw_encrypt = UserEncrypt;
-
-   sptr = UserName;
-   cptr = calloc (UserNameLen+1, sizeof(char));
-   TEST(cptr, "USERNAME");
-   strncpy (cptr, sptr, UserNameLen);
-   cptr[UserNameLen] = '\0';
-   entry->pw_name = cptr;
-
-   cptr = calloc(8, sizeof(char));
-   TEST(cptr, "PASSWORD");
-   memcpy(cptr, UserPwd, 8);
-   entry->pw_passwd = cptr;
-
-   sptr = UserOwner; sptr++;
-   cptr = calloc ((int)UserOwner[0]+1, sizeof(char));
-   TEST(cptr, "FULLNAME");
-   strncpy (cptr, sptr, (int)UserOwner[0]);
-   cptr[(int)UserOwner[0]] = '\0';
-   entry->pw_gecos = cptr;
-
-   cptr = calloc ((int)UserDevice[0]+(int)UserDir[0]+1, sizeof(char));
-   TEST(cptr, "HOME");
-   sptr = UserDevice; sptr++;
-   strncpy (cptr, sptr, (int)UserDevice[0]);
-   sptr = UserDir; sptr++;
-   strncat (cptr, sptr, (int)UserDir[0]);
-   cptr[(int)UserDevice[0]+(int)UserDir[0]] = '\0';
-   entry->pw_dir = cptr;
-
-   cptr = calloc (strlen("SYS$SYSTEM:LOGINOUT.EXE")+1, sizeof(char));
-   TEST(cptr,"SHELL");
-   strcpy (cptr, "SYS$SYSTEM:LOGINOUT.EXE");
-   entry->pw_shell = cptr;
-
-   return (entry);
-}
diff --git a/driver/vms-hpwd.c b/driver/vms-hpwd.c
deleted file mode 100644 (file)
index 707e3ea..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *     VAX/VMS Password hashing routines:
- *
- *     uses the System Service SYS$HASH_PASSWORD
- *
- * 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 <syidef.h>
-#include <descrip.h>
-#include <string.h>
-#include <starlet.h>
-/*
- *     Hashing routine
- */
-hash_vms_password(output_buf,input_buf,input_length,username,encryption_type,salt)
-char *output_buf;
-char *input_buf;
-int input_length;
-char *username;
-int encryption_type;
-unsigned short salt;
-{
-       struct dsc$descriptor_s password;
-       struct dsc$descriptor_s user;
-
-       /*
-        *  Check the VMS Version. If this is V5.4 or later, then
-        *  we can use the new system service SYS$HASH_PASSWORD.  Else
-        *  fail and return garbage.
-        */
-
-       static char VMS_Version[32];
-       struct {
-               unsigned short int Size;
-               unsigned short int Code;
-               char *Buffer;
-               unsigned short int *Resultant_Size;
-       } Item_List[2]={32, SYI$_VERSION, VMS_Version, 0, 0, 0};
-       struct {int Size; char *Ptr;} Descr1;
-
-       /*
-        *      Get the information
-        */
-       sys$getsyiw(0,0,0,Item_List,0,0,0);
-       /*
-        *      Call the old routine if this isn't V5.4 or later...
-        */
-#ifndef __DECC
-       if ((VMS_Version[1] < '5') ||
-           ((VMS_Version[1] == '5') && (VMS_Version[3] < '4'))) {
-               printf("Unsupported OS version\n");
-               return(1);
-       }
-#endif /* !__DECC */
-       /*
-        *      Call the SYS$HASH_PASSWORD system service...
-        */
-       password.dsc$b_dtype    = DSC$K_DTYPE_T;
-        password.dsc$b_class   = DSC$K_CLASS_S;
-        password.dsc$w_length  = input_length;
-       password.dsc$a_pointer  = input_buf;
-       user.dsc$b_dtype        = DSC$K_DTYPE_T;
-       user.dsc$b_class        = DSC$K_CLASS_S;
-       user.dsc$w_length       = strlen(username);
-       user.dsc$a_pointer      = username;
-       sys$hash_password (&password, encryption_type, salt, &user, output_buf);
-}
diff --git a/driver/vms-pwd.h b/driver/vms-pwd.h
deleted file mode 100644 (file)
index 6cb73d3..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*     @(#)pwd.h 1.7 89/08/24 SMI; from S5R2 1.1       */
-
-#ifndef        __pwd_h
-#define        __pwd_h
-
-#ifdef vax11c
-#include <types.h>
-#else
-#include <sys/types.h>
-#endif /* vax11c */
-
-#ifdef PASSWDROUTINES
-#define        EXTERN
-#else
-#define EXTERN extern
-#endif /* PASSWDROUTINES */
-
-struct passwd {
-       char    *pw_name;
-       char    *pw_passwd;
-       int     pw_uid;
-       int     pw_gid;
-       short   pw_salt;
-       int     pw_encrypt;
-       char    *pw_age;
-       char    *pw_comment;
-       char    *pw_gecos;
-       char    *pw_dir;
-       char    *pw_shell;
-};
-
-
-#ifndef        _POSIX_SOURCE
-extern struct passwd *getpwent();
-
-struct comment {
-        char    *c_dept;
-        char    *c_name;
-        char    *c_acct;
-        char    *c_bin;
-};
-
-#endif
-
-EXTERN struct passwd *getpwuid(/* uid_t uid */);
-EXTERN struct passwd *getpwnam(/* char *name */);
-
-#endif /* !__pwd_h */
diff --git a/driver/vms-validate.c b/driver/vms-validate.c
deleted file mode 100644 (file)
index 8f7141d..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *     validate a password for a user
- *
- * 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.
- */
-
-/*
- * Includes
- */
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-
-#include "vms-pwd.h"
-int hash_vms_password(char *output_buf,char *input_buf,int input_length,
-                      char *username,int encryption_type,unsigned short salt);
-
-/*
- *
- *     Validate a VMS UserName/Password pair.
- *
- */
-
-int validate_user(name,password)
-char *name;
-char *password;
-{
-       char password_buf[64];
-       char username_buf[31];
-       char encrypt_buf[8];
-       register int i;
-       register char *cp,*cp1;
-       struct passwd *user_entry;
-
-       /*
-        *      Get the users UAF entry
-        */
-       user_entry = getpwnam(name);
-
-       /*
-        *      If user_entry == NULL then we got a bad error
-        *      return -1 to indicate a bad error
-        */
-       if (user_entry == NULL) return (-1);
-
-       /*
-        *      Uppercase the password
-        */
-       cp = password;
-       cp1 = password_buf;
-       while (*cp)
-          if (islower(*cp))
-               *cp1++ = toupper(*cp++);
-          else
-               *cp1++ = *cp++;
-       /*
-        *      Get the length of the password
-        */
-       i = strlen(password);
-       /*
-        *      Encrypt the password
-        */
-       hash_vms_password(encrypt_buf,password_buf,i,user_entry->pw_name,
-                         user_entry->pw_encrypt, user_entry->pw_salt);
-       if (memcmp(encrypt_buf,user_entry->pw_passwd,8) == 0)
-               return(1);
-       else    return(0);
-}
-
diff --git a/driver/vms_axp.opt b/driver/vms_axp.opt
deleted file mode 100644 (file)
index 04d465d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[-.UTILS]UTILS.OLB_AXP/LIB
-SYS$SHARE:DECW$XMLIBSHR.EXE/SHARE
-SYS$SHARE:DECW$XMULIBSHR.EXE/SHARE
-SYS$SHARE:DECW$XTSHR.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/driver/vms_axp_12.opt b/driver/vms_axp_12.opt
deleted file mode 100644 (file)
index 25dd1f1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[-.UTILS]UTILS.OLB_AXP/LIB
-SYS$SHARE:DECW$XMLIBSHR12.EXE/SHARE
-SYS$SHARE:DECW$XMULIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XTLIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/driver/vms_decc.opt b/driver/vms_decc.opt
deleted file mode 100644 (file)
index 65bec03..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[-.UTILS]UTILS.OLB_DECC/LIB
-SYS$SHARE:DECW$XMLIBSHR.EXE/SHARE
-SYS$SHARE:DECW$XMULIBSHR.EXE/SHARE
-SYS$SHARE:DECW$XTSHR.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/driver/vms_decc_12.opt b/driver/vms_decc_12.opt
deleted file mode 100644 (file)
index fdd9a80..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[-.UTILS]UTILS.OLB_DECC/LIB
-SYS$SHARE:DECW$XMLIBSHR12.EXE/SHARE
-SYS$SHARE:DECW$XMULIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XTLIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/driver/windows.c b/driver/windows.c
deleted file mode 100644 (file)
index a61788b..0000000
+++ /dev/null
@@ -1,1634 +0,0 @@
-/* windows.c --- turning the screen black; dealing with visuals, virtual roots.
- * 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifdef VMS
-# include <unixlib.h>          /* for getpid() */
-# include "vms-gtod.h"         /* for gettimeofday() */
-#endif /* VMS */
-
-#ifndef VMS
-# include <pwd.h>              /* for getpwuid() */
-#else /* VMS */
-# include "vms-pwd.h"
-#endif /* VMS */
-
-#ifdef HAVE_UNAME
-# include <sys/utsname.h>      /* for uname() */
-#endif /* HAVE_UNAME */
-
-#include <stdio.h>
-#include <X11/Xproto.h>                /* for CARD32 */
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>         /* for XSetClassHint() */
-#include <X11/Xatom.h>
-#include <X11/Xos.h>           /* for time() */
-#include <signal.h>            /* for the signal names */
-
-#ifdef HAVE_MIT_SAVER_EXTENSION
-# include <X11/extensions/scrnsaver.h>
-#endif /* HAVE_MIT_SAVER_EXTENSION */
-
-#ifdef HAVE_XF86VMODE
-# include <X11/extensions/xf86vmode.h>
-#endif /* HAVE_XF86VMODE */
-
-#ifdef HAVE_XHPDISABLERESET
-# include <X11/XHPlib.h>
-
- /* Calls to XHPDisableReset and XHPEnableReset must be balanced,
-    or BadAccess errors occur.  (Ok for this to be global, since it
-    affects the whole machine, not just the current screen.) */
-  Bool hp_locked_p = False;
-
-#endif /* HAVE_XHPDISABLERESET */
-
-
-/* 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"
-#include "visual.h"
-#include "fade.h"
-
-
-#ifdef HAVE_VT_LOCKSWITCH
-# include <fcntl.h>
-# include <sys/ioctl.h>
-# include <sys/vt.h>
-  static void lock_vt (saver_info *si, Bool lock_p);
-#endif /* HAVE_VT_LOCKSWITCH */
-
-
-extern int kill (pid_t, int);          /* signal() is in sys/signal.h... */
-
-Atom XA_VROOT, XA_XSETROOT_ID;
-Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_ID;
-Atom XA_SCREENSAVER_TIME;
-
-
-extern saver_info *global_si_kludge;   /* I hate C so much... */
-
-
-static void store_activate_time (saver_info *si, Bool use_last_p);
-
-#define ALL_POINTER_EVENTS \
-       (ButtonPressMask | ButtonReleaseMask | EnterWindowMask | \
-        LeaveWindowMask | PointerMotionMask | PointerMotionHintMask | \
-        Button1MotionMask | Button2MotionMask | Button3MotionMask | \
-        Button4MotionMask | Button5MotionMask | ButtonMotionMask)
-
-
-static const char *
-grab_string(int status)
-{
-  switch (status)
-    {
-    case GrabSuccess:     return "GrabSuccess";
-    case AlreadyGrabbed:  return "AlreadyGrabbed";
-    case GrabInvalidTime: return "GrabInvalidTime";
-    case GrabNotViewable: return "GrabNotViewable";
-    case GrabFrozen:      return "GrabFrozen";
-    default:
-      {
-       static char foo[255];
-       sprintf(foo, "unknown status: %d", status);
-       return foo;
-      }
-    }
-}
-
-static int
-grab_kbd(saver_info *si, Window w)
-{
-  saver_preferences *p = &si->prefs;
-  int status = XGrabKeyboard (si->dpy, w, True,
-                             /* I don't really understand Sync vs Async,
-                                but these seem to work... */
-                             GrabModeSync, GrabModeAsync,
-                             CurrentTime);
-  if (status == GrabSuccess)
-    si->keyboard_grab_window = w;
-
-  if (p->verbose_p)
-    fprintf(stderr, "%s: grabbing keyboard on 0x%x... %s.\n",
-           blurb(), (unsigned long) w, grab_string(status));
-  return status;
-}
-
-
-static int
-grab_mouse (saver_info *si, Window w, Cursor cursor)
-{
-  saver_preferences *p = &si->prefs;
-  int status = XGrabPointer (si->dpy, w, True, ALL_POINTER_EVENTS,
-                            GrabModeAsync, GrabModeAsync, w,
-                            cursor, CurrentTime);
-  if (status == GrabSuccess)
-    si->mouse_grab_window = w;
-
-  if (p->verbose_p)
-    fprintf(stderr, "%s: grabbing mouse on 0x%x... %s.\n",
-           blurb(), (unsigned long) w, grab_string(status));
-  return status;
-}
-
-
-static void
-ungrab_kbd(saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  XUngrabKeyboard(si->dpy, CurrentTime);
-  if (p->verbose_p)
-    fprintf(stderr, "%s: ungrabbing keyboard (was 0x%x).\n", blurb(),
-           (unsigned long) si->keyboard_grab_window);
-  si->keyboard_grab_window = 0;
-}
-
-
-static void
-ungrab_mouse(saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  XUngrabPointer(si->dpy, CurrentTime);
-  if (p->verbose_p)
-    fprintf(stderr, "%s: ungrabbing mouse (was 0x%x).\n", blurb(),
-           (unsigned long) si->mouse_grab_window);
-  si->mouse_grab_window = 0;
-}
-
-
-static Bool
-grab_keyboard_and_mouse (saver_info *si, Window window, Cursor cursor)
-{
-  Status mstatus, kstatus;
-  XSync (si->dpy, False);
-
-  kstatus = grab_kbd (si, window);
-  if (kstatus != GrabSuccess)
-    {  /* try again in a second */
-      sleep (1);
-      kstatus = grab_kbd (si, window);
-      if (kstatus != GrabSuccess)
-       fprintf (stderr, "%s: couldn't grab keyboard!  (%s)\n",
-                blurb(), grab_string(kstatus));
-    }
-
-  mstatus = grab_mouse (si, window, cursor);
-  if (mstatus != GrabSuccess)
-    {  /* try again in a second */
-      sleep (1);
-      mstatus = grab_mouse (si, window, cursor);
-      if (mstatus != GrabSuccess)
-       fprintf (stderr, "%s: couldn't grab pointer!  (%s)\n",
-                blurb(), grab_string(mstatus));
-    }
-
-  return (kstatus == GrabSuccess ||
-         mstatus == GrabSuccess);
-}
-
-static void
-ungrab_keyboard_and_mouse (saver_info *si)
-{
-  ungrab_mouse (si);
-  ungrab_kbd (si);
-}
-
-
-int
-move_mouse_grab (saver_info *si, Window to, Cursor cursor)
-{
-  Window old = si->mouse_grab_window;
-
-  if (old == 0)
-    return grab_mouse (si, to, cursor);
-  else
-    {
-      saver_preferences *p = &si->prefs;
-      int status;
-
-      XSync (si->dpy, False);
-      XGrabServer (si->dpy);                   /* ############ DANGER! */
-      XSync (si->dpy, False);
-
-      if (p->verbose_p)
-        fprintf(stderr, "%s: grabbing server...\n", blurb());
-
-      ungrab_mouse (si);
-      status = grab_mouse (si, to, cursor);
-
-      if (status != GrabSuccess)   /* Augh! */
-        {
-          sleep (1);               /* Note dramatic evil of sleeping
-                                      with server grabbed. */
-          XSync (si->dpy, False);
-          status = grab_mouse (si, to, cursor);
-        }
-
-      if (status != GrabSuccess)   /* Augh!  Try to get the old one back... */
-        grab_mouse (si, to, cursor);
-
-      XUngrabServer (si->dpy);
-      XSync (si->dpy, False);                  /* ###### (danger over) */
-
-      if (p->verbose_p)
-        fprintf(stderr, "%s: ungrabbing server.\n", blurb());
-
-      return status;
-    }
-}
-
-
-/* Prints an error message to stderr and returns True if there is another
-   xscreensaver running already.  Silently returns False otherwise. */
-Bool
-ensure_no_screensaver_running (Display *dpy, Screen *screen)
-{
-  Bool status = 0;
-  int i;
-  Window root = RootWindowOfScreen (screen);
-  Window root2, parent, *kids;
-  unsigned int nkids;
-  XErrorHandler old_handler = XSetErrorHandler (BadWindow_ehandler);
-
-  if (! XQueryTree (dpy, root, &root2, &parent, &kids, &nkids))
-    abort ();
-  if (root != root2)
-    abort ();
-  if (parent)
-    abort ();
-  for (i = 0; i < nkids; i++)
-    {
-      Atom type;
-      int format;
-      unsigned long nitems, bytesafter;
-      char *version;
-
-      if (XGetWindowProperty (dpy, kids[i], XA_SCREENSAVER_VERSION, 0, 1,
-                             False, XA_STRING, &type, &format, &nitems,
-                             &bytesafter, (unsigned char **) &version)
-         == Success
-         && type != None)
-       {
-         char *id;
-         if (!XGetWindowProperty (dpy, kids[i], XA_SCREENSAVER_ID, 0, 512,
-                                  False, XA_STRING, &type, &format, &nitems,
-                                  &bytesafter, (unsigned char **) &id)
-             == Success
-             || type == None)
-           id = "???";
-
-         fprintf (stderr,
-      "%s: already running on display %s (window 0x%x)\n from process %s.\n",
-                  blurb(), DisplayString (dpy), (int) kids [i], id);
-         status = True;
-       }
-    }
-
-  if (kids) XFree ((char *) kids);
-  XSync (dpy, False);
-  XSetErrorHandler (old_handler);
-  return status;
-}
-
-
-\f
-/* Virtual-root hackery */
-
-#ifdef _VROOT_H_
-ERROR!  You must not include vroot.h in this file.
-#endif
-
-static void
-store_vroot_property (Display *dpy, Window win, Window value)
-{
-#if 0
-  if (p->verbose_p)
-    fprintf (stderr,
-            "%s: storing XA_VROOT = 0x%x (%s) = 0x%x (%s)\n", blurb(), 
-            win,
-            (win == screensaver_window ? "ScreenSaver" :
-             (win == real_vroot ? "VRoot" :
-              (win == real_vroot_value ? "Vroot_value" : "???"))),
-            value,
-            (value == screensaver_window ? "ScreenSaver" :
-             (value == real_vroot ? "VRoot" :
-              (value == real_vroot_value ? "Vroot_value" : "???"))));
-#endif
-  XChangeProperty (dpy, win, XA_VROOT, XA_WINDOW, 32, PropModeReplace,
-                  (unsigned char *) &value, 1);
-}
-
-static void
-remove_vroot_property (Display *dpy, Window win)
-{
-#if 0
-  if (p->verbose_p)
-    fprintf (stderr, "%s: removing XA_VROOT from 0x%x (%s)\n", blurb(), win, 
-            (win == screensaver_window ? "ScreenSaver" :
-             (win == real_vroot ? "VRoot" :
-              (win == real_vroot_value ? "Vroot_value" : "???"))));
-#endif
-  XDeleteProperty (dpy, win, XA_VROOT);
-}
-
-
-static void
-kill_xsetroot_data (Display *dpy, Window window, Bool verbose_p)
-{
-  Atom type;
-  int format;
-  unsigned long nitems, bytesafter;
-  Pixmap *dataP = 0;
-
-  /* If the user has been using xv or xsetroot as a screensaver (to display
-     an image on the screensaver window, as a kind of slideshow) then the
-     pixmap and its associated color cells have been put in RetainPermanent
-     CloseDown mode.  Since we're not destroying the xscreensaver window,
-     but merely unmapping it, we need to free these resources or those
-     colormap cells will stay allocated while the screensaver is off.  (We
-     could just delete the screensaver window and recreate it later, but
-     that could cause other problems.)  This code does an atomic read-and-
-     delete of the _XSETROOT_ID property, and if it held a pixmap, then we
-     cause the RetainPermanent resources of the client which created it
-     (and which no longer exists) to be freed.
-   */
-  if (XGetWindowProperty (dpy, window, XA_XSETROOT_ID, 0, 1,
-                         True, AnyPropertyType, &type, &format, &nitems, 
-                         &bytesafter, (unsigned char **) &dataP)
-      == Success
-      && type != None)
-    {
-      if (dataP && *dataP && type == XA_PIXMAP && format == 32 &&
-         nitems == 1 && bytesafter == 0)
-       {
-         if (verbose_p)
-           fprintf (stderr, "%s: destroying xsetroot data (0x%lX).\n",
-                    blurb(), *dataP);
-         XKillClient (dpy, *dataP);
-       }
-      else
-       fprintf (stderr, "%s: deleted unrecognised _XSETROOT_ID property: \n\
-       %lu, %lu; type: %lu, format: %d, nitems: %lu, bytesafter %ld\n",
-                blurb(), (unsigned long) dataP, (dataP ? *dataP : 0), type,
-                format, nitems, bytesafter);
-    }
-}
-
-
-static void handle_signals (saver_info *si, Bool on_p);
-
-static void
-save_real_vroot (saver_screen_info *ssi)
-{
-  saver_info *si = ssi->global;
-  Display *dpy = si->dpy;
-  Screen *screen = ssi->screen;
-  int i;
-  Window root = RootWindowOfScreen (screen);
-  Window root2, parent, *kids;
-  unsigned int nkids;
-  XErrorHandler old_handler;
-
-  /* It's possible that a window might be deleted between our call to
-     XQueryTree() and our call to XGetWindowProperty().  Don't die if
-     that happens (but just ignore that window, it's not the one we're
-     interested in anyway.)
-   */
-  XSync (dpy, False);
-  old_handler = XSetErrorHandler (BadWindow_ehandler);
-  XSync (dpy, False);
-
-  ssi->real_vroot = 0;
-  ssi->real_vroot_value = 0;
-  if (! XQueryTree (dpy, root, &root2, &parent, &kids, &nkids))
-    abort ();
-  if (root != root2)
-    abort ();
-  if (parent)
-    abort ();
-  for (i = 0; i < nkids; i++)
-    {
-      Atom type;
-      int format;
-      unsigned long nitems, bytesafter;
-      Window *vrootP = 0;
-
-      if (XGetWindowProperty (dpy, kids[i], XA_VROOT, 0, 1, False, XA_WINDOW,
-                             &type, &format, &nitems, &bytesafter,
-                             (unsigned char **) &vrootP)
-         != Success)
-       continue;
-      if (! vrootP)
-       continue;
-      if (ssi->real_vroot)
-       {
-         if (*vrootP == ssi->screensaver_window) abort ();
-         fprintf (stderr,
-           "%s: more than one virtual root window found (0x%x and 0x%x).\n",
-                  blurb(), (int) ssi->real_vroot, (int) kids [i]);
-         exit (1);
-       }
-      ssi->real_vroot = kids [i];
-      ssi->real_vroot_value = *vrootP;
-    }
-
-  XSync (dpy, False);
-  XSetErrorHandler (old_handler);
-  XSync (dpy, False);
-
-  if (ssi->real_vroot)
-    {
-      handle_signals (si, True);
-      remove_vroot_property (si->dpy, ssi->real_vroot);
-      XSync (dpy, False);
-    }
-
-  XFree ((char *) kids);
-}
-
-
-static Bool
-restore_real_vroot_2 (saver_screen_info *ssi)
-{
-  saver_info *si = ssi->global;
-  saver_preferences *p = &si->prefs;
-  if (p->verbose_p && ssi->real_vroot)
-    fprintf (stderr,
-            "%s: restoring __SWM_VROOT property on the real vroot (0x%lx).\n",
-            blurb(), (unsigned long) ssi->real_vroot);
-  remove_vroot_property (si->dpy, ssi->screensaver_window);
-  if (ssi->real_vroot)
-    {
-      store_vroot_property (si->dpy, ssi->real_vroot, ssi->real_vroot_value);
-      ssi->real_vroot = 0;
-      ssi->real_vroot_value = 0;
-      /* make sure the property change gets there before this process
-        terminates!  We might be doing this because we have intercepted
-        SIGTERM or something. */
-      XSync (si->dpy, False);
-      return True;
-    }
-  return False;
-}
-
-static Bool
-restore_real_vroot_1 (saver_info *si)
-{
-  int i;
-  Bool did_any = False;
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      if (restore_real_vroot_2 (ssi))
-       did_any = True;
-    }
-  return did_any;
-}
-
-void
-restore_real_vroot (saver_info *si)
-{
-  if (restore_real_vroot_1 (si))
-    handle_signals (si, False);
-}
-
-\f
-/* Signal hackery to ensure that the vroot doesn't get left in an 
-   inconsistent state
- */
-
-const char *
-signal_name(int signal)
-{
-  switch (signal) {
-  case SIGHUP:   return "SIGHUP";
-  case SIGINT:   return "SIGINT";
-  case SIGQUIT:          return "SIGQUIT";
-  case SIGILL:   return "SIGILL";
-  case SIGTRAP:          return "SIGTRAP";
-#ifdef SIGABRT
-  case SIGABRT:          return "SIGABRT";
-#endif
-  case SIGFPE:   return "SIGFPE";
-  case SIGKILL:          return "SIGKILL";
-  case SIGBUS:   return "SIGBUS";
-  case SIGSEGV:          return "SIGSEGV";
-  case SIGPIPE:          return "SIGPIPE";
-  case SIGALRM:          return "SIGALRM";
-  case SIGTERM:          return "SIGTERM";
-#ifdef SIGSTOP
-  case SIGSTOP:          return "SIGSTOP";
-#endif
-#ifdef SIGCONT
-  case SIGCONT:          return "SIGCONT";
-#endif
-#ifdef SIGUSR1
-  case SIGUSR1:          return "SIGUSR1";
-#endif
-#ifdef SIGUSR2
-  case SIGUSR2:          return "SIGUSR2";
-#endif
-#ifdef SIGEMT
-  case SIGEMT:   return "SIGEMT";
-#endif
-#ifdef SIGSYS
-  case SIGSYS:   return "SIGSYS";
-#endif
-#ifdef SIGCHLD
-  case SIGCHLD:          return "SIGCHLD";
-#endif
-#ifdef SIGPWR
-  case SIGPWR:   return "SIGPWR";
-#endif
-#ifdef SIGWINCH
-  case SIGWINCH:  return "SIGWINCH";
-#endif
-#ifdef SIGURG
-  case SIGURG:   return "SIGURG";
-#endif
-#ifdef SIGIO
-  case SIGIO:    return "SIGIO";
-#endif
-#ifdef SIGVTALRM
-  case SIGVTALRM: return "SIGVTALRM";
-#endif
-#ifdef SIGXCPU
-  case SIGXCPU:          return "SIGXCPU";
-#endif
-#ifdef SIGXFSZ
-  case SIGXFSZ:          return "SIGXFSZ";
-#endif
-#ifdef SIGDANGER
-  case SIGDANGER: return "SIGDANGER";
-#endif
-  default:
-    {
-      static char buf[50];
-      sprintf(buf, "signal %d\n", signal);
-      return buf;
-    }
-  }
-}
-
-
-
-static RETSIGTYPE
-restore_real_vroot_handler (int sig)
-{
-  saver_info *si = global_si_kludge;   /* I hate C so much... */
-
-  signal (sig, SIG_DFL);
-  if (restore_real_vroot_1 (si))
-    fprintf (real_stderr, "\n%s: %s intercepted, vroot restored.\n",
-            blurb(), signal_name(sig));
-  kill (getpid (), sig);
-}
-
-static void
-catch_signal (saver_info *si, int sig, Bool on_p)
-{
-  if (! on_p)
-    signal (sig, SIG_DFL);
-  else
-    {
-      if (((long) signal (sig, restore_real_vroot_handler)) == -1L)
-       {
-         char buf [255];
-         sprintf (buf, "%s: couldn't catch %s", blurb(), signal_name(sig));
-         perror (buf);
-         saver_exit (si, 1, 0);
-       }
-    }
-}
-
-static void
-handle_signals (saver_info *si, Bool on_p)
-{
-#if 0
-  if (on_p) fprintf (stderr, "handling signals\n");
-  else fprintf (stderr, "unhandling signals\n");
-#endif
-
-  catch_signal (si, SIGHUP,  on_p);
-  catch_signal (si, SIGINT,  on_p);
-  catch_signal (si, SIGQUIT, on_p);
-  catch_signal (si, SIGILL,  on_p);
-  catch_signal (si, SIGTRAP, on_p);
-  catch_signal (si, SIGIOT,  on_p);
-  catch_signal (si, SIGABRT, on_p);
-#ifdef SIGEMT
-  catch_signal (si, SIGEMT,  on_p);
-#endif
-  catch_signal (si, SIGFPE,  on_p);
-  catch_signal (si, SIGBUS,  on_p);
-  catch_signal (si, SIGSEGV, on_p);
-#ifdef SIGSYS
-  catch_signal (si, SIGSYS,  on_p);
-#endif
-  catch_signal (si, SIGTERM, on_p);
-#ifdef SIGXCPU
-  catch_signal (si, SIGXCPU, on_p);
-#endif
-#ifdef SIGXFSZ
-  catch_signal (si, SIGXFSZ, on_p);
-#endif
-#ifdef SIGDANGER
-  catch_signal (si, SIGDANGER, on_p);
-#endif
-}
-
-void
-saver_exit (saver_info *si, int status, const char *dump_core_reason)
-{
-  saver_preferences *p = &si->prefs;
-  static Bool exiting = False;
-  Bool bugp;
-  Bool vrs;
-
-  if (exiting)
-    exit(status);
-
-  exiting = True;
-  
-  vrs = restore_real_vroot_1 (si);
-  emergency_kill_subproc (si);
-
-  if (vrs && (p->verbose_p || status != 0))
-    fprintf (real_stderr, "%s: vroot restored, exiting.\n", blurb());
-  else if (p->verbose_p)
-    fprintf (real_stderr, "%s: no vroot to restore; exiting.\n", blurb());
-
-  fflush(real_stdout);
-
-#ifdef VMS     /* on VMS, 1 is the "normal" exit code instead of 0. */
-  if (status == 0) status = 1;
-  else if (status == 1) status = -1;
-#endif
-
-  bugp = !!dump_core_reason;
-
-  if (si->prefs.debug_p && !dump_core_reason)
-    dump_core_reason = "because of -debug";
-
-  if (dump_core_reason)
-    {
-      /* Note that the Linux man page for setuid() says If uid is
-        different from the old effective uid, the process will be
-        forbidden from leaving core dumps.
-      */
-      char cwd[4096]; /* should really be PATH_MAX, but who cares. */
-      cwd[0] = 0;
-      fprintf(real_stderr, "%s: dumping core (%s)\n", blurb(),
-             dump_core_reason);
-
-      if (bugp)
-       fprintf(real_stderr,
-               "%s: see http://www.jwz.org/xscreensaver/bugs.html\n"
-               "\t\tfor bug reporting information.\n\n",
-               blurb());
-
-# if defined(HAVE_GETCWD)
-      if (!getcwd (cwd, sizeof(cwd)))
-# elif defined(HAVE_GETWD)
-      if (!getwd (cwd))
-# endif
-        strcpy(cwd, "unknown.");
-
-      fprintf (real_stderr, "%s: current directory is %s\n", blurb(), cwd);
-      describe_uids (si, real_stderr);
-
-      /* Do this to drop a core file, so that we can get a stack trace. */
-      abort();
-    }
-
-  exit (status);
-}
-
-\f
-/* Managing the actual screensaver window */
-
-Bool
-window_exists_p (Display *dpy, Window window)
-{
-  XErrorHandler old_handler;
-  XWindowAttributes xgwa;
-  xgwa.screen = 0;
-  old_handler = XSetErrorHandler (BadWindow_ehandler);
-  XGetWindowAttributes (dpy, window, &xgwa);
-  XSync (dpy, False);
-  XSetErrorHandler (old_handler);
-  return (xgwa.screen != 0);
-}
-
-static void
-store_saver_id (saver_screen_info *ssi)
-{
-  XClassHint class_hints;
-  saver_info *si = ssi->global;
-  unsigned long pid = (unsigned long) getpid ();
-  char buf[20];
-  struct passwd *p = getpwuid (getuid ());
-  const char *name, *host;
-  char *id;
-  
-  /* First store the name and class on the window.
-   */
-  class_hints.res_name = progname;
-  class_hints.res_class = progclass;
-  XSetClassHint (si->dpy, ssi->screensaver_window, &class_hints);
-  XStoreName (si->dpy, ssi->screensaver_window, "screensaver");
-
-  /* Then store the xscreensaver version number.
-   */
-  XChangeProperty (si->dpy, ssi->screensaver_window,
-                  XA_SCREENSAVER_VERSION,
-                  XA_STRING, 8, PropModeReplace,
-                  (unsigned char *) si->version,
-                  strlen (si->version));
-
-  /* Now store the XSCREENSAVER_ID property, that says what user and host
-     xscreensaver is running as.
-   */
-
-  if (p && p->pw_name && *p->pw_name)
-    name = p->pw_name;
-  else if (p)
-    {
-      sprintf (buf, "%lu", (unsigned long) p->pw_uid);
-      name = buf;
-    }
-  else
-    name = "???";
-
-# if defined(HAVE_UNAME)
-  {
-    struct utsname uts;
-    if (uname (&uts) < 0)
-      host = "???";
-    else
-      host = uts.nodename;
-  }
-# elif defined(VMS)
-  host = getenv("SYS$NODE");
-# else  /* !HAVE_UNAME && !VMS */
-  host = "???";
-# endif /* !HAVE_UNAME && !VMS */
-
-  id = (char *) malloc (strlen(name) + strlen(host) + 50);
-  sprintf (id, "%lu (%s@%s)", pid, name, host);
-
-  XChangeProperty (si->dpy, ssi->screensaver_window,
-                  XA_SCREENSAVER_ID, XA_STRING,
-                  8, PropModeReplace,
-                  (unsigned char *) id, strlen (id));
-  free (id);
-}
-
-
-/* Returns the area of the screen which the xscreensaver window should cover.
-   Normally this is the whole screen, but if the X server's root window is
-   actually larger than the monitor's displayable area, then we want to
-   operate in the currently-visible portion of the desktop instead.
- */
-void
-get_screen_viewport (saver_screen_info *ssi,
-                     int *x_ret, int *y_ret,
-                     int *w_ret, int *h_ret,
-                     Bool verbose_p)
-{
-  int w = WidthOfScreen (ssi->screen);
-  int h = HeightOfScreen (ssi->screen);
-
-#ifdef HAVE_XF86VMODE
-  saver_info *si = ssi->global;
-  int screen_no = screen_number (ssi->screen);
-  int event, error;
-  int dot;
-  XF86VidModeModeLine ml;
-  int x, y;
-
-  if (XF86VidModeQueryExtension (si->dpy, &event, &error) &&
-      XF86VidModeGetModeLine (si->dpy, screen_no, &dot, &ml) &&
-      XF86VidModeGetViewPort (si->dpy, screen_no, &x, &y))
-    {
-      char msg[512];
-      *x_ret = x;
-      *y_ret = y;
-      *w_ret = ml.hdisplay;
-      *h_ret = ml.vdisplay;
-
-      if (*x_ret == 0 && *y_ret == 0 && *w_ret == w && *h_ret == h)
-        /* There is no viewport -- the screen does not scroll. */
-        return;
-
-      sprintf (msg, "%s: vp is %dx%d+%d+%d",
-               blurb(), *w_ret, *h_ret, *x_ret, *y_ret);
-
-
-      /* Apparently, though the server stores the X position in increments of
-         1 pixel, it will only make changes to the *display* in some other
-         increment.  With XF86_SVGA on a Thinkpad, the display only updates
-         in multiples of 8 pixels when in 8-bit mode, and in multiples of 4
-         pixels in 16-bit mode.  I don't know what it does in 24- and 32-bit
-         mode, because I don't have enough video memory to find out.
-
-         I consider it a bug that XF86VidModeGetViewPort() is telling me the
-         server's *target* scroll position rather than the server's *actual*
-         scroll position.  David Dawes agrees, and says they may fix this in
-         XFree86 4.0, but it's notrivial.
-
-         He also confirms that this behavior is server-dependent, so the
-         actual scroll position cannot be reliably determined by the client.
-         So... that means the only solution is to provide a ``sandbox''
-         around the blackout window -- we make the window be up to N pixels
-         larger than the viewport on both the left and right sides.  That
-         means some part of the outer edges of each hack might not be
-         visible, but screw it.
-
-         I'm going to guess that 16 pixels is enough, and that the Y dimension
-         doesn't have this problem.
-
-         The drawback of doing this, of course, is that some of the screenhacks
-         will still look pretty stupid -- for example, "slidescreen" will cut
-         off the left and right edges of the grid, etc.
-      */
-# define FUDGE 16
-      if (x > 0 && x < w - ml.hdisplay)  /* not at left edge or right edge */
-        {
-          /* Round X position down to next lower multiple of FUDGE.
-             Increase width by 2*FUDGE in case some server rounds up.
-           */
-          *x_ret = ((x - 1) / FUDGE) * FUDGE;
-          *w_ret += (FUDGE * 2);
-        }
-# undef FUDGE
-
-      if (*x_ret != x ||
-          *y_ret != y ||
-          *w_ret != ml.hdisplay ||
-          *h_ret != ml.vdisplay)
-        sprintf (msg + strlen(msg), "; fudged to %dx%d+%d+%d",
-                 *w_ret, *h_ret, *x_ret, *y_ret);
-
-      if (verbose_p)
-        fprintf (stderr, "%s.\n", msg);
-
-      return;
-    }
-
-#endif /* HAVE_XF86VMODE */
-
-  *x_ret = 0;
-  *y_ret = 0;
-  *w_ret = w;
-  *h_ret = h;
-}
-
-
-static void
-initialize_screensaver_window_1 (saver_screen_info *ssi)
-{
-  saver_info *si = ssi->global;
-  saver_preferences *p = &si->prefs;
-  Bool install_cmap_p = ssi->install_cmap_p;   /* not p->install_cmap_p */
-
-  /* This resets the screensaver window as fully as possible, since there's
-     no way of knowing what some random client may have done to us in the
-     meantime.  We could just destroy and recreate the window, but that has
-     its own set of problems...
-   */
-  XColor black;
-  XSetWindowAttributes attrs;
-  unsigned long attrmask;
-  int x, y, width, height;
-  static Bool printed_visual_info = False;  /* only print the message once. */
-
-  get_screen_viewport (si->default_screen, &x, &y, &width, &height,
-                       (p->verbose_p && !si->screen_blanked_p));
-
-  black.red = black.green = black.blue = 0;
-
-  if (ssi->cmap == DefaultColormapOfScreen (ssi->screen))
-    ssi->cmap = 0;
-
-  if (ssi->current_visual != DefaultVisualOfScreen (ssi->screen))
-    /* It's not the default visual, so we have no choice but to install. */
-    install_cmap_p = True;
-
-  if (install_cmap_p)
-    {
-      if (! ssi->cmap)
-       {
-         ssi->cmap = XCreateColormap (si->dpy,
-                                      RootWindowOfScreen (ssi->screen),
-                                     ssi->current_visual, AllocNone);
-         if (! XAllocColor (si->dpy, ssi->cmap, &black)) abort ();
-         ssi->black_pixel = black.pixel;
-       }
-    }
-  else
-    {
-      Colormap def_cmap = DefaultColormapOfScreen (ssi->screen);
-      if (ssi->cmap)
-       {
-         XFreeColors (si->dpy, ssi->cmap, &ssi->black_pixel, 1, 0);
-         if (ssi->cmap != ssi->demo_cmap &&
-             ssi->cmap != def_cmap)
-           XFreeColormap (si->dpy, ssi->cmap);
-       }
-      ssi->cmap = def_cmap;
-      ssi->black_pixel = BlackPixelOfScreen (ssi->screen);
-    }
-
-  attrmask = (CWOverrideRedirect | CWEventMask | CWBackingStore | CWColormap |
-             CWBackPixel | CWBackingPixel | CWBorderPixel);
-  attrs.override_redirect = True;
-
-  /* When use_mit_saver_extension or use_sgi_saver_extension is true, we won't
-     actually be reading these events during normal operation; but we still
-     need to see Button events for demo-mode to work properly.
-   */
-  attrs.event_mask = (KeyPressMask | KeyReleaseMask |
-                     ButtonPressMask | ButtonReleaseMask |
-                     PointerMotionMask);
-
-  attrs.backing_store = NotUseful;
-  attrs.colormap = ssi->cmap;
-  attrs.background_pixel = ssi->black_pixel;
-  attrs.backing_pixel = ssi->black_pixel;
-  attrs.border_pixel = ssi->black_pixel;
-
-  if (p->debug_p) width = width / 2;
-
-  if (!p->verbose_p || printed_visual_info)
-    ;
-  else if (ssi->current_visual == DefaultVisualOfScreen (ssi->screen))
-    {
-      fprintf (stderr, "%s: using default visual ", blurb());
-      describe_visual (stderr, ssi->screen, ssi->current_visual,
-                      install_cmap_p);
-    }
-  else
-    {
-      fprintf (stderr, "%s: using visual:   ", blurb());
-      describe_visual (stderr, ssi->screen, ssi->current_visual,
-                      install_cmap_p);
-      fprintf (stderr, "%s: default visual: ", blurb());
-      describe_visual (stderr, ssi->screen,
-                      DefaultVisualOfScreen (ssi->screen),
-                      ssi->install_cmap_p);
-    }
-  printed_visual_info = True;
-
-#ifdef HAVE_MIT_SAVER_EXTENSION
-  if (si->using_mit_saver_extension)
-    {
-      XScreenSaverInfo *info;
-      Window root = RootWindowOfScreen (ssi->screen);
-
-#if 0
-      /* This call sets the server screensaver timeouts to what we think
-        they should be (based on the resources and args xscreensaver was
-        started with.)  It's important that we do this to sync back up
-        with the server - if we have turned on prematurely, as by an
-        ACTIVATE ClientMessage, then the server may decide to activate
-        the screensaver while it's already active.  That's ok for us,
-        since we would know to ignore that ScreenSaverActivate event,
-        but a side effect of this would be that the server would map its
-        saver window (which we then hide again right away) meaning that
-        the bits currently on the screen get blown away.  Ugly. */
-
-      /* #### Ok, that doesn't work - when we tell the server that the
-        screensaver is "off" it sends us a Deactivate event, which is
-        sensible... but causes the saver to never come on.  Hmm. */
-      disable_builtin_screensaver (si, True);
-#endif /* 0 */
-
-#if 0
-      /* #### The MIT-SCREEN-SAVER extension gives us access to the
-        window that the server itself uses for saving the screen.
-        However, using this window in any way, in particular, calling
-        XScreenSaverSetAttributes() as below, tends to make the X server
-        crash.  So fuck it, let's try and get along without using it...
-
-        It's also inconvenient to use this window because it doesn't
-        always exist (though the ID is constant.)  So to use this
-        window, we'd have to reimplement the ACTIVATE ClientMessage to
-        tell the *server* to tell *us* to turn on, to cause the window
-        to get created at the right time.  Gag.  */
-      XScreenSaverSetAttributes (si->dpy, root,
-                                0, 0, width, height, 0,
-                                current_depth, InputOutput, visual,
-                                attrmask, &attrs);
-      XSync (si->dpy, False);
-#endif /* 0 */
-
-      info = XScreenSaverAllocInfo ();
-      XScreenSaverQueryInfo (si->dpy, root, info);
-      ssi->server_mit_saver_window = info->window;
-      if (! ssi->server_mit_saver_window) abort ();
-      XFree (info);
-    }
-#endif /* HAVE_MIT_SAVER_EXTENSION */
-
-  if (ssi->screensaver_window)
-    {
-      XWindowChanges changes;
-      unsigned int changesmask = CWX|CWY|CWWidth|CWHeight|CWBorderWidth;
-      changes.x = x;
-      changes.y = y;
-      changes.width = width;
-      changes.height = height;
-      changes.border_width = 0;
-
-      XConfigureWindow (si->dpy, ssi->screensaver_window,
-                       changesmask, &changes);
-      XChangeWindowAttributes (si->dpy, ssi->screensaver_window,
-                              attrmask, &attrs);
-    }
-  else
-    {
-      ssi->screensaver_window =
-       XCreateWindow (si->dpy, RootWindowOfScreen (ssi->screen),
-                       x, y, width, height,
-                       0, ssi->current_depth, InputOutput,
-                      ssi->current_visual, attrmask, &attrs);
-
-      reset_stderr (ssi);
-      store_activate_time(si, True);
-      if (p->verbose_p)
-       fprintf (stderr, "%s: saver window is 0x%lx.\n",
-                blurb(), (unsigned long) ssi->screensaver_window);
-    }
-
-
-  store_saver_id (ssi);
-
-  if (!ssi->cursor)
-    {
-      Pixmap bit;
-      bit = XCreatePixmapFromBitmapData (si->dpy, ssi->screensaver_window,
-                                        "\000", 1, 1,
-                                        BlackPixelOfScreen (ssi->screen),
-                                        BlackPixelOfScreen (ssi->screen),
-                                        1);
-      ssi->cursor = XCreatePixmapCursor (si->dpy, bit, bit, &black, &black,
-                                        0, 0);
-      XFreePixmap (si->dpy, bit);
-    }
-
-  XSetWindowBackground (si->dpy, ssi->screensaver_window, ssi->black_pixel);
-
-  if (si->demoing_p)
-    XUndefineCursor (si->dpy, ssi->screensaver_window);
-  else
-    XDefineCursor (si->dpy, ssi->screensaver_window, ssi->cursor);
-}
-
-void
-initialize_screensaver_window (saver_info *si)
-{
-  int i;
-  for (i = 0; i < si->nscreens; i++)
-    initialize_screensaver_window_1 (&si->screens[i]);
-}
-
-
-void 
-raise_window (saver_info *si,
-             Bool inhibit_fade, Bool between_hacks_p, Bool dont_clear)
-{
-  saver_preferences *p = &si->prefs;
-  int i;
-
-  if (si->demoing_p)
-    inhibit_fade = True;
-
-  if (si->emergency_lock_p)
-    inhibit_fade = True;
-
-  if (!dont_clear)
-    initialize_screensaver_window (si);
-
-  reset_watchdog_timer (si, True);
-
-  if (p->fade_p && si->fading_possible_p && !inhibit_fade)
-    {
-      Window *current_windows = (Window *)
-       calloc(sizeof(Window), si->nscreens);
-      Colormap *current_maps = (Colormap *)
-       calloc(sizeof(Colormap), si->nscreens);
-
-      for (i = 0; i < si->nscreens; i++)
-       {
-         saver_screen_info *ssi = &si->screens[i];
-         current_windows[i] = ssi->screensaver_window;
-         current_maps[i] = (between_hacks_p
-                            ? ssi->cmap
-                            : DefaultColormapOfScreen (ssi->screen));
-         /* Ensure that the default background of the window is really black,
-            not a pixmap or something.  (This does not clear the window.) */
-         XSetWindowBackground (si->dpy, ssi->screensaver_window,
-                               ssi->black_pixel);
-       }
-
-      if (p->verbose_p) fprintf (stderr, "%s: fading...\n", blurb());
-
-      XGrabServer (si->dpy);                   /* ############ DANGER! */
-
-      /* Clear the stderr layer on each screen.
-       */
-      if (!dont_clear)
-       for (i = 0; i < si->nscreens; i++)
-         {
-           saver_screen_info *ssi = &si->screens[i];
-           if (ssi->stderr_overlay_window)
-             /* Do this before the fade, since the stderr cmap won't fade
-                even if we uninstall it (beats me...) */
-             clear_stderr (ssi);
-         }
-
-      /* Note!  The server is grabbed, and this will take several seconds
-        to complete! */
-      fade_screens (si->dpy, current_maps, current_windows,
-                   p->fade_seconds/1000, p->fade_ticks, True, !dont_clear);
-
-      free(current_maps);
-      free(current_windows);
-      current_maps = 0;
-      current_windows = 0;
-
-      if (p->verbose_p) fprintf (stderr, "%s: fading done.\n", blurb());
-
-#ifdef HAVE_MIT_SAVER_EXTENSION
-      for (i = 0; i < si->nscreens; i++)
-       {
-         saver_screen_info *ssi = &si->screens[i];
-         if (ssi->server_mit_saver_window &&
-             window_exists_p (si->dpy, ssi->server_mit_saver_window))
-           XUnmapWindow (si->dpy, ssi->server_mit_saver_window);
-       }
-#endif /* HAVE_MIT_SAVER_EXTENSION */
-
-      XUngrabServer (si->dpy);
-      XSync (si->dpy, False);                  /* ###### (danger over) */
-    }
-  else
-    {
-      for (i = 0; i < si->nscreens; i++)
-       {
-         saver_screen_info *ssi = &si->screens[i];
-         if (!dont_clear)
-           XClearWindow (si->dpy, ssi->screensaver_window);
-         if (!dont_clear || ssi->stderr_overlay_window)
-           clear_stderr (ssi);
-         XMapRaised (si->dpy, ssi->screensaver_window);
-#ifdef HAVE_MIT_SAVER_EXTENSION
-         if (ssi->server_mit_saver_window &&
-             window_exists_p (si->dpy, ssi->server_mit_saver_window))
-           XUnmapWindow (si->dpy, ssi->server_mit_saver_window);
-#endif /* HAVE_MIT_SAVER_EXTENSION */
-       }
-    }
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      if (ssi->cmap)
-       XInstallColormap (si->dpy, ssi->cmap);
-    }
-}
-
-Bool
-blank_screen (saver_info *si)
-{
-  int i;
-  Bool ok;
-
-  /* Note: we do our grabs on the root window, not on the screensaver window.
-     If we grabbed on the saver window, then the demo mode and lock dialog
-     boxes wouldn't get any events.
-   */
-  ok = grab_keyboard_and_mouse (si,
-                                /*si->screens[0].screensaver_window,*/
-                                RootWindowOfScreen(si->screens[0].screen),
-                                (si->demoing_p
-                                 ? 0
-                                 : si->screens[0].cursor));
-
-
-  if (si->using_mit_saver_extension || si->using_sgi_saver_extension)
-    /* If we're using a server extension, then failure to get a grab is
-       not a big deal -- even without the grab, we will still be able
-       to un-blank when there is user activity, since the server will
-       tell us. */
-    ok = True;
-
-  if (!ok)
-    return False;
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-
-      save_real_vroot (ssi);
-      store_vroot_property (si->dpy,
-                           ssi->screensaver_window,
-                           ssi->screensaver_window);
-
-#ifdef HAVE_XF86VMODE
-      {
-        int ev, er;
-        if (!XF86VidModeQueryExtension (si->dpy, &ev, &er) ||
-            !XF86VidModeGetViewPort (si->dpy, i,
-                                     &ssi->blank_vp_x,
-                                     &ssi->blank_vp_y))
-          ssi->blank_vp_x = ssi->blank_vp_y = -1;
-      }
-#endif /* HAVE_XF86VMODE */
-    }
-  store_activate_time (si, si->screen_blanked_p);
-  raise_window (si, False, False, False);
-
-#ifdef HAVE_XHPDISABLERESET
-  if (si->locked_p && !hp_locked_p)
-    {
-      XHPDisableReset (si->dpy);       /* turn off C-Sh-Reset */
-      hp_locked_p = True;
-    }
-#endif
-
-#ifdef HAVE_VT_LOCKSWITCH
-  if (si->locked_p)
-      lock_vt (si, True);              /* turn off C-Alt-Fn */
-#endif
-
-  si->screen_blanked_p = True;
-  si->last_wall_clock_time = 0;
-
-  return True;
-}
-
-void
-unblank_screen (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  Bool unfade_p = (si->fading_possible_p && p->unfade_p);
-  int i;
-
-  monitor_power_on (si);
-
-  store_activate_time (si, True);
-  reset_watchdog_timer (si, False);
-
-  if (si->demoing_p)
-    unfade_p = False;
-
-  if (unfade_p)
-    {
-      Window *current_windows = (Window *)
-       calloc(sizeof(Window), si->nscreens);
-
-      for (i = 0; i < si->nscreens; i++)
-       {
-         saver_screen_info *ssi = &si->screens[i];
-         current_windows[i] = ssi->screensaver_window;
-         /* Ensure that the default background of the window is really black,
-            not a pixmap or something.  (This does not clear the window.) */
-         XSetWindowBackground (si->dpy, ssi->screensaver_window,
-                               ssi->black_pixel);
-       }
-
-      if (p->verbose_p) fprintf (stderr, "%s: unfading...\n", blurb());
-
-
-      XSync (si->dpy, False);
-      XGrabServer (si->dpy);                   /* ############ DANGER! */
-      XSync (si->dpy, False);
-
-      /* Clear the stderr layer on each screen.
-       */
-      for (i = 0; i < si->nscreens; i++)
-       {
-         saver_screen_info *ssi = &si->screens[i];
-         clear_stderr (ssi);
-       }
-
-      XUngrabServer (si->dpy);
-      XSync (si->dpy, False);                  /* ###### (danger over) */
-
-
-      fade_screens (si->dpy, 0, current_windows,
-                   p->fade_seconds/1000, p->fade_ticks,
-                   False, False);
-
-      free(current_windows);
-      current_windows = 0;
-
-      if (p->verbose_p) fprintf (stderr, "%s: unfading done.\n", blurb());
-    }
-  else
-    {
-      for (i = 0; i < si->nscreens; i++)
-       {
-         saver_screen_info *ssi = &si->screens[i];
-         if (ssi->cmap)
-           {
-             Colormap c = DefaultColormapOfScreen (ssi->screen);
-             /* avoid technicolor */
-             XClearWindow (si->dpy, ssi->screensaver_window);
-             if (c) XInstallColormap (si->dpy, c);
-           }
-         XUnmapWindow (si->dpy, ssi->screensaver_window);
-       }
-    }
-
-
-  /* If the focus window does has a non-default colormap, then install
-     that colormap as well.  (On SGIs, this will cause both the root map
-     and the focus map to be installed simultaniously.  It'd be nice to
-     pick up the other colormaps that had been installed, too; perhaps
-     XListInstalledColormaps could be used for that?)
-   */
-  {
-    Window focus = 0;
-    int revert_to;
-    XGetInputFocus (si->dpy, &focus, &revert_to);
-    if (focus && focus != PointerRoot && focus != None)
-      {
-       XWindowAttributes xgwa;
-       xgwa.colormap = 0;
-       XGetWindowAttributes (si->dpy, focus, &xgwa);
-       if (xgwa.colormap &&
-           xgwa.colormap != DefaultColormapOfScreen (xgwa.screen))
-         XInstallColormap (si->dpy, xgwa.colormap);
-      }
-  }
-
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      kill_xsetroot_data (si->dpy, ssi->screensaver_window, p->verbose_p);
-    }
-
-  store_activate_time(si, False);  /* store unblank time */
-
-  ungrab_keyboard_and_mouse (si);
-  restore_real_vroot (si);
-
-#ifdef HAVE_XHPDISABLERESET
-  if (hp_locked_p)
-    {
-      XHPEnableReset (si->dpy);        /* turn C-Sh-Reset back on */
-      hp_locked_p = False;
-    }
-#endif
-
-#ifdef HAVE_VT_LOCKSWITCH
-  lock_vt (si, False);         /* turn C-Alt-Fn back on */
-#endif
-
-  /* Unmap the windows a second time, dammit -- just to avoid a race
-     with the screen-grabbing hacks.  (I'm not sure if this is really
-     necessary; I'm stabbing in the dark now.)
-  */
-  for (i = 0; i < si->nscreens; i++)
-    XUnmapWindow (si->dpy, si->screens[i].screensaver_window);
-
-  si->screen_blanked_p = False;
-  si->last_wall_clock_time = 0;
-}
-
-
-static void
-store_activate_time (saver_info *si, Bool use_last_p)
-{
-  static time_t last_time = 0;
-  time_t now = ((use_last_p && last_time) ? last_time : time ((time_t) 0));
-  CARD32 now32 = (CARD32) now;
-  int i;
-  last_time = now;
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      if (!ssi->screensaver_window) continue;
-      XChangeProperty (si->dpy, ssi->screensaver_window, XA_SCREENSAVER_TIME,
-                      XA_INTEGER, 32, PropModeReplace,
-                      (unsigned char *) &now32, 1);
-    }
-}
-
-
-Bool
-select_visual (saver_screen_info *ssi, const char *visual_name)
-{
-  saver_info *si = ssi->global;
-  saver_preferences *p = &si->prefs;
-  Bool install_cmap_p = p->install_cmap_p;
-  Bool was_installed_p = (ssi->cmap != DefaultColormapOfScreen(ssi->screen));
-  Visual *new_v = 0;
-  Bool got_it;
-
-  if (visual_name && *visual_name)
-    {
-      if (!strcmp(visual_name, "default-i"))
-       {
-         visual_name = "default";
-         install_cmap_p = True;
-       }
-      else if (!strcmp(visual_name, "default-n"))
-       {
-         visual_name = "default";
-         install_cmap_p = False;
-       }
-#ifdef DAEMON_USE_GL
-      else if (!strcmp(visual_name, "gl") ||
-               !strcmp(visual_name, "GL"))
-        {
-          new_v = get_gl_visual (ssi->screen);
-          if (!new_v && p->verbose_p)
-            fprintf (stderr, "%s: no GL visuals.\n", progname);
-        }
-#endif /* DAEMON_USE_GL */
-
-      if (!new_v)
-        new_v = get_visual (ssi->screen, visual_name, True, False);
-    }
-  else
-    {
-      new_v = ssi->default_visual;
-    }
-
-  got_it = !!new_v;
-
-  if (new_v && new_v != DefaultVisualOfScreen(ssi->screen))
-    /* It's not the default visual, so we have no choice but to install. */
-    install_cmap_p = True;
-
-  ssi->install_cmap_p = install_cmap_p;
-
-  if (new_v &&
-      ((ssi->current_visual != new_v) ||
-       (install_cmap_p != was_installed_p)))
-    {
-      Colormap old_c = ssi->cmap;
-      Window old_w = ssi->screensaver_window;
-
-      if (p->verbose_p)
-       {
-         fprintf (stderr, "%s: switching to visual ", blurb());
-         describe_visual (stderr, ssi->screen, new_v, install_cmap_p);
-#if 0
-         fprintf (stderr, "%s:                from ", blurb());
-         describe_visual (stderr, ssi->screen, ssi->current_visual,
-                          was_installed_p);
-#endif
-       }
-
-      reset_stderr (ssi);
-      ssi->current_visual = new_v;
-      ssi->current_depth = visual_depth(ssi->screen, new_v);
-      ssi->cmap = 0;
-      ssi->screensaver_window = 0;
-
-      initialize_screensaver_window_1 (ssi);
-
-      /* stderr_overlay_window is a child of screensaver_window, so we need
-        to destroy that as well (actually, we just need to invalidate and
-        drop our pointers to it, but this will destroy it, which is ok so
-        long as it happens before old_w itself is destroyed.) */
-      reset_stderr (ssi);
-
-      raise_window (si, True, True, False);
-      store_vroot_property (si->dpy,
-                           ssi->screensaver_window, ssi->screensaver_window);
-      store_activate_time (si, True);
-
-
-
-      /* Transfer the grabs from the old window to the new.
-        Actually I think none of this is necessary, since we always
-        hold our grabs on the root window, but I wrote this before
-        re-discovering that...
-       */
-
-
-      /* If we're destroying the window that holds our mouse grab,
-        transfer the grab to the new window.  (Grab the server while
-        so doing, to avoid a race condition.)
-       */
-      if (old_w == si->mouse_grab_window)
-       {
-         XGrabServer (si->dpy);                /* ############ DANGER! */
-         ungrab_mouse (si);
-         grab_mouse (si, ssi->screensaver_window,
-                     (si->demoing_p
-                      ? 0
-                      : ssi->cursor));
-         XUngrabServer (si->dpy);
-         XSync (si->dpy, False);               /* ###### (danger over) */
-       }
-
-      /* If we're destroying the window that holds our keyboard grab,
-        transfer the grab to the new window.  (Grab the server while
-        so doing, to avoid a race condition.)
-       */
-      if (old_w == si->keyboard_grab_window)
-       {
-         XGrabServer (si->dpy);                /* ############ DANGER! */
-         ungrab_kbd(si);
-         grab_kbd(si, ssi->screensaver_window);
-         XUngrabServer (si->dpy);
-         XSync (si->dpy, False);               /* ###### (danger over) */
-       }
-
-      /* Now we can destroy this window without horking our grabs. */
-
-      XDestroyWindow (si->dpy, old_w);
-
-      if (p->verbose_p)
-       fprintf (stderr, "%s: destroyed old saver window 0x%lx.\n",
-                blurb(), (unsigned long) old_w);
-
-      if (old_c &&
-         old_c != DefaultColormapOfScreen (ssi->screen) &&
-         old_c != ssi->demo_cmap)
-       XFreeColormap (si->dpy, old_c);
-    }
-
-  return got_it;
-}
-
-\f
-/* VT locking */
-
-#ifdef HAVE_VT_LOCKSWITCH
-static void
-lock_vt (saver_info *si, Bool lock_p)
-{
-  saver_preferences *p = &si->prefs;
-  static Bool locked_p = False;
-  const char *dev_console = "/dev/console";
-  int fd;
-
-  if (lock_p == locked_p)
-    return;
-
-  if (lock_p && !p->lock_vt_p)
-    return;
-
-  fd = open (dev_console, O_RDWR);
-  if (fd < 0)
-    {
-      char buf [255];
-      sprintf (buf, "%s: couldn't %s VTs: %s", blurb(),
-              (lock_p ? "lock" : "unlock"),
-              dev_console);
-#if 0 /* #### doesn't work yet, so don't bother complaining */
-      perror (buf);
-#endif
-      return;
-    }
-
-  if (ioctl (fd, (lock_p ? VT_LOCKSWITCH : VT_UNLOCKSWITCH)) == 0)
-    {
-      locked_p = lock_p;
-
-      if (p->verbose_p)
-       fprintf (stderr, "%s: %s VTs\n", blurb(),
-                (lock_p ? "locked" : "unlocked"));
-    }
-  else
-    {
-      char buf [255];
-      sprintf (buf, "%s: couldn't %s VTs: ioctl", blurb(),
-              (lock_p ? "lock" : "unlock"));
-#if 0 /* #### doesn't work yet, so don't bother complaining */
-      perror (buf);
-#endif
-    }
-
-  close (fd);
-}
-#endif /* HAVE_VT_LOCKSWITCH */
diff --git a/driver/xscreensaver-command.c b/driver/xscreensaver-command.c
deleted file mode 100644 (file)
index cc169d2..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-/* xscreensaver-command, Copyright (c) 1991-1999
- *  by 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 <stdlib.h>
-#include <sys/time.h>
-#include <sys/types.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <X11/Xproto.h>                /* for CARD32 */
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>         /* for XGetClassHint() */
-#include <X11/Xos.h>
-
-#include <X11/Intrinsic.h>     /* only needed to get through xscreensaver.h */
-
-#include "remote.h"
-#include "version.h"
-
-#ifdef _VROOT_H_
-ERROR! you must not include vroot.h in this file
-#endif
-
-char *progname;
-
-Atom XA_VROOT;
-Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_RESPONSE;
-Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_TIME, XA_SELECT, XA_DEMO;
-static Atom XA_ACTIVATE, XA_DEACTIVATE, XA_CYCLE, XA_NEXT, XA_PREV, XA_EXIT;
-static Atom XA_RESTART, XA_PREFS, XA_LOCK, XA_THROTTLE, XA_UNTHROTTLE;
-
-static char *screensaver_version;
-static char *usage = "\n\
-usage: %s -<option>\n\
-\n\
-  This program provides external control of a running xscreensaver process.\n\
-  Version %s, copyright (c) 1991-1999 Jamie Zawinski <jwz@jwz.org>.\n\
-\n\
-  The xscreensaver program is a daemon that runs in the background.\n\
-  You control a running xscreensaver process by sending it messages\n\
-  with this program, xscreensaver-command.  See the man pages for\n\
-  details.  These are the arguments understood by xscreensaver-command:\n\
-\n\
-  -demo         Ask the xscreensaver process to enter interactive demo mode.\n\
-\n\
-  -prefs        Ask the xscreensaver process to bring up the preferences\n\
-                panel.\n\
-\n\
-  -activate     Turn on the screensaver (blank the screen), as if the user\n\
-                had been idle for long enough.\n\
-\n\
-  -deactivate   Turns off the screensaver (un-blank the screen), as if user\n\
-                activity had been detected.\n\
-\n\
-  -cycle        If the screensaver is active (the screen is blanked), then\n\
-                stop the current graphics demo and run a new one (chosen\n\
-                randomly.)\n\
-\n\
-  -next         Like either -activate or -cycle, depending on which is more\n\
-                appropriate, except that the graphics hack that will be run\n\
-                is the next one in the list, instead of a randomly-chosen\n\
-                one.  In other words, repeatedly executing -next will cause\n\
-                the xscreensaver process to invoke each graphics demo\n\
-                sequentially.  (Though using the -demo option is probably\n\
-                an easier way to accomplish that.)\n\
-\n\
-  -prev         Like -next, but goes in the other direction.\n\
-\n\
-  -select <N>   Like -activate, but runs the Nth element in the list of\n\
-                hacks.  By knowing what is in the `programs' list, and in\n\
-                what order, you can use this to activate the screensaver\n\
-                with a particular graphics demo.  (The first element in the\n\
-                list is numbered 1, not 0.)\n\
-\n\
-  -exit         Causes the xscreensaver process to exit gracefully.  This is\n\
-                roughly the same as killing the process with `kill', but it\n\
-                is easier, since you don't need to first figure out the pid.\n\
-                (Note that one must *never* kill xscreensaver with -9!)\n\
-\n\
-  -restart      Causes the screensaver process to exit and then restart with\n\
-                the same command line arguments as last time.  Do this after\n\
-                you've changed your X resource settings, to cause\n\
-                xscreensaver to notice the changes.\n\
-\n\
-  -lock         Tells the running xscreensaver process to lock the screen\n\
-                immediately.  This is like -activate, but forces locking as\n\
-                well, even if locking is not the default.  If the saver is\n\
-                already active, this causes it to be locked as well.\n\
-\n\
-  -throttle     Temporarily switch to ``blank screen'' mode, and don't run\n\
-                any display modes at all, until the screensaver is next\n\
-                de-activated.  This is useful if you're using a machine\n\
-                remotely, and you find that some display modes are using too\n\
-                much CPU.\n\
-\n\
-  -unthrottle   Turn `-throttle' off and resume normal behavior.\n\
-\n\
-  -version      Prints the version of xscreensaver that is currently running\n\
-                on the display -- that is, the actual version number of the\n\
-                running xscreensaver background process, rather than the\n\
-                version number of xscreensaver-command.\n\
-\n\
-  -time         Prints the time at which the screensaver last activated or\n\
-                deactivated (roughly, how long the user has been idle or\n\
-                non-idle -- but not quite, since it only tells you when the\n\
-                screen became blanked or un-blanked.)\n\
-\n\
-  See the man page for more details.\n\
-  For updates, check http://www.jwz.org/xscreensaver/\n\
-\n";
-
-#define USAGE() do { \
- fprintf (stderr, usage, progname, screensaver_version); exit (1); \
- } while(0)
-
-int
-main (int argc, char **argv)
-{
-  Display *dpy;
-  int i;
-  char *dpyname = 0;
-  Atom *cmd = 0;
-  long arg = 0L;
-
-  progname = argv[0];
-  screensaver_version = (char *) malloc (5);
-  memcpy (screensaver_version, screensaver_id + 17, 4);
-  screensaver_version [4] = 0;
-
-  for (i = 1; i < argc; i++)
-    {
-      const char *s = argv [i];
-      int L;
-      if (s[0] == '-' && s[1] == '-') s++;
-      L = strlen (s);
-      if (L < 2) USAGE ();
-      if (!strncmp (s, "-display", L))         dpyname = argv [++i];
-      else if (cmd) USAGE();
-      else if (!strncmp (s, "-activate", L))   cmd = &XA_ACTIVATE;
-      else if (!strncmp (s, "-deactivate", L)) cmd = &XA_DEACTIVATE;
-      else if (!strncmp (s, "-cycle", L))      cmd = &XA_CYCLE;
-      else if (!strncmp (s, "-next", L))       cmd = &XA_NEXT;
-      else if (!strncmp (s, "-prev", L))       cmd = &XA_PREV;
-      else if (!strncmp (s, "-select", L))     cmd = &XA_SELECT;
-      else if (!strncmp (s, "-exit", L))       cmd = &XA_EXIT;
-      else if (!strncmp (s, "-restart", L))    cmd = &XA_RESTART;
-      else if (!strncmp (s, "-demo", L))       cmd = &XA_DEMO;
-      else if (!strncmp (s, "-preferences",L)) cmd = &XA_PREFS;
-      else if (!strncmp (s, "-prefs",L))       cmd = &XA_PREFS;
-      else if (!strncmp (s, "-lock", L))       cmd = &XA_LOCK;
-      else if (!strncmp (s, "-throttle", L))   cmd = &XA_THROTTLE;
-      else if (!strncmp (s, "-unthrottle", L)) cmd = &XA_UNTHROTTLE;
-      else if (!strncmp (s, "-version", L))    cmd = &XA_SCREENSAVER_VERSION;
-      else if (!strncmp (s, "-time", L))       cmd = &XA_SCREENSAVER_TIME;
-      else USAGE ();
-
-      if (cmd == &XA_SELECT || cmd == &XA_DEMO)
-       {
-         long a;
-         char c;
-         if (i+1 < argc && (1 == sscanf(argv[i+1], " %ld %c", &a, &c)))
-           {
-             arg = a;
-             i++;
-           }
-       }
-    }
-
-  if (!cmd)
-    USAGE ();
-
-  if (arg < 0)
-    /* no command may have a negative argument. */
-    USAGE();
-  else if (arg == 0)
-    {
-      /* SELECT must have a non-zero argument. */
-      if (cmd == &XA_SELECT)
-       USAGE();
-    }
-  else /* arg > 0 */
-    {
-      /* no command other than SELECT and DEMO may have a non-zero argument. */
-      if (cmd != &XA_DEMO && cmd != &XA_SELECT)
-       USAGE();
-    }
-
-
-
-  /* For backward compatibility: -demo with no arguments used to send a
-     "DEMO 0" ClientMessage to the xscreensaver process, which brought up
-     the built-in demo mode dialog.  Now that the demo mode dialog is no
-     longer built in, we bring it up by just running the "xscreensaver-demo"
-     program.
-
-     Note that "-DEMO <n>" still sends a ClientMessage.
-   */
-  if (cmd == &XA_PREFS ||
-      (cmd == &XA_DEMO && arg == 0))
-    {
-      char buf [512];
-      char *new_argv[] = { "xscreensaver-demo", 0, 0, 0, 0, 0 };
-      int ac = 1;
-
-      if (dpyname)
-       {
-         new_argv[ac++] = "-display";
-         new_argv[ac++] = dpyname;
-       }
-
-      if (cmd == &XA_PREFS)
-       new_argv[ac++] = "-prefs";
-
-      fflush(stdout);
-      fflush(stderr);
-      execvp (new_argv[0], new_argv);  /* shouldn't return */
-
-      sprintf (buf, "%s: could not exec %s", progname, new_argv[0]);
-      perror(buf);
-      fflush(stdout);
-      fflush(stderr);
-      exit (-1);
-    }
-
-
-
-  if (!dpyname) dpyname = (char *) getenv ("DISPLAY");
-  dpy = XOpenDisplay (dpyname);
-  if (!dpy)
-    {
-      fprintf (stderr, "%s: can't open display %s\n", progname,
-              (dpyname ? dpyname : "(null)"));
-      exit (1);
-    }
-
-  XA_VROOT = XInternAtom (dpy, "__SWM_VROOT", False);
-  XA_SCREENSAVER = XInternAtom (dpy, "SCREENSAVER", False);
-  XA_SCREENSAVER_ID = XInternAtom (dpy, "_SCREENSAVER_ID", False);
-  XA_SCREENSAVER_VERSION = XInternAtom (dpy, "_SCREENSAVER_VERSION",False);
-  XA_SCREENSAVER_TIME = XInternAtom (dpy, "_SCREENSAVER_TIME", False);
-  XA_SCREENSAVER_RESPONSE = XInternAtom (dpy, "_SCREENSAVER_RESPONSE", False);
-  XA_ACTIVATE = XInternAtom (dpy, "ACTIVATE", False);
-  XA_DEACTIVATE = XInternAtom (dpy, "DEACTIVATE", False);
-  XA_RESTART = XInternAtom (dpy, "RESTART", False);
-  XA_CYCLE = XInternAtom (dpy, "CYCLE", False);
-  XA_NEXT = XInternAtom (dpy, "NEXT", False);
-  XA_PREV = XInternAtom (dpy, "PREV", False);
-  XA_SELECT = XInternAtom (dpy, "SELECT", False);
-  XA_EXIT = XInternAtom (dpy, "EXIT", False);
-  XA_DEMO = XInternAtom (dpy, "DEMO", False);
-  XA_PREFS = XInternAtom (dpy, "PREFS", False);
-  XA_LOCK = XInternAtom (dpy, "LOCK", False);
-  XA_THROTTLE = XInternAtom (dpy, "THROTTLE", False);
-  XA_UNTHROTTLE = XInternAtom (dpy, "UNTHROTTLE", False);
-
-  XSync (dpy, 0);
-
-  if (*cmd == XA_ACTIVATE || *cmd == XA_LOCK ||
-      *cmd == XA_NEXT || *cmd == XA_PREV || *cmd == XA_SELECT)
-    /* People never guess that KeyRelease deactivates the screen saver too,
-       so if we're issuing an activation command, wait a second. */
-    sleep (1);
-
-  i = xscreensaver_command (dpy, *cmd, arg, True);
-  if (i < 0) exit (i);
-  else exit (0);
-}
diff --git a/driver/xscreensaver-command.man b/driver/xscreensaver-command.man
deleted file mode 100644 (file)
index a7b2ee5..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-.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 "10-May-99 (3.12)" "X Version 11"
-.SH NAME
-xscreensaver-command - control a running xscreensaver process
-.SH SYNOPSIS
-.B xscreensaver-command
-[\-help] \
-[\-demo] \
-[\-prefs] \
-[\-activate] \
-[\-deactivate] \
-[\-cycle] \
-[\-next] \
-[\-prev] \
-[\-select \fIn\fP] \
-[\-exit] \
-[\-restart] \
-[\-lock] \
-[\-throttle] \
-[\-unthrottle] \
-[\-version] \
-[\-time]
-.SH DESCRIPTION
-The \fIxscreensaver\-command\fP program controls a running \fIxscreensaver\fP
-process by sending it client-messages.
-
-.BR xscreensaver (1)
-has a client-server model: the xscreensaver process is a
-daemon that runs in the background; it is controlled by other
-foreground programs such as \fIxscreensaver-command\fP and
-.BR xscreensaver\-demo (1).
-
-This program, \fIxscreensaver-command\fP, is a command-line-oriented tool; the 
-.BR xscreensaver\-demo (1).
-program is a graphical tool.
-.SH OPTIONS
-.I xscreensaver-command
-accepts the following command-line options:
-.TP 8
-.B \-help
-Prints a brief summary of command-line options.
-.TP 8
-.B \-demo
-This just launches the
-.BR xscreensaver\-demo (1)
-program, in which one can experiment with the various graphics hacks
-available, and edit parameters.
-.TP 8
-.B \-demo \fP\fInumber\fP
-When the \fI\-demo\fP option is followed by an integer, it instructs 
-the \fIxscreensaver\fP daemon to run that hack, and wait for the user
-to click the mouse before deactivating (i.e., mouse motion does not
-deactivate.)  This is the mechanism by which
-.BR xscreensaver\-demo (1)
-communicates with the
-.BR xscreensaver (1)
-daemon.  (The first hack in the list is numbered 1, not 0.)
-.TP 8
-.B \-prefs
-Like the no-argument form of \fI\-demo\fP, but brings up that program's
-Preferences panel by default.
-.TP 8
-.B \-activate
-Tell xscreensaver to turn on immediately (that is, blank the screen, as if
-the user had been idle for long enough.)  The screensaver will deactivate as
-soon as there is any user activity, as usual.
-
-It is useful to run this from a menu; you may wish to run it as
-.EX
-sleep 5 ; xscreensaver-command -activate
-.EE
-to be sure that you have time to take your hand off the mouse before
-the screensaver comes on.  (Because if you jiggle the mouse, xscreensaver
-will notice, and deactivate.)
-.TP 8
-.B \-deactivate
-If the screensaver is active (the screen is blanked), this command will
-deactivate it just as if there had been keyboard or mouse activity.  
-If locking is enabled, then the screensaver will prompt for a password
-as usual.
-.TP 8
-.B \-cycle
-If the screensaver is active (the screen is blanked), then stop the current
-graphics demo and run a new one (chosen randomly.)
-.TP 8
-.B \-next
-This is like either \fI\-activate\fP or \fI\-cycle\fP, depending on which is
-more appropriate, except that the graphics hack that will be run is the next
-one in the list, instead of a randomly-chosen one.  In other words, 
-repeatedly executing -next will cause the xscreensaver process to invoke each
-graphics demo sequentially.  (Though using the \fI\-demo\fP option is probably
-an easier way to accomplish that.)
-.TP 8
-.B \-prev
-This is like \fI\-next\fP, but cycles in the other direction.
-.TP 8
-.B \-select \fInumber\fP
-Like \fI\-activate\fP, but runs the \fIN\fPth element in the list of hacks.
-By knowing what is in the \fIprograms\fP list, and in what order, you can use
-this to activate the screensaver with a particular graphics demo.  (The first
-element in the list is numbered 1, not 0.)
-.TP 8
-.B \-exit
-Causes the xscreensaver process to exit gracefully.  This is roughly the same
-as killing the process with
-.BR kill (1),
-but it is easier, since you don't need to first figure out the pid.  
-
-.B Warning:
-never use \fIkill -9\fP with \fIxscreensaver\fP while the screensaver is
-active.  If you are using a virtual root window manager, that can leave
-things in an inconsistent state, and you may need to restart your window
-manager to repair the damage.
-.TP 8
-.B \-lock
-Tells the running xscreensaver process to lock the screen immediately.  
-This is like \fI\-activate\fP, but forces locking as well, even if locking
-is not the default (that is, even if xscreensaver's \fIlock\fP resource is
-false, and even if the \fIlockTimeout\fP resource is non-zero.)
-
-Note that locking doesn't work unless the \fIxscreensaver\fP process is
-running as you.  See 
-.BR xscreensaver (1)
-for details.
-.TP 8
-.B \-throttle
-Temporarily switch to ``blank screen'' mode, and don't run any display modes
-at all, until the screensaver is next de-activated.  This is useful if you're
-using a machine remotely, and you find that some display modes are using too
-much CPU.  
-
-(If you want to do this \fIpermanently\fP, that is, you want the screen saver
-to only blank the screen and not run demos at all, then set the \fIprograms\fP
-resource to an empty list:  See
-.BR xscreensaver (1)
-for details.)
-.TP 8
-.B \-unthrottle
-Turn `-throttle' mode off and resume normal behavior.
-.TP 8
-.B \-version
-Prints the version of xscreensaver that is currently running on the display:
-that is, the actual version number of the running xscreensaver background 
-process, rather than the version number of xscreensaver-command.  (To see
-the version number of \fIxscreensaver-command\fP itself, use 
-the \fI\-help\fP option.)
-.TP 8
-.B \-time
-Prints the time at which the screensaver last activated or 
-deactivated (roughly, how long the user has been idle or non-idle: but 
-not quite, since it only tells you when the screen became blanked or
-un-blanked.)
-.TP 8
-.B \-restart
-Causes the screensaver process to exit and then restart with the same command
-line arguments as last time.  Do this after you've changed the resource
-database, to cause xscreensaver to notice the changes.
-
-.B Warning:
-if you have a \fI.xscreensaver\fP file, this might not do what you 
-expect.  You're probably better off killing the existing 
-xscreensaver (with \fIxscreensaver\-command -exit\fP) and then
-launching it again.
-
-The important point is, you need to make sure that the xscreensaver 
-process is running as you.  If it's not, it won't be reading the 
-right \fI.xscreensaver\fP file.
-.SH DIAGNOSTICS
-If an error occurs while communicating with the \fIxscreensaver\fP daemon, or
-if the daemon reports an error, a diagnostic message will be printed to
-stderr, and \fIxscreensaver-command\fP will exit with a non-zero value.  If
-the command is accepted, an indication of this will be printed to stdout, and
-the exit value will be zero.
-.SH ENVIRONMENT
-.PP
-.TP 8
-.B DISPLAY
-to get the host and display number of the screen whose saver is
-to be manipulated.
-.TP 8
-.B PATH
-to find the executable to restart (for the \fI\-restart\fP command).  
-Note that this variable is consulted in the environment of 
-the \fIxscreensaver\fP process, not the \fIxscreensaver-command\fP process.
-.SH UPGRADES
-The latest version of
-.BR xscreensaver (1)
-and related tools can always be found at http://www.jwz.org/xscreensaver/
-.SH "SEE ALSO"
-.BR X (1),
-.BR xscreensaver (1)
-.BR xscreensaver\-demo (1)
-.SH COPYRIGHT
-Copyright \(co 1992, 1993, 1997, 1998, 1999
-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
-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>, 13-aug-92.
-
-Please let me know if you find any bugs or make any improvements.
diff --git a/driver/xscreensaver-demo.man b/driver/xscreensaver-demo.man
deleted file mode 100644 (file)
index 696a39a..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-.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 "10-May-99 (3.12)" "X Version 11"
-.SH NAME
-xscreensaver-demo - interactively control the background xscreensaver daemon
-.SH SYNOPSIS
-.B xscreensaver\-demo
-[\-display \fIhost:display.screen\fP] [\-prefs] [\-xrm \fIresources\fP]
-.SH DESCRIPTION
-The \fIxscreensaver\-demo\fP program is a graphical front-end for 
-setting the parameters used by the background
-.BR xscreensaver (1)
-daemon.
-It is essentially two things: a tool for editing the \fI~/.xscreensaver\fP
-file; and a tool for demoing the various graphics hacks that 
-the \fIxscreensaver\fP daemon will launch.
-
-The main dialog box contains a scrolling list, a text field, and a number 
-of buttons.  
-
-Double-clicking on one of the programs in the list will run it.  The screen
-will go black, and the program will run in full-screen mode, just as it would
-if the \fIxscreensaver\fP daemon had launched it.  Clicking the mouse again
-will stop the demo and un-blank the screen, making the dialog box visible 
-again.
-
-Single-clicking in the list will place the indicated program and its args
-in the text field to be edited.  Edit the arguments and hit return to run
-the program with the parameters you have specified.  This will also save
-your changes to your \fI~/.xscreensaver\fP file: so any changes you make
-in this way are persistent.
-
-If one of the lines in the scrolling list begins with the character "-",
-then that means that the program is disabled: \fIxscreensaver\fP will not
-select it to be run (though you can still try it out by clicking on it.)
-Rather than just deleting the programs you don't want to run, you might
-want to disable them in this way instead, so that you can more easily change
-your mind later.
-
-If the line begins with the name of a visual, followed by a colon, then
-that program will only be run on that kind of visual.  For example, you can
-specify that a particular program should only be run if color is available,
-and another should only be run in monochrome.  See the discussion of 
-the \fIprograms\fP parameter in the \fIConfiguration\fP section of the
-.BR xscreensaver (1)
-manual.
-
-The buttons are:
-.TP 8
-.B Run Next
-Clicking this button will run the next program in the list after the 
-currently-selected one, and will wrap around to the top when it reaches
-the bottom.
-.TP 8
-.B Run Previous
-Opposite of Run Next; at the top, it wraps around to the bottom.
-.TP 8
-.B Preferences
-This pops up a second dialog box, in which you have the option to 
-interactively change most of the screensaver's operational parameters,
-such as its timeouts, and whether it should lock the screen.  When you
-click OK, your chosen settings will take effect immediately, and will
-also be saved to the \fI~/.xscreensaver\fP file in your home directory,
-so that the settings will persist next time.
-.TP 8
-.B Quit
-Exits the \fIxscreensaver-demo\fP program.  The background \fIxscreensaver\fP
-daemon will continue running as before.
-.P
-The Preferences dialog box lets you change the following settings.
-
-(There are more settings available, but these are the most commonly used
-ones; see the manual for
-.BR xscreensaver (1)
-for other parameters that can be set by editing the \fI~/.xscreensaver\fP
-file, or the X resource database.)
-.TP 8
-.B Saver Timeout
-After the user has been idle this long, the \fIxscreensaver\fP daemon
-will blank the screen.
-.TP 8
-.B Cycle Timeout
-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 8
-.B Verbose\ 
-Whether to print lots of debugging information.
-.TP 8
-.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
-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 8
-.B Fade Colormap
-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.)
-.TP 8
-.B Unfade Colormap
-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
-colormaps, and when \fIFade Colormap\fP is also selected.
-.TP 8
-.B Fade Duration
-When fading or unfading are selected, this controls how long the fade will
-take.
-.TP 8
-.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 8
-.B Require Password
-Whether the screen saver should lock the screen when it activates.
-.TP 8
-.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 8
-.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.
-.SH COMMAND-LINE OPTIONS
-.I xscreensaver\-demo
-accepts the following command line options.
-.TP 8
-.B \-display \fIhost:display.screen\fP
-The X display to use.  The \fIxscreensaver\-demo\fP program will open its
-window on that display, and also control the \fIxscreensaver\fP daemon that
-is managing that same display.
-.TP 8
-.B \-prefs
-Start up in Preferences mode: this is just like launching the program with
-no arguments, and then pressing the \fIPreferences\fP button.
-.P
-It is important that the \fIxscreensaver\fP and \fIxscreensaver\-demo\fP
-processes be running on the same machine, or at least, on two machines
-that share a file system.  When \fIxscreensaver\-demo\fP writes a new version
-of the \fI~/.xscreensaver\fP file, it's important that the \fIxscreensaver\fP
-see that same file.  If the two processes are seeing 
-different \fI~/.xscreensaver\fP files, things will malfunction.
-.SH ENVIRONMENT
-.PP
-.TP 8
-.B DISPLAY
-to get the default host and display number.
-.TP 8
-.B PATH
-to find the sub-programs to run.  However, note that the sub-programs 
-are actually launched by the \fIxscreensaver\fP daemon, not 
-by \fIxscreensaver-demo\fP itself.  So, what matters is what \fB$PATH\fP
-the \fIxscreensaver\fP program sees.
-.TP 8
-.B HOME
-for the directory in which to read and write the \fI.xscreensaver\fP file.
-.TP 8
-.B XENVIRONMENT
-to get the name of a resource file that overrides the global resources
-stored in the RESOURCE_MANAGER property.
-.SH UPGRADES
-The latest version can always be found at 
-http://www.jwz.org/xscreensaver/
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver (1),
-.BR xscreensaver\-command (1)
-.SH COPYRIGHT
-Copyright \(co 1992, 1993, 1997, 1998, 1999
-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
-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>, 13-aug-92.
-
-Please let me know if you find any bugs or make any improvements.
diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c
deleted file mode 100644 (file)
index 1eecf4c..0000000
+++ /dev/null
@@ -1,1623 +0,0 @@
-/* xscreensaver, Copyright (c) 1991-1999 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.
- */
-
-/*   ========================================================================
- *   First we wait until the keyboard and mouse become idle for the specified
- *   amount of time.  We do this in one of three different ways: periodically
- *   checking with the XIdle server extension; selecting key and mouse events
- *   on (nearly) all windows; or by waiting for the MIT-SCREEN-SAVER extension
- *   to send us a "you are idle" event.
- *
- *   Then, we map a full screen black window (or, in the case of the 
- *   MIT-SCREEN-SAVER extension, use the one it gave us.)
- *
- *   We place a __SWM_VROOT property on this window, so that newly-started
- *   clients will think that this window is a "virtual root" window.
- *
- *   If there is an existing "virtual root" window (one that already had
- *   an __SWM_VROOT property) then we remove that property from that window.
- *   Otherwise, clients would see that window (the real virtual root) instead
- *   of ours (the impostor.)
- *
- *   Then we pick a random program to run, and start it.  Two assumptions 
- *   are made about this program: that it has been specified with whatever
- *   command-line options are necessary to make it run on the root window;
- *   and that it has been compiled with vroot.h, so that it is able to find
- *   the root window when a virtual-root window manager (or this program) is
- *   running.
- *
- *   Then, we wait for keyboard or mouse events to be generated on the window.
- *   When they are, we kill the inferior process, unmap the window, and restore
- *   the __SWM_VROOT property to the real virtual root window if there was one.
- *
- *   While we are waiting, we also set up timers so that, after a certain 
- *   amount of time has passed, we can start a different screenhack.  We do
- *   this by killing the running child process with SIGTERM, and then starting
- *   a new one in the same way.
- *
- *   If there was a real virtual root, meaning that we removed the __SWM_VROOT
- *   property from it, meaning we must (absolutely must) restore it before we
- *   exit, then we set up signal handlers for most signals (SIGINT, SIGTERM,
- *   etc.) that do this.  Most Xlib and Xt routines are not reentrant, so it
- *   is not generally safe to call them from signal handlers; however, this
- *   program spends most of its time waiting, so the window of opportunity 
- *   when code could be called reentrantly is fairly small; and also, the worst
- *   that could happen is that the call would fail.  If we've gotten one of
- *   these signals, then we're on our way out anyway.  If we didn't restore the
- *   __SWM_VROOT property, that would be very bad, so it's worth a shot.  Note
- *   that this means that, if you're using a virtual-root window manager, you
- *   can really fuck up the world by killing this process with "kill -9".
- *
- *   This program accepts ClientMessages of type SCREENSAVER; these messages
- *   may contain the atom ACTIVATE or DEACTIVATE, meaning to turn the 
- *   screensaver on or off now, regardless of the idleness of the user,
- *   and a few other things.  The included "xscreensaver_command" program
- *   sends these messsages.
- *
- *   If we don't have the XIdle, MIT-SCREEN-SAVER, or SGI SCREEN_SAVER
- *   extensions, then we do the XAutoLock trick: notice every window that
- *   gets created, and wait 30 seconds or so until its creating process has
- *   settled down, and then select KeyPress events on those windows which
- *   already select for KeyPress events.  It's important that we not select
- *   KeyPress on windows which don't select them, because that would
- *   interfere with event propagation.  This will break if any program
- *   changes its event mask to contain KeyRelease or PointerMotion more than
- *   30 seconds after creating the window, but that's probably pretty rare.
- *   
- *   The reason that we can't select KeyPresses on windows that don't have
- *   them already is that, when dispatching a KeyPress event, X finds the
- *   lowest (leafmost) window in the hierarchy on which *any* client selects
- *   for KeyPress, and sends the event to that window.  This means that if a
- *   client had a window with subwindows, and expected to receive KeyPress
- *   events on the parent window instead of the subwindows, then that client
- *   would malfunction if some other client selected KeyPress events on the
- *   subwindows.  It is an incredible misdesign that one client can make
- *   another client malfunction in this way.
- *
- *   To detect mouse motion, we periodically wake up and poll the mouse
- *   position and button/modifier state, and notice when something has
- *   changed.  We make this check every five seconds by default, and since the
- *   screensaver timeout has a granularity of one minute, this makes the
- *   chance of a false positive very small.  We could detect mouse motion in
- *   the same way as keyboard activity, but that would suffer from the same
- *   "client changing event mask" problem that the KeyPress events hack does.
- *   I think polling is more reliable.
- *
- *   None of this crap happens if we're using one of the extensions, so install
- *   one of them if the description above sounds just too flaky to live.  It
- *   is, but those are your choices.
- *
- *   A third idle-detection option could be implemented (but is not): when
- *   running on the console display ($DISPLAY is `localhost`:0) and we're on a
- *   machine where /dev/tty and /dev/mouse have reasonable last-modification
- *   times, we could just stat() those.  But the incremental benefit of
- *   implementing this is really small, so forget I said anything.
- *
- *   Debugging hints:
- *     - Have a second terminal handy.
- *     - Be careful where you set your breakpoints, you don't want this to
- *       stop under the debugger with the keyboard grabbed or the blackout
- *       window exposed.
- *     - If you run your debugger under XEmacs, try M-ESC (x-grab-keyboard)
- *       to keep your emacs window alive even when xscreensaver has grabbed.
- *     - Go read the code related to `debug_p'.
- *     - You probably can't set breakpoints in functions that are called on
- *       the other side of a call to fork() -- if your clients are dying 
- *       with signal 5, Trace/BPT Trap, you're losing in this way.
- *     - If you aren't using a server extension, don't leave this stopped
- *       under the debugger for very long, or the X input buffer will get
- *       huge because of the keypress events it's selecting for.  This can
- *       make your X server wedge with "no more input buffers."
- *       
- * ======================================================================== */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-#include <X11/Xos.h>
-#include <netdb.h>     /* for gethostbyname() */
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/Error.h>
-# else  /* !VMS */
-#  include <Xmu/Error.h>
-# endif /* !VMS */
-#else  /* !HAVE_XMU */
-# include "xmu.h"
-#endif /* !HAVE_XMU */
-
-#ifdef HAVE_XIDLE_EXTENSION
-# include <X11/extensions/xidle.h>
-#endif /* HAVE_XIDLE_EXTENSION */
-
-#include "xscreensaver.h"
-#include "version.h"
-#include "yarandom.h"
-#include "resources.h"
-#include "visual.h"
-#include "usleep.h"
-
-saver_info *global_si_kludge = 0;      /* I hate C so much... */
-
-char *progname = 0;
-char *progclass = 0;
-XrmDatabase db = 0;
-
-
-static Atom XA_SCREENSAVER_RESPONSE;
-static Atom XA_ACTIVATE, XA_DEACTIVATE, XA_CYCLE, XA_NEXT, XA_PREV;
-static Atom XA_EXIT, XA_RESTART, XA_LOCK, XA_SELECT;
-static Atom XA_THROTTLE, XA_UNTHROTTLE;
-Atom XA_DEMO, XA_PREFS;
-
-\f
-static XrmOptionDescRec options [] = {
-  { "-timeout",                   ".timeout",          XrmoptionSepArg, 0 },
-  { "-cycle",             ".cycle",            XrmoptionSepArg, 0 },
-  { "-lock-mode",         ".lock",             XrmoptionNoArg, "on" },
-  { "-no-lock-mode",      ".lock",             XrmoptionNoArg, "off" },
-  { "-no-lock",                   ".lock",             XrmoptionNoArg, "off" },
-  { "-lock-timeout",      ".lockTimeout",      XrmoptionSepArg, 0 },
-  { "-lock-vts",          ".lockVTs",          XrmoptionNoArg, "on" },
-  { "-no-lock-vts",       ".lockVTs",          XrmoptionNoArg, "off" },
-  { "-visual",            ".visualID",         XrmoptionSepArg, 0 },
-  { "-install",                   ".installColormap",  XrmoptionNoArg, "on" },
-  { "-no-install",        ".installColormap",  XrmoptionNoArg, "off" },
-  { "-verbose",                   ".verbose",          XrmoptionNoArg, "on" },
-  { "-silent",            ".verbose",          XrmoptionNoArg, "off" },
-  { "-timestamp",         ".timestamp",        XrmoptionNoArg, "on" },
-  { "-capture-stderr",    ".captureStderr",    XrmoptionNoArg, "on" },
-  { "-no-capture-stderr",  ".captureStderr",   XrmoptionNoArg, "off" },
-  { "-xidle-extension",           ".xidleExtension",   XrmoptionNoArg, "on" },
-  { "-no-xidle-extension", ".xidleExtension",  XrmoptionNoArg, "off" },
-  { "-mit-extension",     ".mitSaverExtension",XrmoptionNoArg, "on" },
-  { "-no-mit-extension",   ".mitSaverExtension",XrmoptionNoArg, "off" },
-  { "-sgi-extension",     ".sgiSaverExtension",XrmoptionNoArg, "on" },
-  { "-no-sgi-extension",   ".sgiSaverExtension",XrmoptionNoArg, "off" },
-  { "-proc-interrupts",           ".procInterrupts",   XrmoptionNoArg, "on" },
-  { "-no-proc-interrupts", ".procInterrupts",  XrmoptionNoArg, "off" },
-  { "-splash",            ".splash",           XrmoptionNoArg, "on" },
-  { "-no-splash",         ".splash",           XrmoptionNoArg, "off" },
-  { "-nosplash",          ".splash",           XrmoptionNoArg, "off" },
-  { "-idelay",            ".initialDelay",     XrmoptionSepArg, 0 },
-  { "-nice",              ".nice",             XrmoptionSepArg, 0 },
-
-  /* Actually these are built in to Xt, but just to be sure... */
-  { "-synchronous",       ".synchronous",      XrmoptionNoArg, "on" },
-  { "-xrm",               NULL,                XrmoptionResArg, NULL }
-};
-
-static char *defaults[] = {
-#include "XScreenSaver_ad.h"
- 0
-};
-
-#ifdef _VROOT_H_
-ERROR!  You must not include vroot.h in this file.
-#endif
-
-static void
-do_help (saver_info *si)
-{
-  fflush (stdout);
-  fflush (stderr);
-  fprintf (stdout, "\
-xscreensaver %s, copyright (c) 1991-1999 by Jamie Zawinski <jwz@jwz.org>\n\
-The standard Xt command-line options are accepted; other options include:\n\
-\n\
-    -timeout <minutes>       When the screensaver should activate.\n\
-    -cycle <minutes>         How long to let each hack run before switching.\n\
-    -lock-mode               Require a password before deactivating.\n\
-    -lock-timeout <minutes>  Grace period before locking; default 0.\n\
-    -visual <id-or-class>    Which X visual to run on.\n\
-    -install                 Install a private colormap.\n\
-    -verbose                 Be loud.\n\
-    -no-splash               Don't display a splash-screen at startup.\n\
-    -help                    This message.\n\
-\n\
-See the manual for other options and X resources.\n\
-\n\
-The `xscreensaver' program should be left running in the background.\n\
-Use the `xscreensaver-demo' and `xscreensaver-command' programs to\n\
-manipulate a running xscreensaver.\n\
-\n\
-The `*programs' resource controls which graphics demos will be launched by\n\
-the screensaver.  See `man xscreensaver' or the web page for more details.\n\
-\n\
-Just getting started?  Try this:\n\
-\n\
-        xscreensaver &\n\
-        xscreensaver-demo\n\
-\n\
-For updates, check http://www.jwz.org/xscreensaver/\n\
-\n",
-         si->version);
-  fflush (stdout);
-  fflush (stderr);
-  exit (1);
-}
-
-
-char *
-timestring (void)
-{
-  time_t now = time ((time_t *) 0);
-  char *str = (char *) ctime (&now);
-  char *nl = (char *) strchr (str, '\n');
-  if (nl) *nl = 0; /* take off that dang newline */
-  return str;
-}
-
-static Bool blurb_timestamp_p = False;   /* kludge */
-
-const char *
-blurb (void)
-{
-  if (!blurb_timestamp_p)
-    return progname;
-  else
-    {
-      static char buf[255];
-      char *ct = timestring();
-      int n = strlen(progname);
-      if (n > 100) n = 99;
-      strncpy(buf, progname, n);
-      buf[n++] = ':';
-      buf[n++] = ' ';
-      strncpy(buf+n, ct+11, 8);
-      strcpy(buf+n+9, ": ");
-      return buf;
-    }
-}
-
-
-int
-saver_ehandler (Display *dpy, XErrorEvent *error)
-{
-  saver_info *si = global_si_kludge;   /* I hate C so much... */
-
-  if (!real_stderr) real_stderr = stderr;
-
-  fprintf (real_stderr, "\n"
-          "#######################################"
-          "#######################################\n\n"
-          "%s: X Error!  PLEASE REPORT THIS BUG.\n\n"
-          "#######################################"
-          "#######################################\n\n",
-          blurb());
-  if (XmuPrintDefaultErrorMessage (dpy, error, real_stderr))
-    {
-      fprintf (real_stderr, "\n");
-      if (si->prefs.xsync_p)
-       {
-         saver_exit (si, -1, "because of synchronous X Error");
-       }
-      else
-       {
-          fprintf (real_stderr,
-                   "#######################################"
-                   "#######################################\n\n");
-          fprintf (real_stderr,
-   "    If at all possible, please re-run xscreensaver with the command line\n"
-   "    arguments `-sync -verbose', and reproduce this bug.  That will cause\n"
-   "    xscreensaver to dump a `core' file to the current directory.  Please\n"
-   "    include the stack trace from that core file in your bug report.\n"
-   "\n"
-   "    http://www.jwz.org/xscreensaver/bugs.html explains how to create the\n"
-   "    most useful bug reports, and how to examine core files.\n"
-   "\n"
-   "    The more information you can provide, the better.  But please report\n"
-   "    report this bug, regardless!\n"
-   "\n");
-          fprintf (real_stderr,
-                   "#######################################"
-                   "#######################################\n\n");
-
-         saver_exit (si, -1, 0);
-       }
-    }
-  else
-    fprintf (real_stderr, " (nonfatal.)\n");
-  return 0;
-}
-
-
-/* This error handler is used only while the X connection is being set up;
-   after we've got a connection, we don't use this handler again.  The only
-   reason for having this is so that we can present a more idiot-proof error
-   message than "cannot open display."
- */
-static void 
-startup_ehandler (String name, String type, String class,
-                  String defalt,  /* one can't even spel properly
-                                     in this joke of a language */
-                  String *av, Cardinal *ac)
-{
-  char fmt[512];
-  String p[10];
-  saver_info *si = global_si_kludge;   /* I hate C so much... */
-  XrmDatabase *db = XtAppGetErrorDatabase(si->app);
-  *fmt = 0;
-  XtAppGetErrorDatabaseText(si->app, name, type, class, defalt,
-                            fmt, sizeof(fmt)-1, *db);
-
-  fprintf (stderr, "%s: ", blurb());
-
-  memset (p, 0, sizeof(p));
-  if (*ac > countof (p)) *ac = countof (p);
-  memcpy ((char *) p, (char *) av, (*ac) * sizeof(*av));
-  fprintf (stderr, fmt,                /* Did I mention that I hate C? */
-           p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9]);
-  fprintf (stderr, "\n");
-
-  describe_uids (si, stderr);
-  fprintf (stderr, "\n"
-           "%s: Errors at startup are usually authorization problems.\n"
-           "              Did you read the manual?  Specifically, the parts\n"
-           "              that talk about XAUTH, XDM, and root logins?\n"
-           "\n"
-           "              http://www.jwz.org/xscreensaver/man.html\n"
-           "\n",
-           blurb());
-
-  fflush (stderr);
-  fflush (stdout);
-  exit (1);
-}
-
-\f
-/* The zillions of initializations.
- */
-
-/* Set progname, version, etc.  This is done very early.
- */
-static void
-set_version_string (saver_info *si, int *argc, char **argv)
-{
-  progclass = "XScreenSaver";
-
-  /* progname is reset later, after we connect to X. */
-  progname = strrchr(argv[0], '/');
-  if (progname) progname++;
-  else progname = argv[0];
-
-  if (strlen(progname) > 100)  /* keep it short. */
-    progname[99] = 0;
-
-  /* The X resource database blows up if argv[0] has a "." in it. */
-  {
-    char *s = argv[0];
-    while ((s = strchr (s, '.')))
-      *s = '_';
-  }
-
-  si->version = (char *) malloc (5);
-  memcpy (si->version, screensaver_id + 17, 4);
-  si->version [4] = 0;
-}
-
-
-/* Initializations that potentially take place as a priveleged user:
-   If the xscreensaver executable is setuid root, then these initializations
-   are run as root, before discarding privileges.
- */
-static void
-privileged_initialization (saver_info *si, int *argc, char **argv)
-{
-#ifndef NO_LOCKING
-  /* before hack_uid() for proper permissions */
-  lock_priv_init (*argc, argv, si->prefs.verbose_p);
-#endif /* NO_LOCKING */
-
-  hack_uid (si);
-}
-
-
-/* Figure out what locking mechanisms are supported.
- */
-static void
-lock_initialization (saver_info *si, int *argc, char **argv)
-{
-#ifdef NO_LOCKING
-  si->locking_disabled_p = True;
-  si->nolock_reason = "not compiled with locking support";
-#else /* !NO_LOCKING */
-  si->locking_disabled_p = False;
-
-  /* Finish initializing locking, now that we're out of privileged code. */
-  if (! lock_init (*argc, argv, si->prefs.verbose_p))
-    {
-      si->locking_disabled_p = True;
-      si->nolock_reason = "error getting password";
-    }
-#endif /* NO_LOCKING */
-
-  hack_uid (si);
-}
-
-
-/* Open the connection to the X server, and intern our Atoms.
- */
-static Widget
-connect_to_server (saver_info *si, int *argc, char **argv)
-{
-  Widget toplevel_shell;
-
-  XSetErrorHandler (saver_ehandler);
-
-  XtAppSetErrorMsgHandler (si->app, startup_ehandler);
-  toplevel_shell = XtAppInitialize (&si->app, progclass,
-                                   options, XtNumber (options),
-                                   argc, argv, defaults, 0, 0);
-  XtAppSetErrorMsgHandler (si->app, 0);
-
-  si->dpy = XtDisplay (toplevel_shell);
-  si->prefs.db = XtDatabase (si->dpy);
-  XtGetApplicationNameAndClass (si->dpy, &progname, &progclass);
-
-  if(strlen(progname) > 100)   /* keep it short. */
-    progname [99] = 0;
-
-  db = si->prefs.db;   /* resources.c needs this */
-
-  XA_VROOT = XInternAtom (si->dpy, "__SWM_VROOT", False);
-  XA_SCREENSAVER = XInternAtom (si->dpy, "SCREENSAVER", False);
-  XA_SCREENSAVER_VERSION = XInternAtom (si->dpy, "_SCREENSAVER_VERSION",False);
-  XA_SCREENSAVER_ID = XInternAtom (si->dpy, "_SCREENSAVER_ID", False);
-  XA_SCREENSAVER_TIME = XInternAtom (si->dpy, "_SCREENSAVER_TIME", False);
-  XA_SCREENSAVER_RESPONSE = XInternAtom (si->dpy, "_SCREENSAVER_RESPONSE",
-                                        False);
-  XA_XSETROOT_ID = XInternAtom (si->dpy, "_XSETROOT_ID", False);
-  XA_ACTIVATE = XInternAtom (si->dpy, "ACTIVATE", False);
-  XA_DEACTIVATE = XInternAtom (si->dpy, "DEACTIVATE", False);
-  XA_RESTART = XInternAtom (si->dpy, "RESTART", False);
-  XA_CYCLE = XInternAtom (si->dpy, "CYCLE", False);
-  XA_NEXT = XInternAtom (si->dpy, "NEXT", False);
-  XA_PREV = XInternAtom (si->dpy, "PREV", False);
-  XA_SELECT = XInternAtom (si->dpy, "SELECT", False);
-  XA_EXIT = XInternAtom (si->dpy, "EXIT", False);
-  XA_DEMO = XInternAtom (si->dpy, "DEMO", False);
-  XA_PREFS = XInternAtom (si->dpy, "PREFS", False);
-  XA_LOCK = XInternAtom (si->dpy, "LOCK", False);
-  XA_THROTTLE = XInternAtom (si->dpy, "THROTTLE", False);
-  XA_UNTHROTTLE = XInternAtom (si->dpy, "UNTHROTTLE", False);
-
-  return toplevel_shell;
-}
-
-
-/* Handle the command-line arguments that were not handled for us by Xt.
-   Issue an error message and exit if there are unknown options.
- */
-static void
-process_command_line (saver_info *si, int *argc, char **argv)
-{
-  int i;
-  for (i = 1; i < *argc; i++)
-    {
-      if (!strcmp (argv[i], "-debug"))
-       /* no resource for this one, out of paranoia. */
-       si->prefs.debug_p = True;
-
-      else if (!strcmp (argv[i], "-h") ||
-              !strcmp (argv[i], "-help") ||
-              !strcmp (argv[i], "--help"))
-       do_help (si);
-
-      else
-       {
-         const char *s = argv[i];
-         fprintf (stderr, "%s: unknown option \"%s\".  Try \"-help\".\n",
-                  blurb(), s);
-
-         if (s[0] == '-' && s[1] == '-') s++;
-         if (!strcmp (s, "-activate") ||
-             !strcmp (s, "-deactivate") ||
-             !strcmp (s, "-cycle") ||
-             !strcmp (s, "-next") ||
-             !strcmp (s, "-prev") ||
-             !strcmp (s, "-exit") ||
-             !strcmp (s, "-restart") ||
-             !strcmp (s, "-demo") ||
-             !strcmp (s, "-prefs") ||
-             !strcmp (s, "-preferences") ||
-             !strcmp (s, "-lock") ||
-             !strcmp (s, "-version") ||
-             !strcmp (s, "-time"))
-           {
-
-             if (!strcmp (s, "-demo") || !strcmp (s, "-prefs"))
-               fprintf (stderr, "\n\
-    Perhaps you meant to run the `xscreensaver-demo' program instead?\n");
-             else
-               fprintf (stderr, "\n\
-    However, `%s' is an option to the `xscreensaver-command' program.\n", s);
-
-             fprintf (stderr, "\
-    The `xscreensaver' program is a daemon that runs in the background.\n\
-    You control a running xscreensaver process by sending it messages\n\
-    with `xscreensaver-demo' or `xscreensaver-command'.\n\
-.   See the man pages for details, or check the web page:\n\
-    http://www.jwz.org/xscreensaver/\n\n");
-
-             /* Since version 1.21 renamed the "-lock" option to "-lock-mode",
-                suggest that explicitly. */
-             if (!strcmp (s, "-lock"))
-               fprintf (stderr, "\
-    Or perhaps you meant either the \"-lock-mode\" or the\n\
-    \"-lock-timeout <minutes>\" options to xscreensaver?\n\n");
-           }
-
-         exit (1);
-       }
-    }
-}
-
-
-/* Print out the xscreensaver banner to the tty if applicable;
-   Issue any other warnings that are called for at this point.
- */
-static void
-print_banner (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-
-  /* This resource gets set some time before the others, so that we know
-     whether to print the banner (and so that the banner gets printed before
-     any resource-database-related error messages.)
-   */
-  p->verbose_p = (p->debug_p || get_boolean_resource ("verbose", "Boolean"));
-
-  /* Ditto, for the locking_disabled_p message. */
-  p->lock_p = get_boolean_resource ("lock", "Boolean");
-
-  if (p->verbose_p)
-    fprintf (stderr,
-            "%s %s, copyright (c) 1991-1999 "
-            "by Jamie Zawinski <jwz@jwz.org>.\n",
-            progname, si->version);
-
-  if (p->debug_p)
-    fprintf (stderr, "\n"
-            "%s: Warning: running in DEBUG MODE.  Be afraid.\n"
-            "\n"
-            "\tNote that in debug mode, the xscreensaver window will only\n"
-            "\tcover the left half of the screen.  (The idea is that you\n"
-            "\tcan still see debugging output in a shell, if you position\n"
-            "\tit on the right side of the screen.)\n"
-            "\n"
-            "\tDebug mode is NOT SECURE.  Do not run with -debug in\n"
-            "\tuntrusted environments.\n"
-            "\n",
-            blurb());
-
-  if (p->verbose_p)
-    {
-      if (!si->uid_message || !*si->uid_message)
-       describe_uids (si, stderr);
-      else
-       {
-         if (si->orig_uid && *si->orig_uid)
-           fprintf (stderr, "%s: initial effective uid/gid was %s.\n",
-                    blurb(), si->orig_uid);
-         fprintf (stderr, "%s: %s\n", blurb(), si->uid_message);
-       }
-
-      fprintf (stderr, "%s: in process %lu.\n", blurb(),
-              (unsigned long) getpid());
-    }
-
-  /* If locking was not able to be initalized for some reason, explain why.
-     (This has to be done after we've read the lock_p resource.)
-   */
-  if (p->lock_p && si->locking_disabled_p)
-    {
-      p->lock_p = False;
-      fprintf (stderr, "%s: locking is disabled (%s).\n", blurb(),
-              si->nolock_reason);
-      if (strstr (si->nolock_reason, "passw"))
-       fprintf (stderr, "%s: does xscreensaver need to be setuid?  "
-                "consult the manual.\n", blurb());
-      else if (strstr (si->nolock_reason, "running as "))
-       fprintf (stderr, 
-                "%s: locking only works when xscreensaver is launched\n"
-                "\t by a normal, non-privileged user (e.g., not \"root\".)\n"
-                "\t See the manual for details.\n",
-                blurb());
-    }
-}
-
-
-/* Examine all of the display's screens, and populate the `saver_screen_info'
-   structures.
- */
-static void
-initialize_per_screen_info (saver_info *si, Widget toplevel_shell)
-{
-  Bool found_any_writable_cells = False;
-  int i;
-
-  si->nscreens = ScreenCount(si->dpy);
-  si->screens = (saver_screen_info *)
-    calloc(sizeof(saver_screen_info), si->nscreens);
-
-  si->default_screen = &si->screens[DefaultScreen(si->dpy)];
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      ssi->global = si;
-      ssi->screen = ScreenOfDisplay (si->dpy, i);
-
-      /* Note: we can't use the resource ".visual" because Xt is SO FUCKED. */
-      ssi->default_visual =
-       get_visual_resource (ssi->screen, "visualID", "VisualID", False);
-
-      ssi->current_visual = ssi->default_visual;
-      ssi->current_depth = visual_depth (ssi->screen, ssi->current_visual);
-
-      if (ssi == si->default_screen)
-       /* Since this is the default screen, use the one already created. */
-       ssi->toplevel_shell = toplevel_shell;
-      else
-       /* Otherwise, each screen must have its own unmapped root widget. */
-       ssi->toplevel_shell =
-         XtVaAppCreateShell (progname, progclass, applicationShellWidgetClass,
-                             si->dpy,
-                             XtNscreen, ssi->screen,
-                             XtNvisual, ssi->current_visual,
-                             XtNdepth,  visual_depth (ssi->screen,
-                                                      ssi->current_visual),
-                             0);
-
-      if (! found_any_writable_cells)
-       {
-         /* Check to see whether fading is ever possible -- if any of the
-            screens on the display has a PseudoColor visual, then fading can
-            work (on at least some screens.)  If no screen has a PseudoColor
-            visual, then don't bother ever trying to fade, because it will
-            just cause a delay without causing any visible effect.
-         */
-         if (has_writable_cells (ssi->screen, ssi->current_visual) ||
-             get_visual (ssi->screen, "PseudoColor", True, False) ||
-             get_visual (ssi->screen, "GrayScale", True, False))
-           found_any_writable_cells = True;
-       }
-    }
-
-  si->fading_possible_p = found_any_writable_cells;
-}
-
-
-/* If any server extensions have been requested, try and initialize them.
-   Issue warnings if requests can't be honored.
- */
-static void
-initialize_server_extensions (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-
-  Bool server_has_xidle_extension_p = False;
-  Bool server_has_sgi_saver_extension_p = False;
-  Bool server_has_mit_saver_extension_p = False;
-  Bool system_has_proc_interrupts_p = False;
-  const char *piwhy = 0;
-
-  si->using_xidle_extension = p->use_xidle_extension;
-  si->using_sgi_saver_extension = p->use_sgi_saver_extension;
-  si->using_mit_saver_extension = p->use_mit_saver_extension;
-  si->using_proc_interrupts = p->use_proc_interrupts;
-
-#ifdef HAVE_XIDLE_EXTENSION
-  server_has_xidle_extension_p = query_xidle_extension (si);
-#endif
-#ifdef HAVE_SGI_SAVER_EXTENSION
-  server_has_sgi_saver_extension_p = query_sgi_saver_extension (si);
-#endif
-#ifdef HAVE_MIT_SAVER_EXTENSION
-  server_has_mit_saver_extension_p = query_mit_saver_extension (si);
-#endif
-#ifdef HAVE_PROC_INTERRUPTS
-  system_has_proc_interrupts_p = query_proc_interrupts_available (si, &piwhy);
-#endif
-
-  if (!server_has_xidle_extension_p)
-    si->using_xidle_extension = False;
-  else if (p->verbose_p)
-    {
-      if (si->using_xidle_extension)
-       fprintf (stderr, "%s: using XIDLE extension.\n", blurb());
-      else
-       fprintf (stderr, "%s: not using server's XIDLE extension.\n", blurb());
-    }
-
-  if (!server_has_sgi_saver_extension_p)
-    si->using_sgi_saver_extension = False;
-  else if (p->verbose_p)
-    {
-      if (si->using_sgi_saver_extension)
-       fprintf (stderr, "%s: using SGI SCREEN_SAVER extension.\n", blurb());
-      else
-       fprintf (stderr,
-                "%s: not using server's SGI SCREEN_SAVER extension.\n",
-                blurb());
-    }
-
-  if (!server_has_mit_saver_extension_p)
-    si->using_mit_saver_extension = False;
-  else if (p->verbose_p)
-    {
-      if (si->using_mit_saver_extension)
-       fprintf (stderr, "%s: using lame MIT-SCREEN-SAVER extension.\n",
-                blurb());
-      else
-       fprintf (stderr,
-                "%s: not using server's lame MIT-SCREEN-SAVER extension.\n",
-                blurb());
-    }
-
-  if (!system_has_proc_interrupts_p)
-    {
-      si->using_proc_interrupts = False;
-      if (p->verbose_p && piwhy)
-       fprintf (stderr, "%s: not using /proc/interrupts: %s.\n", blurb(),
-                 piwhy);
-    }
-  else if (p->verbose_p)
-    {
-      if (si->using_proc_interrupts)
-       fprintf (stderr,
-                 "%s: consulting /proc/interrupts for keyboard activity.\n",
-                blurb());
-      else
-       fprintf (stderr,
-                "%s: not consulting /proc/interrupts for keyboard activity.\n",
-                blurb());
-    }
-}
-
-
-/* For the case where we aren't using an server extensions, select user events
-   on all the existing windows, and launch timers to select events on
-   newly-created windows as well.
-
-   If a server extension is being used, this does nothing.
- */
-static void
-select_events (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  int i;
-
-  if (si->using_xidle_extension ||
-      si->using_mit_saver_extension ||
-      si->using_sgi_saver_extension)
-    return;
-
-  if (p->initial_delay)
-    {
-      if (p->verbose_p)
-       {
-         fprintf (stderr, "%s: waiting for %d second%s...", blurb(),
-                  (int) p->initial_delay/1000,
-                  (p->initial_delay == 1000 ? "" : "s"));
-         fflush (stderr);
-         fflush (stdout);
-       }
-      usleep (p->initial_delay);
-      if (p->verbose_p)
-       fprintf (stderr, " done.\n");
-    }
-
-  if (p->verbose_p)
-    {
-      fprintf (stderr, "%s: selecting events on extant windows...", blurb());
-      fflush (stderr);
-      fflush (stdout);
-    }
-
-  /* Select events on the root windows of every screen.  This also selects
-     for window creation events, so that new subwindows will be noticed.
-   */
-  for (i = 0; i < si->nscreens; i++)
-    start_notice_events_timer (si, RootWindowOfScreen (si->screens[i].screen),
-                               False);
-
-  if (p->verbose_p)
-    fprintf (stderr, " done.\n");
-}
-
-
-void
-maybe_reload_init_file (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  if (init_file_changed_p (p))
-    {
-      if (p->verbose_p)
-       fprintf (stderr, "%s: file \"%s\" has changed, reloading.\n",
-                blurb(), init_file_name());
-
-      load_init_file (p);
-
-      /* 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);
-    }
-}
-
-
-/* Loop forever:
-
-       - wait until the user is idle;
-       - blank the screen;
-       - wait until the user is active;
-       - unblank the screen;
-       - repeat.
-
- */
-static void
-main_loop (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  Bool ok_to_unblank;
-
-  while (1)
-    {
-      Bool was_locked = False;
-      sleep_until_idle (si, True);
-
-      if (p->verbose_p)
-       {
-         if (si->demoing_p)
-           fprintf (stderr, "%s: demoing %d at %s.\n", blurb(),
-                    si->selection_mode, timestring());
-         else
-           if (p->verbose_p)
-             fprintf (stderr, "%s: blanking screen at %s.\n", blurb(),
-                      timestring());
-       }
-
-      maybe_reload_init_file (si);
-
-      if (! blank_screen (si))
-        {
-          /* We were unable to grab either the keyboard or mouse.
-             This means we did not (and must not) blank the screen.
-             If we were to blank the screen while some other program
-             is holding both the mouse and keyboard grabbed, then
-             we would never be able to un-blank it!  We would never
-             see any events, and the display would be wedged.
-
-             So, just go around the loop again and wait for the
-             next bout of idleness.
-          */
-
-          fprintf (stderr,
-                  "%s: unable to grab keyboard or mouse!  Blanking aborted.\n",
-                   blurb());
-          continue;
-        }
-
-      kill_screenhack (si);
-
-      if (!si->throttled_p)
-        spawn_screenhack (si, True);
-      else if (p->verbose_p)
-        fprintf (stderr, "%s: not launching hack (throttled.)\n", blurb());
-
-      /* Don't start the cycle timer in demo mode. */
-      if (!si->demoing_p && p->cycle)
-       si->cycle_id = XtAppAddTimeOut (si->app,
-                                        (si->selection_mode
-                                         /* see comment in cycle_timer() */
-                                         ? 1000 * 60 * 60
-                                         : p->cycle),
-                                        cycle_timer,
-                                       (XtPointer) si);
-
-
-#ifndef NO_LOCKING
-      {
-        Time lock_timeout = p->lock_timeout;
-
-        if (si->emergency_lock_p && p->lock_p && lock_timeout)
-          {
-            int secs = p->lock_timeout / 1000;
-            if (p->verbose_p)
-              fprintf (stderr,
-                     "%s: locking now, instead of waiting for %d:%02d:%02d.\n",
-                       blurb(),
-                       (secs / (60 * 60)), ((secs / 60) % 60), (secs % 60));
-            lock_timeout = 0;
-          }
-
-        si->emergency_lock_p = False;
-
-        if (!si->demoing_p &&           /* if not going into demo mode */
-            p->lock_p &&                /* and locking is enabled */
-            !si->locking_disabled_p &&  /* and locking is possible */
-            lock_timeout == 0)          /* and locking is not timer-deferred */
-          si->locked_p = True;          /* then lock right now. */
-
-        /* locked_p might be true already because of the above, or because of
-           the LOCK ClientMessage.  But if not, and if we're supposed to lock
-           after some time, set up a timer to do so.
-        */
-        if (p->lock_p &&
-            !si->locked_p &&
-            lock_timeout > 0)
-          si->lock_id = XtAppAddTimeOut (si->app, lock_timeout,
-                                         activate_lock_timer,
-                                         (XtPointer) si);
-      }
-#endif /* !NO_LOCKING */
-
-
-      ok_to_unblank = True;
-      do {
-
-       sleep_until_idle (si, False);           /* until not idle */
-       maybe_reload_init_file (si);
-
-#ifndef NO_LOCKING
-       if (si->locked_p)
-         {
-           saver_screen_info *ssi = si->default_screen;
-           if (si->locking_disabled_p) abort ();
-
-            was_locked = True;
-           si->dbox_up_p = True;
-           suspend_screenhack (si, True);
-           XUndefineCursor (si->dpy, ssi->screensaver_window);
-
-           ok_to_unblank = unlock_p (si);
-
-           si->dbox_up_p = False;
-           XDefineCursor (si->dpy, ssi->screensaver_window, ssi->cursor);
-           suspend_screenhack (si, False);     /* resume */
-         }
-#endif /* !NO_LOCKING */
-
-       } while (!ok_to_unblank);
-
-
-      if (p->verbose_p)
-       fprintf (stderr, "%s: unblanking screen at %s.\n",
-                blurb(), timestring ());
-
-      /* Kill before unblanking, to stop drawing as soon as possible. */
-      kill_screenhack (si);
-      unblank_screen (si);
-
-      si->locked_p = False;
-      si->emergency_lock_p = False;
-      si->demoing_p = 0;
-      si->selection_mode = 0;
-
-      /* If we're throttled, and the user has explicitly unlocked the screen,
-         then unthrottle.  If we weren't locked, then don't unthrottle
-         automatically, because someone might have just bumped the desk... */
-      if (was_locked)
-        {
-          if (si->throttled_p && p->verbose_p)
-            fprintf (stderr, "%s: unthrottled.\n", blurb());
-          si->throttled_p = False;
-        }
-
-      if (si->cycle_id)
-       {
-         XtRemoveTimeOut (si->cycle_id);
-         si->cycle_id = 0;
-       }
-
-      if (si->lock_id)
-       {
-         XtRemoveTimeOut (si->lock_id);
-         si->lock_id = 0;
-       }
-
-      if (p->verbose_p)
-       fprintf (stderr, "%s: awaiting idleness.\n", blurb());
-    }
-}
-
-static void analyze_display (saver_info *si);
-
-int
-main (int argc, char **argv)
-{
-  Widget shell;
-  saver_info the_si;
-  saver_info *si = &the_si;
-  saver_preferences *p = &si->prefs;
-  int i;
-
-  memset(si, 0, sizeof(*si));
-  global_si_kludge = si;       /* I hate C so much... */
-
-  srandom ((int) time ((time_t *) 0));
-
-  save_argv (argc, argv);
-  set_version_string (si, &argc, argv);
-  privileged_initialization (si, &argc, argv);
-  hack_environment (si);
-
-  shell = connect_to_server (si, &argc, argv);
-  process_command_line (si, &argc, argv);
-  print_banner (si);
-
-  load_init_file (p);  /* must be before initialize_per_screen_info() */
-  initialize_per_screen_info (si, shell); /* also sets si->fading_possible_p */
-
-  /* We can only issue this warnings now. */
-  if (p->verbose_p && !si->fading_possible_p && (p->fade_p || p->unfade_p))
-    fprintf (stderr,
-             "%s: there are no PseudoColor or GrayScale visuals.\n"
-             "%s: ignoring the request for fading/unfading.\n",
-             blurb(), blurb());
-
-  for (i = 0; i < si->nscreens; i++)
-    if (ensure_no_screensaver_running (si->dpy, si->screens[i].screen))
-      exit (1);
-
-  lock_initialization (si, &argc, argv);
-
-  if (p->xsync_p) XSynchronize (si->dpy, True);
-  blurb_timestamp_p = p->timestamp_p;  /* kludge */
-
-  if (p->verbose_p) analyze_display (si);
-  initialize_server_extensions (si);
-  initialize_screensaver_window (si);
-  select_events (si);
-  init_sigchld ();
-  disable_builtin_screensaver (si, True);
-  initialize_stderr (si);
-
-  make_splash_dialog (si);
-
-  main_loop (si);              /* doesn't return */
-  return 0;
-}
-
-\f
-/* Processing ClientMessage events.
- */
-
-static void
-clientmessage_response (saver_info *si, Window w, Bool error,
-                       const char *stderr_msg,
-                       const char *protocol_msg)
-{
-  char *proto;
-  int L;
-  saver_preferences *p = &si->prefs;
-  if (error || p->verbose_p)
-    fprintf (stderr, "%s: %s\n", blurb(), stderr_msg);
-
-  L = strlen(protocol_msg);
-  proto = (char *) malloc (L + 2);
-  proto[0] = (error ? '-' : '+');
-  strcpy (proto+1, protocol_msg);
-  L++;
-
-  XChangeProperty (si->dpy, w, XA_SCREENSAVER_RESPONSE, XA_STRING, 8,
-                  PropModeReplace, (unsigned char *) proto, L);
-  XSync (si->dpy, False);
-  free (proto);
-}
-
-Bool
-handle_clientmessage (saver_info *si, XEvent *event, Bool until_idle_p)
-{
-  saver_preferences *p = &si->prefs;
-  Atom type = 0;
-  Window window = event->xclient.window;
-
-  /* Preferences might affect our handling of client messages. */
-  maybe_reload_init_file (si);
-
-  if (event->xclient.message_type != XA_SCREENSAVER)
-    {
-      char *str;
-      str = XGetAtomName (si->dpy, event->xclient.message_type);
-      fprintf (stderr, "%s: unrecognised ClientMessage type %s received\n",
-              blurb(), (str ? str : "(null)"));
-      if (str) XFree (str);
-      return False;
-    }
-  if (event->xclient.format != 32)
-    {
-      fprintf (stderr, "%s: ClientMessage of format %d received, not 32\n",
-              blurb(), event->xclient.format);
-      return False;
-    }
-
-  type = event->xclient.data.l[0];
-  if (type == XA_ACTIVATE)
-    {
-      if (until_idle_p)
-       {
-         clientmessage_response(si, window, False,
-                                "ACTIVATE ClientMessage received.",
-                                "activating.");
-         si->selection_mode = 0;
-         si->demoing_p = False;
-
-          if (si->throttled_p && p->verbose_p)
-            fprintf (stderr, "%s: unthrottled.\n", blurb());
-         si->throttled_p = False;
-
-         if (si->using_mit_saver_extension || si->using_sgi_saver_extension)
-           {
-             XForceScreenSaver (si->dpy, ScreenSaverActive);
-             return False;
-           }
-         else
-           {
-             return True;
-           }
-       }
-      clientmessage_response(si, window, True,
-                      "ClientMessage ACTIVATE received while already active.",
-                            "already active.");
-    }
-  else if (type == XA_DEACTIVATE)
-    {
-      if (! until_idle_p)
-       {
-          if (si->throttled_p && p->verbose_p)
-            fprintf (stderr, "%s: unthrottled.\n", blurb());
-         si->throttled_p = False;
-
-         clientmessage_response(si, window, False,
-                                "DEACTIVATE ClientMessage received.",
-                                "deactivating.");
-         if (si->using_mit_saver_extension || si->using_sgi_saver_extension)
-           {
-             XForceScreenSaver (si->dpy, ScreenSaverReset);
-             return False;
-           }
-         else
-           {
-             return True;
-           }
-       }
-      clientmessage_response(si, window, True,
-                          "ClientMessage DEACTIVATE received while inactive.",
-                            "not active.");
-    }
-  else if (type == XA_CYCLE)
-    {
-      if (! until_idle_p)
-       {
-         clientmessage_response(si, window, False,
-                                "CYCLE ClientMessage received.",
-                                "cycling.");
-         si->selection_mode = 0;       /* 0 means randomize when its time. */
-         si->demoing_p = False;
-
-          if (si->throttled_p && p->verbose_p)
-            fprintf (stderr, "%s: unthrottled.\n", blurb());
-         si->throttled_p = False;
-
-         if (si->cycle_id)
-           XtRemoveTimeOut (si->cycle_id);
-         si->cycle_id = 0;
-         cycle_timer ((XtPointer) si, 0);
-         return False;
-       }
-      clientmessage_response(si, window, True,
-                            "ClientMessage CYCLE received while inactive.",
-                            "not active.");
-    }
-  else if (type == XA_NEXT || type == XA_PREV)
-    {
-      clientmessage_response(si, window, False,
-                            (type == XA_NEXT
-                             ? "NEXT ClientMessage received."
-                             : "PREV ClientMessage received."),
-                            "cycling.");
-      si->selection_mode = (type == XA_NEXT ? -1 : -2);
-      si->demoing_p = False;
-
-      if (si->throttled_p && p->verbose_p)
-        fprintf (stderr, "%s: unthrottled.\n", blurb());
-      si->throttled_p = False;
-
-      if (! until_idle_p)
-       {
-         if (si->cycle_id)
-           XtRemoveTimeOut (si->cycle_id);
-         si->cycle_id = 0;
-         cycle_timer ((XtPointer) si, 0);
-       }
-      else
-       return True;
-    }
-  else if (type == XA_SELECT)
-    {
-      char buf [255];
-      char buf2 [255];
-      long which = event->xclient.data.l[1];
-
-      sprintf (buf, "SELECT %ld ClientMessage received.", which);
-      sprintf (buf2, "activating (%ld).", which);
-      clientmessage_response (si, window, False, buf, buf2);
-
-      if (which < 0) which = 0;                /* 0 == "random" */
-      si->selection_mode = which;
-      si->demoing_p = False;
-
-      if (si->throttled_p && p->verbose_p)
-        fprintf (stderr, "%s: unthrottled.\n", blurb());
-      si->throttled_p = False;
-
-      if (! until_idle_p)
-       {
-         if (si->cycle_id)
-           XtRemoveTimeOut (si->cycle_id);
-         si->cycle_id = 0;
-         cycle_timer ((XtPointer) si, 0);
-       }
-      else
-       return True;
-    }
-  else if (type == XA_EXIT)
-    {
-      /* Ignore EXIT message if the screen is locked. */
-      if (until_idle_p || !si->locked_p)
-       {
-         clientmessage_response (si, window, False,
-                                 "EXIT ClientMessage received.",
-                                 "exiting.");
-         if (! until_idle_p)
-           {
-             unblank_screen (si);
-             kill_screenhack (si);
-             XSync (si->dpy, False);
-           }
-         saver_exit (si, 0, 0);
-       }
-      else
-       clientmessage_response (si, window, True,
-                               "EXIT ClientMessage received while locked.",
-                               "screen is locked.");
-    }
-  else if (type == XA_RESTART)
-    {
-      /* The RESTART message works whether the screensaver is active or not,
-        unless the screen is locked, in which case it doesn't work.
-       */
-      if (until_idle_p || !si->locked_p)
-       {
-         clientmessage_response (si, window, False,
-                                 "RESTART ClientMessage received.",
-                                 "restarting.");
-         if (! until_idle_p)
-           {
-             unblank_screen (si);
-             kill_screenhack (si);
-             XSync (si->dpy, False);
-           }
-
-          fflush (stdout);
-          fflush (stderr);
-          if (real_stdout) fflush (real_stdout);
-          if (real_stderr) fflush (real_stderr);
-         /* make sure error message shows up before exit. */
-         if (real_stderr && stderr != real_stderr)
-           dup2 (fileno(real_stderr), fileno(stderr));
-
-         restart_process (si);
-         exit (1);     /* shouldn't get here; but if restarting didn't work,
-                          make this command be the same as EXIT. */
-       }
-      else
-       clientmessage_response (si, window, True,
-                               "RESTART ClientMessage received while locked.",
-                               "screen is locked.");
-    }
-  else if (type == XA_DEMO)
-    {
-      long arg = event->xclient.data.l[1];
-      Bool demo_one_hack_p = (arg == 300);
-
-      if (demo_one_hack_p)
-       {
-         if (until_idle_p)
-           {
-             long which = event->xclient.data.l[2];
-             char buf [255];
-             char buf2 [255];
-             sprintf (buf, "DEMO %ld ClientMessage received.", which);
-             sprintf (buf2, "demoing (%ld).", which);
-             clientmessage_response (si, window, False, buf, buf2);
-
-             if (which < 0) which = 0;         /* 0 == "random" */
-             si->selection_mode = which;
-             si->demoing_p = True;
-
-              if (si->throttled_p && p->verbose_p)
-                fprintf (stderr, "%s: unthrottled.\n", blurb());
-              si->throttled_p = False;
-
-             return True;
-           }
-
-         clientmessage_response (si, window, True,
-                                 "DEMO ClientMessage received while active.",
-                                 "already active.");
-       }
-      else
-       {
-         clientmessage_response (si, window, True,
-                                 "obsolete form of DEMO ClientMessage.",
-                                 "obsolete form of DEMO ClientMessage.");
-       }
-    }
-  else if (type == XA_PREFS)
-    {
-      clientmessage_response (si, window, True,
-                             "the PREFS client-message is obsolete.",
-                             "the PREFS client-message is obsolete.");
-    }
-  else if (type == XA_LOCK)
-    {
-#ifdef NO_LOCKING
-      clientmessage_response (si, window, True,
-                             "not compiled with support for locking.",
-                             "locking not enabled.");
-#else /* !NO_LOCKING */
-      if (si->locking_disabled_p)
-       clientmessage_response (si, window, True,
-                     "LOCK ClientMessage received, but locking is disabled.",
-                             "locking not enabled.");
-      else if (si->locked_p)
-       clientmessage_response (si, window, True,
-                          "LOCK ClientMessage received while already locked.",
-                               "already locked.");
-      else
-       {
-         char buf [255];
-         char *response = (until_idle_p
-                           ? "activating and locking."
-                           : "locking.");
-         si->locked_p = True;
-         si->selection_mode = 0;
-         si->demoing_p = False;
-         sprintf (buf, "LOCK ClientMessage received; %s", response);
-         clientmessage_response (si, window, False, buf, response);
-
-         if (si->lock_id)      /* we're doing it now, so lose the timeout */
-           {
-             XtRemoveTimeOut (si->lock_id);
-             si->lock_id = 0;
-           }
-
-         if (until_idle_p)
-           {
-             if (si->using_mit_saver_extension ||
-                  si->using_sgi_saver_extension)
-               {
-                 XForceScreenSaver (si->dpy, ScreenSaverActive);
-                 return False;
-               }
-             else
-               {
-                 return True;
-               }
-           }
-       }
-#endif /* !NO_LOCKING */
-    }
-  else if (type == XA_THROTTLE)
-    {
-      if (si->throttled_p)
-       clientmessage_response (si, window, True,
-                                "THROTTLE ClientMessage received, but "
-                                "already throttled.",
-                                "already throttled.");
-      else
-       {
-         char buf [255];
-         char *response = "throttled.";
-         si->throttled_p = True;
-         si->selection_mode = 0;
-         si->demoing_p = False;
-         sprintf (buf, "THROTTLE ClientMessage received; %s", response);
-         clientmessage_response (si, window, False, buf, response);
-
-          if (! until_idle_p)
-            {
-              if (si->cycle_id)
-                XtRemoveTimeOut (si->cycle_id);
-              si->cycle_id = 0;
-              cycle_timer ((XtPointer) si, 0);
-            }
-       }
-    }
-  else if (type == XA_UNTHROTTLE)
-    {
-      if (! si->throttled_p)
-       clientmessage_response (si, window, True,
-                                "UNTHROTTLE ClientMessage received, but "
-                                "not throttled.",
-                                "not throttled.");
-      else
-       {
-         char buf [255];
-         char *response = "unthrottled.";
-         si->throttled_p = False;
-         si->selection_mode = 0;
-         si->demoing_p = False;
-         sprintf (buf, "UNTHROTTLE ClientMessage received; %s", response);
-         clientmessage_response (si, window, False, buf, response);
-
-          if (! until_idle_p)
-            {
-              if (si->cycle_id)
-                XtRemoveTimeOut (si->cycle_id);
-              si->cycle_id = 0;
-              cycle_timer ((XtPointer) si, 0);
-            }
-       }
-    }
-  else
-    {
-      char buf [1024];
-      char *str;
-      str = (type ? XGetAtomName(si->dpy, type) : 0);
-
-      if (str)
-       {
-         if (strlen (str) > 80)
-           strcpy (str+70, "...");
-         sprintf (buf, "unrecognised screensaver ClientMessage %s received.",
-                  str);
-         free (str);
-       }
-      else
-       {
-         sprintf (buf,
-                  "unrecognised screensaver ClientMessage 0x%x received.",
-                  (unsigned int) event->xclient.data.l[0]);
-       }
-
-      clientmessage_response (si, window, True, buf, buf);
-    }
-  return False;
-}
-
-\f
-/* Some random diagnostics printed in -verbose mode.
- */
-
-static void
-analyze_display (saver_info *si)
-{
-  int i, j;
-  static const char *exts[][2] = {
-    { "SCREEN_SAVER",             "SGI Screen-Saver" },
-    { "SCREEN-SAVER",            "SGI Screen-Saver" },
-    { "MIT-SCREEN-SAVER",         "MIT Screen-Saver" },
-    { "XIDLE",                   "XIdle" },
-    { "SGI-VIDEO-CONTROL",        "SGI Video-Control" },
-    { "READDISPLAY",             "SGI Read-Display" },
-    { "MIT-SHM",                 "Shared Memory" },
-    { "DOUBLE-BUFFER",           "Double-Buffering" },
-    { "DPMS",                    "Power Management" },
-    { "GLX",                     "GLX" },
-    { "XFree86-VidModeExtension", "XF86 Video-Mode" }
-  };
-
-  fprintf (stderr, "%s: running on display \"%s\"\n", blurb(),
-          DisplayString(si->dpy));
-  fprintf (stderr, "%s: vendor is %s, %d\n", blurb(),
-          ServerVendor(si->dpy), VendorRelease(si->dpy));
-
-  fprintf (stderr, "%s: useful extensions:\n", blurb());
-  for (i = 0; i < countof(exts); i++)
-    {
-      int op = 0, event = 0, error = 0;
-      if (XQueryExtension (si->dpy, exts[i][0], &op, &event, &error))
-       fprintf (stderr, "%s:   %s\n", blurb(), exts[i][1]);
-    }
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      unsigned long colormapped_depths = 0;
-      unsigned long non_mapped_depths = 0;
-      XVisualInfo vi_in, *vi_out;
-      int out_count;
-      vi_in.screen = i;
-      vi_out = XGetVisualInfo (si->dpy, VisualScreenMask, &vi_in, &out_count);
-      if (!vi_out) continue;
-      for (j = 0; j < out_count; j++)
-       if (vi_out[j].class == PseudoColor)
-         colormapped_depths |= (1 << vi_out[j].depth);
-       else
-         non_mapped_depths  |= (1 << vi_out[j].depth);
-      XFree ((char *) vi_out);
-
-      if (colormapped_depths)
-       {
-         fprintf (stderr, "%s: screen %d colormapped depths:", blurb(), i);
-         for (j = 0; j < 32; j++)
-           if (colormapped_depths & (1 << j))
-             fprintf (stderr, " %d", j);
-         fprintf (stderr, "\n");
-       }
-      if (non_mapped_depths)
-       {
-         fprintf (stderr, "%s: screen %d non-mapped depths:", blurb(), i);
-         for (j = 0; j < 32; j++)
-           if (non_mapped_depths & (1 << j))
-             fprintf (stderr, " %d", j);
-         fprintf (stderr, "\n");
-       }
-    }
-}
-
-Bool
-display_is_on_console_p (saver_info *si)
-{
-  Bool not_on_console = True;
-  char *dpystr = DisplayString (si->dpy);
-  char *tail = (char *) strchr (dpystr, ':');
-  if (! tail || strncmp (tail, ":0", 2))
-    not_on_console = True;
-  else
-    {
-      char dpyname[255], localname[255];
-      strncpy (dpyname, dpystr, tail-dpystr);
-      dpyname [tail-dpystr] = 0;
-      if (!*dpyname ||
-         !strcmp(dpyname, "unix") ||
-         !strcmp(dpyname, "localhost"))
-       not_on_console = False;
-      else if (gethostname (localname, sizeof (localname)))
-       not_on_console = True;  /* can't find hostname? */
-      else
-       {
-         /* We have to call gethostbyname() on the result of gethostname()
-            because the two aren't guarenteed to be the same name for the
-            same host: on some losing systems, one is a FQDN and the other
-            is not.  Here in the wide wonderful world of Unix it's rocket
-            science to obtain the local hostname in a portable fashion.
-            
-            And don't forget, gethostbyname() reuses the structure it
-            returns, so we have to copy the fucker before calling it again.
-            Thank you master, may I have another.
-          */
-         struct hostent *h = gethostbyname (dpyname);
-         if (!h)
-           not_on_console = True;
-         else
-           {
-             char hn [255];
-             struct hostent *l;
-             strcpy (hn, h->h_name);
-             l = gethostbyname (localname);
-             not_on_console = (!l || !!(strcmp (l->h_name, hn)));
-           }
-       }
-    }
-  return !not_on_console;
-}
diff --git a/driver/xscreensaver.h b/driver/xscreensaver.h
deleted file mode 100644 (file)
index 75b4ab4..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-/* xscreensaver, Copyright (c) 1993-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.
- */
-
-#ifndef __XSCREENSAVER_H__
-#define __XSCREENSAVER_H__
-
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <string.h>
-#include <stdio.h>
-
-#include "prefs.h"
-
-extern char *progname;
-extern char *progclass;
-
-typedef struct saver_info saver_info;
-typedef struct saver_screen_info saver_screen_info;
-typedef struct passwd_dialog_data passwd_dialog_data;
-typedef struct splash_dialog_data splash_dialog_data;
-
-#undef countof
-#define countof(x) (sizeof((x))/sizeof((*x)))
-
-
-
-/* This structure holds all the data that applies to the program as a whole,
-   or to the non-screen-specific parts of the display connection.
-
-   The saver_preferences structure (prefs.h) holds all the user-specified
-   parameters, read from the command line, the resource database, or entered
-   through a dialog box.
- */
-struct saver_info {
-  char *version;
-  saver_preferences prefs;
-
-  int nscreens;
-  saver_screen_info *screens;
-  saver_screen_info *default_screen;   /* ...on which dialogs will appear. */
-
-
-  /* =======================================================================
-     global connection info
-     ======================================================================= */
-
-  XtAppContext app;
-  Display *dpy;
-
-  /* =======================================================================
-     server extension info
-     ======================================================================= */
-
-  Bool using_xidle_extension;     /* which extension is being used.         */
-  Bool using_mit_saver_extension;  /* Note that `p->use_*' is the *request*, */
-  Bool using_sgi_saver_extension;  /* and `si->using_*' is the *reality*.    */
-  Bool using_proc_interrupts;
-
-# ifdef HAVE_MIT_SAVER_EXTENSION
-  int mit_saver_ext_event_number;
-  int mit_saver_ext_error_number;
-# endif
-# ifdef HAVE_SGI_SAVER_EXTENSION
-  int sgi_saver_ext_event_number;
-  int sgi_saver_ext_error_number;
-# endif
-
-
-  /* =======================================================================
-     blanking
-     ======================================================================= */
-
-  Bool screen_blanked_p;       /* Whether the saver is currently active. */
-  Window mouse_grab_window;    /* Window holding our mouse grab */
-  Window keyboard_grab_window; /* Window holding our keyboard grab */
-  Bool fading_possible_p;      /* Whether fading to/from black is possible. */
-  Bool throttled_p;             /* Whether we should temporarily just blank
-                                   the screen, not run hacks. */
-
-
-  /* =======================================================================
-     locking and runtime privileges
-     ======================================================================= */
-
-  Bool locked_p;               /* Whether the screen is currently locked. */
-  Bool dbox_up_p;              /* Whether the demo-mode or passwd dialogs
-                                  are currently visible */
-
-  Bool locking_disabled_p;     /* Sometimes locking is impossible. */
-  char *nolock_reason;         /* This is why. */
-
-  char *orig_uid;              /* What uid/gid we had at startup, before
-                                  discarding privileges. */
-  char *uid_message;           /* Any diagnostics from our attempt to
-                                  discard privileges (printed only in
-                                  -verbose mode.) */
-  Bool dangerous_uid_p;                /* Set to true if we're running as a user id
-                                  which is known to not be a normal, non-
-                                  privileged user. */
-
-  Window passwd_dialog;                /* The password dialog, if its up. */
-  passwd_dialog_data *pw_data; /* Other info necessary to draw it. */
-
-  int unlock_failures;         /* Counts failed login attempts while the
-                                  screen is locked. */
-
-
-  /* =======================================================================
-     demoing
-     ======================================================================= */
-
-  Bool demoing_p;              /* Whether we are demoing a single hack
-                                  (without UI.) */
-
-  Window splash_dialog;                /* The splash dialog, if its up. */
-  splash_dialog_data *sp_data; /* Other info necessary to draw it. */
-
-
-  /* =======================================================================
-     timers
-     ======================================================================= */
-
-  XtIntervalId lock_id;                /* Timer to implement `prefs.lock_timeout' */
-  XtIntervalId cycle_id;       /* Timer to implement `prefs.cycle' */
-  XtIntervalId timer_id;       /* Timer to implement `prefs.timeout' */
-  XtIntervalId watchdog_id;    /* Timer to implement `prefs.watchdog */
-  XtIntervalId check_pointer_timer_id; /* `prefs.pointer_timeout' */
-
-  time_t last_activity_time;              /* Used only when no server exts. */
-  time_t last_wall_clock_time;             /* Used to detect laptop suspend. */
-  saver_screen_info *last_activity_screen;
-
-  Bool emergency_lock_p;        /* Set when the wall clock has jumped
-                                   (presumably due to laptop suspend) and we
-                                   need to lock down right away instead of
-                                   waiting for the lock timer to go off. */
-
-
-  /* =======================================================================
-     remote control
-     ======================================================================= */
-
-  int selection_mode;          /* Set to -1 if the NEXT ClientMessage has just
-                                  been received; set to -2 if PREV has just
-                                  been received; set to N if SELECT or DEMO N
-                                  has been received.  (This is kind of nasty.)
-                                */
-
-  /* =======================================================================
-     subprocs
-     ======================================================================= */
-
-  XtIntervalId stderr_popup_timer;
-
-};
-
-
-/* This structure holds all the data that applies to the screen-specific parts
-   of the display connection; if the display has multiple screens, there will
-   be one of these for each screen.
- */
-struct saver_screen_info {
-  saver_info *global;
-
-  Screen *screen;
-  Widget toplevel_shell;
-
-  /* =======================================================================
-     blanking
-     ======================================================================= */
-
-  Window screensaver_window;   /* The window that will impersonate the root,
-                                  when the screensaver activates.  Note that
-                                  the window stored here may change, as we
-                                  destroy and recreate it on different
-                                  visuals. */
-  Colormap cmap;               /* The colormap that goes with the window. */
-  Bool install_cmap_p;         /* Whether this screen should have its own
-                                   colormap installed, for whichever of several
-                                   reasons.  This is definitive (even a false
-                                   value here overrides prefs->install_cmap_p.)
-                                 */
-  Visual *current_visual;      /* The visual of the window. */
-  Visual *default_visual;      /* visual to use when none other specified */
-  int current_depth;           /* How deep the visual (and the window) are. */
-
-  Window real_vroot;           /* The original virtual-root window. */
-  Window real_vroot_value;     /* What was in the __SWM_VROOT property. */
-
-  Cursor cursor;               /* A blank cursor that goes with the
-                                  real root window. */
-  unsigned long black_pixel;   /* Black, allocated from `cmap'. */
-
-  int blank_vp_x, blank_vp_y;   /* Where the virtual-scrolling viewport was
-                                   when the screen went blank.  We need to
-                                   prevent the X server from letting the mouse
-                                   bump the edges to scroll while the screen
-                                   is locked, so we reset to this when it has
-                                   moved, and the lock dialog is up... */
-
-# ifdef HAVE_MIT_SAVER_EXTENSION
-  Window server_mit_saver_window;
-# endif
-
-
-  /* =======================================================================
-     demoing
-     ======================================================================= */
-
-  Colormap demo_cmap;          /* The colormap that goes with the dialogs:
-                                  this might be the same as `cmap' so care
-                                  must be taken not to free it while it's
-                                  still in use. */
-
-  /* =======================================================================
-     timers
-     ======================================================================= */
-
-  int poll_mouse_last_root_x;          /* Used only when no server exts. */
-  int poll_mouse_last_root_y;
-  Window poll_mouse_last_child;
-  unsigned int poll_mouse_last_mask;
-
-
-  /* =======================================================================
-     subprocs
-     ======================================================================= */
-
-  int current_hack;            /* Index into `prefs.screenhacks' */
-  pid_t pid;
-
-  int stderr_text_x;
-  int stderr_text_y;
-  int stderr_line_height;
-  XFontStruct *stderr_font;
-  GC stderr_gc;
-  Window stderr_overlay_window;    /* Used if the server has overlay planes */
-  Colormap stderr_cmap;
-};
-
-
-\f
-
-/* =======================================================================
-   server extensions and virtual roots
-   ======================================================================= */
-
-extern void restore_real_vroot (saver_info *si);
-extern void disable_builtin_screensaver (saver_info *, Bool unblank_screen_p);
-extern Bool ensure_no_screensaver_running (Display *, Screen *);
-
-#ifdef HAVE_MIT_SAVER_EXTENSION
-extern Bool query_mit_saver_extension (saver_info *);
-#endif
-#ifdef HAVE_SGI_SAVER_EXTENSION
-extern Bool query_sgi_saver_extension (saver_info *);
-#endif
-#ifdef HAVE_XIDLE_EXTENSION
-extern Bool query_xidle_extension (saver_info *);
-#endif
-#ifdef HAVE_PROC_INTERRUPTS
-extern Bool query_proc_interrupts_available (saver_info *, const char **why);
-#endif
-
-/* Display Power Management System (DPMS) interface. */
-extern Bool monitor_powered_on_p (saver_info *si);
-extern void monitor_power_on (saver_info *si);
-
-
-/* =======================================================================
-   blanking
-   ======================================================================= */
-
-extern void initialize_screensaver_window (saver_info *si);
-extern void raise_window (saver_info *si,
-                           Bool inhibit_fade, Bool between_hacks_p,
-                           Bool dont_clear);
-extern Bool blank_screen (saver_info *si);
-extern void unblank_screen (saver_info *si);
-
-extern void get_screen_viewport (saver_screen_info *ssi,
-                                 int *x_ret, int *y_ret,
-                                 int *w_ret, int *h_ret,
-                                 Bool verbose_p);
-
-
-/* =======================================================================
-   locking
-   ======================================================================= */
-
-#ifndef NO_LOCKING
-extern Bool unlock_p (saver_info *si);
-extern Bool lock_priv_init (int argc, char **argv, Bool verbose_p);
-extern Bool lock_init (int argc, char **argv, Bool verbose_p);
-extern Bool passwd_valid_p (const char *typed_passwd, Bool verbose_p);
-#endif /* NO_LOCKING */
-
-extern int move_mouse_grab (saver_info *si, Window to, Cursor cursor);
-
-
-/* =======================================================================
-   runtime privileges
-   ======================================================================= */
-
-extern void hack_uid (saver_info *si);
-extern void describe_uids (saver_info *si, FILE *out);
-
-/* =======================================================================
-   demoing
-   ======================================================================= */
-
-extern void draw_shaded_rectangle (Display *dpy, Window window,
-                                  int x, int y,
-                                  int width, int height,
-                                  int thickness,
-                                  unsigned long top_color,
-                                  unsigned long bottom_color);
-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);
-
-
-/* =======================================================================
-   timers
-   ======================================================================= */
-
-extern void start_notice_events_timer (saver_info *, Window, Bool verbose_p);
-extern void cycle_timer (XtPointer si, XtIntervalId *id);
-extern void activate_lock_timer (XtPointer si, XtIntervalId *id);
-extern void reset_watchdog_timer (saver_info *si, Bool on_p);
-extern void idle_timer (XtPointer si, XtIntervalId *id);
-extern void sleep_until_idle (saver_info *si, Bool until_idle_p);
-
-/* =======================================================================
-   remote control
-   ======================================================================= */
-
-extern Bool handle_clientmessage (saver_info *, XEvent *, Bool);
-extern void maybe_reload_init_file (saver_info *);
-
-/* =======================================================================
-   subprocs
-   ======================================================================= */
-
-extern void hack_environment (saver_info *si);
-extern void hack_subproc_environment (saver_screen_info *ssi);
-extern void init_sigchld (void);
-extern void spawn_screenhack (saver_info *si, Bool first_time_p);
-extern void kill_screenhack (saver_info *si);
-extern void suspend_screenhack (saver_info *si, Bool suspend_p);
-extern Bool screenhack_running_p (saver_info *si);
-extern void emergency_kill_subproc (saver_info *si);
-extern Bool select_visual (saver_screen_info *ssi, const char *visual_name);
-extern const char *signal_name (int signal);
-
-/* =======================================================================
-   subprocs diagnostics
-   ======================================================================= */
-
-extern FILE *real_stderr;
-extern FILE *real_stdout;
-extern void initialize_stderr (saver_info *si);
-extern void reset_stderr (saver_screen_info *ssi);
-extern void clear_stderr (saver_screen_info *ssi);
-
-
-/* =======================================================================
-   misc
-   ======================================================================= */
-
-extern const char *blurb (void);
-extern void save_argv (int argc, char **argv);
-extern void saver_exit (saver_info *si, int status, const char *core_reason);
-extern void restart_process (saver_info *si);
-
-extern int saver_ehandler (Display *dpy, XErrorEvent *error);
-extern int BadWindow_ehandler (Display *dpy, XErrorEvent *error);
-extern Bool window_exists_p (Display *dpy, Window window);
-extern char *timestring (void);
-extern Bool display_is_on_console_p (saver_info *si);
-
-extern Atom XA_VROOT, XA_XSETROOT_ID;
-extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_ID;
-extern Atom XA_SCREENSAVER_TIME;
-extern Atom XA_DEMO, XA_PREFS;
-
-#endif /* __XSCREENSAVER_H__ */
diff --git a/driver/xscreensaver.man b/driver/xscreensaver.man
deleted file mode 100644 (file)
index 36f3a8b..0000000
+++ /dev/null
@@ -1,1350 +0,0 @@
-.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 "10-May-99 (3.12)" "X Version 11"
-.SH NAME
-xscreensaver - graphics hack and screen locker, launched when the user is idle
-.SH SYNOPSIS
-.B xscreensaver
-[\-display \fIhost:display.screen\fP] \
-[\-timeout \fIint\fP] \
-[\-cycle \fIint\fP] \
-[\-lock\-mode] \
-[\-no\-lock\-mode] \
-[\-lock\-timeout \fIint\fP] \
-[\-visual \fIvisual\fP] \
-[\-install] \
-[\-no\-install] \
-[\-verbose] \
-[\-silent] \
-[\-timestamp] \
-[\-capture\-stderr] \
-[\-no\-capture\-stderr] \
-[\-splash] \
-[\-no\-splash] \
-[\-nice \fIint\fP] \
-[\-mit\-extension] \
-[\-no\-mit\-extension] \
-[\-sgi\-extension] \
-[\-no\-sgi\-extension] \
-[\-xidle\-extension] \
-[\-no\-xidle\-extension] \
-[\-proc\-interrupts] \
-[\-no\-proc\-interrupts] \
-[\-xrm \fIresources\fP]
-.SH DESCRIPTION
-The \fIxscreensaver\fP program waits until the keyboard and mouse have been 
-idle for a period, and then runs a graphics demo chosen at random.  It 
-turns off as soon as there is any mouse or keyboard activity.
-
-This program can lock your terminal in order to prevent others from using it,
-though its default mode of operation is merely to display pretty pictures on
-your screen when it is not in use.  
-
-The benefit that this program has over the combination of the
-.BR xlock (1)
-and
-.BR xautolock (1)
-programs is the ease with which new graphics hacks can be installed.  You
-don't need to recompile (or even re-run) this program to add a new display
-mode.
-.SH GETTING STARTED
-For the impatient, try this:
-.EX
-xscreensaver &
-xscreensaver-demo
-.EE
-The
-.BR xscreensaver-demo (1)
-program should pop up a dialog box that lets you experiment with the
-xscreensaver settings and graphics modes.
-
-.B Note:
-unlike
-.BR xlock (1),
-xscreensaver has a client-server model: the \fIxscreensaver\fP program is a
-daemon that runs in the background; it is controlled by the foreground
-.BR xscreensaver-demo (1)
-and
-.BR xscreensaver-command (1)
-programs.
-.SH CONFIGURATION
-Options to \fIxscreensaver\fP are specified in one of two places: in 
-a \fI.xscreensaver\fP file in your home directory; or in the X resource
-database.  If the \fI.xscreensaver\fP file exists, it overrides any settings
-in the resource database.  
-
-The syntax of the \fI.xscreensaver\fP file is similar to that of
-the \fI.Xdefaults\fP file; for example, to set the \fItimeout\fP paramter
-in the \fI.xscreensaver\fP file, you would write the following:
-.EX
-timeout: 5
-.EE
-whereas, in the \fI.Xdefaults\fP file, you would write
-.EX
-xscreensaver.timeout: 5
-.EE
-If you change a setting in the \fI.xscreensaver\fP file while xscreensaver
-is already running, it will notice this, and reload the file.  (The file will
-be reloaded the next time the screen saver needs to take some action, such as
-blanking or unblanking the screen, or picking a new graphics mode.)
-
-If you change a setting in your X resource database, or if you want
-xscreensaver to notice your changes immediately instead of the next time
-it wakes up, then you will need to tell the running xscreensaver process
-to re-initialize itself, like so:
-.EX
-xscreensaver-command -restart
-.EE
-Note that if you changed the \fI.Xdefaults\fP file, you might also need to run
-.BR xrdb (1):
-.EX
-xrdb < ~/.Xdefaults
-.EE
-If you want to set the system-wide defaults, then make your edits to
-the xscreensaver app-defaults file, which should have been installed
-when xscreensaver itself was installed.  The app-defaults file will
-usually be named /usr/lib/X11/app-defaults/XScreenSaver, but different
-systems might keep it in a different place (for example,
-/usr/openwin/lib/app-defaults/XScreenSaver on Solaris.)
-
-When settings are changed in the Preferences dialog box (see above)
-the current settings will be written to the \fI.xscreensaver\fP file.
-(The \fI.Xdefaults\fP file and the app-defaults file will never be
-written by xscreensaver itself.)
-.PP
-.TP 8
-.B timeout\fP (class \fBTime\fP)
-The screensaver will activate (blank the screen) after the keyboard and
-mouse have been idle for this many minutes.  Default 10 minutes.
-.TP 8
-.B cycle\fP (class \fBTime\fP)
-After the screensaver has been running for this many minutes, the currently
-running graphics-hack sub-process will be killed (with \fBSIGTERM\fP), and a
-new one started.  If this is 0, then the graphics hack will never be changed:
-only one demo will run until the screensaver is deactivated by user activity.
-Default 10 minutes.
-.TP 8
-.B lock\fP (class \fBBoolean\fP)
-Enable locking: before the screensaver will turn off, it will require you 
-to type the password of the logged-in user (really, the person who ran
-xscreensaver), or the root password.  (\fBNote:\fP this doesn't work if the
-screensaver is launched by
-.BR xdm (1)
-because it can't know the user-id of the logged-in user.  See 
-the ``\fIUsing XDM(1)\fP'' section, below.
-.TP 8
-.B lockTimeout\fP (class \fBTime\fP)
-If locking is enabled, this controls the length of the ``grace period''
-between when the screensaver activates, and when the screen becomes locked.
-For example, if this is 5, and \fI\-timeout\fP is 10, 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, \fI\-lock\-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 8
-.B passwdTimeout\fP (class \fBTime\fP)
-If the screen is locked, then this is how many seconds the password dialog box
-should be left on the screen before giving up (default 30 seconds.)  This
-should not be too large: the X server is grabbed for the duration that the
-password dialog box is up (for security purposes) and leaving the server 
-grabbed for too long can cause problems.
-.TP 8
-.B visualID\fP (class \fBVisualID\fP)
-Specify which X visual to use by default.  (Note carefully that this resource
-is called \fBvisualID\fP, not merely \fBvisual\fP; if you set the \fBvisual\fP
-resource instead, things will malfunction in obscure ways for obscure reasons.)
-
-Legal values for the \fBVisualID\fP resource are:
-.RS 8
-.TP 8
-.B default
-Use the screen's default visual (the visual of the root window.)  
-This is the default.
-.TP 8
-.B best
-Use the visual which supports the most colors.  Note, however, that the
-visual with the most colors might be a TrueColor visual, which does not
-support colormap animation.  Some programs have more interesting behavior
-when run on PseudoColor visuals than on TrueColor.
-.TP 8
-.B mono
-Use a monochrome visual, if there is one.
-.TP 8
-.B gray
-Use a grayscale or staticgray visual, if there is one and it has more than
-one plane (that is, it's not monochrome.)
-.TP 8
-.B color
-Use the best of the color visuals, if there are any.
-.TP 8
-.B GL
-Use the visual that is best for OpenGL programs.  (OpenGL programs have
-somewhat different requirements than other X programs.)
-.TP 8
-.I class
-where \fIclass\fP is one of \fBStaticGray\fP, \fBStaticColor\fP, 
-\fBTrueColor\fP, \fBGrayScale\fP, \fBPseudoColor\fP, or \fBDirectColor\fP.
-Selects the deepest visual of the given class.
-.TP 8
-.I number
-where \fInumber\fP (decimal or hex) is interpreted as a visual id number, 
-as reported by the
-.BR xdpyinfo (1)
-program; in this way you can have finer control over exactly which visual
-gets used, for example, to select a shallower one than would otherwise
-have been chosen.
-
-.RE
-.RS 8
-Note that this option specifies only the \fIdefault\fP visual that will
-be used: the visual used may be overridden on a program-by-program basis.
-See the description of the \fBprograms\fP resource, below.
-.RE
-.TP 8
-.B installColormap\fP (class \fBBoolean\fP)
-Install a private colormap while the screensaver is active, so that the
-graphics hacks can get as many colors as possible.  This is the 
-default.  (This only 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-hack basis: see the discussion of
-the \fBdefault\-n\fP name in the section about the \fBprograms\fP resource.
-.TP 8
-.B verbose\fP (class \fBBoolean\fP)
-Whether to print diagnostics.  Default false.
-.TP 8
-.B timestamp\fP (class \fBBoolean\fP)
-Whether to print the time of day along with any other diagnostic messages.
-Default false.
-.TP 8
-.B splash\fP (class \fBBoolean\fP)
-Whether to display a splash screen at startup.  Default true.
-.TP 8
-.B splashDuration\fP (class \fBTime\fP)
-How long the splash screen should remain visible; default 5 seconds.
-.TP 8
-.B helpURL\fP (class \fBURL\fP)
-The splash screen has a \fIHelp\fP button on it.  When you press it, it will
-display the web page indicated here in your web browser.
-.TP 8
-.B loadURL\fP (class \fBLoadURL\fP)
-This is the shell command used to load a URL into your web browser.
-The default setting will load it into Netscape if it is already running,
-otherwise, will launch a new Netscape looking at the \fIhelpURL\fP.
-.TP 8
-.B demoCommand\fP (class \fBDemoCommand\fP)
-This is the shell command run when the \fIDemo\fP button on the splash window
-is pressed.  It defaults to \fIxscreensaver\-demo\fP.
-.TP 8
-.B prefsCommand\fP (class \fBPrefsCommand\fP)
-This is the shell command run when the \fIPrefs\fP button on the splash window
-is pressed.  It defaults to \fIxscreensaver\-demo\ \-prefs\fP.
-.TP 8
-.B nice\fP (class \fBNice\fP)
-The sub-processes created by \fIxscreensaver\fP will be ``niced'' to this
-level, so that they are given lower priority than other processes on the
-system, and don't increase the load unnecessarily.  The default is 10.  
-
-(Higher numbers mean lower priority; see 
-.BR nice (1)
-for details.)
-.TP 8
-.B fade\fP (class \fBBoolean\fP)
-If this is true, 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\fP timer expires.)
-Default: true.  
-.TP 8
-.B unfade\fP (class \fBBoolean\fP)
-If this is true, 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 colormaps, and if \fIfade\fP is true
-as well.  Default false.
-.TP 8
-.B fadeSeconds\fP (class \fBTime\fP)
-If \fIfade\fP is true, this is how long the fade will be in 
-seconds (default 3 seconds.)
-.TP 8
-.B fadeTicks\fP (class \fBInteger\fP)
-If \fIfade\fP is true, this is 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 \fIfadeSeconds\fP if
-your server isn't fast enough to keep up.  Default 20.
-.TP 8
-.B captureStderr\fP (class \fBBoolean\fP)
-Whether \fIxscreensaver\fP should redirect its stdout and stderr streams to
-the window itself.  Since its nature is to take over the screen, you would not
-normally see error messages generated by xscreensaver or the sub-programs it
-runs; this resource will cause the output of all relevant programs to be
-drawn on the screensaver window itself, as well as being written to the
-controlling terminal of the screensaver driver process.  Default true.
-.TP 8
-.B font\fP (class \fBFont\fP)
-The font used for the stdout/stderr text, if \fBcaptureStderr\fP is true.
-Default \fB*\-medium\-r\-*\-140\-*\-m\-*\fP (a 14 point fixed-width font.)
-.TP 8
-.B programs\fP (class \fBPrograms\fP)
-The graphics hacks which \fIxscreensaver\fP runs when the user is idle.
-The value of this resource is a string, one \fIsh\fP-syntax command per line.  
-Each line must contain exactly one command: no semicolons, no ampersands.
-
-When the screensaver starts up, one of these is selected at random, and
-run.  After the \fIcycle\fP period expires, it is killed, and another
-is selected and run.
-
-If the value of this resource is empty, then no programs will be run; the
-screen will simply be made black.
-
-If the display has multiple screens, then a different program will be run
-for each screen.  (All screens are blanked and unblanked simultaniously.)
-
-Note that you must escape the newlines; here is an example of how you
-might set this in your \fI~/.xscreensaver\fP file:
-
-.RS 8
-.EX
-programs:  \\
-       qix -root                          \\n\\
-       ico -r -faces -sleep 1 -obj ico    \\n\\
-       xdaliclock -builtin2 -root         \\n\\
-       xv -root -rmode 5 image.gif -quit  \\n
-.EE
-.RE
-.RS 8
-Make sure your \fB$PATH\fP environment variable is set up correctly
-\fIbefore\fP xscreensaver is launched, or it won't be able to find the
-programs listed in the \fIprograms\fP resource.
-
-To use a program as a screensaver, two things are required: that that
-program draw on the root window (or be able to be configured to draw on
-the root window); and that that program understand ``virtual root''
-windows, as used by virtual window managers such as
-.BR tvtwm (1).
-(Generally, this is accomplished by just including the \fI"vroot.h"\fP 
-header file in the program's source.)
-
-If there are some programs that you want to run only when using a color
-display, and others that you want to run only when using a monochrome
-display, you can specify that like this:
-.EX
-       mono:   mono-program  -root        \\n\\
-       color:  color-program -root        \\n\\
-.EE
-.RE
-.RS 8
-More generally, you can specify the kind of visual that should be used for
-the window on which the program will be drawing.  For example, if one 
-program works best if it has a colormap, but another works best if it has
-a 24-bit visual, both can be accommodated:
-.EX
-       PseudoColor: cmap-program  -root   \\n\\
-       TrueColor:   24bit-program -root   \\n\\
-.EE
-.RE
-.RS 8
-In addition to the symbolic visual names described above (in the discussion
-of the \fIvisualID\fP resource) one other visual name is supported in
-the \fIprograms\fP list:
-.RS 1
-.TP 4
-.B default-n
-This is like \fBdefault\fP, but also requests the use of the default colormap,
-instead of a private colormap.  (That is, it behaves as if 
-the \fI\-no\-install\fP command-line option was specified, but only for
-this particular hack.)  This is provided because some third-party programs
-that draw on the root window (notably: 
-.BR xv (1),
-and
-.BR xearth (1))
-make assumptions about the visual and colormap of the root window: 
-assumptions which xscreensaver can violate.
-
-.RE
-If you specify a particular visual for a program, and that visual does not
-exist on the screen, then that program will not be chosen to run.  This
-means that on displays with multiple screens of different depths, you can
-arrange for appropriate hacks to be run on each.  For example, if one screen
-is color and the other is monochrome, hacks that look good in mono can be 
-run on one, and hacks that only look good in color will show up on the other.
-.RE
-.PP
-.PP
-Normally you won't need to change the following resources:
-.PP
-.TP 8
-.B pointerPollTime\fP (class \fBTime\fP)
-When server extensions are not in use, this controls how 
-frequently \fIxscreensaver\fP checks to see if the mouse position or buttons
-have changed.  Default 5 seconds.
-.TP 8
-.B windowCreationTimeout\fP (class \fBTime\fP)
-When server extensions are not in use, this controls the delay between when 
-windows are created and when \fIxscreensaver\fP selects events on them.
-Default 30 seconds.
-.TP 8
-.B initialDelay\fP (class \fBTime\fP)
-When server extensions are not in use, \fIxscreensaver\fP will wait this many
-seconds before selecting events on existing windows, under the assumption that 
-\fIxscreensaver\fP is started during your login procedure, and the window 
-state may be in flux.  Default 0.  (This used to default to 30, but that was
-back in the days when slow machines and X terminals were more common...)
-.TP 8
-.B sgiSaverExtension\fP (class \fBBoolean\fP)
-There are a number of different X server extensions which can make
-xscreensaver's job easier.  The next few resources specify whether these
-extensions should be utilized if they are available.
-
-This resource controls whether the SGI \fBSCREEN_SAVER\fP server extension
-will be used to decide whether the user is idle.  This is the default 
-if \fIxscreensaver\fP has been compiled with support for this 
-extension (which is the default on SGI systems.).  If it is available, 
-the \fBSCREEN_SAVER\fP method is faster and more reliable than what will
-be done otherwise, so use it if you can.  (This extension is only available
-on Silicon Graphics systems, unfortunately.)
-.TP 8
-.B mitSaverExtension\fP (class \fBBoolean\fP)
-This resource controls whether the \fBMIT\-SCREEN\-SAVER\fP server extension
-will be used to decide whether the user is idle.  However, the default for
-this resource is \fIfalse\fP, because even if this extension is available,
-it is flaky (and it also makes the \fBfade\fP option not work properly.)
-Use of this extension is not recommended.
-.TP 8
-.B xidleExtension\fP (class \fBBoolean\fP)
-This resource controls whether the \fBXIDLE\fP server extension will be
-used to decide whether the user is idle.  This is the default 
-if \fIxscreensaver\fP has been compiled with support for this extension.
-(This extension is only available for X11R4 and X11R5 systems, unfortunately.)
-.TP 8
-.B procInterrupts\fP (class \fBBoolean\fP)
-This resource controls whether the \fB/proc/interrupts\fP file should be
-consulted to decide whether the user is idle.  This is the default
-if \fIxscreensaver\fP has been compiled on a system which supports this
-mechanism (i.e., Linux systems.)  
-
-The benefit to doing this is that \fIxscreensaver\fP can note that the user
-is active even when the X console is not the active one: if the user is 
-typing in another virtual console, xscreensaver will notice that and will
-fail to activate.  For example, if you're playing Quake in VGA-mode, 
-xscreensaver won't wake up in the middle of your game and start competing 
-for CPU.
-
-The drawback to doing this is that perhaps you \fIreally do\fP want idleness
-on the X console to cause the X display to lock, even if there is activity
-on other virtual consoles.  If you want that, then set this option to False.
-(Or just lock the X console manually.)
-
-The default value for this resource is True, on systems where it works.
-.TP 8
-.B overlayStderr\fP (class \fBBoolean\fP)
-If \fBcaptureStderr\fP is True, and your server supports ``overlay'' visuals,
-then the text will be written into one of the higher layers instead of into
-the same layer as the running screenhack.  Set this to False to disable 
-that (though you shouldn't need to.)
-.TP 8
-.B overlayTextForeground\fP (class \fBForeground\fP)
-The foreground color used for the stdout/stderr text, if \fBcaptureStderr\fP
-is true.  Default: Yellow.
-.TP 8
-.B overlayTextBackground\fP (class \fBBackground\fP)
-The background color used for the stdout/stderr text, if \fBcaptureStderr\fP
-is true.  Default: Black.
-.TP 8
-.B bourneShell\fP (class \fBBourneShell\fP)
-The pathname of the shell that \fIxscreensaver\fP uses to start subprocesses.
-This must be whatever your local variant of \fB/bin/sh\fP is: in particular,
-it must not be \fBcsh\fP.
-.SH COMMAND-LINE OPTIONS
-.I xscreensaver
-also accepts the following command line options.  Except for 
-the \fI\-display\fP option, these command-line options are all 
-simply shorthand for the X resources described in 
-the \fIConfiguration\fP section, above.
-.TP 8
-.B \-display \fIhost:display.screen\fP
-The X display to use.  For displays with multiple screens, XScreenSaver 
-will manage all screens on the display simultaniously; the \fIscreen\fP 
-argument (the ``default'' screen) says which screen should be used for
-dialog boxes (the password window, \fIDemo Mode\fP, etc.)
-.TP 8
-.B \-timeout \fIminutes\fP
-Same as the \fItimeout\fP resource.
-.TP 8
-.B \-cycle \fIminutes\fP
-Same as the \fIcycle\fP resource.
-.TP 8
-.B \-lock\-mode
-Same as setting the \fIlock\fP resource to \fItrue\fP.
-.TP 8
-.B \-no\-lock\-mode
-Same as setting the \fIlock\fP resource to \fIfalse\fP.
-.TP 8
-.B \-lock\-timeout \fIminutes\fP
-Same as the \fIlockTimeout\fP resource.
-.TP 8
-.B \-visual \fIvisual\fP
-Same as the \fIvisualID\fP resource.
-.TP 8
-.B \-install
-Same as setting the \fIinstallColormap\fP resource to \fItrue\fP.
-.TP 8
-.B \-no\-install
-Same as setting the \fIinstallColormap\fP resource to \fIfalse\fP.
-.TP 8
-.B \-verbose
-Same as setting the \fIverbose\fP resource to \fItrue\fP.
-.TP 8
-.B \-silent
-Same as setting the \fIverbose\fP resource to \fIfalse\fP.
-.TP 8
-.B \-timestamp
-Same as setting the \fItimestamp\fP resource to \fItrue\fP.
-.TP 8
-.B \-capture\-stderr
-Same as setting the \fIcaptureStderr\fP resource to \fItrue\fP.
-.TP 8
-.B \-no\-capture\-stderr
-Same as setting the \fIcaptureStderr\fP resource to \fIfalse\fP.
-.TP 8
-.B \-splash
-Same as setting the \fIsplash\fP resource to \fItrue\fP.
-.TP 8
-.B \-no\-splash
-Same as setting the \fIsplash\fP resource to \fIfalse\fP.
-.TP 8
-.B \-nice \fIinteger\fP
-Same as the \fInice\fP resource.
-.TP 8
-.B \-sgi\-extension
-Same as setting the \fIsgiSaverExtension\fP resource to \fItrue\fP.
-.TP 8
-.B \-no\-sgi\-extension
-Same as setting the \fIsgiSaverExtension\fP resource to \fIfalse\fP.
-.TP 8
-.B \-mit\-extension
-Same as setting the \fImitSaverExtension\fP resource to \fItrue\fP.
-.TP 8
-.B \-no\-mit\-extension
-Same as setting the \fImitSaverExtension\fP resource to \fIfalse\fP.
-.TP 8
-.B \-xidle\-extension
-Same as setting the \fIxidleExtension\fP resource to \fItrue\fP.
-.TP 8
-.B \-no\-xidle\-extension
-Same as setting the \fIxidleExtension\fP resource to \fIfalse\fP.
-.TP 8
-.B \-proc\-interrupts
-Same as setting the \fIprocInterrupts\fP resource to \fItrue\fP.
-.TP 8
-.B \-no\-proc\-interrupts
-Same as setting the \fIprocInterrupts\fP resource to \fIfalse\fP.
-.TP 8
-.B \-xrm \fIresource-specification\fP
-As with all other Xt programs, you can specify X resources on the command-line
-using the \fI\-xrm\fP argument.  Most of the interesting resources have 
-command-line equivalents, however.
-.SH HOW IT WORKS
-When it is time to activate the screensaver, a full-screen black window is
-created on each screen of the display.  Each window is created in such a way
-that, to any subsequently-created programs, it will appear to be a ``virtual
-root'' window.  Because of this, any program which draws on the root 
-window (and which understands virtual roots) can be used as a screensaver.
-
-When the user becomes active again, the screensaver windows are unmapped, and
-the running subprocesses are killed by sending them \fBSIGTERM\fP.  This is 
-also how the subprocesses are killed when the screensaver decides that it's
-time to run a different demo: the old one is killed and a new one is launched.
-
-Before launching a subprocess, \fIxscreensaver\fP stores an appropriate value
-for \fB$DISPLAY\fP in the environment that the child will recieve.  (This is
-so that if you start \fIxscreensaver\fP with a \fI-display\fP argument, the
-programs which \fIxscreensaver\fP launches will draw on the same display;
-and so that the child will end up drawing on the appropriate screen of a
-multi-headed display.)
-
-When the screensaver turns off, or is killed, care is taken to restore 
-the ``real'' virtual root window if there is one.  Because of this, it is
-important that you not kill the screensaver process with \fIkill -9\fP if
-you are running a virtual-root window manager.  If you kill it with \-9,
-you may need to restart your window manager to repair the damage.  This
-isn't an issue if you aren't running a virtual-root window manager.
-
-For all the gory details, see the commentary at the top of xscreensaver.c.
-
-You can control a running screensaver process by using the
-.BR xscreensaver\-command (1)
-program (which see.)
-.SH POWER MANAGEMENT
-Modern X servers contain support to power down the monitor after an idle
-period.  If the monitor has powered down, then \fIxscreensaver\fP will
-notice this, and will not waste CPU by drawing graphics demos on a black
-screen.  An attempt will also be made to explicitly power the monitor
-back up as soon as user activity is detected.
-
-If your X server supports power management, then
-.BR xset (1)
-will accept a \fBdpms\fP option.  So, if you wanted \fIxscreensaver\fP
-to activate after 5 minutes, but you wanted your monitor to power down
-after one hour (3600 seconds) you would do this:
-.EX
-xset dpms 3600
-.EE
-See the man page for the
-.BR xset (1)
-program for details.  (Note that power management requires both software
-support in the X server, and hardware support in the monitor itself.)
-.SH USING XDM(1)
-You can run \fIxscreensaver\fP from your 
-.BR xdm (1)
-session, so that the screensaver will run even when nobody is logged 
-in on the console.
-
-The trick to using xscreensaver with \fIxdm\fP is this: keep in mind the 
-two very different states in which xscreensaver will be running:
-.RS 4
-.TP 3
-.B 1: Nobody logged in.
-
-If you're thinking of running xscreensaver from XDM at all, then it's 
-probably because you want graphics demos to be running on the console
-when nobody is logged in there.  In this case, xscreensaver will function
-only as a screen saver, not a screen locker: it doesn't make sense
-for xscreensaver to lock the screen, since nobody is logged in yet!
-The only thing on the screen is the XDM login prompt.
-.TP 3
-.B 2: Somebody logged in.
-
-Once someone has logged in through the XDM login window, the situation is
-very different.  For example: now it makes sense to lock the screen (and
-prompt for the logged in user's password); and now xscreensaver should
-consult that user's \fI~/.xscreensaver\fP file; and so on.
-.RE
-
-The difference between these two states comes down to a question of,
-which user is the \fIxscreensaver\fP process running as?  For the first
-state, it doesn't matter.  If you start \fIxscreensaver\fP in the usual
-XDM way, then xscreensaver will probably end up running as root, which 
-is fine for the first case (the ``nobody logged in'' case.)
-
-However, once someone is logged in, running as root is no longer fine:
-because xscreensaver will be consulting root's \fI.xscreensaver\fP file
-instead of that of the logged in user, and won't be prompting for the
-logged in user's password, and so on.  (This is not a security problem,
-it's just not what you want.)
-
-So, once someone has logged in, you want xscreensaver to be running as that
-user.  The way to accomplish this is to kill the old xscreensaver process
-and start a new one (as the new user.)
-
-The simplest way to accomplish all of this is as follows:
-.RS 4
-.TP 3
-.B 1: Launch xscreensaver before anyone logs in.
-
-To the file \fI/usr/lib/X11/xdm/Xsetup\fP, add the lines
-.EX
-xscreensaver-command -exit
-xscreensaver &
-.EE
-This will run xscreensaver as root, over the XDM login window.
-Moving the mouse will cause the screen to un-blank, and allow the user
-to type their password at XDM to log in.
-.TP 3
-.B 2: Restart xscreensaver when someone logs in.
-
-Near the top of the file \fI/usr/lib/X11/xdm/Xsession\fP, add those same lines:
-.EX
-xscreensaver-command -exit
-xscreensaver &
-.EE
-When someone logs in, this will kill off the existing (root) xscreensaver
-process, and start a new one, running as the user who has just logged in.
-If the user's .xscreensaver file requests locking, they'll get it.  They
-will also get their own choice of timeouts, and graphics demos, and so on.
-
-Alternately, each user could just put those lines in their 
-personal \fI~/.xsession\fP files.
-.RE
-
-Make sure you have \fB$PATH\fP set up correctly in the \fIXsetup\fP 
-and \fIXsession\fP scripts, or \fIxdm\fP won't be able to 
-find \fIxscreensaver\fP, and/or \fIxscreensaver\fP won't be able to 
-find its graphics demos.
-
-(If your system does not seem to be executing the \fIXsetup\fP file, you
-may need to configure it to do so: the traditional way to do this is
-to make that file the value of the \fIDisplayManager*setup\fP resource
-in the \fI/usr/lib/X11/xdm/xdm-config\fP file.  See the man page for
-.BR xdm (1)
-for more details.)
-
-It is safe to run \fIxscreensaver\fP as root (as \fIxdm\fP is likely to do.)  
-If run as root, \fIxscreensaver\fP changes its effective user and group ids 
-to something safe (like \fI"nobody"\fP) before connecting to the X server
-or launching user-specified programs.
-
-An unfortunate side effect of this (important) security precaution is that
-it may conflict with cookie-based authentication.
-
-If you get "connection refused" errors when running \fIxscreensaver\fP
-from \fIxdm\fP, then this probably means that you have
-.BR xauth (1)
-or some other security mechanism turned on.  One way around this is to
-add \fB"xhost\ +localhost"\fP to \fIXsetup\fP, just before \fIxscreensaver\fP
-is launched.  
-
-Note that this will give access to the X server to anyone capable of logging
-in to the local machine, so in some environments, this might not be 
-appropriate.  If turning off file-system-based access control is not
-acceptable, then running \fIxscreensaver\fP from the \fIXsetup\fP file
-might not be possible, and xscreensaver will only work when running as
-a normal, unprivileged user.
-
-For more information on the X server's access control mechanisms, see the
-man pages for
-.BR X (1),
-.BR Xsecurity (1),
-.BR xauth (1),
-and
-.BR xhost (1).
-.SH USING CDE (COMMON DESKTOP ENVIRONMENT)
-The easiest way to use \fIxscreensaver\fP on a system with CDE is to simply
-switch off the built-in CDE screensaver, and use \fIxscreensaver\fP instead;
-and second, to tell the front panel to run 
-.BR xscreensaver\-command (1)
-with the \fI\-lock\fP option when the \fILock\fP icon is clicked.
-
-To accomplish this involves five steps:
-.RS 4
-.TP 3
-\fB1: Switch off CDE's locker\fP
-Do this by turning off ``\fIScreen Saver and Screen Lock\fP'' in the
-Screen section of the Style Manager.
-.TP 3
-\fB2: Edit sessionetc\fP
-Edit the file \fI~/.dt/sessions/sessionetc\fP and add to it the line
-.EX
-xscreensaver &
-.EE
-This will cause \fIxscreensaver\fP to be launched when you log in.
-(As always, make sure that xscreensaver and the graphics demos are on
-your \fB$PATH\fP; the path needs to be set in \fI.cshrc\fP 
-and/or \fI.dtprofile\fP, not \fI.login\fP.)
-.TP 3
-\fB3: Create XScreenSaver.dt\fP
-Create a file called \fI~/.dt/types/XScreenSaver.dt\fP with the following
-contents:
-.EX
-ACTION XScreenSaver
-{
-  LABEL         XScreenSaver
-  TYPE          COMMAND
-  EXEC_STRING   xscreensaver-command -lock
-  ICON          Dtkey
-  WINDOW_TYPE   NO_STDIO
-}
-.EE
-This defines a ``lock'' command for the CDE front panel, that knows how
-to talk to \fIxscreensaver\fP.
-.TP 3
-\fB4: Create Lock.fp\fP
-Create a file called \fI~/.dt/types/Lock.fp\fP with the following
-contents:
-.EX
-CONTROL Lock
-{
-  TYPE             icon
-  CONTAINER_NAME   Switch
-  CONTAINER_TYPE   SWITCH
-  POSITION_HINTS   1
-  ICON             Fplock
-  LABEL            Lock
-  PUSH_ACTION      XScreenSaver
-  HELP_TOPIC       FPOnItemLock
-  HELP_VOLUME      FPanel
-}
-.EE
-This associates the CDE front panel ``Lock'' icon with the lock command
-we just defined in step 3.
-.TP 3
-\fB5: Restart\fP
-Select ``\fIRestart Workspace Manager\fP'' from the popup menu to make
-your changes take effect.  If things seem not to be working, check the
-file \fI~/.dt/errorlog\fP for error messages.
-.RE
-.SH USING HP VUE (VISUAL USER ENVIRONMENT)
-Since CDE is a descendant of VUE, the instructions for using xscreensaver
-under VUE are similar to the above:
-.RS 4
-.TP 3
-\fB1: Switch off VUE's locker\fP
-Open the ``\fIStyle Manager\fP'' and select ``\fIScreen\fP.''
-Turn off ``\fIScreen Saver and Screen Lock\fP'' option.
-.TP 3
-\fB2: Make sure you have a Session\fP
-Next, go to the Style Manager's, ``\fIStartup\fP'' page.
-Click on ``\fISet Home Session\fP'' to create a session, then 
-on ``\fIReturn to Home Session\fP'' to select this session each
-time you log in.
-.TP 3
-\fB3: Edit vue.session\fP
-Edit the file \fI~/.vue/sessions/home/vue.session\fP and add to it
-the line
-.EX
-vuesmcmd -screen 0 -cmd "xscreensaver"
-.EE
-This will cause \fIxscreensaver\fP to be launched when you log in.
-(As always, make sure that xscreensaver and the graphics demos are on
-your \fB$PATH\fP; the path needs to be set in \fI.cshrc\fP
-and/or \fI.profile\fP, not \fI.login\fP.)
-.TP 3
-\fB3: Edit vuewmrc\fP
-Edit the file \fI~/.vue/vuewmrc\fP and add (or change) the Lock control:
-.EX
-CONTROL Lock
-{
-  TYPE         button
-  IMAGE        lock
-  PUSH_ACTION  f.exec "xscreensaver-command -lock"
-  HELP_TOPIC   FPLock
-}
-.EE
-This associates the VUE front panel ``Lock'' icon with the xscreensaver 
-lock command.
-.RE
-.PP
-.SH ADDING TO MENUS
-The
-.BR xscreensaver-command (1)
-program is a perfect candidate for something to add to your window manager's
-popup menus.  If you use 
-.BR mwm (1),
-.BR 4Dwm (1),
-.BR twm (1),
-or (probably) any of \fItwm\fP's many descendants, you can do it like this:
-.RS 0
-.TP 3
-\fB1. Create ~/.mwmrc (or ~/.twmrc or ...)\fP
-If you don't have a \fI~/.mwmrc\fP file (or, on SGIs, a \fI~/.4Dwmrc\fP file;
-or, with twm, a \fI~/.twmrc\fP file) then create one by making a copy of
-the \fI/usr/lib/X11/system.mwmrc\fP 
-file (or \fI/usr/lib/X11/twm/system.twmrc\fP, and so on.)
-.TP 3
-\fB2. Add a menu definition.\fP
-Something like this:
-.EX
-menu XScreenSaver
-{
- "Blank Screen Now" !"sleep 3; xscreensaver-command -activate"
- "Lock Screen Now"  !"sleep 3; xscreensaver-command -lock"
- "Screen Saver Demo"         !"xscreensaver-demo"
- "Screen Saver Preferences"  !"xscreensaver-demo -prefs"
- "Reinitialize Screen Saver" !"xscreensaver-command -restart"
- "Kill Screen Saver"         !"xscreensaver-command -exit"
- "Launch Screen Saver"       !"xscreensaver &"
-}
-.EE
-.TP 3
-\fB3. Add the menu\fP
-For
-.BR mwm (1)
-and
-.BR 4Dwm (1),
-find the section of the file that says \fIMenu DefaultRootMenu\fP.
-For
-.BR twm (1),
-it will probably be \fImenu "defops"\fP.  If you add a line somewhere 
-in that menu definition that reads
-.EX
-  "XScreenSaver"        f.menu XScreenSaver
-.EE
-then this will add an XScreenSaver sub-menu to your default root-window
-popup menu.  Alternately, you could just put the xscreensaver menu items
-directly into the root menu.
-.RE
-
-Other window managers are guaranteed to do things gratuitously differently.
-.SH BUGS
-Bugs?  There are no bugs.  Ok, well, maybe.  If you find one, please let
-me know.  http://www.jwz.org/xscreensaver/bugs.html explains how to
-construct the most useful bug reports.
-.TP 8
-.B Locking and XDM
-If xscreensaver has been launched from 
-.BR xdm (1)
-before anyone has logged in, you will need to kill and then restart the
-xscreensaver daemon after you have logged in, or you will be confused by
-the results.  (For example, locking won't work, and your \fI~/.xscreensaver\fP
-file will be ignored.)
-
-When you are logged in, you want the \fIxscreensaver\fP daemon to be 
-running under \fIyour\fP user id, not as root or some other user.
-
-If it has already been started by \fIxdm\fP, you can kill it by sending
-it the \fBexit\fP command, and then re-launching it as you, by putting
-something like the following in your personal X startup script:
-.EX
-xscreensaver-command -exit
-xscreensaver &
-.EE
-The ``\fIUsing XDM(1)\fP'' section, above, goes into more detail, and explains
-how to configure the system to do this for all users automatically.
-.TP 8
-.B Locking and root logins
-In order for it to be safe for xscreensaver to be launched by \fIxdm\fP,
-certain precautions had to be taken, among them that xscreensaver never
-runs as \fIroot\fP.  In particular, if it is launched as root (as \fIxdm\fP
-is likely to do), xscreensaver will disavow its privileges, and switch 
-itself to a safe user id (such as \fInobody\fP.)
-
-An implication of this is that if you log in as \fIroot\fP on the console, 
-xscreensaver will refuse to lock the screen (because it can't tell
-the difference between \fIroot\fP being logged in on the console, and a
-normal user being logged in on the console but xscreensaver having been 
-launched by the
-.BR xdm (1)
-.I Xsetup
-file.)
-
-The solution to this is simple: you shouldn't be logging in on the console
-as \fIroot\fP in the first place!  (What, are you crazy or something?)  
-
-Proper Unix hygiene dictates that you should log in as yourself, and
-.BR su (1)
-to \fIroot\fP as necessary.  People who spend their day logged in
-as \fIroot\fP are just begging for disaster.
-.TP 8
-.B XAUTH and XDM
-For xscreensaver to work when launched by
-.BR xdm (1),
-programs running on the local machine as user \fI"nobody"\fP must be
-able to connect to the X server.  This means that if you want to run
-xscreensaver on the console while nobody is logged in, you may need
-to disable cookie-based access control (and allow all users who can log
-in to the local machine to connect to the display.)  
-
-You should be sure that this is an acceptable thing to do in your
-environment before doing it.  See the ``\fIUsing XDM(1)\fP'' section, 
-above, for more details.
-
-If anyone has suggestions on how xscreensaver could be made to work with
-.BR xdm (1)
-without first turning off \fI.Xauthority\fP-based access control, please
-let me know.
-.TP 8
-.B Passwords
-If you get an error message at startup like ``couldn't get password
-of \fIuser\fP'' then this probably means that you're on a system in which 
-the
-.BR getpwent (3)
-library routine can only be effectively used by root.  If this is the case, 
-then \fIxscreensaver\fP must be installed as setuid to root in order for
-locking to work.  Care has been taken to make this a safe thing to do.  
-
-It also may mean that your system uses shadow passwords instead of the standard
-.BR getpwent (3)
-interface; in that case, you may need to change some options 
-with \fIconfigure\fP and recompile.
-
-If you change your password after xscreensaver has been launched, it will
-continue using your old password to unlock the screen until xscreensaver
-is restarted.  So, after you change your password, you'll have to do
-.EX
-xscreensaver-command -restart
-.EE
-to make \fIxscreensaver\fP notice.
-.TP 8
-.B PAM Passwords
-If your system uses PAM (Pluggable Authentication Modules), then in order
-for xscreensaver to use PAM properly, PAM must be told about xscreensaver.
-The xscreensaver installation process should update the PAM data (on Linux,
-by creating the file \fI/etc/pam.d/xscreensaver\fP for you, and on Solaris, 
-by telling you what lines to add to the \fI/etc/pam.conf\fP file.)  
-
-If the PAM configuration files do not know about xscreensaver, then 
-you \fImight\fP be in a situation where xscreensaver will refuse to ever
-unlock the screen.
-
-This is a design flaw in PAM (there is no way for a client to tell the
-difference between PAM responding ``I have never heard of your module,''
-and responding, ``you typed the wrong password.'')  As far as I can tell,
-there is no way for xscreensaver to automatically work around this, or
-detect the problem in advance, so if you have PAM, make sure it is
-configured correctly!
-.TP 8
-.B Colormap lossage: TWM
-The \fBinstallColormap\fP option doesn't work very well with the
-.BR twm (1)
-window manager and its descendants.  
-
-There is a race condition between the screensaver and this window manager,
-which can result in the screensaver's colormap not getting installed
-properly, meaning the graphics hacks will appear in essentially random
-colors.  (If the screen goes white instead of black, this is probably why.)
-
-The
-.BR mwm (1)
-and
-.BR olwm (1)
-window managers don't have this problem.  The race condition exists
-because X (really, ICCCM) does not provide a way for an OverrideRedirect 
-window to have its own colormap, short of grabbing the server (which is 
-neither a good idea, nor really possible with the current design.)  What 
-happens is that, as soon as xscreensaver installs its colormap, \fBtwm\fP 
-responds to the resultant \fBColormapNotify\fP event by re-instaling the 
-default colormap.  Apparently, \fBtwm\fP doesn't \fIalways\fP do this; it 
-seems to do it regularly if the screensaver is activated from a menu item, 
-but seems to not do it if the screensaver comes on of its own volition, or 
-is activated from another console.  
-.RS 8
-.TP 4
-.B Attention, window manager authors!
-You should only call
-.BR XInstallColormap (3)
-in response to user events.  That is, it is appropriate to install a colormap
-in response to \fBFocusIn\fP, \fBFocusOut\fP, \fBEnterNotify\fP, 
-and \fBLeaveNotify\fP events; but it is not appropriate to call it in
-response to \fBColormapNotify\fP events.  If you install colormaps in
-response to \fIapplication\fP actions as well as in response to \fIuser\fP
-actions, then you create the situation where it is impossible for 
-override-redirect applications (such as xscreensaver) to display their
-windows in the proper colors.
-.RE
-.TP 8
-.B Colormap lossage: XV, XAnim, XEarth
-Some programs don't operate properly on visuals other than the default one,
-or with colormaps other than the default one.  See the discussion of the
-magic "default-n" visual name in the description of the \fBprograms\fP 
-resource in the \fIConfiguration\fP section.  When programs only work with
-the default colormap, you need to use a syntax like this:
-.EX
-   default-n: xv -root image-1.gif -quit  \\n\\
-   default-n: xearth -nostars -wait 0     \\n\\
-.EE
-It would also work to turn off the \fBinstallColormap\fP option altogether,
-but that would deny extra colors to those programs that \fIcan\fP take
-advantage of them.
-.TP 8
-.B Machine Load
-Although this program ``nices'' the subprocesses that it starts, 
-graphics-intensive subprograms can still overload the machine by causing
-the X server process itself (which is not ``niced'') to suck a lot of 
-cycles.  Care should be taken to slow down programs intended for use as 
-screensavers by inserting strategic calls to
-.BR sleep (3)
-or
-.BR usleep (3)
-(or making liberal use of any \fI\-delay\fP options which the programs 
-may provide.)
-
-Note that the OpenGL-based graphics demos are real pigs on machines that
-don't have texture hardware.
-
-Also, an active screensaver will cause your X server to be pretty much 
-permanently swapped in; but the same is true of any program that draws
-periodically, like 
-.BR xclock (1)
-or
-.BR xload (1).
-.TP 8
-.B Latency and Responsiveness
-If the subprocess is drawing too quickly and the connection to the X
-server is a slow one (such as an X terminal running over a phone line) then 
-the screensaver might not turn off right away when the user becomes active
-again (the
-.BR ico (1)
-demo has this problem if being run in full-speed mode).  This can be
-alleviated by inserting strategic calls to
-.BR XSync (3)
-in code intended for use as a screensaver.  This prevents too much graphics
-activity from being buffered up.
-.TP 8
-.B XFree86's Magic Keystrokes
-The XFree86 X server traps certain magic keystrokes before client programs ever
-see them.  Two that are of note are Ctrl+Alt+Backspace, which causes 
-the X server to exit; and Ctrl+Alt+F\fIn\fP, which switches virtual consoles.
-The X server will respond to these keystrokes even if xscreensaver has the
-screen locked.  Depending on your setup, you might consider this a problem.
-
-Unfortunately, there is no way for xscreensaver itself to override the
-interpretation of these keys.  If you want to disable Ctrl+Alt+Backspace
-globally, you need to set the \fIDontZap\fP flag in 
-your \fI/etc/X11/XF86Config\fP file.  See the
-.BR XF86Config (5)
-manual for details.
-
-There is no way (as far as I can tell) to disable the VT-switching keystrokes.
-
-Some Linux systems come with a VT_LOCKSWITCH ioctl, that one could 
-theoretically use to prevent VT-switching while the screen is locked; 
-but unfortunately, this ioctl can only be used by root, which means
-that xscreensaver can't use it (since xscreensaver disavows its privileges
-shortly after startup, for security reasons.)
-
-Any suggestions for other solutions to this problem are welcome.
-.TP 8
-.B XView Clients
-Apparently there are some problems with XView programs getting confused
-and thinking that the screensaver window is the real root window even when
-the screensaver is not active: ClientMessages intended for the window manager
-are sent to the screensaver window instead.  This could be solved by making
-xscreensaver forward all unrecognised ClientMessages to the real root window,
-but there may be other problems as well.  If anyone has any insight on the
-cause of this problem, please let me know.  (XView is an X11 toolkit that 
-implements the (quite abominable) Sun OpenLook look-and-feel.)
-.TP 8
-.B MIT Extension and Fading
-The \fBMIT-SCREEN-SAVER\fP extension is junk.  Don't use it.
-
-When using the \fBMIT-SCREEN-SAVER\fP extension in conjunction with 
-the \fBfade\fP option, you'll notice an unattractive flicker just before 
-the fade begins.  This is because the server maps a black window just before 
-it tells the \fIxscreensaver\fP process to activate.  The \fIxscreensaver\fP 
-process immediately unmaps that window, but this results in a flicker.  I 
-haven't figured a way  to get around this; it seems to be a fundamental
-property of the (mis-) design of this server extension.
-
-It sure would be nice if someone would implement the \fBSGI SCREEN_SAVER\fP
-extension in XFree86; it's dead simple, and works far better than the
-overengineered and broken \fBMIT-SCREEN-SAVER\fP extension.
-.TP 8
-.B SGI Power Saver
-If you're running Irix 6.3, you might find that your monitor is powering down
-after an hour or two even if you've told it not to.  This is fixed by SGI
-patches 2447 and 2537.
-.TP 8
-.B MesaGL and Voodoo Cards
-If you have a 3Dfx/Voodoo card, the default settings for xscreensaver will
-run the GL-based graphics demos in such a way that they will not take 
-advantage of the 3D acceleration hardware.  The solution is to change
-the \fBprograms\fP entries for the GL hacks from this:
-.EX
-       gears -root                        \\n\\
-.EE
-to this:
-.EX
-       MESA_GLX_FX=fullscreen  gears      \\n\\
-.EE
-That is, make sure that \fB$MESA_GLX_FX\fP is set to \fIfullscreen\fP, and
-don't tell the program to draw on the root window.  This may seem strange,
-but the setup used by Mesa and these kinds of cards \fIis\fP strange!
-
-For those who don't know, these cards work by sitting between your normal
-video card and the monitor, and seizing control of the monitor when it's 
-time to do 3D.  But this means that accelerated 3D only happens in full-screen
-mode (you can't do it in a window, and you can't see the output of 3D and 2D
-programs simultaniously), and that 3D will probably drive your monitor at a
-lower resolution, as well.  It's bizarre.
-
-If you find that GL programs only work properly when run as root, and not
-as normal users, then the problem is that your \fI/dev/3dfx\fP file is not
-configured properly.  Check the Linux 3Dfx FAQ.
-.TP 8
-.B Keyboard LEDs
-If \fIprocInterrupts\fP is on (which is the default on Linux systems) and
-you're using some program that toggles the state of your keyboard LEDs,
-xscreensaver won't work right: turning those LEDs on or off causes a 
-keyboard interrupt, which xscreensaver will interpret as user activity.
-So if you're using such a program, set the \fIprocInterrupts\fP resource
-to False.
-.TP 8
-.B Extensions
-If you are not making use of one of the server extensions (\fBXIDLE\fP,
-\fBSGI SCREEN_SAVER\fP, or \fBMIT-SCREEN-SAVER\fP), then it is possible, in 
-rare situations, for \fIxscreensaver\fP to interfere with event propagation 
-and make another X program malfunction.  For this to occur, that other
-application would need to \fInot\fP select \fBKeyPress\fP events on its 
-non-leaf windows within the first 30 seconds of their existence, but then 
-select for them later.  In this case, that client \fImight\fP fail to receive 
-those events.  This isn't very likely, since programs generally select a
-constant set of events immediately after creating their windows and then 
-don't change them, but this is the reason that it's a good idea to install 
-and use one of the server extensions instead, to work around this shortcoming
-in the X protocol.
-
-In all these years, I've not heard of even a single case of this happening,
-but it is theoretically possible, so I'm mentioning it for completeness...
-.TP 8
-.B Red Hot Lava
-There need to be a lot more graphics hacks.  In particular, there should be
-a simulation of a Lavalite (tm).
-.SH ENVIRONMENT
-.PP
-.TP 8
-.B DISPLAY
-to get the default host and display number, and to inform the sub-programs
-of the screen on which to draw.
-.TP 8
-.B PATH
-to find the sub-programs to run.
-.TP 8
-.B HOME
-for the directory in which to read and write the \fI.xscreensaver\fP file.
-.TP 8
-.B XENVIRONMENT
-to get the name of a resource file that overrides the global resources
-stored in the RESOURCE_MANAGER property.
-.SH UPGRADES
-The latest version can always be found at 
-http://www.jwz.org/xscreensaver/
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver\-demo (1),
-.BR xscreensaver\-command (1),
-.BR xdm (1),
-.BR xset (1),
-.BR Xsecurity (1),
-.BR xauth (1),
-.BR xhost (1).
-.BR ant (1),
-.BR atlantis (1),
-.BR attraction (1),
-.BR blitspin (1),
-.BR bouboule (1),
-.BR braid (1),
-.BR bsod (1),
-.BR bubble3d (1),
-.BR bubbles (1),
-.BR cage (1),
-.BR compass (1),
-.BR coral (1),
-.BR critical (1),
-.BR crystal (1),
-.BR cynosure (1),
-.BR decayscreen (1),
-.BR deco (1),
-.BR deluxe (1),
-.BR demon (1),
-.BR discrete (1),
-.BR distort (1),
-.BR drift (1),
-.BR epicycle (1),
-.BR fadeplot (1),
-.BR flag (1),
-.BR flame (1),
-.BR flow (1),
-.BR forest (1),
-.BR galaxy (1),
-.BR gears (1),
-.BR glplanet (1),
-.BR goop (1),
-.BR grav (1),
-.BR greynetic (1),
-.BR halo (1),
-.BR helix (1),
-.BR hopalong (1),
-.BR hypercube (1),
-.BR ifs (1),
-.BR imsmap (1),
-.BR interference (1),
-.BR jigsaw (1),
-.BR julia (1),
-.BR kaleidescope (1),
-.BR kumppa (1),
-.BR lament (1),
-.BR laser (1),
-.BR lightning (1),
-.BR lisa (1),
-.BR lissie (1),
-.BR lmorph (1),
-.BR loop (1),
-.BR maze (1),
-.BR moebius (1),
-.BR moire (1),
-.BR moire2 (1),
-.BR morph3d (1),
-.BR mountain (1),
-.BR munch (1),
-.BR noseguy (1),
-.BR pedal (1),
-.BR penetrate (1),
-.BR penrose (1),
-.BR phosphor (1),
-.BR pipes (1),
-.BR pulsar (1),
-.BR pyro (1),
-.BR qix (1),
-.BR rd-bomb (1),
-.BR rocks (1),
-.BR rorschach (1),
-.BR rotor (1),
-.BR rubik (1),
-.BR sierpinski (1),
-.BR slidescreen (1),
-.BR slip (1),
-.BR sonar (1),
-.BR sphere (1),
-.BR spiral (1),
-.BR spotlight (1),
-.BR sproingies (1),
-.BR squiral (1),
-.BR stairs (1),
-.BR starfish (1),
-.BR strange (1),
-.BR superquadrics (1),
-.BR swirl (1),
-.BR t3d (1),
-.BR triangle (1),
-.BR truchet (1),
-.BR vines (1),
-.BR wander (1),
-.BR worm (1),
-.BR xflame (1),
-.BR xjack (1),
-.BR xlyap (1),
-.BR xmatrix (1),
-.BR xroger (1),
-.BR bongo (1),
-.BR ico (1),
-.BR xaos (1),
-.BR xbouncebits (1),
-.BR xcthugha (1),
-.BR xdaliclock (1),
-.BR xfishtank (1),
-.BR xmountains (1),
-.BR xsplinefun (1),
-.BR xswarm (1),
-.BR xtacy (1),
-.BR xv (1),
-.BR xwave (1).
-.SH COPYRIGHT
-Copyright \(co 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
-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
-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>.  Written in late 1991; first posted
-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 David Wojtowicz for implementing \fIlockTimeout\fP.
-
-Thanks to Martin Kraemer for adding support for shadow passwords and
-locking-disabled diagnostics.
-
-Thanks to the many people who have contributed graphics demos to the package.
-
-Thanks to Patrick Moreau for the VMS port.
-
-Thanks to Mark Bowyer for figuring out how to hook it up to CDE.
-
-And huge thanks to Jon A. Christopher for implementing the Athena dialog
-support, back in the days before Lesstif was a viable alternative to Motif.
diff --git a/driver/xscreensaver.pam b/driver/xscreensaver.pam
deleted file mode 100644 (file)
index 09eefa3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#%PAM-1.0
-auth       required    /lib/security/pam_pwdb.so shadow nullok
diff --git a/driver/xset.c b/driver/xset.c
deleted file mode 100644 (file)
index 2e167c1..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-/* xset.c --- interacting with server extensions and the builtin screensaver.
- * 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdio.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-
-/* 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"
-
-#ifdef _VROOT_H_
-ERROR!  You must not include vroot.h in this file.
-#endif
-
-\f
-/* MIT SCREEN-SAVER server extension hackery.
- */
-
-#ifdef HAVE_MIT_SAVER_EXTENSION
-
-# include <X11/extensions/scrnsaver.h>
-
-Bool
-query_mit_saver_extension (saver_info *si)
-{
-  return XScreenSaverQueryExtension (si->dpy,
-                                    &si->mit_saver_ext_event_number,
-                                    &si->mit_saver_ext_error_number);
-}
-
-static int
-ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
-{
-  return 0;
-}
-
-static void
-init_mit_saver_extension (saver_info *si)
-{
-  int i;
-  Pixmap *blank_pix = (Pixmap *) calloc (sizeof(Pixmap), si->nscreens);
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      XID kill_id = 0;
-      Atom kill_type = 0;
-      Window root = RootWindowOfScreen (ssi->screen);
-      blank_pix[i] = XCreatePixmap (si->dpy, root, 1, 1, 1);
-
-      /* Kill off the old MIT-SCREEN-SAVER client if there is one.
-        This tends to generate X errors, though (possibly due to a bug
-        in the server extension itself?) so just ignore errors here. */
-      if (XScreenSaverGetRegistered (si->dpy,
-                                    XScreenNumberOfScreen (ssi->screen),
-                                    &kill_id, &kill_type)
-         && kill_id != blank_pix[i])
-       {
-         XErrorHandler old_handler =
-           XSetErrorHandler (ignore_all_errors_ehandler);
-         XKillClient (si->dpy, kill_id);
-         XSync (si->dpy, False);
-         XSetErrorHandler (old_handler);
-       }
-      XScreenSaverSelectInput (si->dpy, root, ScreenSaverNotifyMask);
-      XScreenSaverRegister (si->dpy,
-                           XScreenNumberOfScreen (ssi->screen),
-                           (XID) blank_pix[i], XA_PIXMAP);
-    }
-  free(blank_pix);
-}
-#endif /* HAVE_MIT_SAVER_EXTENSION */
-
-\f
-/* SGI SCREEN_SAVER server extension hackery.
- */
-
-#ifdef HAVE_SGI_SAVER_EXTENSION
-
-# include <X11/extensions/XScreenSaver.h>
-
-Bool
-query_sgi_saver_extension (saver_info *si)
-{
-  return XScreenSaverQueryExtension (si->dpy,
-                                    &si->sgi_saver_ext_event_number,
-                                    &si->sgi_saver_ext_error_number);
-}
-
-static void
-init_sgi_saver_extension (saver_info *si)
-{
-  saver_preferences *p = &si->prefs;
-  int i;
-  if (si->screen_blanked_p)
-    /* If you mess with this while the server thinks it's active,
-       the server crashes. */
-    return;
-
-  for (i = 0; i < si->nscreens; i++)
-    {
-      saver_screen_info *ssi = &si->screens[i];
-      XScreenSaverDisable (si->dpy, XScreenNumberOfScreen(ssi->screen));
-      if (! XScreenSaverEnable (si->dpy, XScreenNumberOfScreen(ssi->screen)))
-       {
-         fprintf (stderr,
-       "%s: SGI SCREEN_SAVER extension exists, but can't be initialized;\n\
-               perhaps some other screensaver program is already running?\n",
-                  blurb());
-         si->using_sgi_saver_extension = False;
-         return;
-       }
-    }
-}
-
-#endif /* HAVE_SGI_SAVER_EXTENSION */
-
-\f
-/* XIDLE server extension hackery.
- */
-
-#ifdef HAVE_XIDLE_EXTENSION
-
-# include <X11/extensions/xidle.h>
-
-Bool
-query_xidle_extension (saver_info *si)
-{
-  int event_number;
-  int error_number;
-  return XidleQueryExtension (si->dpy, &event_number, &error_number);
-}
-
-#endif /* HAVE_XIDLE_EXTENSION */
-
-
-\f
-/* Figuring out what the appropriate XSetScreenSaver() parameters are
-   (one wouldn't expect this to be rocket science.)
- */
-
-void
-disable_builtin_screensaver (saver_info *si, Bool unblank_screen_p)
-{
-  saver_preferences *p = &si->prefs;
-  int current_server_timeout, current_server_interval;
-  int current_prefer_blank, current_allow_exp;
-  int desired_server_timeout, desired_server_interval;
-  int desired_prefer_blank, desired_allow_exp;
-
-  XGetScreenSaver (si->dpy, &current_server_timeout, &current_server_interval,
-                  &current_prefer_blank, &current_allow_exp);
-
-  desired_server_timeout = current_server_timeout;
-  desired_server_interval = current_server_interval;
-  desired_prefer_blank = current_prefer_blank;
-  desired_allow_exp = current_allow_exp;
-
-  /* On SGIs, if interval is non-zero, it is the number of seconds after
-     screen saving starts at which the monitor should be powered down.
-     Obviously I don't want that, so set it to 0 (meaning "never".)
-
-     Power saving is disabled if DontPreferBlanking, but in that case,
-     we don't get extension events either.  So we can't turn it off that way.
-
-     Note: if you're running Irix 6.3 (O2), you may find that your monitor is
-     powering down anyway, regardless of the xset settings.  This is fixed by
-     installing SGI patches 2447 and 2537.
-   */
-  desired_server_interval = 0;
-
-  /* I suspect (but am not sure) that DontAllowExposures might have
-     something to do with powering off the monitor as well, at least
-     on some systems that don't support XDPMS?  Who know... */
-  desired_allow_exp = AllowExposures;
-
-  if (si->using_mit_saver_extension || si->using_sgi_saver_extension)
-    {
-      desired_server_timeout = (p->timeout / 1000);
-
-      /* The SGI extension won't give us events unless blanking is on.
-        I think (unsure right now) that the MIT extension is the opposite. */
-      if (si->using_sgi_saver_extension)
-       desired_prefer_blank = PreferBlanking;
-      else
-       desired_prefer_blank = DontPreferBlanking;
-    }
-  else
-    {
-      /* When we're not using an extension, set the server-side timeout to 0,
-        so that the server never gets involved with screen blanking, and we
-        do it all ourselves.  (However, when we *are* using an extension,
-        we tell the server when to notify us, and rather than blanking the
-        screen, the server will send us an X event telling us to blank.)
-       */
-      desired_server_timeout = 0;
-    }
-
-  if (desired_server_timeout != current_server_timeout ||
-      desired_server_interval != current_server_interval ||
-      desired_prefer_blank != current_prefer_blank ||
-      desired_allow_exp != current_allow_exp)
-    {
-      if (unblank_screen_p)
-       fprintf (stderr,
-                "%s disabling server builtin screensaver.\n"
-                "%s: you can re-enable it with \"xset s on\".\n",
-                blurb(), blurb());
-
-      if (p->verbose_p)
-       fprintf (stderr, "%s: (xset s %d %d; xset s %s; xset s %s)\n", blurb(),
-                desired_server_timeout, desired_server_interval,
-                (desired_prefer_blank ? "blank" : "noblank"),
-                (desired_allow_exp ? "expose" : "noexpose"));
-
-      XSetScreenSaver (si->dpy,
-                      desired_server_timeout, desired_server_interval,
-                      desired_prefer_blank, desired_allow_exp);
-      XSync(si->dpy, False);
-    }
-
-
-#if defined(HAVE_MIT_SAVER_EXTENSION) || defined(HAVE_SGI_SAVER_EXTENSION)
-  {
-    static Bool extension_initted = False;
-    if (!extension_initted)
-      {
-       extension_initted = True;
-# ifdef HAVE_MIT_SAVER_EXTENSION
-       if (si->using_mit_saver_extension) init_mit_saver_extension(si);
-# endif
-# ifdef HAVE_SGI_SAVER_EXTENSION
-       if (si->using_sgi_saver_extension) init_sgi_saver_extension(si);
-# endif
-      }
-  }
-#endif /* HAVE_MIT_SAVER_EXTENSION || HAVE_SGI_SAVER_EXTENSION */
-
-  if (unblank_screen_p)
-    /* Turn off the server builtin saver if it is now running. */
-    XForceScreenSaver (si->dpy, ScreenSaverReset);
-}
-
-\f
-/* Display Power Management System (DPMS.)
-
-   On XFree86 systems, "man xset" reports:
-
-       -dpms    The -dpms option disables DPMS (Energy Star) features.
-       +dpms    The +dpms option enables DPMS (Energy Star) features.
-
-       dpms flags...
-                The dpms option allows the DPMS (Energy Star)
-                parameters to be set.  The option can take up to three
-                numerical values, or the `force' flag followed by a
-                DPMS state.  The `force' flags forces the server to
-                immediately switch to the DPMS state specified.  The
-                DPMS state can be one of `standby', `suspend', or
-                `off'.  When numerical values are given, they set the
-                inactivity period before the three modes are activated.
-                The first value given is for the `standby' mode, the
-                second is for the `suspend' mode, and the third is for
-                the `off' mode.  Setting these values implicitly
-                enables the DPMS features.  A value of zero disables a
-                particular mode.
-
-   However, note that the implementation is more than a little bogus,
-   in that there is code in /usr/X11R6/lib/libXdpms.a to implement all
-   the usual server-extension-querying utilities -- but there are no
-   prototypes in any header file!  Thus, the prototypes here.  (The
-   stuff in X11/extensions/dpms.h and X11/extensions/dpmsstr.h define
-   the raw X protcol, they don't define the API to libXdpms.a.)
-
-   Some documentation:
-   Library:  ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/DPMSLib.ms
-   Protocol: ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/DPMS.ms
- */
-
-#ifdef HAVE_DPMS_EXTENSION
-
-#include <X11/Xproto.h>                        /* for CARD16 */
-#include <X11/extensions/dpms.h>
-#include <X11/extensions/dpmsstr.h>
-
-extern Bool DPMSQueryExtension (Display *dpy, int *event_ret, int *error_ret);
-extern Bool DPMSCapable (Display *dpy);
-extern Status DPMSForceLevel (Display *dpy, CARD16 level);
-extern Status DPMSInfo (Display *dpy, CARD16 *power_level, BOOL *state);
-
-#if 0 /* others we don't use */
-extern Status DPMSGetVersion (Display *dpy, int *major_ret, int *minor_ret);
-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 /* 0 */
-
-
-Bool
-monitor_powered_on_p (saver_info *si)
-{
-  Bool result;
-  int event_number, error_number;
-  BOOL onoff = False;
-  CARD16 state;
-
-  if (!DPMSQueryExtension(si->dpy, &event_number, &error_number))
-    /* Server doesn't know -- assume the monitor is on. */
-    result = True;
-
-  else if (!DPMSCapable(si->dpy))
-    /* Server says the monitor doesn't do power management -- so it's on. */
-    result = True;
-
-  else
-    {
-      DPMSInfo(si->dpy, &state, &onoff);
-      if (!onoff)
-       /* Server says DPMS is disabled -- so the monitor is on. */
-       result = True;
-      else
-       switch (state) {
-       case DPMSModeOn:      result = True;  break;  /* really on */
-       case DPMSModeStandby: result = False; break;  /* kinda off */
-       case DPMSModeSuspend: result = False; break;  /* pretty off */
-       case DPMSModeOff:     result = False; break;  /* really off */
-       default:              result = True;  break;  /* protocol error? */
-       }
-    }
-
-  return result;
-}
-
-void
-monitor_power_on (saver_info *si)
-{
-  if (!monitor_powered_on_p (si))
-    {
-      DPMSForceLevel(si->dpy, DPMSModeOn);
-      XSync(si->dpy, False);
-      if (!monitor_powered_on_p (si))
-       fprintf (stderr,
-       "%s: DPMSForceLevel(dpy, DPMSModeOn) did not power the monitor on?\n",
-                blurb());
-    }
-}
-
-#else  /* !HAVE_DPMS_EXTENSION */
-
-Bool
-monitor_powered_on_p (saver_info *si) 
-{
-  return True; 
-}
-
-void
-monitor_power_on (saver_info *si)
-{
-  return; 
-}
-
-#endif /* !HAVE_DPMS_EXTENSION */
diff --git a/hacks/.gdbinit b/hacks/.gdbinit
deleted file mode 100644 (file)
index 78a7236..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-set args -geom =600x480+0+0 -sync
-b screenhack_ehandler
-b exit
-b abort
diff --git a/hacks/Makefile.in b/hacks/Makefile.in
deleted file mode 100644 (file)
index fb393af..0000000
+++ /dev/null
@@ -1,1625 +0,0 @@
-# hacks/Makefile.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski.
-# the `../configure' script generates `hacks/Makefile' from this file.
-
-@SET_MAKE@
-.SUFFIXES:
-.SUFFIXES: .c .o
-
-srcdir         = @srcdir@
-VPATH          = @srcdir@
-
-install_prefix =
-prefix         = @prefix@
-exec_prefix    = @exec_prefix@
-bindir         = @bindir@
-mandir         = @mandir@
-man1dir                = $(mandir)/man1
-mansuffix      = 1
-
-CC             = @CC@
-CFLAGS         = @CFLAGS@
-LDFLAGS                = @LDFLAGS@
-DEFS           = -DSTANDALONE @DEFS@
-LIBS           = @LIBS@
-
-DEPEND         = @DEPEND@
-DEPEND_FLAGS   = @DEPEND_FLAGS@
-DEPEND_DEFINES = @DEPEND_DEFINES@
-
-SHELL          = /bin/sh
-INSTALL                = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA   = @INSTALL_DATA@
-INSTALL_DIRS   = @INSTALL_DIRS@
-HACKDIR                = @HACKDIR@
-
-X_CFLAGS       = @X_CFLAGS@
-X_LIBS         = @X_LIBS@
-X_PRE_LIBS     = @X_PRE_LIBS@
-X_EXTRA_LIBS   = @X_EXTRA_LIBS@
-
-# Note: see comment in ../driver/Makefile.in for explanation of X_LIBS, etc.
-#
-HACK_PRE       = $(LIBS) $(X_LIBS)
-HACK_POST      = $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS) -lm
-HACK_LIBS      = $(HACK_PRE)            @HACK_LIBS@ $(HACK_POST)
-XPM_LIBS       = $(HACK_PRE) @XPM_LIBS@ @HACK_LIBS@ $(HACK_POST)
-XLOCK_LIBS     = $(HACK_LIBS)
-SGI_VIDEO_OBJS  = @SGI_VIDEO_OBJS@
-SGI_VIDEO_LIBS  = @SGI_VIDEO_LIBS@
-
-UTILS_SRC      = $(srcdir)/../utils
-UTILS_BIN      = ../utils
-
-INCLUDES       = -I$(srcdir) -I$(UTILS_SRC) -I.. @INCLUDES@
-
-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)/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)/erase.o $(UTILS_BIN)/sgivideo.o \
-                 $(UTILS_SRC)/xshm.o $(UTILS_SRC)/xdbe.o
-
-SRCS           = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
-                 bubbles-default.c decayscreen.c deco.c drift.c flag.c \
-                 flame.c forest.c vines.c galaxy.c grav.c greynetic.c \
-                 halo.c helix.c hopalong.c hypercube.c ifs.c imsmap.c \
-                 julia.c kaleidescope.c laser.c lightning.c lisa.c lmorph.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 \
-                 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 \
-                 truchet.c bsod.c crystal.c discrete.c distort.c kumppa.c \
-                 sonar.c demon.c loop.c t3d.c penetrate.c deluxe.c compass.c \
-                 squiral.c xflame.c wander.c spotlight.c critical.c \
-                 phosphor.c xmatrix.c
-
-OBJS           = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
-                 bubbles-default.o decayscreen.o deco.o drift.o flag.o \
-                 flame.o forest.o vines.o galaxy.o grav.o greynetic.o \
-                 halo.o helix.o hopalong.o hypercube.o ifs.o imsmap.o \
-                 julia.o kaleidescope.o laser.o lightning.o lisa.o lmorph.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 \
-                 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 \
-                 truchet.o bsod.o crystal.o discrete.o distort.o kumppa.o \
-                 sonar.o demon.o loop.o t3d.o penetrate.o deluxe.o compass.o \
-                 squiral.o xflame.o wander.o spotlight.o critical.o \
-                 phosphor.o xmatrix.o
-
-EXES           = attraction blitspin bouboule braid bubbles decayscreen deco \
-                 drift flag flame forest vines galaxy grav greynetic halo \
-                 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 \
-                 fadeplot rd-bomb coral mountain triangle lissie worm rotor \
-                 ant xjack xlyap jigsaw cynosure moire2 flow epicycle \
-                 interference truchet bsod crystal discrete distort kumppa \
-                 sonar demon loop t3d penetrate deluxe compass squiral \
-                 xflame wander spotlight critical phosphor xmatrix
-
-HACK_OBJS_1    = $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \
-                 $(UTILS_BIN)/usleep.o $(UTILS_BIN)/yarandom.o @XMU_OBJS@
-HACK_OBJS      = screenhack.o $(HACK_OBJS_1)
-XLOCK_OBJS     = screenhack-xlock.o xlockmore.o $(COLOR_OBJS) $(HACK_OBJS_1)
-COLOR_OBJS     = $(UTILS_BIN)/hsv.o $(UTILS_BIN)/colors.o
-GRAB_OBJS_1    = $(UTILS_BIN)/grabscreen.o $(SGI_VIDEO_OBJS)
-GRAB_OBJS      = $(GRAB_OBJS_1) $(COLOR_OBJS)
-XSHM_OBJS      = $(UTILS_BIN)/xshm.o
-XDBE_OBJS      = $(UTILS_BIN)/xdbe.o
-GRAB_LIBS      = $(SGI_VIDEO_LIBS)
-
-HDRS           = bubbles.h screenhack.h xlockmore.h xlockmoreI.h automata.h
-MEN            = attraction.man blitspin.man bouboule.man braid.man \
-                 bubbles.man decayscreen.man deco.man drift.man flag.man \
-                 flame.man forest.man vines.man galaxy.man grav.man \
-                 greynetic.man halo.man helix.man hopalong.man hypercube.man \
-                 ifs.man imsmap.man julia.man kaleidescope.man laser.man \
-                 lightning.man lisa.man lmorph.man maze.man moire.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 \
-                 xjack.man xlyap.man jigsaw.man epicycle.man bsod.man \
-                 sonar.man t3d.man squiral.man spotlight.man critical.man
-STAR           = *
-EXTRAS         = README Makefile.in xlock_23.h .gdbinit \
-                 vidwhacker \
-                 images/$(STAR).xbm \
-                 images/$(STAR).xpm \
-                 images/bubbles/$(STAR).pov \
-                 images/bubbles/$(STAR).xpm \
-                 images/noseguy/$(STAR).xbm \
-                 images/noseguy/$(STAR).xpm \
-                 images/jigsaw/$(STAR).xbm  \
-
-VMSFILES       = compile_axp.com compile_decc.com link_axp.com link_decc.com \
-                 vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
-
-TARFILES       = $(SRCS) $(HDRS) $(MEN) $(EXTRAS) $(VMSFILES)
-
-
-all: $(EXES)
-
-install:   install-program   install-man
-uninstall: uninstall-program uninstall-man
-
-install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
-
-install-program: $(EXES)
-       @exes="$(EXES)" ;                                               \
-       if [ ! -d $(HACKDIR) ]; then $(INSTALL_DIRS) $(HACKDIR) ; fi ;  \
-       for program in $$exes; do                                       \
-         echo $(INSTALL_PROGRAM) $$program $(HACKDIR)/$$program ;      \
-         $(INSTALL_PROGRAM) $$program $(HACKDIR)/$$program ;           \
-       done
-
-install-man: $(MEN)
-       @men="$(MEN)" ;                                                 \
-       if [ ! -d $(man1dir) ]; then $(INSTALL_DIRS) $(man1dir) ; fi ;  \
-       for man in $$men; do                                            \
-         instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo $(INSTALL_DATA) $(srcdir)/$$man $(man1dir)/$$instname ;  \
-         $(INSTALL_DATA) $(srcdir)/$$man $(man1dir)/$$instname ;       \
-       done
-
-uninstall-program:
-       @for program in $(EXES); do                                     \
-         echo rm -f $(HACKDIR)/$$program ;                             \
-         rm -f $(HACKDIR)/$$program ;                                  \
-       done
-
-uninstall-man:
-       @men="$(MEN)" ;                                                 \
-       for man in $$men; do                                            \
-         instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo rm -f $(man1dir)/$$instname ;                            \
-         rm -f $(man1dir)/$$instname ;                                 \
-       done
-
-clean:
-       -rm -f *.o a.out core $(EXES)
-
-distclean: clean
-       -rm -f Makefile TAGS *~ "#"*
-
-# Adds all current dependencies to Makefile
-depend:
-       $(DEPEND) -s '# DO NOT DELETE: updated by make depend'              \
-       $(DEPEND_FLAGS) --                                                  \
-       $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
-       $(SRCS)
-
-# Adds some dependencies to Makefile.in -- not totally accurate, but pretty
-# close.  This excludes dependencies on files in /usr/include, etc.  It tries
-# to include only dependencies on files which are themselves a part of this
-# package.
-distdepend::
-       @echo updating dependencies in `pwd`/Makefile.in... ;               \
-       $(DEPEND) -w 0 -f -                                                 \
-       -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
-       $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
-       $(SRCS) |                                                           \
-       (                                                                   \
-         awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \
-         sed -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d'                        \
-             -e 's@\.\./utils@$$(UTILS_SRC)@g'                             \
-             -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'                            \
-             -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g' ;                     \
-         echo ''                                                           \
-       ) > /tmp/distdepend.$$$$ &&                                         \
-       mv Makefile.in Makefile.in.bak &&                                   \
-       mv /tmp/distdepend.$$$$ Makefile.in
-
-TAGS: tags
-tags:
-       find $(srcdir) -name '*.[chly]' -print | xargs etags -a
-
-echo_tarfiles:
-       @echo $(TARFILES)
-
-
-# Rules for generating the VMS makefiles on Unix, so that it doesn't have to
-# be done by hand...
-#
-VMS_AXP_COMPILE_1=$$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE
-VMS_AXP_COMPILE_2=)/INCL=([],[-],[-.UTILS])
-
-compile_axp.com: Makefile.in
-       @echo generating $@ from $<...  ;                                   \
-       ( for c in $(SRCS) ; do                                             \
-          c=`echo $$c | tr a-z A-Z` ;                                      \
-          echo "$(VMS_AXP_COMPILE_1)$(VMS_AXP_COMPILE_2) $$c" ;            \
-         done ;                                                                    \
-        foo="$(VMS_AXP_COMPILE_1),XLOCKMORE$(VMS_AXP_COMPILE_2)" ;         \
-         echo $${foo}/OBJ=SCREENHACK-XLOCK.OBJ SCREENHACK.C ;              \
-       ) | sort > $@
-
-compile_decc.com: compile_axp.com
-       @echo generating $@ from $<...  ;                                   \
-       sed 's/axp/decc/g' < $< > $@
-
-#### TODO: generating link_axp.com is kinda tricky...
-
-link_decc.com: link_axp.com
-       @echo generating $@ from $<...  ;                                   \
-       sed 's/axp/decc/g' < $< > $@
-
-$(srcdir)/../setup.com: Makefile.in
-       @echo generating $@ from $<...  ;                                   \
-       ( echo '$$! Xscreensaver - definition of various DCL symbols' ;     \
-         echo '$$ set NOON' ;                                              \
-         echo '$$ set def [.HACKS]' ;                                      \
-         echo '$$ mydisk = f$$trnlmn("SYS$$DISK")' ;                       \
-         echo '$$ mydir  = mydisk+f$$directory()' ;                        \
-         ( for c in $(EXES) ; do                                           \
-            c2="$${c}          " ;                                         \
-            c2=`echo "$${c2}" | sed 's/^\(........*\)  $$/\1/'` ;          \
-            echo '$$' "$${c2}:== $$'mydir'$${c}" ;                         \
-             done ;                                                        \
-         ) | sort ;                                                        \
-          echo '$$ set def [-.DRIVER]' ;                                   \
-          echo '$$ mydir  = mydisk+f$$directory()' ;                       \
-          echo "$$ xscreensaver :== $$'mydir'xscreensaver" ;               \
-         echo "$$ xscreen*command :== $$'mydir'xscreensaver-command" ;     \
-         echo '$$ set def [-]' ;                                           \
-         echo '$$ exit' ;                                                  \
-          ) > $@
-
-distdepend:: compile_axp.com compile_decc.com
-distdepend:: link_axp.com link_decc.com
-distdepend:: $(srcdir)/../setup.com
-
-
-# Rules for noticing when the objects from the utils directory are out of
-# date with respect to their sources, and going and building them according
-# to the rules in their own Makefile...
-#
-$(UTILS_BIN)/alpha.o:          $(UTILS_SRC)/alpha.c
-$(UTILS_BIN)/colors.o:         $(UTILS_SRC)/colors.c
-$(UTILS_BIN)/grabscreen.o:     $(UTILS_SRC)/grabscreen.c
-$(UTILS_BIN)/sgivideo.o:       $(UTILS_SRC)/sgivideo.c
-$(UTILS_BIN)/hsv.o:            $(UTILS_SRC)/hsv.c
-$(UTILS_BIN)/resources.o:      $(UTILS_SRC)/resources.c
-$(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)/yarandom.o:       $(UTILS_SRC)/yarandom.c
-$(UTILS_BIN)/erase.o:          $(UTILS_SRC)/erase.c
-$(UTILS_BIN)/xshm.o:           $(UTILS_SRC)/xshm.c
-$(UTILS_BIN)/xdbe.o:           $(UTILS_SRC)/xdbe.c
-
-$(UTIL_OBJS):
-       cd $(UTILS_BIN) ; \
-       $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
-
-# How we build object files in this directory.
-.c.o:
-       $(CC) -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) $<
-
-# Some hacks use a slightly-differently-compiled variant of this file.
-# This is how to make the the other .o file from it.
-#
-screenhack-xlock.o: screenhack.c
-       $(CC) -o $@ -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) \
-       -DXLOCKMORE $(srcdir)/screenhack.c
-
-# Some abbreviations to keep the lines short...
-ALP            = $(HSV) $(UTILS_BIN)/alpha.o
-HSV            = $(UTILS_BIN)/hsv.o
-SPL            = $(UTILS_BIN)/spline.o
-XROG           = $(UTILS_BIN)/xroger.o $(SPL)
-GRAB           = $(GRAB_OBJS)
-ERASE          = $(UTILS_BIN)/erase.o
-COL            = $(COLOR_OBJS)
-SHM            = $(XSHM_OBJS)
-DBE            = $(XDBE_OBJS)
-
-CC_HACK                = $(CC) $(LDFLAGS)
-
-xscreensaver-sgigl: xscreensaver-sgigl.c
-       $(CC) $(LDFLAGS) -o $@ $< -I$(UTILS_SRC) $(HACK_PRE) \
-               -lXmu -lX11 -lXext $(X_EXTRA_LIBS) -lm
-
-
-# The rules for those hacks which follow the `screenhack.c' API.
-# If make wasn't such an utter abomination, these could all be combined
-# into one rule, but we don't live in such a perfect world.  The $< rule
-# is pretty much useless in the face of more than one dependency, as far
-# as I can tell.
-#
-attraction:    attraction.o    $(HACK_OBJS) $(COL) $(SPL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
-
-blitspin:      blitspin.o      $(HACK_OBJS) $(GRAB)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(XPM_LIBS) $(GRAB_LIBS)
-
-bubbles:       bubbles.o       $(HACK_OBJS) bubbles-default.o 
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) bubbles-default.o $(XPM_LIBS)
-
-decayscreen:   decayscreen.o   $(HACK_OBJS) $(GRAB)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS)
-
-deco:          deco.o          $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-flame:         flame.o         $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-greynetic:     greynetic.o     $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-halo:          halo.o          $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-helix:         helix.o         $(HACK_OBJS) $(HSV) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(ERASE) $(HACK_LIBS)
-
-hypercube:     hypercube.o     $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-imsmap:                imsmap.o        $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-kaleidescope:  kaleidescope.o  $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-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)
-
-moire:         moire.o         $(HACK_OBJS) $(COL) $(SHM)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(HACK_LIBS)
-
-moire2:                moire2.o        $(HACK_OBJS) $(COL) $(DBE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
-
-noseguy:       noseguy.o       $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(XPM_LIBS)
-
-pedal:         pedal.o         $(HACK_OBJS) $(HSV)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(HACK_LIBS)
-
-pyro:          pyro.o          $(HACK_OBJS) $(HSV)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(HACK_LIBS)
-
-qix:           qix.o           $(HACK_OBJS) $(ALP)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ALP) $(HACK_LIBS)
-
-rocks:         rocks.o         $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-rorschach:     rorschach.o     $(HACK_OBJS) $(HSV) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(ERASE) $(HACK_LIBS)
-
-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) $(ALP) $(SPL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ALP) $(SPL) $(HACK_LIBS)
-
-starfish:      starfish.o      $(HACK_OBJS) $(COL) $(SPL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
-
-munch:         munch.o         $(HACK_OBJS) $(COL) $(SPL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
-
-rd-bomb:       rd-bomb.o       $(HACK_OBJS) $(COL) $(SHM)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(HACK_LIBS)
-
-coral:         coral.o         $(HACK_OBJS) $(COL) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
-
-xjack:         xjack.o         $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-xlyap:         xlyap.o         $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-jigsaw:                jigsaw.o        $(HACK_OBJS) $(GRAB)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS)
-
-cynosure:      cynosure.o      $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-epicycle:      epicycle.o      $(HACK_OBJS) $(COL) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
-
-interference:  interference.o  $(HACK_OBJS) $(COL) $(SHM) $(DBE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(DBE) $(HACK_LIBS)
-
-truchet:        truchet.o      $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-bsod:          bsod.o          $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS) $(XPM_LIBS)
-
-distort:       distort.o       $(HACK_OBJS) $(GRAB) $(SHM)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS) $(GRAB_LIBS)
-
-kumppa:                kumppa.o        $(HACK_OBJS) $(DBE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
-
-sonar:         sonar.o         $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-t3d:           t3d.o           $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-penetrate:     penetrate.o     $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-deluxe:                deluxe.o        $(HACK_OBJS) $(COL) $(DBE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
-
-compass:       compass.o       $(HACK_OBJS) $(DBE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
-
-squiral:       squiral.o       $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-xflame:                xflame.o        $(HACK_OBJS) $(SHM)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SHM) $(HACK_LIBS) $(XPM_LIBS)
-
-wander:                wander.o        $(HACK_OBJS) $(COL) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
-
-spotlight:     spotlight.o     $(HACK_OBJS) $(GRAB)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS)
-
-critical:      critical.o      $(HACK_OBJS) $(COL) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
-
-phosphor:      phosphor.o      $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
-
-xmatrix:       xmatrix.o       $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS) $(XPM_LIBS)
-
-
-# The rules for those hacks which follow the `xlockmore' API.
-#
-
-bouboule:      bouboule.o      $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-braid:         braid.o         $(XLOCK_OBJS) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
-
-drift:         drift.o         $(XLOCK_OBJS) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
-
-flag:          flag.o          $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(XPM_LIBS)
-
-forest:                forest.o        $(XLOCK_OBJS) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
-
-vines:         vines.o         $(XLOCK_OBJS) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
-
-galaxy:                galaxy.o        $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-grav:          grav.o          $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-hopalong:      hopalong.o      $(XLOCK_OBJS) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
-
-ifs:           ifs.o           $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-julia:         julia.o         $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-laser:         laser.o         $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-lightning:     lightning.o     $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-lisa:          lisa.o          $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-lissie:                lissie.o        $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-penrose:       penrose.o       $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-sierpinski:    sierpinski.o    $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-slip:          slip.o          $(XLOCK_OBJS) $(GRAB)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(GRAB_OBJS_1) $(HACK_LIBS) $(GRAB_LIBS)
-
-sphere:                sphere.o        $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-spiral:                spiral.o        $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-strange:       strange.o       $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-swirl:         swirl.o         $(XLOCK_OBJS) $(SHM)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(SHM) $(HACK_LIBS)
-
-fadeplot:      fadeplot.o      $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-mountain:      mountain.o      $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-triangle:      triangle.o      $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-worm:          worm.o          $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-rotor:         rotor.o         $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-ant:           ant.o           $(XLOCK_OBJS) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
-
-demon:         demon.o         $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-loop:          loop.o          $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-flow:          flow.o          $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-discrete:      discrete.o              $(XLOCK_OBJS) $(ERASE)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
-
-crystal:       crystal.o               $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
-
-##############################################################################
-#
-# DO NOT DELETE: updated by make distdepend
-# $(srcdir)/DO $(srcdir)/NOT $(srcdir)/DELETE: $(srcdir)/updated $(srcdir)/by $(srcdir)/make $(srcdir)/distdepend
-
-attraction.o: $(srcdir)/screenhack.h
-attraction.o: ../config.h
-attraction.o: $(UTILS_SRC)/yarandom.h
-attraction.o: $(UTILS_SRC)/usleep.h
-attraction.o: $(UTILS_SRC)/resources.h
-attraction.o: $(UTILS_SRC)/hsv.h
-attraction.o: $(UTILS_SRC)/colors.h
-attraction.o: $(UTILS_SRC)/grabscreen.h
-attraction.o: $(UTILS_SRC)/visual.h
-attraction.o: $(UTILS_SRC)/spline.h
-blitspin.o: $(srcdir)/screenhack.h
-blitspin.o: ../config.h
-blitspin.o: $(UTILS_SRC)/yarandom.h
-blitspin.o: $(UTILS_SRC)/usleep.h
-blitspin.o: $(UTILS_SRC)/resources.h
-blitspin.o: $(UTILS_SRC)/hsv.h
-blitspin.o: $(UTILS_SRC)/colors.h
-blitspin.o: $(UTILS_SRC)/grabscreen.h
-blitspin.o: $(UTILS_SRC)/visual.h
-blitspin.o: $(srcdir)/images/som.xbm
-bouboule.o: $(srcdir)/xlockmore.h
-bouboule.o: ../config.h
-bouboule.o: $(srcdir)/xlockmoreI.h
-bouboule.o: $(srcdir)/screenhack.h
-bouboule.o: $(UTILS_SRC)/yarandom.h
-bouboule.o: $(UTILS_SRC)/usleep.h
-bouboule.o: $(UTILS_SRC)/resources.h
-bouboule.o: $(UTILS_SRC)/hsv.h
-bouboule.o: $(UTILS_SRC)/colors.h
-bouboule.o: $(UTILS_SRC)/grabscreen.h
-bouboule.o: $(UTILS_SRC)/visual.h
-bouboule.o: $(UTILS_SRC)/xshm.h
-braid.o: $(srcdir)/xlockmore.h
-braid.o: ../config.h
-braid.o: $(srcdir)/xlockmoreI.h
-braid.o: $(srcdir)/screenhack.h
-braid.o: $(UTILS_SRC)/yarandom.h
-braid.o: $(UTILS_SRC)/usleep.h
-braid.o: $(UTILS_SRC)/resources.h
-braid.o: $(UTILS_SRC)/hsv.h
-braid.o: $(UTILS_SRC)/colors.h
-braid.o: $(UTILS_SRC)/grabscreen.h
-braid.o: $(UTILS_SRC)/visual.h
-braid.o: $(UTILS_SRC)/xshm.h
-braid.o: $(UTILS_SRC)/erase.h
-bubbles.o: $(srcdir)/screenhack.h
-bubbles.o: ../config.h
-bubbles.o: $(UTILS_SRC)/yarandom.h
-bubbles.o: $(UTILS_SRC)/usleep.h
-bubbles.o: $(UTILS_SRC)/resources.h
-bubbles.o: $(UTILS_SRC)/hsv.h
-bubbles.o: $(UTILS_SRC)/colors.h
-bubbles.o: $(UTILS_SRC)/grabscreen.h
-bubbles.o: $(UTILS_SRC)/visual.h
-bubbles.o: $(srcdir)/bubbles.h
-bubbles-default.o: ../config.h
-bubbles-default.o: $(srcdir)/bubbles.h
-bubbles-default.o: $(UTILS_SRC)/yarandom.h
-bubbles-default.o: $(srcdir)/images/bubbles/blood1.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood2.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood3.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood4.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood5.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood6.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood7.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood8.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood9.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood10.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blood11.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue1.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue2.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue3.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue4.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue5.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue6.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue7.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue8.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue9.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue10.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/blue11.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass1.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass2.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass3.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass4.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass5.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass6.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass7.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass8.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass9.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass10.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/glass11.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade1.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade2.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade3.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade4.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade5.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade6.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade7.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade8.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade9.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade10.xpm
-bubbles-default.o: $(srcdir)/images/bubbles/jade11.xpm
-decayscreen.o: $(srcdir)/screenhack.h
-decayscreen.o: ../config.h
-decayscreen.o: $(UTILS_SRC)/yarandom.h
-decayscreen.o: $(UTILS_SRC)/usleep.h
-decayscreen.o: $(UTILS_SRC)/resources.h
-decayscreen.o: $(UTILS_SRC)/hsv.h
-decayscreen.o: $(UTILS_SRC)/colors.h
-decayscreen.o: $(UTILS_SRC)/grabscreen.h
-decayscreen.o: $(UTILS_SRC)/visual.h
-deco.o: $(srcdir)/screenhack.h
-deco.o: ../config.h
-deco.o: $(UTILS_SRC)/yarandom.h
-deco.o: $(UTILS_SRC)/usleep.h
-deco.o: $(UTILS_SRC)/resources.h
-deco.o: $(UTILS_SRC)/hsv.h
-deco.o: $(UTILS_SRC)/colors.h
-deco.o: $(UTILS_SRC)/grabscreen.h
-deco.o: $(UTILS_SRC)/visual.h
-drift.o: $(srcdir)/xlockmore.h
-drift.o: ../config.h
-drift.o: $(srcdir)/xlockmoreI.h
-drift.o: $(srcdir)/screenhack.h
-drift.o: $(UTILS_SRC)/yarandom.h
-drift.o: $(UTILS_SRC)/usleep.h
-drift.o: $(UTILS_SRC)/resources.h
-drift.o: $(UTILS_SRC)/hsv.h
-drift.o: $(UTILS_SRC)/colors.h
-drift.o: $(UTILS_SRC)/grabscreen.h
-drift.o: $(UTILS_SRC)/visual.h
-drift.o: $(UTILS_SRC)/xshm.h
-drift.o: $(UTILS_SRC)/erase.h
-flag.o: $(srcdir)/xlockmore.h
-flag.o: ../config.h
-flag.o: $(srcdir)/xlockmoreI.h
-flag.o: $(srcdir)/screenhack.h
-flag.o: $(UTILS_SRC)/yarandom.h
-flag.o: $(UTILS_SRC)/usleep.h
-flag.o: $(UTILS_SRC)/resources.h
-flag.o: $(UTILS_SRC)/hsv.h
-flag.o: $(UTILS_SRC)/colors.h
-flag.o: $(UTILS_SRC)/grabscreen.h
-flag.o: $(UTILS_SRC)/visual.h
-flag.o: $(UTILS_SRC)/xshm.h
-flag.o: $(srcdir)/images/bob.xbm
-flame.o: $(srcdir)/screenhack.h
-flame.o: ../config.h
-flame.o: $(UTILS_SRC)/yarandom.h
-flame.o: $(UTILS_SRC)/usleep.h
-flame.o: $(UTILS_SRC)/resources.h
-flame.o: $(UTILS_SRC)/hsv.h
-flame.o: $(UTILS_SRC)/colors.h
-flame.o: $(UTILS_SRC)/grabscreen.h
-flame.o: $(UTILS_SRC)/visual.h
-forest.o: $(srcdir)/xlockmore.h
-forest.o: ../config.h
-forest.o: $(srcdir)/xlockmoreI.h
-forest.o: $(srcdir)/screenhack.h
-forest.o: $(UTILS_SRC)/yarandom.h
-forest.o: $(UTILS_SRC)/usleep.h
-forest.o: $(UTILS_SRC)/resources.h
-forest.o: $(UTILS_SRC)/hsv.h
-forest.o: $(UTILS_SRC)/colors.h
-forest.o: $(UTILS_SRC)/grabscreen.h
-forest.o: $(UTILS_SRC)/visual.h
-forest.o: $(UTILS_SRC)/xshm.h
-forest.o: $(UTILS_SRC)/erase.h
-vines.o: $(srcdir)/xlockmore.h
-vines.o: ../config.h
-vines.o: $(srcdir)/xlockmoreI.h
-vines.o: $(srcdir)/screenhack.h
-vines.o: $(UTILS_SRC)/yarandom.h
-vines.o: $(UTILS_SRC)/usleep.h
-vines.o: $(UTILS_SRC)/resources.h
-vines.o: $(UTILS_SRC)/hsv.h
-vines.o: $(UTILS_SRC)/colors.h
-vines.o: $(UTILS_SRC)/grabscreen.h
-vines.o: $(UTILS_SRC)/visual.h
-vines.o: $(UTILS_SRC)/xshm.h
-vines.o: $(UTILS_SRC)/erase.h
-galaxy.o: $(srcdir)/xlockmore.h
-galaxy.o: ../config.h
-galaxy.o: $(srcdir)/xlockmoreI.h
-galaxy.o: $(srcdir)/screenhack.h
-galaxy.o: $(UTILS_SRC)/yarandom.h
-galaxy.o: $(UTILS_SRC)/usleep.h
-galaxy.o: $(UTILS_SRC)/resources.h
-galaxy.o: $(UTILS_SRC)/hsv.h
-galaxy.o: $(UTILS_SRC)/colors.h
-galaxy.o: $(UTILS_SRC)/grabscreen.h
-galaxy.o: $(UTILS_SRC)/visual.h
-galaxy.o: $(UTILS_SRC)/xshm.h
-grav.o: $(srcdir)/xlockmore.h
-grav.o: ../config.h
-grav.o: $(srcdir)/xlockmoreI.h
-grav.o: $(srcdir)/screenhack.h
-grav.o: $(UTILS_SRC)/yarandom.h
-grav.o: $(UTILS_SRC)/usleep.h
-grav.o: $(UTILS_SRC)/resources.h
-grav.o: $(UTILS_SRC)/hsv.h
-grav.o: $(UTILS_SRC)/colors.h
-grav.o: $(UTILS_SRC)/grabscreen.h
-grav.o: $(UTILS_SRC)/visual.h
-grav.o: $(UTILS_SRC)/xshm.h
-greynetic.o: $(srcdir)/screenhack.h
-greynetic.o: ../config.h
-greynetic.o: $(UTILS_SRC)/yarandom.h
-greynetic.o: $(UTILS_SRC)/usleep.h
-greynetic.o: $(UTILS_SRC)/resources.h
-greynetic.o: $(UTILS_SRC)/hsv.h
-greynetic.o: $(UTILS_SRC)/colors.h
-greynetic.o: $(UTILS_SRC)/grabscreen.h
-greynetic.o: $(UTILS_SRC)/visual.h
-halo.o: $(srcdir)/screenhack.h
-halo.o: ../config.h
-halo.o: $(UTILS_SRC)/yarandom.h
-halo.o: $(UTILS_SRC)/usleep.h
-halo.o: $(UTILS_SRC)/resources.h
-halo.o: $(UTILS_SRC)/hsv.h
-halo.o: $(UTILS_SRC)/colors.h
-halo.o: $(UTILS_SRC)/grabscreen.h
-halo.o: $(UTILS_SRC)/visual.h
-helix.o: $(srcdir)/screenhack.h
-helix.o: ../config.h
-helix.o: $(UTILS_SRC)/yarandom.h
-helix.o: $(UTILS_SRC)/usleep.h
-helix.o: $(UTILS_SRC)/resources.h
-helix.o: $(UTILS_SRC)/hsv.h
-helix.o: $(UTILS_SRC)/colors.h
-helix.o: $(UTILS_SRC)/grabscreen.h
-helix.o: $(UTILS_SRC)/visual.h
-helix.o: $(UTILS_SRC)/erase.h
-hopalong.o: $(srcdir)/xlockmore.h
-hopalong.o: ../config.h
-hopalong.o: $(srcdir)/xlockmoreI.h
-hopalong.o: $(srcdir)/screenhack.h
-hopalong.o: $(UTILS_SRC)/yarandom.h
-hopalong.o: $(UTILS_SRC)/usleep.h
-hopalong.o: $(UTILS_SRC)/resources.h
-hopalong.o: $(UTILS_SRC)/hsv.h
-hopalong.o: $(UTILS_SRC)/colors.h
-hopalong.o: $(UTILS_SRC)/grabscreen.h
-hopalong.o: $(UTILS_SRC)/visual.h
-hopalong.o: $(UTILS_SRC)/xshm.h
-hopalong.o: $(UTILS_SRC)/erase.h
-hypercube.o: $(srcdir)/screenhack.h
-hypercube.o: ../config.h
-hypercube.o: $(UTILS_SRC)/yarandom.h
-hypercube.o: $(UTILS_SRC)/usleep.h
-hypercube.o: $(UTILS_SRC)/resources.h
-hypercube.o: $(UTILS_SRC)/hsv.h
-hypercube.o: $(UTILS_SRC)/colors.h
-hypercube.o: $(UTILS_SRC)/grabscreen.h
-hypercube.o: $(UTILS_SRC)/visual.h
-ifs.o: $(srcdir)/xlockmore.h
-ifs.o: ../config.h
-ifs.o: $(srcdir)/xlockmoreI.h
-ifs.o: $(srcdir)/screenhack.h
-ifs.o: $(UTILS_SRC)/yarandom.h
-ifs.o: $(UTILS_SRC)/usleep.h
-ifs.o: $(UTILS_SRC)/resources.h
-ifs.o: $(UTILS_SRC)/hsv.h
-ifs.o: $(UTILS_SRC)/colors.h
-ifs.o: $(UTILS_SRC)/grabscreen.h
-ifs.o: $(UTILS_SRC)/visual.h
-ifs.o: $(UTILS_SRC)/xshm.h
-imsmap.o: $(srcdir)/screenhack.h
-imsmap.o: ../config.h
-imsmap.o: $(UTILS_SRC)/yarandom.h
-imsmap.o: $(UTILS_SRC)/usleep.h
-imsmap.o: $(UTILS_SRC)/resources.h
-imsmap.o: $(UTILS_SRC)/hsv.h
-imsmap.o: $(UTILS_SRC)/colors.h
-imsmap.o: $(UTILS_SRC)/grabscreen.h
-imsmap.o: $(UTILS_SRC)/visual.h
-julia.o: $(srcdir)/xlockmore.h
-julia.o: ../config.h
-julia.o: $(srcdir)/xlockmoreI.h
-julia.o: $(srcdir)/screenhack.h
-julia.o: $(UTILS_SRC)/yarandom.h
-julia.o: $(UTILS_SRC)/usleep.h
-julia.o: $(UTILS_SRC)/resources.h
-julia.o: $(UTILS_SRC)/hsv.h
-julia.o: $(UTILS_SRC)/colors.h
-julia.o: $(UTILS_SRC)/grabscreen.h
-julia.o: $(UTILS_SRC)/visual.h
-julia.o: $(UTILS_SRC)/xshm.h
-kaleidescope.o: $(UTILS_SRC)/spline.h
-kaleidescope.o: $(srcdir)/screenhack.h
-kaleidescope.o: ../config.h
-kaleidescope.o: $(UTILS_SRC)/yarandom.h
-kaleidescope.o: $(UTILS_SRC)/usleep.h
-kaleidescope.o: $(UTILS_SRC)/resources.h
-kaleidescope.o: $(UTILS_SRC)/hsv.h
-kaleidescope.o: $(UTILS_SRC)/colors.h
-kaleidescope.o: $(UTILS_SRC)/grabscreen.h
-kaleidescope.o: $(UTILS_SRC)/visual.h
-laser.o: $(srcdir)/xlockmore.h
-laser.o: ../config.h
-laser.o: $(srcdir)/xlockmoreI.h
-laser.o: $(srcdir)/screenhack.h
-laser.o: $(UTILS_SRC)/yarandom.h
-laser.o: $(UTILS_SRC)/usleep.h
-laser.o: $(UTILS_SRC)/resources.h
-laser.o: $(UTILS_SRC)/hsv.h
-laser.o: $(UTILS_SRC)/colors.h
-laser.o: $(UTILS_SRC)/grabscreen.h
-laser.o: $(UTILS_SRC)/visual.h
-laser.o: $(UTILS_SRC)/xshm.h
-lightning.o: $(srcdir)/xlockmore.h
-lightning.o: ../config.h
-lightning.o: $(srcdir)/xlockmoreI.h
-lightning.o: $(srcdir)/screenhack.h
-lightning.o: $(UTILS_SRC)/yarandom.h
-lightning.o: $(UTILS_SRC)/usleep.h
-lightning.o: $(UTILS_SRC)/resources.h
-lightning.o: $(UTILS_SRC)/hsv.h
-lightning.o: $(UTILS_SRC)/colors.h
-lightning.o: $(UTILS_SRC)/grabscreen.h
-lightning.o: $(UTILS_SRC)/visual.h
-lightning.o: $(UTILS_SRC)/xshm.h
-lisa.o: $(srcdir)/xlockmore.h
-lisa.o: ../config.h
-lisa.o: $(srcdir)/xlockmoreI.h
-lisa.o: $(srcdir)/screenhack.h
-lisa.o: $(UTILS_SRC)/yarandom.h
-lisa.o: $(UTILS_SRC)/usleep.h
-lisa.o: $(UTILS_SRC)/resources.h
-lisa.o: $(UTILS_SRC)/hsv.h
-lisa.o: $(UTILS_SRC)/colors.h
-lisa.o: $(UTILS_SRC)/grabscreen.h
-lisa.o: $(UTILS_SRC)/visual.h
-lisa.o: $(UTILS_SRC)/xshm.h
-lmorph.o: $(srcdir)/screenhack.h
-lmorph.o: ../config.h
-lmorph.o: $(UTILS_SRC)/yarandom.h
-lmorph.o: $(UTILS_SRC)/usleep.h
-lmorph.o: $(UTILS_SRC)/resources.h
-lmorph.o: $(UTILS_SRC)/hsv.h
-lmorph.o: $(UTILS_SRC)/colors.h
-lmorph.o: $(UTILS_SRC)/grabscreen.h
-lmorph.o: $(UTILS_SRC)/visual.h
-maze.o: $(srcdir)/screenhack.h
-maze.o: ../config.h
-maze.o: $(UTILS_SRC)/yarandom.h
-maze.o: $(UTILS_SRC)/usleep.h
-maze.o: $(UTILS_SRC)/resources.h
-maze.o: $(UTILS_SRC)/hsv.h
-maze.o: $(UTILS_SRC)/colors.h
-maze.o: $(UTILS_SRC)/grabscreen.h
-maze.o: $(UTILS_SRC)/visual.h
-maze.o: $(UTILS_SRC)/erase.h
-moire.o: $(srcdir)/screenhack.h
-moire.o: ../config.h
-moire.o: $(UTILS_SRC)/yarandom.h
-moire.o: $(UTILS_SRC)/usleep.h
-moire.o: $(UTILS_SRC)/resources.h
-moire.o: $(UTILS_SRC)/hsv.h
-moire.o: $(UTILS_SRC)/colors.h
-moire.o: $(UTILS_SRC)/grabscreen.h
-moire.o: $(UTILS_SRC)/visual.h
-moire.o: $(UTILS_SRC)/xshm.h
-noseguy.o: $(srcdir)/screenhack.h
-noseguy.o: ../config.h
-noseguy.o: $(UTILS_SRC)/yarandom.h
-noseguy.o: $(UTILS_SRC)/usleep.h
-noseguy.o: $(UTILS_SRC)/resources.h
-noseguy.o: $(UTILS_SRC)/hsv.h
-noseguy.o: $(UTILS_SRC)/colors.h
-noseguy.o: $(UTILS_SRC)/grabscreen.h
-noseguy.o: $(UTILS_SRC)/visual.h
-noseguy.o: $(srcdir)/images/noseguy/nose-f1.xpm
-noseguy.o: $(srcdir)/images/noseguy/nose-f2.xpm
-noseguy.o: $(srcdir)/images/noseguy/nose-f3.xpm
-noseguy.o: $(srcdir)/images/noseguy/nose-f4.xpm
-noseguy.o: $(srcdir)/images/noseguy/nose-l1.xpm
-noseguy.o: $(srcdir)/images/noseguy/nose-l2.xpm
-noseguy.o: $(srcdir)/images/noseguy/nose-r1.xpm
-noseguy.o: $(srcdir)/images/noseguy/nose-r2.xpm
-pedal.o: $(srcdir)/screenhack.h
-pedal.o: ../config.h
-pedal.o: $(UTILS_SRC)/yarandom.h
-pedal.o: $(UTILS_SRC)/usleep.h
-pedal.o: $(UTILS_SRC)/resources.h
-pedal.o: $(UTILS_SRC)/hsv.h
-pedal.o: $(UTILS_SRC)/colors.h
-pedal.o: $(UTILS_SRC)/grabscreen.h
-pedal.o: $(UTILS_SRC)/visual.h
-penrose.o: $(srcdir)/xlockmore.h
-penrose.o: ../config.h
-penrose.o: $(srcdir)/xlockmoreI.h
-penrose.o: $(srcdir)/screenhack.h
-penrose.o: $(UTILS_SRC)/yarandom.h
-penrose.o: $(UTILS_SRC)/usleep.h
-penrose.o: $(UTILS_SRC)/resources.h
-penrose.o: $(UTILS_SRC)/hsv.h
-penrose.o: $(UTILS_SRC)/colors.h
-penrose.o: $(UTILS_SRC)/grabscreen.h
-penrose.o: $(UTILS_SRC)/visual.h
-penrose.o: $(UTILS_SRC)/xshm.h
-pyro.o: $(srcdir)/screenhack.h
-pyro.o: ../config.h
-pyro.o: $(UTILS_SRC)/yarandom.h
-pyro.o: $(UTILS_SRC)/usleep.h
-pyro.o: $(UTILS_SRC)/resources.h
-pyro.o: $(UTILS_SRC)/hsv.h
-pyro.o: $(UTILS_SRC)/colors.h
-pyro.o: $(UTILS_SRC)/grabscreen.h
-pyro.o: $(UTILS_SRC)/visual.h
-qix.o: $(srcdir)/screenhack.h
-qix.o: ../config.h
-qix.o: $(UTILS_SRC)/yarandom.h
-qix.o: $(UTILS_SRC)/usleep.h
-qix.o: $(UTILS_SRC)/resources.h
-qix.o: $(UTILS_SRC)/hsv.h
-qix.o: $(UTILS_SRC)/colors.h
-qix.o: $(UTILS_SRC)/grabscreen.h
-qix.o: $(UTILS_SRC)/visual.h
-qix.o: $(UTILS_SRC)/alpha.h
-rocks.o: $(srcdir)/screenhack.h
-rocks.o: ../config.h
-rocks.o: $(UTILS_SRC)/yarandom.h
-rocks.o: $(UTILS_SRC)/usleep.h
-rocks.o: $(UTILS_SRC)/resources.h
-rocks.o: $(UTILS_SRC)/hsv.h
-rocks.o: $(UTILS_SRC)/colors.h
-rocks.o: $(UTILS_SRC)/grabscreen.h
-rocks.o: $(UTILS_SRC)/visual.h
-rorschach.o: $(srcdir)/screenhack.h
-rorschach.o: ../config.h
-rorschach.o: $(UTILS_SRC)/yarandom.h
-rorschach.o: $(UTILS_SRC)/usleep.h
-rorschach.o: $(UTILS_SRC)/resources.h
-rorschach.o: $(UTILS_SRC)/hsv.h
-rorschach.o: $(UTILS_SRC)/colors.h
-rorschach.o: $(UTILS_SRC)/grabscreen.h
-rorschach.o: $(UTILS_SRC)/visual.h
-rorschach.o: $(UTILS_SRC)/erase.h
-screenhack.o: $(UTILS_SRC)/xmu.h
-screenhack.o: $(srcdir)/screenhack.h
-screenhack.o: ../config.h
-screenhack.o: $(UTILS_SRC)/yarandom.h
-screenhack.o: $(UTILS_SRC)/usleep.h
-screenhack.o: $(UTILS_SRC)/resources.h
-screenhack.o: $(UTILS_SRC)/hsv.h
-screenhack.o: $(UTILS_SRC)/colors.h
-screenhack.o: $(UTILS_SRC)/grabscreen.h
-screenhack.o: $(UTILS_SRC)/visual.h
-screenhack.o: $(UTILS_SRC)/version.h
-screenhack.o: $(UTILS_SRC)/vroot.h
-sierpinski.o: $(srcdir)/xlockmore.h
-sierpinski.o: ../config.h
-sierpinski.o: $(srcdir)/xlockmoreI.h
-sierpinski.o: $(srcdir)/screenhack.h
-sierpinski.o: $(UTILS_SRC)/yarandom.h
-sierpinski.o: $(UTILS_SRC)/usleep.h
-sierpinski.o: $(UTILS_SRC)/resources.h
-sierpinski.o: $(UTILS_SRC)/hsv.h
-sierpinski.o: $(UTILS_SRC)/colors.h
-sierpinski.o: $(UTILS_SRC)/grabscreen.h
-sierpinski.o: $(UTILS_SRC)/visual.h
-sierpinski.o: $(UTILS_SRC)/xshm.h
-slidescreen.o: $(srcdir)/screenhack.h
-slidescreen.o: ../config.h
-slidescreen.o: $(UTILS_SRC)/yarandom.h
-slidescreen.o: $(UTILS_SRC)/usleep.h
-slidescreen.o: $(UTILS_SRC)/resources.h
-slidescreen.o: $(UTILS_SRC)/hsv.h
-slidescreen.o: $(UTILS_SRC)/colors.h
-slidescreen.o: $(UTILS_SRC)/grabscreen.h
-slidescreen.o: $(UTILS_SRC)/visual.h
-slip.o: $(srcdir)/xlockmore.h
-slip.o: ../config.h
-slip.o: $(srcdir)/xlockmoreI.h
-slip.o: $(srcdir)/screenhack.h
-slip.o: $(UTILS_SRC)/yarandom.h
-slip.o: $(UTILS_SRC)/usleep.h
-slip.o: $(UTILS_SRC)/resources.h
-slip.o: $(UTILS_SRC)/hsv.h
-slip.o: $(UTILS_SRC)/colors.h
-slip.o: $(UTILS_SRC)/grabscreen.h
-slip.o: $(UTILS_SRC)/visual.h
-slip.o: $(UTILS_SRC)/xshm.h
-sphere.o: $(srcdir)/xlockmore.h
-sphere.o: ../config.h
-sphere.o: $(srcdir)/xlockmoreI.h
-sphere.o: $(srcdir)/screenhack.h
-sphere.o: $(UTILS_SRC)/yarandom.h
-sphere.o: $(UTILS_SRC)/usleep.h
-sphere.o: $(UTILS_SRC)/resources.h
-sphere.o: $(UTILS_SRC)/hsv.h
-sphere.o: $(UTILS_SRC)/colors.h
-sphere.o: $(UTILS_SRC)/grabscreen.h
-sphere.o: $(UTILS_SRC)/visual.h
-sphere.o: $(UTILS_SRC)/xshm.h
-spiral.o: $(srcdir)/xlockmore.h
-spiral.o: ../config.h
-spiral.o: $(srcdir)/xlockmoreI.h
-spiral.o: $(srcdir)/screenhack.h
-spiral.o: $(UTILS_SRC)/yarandom.h
-spiral.o: $(UTILS_SRC)/usleep.h
-spiral.o: $(UTILS_SRC)/resources.h
-spiral.o: $(UTILS_SRC)/hsv.h
-spiral.o: $(UTILS_SRC)/colors.h
-spiral.o: $(UTILS_SRC)/grabscreen.h
-spiral.o: $(UTILS_SRC)/visual.h
-spiral.o: $(UTILS_SRC)/xshm.h
-strange.o: $(srcdir)/xlockmore.h
-strange.o: ../config.h
-strange.o: $(srcdir)/xlockmoreI.h
-strange.o: $(srcdir)/screenhack.h
-strange.o: $(UTILS_SRC)/yarandom.h
-strange.o: $(UTILS_SRC)/usleep.h
-strange.o: $(UTILS_SRC)/resources.h
-strange.o: $(UTILS_SRC)/hsv.h
-strange.o: $(UTILS_SRC)/colors.h
-strange.o: $(UTILS_SRC)/grabscreen.h
-strange.o: $(UTILS_SRC)/visual.h
-strange.o: $(UTILS_SRC)/xshm.h
-swirl.o: $(srcdir)/xlockmore.h
-swirl.o: ../config.h
-swirl.o: $(srcdir)/xlockmoreI.h
-swirl.o: $(srcdir)/screenhack.h
-swirl.o: $(UTILS_SRC)/yarandom.h
-swirl.o: $(UTILS_SRC)/usleep.h
-swirl.o: $(UTILS_SRC)/resources.h
-swirl.o: $(UTILS_SRC)/hsv.h
-swirl.o: $(UTILS_SRC)/colors.h
-swirl.o: $(UTILS_SRC)/grabscreen.h
-swirl.o: $(UTILS_SRC)/visual.h
-swirl.o: $(UTILS_SRC)/xshm.h
-xlockmore.o: $(srcdir)/screenhack.h
-xlockmore.o: ../config.h
-xlockmore.o: $(UTILS_SRC)/yarandom.h
-xlockmore.o: $(UTILS_SRC)/usleep.h
-xlockmore.o: $(UTILS_SRC)/resources.h
-xlockmore.o: $(UTILS_SRC)/hsv.h
-xlockmore.o: $(UTILS_SRC)/colors.h
-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
-goop.o: $(UTILS_SRC)/usleep.h
-goop.o: $(UTILS_SRC)/resources.h
-goop.o: $(UTILS_SRC)/hsv.h
-goop.o: $(UTILS_SRC)/colors.h
-goop.o: $(UTILS_SRC)/grabscreen.h
-goop.o: $(UTILS_SRC)/visual.h
-goop.o: $(UTILS_SRC)/spline.h
-goop.o: $(UTILS_SRC)/alpha.h
-starfish.o: $(srcdir)/screenhack.h
-starfish.o: ../config.h
-starfish.o: $(UTILS_SRC)/yarandom.h
-starfish.o: $(UTILS_SRC)/usleep.h
-starfish.o: $(UTILS_SRC)/resources.h
-starfish.o: $(UTILS_SRC)/hsv.h
-starfish.o: $(UTILS_SRC)/colors.h
-starfish.o: $(UTILS_SRC)/grabscreen.h
-starfish.o: $(UTILS_SRC)/visual.h
-starfish.o: $(UTILS_SRC)/spline.h
-munch.o: $(srcdir)/screenhack.h
-munch.o: ../config.h
-munch.o: $(UTILS_SRC)/yarandom.h
-munch.o: $(UTILS_SRC)/usleep.h
-munch.o: $(UTILS_SRC)/resources.h
-munch.o: $(UTILS_SRC)/hsv.h
-munch.o: $(UTILS_SRC)/colors.h
-munch.o: $(UTILS_SRC)/grabscreen.h
-munch.o: $(UTILS_SRC)/visual.h
-fadeplot.o: $(srcdir)/xlockmore.h
-fadeplot.o: ../config.h
-fadeplot.o: $(srcdir)/xlockmoreI.h
-fadeplot.o: $(srcdir)/screenhack.h
-fadeplot.o: $(UTILS_SRC)/yarandom.h
-fadeplot.o: $(UTILS_SRC)/usleep.h
-fadeplot.o: $(UTILS_SRC)/resources.h
-fadeplot.o: $(UTILS_SRC)/hsv.h
-fadeplot.o: $(UTILS_SRC)/colors.h
-fadeplot.o: $(UTILS_SRC)/grabscreen.h
-fadeplot.o: $(UTILS_SRC)/visual.h
-fadeplot.o: $(UTILS_SRC)/xshm.h
-rd-bomb.o: $(srcdir)/screenhack.h
-rd-bomb.o: ../config.h
-rd-bomb.o: $(UTILS_SRC)/yarandom.h
-rd-bomb.o: $(UTILS_SRC)/usleep.h
-rd-bomb.o: $(UTILS_SRC)/resources.h
-rd-bomb.o: $(UTILS_SRC)/hsv.h
-rd-bomb.o: $(UTILS_SRC)/colors.h
-rd-bomb.o: $(UTILS_SRC)/grabscreen.h
-rd-bomb.o: $(UTILS_SRC)/visual.h
-rd-bomb.o: $(UTILS_SRC)/xshm.h
-coral.o: $(srcdir)/screenhack.h
-coral.o: ../config.h
-coral.o: $(UTILS_SRC)/yarandom.h
-coral.o: $(UTILS_SRC)/usleep.h
-coral.o: $(UTILS_SRC)/resources.h
-coral.o: $(UTILS_SRC)/hsv.h
-coral.o: $(UTILS_SRC)/colors.h
-coral.o: $(UTILS_SRC)/grabscreen.h
-coral.o: $(UTILS_SRC)/visual.h
-coral.o: $(UTILS_SRC)/erase.h
-mountain.o: $(srcdir)/xlockmore.h
-mountain.o: ../config.h
-mountain.o: $(srcdir)/xlockmoreI.h
-mountain.o: $(srcdir)/screenhack.h
-mountain.o: $(UTILS_SRC)/yarandom.h
-mountain.o: $(UTILS_SRC)/usleep.h
-mountain.o: $(UTILS_SRC)/resources.h
-mountain.o: $(UTILS_SRC)/hsv.h
-mountain.o: $(UTILS_SRC)/colors.h
-mountain.o: $(UTILS_SRC)/grabscreen.h
-mountain.o: $(UTILS_SRC)/visual.h
-mountain.o: $(UTILS_SRC)/xshm.h
-triangle.o: $(srcdir)/xlockmore.h
-triangle.o: ../config.h
-triangle.o: $(srcdir)/xlockmoreI.h
-triangle.o: $(srcdir)/screenhack.h
-triangle.o: $(UTILS_SRC)/yarandom.h
-triangle.o: $(UTILS_SRC)/usleep.h
-triangle.o: $(UTILS_SRC)/resources.h
-triangle.o: $(UTILS_SRC)/hsv.h
-triangle.o: $(UTILS_SRC)/colors.h
-triangle.o: $(UTILS_SRC)/grabscreen.h
-triangle.o: $(UTILS_SRC)/visual.h
-triangle.o: $(UTILS_SRC)/xshm.h
-lissie.o: $(srcdir)/xlockmore.h
-lissie.o: ../config.h
-lissie.o: $(srcdir)/xlockmoreI.h
-lissie.o: $(srcdir)/screenhack.h
-lissie.o: $(UTILS_SRC)/yarandom.h
-lissie.o: $(UTILS_SRC)/usleep.h
-lissie.o: $(UTILS_SRC)/resources.h
-lissie.o: $(UTILS_SRC)/hsv.h
-lissie.o: $(UTILS_SRC)/colors.h
-lissie.o: $(UTILS_SRC)/grabscreen.h
-lissie.o: $(UTILS_SRC)/visual.h
-lissie.o: $(UTILS_SRC)/xshm.h
-worm.o: $(srcdir)/xlockmore.h
-worm.o: ../config.h
-worm.o: $(srcdir)/xlockmoreI.h
-worm.o: $(srcdir)/screenhack.h
-worm.o: $(UTILS_SRC)/yarandom.h
-worm.o: $(UTILS_SRC)/usleep.h
-worm.o: $(UTILS_SRC)/resources.h
-worm.o: $(UTILS_SRC)/hsv.h
-worm.o: $(UTILS_SRC)/colors.h
-worm.o: $(UTILS_SRC)/grabscreen.h
-worm.o: $(UTILS_SRC)/visual.h
-worm.o: $(UTILS_SRC)/xshm.h
-rotor.o: $(srcdir)/xlockmore.h
-rotor.o: ../config.h
-rotor.o: $(srcdir)/xlockmoreI.h
-rotor.o: $(srcdir)/screenhack.h
-rotor.o: $(UTILS_SRC)/yarandom.h
-rotor.o: $(UTILS_SRC)/usleep.h
-rotor.o: $(UTILS_SRC)/resources.h
-rotor.o: $(UTILS_SRC)/hsv.h
-rotor.o: $(UTILS_SRC)/colors.h
-rotor.o: $(UTILS_SRC)/grabscreen.h
-rotor.o: $(UTILS_SRC)/visual.h
-rotor.o: $(UTILS_SRC)/xshm.h
-ant.o: $(srcdir)/xlockmore.h
-ant.o: ../config.h
-ant.o: $(srcdir)/xlockmoreI.h
-ant.o: $(srcdir)/screenhack.h
-ant.o: $(UTILS_SRC)/yarandom.h
-ant.o: $(UTILS_SRC)/usleep.h
-ant.o: $(UTILS_SRC)/resources.h
-ant.o: $(UTILS_SRC)/hsv.h
-ant.o: $(UTILS_SRC)/colors.h
-ant.o: $(UTILS_SRC)/grabscreen.h
-ant.o: $(UTILS_SRC)/visual.h
-ant.o: $(UTILS_SRC)/xshm.h
-ant.o: $(UTILS_SRC)/erase.h
-ant.o: $(srcdir)/automata.h
-xjack.o: $(srcdir)/screenhack.h
-xjack.o: ../config.h
-xjack.o: $(UTILS_SRC)/yarandom.h
-xjack.o: $(UTILS_SRC)/usleep.h
-xjack.o: $(UTILS_SRC)/resources.h
-xjack.o: $(UTILS_SRC)/hsv.h
-xjack.o: $(UTILS_SRC)/colors.h
-xjack.o: $(UTILS_SRC)/grabscreen.h
-xjack.o: $(UTILS_SRC)/visual.h
-xlyap.o: $(srcdir)/screenhack.h
-xlyap.o: ../config.h
-xlyap.o: $(UTILS_SRC)/yarandom.h
-xlyap.o: $(UTILS_SRC)/usleep.h
-xlyap.o: $(UTILS_SRC)/resources.h
-xlyap.o: $(UTILS_SRC)/hsv.h
-xlyap.o: $(UTILS_SRC)/colors.h
-xlyap.o: $(UTILS_SRC)/grabscreen.h
-xlyap.o: $(UTILS_SRC)/visual.h
-xlyap.o: $(UTILS_SRC)/vroot.h
-jigsaw.o: $(srcdir)/screenhack.h
-jigsaw.o: ../config.h
-jigsaw.o: $(UTILS_SRC)/yarandom.h
-jigsaw.o: $(UTILS_SRC)/usleep.h
-jigsaw.o: $(UTILS_SRC)/resources.h
-jigsaw.o: $(UTILS_SRC)/hsv.h
-jigsaw.o: $(UTILS_SRC)/colors.h
-jigsaw.o: $(UTILS_SRC)/grabscreen.h
-jigsaw.o: $(UTILS_SRC)/visual.h
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_n_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_ne_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_e_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_se_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_s_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_sw_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_w_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_nw_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_n_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_ne_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_e_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_se_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_s_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_sw_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_w_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_nw_h.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_n_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_ne_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_e_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_se_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_s_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_sw_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_w_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_nw_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_n_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_ne_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_e_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_se_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_s_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_sw_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_w_f.xbm
-jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_nw_f.xbm
-xscreensaver-sgigl.o: $(UTILS_SRC)/vroot.h
-cynosure.o: $(srcdir)/screenhack.h
-cynosure.o: ../config.h
-cynosure.o: $(UTILS_SRC)/yarandom.h
-cynosure.o: $(UTILS_SRC)/usleep.h
-cynosure.o: $(UTILS_SRC)/resources.h
-cynosure.o: $(UTILS_SRC)/hsv.h
-cynosure.o: $(UTILS_SRC)/colors.h
-cynosure.o: $(UTILS_SRC)/grabscreen.h
-cynosure.o: $(UTILS_SRC)/visual.h
-moire2.o: $(srcdir)/screenhack.h
-moire2.o: ../config.h
-moire2.o: $(UTILS_SRC)/yarandom.h
-moire2.o: $(UTILS_SRC)/usleep.h
-moire2.o: $(UTILS_SRC)/resources.h
-moire2.o: $(UTILS_SRC)/hsv.h
-moire2.o: $(UTILS_SRC)/colors.h
-moire2.o: $(UTILS_SRC)/grabscreen.h
-moire2.o: $(UTILS_SRC)/visual.h
-moire2.o: $(UTILS_SRC)/xdbe.h
-flow.o: $(srcdir)/xlockmore.h
-flow.o: ../config.h
-flow.o: $(srcdir)/xlockmoreI.h
-flow.o: $(srcdir)/screenhack.h
-flow.o: $(UTILS_SRC)/yarandom.h
-flow.o: $(UTILS_SRC)/usleep.h
-flow.o: $(UTILS_SRC)/resources.h
-flow.o: $(UTILS_SRC)/hsv.h
-flow.o: $(UTILS_SRC)/colors.h
-flow.o: $(UTILS_SRC)/grabscreen.h
-flow.o: $(UTILS_SRC)/visual.h
-flow.o: $(UTILS_SRC)/xshm.h
-flow.o: $(UTILS_SRC)/erase.h
-epicycle.o: $(srcdir)/screenhack.h
-epicycle.o: ../config.h
-epicycle.o: $(UTILS_SRC)/yarandom.h
-epicycle.o: $(UTILS_SRC)/usleep.h
-epicycle.o: $(UTILS_SRC)/resources.h
-epicycle.o: $(UTILS_SRC)/hsv.h
-epicycle.o: $(UTILS_SRC)/colors.h
-epicycle.o: $(UTILS_SRC)/grabscreen.h
-epicycle.o: $(UTILS_SRC)/visual.h
-epicycle.o: $(UTILS_SRC)/erase.h
-interference.o: $(srcdir)/screenhack.h
-interference.o: ../config.h
-interference.o: $(UTILS_SRC)/yarandom.h
-interference.o: $(UTILS_SRC)/usleep.h
-interference.o: $(UTILS_SRC)/resources.h
-interference.o: $(UTILS_SRC)/hsv.h
-interference.o: $(UTILS_SRC)/colors.h
-interference.o: $(UTILS_SRC)/grabscreen.h
-interference.o: $(UTILS_SRC)/visual.h
-interference.o: $(UTILS_SRC)/xdbe.h
-truchet.o: $(srcdir)/screenhack.h
-truchet.o: ../config.h
-truchet.o: $(UTILS_SRC)/yarandom.h
-truchet.o: $(UTILS_SRC)/usleep.h
-truchet.o: $(UTILS_SRC)/resources.h
-truchet.o: $(UTILS_SRC)/hsv.h
-truchet.o: $(UTILS_SRC)/colors.h
-truchet.o: $(UTILS_SRC)/grabscreen.h
-truchet.o: $(UTILS_SRC)/visual.h
-bsod.o: $(srcdir)/screenhack.h
-bsod.o: ../config.h
-bsod.o: $(UTILS_SRC)/yarandom.h
-bsod.o: $(UTILS_SRC)/usleep.h
-bsod.o: $(UTILS_SRC)/resources.h
-bsod.o: $(UTILS_SRC)/hsv.h
-bsod.o: $(UTILS_SRC)/colors.h
-bsod.o: $(UTILS_SRC)/grabscreen.h
-bsod.o: $(UTILS_SRC)/visual.h
-bsod.o: $(srcdir)/images/amiga.xpm
-bsod.o: $(srcdir)/images/atari.xbm
-bsod.o: $(srcdir)/images/mac.xbm
-crystal.o: $(srcdir)/xlockmore.h
-crystal.o: ../config.h
-crystal.o: $(srcdir)/xlockmoreI.h
-crystal.o: $(srcdir)/screenhack.h
-crystal.o: $(UTILS_SRC)/yarandom.h
-crystal.o: $(UTILS_SRC)/usleep.h
-crystal.o: $(UTILS_SRC)/resources.h
-crystal.o: $(UTILS_SRC)/hsv.h
-crystal.o: $(UTILS_SRC)/colors.h
-crystal.o: $(UTILS_SRC)/grabscreen.h
-crystal.o: $(UTILS_SRC)/visual.h
-crystal.o: $(UTILS_SRC)/xshm.h
-discrete.o: $(srcdir)/xlockmore.h
-discrete.o: ../config.h
-discrete.o: $(srcdir)/xlockmoreI.h
-discrete.o: $(srcdir)/screenhack.h
-discrete.o: $(UTILS_SRC)/yarandom.h
-discrete.o: $(UTILS_SRC)/usleep.h
-discrete.o: $(UTILS_SRC)/resources.h
-discrete.o: $(UTILS_SRC)/hsv.h
-discrete.o: $(UTILS_SRC)/colors.h
-discrete.o: $(UTILS_SRC)/grabscreen.h
-discrete.o: $(UTILS_SRC)/visual.h
-discrete.o: $(UTILS_SRC)/xshm.h
-discrete.o: $(UTILS_SRC)/erase.h
-distort.o: $(srcdir)/screenhack.h
-distort.o: ../config.h
-distort.o: $(UTILS_SRC)/yarandom.h
-distort.o: $(UTILS_SRC)/usleep.h
-distort.o: $(UTILS_SRC)/resources.h
-distort.o: $(UTILS_SRC)/hsv.h
-distort.o: $(UTILS_SRC)/colors.h
-distort.o: $(UTILS_SRC)/grabscreen.h
-distort.o: $(UTILS_SRC)/visual.h
-distort.o: $(UTILS_SRC)/xshm.h
-kumppa.o: $(srcdir)/screenhack.h
-kumppa.o: ../config.h
-kumppa.o: $(UTILS_SRC)/yarandom.h
-kumppa.o: $(UTILS_SRC)/usleep.h
-kumppa.o: $(UTILS_SRC)/resources.h
-kumppa.o: $(UTILS_SRC)/hsv.h
-kumppa.o: $(UTILS_SRC)/colors.h
-kumppa.o: $(UTILS_SRC)/grabscreen.h
-kumppa.o: $(UTILS_SRC)/visual.h
-kumppa.o: $(UTILS_SRC)/xdbe.h
-sonar.o: $(srcdir)/screenhack.h
-sonar.o: ../config.h
-sonar.o: $(UTILS_SRC)/yarandom.h
-sonar.o: $(UTILS_SRC)/usleep.h
-sonar.o: $(UTILS_SRC)/resources.h
-sonar.o: $(UTILS_SRC)/hsv.h
-sonar.o: $(UTILS_SRC)/colors.h
-sonar.o: $(UTILS_SRC)/grabscreen.h
-sonar.o: $(UTILS_SRC)/visual.h
-demon.o: $(srcdir)/xlockmore.h
-demon.o: ../config.h
-demon.o: $(srcdir)/xlockmoreI.h
-demon.o: $(srcdir)/screenhack.h
-demon.o: $(UTILS_SRC)/yarandom.h
-demon.o: $(UTILS_SRC)/usleep.h
-demon.o: $(UTILS_SRC)/resources.h
-demon.o: $(UTILS_SRC)/hsv.h
-demon.o: $(UTILS_SRC)/colors.h
-demon.o: $(UTILS_SRC)/grabscreen.h
-demon.o: $(UTILS_SRC)/visual.h
-demon.o: $(UTILS_SRC)/xshm.h
-demon.o: $(srcdir)/automata.h
-loop.o: $(srcdir)/xlockmore.h
-loop.o: ../config.h
-loop.o: $(srcdir)/xlockmoreI.h
-loop.o: $(srcdir)/screenhack.h
-loop.o: $(UTILS_SRC)/yarandom.h
-loop.o: $(UTILS_SRC)/usleep.h
-loop.o: $(UTILS_SRC)/resources.h
-loop.o: $(UTILS_SRC)/hsv.h
-loop.o: $(UTILS_SRC)/colors.h
-loop.o: $(UTILS_SRC)/grabscreen.h
-loop.o: $(UTILS_SRC)/visual.h
-loop.o: $(UTILS_SRC)/xshm.h
-loop.o: $(srcdir)/automata.h
-t3d.o: $(srcdir)/screenhack.h
-t3d.o: ../config.h
-t3d.o: $(UTILS_SRC)/yarandom.h
-t3d.o: $(UTILS_SRC)/usleep.h
-t3d.o: $(UTILS_SRC)/resources.h
-t3d.o: $(UTILS_SRC)/hsv.h
-t3d.o: $(UTILS_SRC)/colors.h
-t3d.o: $(UTILS_SRC)/grabscreen.h
-t3d.o: $(UTILS_SRC)/visual.h
-penetrate.o: $(srcdir)/screenhack.h
-penetrate.o: ../config.h
-penetrate.o: $(UTILS_SRC)/yarandom.h
-penetrate.o: $(UTILS_SRC)/usleep.h
-penetrate.o: $(UTILS_SRC)/resources.h
-penetrate.o: $(UTILS_SRC)/hsv.h
-penetrate.o: $(UTILS_SRC)/colors.h
-penetrate.o: $(UTILS_SRC)/grabscreen.h
-penetrate.o: $(UTILS_SRC)/visual.h
-deluxe.o: $(srcdir)/screenhack.h
-deluxe.o: ../config.h
-deluxe.o: $(UTILS_SRC)/yarandom.h
-deluxe.o: $(UTILS_SRC)/usleep.h
-deluxe.o: $(UTILS_SRC)/resources.h
-deluxe.o: $(UTILS_SRC)/hsv.h
-deluxe.o: $(UTILS_SRC)/colors.h
-deluxe.o: $(UTILS_SRC)/grabscreen.h
-deluxe.o: $(UTILS_SRC)/visual.h
-deluxe.o: $(UTILS_SRC)/xdbe.h
-compass.o: $(srcdir)/screenhack.h
-compass.o: ../config.h
-compass.o: $(UTILS_SRC)/yarandom.h
-compass.o: $(UTILS_SRC)/usleep.h
-compass.o: $(UTILS_SRC)/resources.h
-compass.o: $(UTILS_SRC)/hsv.h
-compass.o: $(UTILS_SRC)/colors.h
-compass.o: $(UTILS_SRC)/grabscreen.h
-compass.o: $(UTILS_SRC)/visual.h
-compass.o: $(UTILS_SRC)/xdbe.h
-squiral.o: $(srcdir)/screenhack.h
-squiral.o: ../config.h
-squiral.o: $(UTILS_SRC)/yarandom.h
-squiral.o: $(UTILS_SRC)/usleep.h
-squiral.o: $(UTILS_SRC)/resources.h
-squiral.o: $(UTILS_SRC)/hsv.h
-squiral.o: $(UTILS_SRC)/colors.h
-squiral.o: $(UTILS_SRC)/grabscreen.h
-squiral.o: $(UTILS_SRC)/visual.h
-squiral.o: $(UTILS_SRC)/erase.h
-xflame.o: $(srcdir)/screenhack.h
-xflame.o: ../config.h
-xflame.o: $(UTILS_SRC)/yarandom.h
-xflame.o: $(UTILS_SRC)/usleep.h
-xflame.o: $(UTILS_SRC)/resources.h
-xflame.o: $(UTILS_SRC)/hsv.h
-xflame.o: $(UTILS_SRC)/colors.h
-xflame.o: $(UTILS_SRC)/grabscreen.h
-xflame.o: $(UTILS_SRC)/visual.h
-xflame.o: $(UTILS_SRC)/xshm.h
-wander.o: $(srcdir)/screenhack.h
-wander.o: ../config.h
-wander.o: $(UTILS_SRC)/yarandom.h
-wander.o: $(UTILS_SRC)/usleep.h
-wander.o: $(UTILS_SRC)/resources.h
-wander.o: $(UTILS_SRC)/hsv.h
-wander.o: $(UTILS_SRC)/colors.h
-wander.o: $(UTILS_SRC)/grabscreen.h
-wander.o: $(UTILS_SRC)/visual.h
-wander.o: $(UTILS_SRC)/erase.h
-spotlight.o: $(srcdir)/screenhack.h
-spotlight.o: ../config.h
-spotlight.o: $(UTILS_SRC)/yarandom.h
-spotlight.o: $(UTILS_SRC)/usleep.h
-spotlight.o: $(UTILS_SRC)/resources.h
-spotlight.o: $(UTILS_SRC)/hsv.h
-spotlight.o: $(UTILS_SRC)/colors.h
-spotlight.o: $(UTILS_SRC)/grabscreen.h
-spotlight.o: $(UTILS_SRC)/visual.h
-critical.o: $(srcdir)/screenhack.h
-critical.o: ../config.h
-critical.o: $(UTILS_SRC)/yarandom.h
-critical.o: $(UTILS_SRC)/usleep.h
-critical.o: $(UTILS_SRC)/resources.h
-critical.o: $(UTILS_SRC)/hsv.h
-critical.o: $(UTILS_SRC)/colors.h
-critical.o: $(UTILS_SRC)/grabscreen.h
-critical.o: $(UTILS_SRC)/visual.h
-critical.o: $(UTILS_SRC)/erase.h
-phosphor.o: $(srcdir)/screenhack.h
-phosphor.o: ../config.h
-phosphor.o: $(UTILS_SRC)/yarandom.h
-phosphor.o: $(UTILS_SRC)/usleep.h
-phosphor.o: $(UTILS_SRC)/resources.h
-phosphor.o: $(UTILS_SRC)/hsv.h
-phosphor.o: $(UTILS_SRC)/colors.h
-phosphor.o: $(UTILS_SRC)/grabscreen.h
-phosphor.o: $(UTILS_SRC)/visual.h
-xmatrix.o: $(srcdir)/screenhack.h
-xmatrix.o: ../config.h
-xmatrix.o: $(UTILS_SRC)/yarandom.h
-xmatrix.o: $(UTILS_SRC)/usleep.h
-xmatrix.o: $(UTILS_SRC)/resources.h
-xmatrix.o: $(UTILS_SRC)/hsv.h
-xmatrix.o: $(UTILS_SRC)/colors.h
-xmatrix.o: $(UTILS_SRC)/grabscreen.h
-xmatrix.o: $(UTILS_SRC)/visual.h
-xmatrix.o: $(srcdir)/images/matrix.xpm
-xmatrix.o: $(srcdir)/images/matrix.xbm
-
diff --git a/hacks/README b/hacks/README
deleted file mode 100644 (file)
index 34e687e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-This directory contains various graphics hacks.  These are independent from
-the xscreensaver program (in the ../driver/ directory) but some of them use
-the utility functions found in the ../utils/ directory.
-
-If you have compilation problems, check the parameters in ../config.h.
diff --git a/hacks/ant.c b/hacks/ant.c
deleted file mode 100644 (file)
index db76bfd..0000000
+++ /dev/null
@@ -1,1176 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/*-
- * ant --- Chris Langton's generalized turing machine ants (also known
- *         as Greg Turk's turmites) whose tape is the screen
- */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)ant.c        4.11 98/06/18 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1995 by David Bagley.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- * 16-Apr-97: -neighbors 3 and 8 added
- * 01-Jan-97: Updated ant.c to handle more kinds of ants.  Thanks to
- *            J Austin David <Austin.David@tlogic.com>.  Check it out in
- *            java at http://havoc.gtf.gatech.edu/austin  He thought up the
- *            new Ladder ant.
- * 04-Apr-96: -neighbors 6 runtime-time option added for hexagonal ants
- *            (bees), coded from an idea of Jim Propp's in Science News,
- *            Oct 28, 1995 VOL. 148 page 287
- * 20-Sep-95: Memory leak in ant fixed.  Now random colors.
- * 05-Sep-95: Coded from A.K. Dewdney's "Computer Recreations", Scientific
- *            American Magazine" Sep 1989 pp 180-183, Mar 1990 p 121
- *            Also used Ian Stewart's Mathematical Recreations, Scientific
- *            American Jul 1994 pp 104-107
- *            also used demon.c and life.c as a guide.
- */
-
-/*-
-  Species Grid     Number of Neigbors
-  ------- ----     ------------------
-  Ants    Square   4 (or 8)
-  Bees    Hexagon  6
-  Bees    Triangle 3 (or 9, 12)
-
-  Neighbors 6 and neighbors 3 produce the same Turk ants.
-*/
-
-#ifdef STANDALONE
-# define PROGCLASS "Ant"
-# define HACK_INIT init_ant
-# define HACK_DRAW draw_ant
-# define ant_opts xlockmore_opts
-# define DEFAULTS      "*delay:   1000 \n"             \
-                                       "*count:  -3 \n"                \
-                                       "*cycles:  40000 \n"    \
-                                       "*size:   -12 \n"               \
-                                       "*ncolors: 64 \n"               \
-                                       "*neighbors: 0 \n"              \
-                                       "*sharpturn: False \n"
-# include "xlockmore.h"                /* in xscreensaver distribution */
-# include "erase.h"
-#else /* STANDALONE */
-# include "xlock.h"            /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-#include "automata.h"
-
-/*-
- * neighbors of 0 randomizes it between 3, 4 and 6.
- * 8, 9 12 are available also but not recommended.
- */
-
-#ifdef STANDALONE
-static int neighbors;
-#else
-extern int  neighbors;
-#endif /* !STANDALONE */
-
-#define DEF_TRUCHET  "False"
-#define DEF_SHARPTURN  "False"
-#define DEF_NEIGHBORS  "0"
-
-static Bool truchet;
-static Bool sharpturn;
-
-static XrmOptionDescRec opts[] =
-{
-       {"-truchet", ".ant.truchet", XrmoptionNoArg, (caddr_t) "on"},
-       {"+truchet", ".ant.truchet", XrmoptionNoArg, (caddr_t) "off"},
-       {"-sharpturn", ".ant.sharpturn", XrmoptionNoArg, (caddr_t) "on"},
-       {"+sharpturn", ".ant.sharpturn", XrmoptionNoArg, (caddr_t) "off"},
-
-#ifdef STANDALONE
-       {"-neighbors", ".ant.neighbors", XrmoptionSepArg, (caddr_t) 0},
-       {"+neighbors", ".ant.neighbors", XrmoptionSepArg, (caddr_t) 0}
-#endif /* STANDALONE */
-
-};
-static argtype vars[] =
-{
-       {(caddr_t *) & truchet, "truchet", "Truchet", DEF_TRUCHET, t_Bool},
-   {(caddr_t *) & sharpturn, "sharpturn", "SharpTurn", DEF_SHARPTURN, t_Bool},
-#ifdef STANDALONE
-       {(caddr_t *) & neighbors, "neighbors", "Neighbors", DEF_NEIGHBORS, t_Int}
-#endif /* STANDALONE */
-};
-static OptionStruct desc[] =
-{
-       {"-/+truchet", "turn on/off Truchet lines"},
-       {"-/+sharpturn", "turn on/off sharp turns (6 or 12 neighbors only)"}
-};
-
-ModeSpecOpt ant_opts =
-{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   ant_description =
-{"ant", "init_ant", "draw_ant", "release_ant",
- "refresh_ant", "init_ant", NULL, &ant_opts,
- 1000, -3, 40000, -12, 64, 1.0, "",
- "Shows Langton's and Turk's generalized ants", 0, NULL};
-
-#endif
-
-#define ANTBITS(n,w,h)\
-  ap->pixmaps[ap->init_bits++]=\
-  XCreatePixmapFromBitmapData(display,window,(char *)n,w,h,1,0,1)
-
-/* If you change the table you may have to change the following 2 constants */
-#define STATES 2
-#define MINANTS 1
-#define REDRAWSTEP 2000                /* How much tape to draw per cycle */
-#define MINGRIDSIZE 24
-#define MINSIZE 1
-#define MINRANDOMSIZE 5
-#define ANGLES 360
-
-
-typedef struct {
-       unsigned char color;
-       short       direction;
-       unsigned char next;
-} statestruct;
-
-typedef struct {
-       int         col, row;
-       short       direction;
-       unsigned char state;
-} antstruct;
-
-typedef struct {
-       Bool        painted;
-       int         neighbors;
-       int         generation;
-       int         xs, ys;
-       int         xb, yb;
-       int         nrows, ncols;
-       int         width, height;
-       unsigned char ncolors, nstates;
-       int         n;
-       int         redrawing, redrawpos;
-       int         truchet;    /* Only for Turk modes */
-       int         sharpturn;  /* Only for even neighbors > 4 (i.e. 6 and 12) */
-       statestruct machine[NUMSTIPPLES * STATES];
-       unsigned char *tape;
-       unsigned char *truchet_state;
-       antstruct  *ants;
-       int         init_bits;
-       unsigned char colors[NUMSTIPPLES - 1];
-       GC          stippledGC;
-       Pixmap      pixmaps[NUMSTIPPLES - 1];
-       union {
-               XPoint      hexagon[7];         /* Need more than 6 for truchet */
-               XPoint      triangle[2][4];     /* Need more than 3 for truchet */
-       } shape;
-} antfarmstruct;
-
-static char plots[] =
-{3,
-#if 1                          /* Without this... this mode is misnamed... */
- 4,
-#endif
- 6};                           /* Neighborhoods, 8 just makes a mess */
-
-#define NEIGHBORKINDS (long) (sizeof plots / sizeof *plots)
-
-/* Relative ant moves */
-#define FS 0                   /* Step */
-#define TRS 1                  /* Turn right, then step */
-#define THRS 2                 /* Turn hard right, then step */
-#define TBS 3                  /* Turn back, then step */
-#define THLS 4                 /* Turn hard left, then step */
-#define TLS 5                  /* Turn left, then step */
-#define SF 6                   /* Step */
-#define STR 7                  /* Step then turn right */
-#define STHR 8                 /* Step then turn hard right */
-#define STB 9                  /* Step then turn back */
-#define STHL 10                        /* Step then turn hard left */
-#define STL 11                 /* Step then turn left */
-
-static antfarmstruct *antfarms = NULL;
-
-/* LANGTON'S ANT (10) Chaotic after 500, Builder after 10,000 (104p) */
-/* TURK'S 100 ANT Always chaotic?, tested past 150,000,000 */
-/* TURK'S 101 ANT Always chaotic? */
-/* TURK'S 110 ANT Builder at 150 (18p) */
-/* TURK'S 1000 ANT Always chaotic? */
-/* TURK'S 1100 SYMMETRIC ANT  all even run 1's and 0's are symmetric */
-/* other examples 1001, 110011, 110000, 1001101 */
-/* TURK'S 1101 ANT Builder after 250,000 (388p) */
-/* Once saw a chess horse type builder (i.e. non-45 degree builder) */
-
-/* BEE ONLY */
-/* All alternating 10 appear symmetric, no proof (i.e. 10, 1010, etc) */
-/* Even runs of 0's and 1's are also symmetric */
-/* I have seen Hexagonal builders but they are more rare. */
-
-static unsigned char tables[][3 * NUMSTIPPLES * STATES + 2] =
-{
-#if 0
-  /* Here just so you can figure out notation */
-       {                       /* Langton's ant */
-               2, 1,
-               1, TLS, 0, 0, TRS, 0
-       },
-#else
-  /* First 2 numbers are the size (ncolors, nstates) */
-       {                       /* LADDER BUILDER */
-               4, 1,
-               1, STR, 0, 2, STL, 0, 3, TRS, 0, 0, TLS, 0
-       },
-       {                       /* SPIRALING PATTERN */
-               2, 2,
-               1, TLS, 0, 0, FS, 1,
-               1, TRS, 0, 1, TRS, 0
-       },
-       {                       /* SQUARE (HEXAGON) BUILDER */
-               2, 2,
-               1, TLS, 0, 0, FS, 1,
-               0, TRS, 0, 1, TRS, 0
-       },
-#endif
-};
-
-#define NTABLES   (sizeof tables / sizeof tables[0])
-
-static void
-position_of_neighbor(antfarmstruct * ap, int dir, int *pcol, int *prow)
-{
-       int         col = *pcol, row = *prow;
-
-       if (ap->neighbors == 6) {
-               switch (dir) {
-                       case 0:
-                               col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                               break;
-                       case 60:
-                               if (!(row & 1))
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                               row = (!row) ? ap->nrows - 1 : row - 1;
-                               break;
-                       case 120:
-                               if (row & 1)
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                               row = (!row) ? ap->nrows - 1 : row - 1;
-                               break;
-                       case 180:
-                               col = (!col) ? ap->ncols - 1 : col - 1;
-                               break;
-                       case 240:
-                               if (row & 1)
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                               row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                               break;
-                       case 300:
-                               if (!(row & 1))
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                               row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                               break;
-                       default:
-                               (void) fprintf(stderr, "wrong direction %d\n", dir);
-               }
-       } else if (ap->neighbors == 4 || ap->neighbors == 8) {
-               switch (dir) {
-                       case 0:
-                               col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                               break;
-                       case 45:
-                               col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                               row = (!row) ? ap->nrows - 1 : row - 1;
-                               break;
-                       case 90:
-                               row = (!row) ? ap->nrows - 1 : row - 1;
-                               break;
-                       case 135:
-                               col = (!col) ? ap->ncols - 1 : col - 1;
-                               row = (!row) ? ap->nrows - 1 : row - 1;
-                               break;
-                       case 180:
-                               col = (!col) ? ap->ncols - 1 : col - 1;
-                               break;
-                       case 225:
-                               col = (!col) ? ap->ncols - 1 : col - 1;
-                               row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                               break;
-                       case 270:
-                               row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                               break;
-                       case 315:
-                               col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                               row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                               break;
-                       default:
-                               (void) fprintf(stderr, "wrong direction %d\n", dir);
-               }
-       } else {                /* TRI */
-               if ((col + row) % 2) {  /* right */
-                       switch (dir) {
-                               case 0:
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                                       break;
-                               case 30:
-                               case 40:
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                                       row = (!row) ? ap->nrows - 1 : row - 1;
-                                       break;
-                               case 60:
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                                       if (!row)
-                                               row = ap->nrows - 2;
-                                       else if (!(row - 1))
-                                               row = ap->nrows - 1;
-                                       else
-                                               row = row - 2;
-                                       break;
-                               case 80:
-                               case 90:
-                                       if (!row)
-                                               row = ap->nrows - 2;
-                                       else if (!(row - 1))
-                                               row = ap->nrows - 1;
-                                       else
-                                               row = row - 2;
-                                       break;
-                               case 120:
-                                       row = (!row) ? ap->nrows - 1 : row - 1;
-                                       break;
-                               case 150:
-                               case 160:
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                                       row = (!row) ? ap->nrows - 1 : row - 1;
-                                       break;
-                               case 180:
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                                       break;
-                               case 200:
-                               case 210:
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                                       row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                                       break;
-                               case 240:
-                                       row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                                       break;
-                               case 270:
-                               case 280:
-                                       if (row + 1 == ap->nrows)
-                                               row = 1;
-                                       else if (row + 2 == ap->nrows)
-                                               row = 0;
-                                       else
-                                               row = row + 2;
-                                       break;
-                               case 300:
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                                       if (row + 1 == ap->nrows)
-                                               row = 1;
-                                       else if (row + 2 == ap->nrows)
-                                               row = 0;
-                                       else
-                                               row = row + 2;
-                                       break;
-                               case 320:
-                               case 330:
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                                       row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                                       break;
-                               default:
-                                       (void) fprintf(stderr, "wrong direction %d\n", dir);
-                       }
-               } else {        /* left */
-                       switch (dir) {
-                               case 0:
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                                       break;
-                               case 30:
-                               case 40:
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                                       row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                                       break;
-                               case 60:
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                                       if (row + 1 == ap->nrows)
-                                               row = 1;
-                                       else if (row + 2 == ap->nrows)
-                                               row = 0;
-                                       else
-                                               row = row + 2;
-                                       break;
-                               case 80:
-                               case 90:
-                                       if (row + 1 == ap->nrows)
-                                               row = 1;
-                                       else if (row + 2 == ap->nrows)
-                                               row = 0;
-                                       else
-                                               row = row + 2;
-                                       break;
-                               case 120:
-                                       row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                                       break;
-                               case 150:
-                               case 160:
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                                       row = (row + 1 == ap->nrows) ? 0 : row + 1;
-                                       break;
-                               case 180:
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                                       break;
-                               case 200:
-                               case 210:
-                                       col = (!col) ? ap->ncols - 1 : col - 1;
-                                       row = (!row) ? ap->nrows - 1 : row - 1;
-                                       break;
-                               case 240:
-                                       row = (!row) ? ap->nrows - 1 : row - 1;
-                                       break;
-                               case 270:
-                               case 280:
-                                       if (!row)
-                                               row = ap->nrows - 2;
-                                       else if (row == 1)
-                                               row = ap->nrows - 1;
-                                       else
-                                               row = row - 2;
-                                       break;
-                               case 300:
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                                       if (!row)
-                                               row = ap->nrows - 2;
-                                       else if (row == 1)
-                                               row = ap->nrows - 1;
-                                       else
-                                               row = row - 2;
-                                       break;
-                               case 320:
-                               case 330:
-                                       col = (col + 1 == ap->ncols) ? 0 : col + 1;
-                                       row = (!row) ? ap->nrows - 1 : row - 1;
-                                       break;
-                               default:
-                                       (void) fprintf(stderr, "wrong direction %d\n", dir);
-                       }
-               }
-       }
-       *pcol = col;
-       *prow = row;
-}
-
-static void
-fillcell(ModeInfo * mi, GC gc, int col, int row)
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-
-       if (ap->neighbors == 6) {
-               int         ccol = 2 * col + !(row & 1), crow = 2 * row;
-
-               ap->shape.hexagon[0].x = ap->xb + ccol * ap->xs;
-               ap->shape.hexagon[0].y = ap->yb + crow * ap->ys;
-               if (ap->xs == 1 && ap->ys == 1)
-                       XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                       ap->shape.hexagon[0].x, ap->shape.hexagon[0].y, 1, 1);
-               else
-                       XFillPolygon(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                           ap->shape.hexagon, 6, Convex, CoordModePrevious);
-       } else if (ap->neighbors == 4 || ap->neighbors == 8) {
-               XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-               ap->xb + ap->xs * col, ap->yb + ap->ys * row,
-               ap->xs - (ap->xs > 3), ap->ys - (ap->ys > 3));
-       } else {                /* TRI */
-               int         orient = (col + row) % 2;   /* O left 1 right */
-
-               ap->shape.triangle[orient][0].x = ap->xb + col * ap->xs;
-               ap->shape.triangle[orient][0].y = ap->yb + row * ap->ys;
-               if (ap->xs <= 3 || ap->ys <= 3)
-                       XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                       ((orient) ? -1 : 1) + ap->shape.triangle[orient][0].x,
-                                      ap->shape.triangle[orient][0].y, 1, 1);
-               else {
-                       if (orient)
-                               ap->shape.triangle[orient][0].x += (ap->xs / 2 - 1);
-                       else
-                               ap->shape.triangle[orient][0].x -= (ap->xs / 2 - 1);
-                       XFillPolygon(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                                    ap->shape.triangle[orient], 3, Convex, CoordModePrevious);
-               }
-       }
-}
-
-static void
-truchetcell(ModeInfo * mi, int col, int row, int truchetstate)
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-
-       if (ap->neighbors == 6) {
-
-               int         ccol = 2 * col + !(row & 1), crow = 2 * row;
-               int         side;
-               int         fudge = 7;  /* fudge because the hexagons are not exact */
-               XPoint      hex, hex2;
-
-               if (ap->sharpturn) {
-                       hex.x = ap->xb + ccol * ap->xs - (int) ((double) ap->xs / 2.0) - 1;
-                       hex.y = ap->yb + crow * ap->ys - (int) ((double) ap->ys / 2.0) - 1;
-                       for (side = 0; side < 6; side++) {
-                               if (side > 0) {
-                                       hex.x += ap->shape.hexagon[side].x;
-                                       hex.y += ap->shape.hexagon[side].y;
-                               }
-                               if (truchetstate == side % 2)
-                                       XDrawArc(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                                                hex.x, hex.y, ap->xs, ap->ys,
-                                                ((570 - (side * 60) + fudge) % 360) * 64, (120 - 2 * fudge) * 64);
-                       }
-               } else {
-
-                       /* Very crude approx of Sqrt 3, so it will not cause drawing errors. */
-                       hex.x = ap->xb + ccol * ap->xs - (int) ((double) ap->xs * 1.6 / 2.0);
-                       hex.y = ap->yb + crow * ap->ys - (int) ((double) ap->ys * 1.6 / 2.0);
-                       for (side = 0; side < 6; side++) {
-                               if (side > 0) {
-                                       hex.x += ap->shape.hexagon[side].x;
-                                       hex.y += ap->shape.hexagon[side].y;
-                               }
-                               hex2.x = hex.x + ap->shape.hexagon[side + 1].x / 2;
-                               hex2.y = hex.y + ap->shape.hexagon[side + 1].y / 2;
-                               if (truchetstate == side % 3)
-                                       /* Crude approx of 120 deg, so it will not cause drawing errors. */
-                                       XDrawArc(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                                                hex2.x, hex2.y,
-                                                (int) ((double) ap->xs * 1.5), (int) ((double) ap->ys * 1.5),
-                                                ((555 - (side * 60)) % 360) * 64, 90 * 64);
-                       }
-               }
-       } else if (ap->neighbors == 4) {
-               if (truchetstate) {
-                       XDrawArc(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                                ap->xb + ap->xs * col - ap->xs / 2+ 1,
-                                ap->yb + ap->ys * row + ap->ys / 2 - 1,
-                                ap->xs - 2, ap->ys - 2,
-                                0 * 64, 90 * 64);
-                       XDrawArc(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                                ap->xb + ap->xs * col + ap->xs / 2 - 1,
-                                ap->yb + ap->ys * row - ap->ys / 2 + 1,
-                                ap->xs - 2, ap->ys - 2,
-                                -90 * 64, -90 * 64);
-               } else {
-                       XDrawArc(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                                ap->xb + ap->xs * col - ap->xs / 2 + 1,
-                                ap->yb + ap->ys * row - ap->ys / 2 + 1,
-                                ap->xs - 2, ap->ys - 2,
-                                0 * 64, -90 * 64);
-                       XDrawArc(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                                ap->xb + ap->xs * col + ap->xs / 2 - 1,
-                                ap->yb + ap->ys * row + ap->ys / 2 - 1,
-                                ap->xs - 2, ap->ys - 2,
-                                90 * 64, 90 * 64);
-               }
-       } else if (ap->neighbors == 3) {
-               int         orient = (col + row) % 2;   /* O left 1 right */
-               int         side, ang;
-               int         fudge = 7;  /* fudge because the triangles are not exact */
-               XPoint      tri;
-
-               tri.x = ap->xb + col * ap->xs;
-               tri.y = ap->yb + row * ap->ys;
-               if (orient) {
-                       tri.x += (ap->xs / 2 - 1);
-               } else {
-                       tri.x -= (ap->xs / 2 - 1);
-               }
-               for (side = 0; side < 3; side++) {
-                       if (side > 0) {
-                               tri.x += ap->shape.triangle[orient][side].x;
-                               tri.y += ap->shape.triangle[orient][side].y;
-                       }
-                       if (truchetstate == side % 3) {
-                               if (orient)
-                                       ang = (510 - side * 120) % 360;         /* Right */
-                               else
-                                       ang = (690 - side * 120) % 360;         /* Left */
-                               XDrawArc(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                                 tri.x - ap->xs / 2, tri.y - 3 * ap->ys / 4,
-                                        ap->xs, 3 * ap->ys / 2,
-                                 (ang + fudge) * 64, (60 - 2 * fudge) * 64);
-                       }
-               }
-       }
-}
-
-static void
-drawcell(ModeInfo * mi, int col, int row, unsigned char color)
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-       GC          gc;
-
-       if (!color) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_BLACK_PIXEL(mi));
-               gc = MI_GC(mi);
-       } else if (MI_NPIXELS(mi) > 2) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi),
-                              MI_PIXEL(mi, ap->colors[color - 1]));
-               gc = MI_GC(mi);
-       } else {
-               XGCValues   gcv;
-
-               gcv.stipple = ap->pixmaps[color - 1];
-               gcv.foreground = MI_WHITE_PIXEL(mi);
-               gcv.background = MI_BLACK_PIXEL(mi);
-               XChangeGC(MI_DISPLAY(mi), ap->stippledGC,
-                         GCStipple | GCForeground | GCBackground, &gcv);
-               gc = ap->stippledGC;
-       }
-       fillcell(mi, gc, col, row);
-}
-
-static void
-drawtruchet(ModeInfo * mi, int col, int row,
-           unsigned char color, unsigned char truchetstate)
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-
-       if (!color)
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WHITE_PIXEL(mi));
-       else if (MI_NPIXELS(mi) > 2 || color > ap->ncolors / 2)
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_BLACK_PIXEL(mi));
-       else
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WHITE_PIXEL(mi));
-       truchetcell(mi, col, row, truchetstate);
-}
-
-static void
-draw_anant(ModeInfo * mi, int col, int row)
-{
-       XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WHITE_PIXEL(mi));
-       fillcell(mi, MI_GC(mi), col, row);
-#if 0                          /* Can not see eyes */
-       {
-               antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-               Display    *display = MI_DISPLAY(mi);
-               Window      window = MI_WINDOW(mi);
-
-               if (ap->xs > 2 && ap->ys > 2) {         /* Draw Eyes */
-
-                       XSetForeground(display, MI_GC(mi), MI_BLACK_PIXEL(mi));
-                       switch (direction) {
-                               case 0:
-                                       XDrawPoint(display, window, MI_GC(mi),
-                                           ap->xb + ap->xs - 1, ap->yb + 1);
-                                       XDrawPoint(display, window, MI_GC(mi),
-                                                  ap->xb + ap->xs - 1, ap->yb + ap->ys - 2);
-                                       break;
-                               case 180:
-                                       XDrawPoint(display, window, MI_GC(mi), ap->xb, ap->yb + 1);
-                                       XDrawPoint(display, window, MI_GC(mi), ap->xb, ap->yb + ap->ys - 2);
-                                       break;
-                                       if (neighbors == 4) {
-                               case 90:
-                                               XDrawPoint(display, window, MI_GC(mi), ap->xb + 1, ap->yb);
-                                               XDrawPoint(display, window, MI_GC(mi),
-                                               ap->xb + ap->xs - 2, ap->yb);
-                                               break;
-                               case 270:
-                                               XDrawPoint(display, window, MI_GC(mi),
-                                                          ap->xb + 1, ap->yb + ap->ys - 1);
-                                               XDrawPoint(display, window, MI_GC(mi),
-                                                          ap->xb + ap->xs - 2, ap->yb + ap->ys - 1);
-                                               break;
-                                       }       /* else BEE */
-                               default:
-                       }
-               }
-       }
-#endif
-}
-
-#if 0
-static void
-RandomSoup(mi)
-       ModeInfo   *mi;
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-       int         row, col, mrow = 0;
-
-       for (row = 0; row < ap->nrows; ++row) {
-               for (col = 0; col < ap->ncols; ++col) {
-                       ap->old[col + mrow] = (unsigned char) NRAND((int) ap->ncolors);
-                       drawcell(mi, col, row, ap->old[col + mrow]);
-               }
-               mrow += ap->nrows;
-       }
-}
-
-#endif
-
-static short
-fromTableDirection(unsigned char dir, int neighbors)
-{
-       switch (dir) {
-               case FS:
-                       return 0;
-               case TRS:
-                       return (ANGLES / neighbors);
-               case THRS:
-                       return (ANGLES / 2 - ANGLES / neighbors);
-               case TBS:
-                       return (ANGLES / 2);
-               case THLS:
-                       return (ANGLES / 2 + ANGLES / neighbors);
-               case TLS:
-                       return (ANGLES - ANGLES / neighbors);
-               case SF:
-                       return ANGLES;
-               case STR:
-                       return (ANGLES + ANGLES / neighbors);
-               case STHR:
-                       return (3 * ANGLES / 2 - ANGLES / neighbors);
-               case STB:
-                       return (3 * ANGLES / 2);
-               case STHL:
-                       return (3 * ANGLES / 2 + ANGLES / neighbors);
-               case STL:
-                       return (2 * ANGLES - ANGLES / neighbors);
-               default:
-                       (void) fprintf(stderr, "wrong direction %d\n", dir);
-       }
-       return -1;
-}
-
-static void
-getTable(ModeInfo * mi, int i)
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-       int         j, total;
-       unsigned char *patptr;
-
-       patptr = &tables[i][0];
-       ap->ncolors = *patptr++;
-       ap->nstates = *patptr++;
-       total = ap->ncolors * ap->nstates;
-       if (MI_IS_VERBOSE(mi))
-               (void) fprintf(stdout,
-                              "ants %d, neighbors %d, table number %d, colors %d, states %d\n",
-                         ap->n, ap->neighbors, i, ap->ncolors, ap->nstates);
-       for (j = 0; j < total; j++) {
-               ap->machine[j].color = *patptr++;
-               if (ap->sharpturn && ap->neighbors > 4 && !(ap->neighbors % 2)) {
-                       int         k = *patptr++;
-
-                       switch (k) {
-                               case TRS:
-                                       k = THRS;
-                                       break;
-                               case THRS:
-                                       k = TRS;
-                                       break;
-                               case THLS:
-                                       k = TLS;
-                                       break;
-                               case TLS:
-                                       k = THLS;
-                                       break;
-                               case STR:
-                                       k = STHR;
-                                       break;
-                               case STHR:
-                                       k = STR;
-                                       break;
-                               case STHL:
-                                       k = STL;
-                                       break;
-                               case STL:
-                                       k = STHL;
-                                       break;
-                               default:
-                                       break;
-                       }
-                       ap->machine[j].direction = fromTableDirection(k, ap->neighbors);
-               } else {
-                       ap->machine[j].direction = fromTableDirection(*patptr++, ap->neighbors);
-               }
-               ap->machine[j].next = *patptr++;
-       }
-       ap->truchet = False;
-}
-
-static void
-getTurk(ModeInfo * mi, int i)
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-       int         power2, j, number, total;
-
-       /* To force a number, say <i = 2;> has  i + 2 (or 4) digits in binary */
-       power2 = 1 << (i + 1);
-       /* Dont want numbers which in binary are all 1's. */
-       number = NRAND(power2 - 1) + power2;
-       /* To force a particular number, say <number = 10;> */
-
-       ap->ncolors = i + 2;
-       ap->nstates = 1;
-       total = ap->ncolors * ap->nstates;
-       for (j = 0; j < total; j++) {
-               ap->machine[j].color = (j + 1) % total;
-               if (ap->sharpturn && ap->neighbors > 4 && !(ap->neighbors % 2)) {
-                       ap->machine[j].direction = (power2 & number) ?
-                               fromTableDirection(THRS, ap->neighbors) :
-                               fromTableDirection(THLS, ap->neighbors);
-               } else {
-                       ap->machine[j].direction = (power2 & number) ?
-                               fromTableDirection(TRS, ap->neighbors) :
-                               fromTableDirection(TLS, ap->neighbors);
-               }
-               ap->machine[j].next = 0;
-               power2 >>= 1;
-       }
-       ap->truchet = (ap->truchet && ap->xs > 2 && ap->ys > 2 &&
-          (ap->neighbors == 3 || ap->neighbors == 4 || ap->neighbors == 6));
-       if (MI_IS_VERBOSE(mi))
-               (void) fprintf(stdout,
-                     "ants %d, neighbors %d, Turk's number %d, colors %d\n",
-                              ap->n, ap->neighbors, number, ap->ncolors);
-}
-
-void
-init_ant(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       int         size = MI_SIZE(mi);
-       antfarmstruct *ap;
-       int         col, row, dir;
-       long        i;
-
-       /* jwz sez: small sizes look like crap */
-       if (size < 0)
-         size = NRAND(-size)+1;
-       if (size < 5)
-         size += 5;
-
-       if (antfarms == NULL) {
-               if ((antfarms = (antfarmstruct *) calloc(MI_NUM_SCREENS(mi),
-                                           sizeof (antfarmstruct))) == NULL)
-                       return;
-       }
-       ap = &antfarms[MI_SCREEN(mi)];
-       ap->redrawing = 0;
-       if (MI_NPIXELS(mi) <= 2) {
-               if (ap->stippledGC == None) {
-                       XGCValues   gcv;
-
-                       gcv.fill_style = FillOpaqueStippled;
-                       ap->stippledGC = XCreateGC(display, window, GCFillStyle, &gcv);
-               }
-               if (ap->init_bits == 0) {
-                       for (i = 1; i < NUMSTIPPLES; i++)
-                               ANTBITS(stipples[i], STIPPLESIZE, STIPPLESIZE);
-               }
-       }
-       ap->generation = 0;
-       ap->n = MI_COUNT(mi);
-       if (ap->n < -MINANTS) {
-               /* if ap->n is random ... the size can change */
-               if (ap->ants != NULL) {
-                       (void) free((void *) ap->ants);
-                       ap->ants = NULL;
-               }
-               ap->n = NRAND(-ap->n - MINANTS + 1) + MINANTS;
-       } else if (ap->n < MINANTS)
-               ap->n = MINANTS;
-
-       ap->width = MI_WIDTH(mi);
-       ap->height = MI_HEIGHT(mi);
-
-       if (neighbors == 8 || neighbors == 9 || neighbors == 12)
-               ap->neighbors = neighbors;      /* Discourage but not deny use... */
-       else
-               for (i = 0; i < NEIGHBORKINDS; i++) {
-                       if (neighbors == plots[i]) {
-                               ap->neighbors = plots[i];
-                               break;
-                       }
-                       if (i == NEIGHBORKINDS - 1) {
-                               ap->neighbors = plots[NRAND(NEIGHBORKINDS)];
-                               break;
-                       }
-               }
-
-       if (ap->neighbors == 6) {
-               int         nccols, ncrows;
-
-               if (ap->width < 2)
-                       ap->width = 2;
-               if (ap->height < 4)
-                       ap->height = 4;
-               if (size < -MINSIZE) {
-                       ap->ys = NRAND(MIN(-size, MAX(MINSIZE, MIN(ap->width, ap->height) /
-                                     MINGRIDSIZE)) - MINSIZE + 1) + MINSIZE;
-                       if (ap->ys < MINRANDOMSIZE)
-                               ap->ys = MIN(MINRANDOMSIZE,
-                                            MAX(MINSIZE, MIN(ap->width, ap->height) / MINGRIDSIZE));
-               } else if (size < MINSIZE) {
-                       if (!size)
-                               ap->ys = MAX(MINSIZE, MIN(ap->width, ap->height) / MINGRIDSIZE);
-                       else
-                               ap->ys = MINSIZE;
-               } else
-                       ap->ys = MIN(size, MAX(MINSIZE, MIN(ap->width, ap->height) /
-                                              MINGRIDSIZE));
-               ap->xs = ap->ys;
-               nccols = MAX(ap->width / ap->xs - 2, 2);
-               ncrows = MAX(ap->height / ap->ys - 1, 2);
-               ap->ncols = nccols / 2;
-               ap->nrows = 2 * (ncrows / 4);
-               ap->xb = (ap->width - ap->xs * nccols) / 2 + ap->xs / 2;
-               ap->yb = (ap->height - ap->ys * (ncrows / 2) * 2) / 2 + ap->ys;
-               for (i = 0; i < 6; i++) {
-                       ap->shape.hexagon[i].x = (ap->xs - 1) * hexagonUnit[i].x;
-                       ap->shape.hexagon[i].y = ((ap->ys - 1) * hexagonUnit[i].y / 2) * 4 / 3;
-               }
-               /* Avoid array bounds read of hexagonUnit */
-               ap->shape.hexagon[6].x = 0;
-               ap->shape.hexagon[6].y = 0;
-       } else if (ap->neighbors == 4 || ap->neighbors == 8) {
-               if (size < -MINSIZE) {
-                       ap->ys = NRAND(MIN(-size, MAX(MINSIZE, MIN(ap->width, ap->height) /
-                                     MINGRIDSIZE)) - MINSIZE + 1) + MINSIZE;
-                       if (ap->ys < MINRANDOMSIZE)
-                               ap->ys = MIN(MINRANDOMSIZE,
-                                            MAX(MINSIZE, MIN(ap->width, ap->height) / MINGRIDSIZE));
-               } else if (size < MINSIZE) {
-                       if (!size)
-                               ap->ys = MAX(MINSIZE, MIN(ap->width, ap->height) / MINGRIDSIZE);
-                       else
-                               ap->ys = MINSIZE;
-               } else
-                       ap->ys = MIN(size, MAX(MINSIZE, MIN(ap->width, ap->height) /
-                                              MINGRIDSIZE));
-               ap->xs = ap->ys;
-               ap->ncols = MAX(ap->width / ap->xs, 2);
-               ap->nrows = MAX(ap->height / ap->ys, 2);
-               ap->xb = (ap->width - ap->xs * ap->ncols) / 2;
-               ap->yb = (ap->height - ap->ys * ap->nrows) / 2;
-       } else {                /* TRI */
-               int         orient;
-
-               if (ap->width < 2)
-                       ap->width = 2;
-               if (ap->height < 2)
-                       ap->height = 2;
-               if (size < -MINSIZE) {
-                       ap->ys = NRAND(MIN(-size, MAX(MINSIZE, MIN(ap->width, ap->height) /
-                                     MINGRIDSIZE)) - MINSIZE + 1) + MINSIZE;
-                       if (ap->ys < MINRANDOMSIZE)
-                               ap->ys = MIN(MINRANDOMSIZE,
-                                            MAX(MINSIZE, MIN(ap->width, ap->height) / MINGRIDSIZE));
-               } else if (size < MINSIZE) {
-                       if (!size)
-                               ap->ys = MAX(MINSIZE, MIN(ap->width, ap->height) / MINGRIDSIZE);
-                       else
-                               ap->ys = MINSIZE;
-               } else
-                       ap->ys = MIN(size, MAX(MINSIZE, MIN(ap->width, ap->height) /
-                                              MINGRIDSIZE));
-               ap->xs = (int) (1.52 * ap->ys);
-               ap->ncols = (MAX(ap->width / ap->xs - 1, 2) / 2) * 2;
-               ap->nrows = (MAX(ap->height / ap->ys - 1, 2) / 2) * 2;
-               ap->xb = (ap->width - ap->xs * ap->ncols) / 2 + ap->xs / 2;
-               ap->yb = (ap->height - ap->ys * ap->nrows) / 2 + ap->ys;
-               for (orient = 0; orient < 2; orient++) {
-                       for (i = 0; i < 3; i++) {
-                               ap->shape.triangle[orient][i].x =
-                                       (ap->xs - 2) * triangleUnit[orient][i].x;
-                               ap->shape.triangle[orient][i].y =
-                                       (ap->ys - 2) * triangleUnit[orient][i].y;
-                       }
-                       /* Avoid array bounds read of triangleUnit */
-                       ap->shape.triangle[orient][3].x = 0;
-                       ap->shape.triangle[orient][3].y = 0;
-               }
-       }
-
-       XSetLineAttributes(display, MI_GC(mi), 1, LineSolid, CapNotLast, JoinMiter);
-       MI_CLEARWINDOW(mi);
-       ap->painted = False;
-
-       if (MI_IS_FULLRANDOM(mi)) {
-               ap->truchet = (Bool) (LRAND() & 1);
-               ap->sharpturn = (Bool) (LRAND() & 1);
-       } else {
-               ap->truchet = truchet;
-               ap->sharpturn = sharpturn;
-       }
-       /* Exclude odd # of neighbors, stepping forward not defined */
-       if (!NRAND(NUMSTIPPLES) && ((ap->neighbors + 1) % 2)) {
-               getTable(mi, (int) (NRAND(NTABLES)));
-       } else
-               getTurk(mi, (int) (NRAND(NUMSTIPPLES - 1)));
-       if (MI_NPIXELS(mi) > 2)
-               for (i = 0; i < (int) ap->ncolors - 1; i++)
-                       ap->colors[i] = (unsigned char) (NRAND(MI_NPIXELS(mi)) +
-                            i * MI_NPIXELS(mi)) / ((int) (ap->ncolors - 1));
-       if (ap->ants == NULL)
-               ap->ants = (antstruct *) malloc(ap->n * sizeof (antstruct));
-       if (ap->tape != NULL)
-               (void) free((void *) ap->tape);
-       ap->tape = (unsigned char *)
-               calloc(ap->ncols * ap->nrows, sizeof (unsigned char));
-
-       if (ap->truchet_state != NULL)
-               (void) free((void *) ap->truchet_state);
-       ap->truchet_state = (unsigned char *)
-               calloc(ap->ncols * ap->nrows, sizeof (unsigned char));
-
-       col = ap->ncols / 2;
-       row = ap->nrows / 2;
-       dir = NRAND(ap->neighbors) * ANGLES / ap->neighbors;
-       /* Have them all start in the same spot, why not? */
-       for (i = 0; i < ap->n; i++) {
-               ap->ants[i].col = col;
-               ap->ants[i].row = row;
-               ap->ants[i].direction = dir;
-               ap->ants[i].state = 0;
-       }
-       draw_anant(mi, col, row);
-}
-
-void
-draw_ant(ModeInfo * mi)
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-       antstruct  *anant;
-       statestruct *status;
-       int         i, state_pos, tape_pos;
-       unsigned char color;
-       short       chg_dir, old_dir;
-
-       MI_IS_DRAWN(mi) = True;
-
-       ap->painted = True;
-       for (i = 0; i < ap->n; i++) {
-               anant = &ap->ants[i];
-               tape_pos = anant->col + anant->row * ap->ncols;
-               color = ap->tape[tape_pos];     /* read tape */
-               state_pos = color + anant->state * ap->ncolors;
-               status = &(ap->machine[state_pos]);
-               drawcell(mi, anant->col, anant->row, status->color);
-               ap->tape[tape_pos] = status->color;     /* write on tape */
-
-               /* Find direction of Bees or Ants. */
-               /* Translate relative direction to actual direction */
-               old_dir = anant->direction;
-               chg_dir = (2 * ANGLES - status->direction) % ANGLES;
-               anant->direction = (chg_dir + old_dir) % ANGLES;
-               if (ap->truchet) {
-                       int         a = 0, b;
-
-                       if (ap->neighbors == 6) {
-                               if (ap->sharpturn) {
-                                       a = (chg_dir / 120 == 2);
-                                       drawtruchet(mi, anant->col, anant->row, status->color, a);
-                               } else {
-                                       a = (old_dir / 60) % 3;
-                                       b = (anant->direction / 60) % 3;
-                                       a = (a + b + 1) % 3;
-                                       drawtruchet(mi, anant->col, anant->row, status->color, a);
-                               }
-                       } else if (ap->neighbors == 4) {
-                               a = old_dir / 180;
-                               b = anant->direction / 180;
-                               a = ((a && !b) || (b && !a));
-                               drawtruchet(mi, anant->col, anant->row, status->color, a);
-                       } else if (ap->neighbors == 3) {
-                               if (chg_dir == 240)
-                                       a = (2 + anant->direction / 120) % 3;
-                               else
-                                       a = (1 + anant->direction / 120) % 3;
-                               drawtruchet(mi, anant->col, anant->row, status->color, a);
-                       }
-                       ap->truchet_state[tape_pos] = a + 1;
-               }
-               anant->state = status->next;
-
-               /* If edge than wrap it */
-               old_dir = ((status->direction < ANGLES) ? anant->direction : old_dir);
-               position_of_neighbor(ap, old_dir, &(anant->col), &(anant->row));
-               draw_anant(mi, anant->col, anant->row);
-       }
-       if (++ap->generation > MI_CYCLES(mi)) {
-#ifdef STANDALONE
-         erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif
-               init_ant(mi);
-       }
-       if (ap->redrawing) {
-               for (i = 0; i < REDRAWSTEP; i++) {
-                       if (ap->tape[ap->redrawpos] ||
-                        (ap->truchet && ap->truchet_state[ap->redrawpos])) {
-                               drawcell(mi, ap->redrawpos % ap->ncols, ap->redrawpos / ap->ncols,
-                                        ap->tape[ap->redrawpos]);
-                               if (ap->truchet)
-                                       drawtruchet(mi, ap->redrawpos % ap->ncols, ap->redrawpos / ap->ncols,
-                                                   ap->tape[ap->redrawpos],
-                                       ap->truchet_state[ap->redrawpos] - 1);
-                       }
-                       if (++(ap->redrawpos) >= ap->ncols * ap->nrows) {
-                               ap->redrawing = 0;
-                               break;
-                       }
-               }
-       }
-}
-
-void
-release_ant(ModeInfo * mi)
-{
-       if (antfarms != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       antfarmstruct *ap = &antfarms[screen];
-                       int         shade;
-
-                       if (ap->stippledGC != None) {
-                               XFreeGC(MI_DISPLAY(mi), ap->stippledGC);
-                       }
-                       for (shade = 0; shade < ap->init_bits; shade++)
-                               XFreePixmap(MI_DISPLAY(mi), ap->pixmaps[shade]);
-                       if (ap->tape != NULL)
-                               (void) free((void *) ap->tape);
-                       if (ap->ants != NULL)
-                               (void) free((void *) ap->ants);
-                       if (ap->truchet_state != NULL)
-                               (void) free((void *) ap->truchet_state);
-               }
-               (void) free((void *) antfarms);
-               antfarms = NULL;
-       }
-}
-
-void
-refresh_ant(ModeInfo * mi)
-{
-       antfarmstruct *ap = &antfarms[MI_SCREEN(mi)];
-
-       if (ap->painted) {
-               MI_CLEARWINDOW(mi);
-               ap->redrawing = 1;
-               ap->redrawpos = 0;
-       }
-}
diff --git a/hacks/attraction.c b/hacks/attraction.c
deleted file mode 100644 (file)
index 1a84833..0000000
+++ /dev/null
@@ -1,667 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997, 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.
- */
-
-/* Simulation of a pair of quasi-gravitational fields, maybe sorta kinda
-   a little like the strong and weak electromagnetic forces.  Derived from
-   a Lispm screensaver by John Pezaris <pz@mit.edu>.  Mouse control and
-   viscosity added by "Philip Edward Cutone, III" <pc2d+@andrew.cmu.edu>.
-
-   John sez:
-
-   The simulation started out as a purely accurate gravitational simulation,
-   but, with constant simulation step size, I quickly realized the field being
-   simulated while grossly gravitational was, in fact, non-conservative.  It
-   also had the rather annoying behavior of dealing very badly with colliding
-   orbs.  Therefore, I implemented a negative-gravity region (with two
-   thresholds; as I read your code, you only implemented one) to prevent orbs
-   from every coming too close together, and added a viscosity factor if the
-   speed of any orb got too fast.  This provides a nice stable system with
-   interesting behavior.
-
-   I had experimented with a number of fields including the van der Waals
-   force (very interesting orbiting behavior) and 1/r^3 gravity (not as
-   interesting as 1/r^2).  An even normal viscosity (rather than the
-   thresholded version to bleed excess energy) is also not interesting.
-   The 1/r^2, -1/r^2, -10/r^2 thresholds proved not only robust but also
-   interesting -- the orbs never collided and the threshold viscosity fixed
-   the non-conservational problem.
-
-   Philip sez:
-   > An even normal viscosity (rather than the thresholded version to
-   > bleed excess energy) is also not interesting.
-
-   unless you make about 200 points.... set the viscosity to about .8
-   and drag the mouse through it.   it makes a nice wave which travels
-   through the field.
-
-   And (always the troublemaker) Joe Keane <jgk@jgk.org> sez:
-
-   Despite what John sez, the field being simulated is always conservative.
-   The real problem is that it uses a simple hack, computing acceleration
-   *based only on the starting position*, instead of a real differential
-   equation solver.  Thus you'll always have energy coming out of nowhere,
-   although it's most blatant when balls get close together.  If it were
-   done right, you wouldn't need viscosity or artificial limits on how
-   close the balls can get.
- */
-
-#include <stdio.h>
-#include <math.h>
-#include "screenhack.h"
-#include "spline.h"
-
-struct ball {
-  double x, y;
-  double vx, vy;
-  double dx, dy;
-  double mass;
-  int size;
-  int pixel_index;
-  int hue;
-};
-
-static struct ball *balls;
-static int npoints;
-static int threshold;
-static int delay;
-static int global_size;
-static int segments;
-static Bool glow_p;
-static Bool orbit_p;
-static XPoint *point_stack;
-static int point_stack_size, point_stack_fp;
-static XColor *colors;
-static int ncolors;
-static int fg_index;
-static int color_shift;
-
-/*flip mods for mouse interaction*/
-static Bool mouse_p;
-int mouse_x, mouse_y, mouse_mass, root_x, root_y;
-static double viscosity;
-
-static enum object_mode {
-  ball_mode, line_mode, polygon_mode, spline_mode, spline_filled_mode,
-  tail_mode
-} mode;
-
-static GC draw_gc, erase_gc;
-
-#define MAX_SIZE 16
-
-#define min(a,b) ((a)<(b)?(a):(b))
-#define max(a,b) ((a)>(b)?(a):(b))
-
-static void
-init_balls (Display *dpy, Window window)
-{
-  int i;
-  XWindowAttributes xgwa;
-  XGCValues gcv;
-  int xlim, ylim, midx, midy, r, vx, vy;
-  double th;
-  Colormap cmap;
-  char *mode_str;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  xlim = xgwa.width;
-  ylim = xgwa.height;
-  cmap = xgwa.colormap;
-  midx = xlim/2;
-  midy = ylim/2;
-  r = get_integer_resource ("radius", "Integer");
-  if (r <= 0 || r > min (xlim/2, ylim/2))
-    r = min (xlim/2, ylim/2) - 50;
-  vx = get_integer_resource ("vx", "Integer");
-  vy = get_integer_resource ("vy", "Integer");
-  npoints = get_integer_resource ("points", "Integer");
-  if (npoints < 1)
-    npoints = 3 + (random () % 5);
-  balls = (struct ball *) malloc (npoints * sizeof (struct ball));
-  segments = get_integer_resource ("segments", "Integer");
-  if (segments < 0) segments = 1;
-  threshold = get_integer_resource ("threshold", "Integer");
-  if (threshold < 0) threshold = 0;
-  delay = get_integer_resource ("delay", "Integer");
-    if (delay < 0) delay = 0;
-  global_size = get_integer_resource ("size", "Integer");
-  if (global_size < 0) global_size = 0;
-  glow_p = get_boolean_resource ("glow", "Boolean");
-  orbit_p = get_boolean_resource ("orbit", "Boolean");
-  color_shift = get_integer_resource ("colorShift", "Integer");
-  if (color_shift <= 0) color_shift = 5;
-
-  /*flip mods for mouse interaction*/
-  mouse_p = get_boolean_resource ("mouse", "Boolean");
-  mouse_mass = get_integer_resource ("mouseSize", "Integer");
-  mouse_mass =  mouse_mass *  mouse_mass *10;
-
-  viscosity = get_float_resource ("viscosity", "Float");
-
-  mode_str = get_string_resource ("mode", "Mode");
-  if (! mode_str) mode = ball_mode;
-  else if (!strcmp (mode_str, "balls")) mode = ball_mode;
-  else if (!strcmp (mode_str, "lines")) mode = line_mode;
-  else if (!strcmp (mode_str, "polygons")) mode = polygon_mode;
-  else if (!strcmp (mode_str, "tails")) mode = tail_mode;
-  else if (!strcmp (mode_str, "splines")) mode = spline_mode;
-  else if (!strcmp (mode_str, "filled-splines")) mode = spline_filled_mode;
-  else {
-    fprintf (stderr,
-            "%s: mode must be balls, lines, tails, polygons, splines, or\n\
-       filled-splines, not \"%s\"\n",
-            progname, mode_str);
-    exit (1);
-  }
-
-  if (mode != ball_mode && mode != tail_mode) glow_p = False;
-  
-  if (mode == polygon_mode && npoints < 3)
-    mode = line_mode;
-
-  ncolors = get_integer_resource ("colors", "Colors");
-  if (ncolors < 2) ncolors = 2;
-  if (ncolors <= 2) mono_p = True;
-  colors = 0;
-
-  if (!mono_p)
-    {
-      fg_index = 0;
-      switch (mode)
-       {
-       case ball_mode:
-         if (glow_p)
-           {
-             int H = random() % 360;
-             double S1 = 0.25;
-             double S2 = 1.00;
-             double V = frand(0.25) + 0.75;
-             colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-             make_color_ramp (dpy, cmap, H, S1, V, H, S2, V, colors, &ncolors,
-                              False, True, False);
-           }
-         else
-           {
-             ncolors = npoints;
-             colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-             make_random_colormap (dpy, xgwa.visual, cmap, colors, &ncolors,
-                                   True, True, False, True);
-           }
-         break;
-       case line_mode:
-       case polygon_mode:
-       case spline_mode:
-       case spline_filled_mode:
-       case tail_mode:
-         colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-         make_smooth_colormap (dpy, xgwa.visual, cmap, colors, &ncolors,
-                               True, False, True);
-         break;
-       default:
-         abort ();
-       }
-    }
-
-  if (!mono_p && ncolors <= 2)
-    {
-      if (colors) free (colors);
-      colors = 0;
-      mono_p = True;
-    }
-
-  if (mode != ball_mode)
-    {
-      int size = (segments ? segments : 1);
-      point_stack_size = size * (npoints + 1);
-      point_stack = (XPoint *) calloc (point_stack_size, sizeof (XPoint));
-      point_stack_fp = 0;
-    }
-
-  gcv.line_width = (mode == tail_mode
-                   ? (global_size ? global_size : (MAX_SIZE * 2 / 3))
-                   : 1);
-  gcv.cap_style = (mode == tail_mode ? CapRound : CapButt);
-
-  if (mono_p)
-    gcv.foreground = get_pixel_resource("foreground", "Foreground", dpy, cmap);
-  else
-    gcv.foreground = colors[fg_index].pixel;
-  draw_gc = XCreateGC (dpy, window, GCForeground|GCLineWidth|GCCapStyle, &gcv);
-
-  gcv.foreground = get_pixel_resource("background", "Background", dpy, cmap);
-  erase_gc = XCreateGC (dpy, window, GCForeground|GCLineWidth|GCCapStyle,&gcv);
-
-
-#define rand_size() min (MAX_SIZE, 8 + (random () % (MAX_SIZE - 9)))
-
-  if (orbit_p && !global_size)
-    /* To orbit, all objects must be the same mass, or the math gets
-       really hairy... */
-    global_size = rand_size ();
-
-  th = frand (M_PI+M_PI);
-  for (i = 0; i < npoints; i++)
-    {
-      int new_size = (global_size ? global_size : rand_size ());
-      balls [i].dx = 0;
-      balls [i].dy = 0;
-      balls [i].size = new_size;
-      balls [i].mass = (new_size * new_size * 10);
-      balls [i].x = midx + r * cos (i * ((M_PI+M_PI) / npoints) + th);
-      balls [i].y = midy + r * sin (i * ((M_PI+M_PI) / npoints) + th);
-      if (! orbit_p)
-       {
-         balls [i].vx = vx ? vx : ((6.0 - (random () % 11)) / 8.0);
-         balls [i].vy = vy ? vy : ((6.0 - (random () % 11)) / 8.0);
-       }
-      if (mono_p || mode != ball_mode)
-       balls [i].pixel_index = -1;
-      else if (glow_p)
-       balls [i].pixel_index = 0;
-      else
-       balls [i].pixel_index = random() % ncolors;
-    }
-
-  if (orbit_p)
-    {
-      double a = 0;
-      double v;
-      double v_mult = get_float_resource ("vMult", "Float");
-      if (v_mult == 0.0) v_mult = 1.0;
-
-      for (i = 1; i < npoints; i++)
-       {
-          double _2ipi_n = (2 * i * M_PI / npoints);
-         double x = r * cos (_2ipi_n);
-         double y = r * sin (_2ipi_n);
-         double distx = r - x;
-         double dist2 = (distx * distx) + (y * y);
-          double dist = sqrt (dist2);
-          double a1 = ((balls[i].mass / dist2) *
-                       ((dist < threshold) ? -1.0 : 1.0) *
-                       (distx / dist));
-         a += a1;
-       }
-      if (a < 0.0)
-       {
-         fprintf (stderr, "%s: domain error: forces on balls too great\n",
-                  progname);
-         exit (-1);
-       }
-      v = sqrt (a * r) * v_mult;
-      for (i = 0; i < npoints; i++)
-       {
-         double k = ((2 * i * M_PI / npoints) + th);
-         balls [i].vx = -v * sin (k);
-         balls [i].vy =  v * cos (k);
-       }
-    }
-
-  if (mono_p) glow_p = False;
-  XClearWindow (dpy, window);
-}
-
-static void
-compute_force (int i, double *dx_ret, double *dy_ret)
-{
-  int j;
-  double x_dist, y_dist, dist, dist2;
-  *dx_ret = 0;
-  *dy_ret = 0;
-  for (j = 0; j < npoints; j++)
-    {
-      if (i == j) continue;
-      x_dist = balls [j].x - balls [i].x;
-      y_dist = balls [j].y - balls [i].y;
-      dist2 = (x_dist * x_dist) + (y_dist * y_dist);
-      dist = sqrt (dist2);
-             
-      if (dist > 0.1) /* the balls are not overlapping */
-       {
-         double new_acc = ((balls[j].mass / dist2) *
-                           ((dist < threshold) ? -1.0 : 1.0));
-         double new_acc_dist = new_acc / dist;
-         *dx_ret += new_acc_dist * x_dist;
-         *dy_ret += new_acc_dist * y_dist;
-       }
-      else
-       {               /* the balls are overlapping; move randomly */
-         *dx_ret += (frand (10.0) - 5.0);
-         *dy_ret += (frand (10.0) - 5.0);
-       }
-    }
-
-  if (mouse_p)
-    {
-      x_dist = mouse_x - balls [i].x;
-      y_dist = mouse_y - balls [i].y;
-      dist2 = (x_dist * x_dist) + (y_dist * y_dist);
-      dist = sqrt (dist2);
-       
-      if (dist > 0.1) /* the balls are not overlapping */
-       {
-         double new_acc = ((mouse_mass / dist2) *
-                           ((dist < threshold) ? -1.0 : 1.0));
-         double new_acc_dist = new_acc / dist;
-         *dx_ret += new_acc_dist * x_dist;
-         *dy_ret += new_acc_dist * y_dist;
-       }
-      else
-       {               /* the balls are overlapping; move randomly */
-         *dx_ret += (frand (10.0) - 5.0);
-         *dy_ret += (frand (10.0) - 5.0);
-       }
-    }
-}
-
-static void
-run_balls (Display *dpy, Window window)
-{
-  int last_point_stack_fp = point_stack_fp;
-  static int tick = 500, xlim, ylim;
-  static Colormap cmap;
-  int i;
-
-  /*flip mods for mouse interaction*/
-  Window  root1, child1;
-  unsigned int mask;
-  if (mouse_p)
-    {
-      XQueryPointer(dpy, window, &root1, &child1,
-                   &root_x, &root_y, &mouse_x, &mouse_y, &mask);
-    }
-
-  if (tick++ == 500)
-    {
-      XWindowAttributes xgwa;
-      XGetWindowAttributes (dpy, window, &xgwa);
-      tick = 0;
-      xlim = xgwa.width;
-      ylim = xgwa.height;
-      cmap = xgwa.colormap;
-    }
-
-  /* compute the force of attraction/repulsion among all balls */
-  for (i = 0; i < npoints; i++)
-    compute_force (i, &balls[i].dx, &balls[i].dy);
-
-  /* move the balls according to the forces now in effect */
-  for (i = 0; i < npoints; i++)
-    {
-      double old_x = balls[i].x;
-      double old_y = balls[i].y;
-      double new_x, new_y;
-      int size = balls[i].size;
-      balls[i].vx += balls[i].dx;
-      balls[i].vy += balls[i].dy;
-
-      /* don't let them get too fast: impose a terminal velocity
-         (actually, make the medium have friction) */
-      if (balls[i].vx > 10)
-       {
-         balls[i].vx *= 0.9;
-         balls[i].dx = 0;
-       }
-      else if (viscosity != 1)
-       {
-         balls[i].vx *= viscosity;
-       }
-
-      if (balls[i].vy > 10)
-       {
-         balls[i].vy *= 0.9;
-         balls[i].dy = 0;
-       }
-      else if (viscosity != 1)
-       {
-         balls[i].vy *= viscosity;
-       }
-
-      balls[i].x += balls[i].vx;
-      balls[i].y += balls[i].vy;
-
-      /* bounce off the walls */
-      if (balls[i].x >= (xlim - balls[i].size))
-       {
-         balls[i].x = (xlim - balls[i].size - 1);
-         if (balls[i].vx > 0)
-           balls[i].vx = -balls[i].vx;
-       }
-      if (balls[i].y >= (ylim - balls[i].size))
-       {
-         balls[i].y = (ylim - balls[i].size - 1);
-         if (balls[i].vy > 0)
-           balls[i].vy = -balls[i].vy;
-       }
-      if (balls[i].x <= 0)
-       {
-         balls[i].x = 0;
-         if (balls[i].vx < 0)
-           balls[i].vx = -balls[i].vx;
-       }
-      if (balls[i].y <= 0)
-       {
-         balls[i].y = 0;
-         if (balls[i].vy < 0)
-           balls[i].vy = -balls[i].vy;
-       }
-
-      new_x = balls[i].x;
-      new_y = balls[i].y;
-
-      if (!mono_p)
-       {
-         if (mode == ball_mode)
-           {
-             if (glow_p)
-               {
-                 /* make color saturation be related to particle
-                    acceleration. */
-                 double limit = 0.5;
-                 double s, fraction;
-                 double vx = balls [i].dx;
-                 double vy = balls [i].dy;
-                 if (vx < 0) vx = -vx;
-                 if (vy < 0) vy = -vy;
-                 fraction = vx + vy;
-                 if (fraction > limit) fraction = limit;
-
-                 s = 1 - (fraction / limit);
-                 balls[i].pixel_index = (ncolors * s);
-               }
-             XSetForeground (dpy, draw_gc,
-                             colors[balls[i].pixel_index].pixel);
-           }
-       }
-
-      if (mode == ball_mode)
-       {
-         XFillArc (dpy, window, erase_gc, (int) old_x, (int) old_y,
-                   size, size, 0, 360*64);
-         XFillArc (dpy, window, draw_gc,  (int) new_x, (int) new_y,
-                   size, size, 0, 360*64);
-       }
-      else
-       {
-         point_stack [point_stack_fp].x = new_x;
-         point_stack [point_stack_fp].y = new_y;
-         point_stack_fp++;
-       }
-    }
-
-  /* draw the lines or polygons after computing all points */
-  if (mode != ball_mode)
-    {
-      point_stack [point_stack_fp].x = balls [0].x; /* close the polygon */
-      point_stack [point_stack_fp].y = balls [0].y;
-      point_stack_fp++;
-      if (point_stack_fp == point_stack_size)
-       point_stack_fp = 0;
-      else if (point_stack_fp > point_stack_size) /* better be aligned */
-       abort ();
-      if (!mono_p)
-       {
-         static int tick = 0;
-         if (tick++ == color_shift)
-           {
-             tick = 0;
-             fg_index = (fg_index + 1) % ncolors;
-             XSetForeground (dpy, draw_gc, colors[fg_index].pixel);
-           }
-       }
-    }
-
-  switch (mode)
-    {
-    case ball_mode:
-      break;
-    case line_mode:
-      if (segments > 0)
-       XDrawLines (dpy, window, erase_gc, point_stack + point_stack_fp,
-                   npoints + 1, CoordModeOrigin);
-      XDrawLines (dpy, window, draw_gc, point_stack + last_point_stack_fp,
-                 npoints + 1, CoordModeOrigin);
-      break;
-    case polygon_mode:
-      if (segments > 0)
-       XFillPolygon (dpy, window, erase_gc, point_stack + point_stack_fp,
-                     npoints + 1, (npoints == 3 ? Convex : Complex),
-                     CoordModeOrigin);
-      XFillPolygon (dpy, window, draw_gc, point_stack + last_point_stack_fp,
-                   npoints + 1, (npoints == 3 ? Convex : Complex),
-                   CoordModeOrigin);
-      break;
-    case tail_mode:
-      {
-       for (i = 0; i < npoints; i++)
-         {
-           int index = point_stack_fp + i;
-           int next_index = (index + (npoints + 1)) % point_stack_size;
-           XDrawLine (dpy, window, erase_gc,
-                      point_stack [index].x,
-                      point_stack [index].y,
-                      point_stack [next_index].x,
-                      point_stack [next_index].y);
-
-           index = last_point_stack_fp + i;
-           next_index = (index - (npoints + 1)) % point_stack_size;
-           if (next_index < 0) next_index += point_stack_size;
-           if (point_stack [next_index].x == 0 &&
-               point_stack [next_index].y == 0)
-             continue;
-           XDrawLine (dpy, window, draw_gc,
-                      point_stack [index].x,
-                      point_stack [index].y,
-                      point_stack [next_index].x,
-                      point_stack [next_index].y);
-         }
-      }
-      break;
-    case spline_mode:
-    case spline_filled_mode:
-      {
-       static spline *s = 0;
-       if (! s) s = make_spline (npoints);
-       if (segments > 0)
-         {
-           for (i = 0; i < npoints; i++)
-             {
-               s->control_x [i] = point_stack [point_stack_fp + i].x;
-               s->control_y [i] = point_stack [point_stack_fp + i].y;
-             }
-           compute_closed_spline (s);
-           if (mode == spline_filled_mode)
-             XFillPolygon (dpy, window, erase_gc, s->points, s->n_points,
-                           (s->n_points == 3 ? Convex : Complex),
-                           CoordModeOrigin);
-           else
-             XDrawLines (dpy, window, erase_gc, s->points, s->n_points,
-                         CoordModeOrigin);
-         }
-       for (i = 0; i < npoints; i++)
-         {
-           s->control_x [i] = point_stack [last_point_stack_fp + i].x;
-           s->control_y [i] = point_stack [last_point_stack_fp + i].y;
-         }
-       compute_closed_spline (s);
-       if (mode == spline_filled_mode)
-         XFillPolygon (dpy, window, draw_gc, s->points, s->n_points,
-                       (s->n_points == 3 ? Convex : Complex),
-                       CoordModeOrigin);
-       else
-         XDrawLines (dpy, window, draw_gc, s->points, s->n_points,
-                     CoordModeOrigin);
-      }
-      break;
-    default:
-      abort ();
-    }
-
-  XSync (dpy, False);
-}
-
-\f
-char *progclass = "Attraction";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*mode:      balls",
-  "*points:    0",
-  "*size:      0",
-  "*colors:    200",
-  "*threshold: 100",
-  "*delay:     10000",
-  "*glow:      false",
-  "*mouseSize: 10",
-  "*mouse:     false",
-  "*viscosity: 1",
-  "*orbit:     false",
-  "*colorShift:        3",
-  "*segments:  500",
-  "*vMult:     0.9",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-mode",           ".mode",        XrmoptionSepArg, 0 },
-  { "-colors",         ".colors",      XrmoptionSepArg, 0 },
-  { "-points",         ".points",      XrmoptionSepArg, 0 },
-  { "-color-shift",    ".colorShift",  XrmoptionSepArg, 0 },
-  { "-threshold",      ".threshold",   XrmoptionSepArg, 0 },
-  { "-segments",       ".segments",    XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-size",           ".size",        XrmoptionSepArg, 0 },
-  { "-radius",         ".radius",      XrmoptionSepArg, 0 },
-  { "-vx",             ".vx",          XrmoptionSepArg, 0 },
-  { "-vy",             ".vy",          XrmoptionSepArg, 0 },
-  { "-vmult",          ".vMult",       XrmoptionSepArg, 0 },
-  { "-mouse-size",     ".mouseSize",   XrmoptionSepArg, 0 },
-  { "-mouse",          ".mouse",       XrmoptionNoArg, "true" },
-  { "-nomouse",                ".mouse",       XrmoptionNoArg, "false" },
-  { "-viscosity",      ".viscosity",   XrmoptionSepArg, 0 },
-  { "-glow",           ".glow",        XrmoptionNoArg, "true" },
-  { "-noglow",         ".glow",        XrmoptionNoArg, "false" },
-  { "-orbit",          ".orbit",       XrmoptionNoArg, "true" },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  init_balls (dpy, window);
-  while (1)
-    {
-      run_balls (dpy, window);
-      screenhack_handle_events (dpy);
-      if (delay) usleep (delay);
-    }
-}
diff --git a/hacks/attraction.man b/hacks/attraction.man
deleted file mode 100644 (file)
index fabdc8a..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-.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 "14-Jun-97" "X Version 11"
-.SH NAME
-attraction - interactions of opposing forces
-.SH SYNOPSIS
-.B attraction
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-points \fIint\fP] [\-threshold \fIint\fP] [\-mode balls | lines | polygons | splines | filled-splines | tails ] [\-size \fIint\fP] [\-segments \fIint\fP] [\-delay \fIusecs\fP] [\-color-shift \fIint\fP] [\-radius \fIint\fP] [\-vx \fIint\fP] [\-vy \fIint\fP] [\-glow] [\-noglow] [\-orbit] [\-viscosity \fIfloat\fP] [\-mouse] [\-no-mouse] [\-mouse-size]
-.SH DESCRIPTION
-The \fIattraction\fP program has several visually different modes of 
-operation, all of which are based on the interactions of a set of control
-points which attract each other up to a certain distance, and then begin
-to repel each other.  The attraction/repulsion is proportional to the 
-distance between any two particles.
-.SH OPTIONS
-.I attraction
-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 \-points integer
-How many control points should be used, or 0 to select the number randomly.
-Default 0.  Between 3 and 15 works best.
-.TP 8
-.B \-threshold integer
-The distance (in pixels) from each particle at which the attractive force
-becomes repulsive.  Default 100.
-.TP 8
-.B \-mode "balls | lines | polygons | tails | splines | filled-splines"
-In \fIballs\fP mode (the default) the control points are drawn as filled
-circles.  The larger the circle, the more massive the particle.
-
-In \fIlines\fP mode, the control points are connected by straight lines;
-the effect is something like \fIqix\fP.
-
-In \fIpolygons\fP mode, the control points are connected by straight
-lines, and filled in.  This is most interesting in color.
-
-In \fIsplines\fP mode, a closed spline is interpolated from the control 
-points.
-
-In \fIfilled-splines\fP mode, the splines are filled in instead of being
-outlines.  This is most interesting in color.
-
-In \fItails\fP mode, the path which each particle follows is indicated
-by a worm-like trail, whose length is controlled by the \fIsegments\fP
-parameter.
-.TP 8
-.B \-size integer
-The size of the balls in pixels, or 0, meaning to select the sizes 
-randomly (the default.)  If this is specified, then all balls will be 
-the same size.  This option has an effect in all modes, since the ``size''
-of the balls controls their mass.
-.TP 8
-.B \-segments integer
-If in \fIlines\fP or \fIpolygons\fP mode, how many sets of line segments
-or polygons should be drawn. Default 100.  This has no effect in \fIballs\fP
-mode.  If \fIsegments\fP is 0, then no segments will ever be erased (this
-is only useful in color.)
-.TP 8
-.B \-delay microseconds
-How much of a delay should be introduced between steps of the animation.
-Default 10000, or about 0.01 seconds.
-.TP 8
-.B \-color-shift int
-If on a color display, the color of the line segments or polygons will 
-cycle through the color map.  This specifies how many lines will be drawn
-before a new color is chosen.  (When a small number of colors are available,
-increasing this value will yield smoother transitions.)  Default 3.
-This has no effect in \fIballs\fP mode.
-.TP 8
-.B \-radius
-The size in pixels of the circle on which the points are initially positioned.
-The default is slightly smaller than the size of the window.
-.TP 8
-.B \-glow
-This is consulted only in \fIballs\fP mode.  If this is specified, then 
-the saturation of the colors of the points will vary according to their
-current acceleration.  This has the effect that the balls flare brighter
-when they are reacting to each other most strongly.
-
-In \fIglow\fP mode, all of the balls will be drawn the same (random)
-color, modulo the saturation shifts.  In non-glow mode, the balls will
-each be drawn in a random color that doesn't change.
-.TP 8
-.B \-noglow
-Don't do ``glowing.''  This is the default.
-.TP 8
-.B \-vx pixels
-.TP 8
-.B \-vy pixels
-Initial velocity of the balls.  This has no effect in \fB\-orbit\fP mode.
-.TP 8
-.B \-orbit
-Make the initial force on each ball be tangential to the circle on which
-they are initially placed, with the right velocity to hold them in orbit
-about each other.  After a while, roundoff errors will cause the orbit
-to decay.
-.TP 8
-.B \-vmult float
-In orbit mode, the initial velocity of the balls is multiplied by this;
-a number less than 1 will make the balls pull closer together, and a larger
-number will make them move apart.  The default is 0.9, meaning a slight
-inward pull.
-.TP 8
-.B \-viscosity float
-This sets the viscosity of the hypothetical fluid through which the control
-points move; the default is 1, meaning no resistance.  Values higher than 1
-aren't interesting; lower values cause less motion.
-
-One interesting thing to try is
-.EX
-attraction -viscosity 0.8 -points 75 \\
-  -mouse -geometry =500x500
-.EE
-Give it a few seconds to settle down into a stable clump, and then move
-the mouse through it to make "waves".
-.TP 8
-.B \-mouse
-This will cause the mouse to be considered a control point; it will not be
-drawn, but it will influence the other points, so you can wave the mouse
-and influence the images being created.
-.TP 8
-.B \-no-mouse
-Turns off \fB\-mouse\fP.
-.TP 8
-.B \-mouse-size integer
-In \fB\-mouse\fP mode, this sets the mass of the mouse (analagously to the
-\fB\-size\fP parameter.)
-.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 1992, 1993, 1997 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 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>, 13-aug-92.
-
-Viscosity and mouse support by Philip Edward Cutone, III.
diff --git a/hacks/automata.h b/hacks/automata.h
deleted file mode 100644 (file)
index b35f542..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/*-
- * automata.c - special stuff for automata modes
- *
- * Copyright (c) 1995 by David Bagley.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- */
-
-#define NUMSTIPPLES 11
-#define STIPPLESIZE 8
-
-static XPoint hexagonUnit[6] =
-{
-       {0, 0},
-       {1, 1},
-       {0, 2},
-       {-1, 1},
-       {-1, -1},
-       {0, -2}
-};
-
-static XPoint triangleUnit[2][3] =
-{
-       {
-               {0, 0},
-               {1, -1},
-               {0, 2}
-       },
-       {
-               {0, 0},
-               {-1, 1},
-               {0, -2}
-       }
-};
-
-
-static unsigned char stipples[NUMSTIPPLES][STIPPLESIZE] =
-{
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},       /* white */
-       {0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22},       /* grey+white | stripe */
-       {0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00},       /* spots */
-       {0x88, 0x44, 0x22, 0x11, 0x88, 0x44, 0x22, 0x11},       /* lt. / stripe */
-       {0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66},       /* | bars */
-       {0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa},       /* 50% grey */
-       {0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00},       /* - bars */
-       {0xee, 0xdd, 0xbb, 0x77, 0xee, 0xdd, 0xbb, 0x77},       /* dark \ stripe */
-       {0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff},       /* spots */
-       {0xaa, 0xff, 0xff, 0x55, 0xaa, 0xff, 0xff, 0x55},       /* black+grey - stripe */
-       {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}        /* black */
-};
diff --git a/hacks/blitspin.c b/hacks/blitspin.c
deleted file mode 100644 (file)
index 1c52725..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-/* xscreensaver, Copyright (c) 1992-1997 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.
- */
-
-/* Rotate a bitmap using using bitblts.
-   The bitmap must be square, and must be a power of 2 in size.
-   This was translated from SmallTalk code which appeared in the
-   August 1981 issue of Byte magazine.
-
-   The input bitmap may be non-square, it is padded and centered
-   with the background color.  Another way would be to subdivide
-   the bitmap into square components and rotate them independently
-   (and preferably in parallel), but I don't think that would be as
-   interesting looking.
-
-   It's too bad almost nothing uses blitter hardware these days,
-   or this might actually win.
- */
-
-#include "screenhack.h"
-#include <stdio.h>
-
-#ifdef HAVE_XPM
-# include <X11/xpm.h>
-# ifndef PIXEL_ALREADY_TYPEDEFED
-#  define PIXEL_ALREADY_TYPEDEFED /* Sigh, Xmu/Drawing.h needs this... */
-# endif
-#endif
-
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/Drawing.h>
-#else  /* VMS */
-#  include <Xmu/Drawing.h>
-# endif /* VMS */
-#endif
-
-#include "images/som.xbm"
-
-static Display *dpy;
-static Window window;
-static unsigned int size;
-static Pixmap self, temp, mask;
-static GC SET, CLR, CPY, IOR, AND, XOR;
-static GC gc;
-static int delay, delay2;
-static Pixmap bitmap;
-static int depth;
-static unsigned int fg, bg;
-
-static void display (Pixmap);
-
-#define copy_all_to(from, xoff, yoff, to, gc)          \
-  XCopyArea (dpy, (from), (to), (gc), 0, 0,            \
-            size-(xoff), size-(yoff), (xoff), (yoff))
-
-#define copy_all_from(to, xoff, yoff, from, gc)                \
-  XCopyArea (dpy, (from), (to), (gc), (xoff), (yoff),  \
-            size-(xoff), size-(yoff), 0, 0)
-
-static void
-rotate (void)
-{
-  int qwad; /* fuckin' C, man... who needs namespaces? */
-  XFillRectangle (dpy, mask, CLR, 0, 0, size, size);
-  XFillRectangle (dpy, mask, SET, 0, 0, size>>1, size>>1);
-  for (qwad = size>>1; qwad > 0; qwad>>=1)
-    {
-      if (delay) usleep (delay);
-      copy_all_to   (mask,       0,       0, temp, CPY);  /* 1 */
-      copy_all_to   (mask,       0,    qwad, temp, IOR);  /* 2 */
-      copy_all_to   (self,       0,       0, temp, AND);  /* 3 */
-      copy_all_to   (temp,       0,       0, self, XOR);  /* 4 */
-      copy_all_from (temp,    qwad,       0, self, XOR);  /* 5 */
-      copy_all_from (self,    qwad,       0, self, IOR);  /* 6 */
-      copy_all_to   (temp,    qwad,       0, self, XOR);  /* 7 */
-      copy_all_to   (self,       0,       0, temp, CPY);  /* 8 */
-      copy_all_from (temp,    qwad,    qwad, self, XOR);  /* 9 */
-      copy_all_to   (mask,       0,       0, temp, AND);  /* A */
-      copy_all_to   (temp,       0,       0, self, XOR);  /* B */
-      copy_all_to   (temp,    qwad,    qwad, self, XOR);  /* C */
-      copy_all_from (mask, qwad>>1, qwad>>1, mask, AND);  /* D */
-      copy_all_to   (mask,    qwad,       0, mask, IOR);  /* E */
-      copy_all_to   (mask,       0,    qwad, mask, IOR);  /* F */
-      display (self);
-    }
-}
-
-static void
-read_bitmap (char *bitmap_name, int *widthP, int *heightP)
-{
-#ifdef HAVE_XPM
-  XWindowAttributes xgwa;
-  XpmAttributes xpmattrs;
-  int result;
-  xpmattrs.valuemask = 0;
-  bitmap = 0;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-# ifdef XpmCloseness
-  xpmattrs.valuemask |= XpmCloseness;
-  xpmattrs.closeness = 40000;
-# endif
-# ifdef XpmVisual
-  xpmattrs.valuemask |= XpmVisual;
-  xpmattrs.visual = xgwa.visual;
-# endif
-# ifdef XpmDepth
-  xpmattrs.valuemask |= XpmDepth;
-  xpmattrs.depth = xgwa.depth;
-# endif
-# ifdef XpmColormap
-  xpmattrs.valuemask |= XpmColormap;
-  xpmattrs.colormap = xgwa.colormap;
-# endif
-
-  result = XpmReadFileToPixmap (dpy, window, bitmap_name, &bitmap, 0,
-                               &xpmattrs);
-  switch (result)
-    {
-    case XpmColorError:
-      fprintf (stderr, "%s: warning: xpm color substitution performed\n",
-              progname);
-      /* fall through */
-    case XpmSuccess:
-      *widthP = xpmattrs.width;
-      *heightP = xpmattrs.height;
-      break;
-    case XpmFileInvalid:
-    case XpmOpenFailed:
-      bitmap = 0;
-      break;
-    case XpmColorFailed:
-      fprintf (stderr, "%s: xpm: color allocation failed\n", progname);
-      exit (-1);
-    case XpmNoMemory:
-      fprintf (stderr, "%s: xpm: out of memory\n", progname);
-      exit (-1);
-    default:
-      fprintf (stderr, "%s: xpm: unknown error code %d\n", progname, result);
-      exit (-1);
-    }
-  if (! bitmap)
-#endif
-
-#ifdef HAVE_XMU
-    {
-      int xh, yh;
-      Pixmap b2;
-      bitmap = XmuLocateBitmapFile (DefaultScreenOfDisplay (dpy), bitmap_name,
-                                   0, 0, widthP, heightP, &xh, &yh);
-      if (! bitmap)
-       {
-         fprintf (stderr, "%s: couldn't find bitmap %s\n", progname,
-                  bitmap_name);
-         exit (1);
-       }
-      b2 = XmuCreatePixmapFromBitmap (dpy, window, bitmap, *widthP, *heightP,
-                                     depth, fg, bg);
-      XFreePixmap (dpy, bitmap);
-      bitmap = b2;
-    }
-#else  /* !XMU */
-    {
-      fprintf (stderr,
-              "%s: your vendor doesn't ship the standard Xmu library.\n",
-              progname);
-      fprintf (stderr, "\tWe can't load XBM files without it.\n");
-      exit (1);
-    }
-#endif /* !XMU */
-}
-
-
-static Pixmap
-read_screen (Display *dpy, Window window, int *widthP, int *heightP)
-{
-  Pixmap p;
-  XWindowAttributes xgwa;
-  XGCValues gcv;
-  GC gc;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  *widthP = xgwa.width;
-  *heightP = xgwa.height;
-
-  grab_screen_image(xgwa.screen, window);
-  p = XCreatePixmap(dpy, window, *widthP, *heightP, xgwa.depth);
-  gcv.function = GXcopy;
-  gc = XCreateGC (dpy, window, GCFunction, &gcv);
-  XCopyArea (dpy, window, p, gc, 0, 0, *widthP, *heightP, 0, 0);
-
-  /* Reset the window's background color... */
-  XSetWindowBackground (dpy, window,
-                       get_pixel_resource ("background", "Background",
-                                           dpy, xgwa.colormap));
-  XCopyArea (dpy, p, window, gc, 0, 0, *widthP, *heightP, 0, 0);
-  XFreeGC (dpy, gc);
-
-  return p;
-}
-
-
-static int 
-to_pow2(int n, Bool up)
-{
-  /* sizeof(Dimension) == 2. */
-  int powers_of_2[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,
-                       2048, 4096, 8192, 16384, 32768, 65536 };
-  int i = 0;
-  if (n > 65536) size = 65536;
-  while (n >= powers_of_2[i]) i++;
-  if (n == powers_of_2[i-1])
-    return n;
-  else
-    return powers_of_2[up ? i : i-1];
-}
-
-static void
-init (void)
-{
-  XWindowAttributes xgwa;
-  Colormap cmap;
-  XGCValues gcv;
-  int width, height;
-  char *bitmap_name;
-  Bool scale_up;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  depth = xgwa.depth;
-
-  fg = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  bg = get_pixel_resource ("background", "Background", dpy, cmap);
-  delay = get_integer_resource ("delay", "Integer");
-  delay2 = get_integer_resource ("delay2", "Integer");
-  if (delay < 0) delay = 0;
-  if (delay2 < 0) delay2 = 0;
-  bitmap_name = get_string_resource ("bitmap", "Bitmap");
-  if (! bitmap_name || !*bitmap_name)
-    bitmap_name = "(default)";
-
-  if (!strcmp (bitmap_name, "(default)"))
-    {
-      width = som_width;
-      height = som_height;
-      bitmap = XCreatePixmapFromBitmapData (dpy, window, (char *) som_bits,
-                                           width, height, fg, bg, depth);
-      scale_up = True; /* definitely. */
-    }
-  else if (!strcmp (bitmap_name, "(screen)"))
-    {
-      bitmap = read_screen (dpy, window, &width, &height);
-      scale_up = True; /* maybe? */
-    }
-  else
-    {
-      read_bitmap (bitmap_name, &width, &height);
-      scale_up = True; /* probably? */
-    }
-
-  size = (width < height) ? height : width;    /* make it square */
-  size = to_pow2(size, scale_up);              /* round up to power of 2 */
-  {                                            /* don't exceed screen size */
-    int s = XScreenNumberOfScreen(xgwa.screen);
-    int w = to_pow2(XDisplayWidth(dpy, s), False);
-    int h = to_pow2(XDisplayHeight(dpy, s), False);
-    if (size > w) size = w;
-    if (size > h) size = h;
-  }
-
-  self = XCreatePixmap (dpy, window, size, size, depth);
-  temp = XCreatePixmap (dpy, window, size, size, depth);
-  mask = XCreatePixmap (dpy, window, size, size, depth);
-  gcv.foreground = (depth == 1 ? 1 : (~0));
-  gcv.function=GXset;  SET = XCreateGC(dpy,self,GCFunction|GCForeground,&gcv);
-  gcv.function=GXclear;CLR = XCreateGC(dpy,self,GCFunction|GCForeground,&gcv);
-  gcv.function=GXcopy; CPY = XCreateGC(dpy,self,GCFunction|GCForeground,&gcv);
-  gcv.function=GXor;   IOR = XCreateGC(dpy,self,GCFunction|GCForeground,&gcv);
-  gcv.function=GXand;  AND = XCreateGC(dpy,self,GCFunction|GCForeground,&gcv);
-  gcv.function=GXxor;  XOR = XCreateGC(dpy,self,GCFunction|GCForeground,&gcv);
-
-  gcv.foreground = gcv.background = bg;
-  gc = XCreateGC (dpy, window, GCForeground|GCBackground, &gcv);
-  /* Clear self to the background color (not to 0, which CLR does.) */
-  XFillRectangle (dpy, self, gc, 0, 0, size, size);
-  XSetForeground (dpy, gc, fg);
-
-  XCopyArea (dpy, bitmap, self, CPY, 0, 0, width, height,
-            (size - width)>>1, (size - height)>>1);
-  XFreePixmap(dpy, bitmap);
-
-  display (self);
-  XSync(dpy, False);
-  screenhack_handle_events (dpy);
-}
-
-static void
-display (Pixmap pixmap)
-{
-  XWindowAttributes xgwa;
-  static int last_w = 0, last_h = 0;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  if (xgwa.width != last_w || xgwa.height != last_h)
-    {
-      XClearWindow (dpy, window);
-      last_w = xgwa.width;
-      last_h = xgwa.height;
-    }
-#ifdef HAVE_XPM
-  if (depth != 1)
-    XCopyArea (dpy, pixmap, window, gc, 0, 0, size, size,
-              (xgwa.width-size)>>1, (xgwa.height-size)>>1);
-  else
-#endif
-    XCopyPlane (dpy, pixmap, window, gc, 0, 0, size, size,
-               (xgwa.width-size)>>1, (xgwa.height-size)>>1, 1);
-/*
-  XDrawRectangle (dpy, window, gc,
-                 ((xgwa.width-size)>>1)-1, ((xgwa.height-size)>>1)-1,
-                 size+2, size+2);
-*/
-  XSync (dpy, False);
-  screenhack_handle_events (dpy);
-}
-
-\f
-char *progclass = "BlitSpin";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*delay:     500000",
-  "*delay2:    500000",
-  "*bitmap:    (default)",
-  "*geometry:  512x512",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-delay2",         ".delay2",      XrmoptionSepArg, 0 },
-  { "-bitmap",         ".bitmap",      XrmoptionSepArg, 0 },
-  { "-grab-screen",    ".bitmap",      XrmoptionNoArg, "(screen)" },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *d, Window w)
-{
-  dpy = d;
-  window = w;
-  init ();
-  if (delay2) usleep (delay2 * 2);
-  while (1)
-    {
-      rotate ();
-      screenhack_handle_events (d);
-      if (delay2) usleep (delay2);
-    }
-}
diff --git a/hacks/blitspin.man b/hacks/blitspin.man
deleted file mode 100644 (file)
index f374666..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-.TH XScreenSaver 1 "24-Nov-97" "X Version 11"
-.SH NAME
-blitspin - rotate a bitmap in an interesting way
-.SH SYNOPSIS
-.B blitspin
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-bitmap \fIfilename\fP] [\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP]
-.SH DESCRIPTION
-The \fIblitspin\fP program repeatedly rotates a bitmap by 90 degrees by
-using logical operations: the bitmap is divided into quadrants, and the
-quadrants are shifted clockwise.  Then the same thing is done again with
-progressively smaller quadrants, except that all sub-quadrants of a 
-given size are rotated in parallel.  So this takes \fBO(16*log2(N))\fP 
-blits of size NxN, with the limitation that the image must be square,
-and the size must be a power of 2.
-.SH OPTIONS
-.I blitspin
-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 \-bitmap \fIfilename\fP
-The file name of a bitmap to rotate.  It need not be square: it 
-will be padded with the background color.  If unspecified or the
-string \fI(default)\fP, a builtin bitmap is used.
-
-If support for the \fIXPM\fP library was enabled at compile-time, 
-the specified file may be in \fIXPM\fP format as well as \fIXBM\fP, and 
-thus may be a color image.
-
-The \fB*bitmapFilePath\fP resource will be searched if the bitmap
-name is not a fully-qualified pathname.
-.TP 8
-.B \-grab\-screen
-If this option is specified, then the image which is spun will be grabbed
-from the portion of the screen underlying the blitspin window.  (Or, it
-may come from an external video source: see below.)
-.PP
-.TP 8
-.B \-delay \fImicroseconds\fP
-How long to delay between steps of the rotation process, in microseconds.
-Default is 500000, one-half second.
-.PP
-.TP 8
-.B \-delay2 \fImicroseconds\fP
-How long to delay between each 90-degree rotation, in microseconds.
-Default is 500000, one-half second.
-.B DISPLAY
-to get the default host and display number.
-.SH RESOURCES
-On some systems (currently, only SGIs), this program can, instead of grabbing
-a desktop image, grab a frame of video from an external camera and manipulate
-that instead.  The following resources control that.
-.PP
-.TP 8
-.B grabVideoProbability \fR(Float)\fP
-What portion of the time to grab video rather than a screen image, 
-between 0.0 and 1.0.  Defaults to 0.5, or half the time.
-.TP 8
-.B videoDevice \fR(Integer)\fP
-The number of the default video input device to check first.  If unspecified, 
-the default camera (from videopanel(1)) will be checked first.  After that, all
-other available video input devices will be checked in order.  
-
-The first one which produces a non-black image will be used.  If all images
-are black, the others will be re-checked a few times before giving up and
-falling back to simply grabbing a desktop image (but note that this takes a
-few seconds, so if you don't actually have any video sources hooked up, you
-should consider turning off video grabbing by setting
-\fBgrabVideoProbability\fP to 0.0.)
-.TP 8
-.B videoGain \fR(Float)\fP
-The amount by which to brighten the grabbed image.  This defaults to 2.2.
-.SH ENVIRONMENT
-.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 1992, 1993, 1997 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 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>, 17-aug-92.
-
-Based on SmallTalk code which appeared in the August 1981 issue of Byte
-magazine.
diff --git a/hacks/bouboule.c b/hacks/bouboule.c
deleted file mode 100644 (file)
index 7e77e46..0000000
+++ /dev/null
@@ -1,841 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
-   Ported from xlockmore 4.03a12 to be a standalone program and thus usable
-   with xscreensaver by Jamie Zawinski <jwz@jwz.org> on 15-May-97.
-
-   Original copyright notice from xlock.c:
-
-    * Copyright (c) 1988-91 by Patrick J. Naughton.
-    *
-    * Permission to use, copy, modify, and distribute this software and its
-    * documentation for any purpose and without fee is hereby granted,
-    * provided that the above copyright notice appear in all copies and that
-    * both that copyright notice and this permission notice appear in
-    * supporting documentation.
-    *
-    * This file is provided AS IS with no warranties of any kind.  The author
-    * shall have no liability with respect to the infringement of copyrights,
-    * trade secrets or any patents by this file or any part thereof.  In no
-    * event will the author be liable for any lost revenue or profits or
-    * other special, indirect and consequential damages.
- */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)bouboule.c   4.00 97/01/01 xlockmore";
-
-#endif
-
-/*-
- * bouboule.c (bouboule mode for xlockmore)
- *
- * Sort of starfield for xlockmore. I found that making a starfield for
- * a 3D engine and thought it could be a nice lock mode. For a real starfield,
- * I only scale the sort of sphere you see to the whole sky and clip the stars
- * to the camera screen.
- *
- *   Code Copyright 1996 by Jeremie PETIT (jeremie_petit@geocities.com)
- *
- *   Use: batchcount is the number of stars.
- *        cycles is the maximum size for a star
- *
- * 15-May-97: jwz@jwz.org: turned into a standalone program.
- * 04-Sep-96: Added 3d support (Henrik Theiling, theiling@coli-uni-sb.de)
- * 20-Feb-96: Added tests so that already malloced objects are not
- *            malloced twice, thanks to the report from <mccomb@interport.net>
- * 01-Feb-96: Patched by Jouk Jansen <joukj@alpha.chem.uva.nl> for VMS
- *            Patched by <bagleyd@bigfoot.com> for TrueColor displays
- * 30-Jan-96: Wrote all that I wanted to.
- *
- * DONE: Build up a XArc list and Draw everything once with XFillArcs
- *       That idea came from looking at swarm code.
- * DONE: Add an old arcs list for erasing.
- * DONE: Make center of starfield SinVariable.
- * DONE: Add some random in the sinvary() function.
- * DONE: check time for erasing the stars with the two methods and use the
- *       better one. Note that sometimes the time difference between
- *       beginning of erasing and its end is negative! I check this, and
- *       do not use this result when it occurs. If all values are negative,
- *       the erasing will continue being done in the currently tested mode.
- * DONE: Allow stars size customization.
- * DONE: Make sizey be no less than half sizex or no bigger than twice sizex.
- *
- * IDEA: A simple check can be performed to know which stars are "behind"
- *       and which are "in front". So is possible to very simply change
- *       the drawing mode for these two sorts of stars. BUT: this would lead
- *       to a rewrite of the XArc list code because drawing should be done
- *       in two steps: "behind" stars then "in front" stars. Also, what could
- *       be the difference between the rendering of these two types of stars?
- * IDEA: Calculate the distance of each star to the "viewer" and render the
- *       star accordingly to this distance. Same remarks as for previous
- *       ideas can be pointed out. This would even lead to reget the old stars
- *       drawing code, that has been replaced by the XFillArcs. On another
- *       hand, this would allow particular stars (own color, shape...), as
- *       far as they would be individually drawn. One should be careful to
- *       draw them according to their distance, that is not drawing a far
- *       star after a close one.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Bouboule"
-# define HACK_INIT                                     init_bouboule
-# define HACK_DRAW                                     draw_bouboule
-# define bouboule_opts                         xlockmore_opts
-# define DEFAULTS      "*count:                100     \n"                     \
-                                       "*size:                 15      \n"                     \
-                                       "*delay:                5000    \n"                     \
-                                       "*ncolors:              64      \n"                     \
-                                       "*use3d:                False   \n"                     \
-                                       "*delta3d:              1.5             \n"                     \
-                                       "*right3d:              red             \n"                     \
-                                       "*left3d:               blue    \n"                     \
-                                       "*both3d:               magenta \n"                     \
-                                       "*none3d:               black   \n"
-
-# define SMOOTH_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt bouboule_opts = {
-  0, NULL, 0, NULL, NULL };
-
-#define USEOLDXARCS  1         /* If 1, we use old xarcs list for erasing.
-                                  * else we just roughly erase the window.
-                                  * This mainly depends on the number of stars,
-                                  * because when they are many, it is faster to
-                                  * erase the whole window than to erase each star
-                                */
-
-#if HAVE_GETTIMEOFDAY
-#define ADAPT_ERASE  1         /* If 1, then we try ADAPT_CHECKS black XFillArcs,
-                                  * and after, ADAPT_CHECKS XFillRectangle.
-                                  * We check which method seems better, knowing that
-                                  * XFillArcs is generally visually better. So we
-                                  * consider that XFillArcs is still better if its time
-                                  * is about XFillRectangle * ADAPT_ARC_PREFERED
-                                  * We need gettimeofday
-                                  * for this... Does it exist on other systems ? Do we
-                                  * have to use another function for others ?
-                                  * This value overrides USEOLDXARCS.
-                                */
-
-#ifdef USE_XVMSUTILS
-# if 0
-#  include "../xvmsutils/unix_time.h"
-# else
-#  include <X11/unix_time.h>
-# endif
-#endif
-
-#include <sys/time.h>
-
-#define ADAPT_CHECKS 50
-#define ADAPT_ARC_PREFERED 150 /* Maybe the value that is the most important
-                                  * for adapting to a system */
-#endif
-
-#define dtor(x)    (((x) * M_PI) / 180.0)      /* Degrees to radians */
-
-#define MINSTARS      1
-#define MINSIZE       1
-/* jwz: I think slower color changes look better */
-#define COLOR_CHANGES 50               /* How often we change colors (1 = always)
-                                  * This value should be tuned accordingly to
-                                  * the number of stars */
-#define MAX_SIZEX_SIZEY 2.     /* This controls whether the sphere can be very
-                                  * very large and have a small height (or the
-                                  * opposite) or no. */
-
-#define THETACANRAND  80       /* percentage of changes for the speed of
-                                  * change of the 3 theta values */
-#define SIZECANRAND   80       /* percentage of changes for the speed of
-                                  * change of the sizex and sizey values */
-#define POSCANRAND    80       /* percentage of changes for the speed of
-                                  * change of the x and y values */
-/* Note that these XXXCANRAND values can be 0, that is no rand acceleration *
-   variation. */
-
-#define VARRANDALPHA (NRAND((int) (M_PI * 1000.0))/1000.0)
-#define VARRANDSTEP  (M_PI/(NRAND(100)+100.0))
-#define VARRANDMIN   (-70.0)
-#define VARRANDMAX   70.0
-
-#define MINZVAL   100          /* stars can come this close */
-#define SCREENZ  2000          /* this is where the screen is */
-#define MAXZVAL 10000          /* stars can go this far away */
-
-#define GETZDIFF(z) ((MI_DELTA3D(mi))*20.0*(1.0-(SCREENZ)/(z+1000)))
-#define MAXDIFF  MAX(-GETZDIFF(MINZVAL),GETZDIFF(MAXZVAL))
-
-/* These values are the variation parameters of the acceleration variation *
-   of the SinVariables that are randomized. */
-
-/******************************/
-typedef struct SinVariableStruct
-/******************************/
-{
-       double      alpha;      /* 
-                                * Alpha is the current state of the sinvariable
-                                * alpha should be initialized to a value between
-                                * 0.0 and 2 * M_PI
-                                */
-       double      step;       /*
-                                * Speed of evolution of alpha. It should be a reasonable
-                                * fraction of 2 * M_PI. This value directly influence
-                                * the variable speed of variation.
-                                */
-       double      minimum;    /* Minimum value for the variable */
-       double      maximum;    /* Maximum value for the variable */
-       double      value;      /* Current value */
-       int         mayrand;    /* Flag for knowing whether some randomization can be
-                                * applied to the variable */
-       struct SinVariableStruct *varrand;      /* Evolving Variable: the variation of
-                                                  * alpha */
-} SinVariable;
-
-/***********************/
-typedef struct StarStruct
-/***********************/
-{
-       double      x, y, z;    /* Position of the star */
-       short       size;       /* Try to guess */
-} Star;
-
-/****************************/
-typedef struct StarFieldStruct
-/****************************/
-{
-       short       width, height;      /* width and height of the starfield window */
-       short       max_star_size;      /* Maximum radius for stars. stars radius will
-                                        * vary from 1 to MAX_STAR_SIZE */
-       SinVariable x;          /* Evolving variables:               */
-       SinVariable y;          /* Center of the field on the screen */
-       SinVariable z;
-       SinVariable sizex;      /* Evolving variable: half width  of the field */
-       SinVariable sizey;      /* Evolving variable: half height of the field */
-       SinVariable thetax;     /* Evolving Variables:              */
-       SinVariable thetay;     /* rotation angles of the starfield */
-       SinVariable thetaz;     /* around x, y and z local axis     */
-       Star       *star;       /* List of stars */
-       XArc       *xarc;       /* Current List of arcs */
-       XArc       *xarcleft;   /* additional list for the left arcs */
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-       XArc       *oldxarc;    /* Old list of arcs */
-       XArc       *oldxarcleft;
-#endif
-       unsigned long color;    /* Current color of the starfield */
-       int         colorp;     /* Pointer to color of the starfield */
-       int         NbStars;    /* Number of stars */
-       short       colorchange;        /* Counter for the color change */
-#if (ADAPT_ERASE == 1)
-       short       hasbeenchecked;
-       long        rect_time;
-       long        xarc_time;
-#endif
-} StarField;
-
-static StarField *starfield = NULL;
-
-/*********/
-static void
-sinvary(SinVariable * v)
-/*********/
-
-{
-       v->value = v->minimum +
-               (v->maximum - v->minimum) * (sin(v->alpha) + 1.0) / 2.0;
-
-       if (v->mayrand == 0)
-               v->alpha += v->step;
-       else {
-               int         vaval = NRAND(100);
-
-               if (vaval <= v->mayrand)
-                       sinvary(v->varrand);
-               v->alpha += (100.0 + (v->varrand->value)) * v->step / 100.0;
-       }
-
-       if (v->alpha > 2 * M_PI)
-               v->alpha -= 2 * M_PI;
-}
-
-/*************************************************/
-static void
-sininit(SinVariable * v,
-       double alpha, double step, double minimum, double maximum,
-       short int mayrand)
-{
-       v->alpha = alpha;
-       v->step = step;
-       v->minimum = minimum;
-       v->maximum = maximum;
-       v->mayrand = mayrand;
-       if (mayrand != 0) {
-               if (v->varrand == NULL)
-                       v->varrand = (SinVariable *) calloc(1, sizeof (SinVariable));
-               sininit(v->varrand,
-                       VARRANDALPHA,
-                       VARRANDSTEP,
-                       VARRANDMIN,
-                       VARRANDMAX,
-                       0);
-               sinvary(v->varrand);
-       }
-       /* We calculate the values at least once for initialization */
-       sinvary(v);
-}
-
-static void
-sinfree(SinVariable * point)
-{
-       SinVariable *temp, *next;
-
-       next = point->varrand;
-       while (next) {
-               temp = next;
-               next = temp->varrand;
-               (void) free((void *) temp);
-       }
-}
-
-/***************/
-void
-init_bouboule(ModeInfo * mi)
-/***************/
-
-/*-
- *  The stars init part was first inspirated from the net3d game starfield
- * code.  But net3d starfield is not really 3d starfield, and I needed real 3d,
- * so only remains the net3d starfield initialization main idea, that is
- * the stars distribution on a sphere (theta and omega computing)
- */
-{
-       StarField  *sp;
-       int         size = MI_SIZE(mi);
-       int         i;
-       double      theta, omega;
-
-       if (starfield == NULL) {
-               if ((starfield = (StarField *) calloc(MI_NUM_SCREENS(mi),
-                                               sizeof (StarField))) == NULL)
-                       return;
-       }
-       sp = &starfield[MI_SCREEN(mi)];
-
-       sp->width = MI_WIN_WIDTH(mi);
-       sp->height = MI_WIN_HEIGHT(mi);
-
-       /* use the right `black' pixel values: */
-       if (MI_WIN_IS_INSTALL(mi) && MI_WIN_IS_USE3D(mi)) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_NONE_COLOR(mi));
-               XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                              0, 0, sp->width, sp->height);
-       } else
-               XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-
-       if (size < -MINSIZE)
-               sp->max_star_size = NRAND(-size - MINSIZE + 1) + MINSIZE;
-       else if (size < MINSIZE)
-               sp->max_star_size = MINSIZE;
-       else
-               sp->max_star_size = size;
-
-       sp->NbStars = MI_BATCHCOUNT(mi);
-       if (sp->NbStars < -MINSTARS) {
-               if (sp->star) {
-                       (void) free((void *) sp->star);
-                       sp->star = NULL;
-               }
-               if (sp->xarc) {
-                       (void) free((void *) sp->xarc);
-                       sp->xarc = NULL;
-               }
-               if (sp->xarcleft) {
-                       (void) free((void *) sp->xarcleft);
-                       sp->xarcleft = NULL;
-               }
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-               if (sp->oldxarc) {
-                       (void) free((void *) sp->oldxarc);
-                       sp->oldxarc = NULL;
-               }
-               if (sp->oldxarcleft) {
-                       (void) free((void *) sp->oldxarcleft);
-                       sp->oldxarcleft = NULL;
-               }
-#endif
-               sp->NbStars = NRAND(-sp->NbStars - MINSTARS + 1) + MINSTARS;
-       } else if (sp->NbStars < MINSTARS)
-               sp->NbStars = MINSTARS;
-
-       /* We get memory for lists of objects */
-       if (sp->star == NULL)
-               sp->star = (Star *) malloc(sp->NbStars * sizeof (Star));
-       if (sp->xarc == NULL)
-               sp->xarc = (XArc *) malloc(sp->NbStars * sizeof (XArc));
-       if (MI_WIN_IS_USE3D(mi) && sp->xarcleft == NULL)
-               sp->xarcleft = (XArc *) malloc(sp->NbStars * sizeof (XArc));
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-       if (sp->oldxarc == NULL)
-               sp->oldxarc = (XArc *) malloc(sp->NbStars * sizeof (XArc));
-       if (MI_WIN_IS_USE3D(mi) && sp->oldxarcleft == NULL)
-               sp->oldxarcleft = (XArc *) malloc(sp->NbStars * sizeof (XArc));
-#endif
-
-       {
-               /* We initialize evolving variables */
-               sininit(&sp->x,
-                       NRAND(3142) / 1000.0, M_PI / (NRAND(100) + 100.0),
-                       ((double) sp->width) / 4.0,
-                       3.0 * ((double) sp->width) / 4.0,
-                       POSCANRAND);
-               sininit(&sp->y,
-                       NRAND(3142) / 1000.0, M_PI / (NRAND(100) + 100.0),
-                       ((double) sp->height) / 4.0,
-                       3.0 * ((double) sp->height) / 4.0,
-                       POSCANRAND);
-
-               /* for z, we have to ensure that the bouboule does not get behind */
-               /* the eyes of the viewer.  His/Her eyes are at 0.  Because the */
-               /* bouboule uses the x-radius for the z-radius, too, we have to */
-               /* use the x-values. */
-               sininit(&sp->z,
-                       NRAND(3142) / 1000.0, M_PI / (NRAND(100) + 100.0),
-                       ((double) sp->width / 2.0 + MINZVAL),
-                       ((double) sp->width / 2.0 + MAXZVAL),
-                       POSCANRAND);
-
-
-               sininit(&sp->sizex,
-                       NRAND(3142) / 1000.0, M_PI / (NRAND(100) + 100.0),
-                       MIN(((double) sp->width) - sp->x.value,
-                           sp->x.value) / 5.0,
-                       MIN(((double) sp->width) - sp->x.value,
-                           sp->x.value),
-                       SIZECANRAND);
-
-               sininit(&sp->sizey,
-                       NRAND(3142) / 1000.0, M_PI / (NRAND(100) + 100.0),
-                       MAX(sp->sizex.value / MAX_SIZEX_SIZEY,
-                           sp->sizey.maximum / 5.0),
-                       MIN(sp->sizex.value * MAX_SIZEX_SIZEY,
-                           MIN(((double) sp->height) -
-                               sp->y.value,
-                               sp->y.value)),
-                       SIZECANRAND);
-
-               sininit(&sp->thetax,
-                       NRAND(3142) / 1000.0, M_PI / (NRAND(200) + 200.0),
-                       -M_PI, M_PI,
-                       THETACANRAND);
-               sininit(&sp->thetay,
-                       NRAND(3142) / 1000.0, M_PI / (NRAND(200) + 200.0),
-                       -M_PI, M_PI,
-                       THETACANRAND);
-               sininit(&sp->thetaz,
-                       NRAND(3142) / 1000.0, M_PI / (NRAND(400) + 400.0),
-                       -M_PI, M_PI,
-                       THETACANRAND);
-       }
-       for (i = 0; i < sp->NbStars; i++) {
-               Star       *star;
-               XArc       *arc = NULL, *arcleft = NULL;
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-       XArc       *oarc = NULL, *oarcleft = NULL;
-#endif
-
-               star = &(sp->star[i]);
-               arc = &(sp->xarc[i]);
-               if (MI_WIN_IS_USE3D(mi))
-                       arcleft = &(sp->xarcleft[i]);
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-               oarc = &(sp->oldxarc[i]);
-               if (MI_WIN_IS_USE3D(mi))
-                       oarcleft = &(sp->oldxarcleft[i]);
-#endif
-               /* Elevation and bearing of the star */
-               theta = dtor((NRAND(1800)) / 10.0 - 90.0);
-               omega = dtor((NRAND(3600)) / 10.0 - 180.0);
-
-               /* Stars coordinates in a 3D space */
-               star->x = cos(theta) * sin(omega);
-               star->y = sin(omega) * sin(theta);
-               star->z = cos(omega);
-
-               /* We set the stars size */
-               star->size = NRAND(2 * sp->max_star_size);
-               if (star->size < sp->max_star_size)
-                       star->size = 0;
-               else
-                       star->size -= sp->max_star_size;
-
-               /* We set default values for the XArc lists elements */
-               arc->x = arc->y = 0;
-               if (MI_WIN_IS_USE3D(mi)) {
-                       arcleft->x = arcleft->y = 0;
-               }
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-               oarc->x = oarc->y = 0;
-               if (MI_WIN_IS_USE3D(mi)) {
-                       oarcleft->x = oarcleft->y = 0;
-               }
-#endif
-               arc->width = 2 + star->size;
-               arc->height = 2 + star->size;
-               if (MI_WIN_IS_USE3D(mi)) {
-                       arcleft->width = 2 + star->size;
-                       arcleft->height = 2 + star->size;
-               }
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-               oarc->width = 2 + star->size;
-               oarc->height = 2 + star->size;
-               if (MI_WIN_IS_USE3D(mi)) {
-                       oarcleft->width = 2 + star->size;
-                       oarcleft->height = 2 + star->size;
-               }
-#endif
-
-               arc->angle1 = 0;
-               arc->angle2 = 360 * 64;
-               if (MI_WIN_IS_USE3D(mi)) {
-                       arcleft->angle1 = 0;
-                       arcleft->angle2 = 360 * 64;
-               }
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-               oarc->angle1 = 0;
-               oarc->angle2 = 360 * 64;        /* ie. we draw whole disks:
-                                                * from 0 to 360 degrees */
-               if (MI_WIN_IS_USE3D(mi)) {
-                       oarcleft->angle1 = 0;
-                       oarcleft->angle2 = 360 * 64;
-               }
-#endif
-       }
-
-       if (MI_NPIXELS(mi) > 2)
-               sp->colorp = NRAND(MI_NPIXELS(mi));
-       /* We set up the starfield color */
-       if (!MI_WIN_IS_USE3D(mi) && MI_NPIXELS(mi) > 2)
-               sp->color = MI_PIXEL(mi, sp->colorp);
-       else
-               sp->color = MI_WIN_WHITE_PIXEL(mi);
-
-#if (ADAPT_ERASE == 1)
-       /* We initialize the adaptation code for screen erasing */
-       sp->hasbeenchecked = ADAPT_CHECKS * 2;
-       sp->rect_time = 0;
-       sp->xarc_time = 0;
-#endif
-}
-
-/****************/
-void
-draw_bouboule(ModeInfo * mi)
-/****************/
-
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       StarField  *sp = &starfield[MI_SCREEN(mi)];
-       int         i, diff = 0;
-       double      CX, CY, CZ, SX, SY, SZ;
-       Star       *star;
-       XArc       *arc = NULL, *arcleft = NULL;
-
-#if (ADAPT_ERASE == 1)
-       struct timeval tv1;
-       struct timeval tv2;
-
-#endif
-
-#if ((USEOLDXARCS == 0) || (ADAPT_ERASE == 1))
-       short       x_1, y_1, x_2, y_2;
-
-       /* bounding rectangle around the old starfield,
-        * for erasing with the smallest rectangle
-        * instead of filling the whole screen */
-       int         maxdiff = 0;        /* maximal distance between left and right */
-
-       /* star in 3d mode, otherwise 0 */
-#endif
-
-#if ((USEOLDXARCS == 0) || (ADAPT_ERASE == 1))
-       if (MI_WIN_IS_USE3D(mi)) {
-               maxdiff = (int) MAXDIFF;
-       }
-       x_1 = (int) sp->x.value - (int) sp->sizex.value -
-               sp->max_star_size - maxdiff;
-       y_1 = (int) sp->y.value - (int) sp->sizey.value -
-               sp->max_star_size;
-       x_2 = 2 * ((int) sp->sizex.value + sp->max_star_size + maxdiff);
-       y_2 = 2 * ((int) sp->sizey.value + sp->max_star_size);
-#endif
-       /* We make variables vary. */
-       sinvary(&sp->thetax);
-       sinvary(&sp->thetay);
-       sinvary(&sp->thetaz);
-
-       sinvary(&sp->x);
-       sinvary(&sp->y);
-       if (MI_WIN_IS_USE3D(mi))
-               sinvary(&sp->z);
-
-       /* A little trick to prevent the bouboule from being
-        * bigger than the screen */
-       sp->sizex.maximum =
-               MIN(((double) sp->width) - sp->x.value,
-                   sp->x.value);
-       sp->sizex.minimum = sp->sizex.maximum / 3.0;
-
-       /* Another trick to make the ball not too flat */
-       sp->sizey.minimum =
-               MAX(sp->sizex.value / MAX_SIZEX_SIZEY,
-                   sp->sizey.maximum / 3.0);
-       sp->sizey.maximum =
-               MIN(sp->sizex.value * MAX_SIZEX_SIZEY,
-                   MIN(((double) sp->height) - sp->y.value,
-                       sp->y.value));
-
-       sinvary(&sp->sizex);
-       sinvary(&sp->sizey);
-
-       /*
-        * We calculate the rotation matrix values. We just make the
-        * rotation on the fly, without using a matrix.
-        * Star positions are recorded as unit vectors pointing in various
-        * directions. We just make them all rotate.
-        */
-       CX = cos(sp->thetax.value);
-       SX = sin(sp->thetax.value);
-       CY = cos(sp->thetay.value);
-       SY = sin(sp->thetay.value);
-       CZ = cos(sp->thetaz.value);
-       SZ = sin(sp->thetaz.value);
-
-       for (i = 0; i < sp->NbStars; i++) {
-               star = &(sp->star[i]);
-               arc = &(sp->xarc[i]);
-               if (MI_WIN_IS_USE3D(mi)) {
-                       arcleft = &(sp->xarcleft[i]);
-                       /* to help the eyes, the starfield is always as wide as */
-                       /* deep, so .sizex.value can be used. */
-                       diff = (int) GETZDIFF(sp->sizex.value *
-                                     ((SY * CX) * star->x + (SX) * star->y +
-                                      (CX * CY) * star->z) + sp->z.value);
-               }
-               arc->x = (short) ((sp->sizex.value *
-                                  ((CY * CZ - SX * SY * SZ) * star->x +
-                                   (-CX * SZ) * star->y +
-                                   (SY * CZ + SZ * SX * CY) * star->z) +
-                                  sp->x.value));
-               arc->y = (short) ((sp->sizey.value *
-                                  ((CY * SZ + SX * SY * CZ) * star->x +
-                                   (CX * CZ) * star->y +
-                                   (SY * SZ - SX * CY * CZ) * star->z) +
-                                  sp->y.value));
-
-               if (MI_WIN_IS_USE3D(mi)) {
-                       arcleft->x = (short) ((sp->sizex.value *
-                                       ((CY * CZ - SX * SY * SZ) * star->x +
-                                        (-CX * SZ) * star->y +
-                                        (SY * CZ + SZ * SX * CY) * star->z) +
-                                              sp->x.value));
-                       arcleft->y = (short) ((sp->sizey.value *
-                                       ((CY * SZ + SX * SY * CZ) * star->x +
-                                        (CX * CZ) * star->y +
-                                        (SY * SZ - SX * CY * CZ) * star->z) +
-                                              sp->y.value));
-                       arc->x += diff;
-                       arcleft->x -= diff;
-               }
-               if (star->size != 0) {
-                       arc->x -= star->size;
-                       arc->y -= star->size;
-                       if (MI_WIN_IS_USE3D(mi)) {
-                               arcleft->x -= star->size;
-                               arcleft->y -= star->size;
-                       }
-               }
-       }
-
-       /* First, we erase the previous starfield */
-       if (MI_WIN_IS_INSTALL(mi) && MI_WIN_IS_USE3D(mi))
-               XSetForeground(display, gc, MI_NONE_COLOR(mi));
-       else
-               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-
-#if (ADAPT_ERASE == 1)
-       if (sp->hasbeenchecked == 0) {
-               /* We just calculate which method is the faster and eventually free
-                * the oldxarc list */
-               if (sp->xarc_time >
-                   ADAPT_ARC_PREFERED * sp->rect_time) {
-                       sp->hasbeenchecked = -2;        /* XFillRectangle mode */
-                       (void) free((void *) sp->oldxarc);
-                       sp->oldxarc = NULL;
-                       if (MI_WIN_IS_USE3D(mi)) {
-                               (void) free((void *) sp->oldxarcleft);
-                         sp->oldxarcleft = NULL;
-                       }
-               } else {
-                       sp->hasbeenchecked = -1;        /* XFillArcs mode */
-               }
-       }
-       if (sp->hasbeenchecked == -2) {
-               /* Erasing is done with XFillRectangle */
-               XFillRectangle(display, window, gc,
-                              x_1, y_1, x_2, y_2);
-       } else if (sp->hasbeenchecked == -1) {
-               /* Erasing is done with XFillArcs */
-               XFillArcs(display, window, gc,
-                         sp->oldxarc, sp->NbStars);
-               if (MI_WIN_IS_USE3D(mi))
-                       XFillArcs(display, window, gc,
-                                 sp->oldxarcleft, sp->NbStars);
-       } else {
-               long        usec;
-
-               if (sp->hasbeenchecked > ADAPT_CHECKS) {
-#ifdef GETTIMEOFDAY_TWO_ARGS
-                       (void) gettimeofday(&tv1, NULL);
-#else
-                       (void) gettimeofday(&tv1);
-#endif
-                       XFillRectangle(display, window, gc,
-                                      x_1, y_1, x_2, y_2);
-#ifdef GETTIMEOFDAY_TWO_ARGS
-                       (void) gettimeofday(&tv2, NULL);
-#else
-                       (void) gettimeofday(&tv2);
-#endif
-                       usec = (tv2.tv_sec - tv1.tv_sec) * 1000000;
-                       if (usec + tv2.tv_usec - tv1.tv_usec > 0) {
-                               sp->rect_time += usec + tv2.tv_usec - tv1.tv_usec;
-                               sp->hasbeenchecked--;
-                       }
-               } else {
-#ifdef GETTIMEOFDAY_TWO_ARGS
-                       (void) gettimeofday(&tv1, NULL);
-#else
-                       (void) gettimeofday(&tv1);
-#endif
-                       XFillArcs(display, window, gc,
-                                 sp->oldxarc, sp->NbStars);
-                       if (MI_WIN_IS_USE3D(mi))
-                               XFillArcs(display, window, gc,
-                                         sp->oldxarcleft, sp->NbStars);
-#ifdef GETTIMEOFDAY_TWO_ARGS
-                       (void) gettimeofday(&tv2, NULL);
-#else
-                       (void) gettimeofday(&tv2);
-#endif
-                       usec = (tv2.tv_sec - tv1.tv_sec) * 1000000;
-                       if (usec + tv2.tv_usec - tv1.tv_usec > 0) {
-                               sp->xarc_time += usec + tv2.tv_usec - tv1.tv_usec;
-                               sp->hasbeenchecked--;
-                       }
-               }
-       }
-#else
-#if (USEOLDXARCS == 1)
-       XFillArcs(display, window, gc,
-                 sp->oldxarc, sp->NbStars);
-       if (MI_WIN_IS_USE3D(mi))
-               XFillArcs(display, window, gc,
-                         sp->oldxarcleft, sp->NbStars);
-#else
-       XFillRectangle(display, window, gc,
-                      x_1, y_1, x_2, y_2);
-#endif
-#endif
-
-       /* Then we draw the new one */
-       if (MI_WIN_IS_USE3D(mi)) {
-               if (MI_WIN_IS_INSTALL(mi))
-                       XSetFunction(display, gc, GXor);
-               XSetForeground(display, gc, MI_RIGHT_COLOR(mi));
-               XFillArcs(display, window, gc, sp->xarc, sp->NbStars);
-               XSetForeground(display, gc, MI_LEFT_COLOR(mi));
-               XFillArcs(display, window, gc, sp->xarcleft, sp->NbStars);
-               if (MI_WIN_IS_INSTALL(mi))
-                       XSetFunction(display, gc, GXcopy);
-       } else {
-               XSetForeground(display, gc, sp->color);
-               XFillArcs(display, window, gc, sp->xarc, sp->NbStars);
-       }
-
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-#if (ADAPT_ERASE == 1)
-       if (sp->hasbeenchecked >= -1) {
-               arc = sp->xarc;
-               sp->xarc = sp->oldxarc;
-               sp->oldxarc = arc;
-               if (MI_WIN_IS_USE3D(mi)) {
-                       arcleft = sp->xarcleft;
-                       sp->xarcleft = sp->oldxarcleft;
-                       sp->oldxarcleft = arcleft;
-               }
-       }
-#else
-       arc = sp->xarc;
-       sp->xarc = sp->oldxarc;
-       sp->oldxarc = arc;
-       if (MI_WIN_IS_USE3D(mi)) {
-               arcleft = sp->xarcleft;
-               sp->xarcleft = sp->oldxarcleft;
-               sp->oldxarcleft = arcleft;
-       }
-#endif
-#endif
-
-       /* We set up the color for the next drawing */
-       if (!MI_WIN_IS_USE3D(mi) && MI_NPIXELS(mi) > 2 &&
-           (++sp->colorchange >= COLOR_CHANGES)) {
-               sp->colorchange = 0;
-               if (++sp->colorp >= MI_NPIXELS(mi))
-                       sp->colorp = 0;
-               sp->color = MI_PIXEL(mi, sp->colorp);
-       }
-}
-
-void
-release_bouboule(ModeInfo * mi)
-{
-       if (starfield != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       StarField  *sp = &starfield[screen];
-
-                       if (sp->star)
-                               (void) free((void *) sp->star);
-                       if (sp->xarc)
-                               (void) free((void *) sp->xarc);
-                       if (sp->xarcleft)
-                               (void) free((void *) sp->xarcleft);
-#if ((USEOLDXARCS == 1) || (ADAPT_ERASE == 1))
-                       if (sp->oldxarc)
-                               (void) free((void *) sp->oldxarc);
-                       if (sp->oldxarcleft)
-                               (void) free((void *) sp->oldxarcleft);
-#endif
-                       sinfree(&(sp->x));
-                       sinfree(&(sp->y));
-                       sinfree(&(sp->z));
-                       sinfree(&(sp->sizex));
-                       sinfree(&(sp->sizey));
-                       sinfree(&(sp->thetax));
-                       sinfree(&(sp->thetay));
-                       sinfree(&(sp->thetaz));
-               }
-               (void) free((void *) starfield);
-               starfield = NULL;
-       }
-}
-
-void
-refresh_bouboule(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/bouboule.man b/hacks/bouboule.man
deleted file mode 100644 (file)
index b2a8df2..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-.TH XScreenSaver 1 "15-May-97" "X Version 11"
-.SH NAME
-bouboule - draws spinning 3D blobs
-.SH SYNOPSIS
-.B bouboule
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-3d]
-
-.SH DESCRIPTION
-The \fIbouboule\fP program draws spinning 3D blobs.
-.SH OPTIONS
-.I bouboule
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors used cycle through the hue, making N stops around
-the color wheel.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.TP 8
-.B \-3d
-Do red/blue 3d separations (for 3d glasses.)
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1996 by Jeremie Petit.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Jeremie Petit <jpetit@essi.fr>, 1996.
-
-3D support by Henrik Theiling <theiling@coli-uni-sb.de>, 04-Sep-96.
-
-VMS support by Jouk Jansen <joukj@alpha.chem.uva.nl>, 01-Feb-96.
-
-TrueColor support by David Bagley <bagleyd@bigfoot.com>, 01-Feb-96.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 15-May-97.
diff --git a/hacks/braid.c b/hacks/braid.c
deleted file mode 100644 (file)
index 9d9c4e5..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * braid --- draws random color-cyling rotating braids around a circle.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)braid.c      4.00 97/01/01 xlockmore";
-#endif
-
-/*
- * Copyright (c) 1995 by John Neil.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 01-Sep-95: color knotted components differently, J. Neil.
- * 29-Aug-95: Written.  John Neil <neil@math.idbsu.edu>
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Braid"
-# define HACK_INIT                                     init_braid
-# define HACK_DRAW                                     draw_braid
-# define braid_opts                                    xlockmore_opts
-# define DEFAULTS      "*count:                15    \n"                       \
-                                       "*size:            -7     \n"                   \
-                                       "*cycles:               100   \n"                       \
-                                       "*delay:                1000  \n"                       \
-                                       "*ncolors:              64    \n"
-# define UNIFORM_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-# include "erase.h"
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt braid_opts = {
-  0, NULL, 0, NULL, NULL };
-
-
-#if defined( COLORROUND ) && defined( COLORCOMP )
-#undef COLORROUND
-#undef COLORCOMP
-#endif
-
-#if !defined( COLORROUND ) && !defined( COLORCOMP )
-#if 0
-/* to color in a circular pattern use COLORROUND */
-#define COLORROUND
-#else
-/* to color by component use COLORCOMP */
-#define COLORCOMP
-#endif
-#endif
-
-#define MAXLENGTH  50          /* the maximum length of a braid word */
-#define MINLENGTH  8           /* the minimum length of a braid word */
-#define MAXSTRANDS  15         /* the maximum number of strands in the braid */
-#define MINSTRANDS  3          /* the minimum number of strands in the braid */
-#define SPINRATE  12.0         /* the rate at which the colors spin */
-
-#define INTRAND(min,max) (NRAND((max+1)-(min))+(min))
-#define FLOATRAND(min,max) ((min)+((double) LRAND()/((double) MAXRAND))*((max)-(min)))
-
-typedef struct {
-       int         braidword[MAXLENGTH];
-       int         components[MAXSTRANDS];
-       int         startcomp[MAXLENGTH][MAXSTRANDS];
-       int         nstrands;
-       int         braidlength;
-       float       startcolor;
-       int         center_x;
-       int         center_y;
-       float       min_radius;
-       float       max_radius;
-       float       top, bottom, left, right;
-       int         age;
-    int         color_direction;
-} braidtype;
-
-static braidtype *braids = NULL;
-
-static int
-applyword(braidtype * braid, int string, int position)
-{
-       int         i, c;
-
-       c = string;
-       for (i = position; i < braid->braidlength; i++) {
-               if (c == ABS(braid->braidword[i]))
-                       c--;
-               else if (c == ABS(braid->braidword[i]) - 1)
-                       c++;
-       }
-       for (i = 0; i < position; i++) {
-               if (c == ABS(braid->braidword[i]))
-                       c--;
-               else if (c == ABS(braid->braidword[i]) - 1)
-                       c++;
-       }
-       return c;
-}
-
-#if 0
-static int
-applywordto(braidtype * braid, int string, int position)
-{
-       int         i, c;
-
-       c = string;
-       for (i = 0; i < position; i++) {
-               if (c == ABS(braid->braidword[i])) {
-                       c--;
-               } else if (c == ABS(braid->braidword[i]) - 1) {
-                       c++;
-               }
-       }
-       return c;
-}
-#endif
-
-static int
-applywordbackto(braidtype * braid, int string, int position)
-{
-       int         i, c;
-
-       c = string;
-       for (i = position - 1; i >= 0; i--) {
-               if (c == ABS(braid->braidword[i])) {
-                       c--;
-               } else if (c == ABS(braid->braidword[i]) - 1) {
-                       c++;
-               }
-       }
-       return c;
-}
-
-void
-init_braid(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       braidtype  *braid;
-       int         used[MAXSTRANDS];
-       int         i, count, comp, c;
-       float       min_length;
-
-       if (braids == NULL) {
-               if ((braids = (braidtype *) calloc(MI_NUM_SCREENS(mi),
-                                               sizeof (braidtype))) == NULL)
-                       return;
-       }
-       braid = &braids[MI_SCREEN(mi)];
-
-       braid->center_x = MI_WIN_WIDTH(mi) / 2;
-       braid->center_y = MI_WIN_HEIGHT(mi) / 2;
-       braid->age = 0;
-
-       /* jwz: go in the other direction sometimes. */
-       braid->color_direction = ((LRAND() & 1) ? 1 : -1);
-       XClearWindow(display, MI_WINDOW(mi));
-
-       min_length = (braid->center_x > braid->center_y) ?
-               braid->center_y : braid->center_x;
-       braid->min_radius = min_length * 0.30;
-       braid->max_radius = min_length * 0.90;
-
-       if (MI_BATCHCOUNT(mi) < MINSTRANDS)
-               braid->nstrands = MINSTRANDS;
-       else
-               braid->nstrands = INTRAND(MINSTRANDS,
-                                 MAX(MIN(MIN(MAXSTRANDS, MI_BATCHCOUNT(mi)),
-                                         (int) ((braid->max_radius - braid->min_radius) / 5.0)), MINSTRANDS));
-       braid->braidlength = INTRAND(MINLENGTH, MIN(MAXLENGTH, braid->nstrands * 6));
-
-       for (i = 0; i < braid->braidlength; i++) {
-               braid->braidword[i] =
-                       INTRAND(1, braid->nstrands - 1) * (INTRAND(1, 2) * 2 - 3);
-               if (i > 0)
-                       while (braid->braidword[i] == -braid->braidword[i - 1])
-                               braid->braidword[i] = INTRAND(1, braid->nstrands - 1) * (INTRAND(1, 2) * 2 - 3);
-       }
-
-       while (braid->braidword[0] == -braid->braidword[braid->braidlength - 1])
-               braid->braidword[braid->braidlength - 1] =
-                       INTRAND(1, braid->nstrands - 1) * (INTRAND(1, 2) * 2 - 3);
-
-       do {
-               (void) memset((char *) used, 0, sizeof (used));
-               count = 0;
-               for (i = 0; i < braid->braidlength; i++)
-                       used[ABS(braid->braidword[i])]++;
-               for (i = 0; i < braid->nstrands; i++)
-                       count += (used[i] > 0) ? 1 : 0;
-               if (count < braid->nstrands - 1) {
-                       braid->braidword[braid->braidlength] =
-                               INTRAND(1, braid->nstrands - 1) * (INTRAND(1, 2) * 2 - 3);
-                       while (braid->braidword[braid->braidlength] ==
-                              -braid->braidword[braid->braidlength - 1] &&
-                              braid->braidword[0] == -braid->braidword[braid->braidlength])
-                               braid->braidword[braid->braidlength] =
-                                       INTRAND(1, braid->nstrands - 1) * (INTRAND(1, 2) * 2 - 3);
-                       braid->braidlength++;
-               }
-       } while (count < braid->nstrands - 1 && braid->braidlength < MAXLENGTH);
-
-       braid->startcolor = (MI_NPIXELS(mi) > 2) ?
-               (float) NRAND(MI_NPIXELS(mi)) : 0.0;
-       /* XSetLineAttributes (display, MI_GC(mi), 2, LineSolid, CapRound, 
-          JoinRound); */
-
-       (void) memset((char *) braid->components, 0, sizeof (braid->components));
-       c = 1;
-       comp = 0;
-       braid->components[0] = 1;
-       do {
-               i = comp;
-               do {
-                       i = applyword(braid, i, 0);
-                       braid->components[i] = braid->components[comp];
-               } while (i != comp);
-               count = 0;
-               for (i = 0; i < braid->nstrands; i++)
-                       if (braid->components[i] == 0)
-                               count++;
-               if (count > 0) {
-                       for (comp = 0; braid->components[comp] != 0; comp++);
-                       braid->components[comp] = ++c;
-               }
-       } while (count > 0);
-
-       {
-         int line_width = MI_SIZE(mi);
-         if (line_width == 0)
-               line_width = -8;
-         if (line_width < 0)
-               line_width = NRAND(-line_width)+1;
-         if (line_width == 1)
-               line_width = 0;
-         XSetLineAttributes(MI_DISPLAY(mi), MI_GC(mi), line_width,
-                                                LineSolid,
-                                                (line_width <= 3 ? CapButt : CapRound),
-                                                JoinMiter);
-       }
-
-
-       for (i = 0; i < braid->nstrands; i++)
-               if (!(braid->components[i] & 1))
-                       braid->components[i] *= -1;
-}
-
-void
-draw_braid(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       braidtype  *braid = &braids[MI_SCREEN(mi)];
-       float       num_points, t_inc;
-       float       theta, psi;
-       float       t, r_diff;
-       int         i, s;
-       float       x_1, y_1, x_2, y_2, r1, r2;
-       float       color, color_use = 0.0, color_inc;
-
-       num_points = 500.0;
-       theta = (2.0 * M_PI) / (float) (braid->braidlength);
-       t_inc = (2.0 * M_PI) / num_points;
-       color_inc = (float) MI_NPIXELS(mi) / num_points;
-       color_inc *= braid->color_direction;
-
-       braid->startcolor += SPINRATE * color_inc;
-       if (braid->startcolor >= MI_NPIXELS(mi))
-               braid->startcolor = 0.0;
-
-       r_diff = (braid->max_radius - braid->min_radius) / (float) (braid->nstrands);
-
-       color = braid->startcolor;
-       psi = 0.0;
-       for (i = 0; i < braid->braidlength; i++) {
-               psi += theta;
-               for (t = 0.0; t < theta; t += t_inc) {
-#ifdef COLORROUND
-                       color += color_inc;
-                       if (color >= (float) (MI_NPIXELS(mi)))
-                               color = 0.0;
-                       color_use = color;
-#endif
-                       for (s = 0; s < braid->nstrands; s++) {
-                               if (ABS(braid->braidword[i]) == s)
-                                       continue;
-                               if (ABS(braid->braidword[i]) - 1 == s) {
-                                       /* crosSINFg */
-#ifdef COLORCOMP
-                                       if (MI_NPIXELS(mi) > 2) {
-                                               color_use = color + SPINRATE *
-                                                       braid->components[applywordbackto(braid, s, i)] +
-                                                       (psi + t) / 2.0 / M_PI * (float) MI_NPIXELS(mi);
-                                               while (color_use >= (float) MI_NPIXELS(mi))
-                                                       color_use -= (float) MI_NPIXELS(mi);
-                                               while (color_use < 0.0)
-                                                       color_use += (float) MI_NPIXELS(mi);
-                                       }
-#endif
-#ifdef COLORROUND
-                                       if (MI_NPIXELS(mi) > 2) {
-                                               color_use += SPINRATE * color_inc;
-                                               while (color_use >= (float) (MI_NPIXELS(mi)))
-                                                       color_use -= (float) MI_NPIXELS(mi);
-                                       }
-#endif
-                                       r1 = braid->min_radius + r_diff * (float) (s);
-                                       r2 = braid->min_radius + r_diff * (float) (s + 1);
-                                       if (braid->braidword[i] > 0 ||
-                                           (FABSF(t - theta / 2.0) > theta / 7.0)) {
-                                               x_1 = ((0.5 * (1.0 + SINF(t / theta * M_PI - M_PI_2)) * r2 +
-                                                       0.5 * (1.0 + SINF((theta - t) / theta * M_PI - M_PI_2)) * r1)) *
-                                                       COSF(t + psi) + braid->center_x;
-                                               y_1 = ((0.5 * (1.0 + SINF(t / theta * M_PI - M_PI_2)) * r2 +
-                                                       0.5 * (1.0 + SINF((theta - t) / theta * M_PI - M_PI_2)) * r1)) *
-                                                       SINF(t + psi) + braid->center_y;
-                                               x_2 = ((0.5 * (1.0 + SINF((t + t_inc) / theta * M_PI - M_PI_2)) * r2 +
-                                                       0.5 * (1.0 + SINF((theta - t - t_inc) / theta * M_PI - M_PI_2)) * r1)) *
-                                                       COSF(t + t_inc + psi) + braid->center_x;
-                                               y_2 = ((0.5 * (1.0 + SINF((t + t_inc) / theta * M_PI - M_PI_2)) * r2 +
-                                                       0.5 * (1.0 + SINF((theta - t - t_inc) / theta * M_PI - M_PI_2)) * r1)) *
-                                                       SINF(t + t_inc + psi) + braid->center_y;
-                                               if (MI_NPIXELS(mi) > 2)
-                                                       XSetForeground(display, MI_GC(mi), MI_PIXEL(mi, (int) color_use));
-                                               else
-                                                       XSetForeground(display, MI_GC(mi), MI_WIN_WHITE_PIXEL(mi));
-
-                                               XDrawLine(display, window, MI_GC(mi),
-                                                         (int) (x_1), (int) (y_1), (int) (x_2), (int) (y_2));
-                                       }
-#ifdef COLORCOMP
-                                       if (MI_NPIXELS(mi) > 2) {
-                                               color_use = color + SPINRATE *
-                                                       braid->components[applywordbackto(braid, s + 1, i)] +
-                                                       (psi + t) / 2.0 / M_PI * (float) MI_NPIXELS(mi);
-                                               while (color_use >= (float) MI_NPIXELS(mi))
-                                                       color_use -= (float) MI_NPIXELS(mi);
-                                               while (color_use < 0.0)
-                                                       color_use += (float) MI_NPIXELS(mi);
-                                       }
-#endif
-                                       if (braid->braidword[i] < 0 ||
-                                           (FABSF(t - theta / 2.0) > theta / 7.0)) {
-                                               x_1 = ((0.5 * (1.0 + SINF(t / theta * M_PI - M_PI_2)) * r1 +
-                                                       0.5 * (1.0 + SINF((theta - t) / theta * M_PI - M_PI_2)) * r2)) *
-                                                       COSF(t + psi) + braid->center_x;
-                                               y_1 = ((0.5 * (1.0 + SINF(t / theta * M_PI - M_PI_2)) * r1 +
-                                                       0.5 * (1.0 + SINF((theta - t) / theta * M_PI - M_PI_2)) * r2)) *
-                                                       SINF(t + psi) + braid->center_y;
-                                               x_2 = ((0.5 * (1.0 + SINF((t + t_inc) / theta * M_PI - M_PI_2)) * r1 +
-                                                       0.5 * (1.0 + SINF((theta - t - t_inc) / theta * M_PI - M_PI_2)) * r2)) *
-                                                       COSF(t + t_inc + psi) + braid->center_x;
-                                               y_2 = ((0.5 * (1.0 + SINF((t + t_inc) / theta * M_PI - M_PI_2)) * r1 +
-                                                       0.5 * (1.0 + SINF((theta - t - t_inc) / theta * M_PI - M_PI_2)) * r2)) *
-                                                       SINF(t + t_inc + psi) + braid->center_y;
-                                               if (MI_NPIXELS(mi) > 2)
-                                                       XSetForeground(display, MI_GC(mi), MI_PIXEL(mi, (int) color_use));
-                                               else
-                                                       XSetForeground(display, MI_GC(mi), MI_WIN_WHITE_PIXEL(mi));
-
-                                               XDrawLine(display, window, MI_GC(mi),
-                                                         (int) (x_1), (int) (y_1), (int) (x_2), (int) (y_2));
-                                       }
-                               } else {
-                                       /* no crosSINFg */
-#ifdef COLORCOMP
-                                       if (MI_NPIXELS(mi) > 2) {
-                                               color_use = color + SPINRATE *
-                                                       braid->components[applywordbackto(braid, s, i)] +
-                                                       (psi + t) / 2.0 / M_PI * (float) MI_NPIXELS(mi);
-                                               while (color_use >= (float) MI_NPIXELS(mi))
-                                                       color_use -= (float) MI_NPIXELS(mi);
-                                               while (color_use < 0.0)
-                                                       color_use += (float) MI_NPIXELS(mi);
-                                       }
-#endif
-#ifdef COLORROUND
-                                       if (MI_NPIXELS(mi) > 2) {
-                                               color_use += SPINRATE * color_inc;
-                                               while (color_use >= (float) MI_NPIXELS(mi))
-                                                       color_use -= (float) MI_NPIXELS(mi);
-                                       }
-#endif
-                                       r1 = braid->min_radius + r_diff * (float) (s);
-                                       x_1 = r1 * COSF(t + psi) + braid->center_x;
-                                       y_1 = r1 * SINF(t + psi) + braid->center_y;
-                                       x_2 = r1 * COSF(t + t_inc + psi) + braid->center_x;
-                                       y_2 = r1 * SINF(t + t_inc + psi) + braid->center_y;
-                                       if (MI_NPIXELS(mi) > 2)
-                                               XSetForeground(display, MI_GC(mi), MI_PIXEL(mi, (int) color_use));
-                                       else
-                                               XSetForeground(display, MI_GC(mi), MI_WIN_WHITE_PIXEL(mi));
-
-                                       XDrawLine(display, window, MI_GC(mi),
-                                                 (int) (x_1), (int) (y_1), (int) (x_2), (int) (y_2));
-                               }
-                       }
-               }
-       }
-
-       if (++braid->age > MI_CYCLES(mi)) {
-#ifdef STANDALONE
-         erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif
-         init_braid(mi);
-       }
-}
-
-void
-release_braid(ModeInfo * mi)
-{
-       if (braids != NULL) {
-               (void) free((void *) braids);
-               braids = NULL;
-       }
-}
-
-void
-refresh_braid(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/braid.man b/hacks/braid.man
deleted file mode 100644 (file)
index 65637af..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-braid - draws random color-cycling braids around a circle
-.SH SYNOPSIS
-.B braid
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
-
-.SH DESCRIPTION
-The \fIbraid\fP program draws random color-cycling braids around a circle.
-.SH OPTIONS
-.I braid
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors used cycle through the hue, making N stops around
-the color wheel.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1995 by John Neil.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-John Neil <neil@math.idbsu.edu>, 29-Aug-95.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/bsod.c b/hacks/bsod.c
deleted file mode 100644 (file)
index bbbc2ca..0000000
+++ /dev/null
@@ -1,1122 +0,0 @@
-/* xscreensaver, Copyright (c) 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.
- *
- * Blue Screen of Death: the finest in personal computer emulation.
- * Concept cribbed from Stephen Martin <smartin@mks.com>;
- * this version written by jwz, 4-Jun-98.
- *
- *   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.
- */
-
-#include "screenhack.h"
-#include <stdio.h>
-#include <X11/Xutil.h>
-
-#ifdef HAVE_XPM
-# include <X11/xpm.h>
-# include "images/amiga.xpm"
-#endif
-
-#include "images/atari.xbm"
-#include "images/mac.xbm"
-
-
-static void
-draw_string (Display *dpy, Window window, GC gc, XGCValues *gcv,
-            XFontStruct *font,
-            int xoff, int yoff,
-            int win_width, int win_height,
-            const char *string, int delay)
-{
-  int x, y;
-  int width = 0, height = 0, cw = 0;
-  int char_width, line_height;
-
-  const char *s = string;
-  const char *se = string;
-
-  /* This pretty much assumes fixed-width fonts */
-  char_width = (font->per_char
-               ? font->per_char['n'-font->min_char_or_byte2].width
-               : font->min_bounds.width);
-  line_height = font->ascent + font->descent + 1;
-
-  while (1)
-    {
-      if (*s == '\n' || !*s)
-       {
-         height++;
-         if (cw > width) width = cw;
-         cw = 0;
-         if (!*s) break;
-       }
-      else
-       cw++;
-      s++;
-    }
-
-  x = (win_width - (width * char_width)) / 2;
-  y = (win_height - (height * line_height)) / 2;
-
-  if (x < 0) x = 2;
-  if (y < 0) y = 2;
-
-  x += xoff;
-  y += yoff;
-
-  se = s = string;
-  while (1)
-    {
-      if (*s == '\n' || !*s)
-       {
-         int off = 0;
-         Bool flip = False;
-
-         if (*se == '@' || *se == '_')
-           {
-             if (*se == '@') flip = True;
-             se++;
-             off = (char_width * (width - (s - se))) / 2;
-           }
-
-         if (flip)
-           {
-             XSetForeground(dpy, gc, gcv->background);
-             XSetBackground(dpy, gc, gcv->foreground);
-           }
-
-         if (s != se)
-           XDrawImageString(dpy, window, gc, x+off, y+font->ascent, se, s-se);
-
-         if (flip)
-           {
-             XSetForeground(dpy, gc, gcv->foreground);
-             XSetBackground(dpy, gc, gcv->background);
-           }
-
-         se = s;
-         y += line_height;
-         if (!*s) break;
-         se = s+1;
-
-         if (delay)
-           {
-             XSync(dpy, False);
-             usleep(delay);
-           }
-       }
-      s++;
-    }
-}
-
-
-static Pixmap
-double_pixmap(Display *dpy, GC gc, Visual *visual, int depth, Pixmap pixmap,
-            int pix_w, int pix_h)
-{
-  int x, y;
-  Pixmap p2 = XCreatePixmap(dpy, pixmap, pix_w*2, pix_h*2, depth);
-  XImage *i1 = XGetImage(dpy, pixmap, 0, 0, pix_w, pix_h, ~0L, ZPixmap);
-  XImage *i2 = XCreateImage(dpy, visual, depth, ZPixmap, 0, 0,
-                           pix_w*2, pix_h*2, 8, 0);
-  i2->data = (char *) calloc(i2->height, i2->bytes_per_line);
-  for (y = 0; y < pix_h; y++)
-    for (x = 0; x < pix_w; x++)
-      {
-       unsigned long p = XGetPixel(i1, x, y);
-       XPutPixel(i2, x*2,   y*2,   p);
-       XPutPixel(i2, x*2+1, y*2,   p);
-       XPutPixel(i2, x*2,   y*2+1, p);
-       XPutPixel(i2, x*2+1, y*2+1, p);
-      }
-  free(i1->data); i1->data = 0;
-  XDestroyImage(i1);
-  XPutImage(dpy, p2, gc, i2, 0, 0, 0, 0, i2->width, i2->height);
-  free(i2->data); i2->data = 0;
-  XDestroyImage(i2);
-  XFreePixmap(dpy, pixmap);
-  return p2;
-}
-
-
-/* Sleep for N seconds and return False.  But if a key or mouse event is
-   seen, discard all pending key or mouse events, and return True.
- */
-static Bool
-bsod_sleep(Display *dpy, int seconds)
-{
-  int q = seconds * 4;
-  int quantum = 250000;
-
-  if (seconds == -1)
-    q = 1, quantum = 100000;
-
-  do
-    {
-      XSync(dpy, False);
-      while (XPending (dpy))
-        {
-          XEvent event;
-          XNextEvent (dpy, &event);
-          if (event.xany.type == ButtonPress)
-            return True;
-          if (event.xany.type == KeyPress)
-            {
-              KeySym keysym;
-              char c = 0;
-              XLookupString (&event.xkey, &c, 1, &keysym, 0);
-              if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
-                return True;
-            }
-          screenhack_handle_event (dpy, &event);
-        }
-
-      if (q > 0)
-       {
-         q--;
-         usleep(quantum);
-       }
-    }
-  while (q > 0);
-
-  return False; 
-}
-
-
-static Bool
-windows (Display *dpy, Window window, int delay, Bool w95p)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  char *fontname;
-  const char *def_font = "fixed";
-  XFontStruct *font;
-  GC gc;
-
-  const char *w95 =
-    ("@Windows\n"
-     "A fatal exception 0E has occured at F0AD:42494C4C\n"
-     "the current application will be terminated.\n"
-     "\n"
-     "* Press any key to terminate the current application.\n"
-     "* Press CTRL+ALT+DELETE again to restart your computer.\n"
-     "  You will lose any unsaved information in all applications.\n"
-     "\n"
-     "\n"
-     "_Press any key to continue");
-
-  const char *wnt =
-    ("*** STOP: 0x0000001E (0x80000003,0x80106fc0,0x8025ea21,0xfd6829e8)\n"
-   "Unhandled Kernel exception c0000047 from fa8418b4 (8025ea21,fd6829e8)\n"
-   "\n"
-   "Dll Base Date Stamp - Name             Dll Base Date Stamp - Name\n"
-   "80100000 2be154c9 - ntoskrnl.exe       80400000 2bc153b0 - hal.dll\n"
-   "80258000 2bd49628 - ncrc710.sys        8025c000 2bd49688 - SCSIPORT.SYS \n"
-   "80267000 2bd49683 - scsidisk.sys       802a6000 2bd496b9 - Fastfat.sys\n"
-   "fa800000 2bd49666 - Floppy.SYS         fa810000 2bd496db - Hpfs_Rec.SYS\n"
-   "fa820000 2bd49676 - Null.SYS           fa830000 2bd4965a - Beep.SYS\n"
-   "fa840000 2bdaab00 - i8042prt.SYS       fa850000 2bd5a020 - SERMOUSE.SYS\n"
-   "fa860000 2bd4966f - kbdclass.SYS       fa870000 2bd49671 - MOUCLASS.SYS\n"
-   "fa880000 2bd9c0be - Videoprt.SYS       fa890000 2bd49638 - NCC1701E.SYS\n"
-   "fa8a0000 2bd4a4ce - Vga.SYS            fa8b0000 2bd496d0 - Msfs.SYS\n"
-   "fa8c0000 2bd496c3 - Npfs.SYS           fa8e0000 2bd496c9 - Ntfs.SYS\n"
-   "fa940000 2bd496df - NDIS.SYS           fa930000 2bd49707 - wdlan.sys\n"
-   "fa970000 2bd49712 - TDI.SYS            fa950000 2bd5a7fb - nbf.sys\n"
-   "fa980000 2bd72406 - streams.sys        fa9b0000 2bd4975f - ubnb.sys\n"
-   "fa9c0000 2bd5bfd7 - usbser.sys         fa9d0000 2bd4971d - netbios.sys\n"
-   "fa9e0000 2bd49678 - Parallel.sys       fa9f0000 2bd4969f - serial.SYS\n"
-   "faa00000 2bd49739 - mup.sys            faa40000 2bd4971f - SMBTRSUP.SYS\n"
-   "faa10000 2bd6f2a2 - srv.sys            faa50000 2bd4971a - afd.sys\n"
-   "faa60000 2bd6fd80 - rdr.sys            faaa0000 2bd49735 - bowser.sys\n"
-   "\n"
-   "Address dword dump Dll Base                                      - Name\n"
-   "801afc20 80106fc0 80106fc0 00000000 00000000 80149905 : "
-     "fa840000 - i8042prt.SYS\n"
-   "801afc24 80149905 80149905 ff8e6b8c 80129c2c ff8e6b94 : "
-     "8025c000 - SCSIPORT.SYS\n"
-   "801afc2c 80129c2c 80129c2c ff8e6b94 00000000 ff8e6b94 : "
-     "80100000 - ntoskrnl.exe\n"
-   "801afc34 801240f2 80124f02 ff8e6df4 ff8e6f60 ff8e6c58 : "
-     "80100000 - ntoskrnl.exe\n"
-   "801afc54 80124f16 80124f16 ff8e6f60 ff8e6c3c 8015ac7e : "
-     "80100000 - ntoskrnl.exe\n"
-   "801afc64 8015ac7e 8015ac7e ff8e6df4 ff8e6f60 ff8e6c58 : "
-     "80100000 - ntoskrnl.exe\n"
-   "801afc70 80129bda 80129bda 00000000 80088000 80106fc0 : "
-     "80100000 - ntoskrnl.exe\n"
-   "\n"
-   "Kernel Debugger Using: COM2 (Port 0x2f8, Baud Rate 19200)\n"
-   "Restart and set the recovery options in the system control panel\n"
-   "or the /CRASHDEBUG system start option. If this message reappears,\n"
-   "contact your system administrator or technical support group."
-     );
-
-  if (!get_boolean_resource((w95p? "doWindows" : "doNT"), "DoWindows"))
-    return False;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  fontname = get_string_resource ((xgwa.height > 600
-                                  ? (w95p
-                                     ? "windows95.font2"
-                                     : "windowsNT.font2")
-                                  : (w95p
-                                     ? "windows95.font"
-                                     : "windowsNT.font")),
-                                 "Windows.Font");
-  if (!fontname || !*fontname) fontname = (char *)def_font;
-  font = XLoadQueryFont (dpy, fontname);
-  if (!font) font = XLoadQueryFont (dpy, def_font);
-  if (!font) exit(-1);
-  if (fontname && fontname != def_font)
-    free (fontname);
-
-  gcv.font = font->fid;
-  gcv.foreground = get_pixel_resource((w95p
-                                      ? "windows95.foreground"
-                                      : "windowsNT.foreground"),
-                                     "Windows.Foreground",
-                                     dpy, xgwa.colormap);
-  gcv.background = get_pixel_resource((w95p
-                                      ? "windows95.background"
-                                      : "windowsNT.background"),
-                                     "Windows.Background",
-                                     dpy, xgwa.colormap);
-  XSetWindowBackground(dpy, window, gcv.background);
-  XClearWindow(dpy, window);
-
-  gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
-
-  if (w95p)
-    draw_string(dpy, window, gc, &gcv, font,
-               0, 0, xgwa.width, xgwa.height, w95, 0);
-  else
-    draw_string(dpy, window, gc, &gcv, font, 0, 0, 10, 10, wnt, 750);
-
-  XFreeGC(dpy, gc);
-  XSync(dpy, False);
-  bsod_sleep(dpy, delay);
-  XClearWindow(dpy, window);
-  XFreeFont(dpy, font);
-  return True;
-}
-
-/* SCO OpenServer 5 panic, by Tom Kelly <tom@ancilla.toronto.on.ca>
- */
-static Bool
-sco (Display *dpy, Window window, int delay)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  char *fontname;
-  const char *def_font = "fixed";
-  XFontStruct *font;
-  GC gc;
-  int lines_1 = 0, lines_2 = 0, lines_3 = 0, lines_4 = 0;
-  const char *s;
-
-  const char *sco_panic_1 =
-    ("Unexpected trap in kernel mode:\n"
-     "\n"
-     "cr0 0x80010013     cr2  0x00000014     cr3 0x00000000  tlb  0x00000000\n"
-     "ss  0x00071054    uesp  0x00012055     efl 0x00080888  ipl  0x00000005\n"
-     "cs  0x00092585     eip  0x00544a4b     err 0x004d4a47  trap 0x0000000E\n"
-     "eax 0x0045474b     ecx  0x0042544b     edx 0x57687920  ebx  0x61726520\n"
-     "esp 0x796f7520     ebp  0x72656164     esi 0x696e6720  edi  0x74686973\n"
-     "ds  0x3f000000     es   0x43494c48     fs  0x43525343  gs   0x4f4d4b53\n"
-     "\n"
-     "PANIC: k_trap - kernel mode trap type 0x0000000E\n"
-     "Trying to dump 5023 pages to dumpdev hd (1/41), 63 pages per '.'\n"
-    );
-  const char *sco_panic_2 =
-   ("...............................................................................\n"
-    );
-  const char *sco_panic_3 =
-    ("5023 pages dumped\n"
-     "\n"
-     "\n"
-     );
-  const char *sco_panic_4 =
-    ("**   Safe to Power Off   **\n"
-     "           - or -\n"
-     "** Press Any Key to Reboot **\n"
-    );
-
-  if (!get_boolean_resource("doSCO", "DoSCO"))
-    return False;
-
-  for (s = sco_panic_1; *s; s++) if (*s == '\n') lines_1++;
-  for (s = sco_panic_2; *s; s++) if (*s == '\n') lines_2++;
-  for (s = sco_panic_3; *s; s++) if (*s == '\n') lines_3++;
-  for (s = sco_panic_4; *s; s++) if (*s == '\n') lines_4++;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  fontname = get_string_resource ((xgwa.height > 600
-                                  ? "sco.font2"
-                                  : "sco.font"),
-                                 "SCO.Font");
-  if (!fontname || !*fontname) fontname = (char *)def_font;
-  font = XLoadQueryFont (dpy, fontname);
-  if (!font) font = XLoadQueryFont (dpy, def_font);
-  if (!font) exit(-1);
-  if (fontname && fontname != def_font)
-    free (fontname);
-
-  gcv.font = font->fid;
-  gcv.foreground = get_pixel_resource(("sco.foreground"),
-                                     "SCO.Foreground",
-                                     dpy, xgwa.colormap);
-  gcv.background = get_pixel_resource(("sco.background"),
-                                     "SCO.Background",
-                                     dpy, xgwa.colormap);
-  XSetWindowBackground(dpy, window, gcv.background);
-  XClearWindow(dpy, window);
-
-  gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
-
-  draw_string(dpy, window, gc, &gcv, font,
-             10, xgwa.height - ((lines_1 + lines_2 + lines_3 + lines_4 + 1) *
-                                 (font->ascent + font->descent + 1)),
-             10, 10,
-             sco_panic_1, 0);
-  XSync(dpy, False);
-  for (s = sco_panic_2; *s; s++)
-    {
-      char *ss = strdup(sco_panic_2);
-      ss[s - sco_panic_2] = 0;
-      draw_string(dpy, window, gc, &gcv, font,
-                  10, xgwa.height - ((lines_2 + lines_3 + lines_4 + 1) *
-                                     (font->ascent + font->descent + 1)),
-                  10, 10,
-                  ss, 0);
-      XSync(dpy, False);
-      free(ss);
-      if (bsod_sleep (dpy, -1))
-        goto DONE;
-    }
-
-  draw_string(dpy, window, gc, &gcv, font,
-             10, xgwa.height - ((lines_3 + lines_4 + 1) *
-                                 (font->ascent + font->descent + 1)),
-             10, 10,
-             sco_panic_3, 0);
-  XSync(dpy, False);
-  if (bsod_sleep(dpy, 1))
-    goto DONE;
-  draw_string(dpy, window, gc, &gcv, font,
-             10, xgwa.height - ((lines_4 + 1) *
-                                 (font->ascent + font->descent + 1)),
-             10, 10,
-             sco_panic_4, 0);
-  XSync(dpy, False);
-
-  bsod_sleep(dpy, delay);
- DONE:
-  XClearWindow(dpy, window);
-  XFreeGC(dpy, gc);
-  XFreeFont(dpy, font);
-  return True;
-}
-
-
-/* Linux (sparc) panic, by Tom Kelly <tom@ancilla.toronto.on.ca>
- */
-static Bool
-sparc_linux (Display *dpy, Window window, int delay)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  char *fontname;
-  const char *def_font = "fixed";
-  XFontStruct *font;
-  GC gc;
-  int lines = 1;
-  const char *s;
-
-  const char *linux_panic =
-    ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
-       "Unable to handle kernel paging request at virtual address f0d4a000\n"
-       "tsk->mm->context = 00000014\n"
-       "tsk->mm->pgd = f26b0000\n"
-       "              \\|/ ____ \\|/\n"
-       "              \"@'/ ,. \\`@\"\n"
-       "              /_| \\__/ |_\\\n"
-       "                 \\__U_/\n"
-       "gawk(22827): Oops\n"
-       "PSR: 044010c1 PC: f001c2cc NPC: f001c2d0 Y: 00000000\n"
-       "g0: 00001000 g1: fffffff7 g2: 04401086 g3: 0001eaa0\n"
-       "g4: 000207dc g5: f0130400 g6: f0d4a018 g7: 00000001\n"
-       "o0: 00000000 o1: f0d4a298 o2: 00000040 o3: f1380718\n"
-       "o4: f1380718 o5: 00000200 sp: f1b13f08 ret_pc: f001c2a0\n"
-       "l0: efffd880 l1: 00000001 l2: f0d4a230 l3: 00000014\n"
-       "l4: 0000ffff l5: f0131550 l6: f012c000 l7: f0130400\n"
-       "i0: f1b13fb0 i1: 00000001 i2: 00000002 i3: 0007c000\n"
-       "i4: f01457c0 i5: 00000004 i6: f1b13f70 i7: f0015360\n"
-       "Instruction DUMP:\n"
-    );
-
-  if (!get_boolean_resource("doSparcLinux", "DoSparcLinux"))
-    return False;
-
-  for (s = linux_panic; *s; s++) if (*s == '\n') lines++;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  fontname = get_string_resource ((xgwa.height > 600
-                                  ? "sparclinux.font2"
-                                  : "sparclinux.font"),
-                                 "SparcLinux.Font");
-  if (!fontname || !*fontname) fontname = (char *)def_font;
-  font = XLoadQueryFont (dpy, fontname);
-  if (!font) font = XLoadQueryFont (dpy, def_font);
-  if (!font) exit(-1);
-  if (fontname && fontname != def_font)
-    free (fontname);
-
-  gcv.font = font->fid;
-  gcv.foreground = get_pixel_resource(("sparclinux.foreground"),
-                                     "SparcLinux.Foreground",
-                                     dpy, xgwa.colormap);
-  gcv.background = get_pixel_resource(("sparclinux.background"),
-                                     "SparcLinux.Background",
-                                     dpy, xgwa.colormap);
-  XSetWindowBackground(dpy, window, gcv.background);
-  XClearWindow(dpy, window);
-
-  gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
-
-  draw_string(dpy, window, gc, &gcv, font,
-             10, xgwa.height - (lines * (font->ascent + font->descent + 1)),
-             10, 10,
-             linux_panic, 0);
-  XFreeGC(dpy, gc);
-  XSync(dpy, False);
-  bsod_sleep(dpy, delay);
-  XClearWindow(dpy, window);
-  XFreeFont(dpy, font);
-  return True;
-}
-
-static Bool
-amiga (Display *dpy, Window window, int delay)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  char *fontname;
-  const char *def_font = "fixed";
-  XFontStruct *font;
-  GC gc, gc2;
-  int height;
-  unsigned long fg, bg, bg2;
-  Pixmap pixmap = 0;
-  int pix_w = 0, pix_h = 0;
-
-  const char *string =
-    ("_Software failure.  Press left mouse button to continue.\n"
-     "_Guru Meditation #00000003.00C01570");
-
-  if (!get_boolean_resource("doAmiga", "DoAmiga"))
-    return False;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  fontname = get_string_resource ((xgwa.height > 600
-                                  ? "amiga.font2" : "amiga.font"),
-                                 "Amiga.Font");
-  if (!fontname || !*fontname) fontname = (char *)def_font;
-  font = XLoadQueryFont (dpy, fontname);
-  if (!font) font = XLoadQueryFont (dpy, def_font);
-  if (!font) exit(-1);
-  if (fontname && fontname != def_font)
-    free (fontname);
-
-  gcv.font = font->fid;
-  fg = gcv.foreground = get_pixel_resource("amiga.foreground",
-                                          "Amiga.Foreground",
-                                          dpy, xgwa.colormap);
-  bg = gcv.background = get_pixel_resource("amiga.background",
-                                          "Amiga.Background",
-                                          dpy, xgwa.colormap);
-  bg2 = get_pixel_resource("amiga.background2", "Amiga.Background",
-                          dpy, xgwa.colormap);
-  XSetWindowBackground(dpy, window, bg2);
-  XClearWindow(dpy, window);
-
-  gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
-  gcv.background = fg; gcv.foreground = bg;
-  gc2 = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
-
-  height = (font->ascent + font->descent) * 6;
-
-#ifdef HAVE_XPM
-  {
-    XpmAttributes xpmattrs;
-    int result;
-    xpmattrs.valuemask = 0;
-
-# ifdef XpmCloseness
-    xpmattrs.valuemask |= XpmCloseness;
-    xpmattrs.closeness = 40000;
-# endif
-# ifdef XpmVisual
-    xpmattrs.valuemask |= XpmVisual;
-    xpmattrs.visual = xgwa.visual;
-# endif
-# ifdef XpmDepth
-    xpmattrs.valuemask |= XpmDepth;
-    xpmattrs.depth = xgwa.depth;
-# endif
-# ifdef XpmColormap
-    xpmattrs.valuemask |= XpmColormap;
-    xpmattrs.colormap = xgwa.colormap;
-# endif
-
-    result = XpmCreatePixmapFromData(dpy, window, amiga_hand,
-                                    &pixmap, 0 /* mask */, &xpmattrs);
-    if (!pixmap || (result != XpmSuccess && result != XpmColorError))
-      pixmap = 0;
-    pix_w = xpmattrs.width;
-    pix_h = xpmattrs.height;
-  }
-#endif /* HAVE_XPM */
-
-  if (pixmap && xgwa.height > 600)     /* scale up the bitmap */
-    {
-      pixmap = double_pixmap(dpy, gc, xgwa.visual, xgwa.depth,
-                            pixmap, pix_w, pix_h);
-      pix_w *= 2;
-      pix_h *= 2;
-    }
-
-  if (pixmap)
-    {
-      int x = (xgwa.width - pix_w) / 2;
-      int y = ((xgwa.height - pix_h) / 2);
-      XCopyArea(dpy, pixmap, window, gc, 0, 0, pix_w, pix_h, x, y);
-
-      XSync(dpy, False);
-      bsod_sleep(dpy, 2);
-
-      XCopyArea(dpy, pixmap, window, gc, 0, 0, pix_w, pix_h, x, y + height);
-      XClearArea(dpy, window, 0, 0, xgwa.width, y + height, False);
-      XFreePixmap(dpy, pixmap);
-    }
-
-  XFillRectangle(dpy, window, gc2, 0, 0, xgwa.width, height);
-  draw_string(dpy, window, gc, &gcv, font, 0, 0, xgwa.width, height, string,0);
-
-  {
-    GC gca = gc;
-    while (delay > 0)
-      {
-       XFillRectangle(dpy, window, gca, 0, 0, xgwa.width, font->ascent);
-       XFillRectangle(dpy, window, gca, 0, 0, font->ascent, height);
-       XFillRectangle(dpy, window, gca, xgwa.width-font->ascent, 0,
-                      font->ascent, height);
-       XFillRectangle(dpy, window, gca, 0, height-font->ascent, xgwa.width,
-                      font->ascent);
-       gca = (gca == gc ? gc2 : gc);
-       XSync(dpy, False);
-       if (bsod_sleep(dpy, 1))
-         break;
-       delay--;
-      }
-  }
-
-  XFreeGC(dpy, gc);
-  XFreeGC(dpy, gc2);
-  XSync(dpy, False);
-  XClearWindow(dpy, window);
-  XFreeFont(dpy, font);
-  return True;
-}
-
-
-/* Atari ST, by Marcus Herbert <rhoenie@nobiscum.de>
-   Marcus had this to say:
-
-       Though I still have my Atari somewhere, I hardly remember
-       the meaning of the bombs. I think 9 bombs was "bus error" or
-       something like that.  And you often had a few bombs displayed
-       quickly and then the next few ones coming up step by step.
-       Perhaps somebody else can tell you more about it..  its just
-       a quick hack :-}
- */
-static Bool
-atari (Display *dpy, Window window, int delay)
-{
-       
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  const char *def_font = "fixed";
-  XFontStruct *font;
-  GC gc;
-  Pixmap pixmap = 0;
-  int pix_w = atari_width;
-  int pix_h = atari_height;
-  int offset;
-  int i, x, y;
-
-  if (!get_boolean_resource("doAtari", "DoAtari"))
-    return False;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  font = XLoadQueryFont (dpy, def_font);
-  if (!font) exit(-1);
-                
-  gcv.font = font->fid;
-  gcv.foreground = get_pixel_resource("atari.foreground", "Atari.Foreground",
-                                     dpy, xgwa.colormap);
-  gcv.background = get_pixel_resource("atari.background", "Atari.Background",
-                                     dpy, xgwa.colormap);
-
-  XSetWindowBackground(dpy, window, gcv.background);
-  XClearWindow(dpy, window);
-
-  gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
-
-  pixmap = XCreatePixmapFromBitmapData(dpy, window, (char *) atari_bits,
-                                      pix_w, pix_h,
-                                      gcv.foreground, gcv.background,
-                                      xgwa.depth);
-  pixmap = double_pixmap(dpy, gc, xgwa.visual, xgwa.depth,
-                        pixmap, pix_w, pix_h);
-  pix_w *= 2;
-  pix_h *= 2;
-
-  offset = pix_w + 2;
-  x = 5;
-  y = (xgwa.height - (xgwa.height / 5));
-  if (y < 0) y = 0;
-
-  for (i=0 ; i<7 ; i++) {
-    XCopyArea(dpy, pixmap, window, gc, 0, 0, pix_w, pix_h,
-             (x + (i*offset)), y);
-  }  
-  
-  for (i=7 ; i<10 ; i++) {
-    if (bsod_sleep(dpy, 1))
-      goto DONE;
-    XCopyArea(dpy, pixmap, window, gc, 0, 0, pix_w, pix_h,
-             (x + (i*offset)), y);
-  }
-
-  bsod_sleep(dpy, delay);
- DONE:
-  XFreePixmap(dpy, pixmap);
-  XFreeGC(dpy, gc);
-  XSync(dpy, False);
-  XClearWindow(dpy, window);
-  XFreeFont(dpy, font);
-  return True;
-}
-
-
-static Bool
-mac (Display *dpy, Window window, int delay)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  char *fontname;
-  const char *def_font = "fixed";
-  XFontStruct *font;
-  GC gc;
-  Pixmap pixmap = 0;
-  int pix_w = mac_width;
-  int pix_h = mac_height;
-  int offset = mac_height * 4;
-  int i;
-
-  const char *string = ("0 0 0 0 0 0 0 F\n"
-                       "0 0 0 0 0 0 0 3");
-
-  if (!get_boolean_resource("doMac", "DoMac"))
-    return False;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  fontname = get_string_resource ("mac.font", "Mac.Font");
-  if (!fontname || !*fontname) fontname = (char *)def_font;
-  font = XLoadQueryFont (dpy, fontname);
-  if (!font) font = XLoadQueryFont (dpy, def_font);
-  if (!font) exit(-1);
-  if (fontname && fontname != def_font)
-    free (fontname);
-
-  gcv.font = font->fid;
-  gcv.foreground = get_pixel_resource("mac.foreground", "Mac.Foreground",
-                                     dpy, xgwa.colormap);
-  gcv.background = get_pixel_resource("mac.background", "Mac.Background",
-                                     dpy, xgwa.colormap);
-  XSetWindowBackground(dpy, window, gcv.background);
-  XClearWindow(dpy, window);
-
-  gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
-
-  pixmap = XCreatePixmapFromBitmapData(dpy, window, (char *) mac_bits,
-                                      mac_width, mac_height,
-                                      gcv.foreground,
-                                      gcv.background,
-                                      xgwa.depth);
-
-  for(i = 0; i < 2; i++)
-    {
-      pixmap = double_pixmap(dpy, gc, xgwa.visual, xgwa.depth,
-                            pixmap, pix_w, pix_h);
-      pix_w *= 2; pix_h *= 2;
-    }
-
-  {
-    int x = (xgwa.width - pix_w) / 2;
-    int y = (((xgwa.height + offset) / 2) -
-            pix_h -
-            (font->ascent + font->descent) * 2);
-    if (y < 0) y = 0;
-    XCopyArea(dpy, pixmap, window, gc, 0, 0, pix_w, pix_h, x, y);
-    XFreePixmap(dpy, pixmap);
-  }
-
-  draw_string(dpy, window, gc, &gcv, font, 0, 0,
-             xgwa.width, xgwa.height + offset, string, 0);
-
-  XFreeGC(dpy, gc);
-  XSync(dpy, False);
-  bsod_sleep(dpy, delay);
-  XClearWindow(dpy, window);
-  XFreeFont(dpy, font);
-  return True;
-}
-
-static Bool
-macsbug (Display *dpy, Window window, int delay)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  char *fontname;
-  const char *def_font = "fixed";
-  XFontStruct *font;
-  GC gc, gc2;
-
-  int char_width, line_height;
-  int col_right, row_top, row_bottom, page_right, page_bottom, body_top;
-  int xoff, yoff;
-
-  const char *left = ("    SP     \n"
-                     " 04EB0A58  \n"
-                     "58 00010000\n"
-                     "5C 00010000\n"
-                     "   ........\n"
-                     "60 00000000\n"
-                     "64 000004EB\n"
-                     "   ........\n"
-                     "68 0000027F\n"
-                     "6C 2D980035\n"
-                     "   ....-..5\n"
-                     "70 00000054\n"
-                     "74 0173003E\n"
-                     "   ...T.s.>\n"
-                     "78 04EBDA76\n"
-                     "7C 04EBDA8E\n"
-                     "   .S.L.a.U\n"
-                     "80 00000000\n"
-                     "84 000004EB\n"
-                     "   ........\n"
-                     "88 00010000\n"
-                     "8C 00010000\n"
-                     "   ...{3..S\n"
-                     "\n"
-                     "\n"
-                     " CurApName \n"
-                     "  Finder   \n"
-                     "\n"
-                     " 32-bit VM \n"
-                     "SR Smxnzvc0\n"
-                     "D0 04EC0062\n"
-                     "D1 00000053\n"
-                     "D2 FFFF0100\n"
-                     "D3 00010000\n"
-                     "D4 00010000\n"
-                     "D5 04EBDA76\n"
-                     "D6 04EBDA8E\n"
-                     "D7 00000001\n"
-                     "\n"
-                     "A0 04EBDA76\n"
-                     "A1 04EBDA8E\n"
-                     "A2 A0A00060\n"
-                     "A3 027F2D98\n"
-                     "A4 027F2E58\n"
-                     "A5 04EC04F0\n"
-                     "A6 04EB0A86\n"
-                     "A7 04EB0A58");
-  const char *bottom = ("  _A09D\n"
-                       "     +00884    40843714     #$0700,SR         "
-                       "                  ; A973        | A973\n"
-                       "     +00886    40843765     *+$0400           "
-                       "                                | 4A1F\n"
-                       "     +00888    40843718     $0004(A7),([0,A7[)"
-                       "                  ; 04E8D0AE    | 66B8");
-
-#if 0
-  const char *body = ("Bus Error at 4BF6D6CC\n"
-                     "while reading word from 4BF6D6CC in User data space\n"
-                     " Unable to access that address\n"
-                     "  PC: 2A0DE3E6\n"
-                     "  Frame Type: B008");
-#else
-  const char * body = ("PowerPC unmapped memory exception at 003AFDAC "
-                                               "BowelsOfTheMemoryMgr+04F9C\n"
-                     " Calling chain using A6/R1 links\n"
-                     "  Back chain  ISA  Caller\n"
-                     "  00000000    PPC  28C5353C  __start+00054\n"
-                     "  24DB03C0    PPC  28B9258C  main+0039C\n"
-                     "  24DB0350    PPC  28B9210C  MainEvent+00494\n"
-                     "  24DB02B0    PPC  28B91B40  HandleEvent+00278\n"
-                     "  24DB0250    PPC  28B83DAC  DoAppleEvent+00020\n"
-                     "  24DB0210    PPC  FFD3E5D0  "
-                                               "AEProcessAppleEvent+00020\n"
-                     "  24DB0132    68K  00589468\n"
-                     "  24DAFF8C    68K  00589582\n"
-                     "  24DAFF26    68K  00588F70\n"
-                     "  24DAFEB3    PPC  00307098  "
-                                               "EmToNatEndMoveParams+00014\n"
-                     "  24DAFE40    PPC  28B9D0B0  DoScript+001C4\n"
-                     "  24DAFDD0    PPC  28B9C35C  RunScript+00390\n"
-                     "  24DAFC60    PPC  28BA36D4  run_perl+000E0\n"
-                     "  24DAFC10    PPC  28BC2904  perl_run+002CC\n"
-                     "  24DAFA80    PPC  28C18490  Perl_runops+00068\n"
-                     "  24DAFA30    PPC  28BE6CC0  Perl_pp_backtick+000FC\n"
-                     "  24DAF9D0    PPC  28BA48B8  Perl_my_popen+00158\n"
-                     "  24DAF980    PPC  28C5395C  sfclose+00378\n"
-                     "  24DAF930    PPC  28BA568C  free+0000C\n"
-                     "  24DAF8F0    PPC  28BA6254  pool_free+001D0\n"
-                     "  24DAF8A0    PPC  FFD48F14  DisposePtr+00028\n"
-                     "  24DAF7C9    PPC  00307098  "
-                                               "EmToNatEndMoveParams+00014\n"
-                     "  24DAF780    PPC  003AA180  __DisposePtr+00010");
-#endif
-
-  const char *s;
-  int body_lines = 1;
-
-  if (!get_boolean_resource("doMacsBug", "DoMacsBug"))
-    return False;
-
-  for (s = body; *s; s++) if (*s == '\n') body_lines++;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  fontname = get_string_resource ((xgwa.height > 850
-                                  ? "macsbug.font3"
-                                  : (xgwa.height > 700
-                                     ? "macsbug.font2"
-                                     : "macsbug.font")),
-                                 "MacsBug.Font");
-  if (!fontname || !*fontname) fontname = (char *)def_font;
-  font = XLoadQueryFont (dpy, fontname);
-  if (!font) font = XLoadQueryFont (dpy, def_font);
-  if (!font) exit(-1);
-  if (fontname && fontname != def_font)
-    free (fontname);
-
-  gcv.font = font->fid;
-  gcv.foreground = get_pixel_resource("macsbug.foreground",
-                                     "MacsBug.Foreground",
-                                     dpy, xgwa.colormap);
-  gcv.background = get_pixel_resource("macsbug.background",
-                                     "MacsBug.Background",
-                                     dpy, xgwa.colormap);
-
-  gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv);
-
-  gcv.foreground = gcv.background;
-  gc2 = XCreateGC(dpy, window, GCForeground, &gcv);
-
-  XSetWindowBackground(dpy, window,
-                      get_pixel_resource("macsbug.borderColor",
-                                         "MacsBug.BorderColor",
-                                         dpy, xgwa.colormap));
-  XClearWindow(dpy, window);
-
-  char_width = (font->per_char
-               ? font->per_char['n'-font->min_char_or_byte2].width
-               : font->min_bounds.width);
-  line_height = font->ascent + font->descent + 1;
-
-  col_right = char_width * 12;
-  page_bottom = line_height * 47;
-
-  if (page_bottom > xgwa.height) page_bottom = xgwa.height;
-
-  row_bottom = page_bottom - line_height;
-  row_top = row_bottom - (line_height * 4);
-  page_right = col_right + (char_width * 88);
-  body_top = row_top - (line_height * body_lines);
-
-  page_bottom += 2;
-  row_bottom += 2;
-  body_top -= 4;
-
-  xoff = (xgwa.width - page_right) / 2;
-  yoff = (xgwa.height - page_bottom) / 2;
-  if (xoff < 0) xoff = 0;
-  if (yoff < 0) yoff = 0;
-
-  XFillRectangle(dpy, window, gc2, xoff, yoff, page_right, page_bottom);
-
-  draw_string(dpy, window, gc, &gcv, font, xoff, yoff, 10, 10, left, 0);
-  draw_string(dpy, window, gc, &gcv, font, xoff+col_right, yoff+row_top,
-             10, 10, bottom, 0);
-
-  XFillRectangle(dpy, window, gc, xoff + col_right, yoff, 2, page_bottom);
-  XDrawLine(dpy, window, gc,
-           xoff+col_right, yoff+row_top, xoff+page_right, yoff+row_top);
-  XDrawLine(dpy, window, gc,
-           xoff+col_right, yoff+row_bottom, xoff+page_right, yoff+row_bottom);
-  XDrawRectangle(dpy, window, gc,  xoff, yoff, page_right, page_bottom);
-
-  if (body_top > 4)
-    body_top = 4;
-
-  draw_string(dpy, window, gc, &gcv, font,
-             xoff + col_right + char_width, yoff + body_top, 10, 10, body,
-             500);
-
-  while (delay > 0)
-    {
-      XDrawLine(dpy, window, gc,
-               xoff+col_right+(char_width/2)+2, yoff+row_bottom+3,
-               xoff+col_right+(char_width/2)+2, yoff+page_bottom-3);
-      XSync(dpy, False);
-      usleep(666666L);
-      XDrawLine(dpy, window, gc2,
-               xoff+col_right+(char_width/2)+2, yoff+row_bottom+3,
-               xoff+col_right+(char_width/2)+2, yoff+page_bottom-3);
-      XSync(dpy, False);
-      usleep(333333L);
-      if (bsod_sleep(dpy, 0))
-       break;
-      delay--;
-    }
-
-  XFreeGC(dpy, gc);
-  XFreeGC(dpy, gc2);
-  XClearWindow(dpy, window);
-  XFreeFont(dpy, font);
-  return True;
-}
-
-
-\f
-char *progclass = "BSOD";
-
-char *defaults [] = {
-  "*delay:                30",
-
-  "*doWindows:            True",
-  "*doNT:                 True",
-  "*doAmiga:              True",
-  "*doMac:                True",
-  "*doAtari:              False",      /* boring */
-  "*doMacsBug:            True",
-  "*doSCO:                True",
-  "*doSparcLinux:         False",      /* boring */
-
-  ".Windows.font:         -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
-  ".Windows.font2:        -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*",
-  ".Windows.foreground:           White",
-  ".Windows.background:           Blue",
-
-  ".Amiga.font:                   -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
-  ".Amiga.font2:          -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*",
-  ".Amiga.foreground:     Red",
-  ".Amiga.background:     Black",
-  ".Amiga.background2:    White",
-
-  ".Mac.font:             -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
-  ".Mac.foreground:       PaleTurquoise1",
-  ".Mac.background:       Black",
-
-  ".Atari.foreground:     Black",
-  ".Atari.background:     White",
-
-  ".MacsBug.font:         -*-courier-medium-r-*-*-*-100-*-*-m-*-*-*",
-  ".MacsBug.font2:        -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*",
-  ".MacsBug.font3:        -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*",
-  ".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",
-  ".SparcLinux.background: Black",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-
-void
-screenhack (Display *dpy, Window window)
-{
-  int loop = 0;
-  int i = -1;
-  int j = -1;
-  int delay = get_integer_resource ("delay", "Integer");
-  if (delay < 3) delay = 3;
-
-  if (!get_boolean_resource ("root", "Boolean"))
-    {
-      XWindowAttributes xgwa;
-      XGetWindowAttributes (dpy, window, &xgwa);
-      XSelectInput (dpy, window,
-                    xgwa.your_event_mask | KeyPressMask | ButtonPressMask);
-    }
-
-  while (1)
-    {
-      Bool did;
-      do {  i = (random() & 0xFF) % 8; } while (i == j);
-      switch (i)
-       {
-       case 0: did = windows(dpy, window, delay, True); break;
-       case 1: did = windows(dpy, window, delay, False); break;
-       case 2: did = amiga(dpy, window, delay); break;
-       case 3: did = mac(dpy, window, delay); break;
-       case 4: did = macsbug(dpy, window, delay); break;
-       case 5: did = sco(dpy, window, delay); break;
-       case 6: did = sparc_linux(dpy, window, delay); break;
-       case 7: did = atari(dpy, window, delay); break;
-       default: abort(); break;
-       }
-      loop++;
-      if (loop > 100) j = -1;
-      if (loop > 200) exit(-1);
-      if (!did) continue;
-      XSync (dpy, False);
-      j = i;
-      loop = 0;
-    }
-}
diff --git a/hacks/bsod.man b/hacks/bsod.man
deleted file mode 100644 (file)
index 63bcee6..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-.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 "28-Oct-98" "X Version 11"
-.SH NAME
-bsod - Blue Screen of Death emulator
-.SH SYNOPSIS
-.B bsod
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fIseconds\fP]
-.SH DESCRIPTION
-The
-.I bsod
-program is the finest in personal computer emulation.  
-.PP
-.I bsod
-steps through a set of screens, each one a recreation of a different failure
-mode of an operating system.  Systems depicted include Microsoft's Windows 95
-and Windows NT, Commodore-Amiga's AmigaDOS 1.3, SPARC Linux, SCO UNIX, the
-Apple Macintosh (both the MacsBug debugger and the rarer "Sad Mac"), and the
-Atari ST.
-.PP
-.SH OPTIONS
-.I bsod
-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 \fIdelay\fP
-The delay between displaying one crash and another.
-.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 X RESOURCES
-Notable X resources supported include the following, which control which
-hacks are displayed and which aren't.
-.BR doWindows ,
-.BR doNT ,
-.BR doAmiga ,
-.BR doMac ,
-.BR doMacsBug ,
-.BR doSCO ,
-.BR doAtari ,
-and
-.BR doSparcLinux .
-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.
-There aren't command-line options for these, so to change them, you'll need
-to add entries to your .Xdefaults file, or use the -xrm option.
-For example, to tell bsod not to show the NT crash:
-.EX
-bsod -xrm '*doNT: false'
-.EE
-.SH BUGS
-Unlike the systems that the images are borrowed from,
-.I bsod
-does not require a reboot after running.
-.PP
-.I bsod
-should also emulate more systems, but systems with interesting crash
-graphics are not as common as one might hope.
-
-One I'd really like to see is a Unix system getting a kernel panic, 
-rebooting, and running
-.BR fsck (8).
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver (1),
-.BR http://www.microsoft.com/ ,
-.BR http://www.apple.com/ ,
-and
-.BR http://www.sco.com/ ,
-.BR http://www.kernel.org/ ,
-and
-.BR http://www.amiga.de/ .
-.SH TRADEMARKS
-Microsoft Windows, Microsoft Windows 95, and Microsoft Windows NT are all
-registered trademarks of Microsoft Corporation.  Apple Macintosh is a
-registered trademark of Apple Computer.  Amiga is a registered trademark of
-Amiga International, Inc.  Atari ST is probably a trademark, too, but it's
-hard to tell who owns it. Linux is a registered trademark of Linus Torvalds,
-but it isn't his fault.
-.SH COPYRIGHT
-Copyright \(co 1998 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 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.  No animals were harmed during the testing of
-these simulations.  Always mount a scratch monkey.
-.SH AUTHOR
-Concept cribbed from Stephen Martin <smartin@mks.com>.  This version is by
-Jamie Zawinski <jwz@jwz.org>.
diff --git a/hacks/bubbles-default.c b/hacks/bubbles-default.c
deleted file mode 100644 (file)
index f393f1f..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/* bubbles_default.c - pick images for bubbles.c
- * By Jamie Zawinski <jwz@jwz.org>, 20-Jan-98.
- *
- * 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 <stdlib.h>
-#include "bubbles.h"
-#include "yarandom.h"
-
-#ifndef NO_DEFAULT_BUBBLE
-
-# define BLOOD 0
-# include "images/bubbles/blood1.xpm"
-# include "images/bubbles/blood2.xpm"
-# include "images/bubbles/blood3.xpm"
-# include "images/bubbles/blood4.xpm"
-# include "images/bubbles/blood5.xpm"
-# include "images/bubbles/blood6.xpm"
-# include "images/bubbles/blood7.xpm"
-# include "images/bubbles/blood8.xpm"
-# include "images/bubbles/blood9.xpm"
-# include "images/bubbles/blood10.xpm"
-# include "images/bubbles/blood11.xpm"
-
-# define BLUE 1
-# include "images/bubbles/blue1.xpm"
-# include "images/bubbles/blue2.xpm"
-# include "images/bubbles/blue3.xpm"
-# include "images/bubbles/blue4.xpm"
-# include "images/bubbles/blue5.xpm"
-# include "images/bubbles/blue6.xpm"
-# include "images/bubbles/blue7.xpm"
-# include "images/bubbles/blue8.xpm"
-# include "images/bubbles/blue9.xpm"
-# include "images/bubbles/blue10.xpm"
-# include "images/bubbles/blue11.xpm"
-
-# define GLASS 2
-# include "images/bubbles/glass1.xpm"
-# include "images/bubbles/glass2.xpm"
-# include "images/bubbles/glass3.xpm"
-# include "images/bubbles/glass4.xpm"
-# include "images/bubbles/glass5.xpm"
-# include "images/bubbles/glass6.xpm"
-# include "images/bubbles/glass7.xpm"
-# include "images/bubbles/glass8.xpm"
-# include "images/bubbles/glass9.xpm"
-# include "images/bubbles/glass10.xpm"
-# include "images/bubbles/glass11.xpm"
-
-# define JADE 3
-# include "images/bubbles/jade1.xpm"
-# include "images/bubbles/jade2.xpm"
-# include "images/bubbles/jade3.xpm"
-# include "images/bubbles/jade4.xpm"
-# include "images/bubbles/jade5.xpm"
-# include "images/bubbles/jade6.xpm"
-# include "images/bubbles/jade7.xpm"
-# include "images/bubbles/jade8.xpm"
-# include "images/bubbles/jade9.xpm"
-# include "images/bubbles/jade10.xpm"
-# include "images/bubbles/jade11.xpm"
-
-# define END 4
-
-
-char **default_bubbles[50];
-int num_default_bubbles;
-
-void init_default_bubbles(void)
-{
-  int i = 0;
-  switch (random() % END) {
-  case BLOOD:
-    default_bubbles[i++] = blood1;
-    default_bubbles[i++] = blood2;
-    default_bubbles[i++] = blood3;
-    default_bubbles[i++] = blood4;
-    default_bubbles[i++] = blood5;
-    default_bubbles[i++] = blood6;
-    default_bubbles[i++] = blood7;
-    default_bubbles[i++] = blood8;
-    default_bubbles[i++] = blood9;
-    default_bubbles[i++] = blood10;
-    default_bubbles[i++] = blood11;
-    break;
-
-  case BLUE:
-    default_bubbles[i++] = blue1;
-    default_bubbles[i++] = blue2;
-    default_bubbles[i++] = blue3;
-    default_bubbles[i++] = blue4;
-    default_bubbles[i++] = blue5;
-    default_bubbles[i++] = blue6;
-    default_bubbles[i++] = blue7;
-    default_bubbles[i++] = blue8;
-    default_bubbles[i++] = blue9;
-    default_bubbles[i++] = blue10;
-    default_bubbles[i++] = blue11;
-    break;
-
-  case GLASS:
-    default_bubbles[i++] = glass1;
-    default_bubbles[i++] = glass2;
-    default_bubbles[i++] = glass3;
-    default_bubbles[i++] = glass4;
-    default_bubbles[i++] = glass5;
-    default_bubbles[i++] = glass6;
-    default_bubbles[i++] = glass7;
-    default_bubbles[i++] = glass8;
-    default_bubbles[i++] = glass9;
-    default_bubbles[i++] = glass10;
-    default_bubbles[i++] = glass11;
-    break;
-
-  case JADE:
-    default_bubbles[i++] = jade1;
-    default_bubbles[i++] = jade2;
-    default_bubbles[i++] = jade3;
-    default_bubbles[i++] = jade4;
-    default_bubbles[i++] = jade5;
-    default_bubbles[i++] = jade6;
-    default_bubbles[i++] = jade7;
-    default_bubbles[i++] = jade8;
-    default_bubbles[i++] = jade9;
-    default_bubbles[i++] = jade10;
-    default_bubbles[i++] = jade11;
-    break;
-
-  default:
-    abort();
-    break;
-  }
-
-  default_bubbles[i] = 0;
-  num_default_bubbles = i;
-}
-
-#endif /* NO_DEFAULT_BUBBLE */
diff --git a/hacks/bubbles.c b/hacks/bubbles.c
deleted file mode 100644 (file)
index 913fe03..0000000
+++ /dev/null
@@ -1,1320 +0,0 @@
-/* bubbles.c - frying pan / soft drink in a glass simulation */
-
-/*$Id: bubbles.c,v 1.16 1998/11/19 07:25:01 jwz Exp $*/
-
-/*
- *  Copyright (C) 1995-1996 James Macnicol
- *
- * 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.
- */
-
-/*
- * I got my original inspiration for this by looking at the bottom of a 
- * frying pan while something was cooking and watching the little bubbles
- * coming off the bottom of the pan as the oil was boiling joining together
- * to form bigger bubbles and finally to *pop* and disappear.  I had some
- * time on my hands so I wrote this little xscreensaver module to imitate
- * it.  Now that it's done it reminds me more of the bubbles you get in
- * a glass of fizzy soft drink.....
- *
- * The problem seemed to be that the position/size etc. of all the bubbles
- * on the screen had to be remembered and searched through to find when
- * bubbles hit each other and combined.  To do this more efficiently, the
- * window/screen is divided up into a square mesh of side length mesh_length
- * and separate lists of bubbles contained in each cell of the mesh are
- * kept.  Only the cells in the immediate vicinity of the bubble in question
- * are searched.  This should make things more efficient although the whole
- * thing seems to use up too much CPU, but then I'm using an ancient PC so
- * perhaps it's not surprising .
- * (Six months after I wrote the above I now have a Pentium with PCI graphics 
- * and things are _much_ nicer.)
- *
- * Author:           James Macnicol 
- * Internet E-mail : J.Macnicol@student.anu.edu.au
- */
-
-#include <math.h>
-#include "screenhack.h"
-#include "bubbles.h"
-
-#include <limits.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#ifndef VMS
-# include <sys/wait.h>
-#else /* VMS */
-# if __DECC_VER >= 50200000
-#  include <sys/wait.h>
-# endif
-#endif /* VMS */
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include "yarandom.h"
-
-#ifdef HAVE_XPM
-# include <X11/xpm.h>
-#endif
-
-/* 
- * Public variables 
- */
-
-extern void init_default_bubbles(void);
-extern int num_default_bubbles;
-extern char **default_bubbles[];
-
-char *progclass = "Bubbles";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*simple:            false",
-  "*broken:            false",
-  "*delay:             800",
-  "*quiet:             false", 
-  "*nodelay:           false",
-  "*3D:                        false",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-simple",          ".simple",      XrmoptionNoArg, "true" },
-#ifdef HAVE_XPM
-  { "-broken",          ".broken",      XrmoptionNoArg, "true" },
-#endif /* HAVE_XPM */
-  { "-quiet",           ".quiet",       XrmoptionNoArg, "true" },
-  { "-nodelay",         ".nodelay",     XrmoptionNoArg, "true" },
-  { "-3D",          ".3D",      XrmoptionNoArg, "true" },
-  { "-delay",           ".delay",       XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-/* 
- * Private variables 
- */
-
-static Bubble **mesh;
-static int mesh_length;
-static int mesh_width;
-static int mesh_height;
-static int mesh_cells;
-
-static int **adjacent_list;
-
-static int screen_width;
-static int screen_height;
-static int screen_depth;
-static unsigned int default_fg_pixel, default_bg_pixel;
-/* 
- * I know it's not elegant to save this stuff in global variables
- * but we need it for the signal handler.
- */
-static Display *defdsp;
-static Window defwin;
-static Colormap defcmap;
-static Visual *defvisual;
-
-/* For simple mode only */
-static int bubble_min_radius;
-static int bubble_max_radius;
-static long *bubble_areas;
-static GC draw_gc, erase_gc;
-
-#ifdef HAVE_XPM
-static int num_bubble_pixmaps;
-static Bubble_Step **step_pixmaps;
-#endif /* HAVE_XPM */
-
-/* Options stuff */
-#ifdef HAVE_XPM
-static Bool simple = False;
-#else
-static Bool simple = True;
-#endif
-static Bool broken = False;
-static Bool quiet = False;
-static Bool threed = False;
-static int delay;
-
-/* 
- * To prevent forward references, some stuff is up here 
- */
-
-static long
-calc_bubble_area(int r)
-/* Calculate the area of a bubble of radius r */
-{
-#ifdef DEBUG
-  printf("%d %g\n", r,
-        10.0 * PI * (double)r * (double)r * (double)r);
-#endif /* DEBUG */
-  if (threed)
-    return (long)(10.0 * PI * (double)r * (double)r * (double)r);
-  else
-    return (long)(10.0 * PI * (double)r * (double)r);
-}
-
-static void *
-xmalloc(size_t size)
-/* Safe malloc */
-{
-  void *ret;
-
-  if ((ret = malloc(size)) == NULL) {
-    fprintf(stderr, "%s: out of memory\n", progname);
-    exit(1);
-  }
-  return ret;
-}
-
-#ifdef DEBUG
-static void 
-die_bad_bubble(Bubble *bb)
-/* This is for use with GDB */
-{
-  fprintf(stderr, "Bad bubble detected at 0x%x!\n", (int)bb);
-  exit(1);
-}
-#endif
-
-static int
-null_bubble(Bubble *bb)
-/* Returns true if the pointer passed is NULL.  If not then this checks to
-see if the bubble is valid (i.e. the (x,y) position is valid and the magic
-number is set correctly.  This only a sanity check for debugging and is
-turned off if DEBUG isn't set. */
-{
-  if (bb == (Bubble *)NULL)
-    return 1;
-#ifdef DEBUG
-  if ((bb->cell_index < 0) || (bb->cell_index > mesh_cells)) {
-    fprintf(stderr, "cell_index = %d\n", bb->cell_index);
-    die_bad_bubble(bb);
-  }
-  if (bb->magic != BUBBLE_MAGIC)  {
-    fprintf(stderr, "Magic = %d\n", bb->magic);
-    die_bad_bubble(bb);
-  }
-  if (simple) {
-    if ((bb->x < 0) || (bb->x > screen_width) ||
-       (bb->y < 0) || (bb->y > screen_height) ||
-       (bb->radius < bubble_min_radius) || (bb->radius >
-                                            bubble_max_radius)) {
-      fprintf(stderr,
-             "radius = %d, x = %d, y = %d, magic = %d, cell index = %d\n",
-             bb->radius, bb->x, bb->y, bb->magic, bb->cell_index);
-      die_bad_bubble(bb);  
-    }
-#ifdef HAVE_XPM
-  } else {
-    if ((bb->x < 0) || (bb->x > screen_width) ||
-       (bb->y < 0) || (bb->y > screen_height) ||
-       (bb->radius < step_pixmaps[0]->radius) || 
-       (bb->radius > step_pixmaps[num_bubble_pixmaps-1]->radius)) {
-      fprintf(stderr,
-             "radius = %d, x = %d, y = %d, magic = %d, cell index = %d\n",
-             bb->radius, bb->x, bb->y, bb->magic, bb->cell_index);
-      die_bad_bubble(bb);  
-    }
-#endif /* HAVE_XPM */
-  }
-#endif /* DEBUG */
-  return 0;
-}
-
-#ifdef DEBUG
-static void 
-print_bubble_list(Bubble *bb)
-/* Print list of where all the bubbles are.  For debugging purposes only. */
-{
-  if (! null_bubble(bb)) {
-    printf("  (%d, %d) %d\n", bb->x, bb->y, bb->radius);
-    print_bubble_list(bb->next);
-  }
-}
-#endif /* DEBUG */
-
-static void 
-add_bubble_to_list(Bubble **list, Bubble *bb)
-/* Take a pointer to a list of bubbles and stick bb at the head of the
- list. */
-{
-  Bubble *head = *list;
-
-  if (null_bubble(head)) {
-    bb->prev = (Bubble *)NULL;
-    bb->next = (Bubble *)NULL;
-  } else {
-    bb->next = head;
-    bb->prev = (Bubble *)NULL;
-    head->prev = bb;
-  }
-  *list = bb;
-}
-
-
-/* 
- * Mesh stuff 
- */
-
-
-static void 
-init_mesh (void)
-/* Setup the mesh of bubbles */
-{
-  int i;
-
-  mesh = (Bubble **)xmalloc(mesh_cells * sizeof(Bubble *));
-  for (i = 0; i < mesh_cells; i++)
-    mesh[i] = (Bubble *)NULL;
-}
-
-static int
-cell_to_mesh(int x, int y)
-/* convert cell coordinates to mesh index */
-{
-#ifdef DEBUG
-  if ((x < 0) || (y < 0)) {
-    fprintf(stderr, "cell_to_mesh: x = %d, y = %d\n", x, y);
-    exit(1);
-  }
-#endif
-  return ((mesh_width * y) + x);
-}
-
-static void 
-mesh_to_cell(int mi, int *cx, int *cy)
-/* convert mesh index into cell coordinates */
-{
-  *cx = mi % mesh_width;
-  *cy = mi / mesh_width;
-}
-
-static int
-pixel_to_mesh(int x, int y)
-/* convert screen coordinates into mesh index */
-{
-  return cell_to_mesh((x / mesh_length), (y / mesh_length));
-}
-
-static int
-verify_mesh_index(int x, int y)
-/* check to see if (x,y) is in the mesh */
-{
-  if ((x < 0) || (y < 0) || (x >= mesh_width) || (y >= mesh_height))
-    return (-1);
-  return (cell_to_mesh(x, y));
-}
-
-#ifdef DEBUG
-static void 
-print_adjacents(int *adj)
-/* Print a list of the cells calculated above.  For debugging only. */
-{
-  int i;
-
-  printf("(");
-  for (i = 0; i < 8; i++)
-    printf("%d ", adj[i]);
-  printf(")\n");
-}
-#endif /* DEBUG */
-
-static void 
-add_to_mesh(Bubble *bb)
-/* Add the given bubble to the mesh by sticking it on the front of the
-list.  bb is already allocated so no need to malloc() anything, just
-adjust pointers. */
-{
-#ifdef DEBUG
-  if (null_bubble(bb)) {
-    fprintf(stderr, "Bad bubble passed to add_to_mesh()!\n");
-    exit(1);
-  }
-#endif /* DEBUG */
-
-  add_bubble_to_list(&mesh[bb->cell_index], bb);
-}
-
-#ifdef DEBUG
-static void 
-print_mesh (void)
-/* Print the contents of the mesh */
-{
-  int i;
-
-  for (i = 0; i < mesh_cells; i++) {
-    if (! null_bubble(mesh[i])) {
-      printf("Mesh cell %d\n", i);
-      print_bubble_list(mesh[i]);
-    }
-  }
-}
-
-static void 
-valid_mesh (void)
-/* Check to see if the mesh is Okay.  For debugging only. */
-{
-  int i;
-  Bubble *b;
-
-  for (i = 0; i < mesh_cells; i++) {
-    b = mesh[i];
-    while (! null_bubble(b))
-      b = b->next;
-  }
-}
-
-static int
-total_bubbles (void)
-/* Count how many bubbles there are in total.  For debugging only. */
-{
-  int rv = 0;
-  int i;
-  Bubble *b;
-
-  for (i = 0; i < mesh_cells; i++) {
-    b = mesh[i];
-    while (! null_bubble(b)) {
-      rv++;
-      b = b->next;
-    } 
-  }
-
-  return rv;
-}
-#endif /* DEBUG */
-
-static void 
-calculate_adjacent_list (void)
-/* Calculate the list of cells adjacent to a particular cell for use
-   later. */
-{
-  int i; 
-  int ix, iy;
-
-  adjacent_list = (int **)xmalloc(mesh_cells * sizeof(int *));
-  for (i = 0; i < mesh_cells; i++) {
-    adjacent_list[i] = (int *)xmalloc(9 * sizeof(int));
-    mesh_to_cell(i, &ix, &iy);
-    adjacent_list[i][0] = verify_mesh_index(--ix, --iy);
-    adjacent_list[i][1] = verify_mesh_index(++ix, iy);
-    adjacent_list[i][2] = verify_mesh_index(++ix, iy);
-    adjacent_list[i][3] = verify_mesh_index(ix, ++iy);
-    adjacent_list[i][4] = verify_mesh_index(ix, ++iy);
-    adjacent_list[i][5] = verify_mesh_index(--ix, iy);
-    adjacent_list[i][6] = verify_mesh_index(--ix, iy);
-    adjacent_list[i][7] = verify_mesh_index(ix, --iy);
-    adjacent_list[i][8] = i;
-  }
-}
-
-static void
-adjust_areas (void)
-/* Adjust areas of bubbles so we don't get overflow in weighted_mean() */
-{
-  double maxvalue;
-  long maxarea;
-  long factor;
-  int i;
-
-#ifdef HAVE_XPM
-  if (simple)
-    maxarea = bubble_areas[bubble_max_radius+1];
-  else
-    maxarea = step_pixmaps[num_bubble_pixmaps]->area;
-#else
-  maxarea = bubble_areas[bubble_max_radius+1];
-#endif /* HAVE_XPM */
-  maxvalue = (double)screen_width * 2.0 * (double)maxarea;
-  factor = (long)ceil(maxvalue / (double)LONG_MAX);
-  if (factor > 1) {
-    /* Overflow will occur in weighted_mean().  We must divide areas
-       each by factor so it will never do so. */
-#ifdef HAVE_XPM
-    if (simple) {
-      for (i = bubble_min_radius; i <= bubble_max_radius+1; i++) {
-       bubble_areas[i] /= factor;
-       if (bubble_areas[i] == 0)
-         bubble_areas[i] = 1;
-      }
-    } else {
-      for (i = 0; i <= num_bubble_pixmaps; i++) {
-#ifdef DEBUG
-       printf("area = %ld", step_pixmaps[i]->area);
-#endif /* DEBUG */
-       step_pixmaps[i]->area /= factor;
-       if (step_pixmaps[i]->area == 0)
-         step_pixmaps[i]->area = 1;
-#ifdef DEBUG
-       printf("-> %ld\n", step_pixmaps[i]->area);
-#endif /* DEBUG */
-      }
-    }
-#else
-    for (i = bubble_min_radius; i <= bubble_max_radius+1; i++) {
-      bubble_areas[i] /= factor;
-      if (bubble_areas[i] == 0)
-       bubble_areas[i] = 1;
-    }
-#endif /* HAVE_XPM */
-  }
-#ifdef DEBUG
-  printf("maxarea = %ld\n", maxarea);
-  printf("maxvalue = %g\n", maxvalue);
-  printf("LONG_MAX = %ld\n", LONG_MAX);
-  printf("factor = %ld\n", factor);
-#endif /* DEBUG */
-}
-
-/* 
- * Bubbles stuff 
- */
-
-static Bubble *
-new_bubble (void)
-/* Add a new bubble at some random position on the screen of the smallest
-size. */
-{
-  Bubble *rv = (Bubble *)xmalloc(sizeof(Bubble));
-
-  /* Can't use null_bubble() here since magic number hasn't been set */
-  if (rv == (Bubble *)NULL) {
-    fprintf(stderr, "Ran out of memory!\n");
-    exit(1);
-  }
-
-  if (simple) {
-    rv->radius = bubble_min_radius;
-    rv->area = bubble_areas[bubble_min_radius];
-#ifdef HAVE_XPM
-  } else {
-    rv->step = 0;
-    rv->radius = step_pixmaps[0]->radius;
-    rv->area = step_pixmaps[0]->area;
-#endif /* HAVE_XPM */
-  }
-  rv->visible = 0;
-  rv->magic = BUBBLE_MAGIC;
-  rv->x = random() % screen_width;
-  rv->y = random() % screen_height;
-  rv->cell_index = pixel_to_mesh(rv->x, rv->y);
-
-  return rv;
-}
-
-static void 
-show_bubble(Bubble *bb)
-/* paint the bubble on the screen */
-{
-  if (null_bubble(bb)) {
-    fprintf(stderr, "NULL bubble passed to show_bubble\n");
-    exit(1);
-  }
-
-  if (! bb->visible) {
-    bb->visible = 1;
-
-    if (simple) {
-      XDrawArc(defdsp, defwin, draw_gc, (bb->x - bb->radius),
-              (bb->y - bb->radius), bb->radius*2, bb->radius*2, 0,
-              360*64);  
-    } else {
-#ifdef HAVE_XPM
-      XSetClipOrigin(defdsp, step_pixmaps[bb->step]->draw_gc, 
-                    (bb->x - bb->radius),
-                    (bb->y - bb->radius));
-      
-      XCopyArea(defdsp, step_pixmaps[bb->step]->ball, defwin, 
-               step_pixmaps[bb->step]->draw_gc,
-               0, 0, (bb->radius * 2), 
-               (bb->radius * 2),  
-               (bb->x - bb->radius),
-               (bb->y - bb->radius));
-#endif /* HAVE_XPM */
-    }
-  }
-}
-
-static void 
-hide_bubble(Bubble *bb)
-/* erase the bubble */
-{
-  if (null_bubble(bb)) {
-    fprintf(stderr, "NULL bubble passed to hide_bubble\n");
-    exit(1);
-  }
-
-  if (bb->visible) {
-    bb->visible = 0;
-
-    if (simple) {
-      XDrawArc(defdsp, defwin, erase_gc, (bb->x - bb->radius),
-              (bb->y - bb->radius), bb->radius*2, bb->radius*2, 0,
-              360*64);
-    } else {
-#ifdef HAVE_XPM
-      if (! broken) {
-       XSetClipOrigin(defdsp, step_pixmaps[bb->step]->erase_gc, 
-                      (bb->x - bb->radius), (bb->y - bb->radius));
-       
-       XFillRectangle(defdsp, defwin, step_pixmaps[bb->step]->erase_gc,
-                      (bb->x - bb->radius),
-                      (bb->y - bb->radius),
-                      (bb->radius * 2),
-                      (bb->radius * 2));
-      }
-#endif /* HAVE_XPM */
-    }
-  }
-}
-
-static void 
-delete_bubble_in_mesh(Bubble *bb, int keep_bubble)
-/* Delete an individual bubble, adjusting list of bubbles around it.
-   If keep_bubble is true then the bubble isn't actually deleted.  We
-   use this to allow bubbles to change mesh cells without reallocating,
-   (it needs this when two bubbles collide and the centre position is
-   recalculated, and this may stray over a mesh boundary). */
-{
-  if ((!null_bubble(bb->prev)) && (!null_bubble(bb->next))) {
-    bb->prev->next = bb->next;
-    bb->next->prev = bb->prev;
-  } else if ((!null_bubble(bb->prev)) &&
-            (null_bubble(bb->next))) {
-    bb->prev->next = (Bubble *)NULL;
-    bb->next = mesh[bb->cell_index];
-  } else if ((null_bubble(bb->prev)) &&
-            (!null_bubble(bb->next))) {
-    bb->next->prev = (Bubble *)NULL;
-    mesh[bb->cell_index] = bb->next;
-    bb->next = mesh[bb->cell_index];
-  } else {
-    /* Only item on list */
-    mesh[bb->cell_index] = (Bubble *)NULL;
-  }             
-  if (! keep_bubble)
-    free(bb);
-}
-
-static unsigned long 
-ulongsqrint(int x)
-/* Saves ugly inline code */
-{
-  return ((unsigned long)x * (unsigned long)x);
-}
-
-static Bubble *
-get_closest_bubble(Bubble *bb)
-/* Find the closest bubble touching the this bubble, NULL if none are
-   touching. */
-{
-  Bubble *rv = (Bubble *)NULL;
-  Bubble *tmp;
-  unsigned long separation2, touchdist2;
-  int dx, dy;
-  unsigned long closest2 = ULONG_MAX;
-  int i;
-
-#ifdef DEBUG 
-  if (null_bubble(bb)) {
-    fprintf(stderr, "NULL pointer 0x%x passed to get_closest_bubble()!", 
-           (int)bb);
-    exit(1);
-  }
-#endif /* DEBUG */
-
-  for (i = 0; i < 9; i++) {
-    /* There is a bug here where bb->cell_index is negaitve.. */
-#ifdef DEBUG
-    if ((bb->cell_index < 0) || (bb->cell_index >= mesh_cells)) {
-      fprintf(stderr, "bb->cell_index = %d\n", bb->cell_index);
-      exit(1);
-    }
-#endif /* DEBUG */
-/*    printf("%d,", bb->cell_index); */
-    if (adjacent_list[bb->cell_index][i] != -1) {
-      tmp = mesh[adjacent_list[bb->cell_index][i]];
-      while (! null_bubble(tmp)) {
-       if (tmp != bb) {
-         dx = tmp->x - bb->x;
-         dy = tmp->y - bb->y;
-         separation2 = ulongsqrint(dx) + ulongsqrint(dy);
-         /* Add extra leeway so circles _never_ overlap */
-         touchdist2 = ulongsqrint(tmp->radius + bb->radius + 2);
-         if ((separation2 <= touchdist2) && (separation2 <
-                                             closest2)) {
-           rv = tmp;
-           closest2 = separation2;
-         }
-       }
-       tmp = tmp->next;
-      }
-    }
-  }
-
-  return rv;
-}
-
-#ifdef DEBUG
-static void
-ldr_barf (void)
-{
-}
-#endif /* DEBUG */
-
-static long
-long_div_round(long num, long dem)
-{
-  long divvie, moddo;
-
-#ifdef DEBUG
-  if ((num < 0) || (dem < 0)) {
-    fprintf(stderr, "long_div_round: %ld, %ld\n", num, dem);
-    ldr_barf();
-    exit(1);
-  }
-#endif /* DEBUG */
-
-  divvie = num / dem;
-  moddo = num % dem;
-  if (moddo > (dem / 2))
-    ++divvie;
-
-#ifdef DEBUG
-  if ((divvie < 0) || (moddo < 0)) {
-    fprintf(stderr, "long_div_round: %ld, %ld\n", divvie, moddo);
-    ldr_barf();
-    exit(1);
-  }
-#endif /* DEBUG */
-
-  return divvie;
-}
-
-static int
-weighted_mean(int n1, int n2, long w1, long w2)
-/* Mean of n1 and n2 respectively weighted by weights w1 and w2. */
-{
-#ifdef DEBUG
-  if ((w1 <= 0) || (w2 <= 0)) {
-    fprintf(stderr,
-           "Bad weights passed to weighted_mean() - (%d, %d, %ld, %ld)!\n",
-           n1, n2, w1, w2);
-    exit(1);
-  }
-#endif /* DEBUG */
-  return ((int)long_div_round((long)n1 * w1 + (long)n2 * w2,
-                           w1 + w2));
-}
-
-static int
-bubble_eat(Bubble *diner, Bubble *food)
-/* The diner eats the food.  Returns true (1) if the diner still exists */
-{ 
-  int i;
-  int newmi;
-
-#ifdef DEBUG
-  if ((null_bubble(diner)) || (null_bubble(food))) {
-    fprintf(stderr, "Bad bubbles passed to bubble_eat()!\n");
-    exit(1);
-  }
-#endif /* DEBUG */
-
-  /* We hide the diner even in the case that it doesn't grow so that
-     if the food overlaps its boundary it is replaced. This could
-     probably be solved by letting bubbles eat others which are close
-     but not quite touching.  It's probably worth it, too, since we
-     would then not have to redraw bubbles which don't change in
-     size. */
-
-  hide_bubble(diner);
-  hide_bubble(food);
-  diner->x = weighted_mean(diner->x, food->x, diner->area, food->area);
-  diner->y = weighted_mean(diner->y, food->y, diner->area, food->area);
-  newmi = pixel_to_mesh(diner->x, diner->y);
-  diner->area += food->area;
-  delete_bubble_in_mesh(food, DELETE_BUBBLE);
-
-  if ((simple) && (diner->area > bubble_areas[bubble_max_radius])) {
-    delete_bubble_in_mesh(diner, DELETE_BUBBLE);
-    return 0;
-  }
-#ifdef HAVE_XPM
-  if ((! simple) && (diner->area > 
-                    step_pixmaps[num_bubble_pixmaps]->area)) {
-    delete_bubble_in_mesh(diner, DELETE_BUBBLE);
-    return 0;
-  }
-#endif /* HAVE_XPM */
-
-  if (simple) {
-    if (diner->area > bubble_areas[diner->radius + 1]) {
-      /* Move the bubble to a new radius */
-      i = diner->radius;
-      while (diner->area > bubble_areas[i+1])
-       ++i;
-      diner->radius = i;
-    }
-    show_bubble(diner);
-#ifdef HAVE_XPM
-  } else {
-    if (diner->area > step_pixmaps[diner->step+1]->area) {
-      i = diner->step;
-      while (diner->area > step_pixmaps[i+1]->area)
-       ++i;
-      diner->step = i;
-      diner->radius = step_pixmaps[diner->step]->radius;
-    }
-    show_bubble(diner);
-#endif /* HAVE_XPM */
-  }
-
-  /* Now adjust locations and cells if need be */
-  if (newmi != diner->cell_index) {
-    delete_bubble_in_mesh(diner, KEEP_BUBBLE);
-    diner->cell_index = newmi;
-    add_to_mesh(diner);
-  }
-
-  return 1;
-}
-
-static int
-merge_bubbles(Bubble *b1, Bubble *b2)
-/* These two bubbles merge into one.  If the first one wins out return
-1 else return 2.  If there is no winner (it explodes) then return 0 */
-{
-  int b1size, b2size;
-
-  b1size = b1->area;
-  b2size = b2->area;
-
-#ifdef DEBUG
-  if ((null_bubble(b1) || null_bubble(b2))) {
-    fprintf(stderr, "NULL bubble passed to merge_bubbles()!\n");
-    exit(1);
-  }
-#endif /* DEBUG */
-
-  if (b1 == b2) {
-    hide_bubble(b1);
-    delete_bubble_in_mesh(b1, DELETE_BUBBLE);
-    return 0;
-  }
-
-  if (b1size > b2size) {
-    switch (bubble_eat(b1, b2)) {
-    case 0:
-      return 0;
-      break;
-    case 1:
-      return 1;
-      break;
-    default:
-      break;
-    }
-  } else if (b1size < b2size) {
-    switch (bubble_eat(b2, b1)) {
-    case 0:
-      return 0;
-      break;
-    case 1:
-      return 2;
-      break;
-    default:
-      break;
-    }
-  } else {
-    if ((random() % 2) == 0) {
-      switch (bubble_eat(b1, b2)) {
-      case 0:
-       return 0;
-       break;
-      case 1:
-       return 1;
-       break;
-      default:
-       break;
-      }
-    } else {
-      switch (bubble_eat(b2, b1)) {
-      case 0:
-       return 0;
-       break;
-      case 1:
-       return 2;
-       break;
-      default:
-       break;
-      }
-    }
-  }
-  fprintf(stderr, "An error occurred in merge_bubbles()\n");
-  exit(1);
-}
-
-static void 
-insert_new_bubble(Bubble *tmp)
-/* Calculates which bubbles are eaten when a new bubble tmp is
-   inserted.  This is called recursively in case when a bubble grows
-   it eats others.  Careful to pick out disappearing bubbles. */
-{
-  Bubble *nextbub;
-  Bubble *touch;
-
-#ifdef DEBUG
-  if (null_bubble(tmp)) {
-    fprintf(stderr, "Bad bubble passed to insert_new_bubble()!\n");
-    exit(1);
-  }
-#endif /* DEBUG */
-  
-  nextbub = tmp;
-  touch = get_closest_bubble(nextbub);
-  while (! null_bubble(touch)) {
-    switch (merge_bubbles(nextbub, touch)) {
-    case 2:
-      /* touch ate nextbub and survived */
-      nextbub = touch;
-      break;
-    case 1:
-      /* nextbub ate touch and survived */
-      break;
-    case 0:
-      /* somebody ate someone else but they exploded */
-      nextbub = (Bubble *)NULL;
-      break;
-    default:
-      /* something went wrong */
-      fprintf(stderr, "Error occurred in insert_new_bubble()\n");
-      exit(1);
-    }
-    /* Check to see if there are any other bubbles still in the area
-       and if we need to do this all over again for them. */
-    if (! null_bubble(nextbub))
-      touch = get_closest_bubble(nextbub);
-    else
-      touch = (Bubble *)NULL;
-  }
-}
-
-#ifdef DEBUG
-static int
-get_length_of_bubble_list(Bubble *bb)
-{
-  Bubble *tmp = bb;
-  int rv = 0;
-
-  while (! null_bubble(tmp)) {
-    rv++;
-    tmp = tmp->next;
-  }
-
-  return rv;
-}
-#endif /* DEBUG */
-
-/*
- * Pixmap stuff used regardless of whether file I/O is available.  Must
- * still check for XPM, though!
- */
-
-#ifdef HAVE_XPM
-
-/*
- * Pixmaps without file I/O (but do have XPM)
- */
-
-static void 
-pixmap_sort(Bubble_Step **head, int numelems)
-/* Couldn't get qsort to work right with this so I wrote my own.  This puts
-the numelems length array with first element at head into order of radius.
-*/
-{
-  Bubble_Step tmp;
-  Bubble_Step *least = 0;
-  int minradius = INT_MAX;
-  int i;
-
-  for (i = 0; i < numelems; i++) {
-    if (head[i]->radius < minradius) {
-      least = head[i];
-      minradius = head[i]->radius;
-    }
-  }
-  if (*head != least) {
-    memcpy(&tmp, least, sizeof(Bubble_Step));
-    memcpy(least, *head, sizeof(Bubble_Step));
-    memcpy(*head, &tmp, sizeof(Bubble_Step));
-  }
-
-  if (numelems > 2)
-    pixmap_sort(&head[1], numelems-1);
-}
-
-static int
-extrapolate(int i1, int i2)
-{
-  return (i2 + (i2 - i1));
-}
-
-static void 
-make_pixmap_array(Bubble_Step *list)
-/* From a linked list of bubbles construct the array step_pixmaps */
-{
-  Bubble_Step *tmp = list;
-  int ind;
-#ifdef DEBUG
-  int prevrad = -1;
-#endif
-  
-  if (list == (Bubble_Step *)NULL) {
-    fprintf(stderr, "NULL list passed to make_pixmap_array\n");
-    exit(1);
-  }
-
-  num_bubble_pixmaps = 1;
-  while(tmp->next != (Bubble_Step *)NULL) {
-    tmp = tmp->next;
-    ++num_bubble_pixmaps;
-  }
-
-  if (num_bubble_pixmaps < 2) {
-    fprintf(stderr, "Must be at least two bubbles in file\n");
-    exit(1);
-  }
-
-  step_pixmaps = (Bubble_Step **)xmalloc((num_bubble_pixmaps + 1) * 
-                                        sizeof(Bubble_Step *));
-
-  /* Copy them blindly into the array for sorting. */
-  ind = 0;
-  tmp = list;
-  do {
-    step_pixmaps[ind++] = tmp;
-    tmp = tmp->next;
-  } while(tmp != (Bubble_Step *)NULL);
-
-  /* We make another bubble beyond the ones with pixmaps so that the final
-     bubble hangs around and doesn't pop immediately.  It's radius and area
-     are found by extrapolating from the largest two bubbles with pixmaps. */
-
-  step_pixmaps[num_bubble_pixmaps] = 
-    (Bubble_Step *)xmalloc(sizeof(Bubble_Step));
-  step_pixmaps[num_bubble_pixmaps]->radius = INT_MAX;
-
-  pixmap_sort(step_pixmaps, (num_bubble_pixmaps + 1));
-
-#ifdef DEBUG
-  if (step_pixmaps[num_bubble_pixmaps]->radius != INT_MAX) {
-    fprintf(stderr, "pixmap_sort() screwed up make_pixmap_array\n");
-  }
-#endif /* DEBUG */
-
-  step_pixmaps[num_bubble_pixmaps]->radius = 
-    extrapolate(step_pixmaps[num_bubble_pixmaps-2]->radius,
-               step_pixmaps[num_bubble_pixmaps-1]->radius);
-  step_pixmaps[num_bubble_pixmaps]->area = 
-    calc_bubble_area(step_pixmaps[num_bubble_pixmaps]->radius);
-  
-
-#ifdef DEBUG
-  /* Now check for correct order */
-  for (ind = 0; ind < num_bubble_pixmaps; ind++) {
-    if (prevrad > 0) {
-      if (step_pixmaps[ind]->radius < prevrad) {
-       fprintf(stderr, "Pixmaps not in ascending order of radius\n");
-       exit(1);
-      }
-    }
-    prevrad = step_pixmaps[ind]->radius;
-  }
-#endif /* DEBUG */
-}
-
-static void
-make_pixmap_from_default(char **pixmap_data, Bubble_Step *bl)
-/* Read pixmap data which has been compiled into the program and a pointer
- to which has been passed. 
-
- This is virtually copied verbatim from make_pixmap_from_file() above and
-changes made to either should be propagated onwards! */
-{
-  int result;
-  XGCValues gcv;
-
-#ifdef DEBUG
-  if (pixmap_data == (char **)0) {
-    fprintf(stderr, "make_pixmap_from_default(): NULL passed\n");
-    exit(1);
-  }
-#endif
-
-  if (bl == (Bubble_Step *)NULL) {
-    fprintf(stderr, "NULL pointer passed to make_pixmap()\n");
-    exit(1);
-  }
-
-  bl->xpmattrs.valuemask = 0;
-
-#ifdef XpmCloseness
-  bl->xpmattrs.valuemask |= XpmCloseness;
-  bl->xpmattrs.closeness = 40000;
-#endif
-#ifdef XpmVisual
-  bl->xpmattrs.valuemask |= XpmVisual;
-  bl->xpmattrs.visual = defvisual;
-#endif
-#ifdef XpmDepth
-  bl->xpmattrs.valuemask |= XpmDepth;
-  bl->xpmattrs.depth = screen_depth;
-#endif
-#ifdef XpmColormap
-  bl->xpmattrs.valuemask |= XpmColormap;
-  bl->xpmattrs.colormap = defcmap;
-#endif
-
-
-  /* This is the only line which is different from make_pixmap_from_file() */
-  result = XpmCreatePixmapFromData(defdsp, defwin, pixmap_data, &bl->ball, 
-                                  &bl->shape_mask, &bl->xpmattrs);
-
-  switch(result) {
-  case XpmColorError:
-    fprintf(stderr, "xpm: color substitution performed\n");
-    /* fall through */
-  case XpmSuccess:
-    bl->radius = MAX(bl->xpmattrs.width, bl->xpmattrs.height) / 2;
-    bl->area = calc_bubble_area(bl->radius);
-    break;
-  case XpmColorFailed:
-    fprintf(stderr, "xpm: color allocation failed\n");
-    exit(1);
-  case XpmNoMemory:
-    fprintf(stderr, "xpm: out of memory\n");
-    exit(1);
-  default:
-    fprintf(stderr, "xpm: unknown error code %d\n", result);
-    exit(1);
-  }
-  
-  gcv.plane_mask = AllPlanes;
-  gcv.foreground = default_fg_pixel;
-  gcv.function = GXcopy;
-  bl->draw_gc = XCreateGC (defdsp, defwin, GCForeground, &gcv);
-  XSetClipMask(defdsp, bl->draw_gc, bl->shape_mask);
-  
-  gcv.foreground = default_bg_pixel;
-  gcv.function = GXcopy;
-  bl->erase_gc = XCreateGC (defdsp, defwin, GCForeground, &gcv);
-  XSetClipMask(defdsp, bl->erase_gc, bl->shape_mask);  
-}
-
-static void 
-default_to_pixmaps (void)
-/* Make pixmaps out of default ball data stored in bubbles_default.c */
-{
-  int i;
-  Bubble_Step *pixmap_list = (Bubble_Step *)NULL;
-  Bubble_Step *newpix, *tmppix;
-  char **pixpt;
-
-  init_default_bubbles();
-
-  for (i = 0; i < num_default_bubbles; i++) {
-    pixpt = default_bubbles[i];
-    newpix = (Bubble_Step *)xmalloc(sizeof(Bubble_Step));
-    make_pixmap_from_default(pixpt, newpix);
-    /* Now add to list */
-    if (pixmap_list == (Bubble_Step *)NULL) {
-      pixmap_list = newpix;
-    } else {
-      tmppix = pixmap_list;
-      while (tmppix->next != (Bubble_Step *)NULL)
-       tmppix = tmppix->next;
-      tmppix->next = newpix;
-    }
-    newpix->next = (Bubble_Step *)NULL;
-  }
-  
-  /* Finally construct step_pixmaps[] */
-  make_pixmap_array(pixmap_list);
-}
-
-#endif /* HAVE_XPM */
-
-
-/* 
- * Main stuff 
- */
-
-
-static void 
-get_resources(Display *dpy, Window window)
-/* Get the appropriate X resources and warn about any inconsistencies. */
-{
-  Bool nodelay;
-  XWindowAttributes xgwa;
-  Colormap cmap;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-
-  threed = get_boolean_resource("3D", "Boolean");
-  quiet = get_boolean_resource("quiet", "Boolean");
-  simple = get_boolean_resource("simple", "Boolean");
-  /* Forbid rendered bubbles on monochrome displays */
-  if ((mono_p) && (! simple)) {
-    if (! quiet)
-      fprintf(stderr,
-             "Rendered bubbles not supported on monochrome displays\n");
-    simple = True;
-  }
-  delay = get_integer_resource("delay", "Integer");
-  nodelay = get_boolean_resource("nodelay", "Boolean");
-  if (nodelay)
-    delay = 0;
-  if (delay < 0)
-    delay = 0;
-
-  default_fg_pixel = get_pixel_resource ("foreground", "Foreground", dpy,
-                                        cmap);
-  default_bg_pixel = get_pixel_resource ("background", "Background", dpy,
-                                        cmap);
-
-  if (simple) {
-    /* This is easy */
-    broken = get_boolean_resource("broken", "Boolean");
-    if (broken)
-      if (! quiet)
-       fprintf(stderr, "-broken not available in simple mode\n");
-  } else {
-#ifndef HAVE_XPM
-    simple = 1;
-#else
-    broken = get_boolean_resource("broken", "Boolean");
-#endif /* HAVE_XPM */
-  }
-}
-
-static void
-init_bubbles (Display *dpy, Window window)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  int i;
-
-  defdsp = dpy;
-  defwin = window;
-
-  get_resources(dpy, window);
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-#ifdef DEBUG
-  printf("sizof(int) on this platform is %d\n", sizeof(int));
-  printf("sizof(long) on this platform is %d\n", sizeof(long));
-#endif /* DEBUG */
-
-  screen_width = xgwa.width;
-  screen_height = xgwa.height;
-  screen_depth = xgwa.depth;
-  defcmap = xgwa.colormap;
-  defvisual = xgwa.visual;
-
-  if (simple) {
-    /* These are pretty much plucked out of the air */
-    bubble_min_radius = (int)(0.006*(double)(MIN(screen_width, 
-                                                screen_height)));
-    bubble_max_radius = (int)(0.045*(double)(MIN(screen_width,
-                                                screen_height)));
-    /* Some trivial values */
-    if (bubble_min_radius < 1)
-      bubble_min_radius = 1;
-    if (bubble_max_radius <= bubble_min_radius)
-      bubble_max_radius = bubble_min_radius + 1;
-
-    mesh_length = (2 * bubble_max_radius) + 3;
-
-    /* store area of each bubble of certain radius as number of 1/10s of
-       a pixel area.  PI is defined in <math.h> */
-    bubble_areas = (long *)xmalloc((bubble_max_radius + 2) * sizeof(int));
-    for (i = 0; i < bubble_min_radius; i++)
-      bubble_areas[i] = 0;
-    for (i = bubble_min_radius; i <= (bubble_max_radius+1); i++)
-      bubble_areas[i] = calc_bubble_area(i);
-
-    mesh_length = (2 * bubble_max_radius) + 3;
-  } else {
-#ifndef HAVE_XPM
-    fprintf(stderr,
-           "Bug: simple mode code not set but HAVE_XPM not defined\n");
-    exit(1);
-#else
-    /* Make sure all #ifdef sort of things have been taken care of in
-       get_resources(). */
-    default_to_pixmaps();
-
-    /* Set mesh length */
-    mesh_length = (2 * step_pixmaps[num_bubble_pixmaps-1]->radius) + 3;
-#endif /* HAVE_XPM */
-
-    /* Am I missing something in here??? */
-  }
-
-  mesh_width = (screen_width / mesh_length) + 1;
-  mesh_height = (screen_height / mesh_length) + 1;
-  mesh_cells = mesh_width * mesh_height;
-  init_mesh();
-
-  calculate_adjacent_list();
-
-  adjust_areas();
-
-  /* Graphics contexts for simple mode */
-  if (simple) {
-    gcv.foreground = default_fg_pixel;
-    draw_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-    gcv.foreground = default_bg_pixel;
-    erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  }
-
-  XClearWindow (dpy, window);
-}
-
-static void 
-bubbles (Display *dpy, Window window)
-{
-  Bubble *tmp;
-
-  tmp = new_bubble();
-  add_to_mesh(tmp);
-  insert_new_bubble(tmp);
-
-  XSync (dpy, False);
-}
-
-
-void 
-screenhack (Display *dpy, Window window)
-{
-  init_bubbles (dpy, window);
-  while (1) {
-    bubbles (dpy, window);
-    screenhack_handle_events (dpy);
-    if (delay)
-      usleep(delay);
-  }
-}
-
diff --git a/hacks/bubbles.h b/hacks/bubbles.h
deleted file mode 100644 (file)
index 89935f4..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-/* bubbles.h - definitions for bubbles screensaver */
-
-/* $Id: bubbles.h,v 1.2 1997/05/19 03:26:05 jwz Exp $ */
-
-#ifndef _BUBBLES_H_
-#define _BUBBLES_H_
-
-#ifdef HAVE_XPM
-#include <X11/xpm.h>
-#endif
-
-/***************************************************************************
- *   Options you might like to change to affect the program's behaviour    *
- ***************************************************************************/
-
-/*
- *   Uncommenting the following will enable support for reading bubbles from 
- * files (using the -file and -directory options to bubbles).  This is
- * disabled by default since such operations are inherently non-portable
- * and we want the program to compile on as many systems as possible.  
- *
- *   If you uncomment this and you figure out how to get it working, please
- * let me (J.Macnicol@student.anu.edu.au) know.  Diffs against the standard
- * distribution would be appreciated.  Possible sources of problems are
- * dirent and possibly the use of tmpnam().
- */
-
-/* #define BUBBLES_IO */
-
-/*
- *   The following only makes sense if BUBBLES_IO above is defined.
- * 
- *   Uncomment the following if you always want to use the -file or
- * -directory options on the command line and never to use a default bubble
- * compiled into the program.  This way you would save memory and disk space
- * since if you do use -file or -directory only one bubble will be loaded
- * into memory at any one time (and remember the default bubble is really
- * uncompressed, unlike bubbles in files which can be compressed).  This
- * is disabled by default only so people running the program for the first
- * time with no knowldege of the command line options don't get error
- * messages ;)
- *
- * NOTE: You will still need to have a bubbles_default.c file, else the
- * build sequence will fail.  Well constructed bubbles_default.c files
- * have #ifdef's which simply exclude everything else in the file at
- * compile time.  The bubblestodefault script does this.
- */
-
-/* #define NO_DEFAULT_BUBBLE */
-
-/*
- * This turns on any debugging messages and sanity checks.  Hopefully you
- * won't need this :)  It slows things down a bit, too.
- *
- * NOTE: If you uncomment this you will get some messages about unused
- * functions when you compile.  You can ignore these - they refer to 
- * convenient checking routines which simply aren't called but are left
- * in case someone wants to use them.
- */
-
-/* #define DEBUG */
-
-/***************************************************************************
- *      Things you might need to change to get things working right        *
- ***************************************************************************/
-
-/*
- *  Name of the gzip binary.  You shouldn't need to change this unless it's
- * not in your PATH when the program is run, in which case you will need to
- * substitute the full path here.  Keep the double quotes else things won't
- * compile!
- */
-
-#define GZIP               "gzip"
-
-/*
- *  Likewise for the Bourne shell.
- */
-
-#define BOURNESH           "sh"
-
-/*
- * The name of the directory entry structure is different under Linux
- * (under which this code is being developed) than other systems.  The case
- * alternate form here is that given in Kernighan & Ritchie's C book (which
- * must be authoratitive, no?) 
- *
- * 04/07/96 : People will have to hack this to get it working on some
- * systems.  I believe it doesn't work on SGI, for example.
- */
-
-#ifdef _POSIX_SOURCE
-#define STRUCT_DIRENT      struct dirent
-#else
-#define STRUCT_DIRENT      Dirent
-#endif
-
-/* 
- * The naming of fields in struct dirent also seems to differ from system to
- * system.  This may have to be extended to make things truly portable.
- * What we want here is the name field from a dirent struct pointed to
- * by "dp". 
- *
- * 04/07/96 : See above.  This may need to be changed too.
- */
-
-#ifdef _POSIX_SOURCE
-#define DIRENT_NAME       dp->d_name
-#else
-#define DIRENT_NAME       dp->name
-#endif
-
-/* I don't know why this isn't defined. */
-#ifdef linux
-/* apparently it is defined in recent linuxes.  who knows. */
-/*extern char *tempnam(char *, char *);*/
-#endif
-
-/****************************************************************************
- *      Buffer lengths and things you probably won't need to touch          *
- ****************************************************************************/
-
-/* Maximum length of a full path name we can deal with */
-#define PATH_BUF_SIZE      1024
-
-/* Size of string passed to shell as command */
-#define COMMAND_BUF_SIZE   2500
-
-/* Size increments for read_line() buffers */
-#define READ_LINE_BUF_SIZE 24
-
-/****************************************************************************
- *                        End of options                                    *
- ****************************************************************************/
-
-/* Some machines define M_PI and not PI.  If they don't define either, use
-own own.  Really, the accuracy of this is _not_ very important. */
-#ifndef PI
-# define PI  M_PI
-# ifndef M_PI
-#  define M_PI 3.1415926535
-# endif
-#endif
-
-/* for delete_bubble_in_mesh() */
-#define DELETE_BUBBLE      0
-#define KEEP_BUBBLE        1
-
-/* Status codes for read_line */
-#define LINE_READ          0
-#define EOF_REACHED        1
-#define IO_ERROR           2
-
-/* 
- * Magic number for Bubble struct, in case it's trashed when debugging code
- * (which happened to me often.... :(  
- */
-
-#define BUBBLE_MAGIC       5674
-
-/* Useful macros */
-#define MAX(A, B) ((A) > (B) ? (A) : (B))
-#define MIN(A, B) ((A) < (B) ? (A) : (B))
-
-/* How we represent bubbles */
-struct bub {
-  int radius;
-  int step;  /* for rendered bubbles */
-  long area;
-  int x;
-  int y;
-  int magic;
-  int cell_index;
-  int visible;
-  struct bub *next;
-  struct bub *prev;
-};
-
-typedef struct bub Bubble;
-
-/*
- * How we represent pixmaps of rendered bubbles.  Because the range of radii
- * available may not be continuous, we call each a step (for the lack of a
- * better name...)
- */
-
-#ifdef HAVE_XPM
-struct bub_step {
-  int radius;
-  long area;
-  Pixmap ball, shape_mask;
-  GC draw_gc, erase_gc;
-  XpmAttributes xpmattrs;
-  struct bub_step *next;
-};
-
-typedef struct bub_step Bubble_Step;
-#endif /* HAVE_XPM */
-
-/* Make sure default bubble isn't compiled when we don't have XPM
-Disable file I/O code too. */
-#ifndef HAVE_XPM
-# define NO_DEFAULT_BUBBLE
-# undef BUBBLES_IO
-#endif /* HAVE_XPM */
-
-/* Make sure default bubble is compiled in when we have XPM and no file I/O */
-#ifdef HAVE_XPM
-# ifndef BUBBLES_IO
-#  undef NO_DEFAULT_BUBBLE
-# endif /* BUBBLES_IO */
-#endif /* HAVE_XPM */
-
-#endif /* _BUBBLES_H_ */
diff --git a/hacks/bubbles.man b/hacks/bubbles.man
deleted file mode 100644 (file)
index c9016e6..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-.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 "14-Dec-95" "X Version 11"
-.SH NAME
-bubbles - frying pan / soft drink simulation
-.SH SYNOPSIS
-.B bubbles
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-simple] [\-broken] [\-3D] [\-file filename] [\-directory directoryname]
-.SH DESCRIPTION
-\fIBubbles\fP sprays lots of little random bubbles all over the window which
-then grow until they reach their maximum size and go pop.  The inspiration
-for this was watching little globules of oil on the bottom of a frying pan
-and it also looks a little like bubbles in fizzy soft drink.  The default
-mode uses fancy ray-traced bubbles but there is also a mode which just draws 
-circles in case the default mode is too taxing on your hardware.
-.SH OPTIONS
-Depending on how your
-.I bubbles
-was compiled, it accepts the following options:
-.TP 8
-.B \-foreground
-Colour of circles if \fI\-simple\fP mode is selected.
-.TP 8
-.B \-background
-Colour of window background.
-.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 microseconds
-How much of a delay should be introduced between steps of the animation.
-Default 1, or about 1 microsecond.  Actually, this is the delay between each
-group of 15 new bubbles since such a delay between each step results in a
-very slow animation rate.
-.TP 8
-.B \-nodelay
-Same as \fI\-delay 0\fP.
-.TP 8
-.B \-simple
-Don't use the default fancy pixmap bubbles.  Just draw circles instead.
-This may give more bearable performance if your hardware wasn't made for
-this sort of thing.
-.TP 8
-.B \-broken
-Don't hide bubbles when they pop.  This was a bug during development
-but the results were actually quite attractive.  (This option is only
-available if you have the XPM library available and the imake generated
-Makefile has defined HAVE_XPM).
-.TP 8
-.B \-3D
-Normally, the simulation is done completely in two dimensions.  When a
-bubble swallows up another bubble, the areas of each are added to get
-the area of the resulting bubble.  This option changes the algorithm
-to instead add volume (imagining each to be a sphere in 3D space).  The
-whole thing looks more realistic but I find it attracts attention to
-the flickering of each bubble as they are move and are redrawn.  Your
-mileage may vary.
-.TP 8
-.B \-file filename
-Use the pixmap definitions in the given file, instead of the default (if
-one is compiled in).  This is ignored if \fI\-simple\fP is specified.  If
-the file is compressed (either with compress or gzip), it is decompressed
-before use.  (This option only works if you have XPM compiled into your
-binary and you have compiled with BUBBLES_IO set in bubbles.h.  This is
-\fBnot\fP the default).
-.TP 8
-.B \-directory directoryname
-Similar to \fI-file\fP except the file is taken randomly from the
-contents of the specified directory.  (Again, this option is only available
-if you have XPM and BUBBLES_IO was set when compiling.  See above).
-.TP 8
-.B \-quiet
-Don't print messages explaining why one or several command line options
-were ignored.  This is disabled by default.
-.SH NOTES
-If you find the pace of things too slow, remember that there is a delay
-even though you specify no \fI\-delay\fP option.  Try using \fI\-nodelay\fP
-although beware of the effects of irritation of other users if you're on a 
-shared system as you bleed their CPU time away.
-
-Some tools to assist in creation of new bubbles are included in the source
-distribution.  These can either be loaded with the \fI\-file\fP or
-\fI\-directory\fP options (if available) or they can be used in place
-of the distributed default bubble (bubble_default.c).
-You might like to copy these scripts to a permanent location and
-use them.  Read bubbles.README.
-
-Rendered bubbles are not supported on monochrome displays.  I'm not
-convinced that small bubbles, even dithered properly are going to look
-like anything more than a jumble of random dots.
-.SH BUGS
-There is a delay before something appears on the screen when using
-rendered bubbles.  The XPM library seems to take a \fBlong\fP time to make
-pixmaps out of raw data.  This can be irritating on slower systems.
-
-The movement of the bubbles looks jerky if an incomplete set of bubbles
-is used.  
-
-The hide/display algorithm could do with some work to avoid flickering
-when \fI\-nodelay\fP is set.
-.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 DISTRIBUTION POLICY
-This work is Copyright \(co 1995, 1996 by James Macnicol.  Distribution is
-allowed under the terms of the GNU General Public License.  Look at the
-sources for the legalese.
-.SH AUTHOR
-James Macnicol <J.Macnicol@student.anu.edu.au>.  
diff --git a/hacks/compass.c b/hacks/compass.c
deleted file mode 100644 (file)
index 56a1b0a..0000000
+++ /dev/null
@@ -1,935 +0,0 @@
-/* xscreensaver, Copyright (c) 1999 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 <math.h>
-#include "screenhack.h"
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-# include "xdbe.h"
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-#define countof(x) (sizeof(x)/sizeof(*(x)))
-#define ABS(x) ((x)<0?-(x):(x))
-#define MAX(x,y) ((x)<(y)?(y):(x))
-#define MIN(x,y) ((x)>(y)?(y):(x))
-#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n))))
-#define RANDSIGN() ((random() & 1) ? 1 : -1)
-
-struct disc {
-  int theta;           /* 0 - 360*64 */
-  int velocity;
-  int acceleration;
-  int limit;
-  GC gc;
-  void (*draw) (Display *, Drawable, struct disc *,
-                int x, int y, int radius);
-};
-
-
-static void
-draw_letters (Display *dpy, Drawable d, struct disc *disc,
-              int x, int y, int radius)
-{
-  XPoint points[50];
-  double th2 = 2 * M_PI * (disc->theta / ((double) 360*64));
-  double th;
-
-  /* W */
-
-  th = th2;
-
-  points[0].x = x + radius * 0.8 * cos(th - 0.07);
-  points[0].y = y + radius * 0.8 * sin(th - 0.07);
-
-  points[1].x = x + radius * 0.7 * cos(th - 0.05);
-  points[1].y = y + radius * 0.7 * sin(th - 0.05);
-
-  points[2].x = x + radius * 0.78 * cos(th);
-  points[2].y = y + radius * 0.78 * sin(th);
-
-  points[3].x = x + radius * 0.7 * cos(th + 0.05);
-  points[3].y = y + radius * 0.7 * sin(th + 0.05);
-
-  points[4].x = x + radius * 0.8 * cos(th + 0.07);
-  points[4].y = y + radius * 0.8 * sin(th + 0.07);
-
-  XDrawLines (dpy, d, disc->gc, points, 5, CoordModeOrigin);
-
-  /* 30 (1) */
-
-  th = th2 + (2 * M_PI * 0.08333);
-
-  points[0].x = x + radius * 0.78 * cos(th - 0.13);
-  points[0].y = y + radius * 0.78 * sin(th - 0.13);
-
-  points[1].x = x + radius * 0.8  * cos(th - 0.08);
-  points[1].y = y + radius * 0.8  * sin(th - 0.08);
-
-  points[2].x = x + radius * 0.78 * cos(th - 0.03);
-  points[2].y = y + radius * 0.78 * sin(th - 0.03);
-
-  points[3].x = x + radius * 0.76 * cos(th - 0.03);
-  points[3].y = y + radius * 0.76 * sin(th - 0.03);
-
-  points[4].x = x + radius * 0.75 * cos(th - 0.08);
-  points[4].y = y + radius * 0.75 * sin(th - 0.08);
-
-  points[5].x = x + radius * 0.74 * cos(th - 0.03);
-  points[5].y = y + radius * 0.74 * sin(th - 0.03);
-
-  points[6].x = x + radius * 0.72 * cos(th - 0.03);
-  points[6].y = y + radius * 0.72 * sin(th - 0.03);
-
-  points[7].x = x + radius * 0.7  * cos(th - 0.08);
-  points[7].y = y + radius * 0.7  * sin(th - 0.08);
-
-  points[8].x = x + radius * 0.72  * cos(th - 0.13);
-  points[8].y = y + radius * 0.72  * sin(th - 0.13);
-
-  XDrawLines (dpy, d, disc->gc, points, 9, CoordModeOrigin);
-
-  /* 30 (2) */
-
-  points[0].x = x + radius * 0.78 * cos(th + 0.03);
-  points[0].y = y + radius * 0.78 * sin(th + 0.03);
-
-  points[1].x = x + radius * 0.8  * cos(th + 0.08);
-  points[1].y = y + radius * 0.8  * sin(th + 0.08);
-
-  points[2].x = x + radius * 0.78 * cos(th + 0.13);
-  points[2].y = y + radius * 0.78 * sin(th + 0.13);
-
-  points[3].x = x + radius * 0.72 * cos(th + 0.13);
-  points[3].y = y + radius * 0.72 * sin(th + 0.13);
-
-  points[4].x = x + radius * 0.7  * cos(th + 0.08);
-  points[4].y = y + radius * 0.7  * sin(th + 0.08);
-
-  points[5].x = x + radius * 0.72  * cos(th + 0.03);
-  points[5].y = y + radius * 0.72  * sin(th + 0.03);
-
-  points[6] = points[0];
-
-  XDrawLines (dpy, d, disc->gc, points, 7, CoordModeOrigin);
-
-  /* 33 (1) */
-
-  th = th2 + (2 * M_PI * 0.16666);
-
-  points[0].x = x + radius * 0.78 * cos(th - 0.13);
-  points[0].y = y + radius * 0.78 * sin(th - 0.13);
-
-  points[1].x = x + radius * 0.8  * cos(th - 0.08);
-  points[1].y = y + radius * 0.8  * sin(th - 0.08);
-
-  points[2].x = x + radius * 0.78 * cos(th - 0.03);
-  points[2].y = y + radius * 0.78 * sin(th - 0.03);
-
-  points[3].x = x + radius * 0.76 * cos(th - 0.03);
-  points[3].y = y + radius * 0.76 * sin(th - 0.03);
-
-  points[4].x = x + radius * 0.75 * cos(th - 0.08);
-  points[4].y = y + radius * 0.75 * sin(th - 0.08);
-
-  points[5].x = x + radius * 0.74 * cos(th - 0.03);
-  points[5].y = y + radius * 0.74 * sin(th - 0.03);
-
-  points[6].x = x + radius * 0.72 * cos(th - 0.03);
-  points[6].y = y + radius * 0.72 * sin(th - 0.03);
-
-  points[7].x = x + radius * 0.7  * cos(th - 0.08);
-  points[7].y = y + radius * 0.7  * sin(th - 0.08);
-
-  points[8].x = x + radius * 0.72  * cos(th - 0.13);
-  points[8].y = y + radius * 0.72  * sin(th - 0.13);
-
-  XDrawLines (dpy, d, disc->gc, points, 9, CoordModeOrigin);
-
-  /* 33 (2) */
-
-  points[0].x = x + radius * 0.78 * cos(th + 0.03);
-  points[0].y = y + radius * 0.78 * sin(th + 0.03);
-
-  points[1].x = x + radius * 0.8  * cos(th + 0.08);
-  points[1].y = y + radius * 0.8  * sin(th + 0.08);
-
-  points[2].x = x + radius * 0.78 * cos(th + 0.13);
-  points[2].y = y + radius * 0.78 * sin(th + 0.13);
-
-  points[3].x = x + radius * 0.76 * cos(th + 0.13);
-  points[3].y = y + radius * 0.76 * sin(th + 0.13);
-
-  points[4].x = x + radius * 0.75 * cos(th + 0.08);
-  points[4].y = y + radius * 0.75 * sin(th + 0.08);
-
-  points[5].x = x + radius * 0.74 * cos(th + 0.13);
-  points[5].y = y + radius * 0.74 * sin(th + 0.13);
-
-  points[6].x = x + radius * 0.72 * cos(th + 0.13);
-  points[6].y = y + radius * 0.72 * sin(th + 0.13);
-
-  points[7].x = x + radius * 0.7  * cos(th + 0.08);
-  points[7].y = y + radius * 0.7  * sin(th + 0.08);
-
-  points[8].x = x + radius * 0.72  * cos(th + 0.03);
-  points[8].y = y + radius * 0.72  * sin(th + 0.03);
-
-  XDrawLines (dpy, d, disc->gc, points, 9, CoordModeOrigin);
-
-  /* N */
-
-  th = th2 + (2 * M_PI * 0.25);
-
-  points[0].x = x + radius * 0.7 * cos(th - 0.05);
-  points[0].y = y + radius * 0.7 * sin(th - 0.05);
-
-  points[1].x = x + radius * 0.8 * cos(th - 0.05);
-  points[1].y = y + radius * 0.8 * sin(th - 0.05);
-
-  points[2].x = x + radius * 0.7 * cos(th + 0.05);
-  points[2].y = y + radius * 0.7 * sin(th + 0.05);
-
-  points[3].x = x + radius * 0.8 * cos(th + 0.05);
-  points[3].y = y + radius * 0.8 * sin(th + 0.05);
-
-  XDrawLines (dpy, d, disc->gc, points, 4, CoordModeOrigin);
-
-  /* 3 */
-
-  th = th2 + (2 * M_PI * 0.33333);
-
-  points[0].x = x + radius * 0.78 * cos(th - 0.05);
-  points[0].y = y + radius * 0.78 * sin(th - 0.05);
-
-  points[1].x = x + radius * 0.8  * cos(th);
-  points[1].y = y + radius * 0.8  * sin(th);
-
-  points[2].x = x + radius * 0.78 * cos(th + 0.05);
-  points[2].y = y + radius * 0.78 * sin(th + 0.05);
-
-  points[3].x = x + radius * 0.76 * cos(th + 0.05);
-  points[3].y = y + radius * 0.76 * sin(th + 0.05);
-
-  points[4].x = x + radius * 0.75 * cos(th);
-  points[4].y = y + radius * 0.75 * sin(th);
-
-  points[5].x = x + radius * 0.74 * cos(th + 0.05);
-  points[5].y = y + radius * 0.74 * sin(th + 0.05);
-
-  points[6].x = x + radius * 0.72 * cos(th + 0.05);
-  points[6].y = y + radius * 0.72 * sin(th + 0.05);
-
-  points[7].x = x + radius * 0.7  * cos(th);
-  points[7].y = y + radius * 0.7  * sin(th);
-
-  points[8].x = x + radius * 0.72  * cos(th - 0.05);
-  points[8].y = y + radius * 0.72  * sin(th - 0.05);
-
-  XDrawLines (dpy, d, disc->gc, points, 9, CoordModeOrigin);
-
-  /* 6 */
-
-  th = th2 + (2 * M_PI * 0.41666);
-
-  points[0].x = x + radius * 0.78 * cos(th + 0.05);
-  points[0].y = y + radius * 0.78 * sin(th + 0.05);
-
-  points[1].x = x + radius * 0.8  * cos(th);
-  points[1].y = y + radius * 0.8  * sin(th);
-
-  points[2].x = x + radius * 0.78 * cos(th - 0.05);
-  points[2].y = y + radius * 0.78 * sin(th - 0.05);
-
-  points[3].x = x + radius * 0.72 * cos(th - 0.05);
-  points[3].y = y + radius * 0.72 * sin(th - 0.05);
-
-  points[4].x = x + radius * 0.7  * cos(th);
-  points[4].y = y + radius * 0.7  * sin(th);
-
-  points[5].x = x + radius * 0.72 * cos(th + 0.05);
-  points[5].y = y + radius * 0.72 * sin(th + 0.05);
-
-  points[6].x = x + radius * 0.74 * cos(th + 0.05);
-  points[6].y = y + radius * 0.74 * sin(th + 0.05);
-
-  points[7].x = x + radius * 0.76 * cos(th);
-  points[7].y = y + radius * 0.76 * sin(th);
-
-  points[8].x = x + radius * 0.74 * cos(th - 0.05);
-  points[8].y = y + radius * 0.74 * sin(th - 0.05);
-
-  XDrawLines (dpy, d, disc->gc, points, 9, CoordModeOrigin);
-
-
-  /* E */
-
-  th = th2 + (2 * M_PI * 0.5);
-
-  points[0].x = x + radius * 0.8 * cos(th + 0.05);
-  points[0].y = y + radius * 0.8 * sin(th + 0.05);
-
-  points[1].x = x + radius * 0.8 * cos(th - 0.05);
-  points[1].y = y + radius * 0.8 * sin(th - 0.05);
-
-  points[2].x = x + radius * 0.75 * cos(th - 0.05);
-  points[2].y = y + radius * 0.75 * sin(th - 0.05);
-
-  points[3].x = x + radius * 0.75 * cos(th + 0.025);
-  points[3].y = y + radius * 0.75 * sin(th + 0.025);
-
-  points[4].x = x + radius * 0.75 * cos(th - 0.05);
-  points[4].y = y + radius * 0.75 * sin(th - 0.05);
-
-  points[5].x = x + radius * 0.7 * cos(th - 0.05);
-  points[5].y = y + radius * 0.7 * sin(th - 0.05);
-
-  points[6].x = x + radius * 0.7 * cos(th + 0.05);
-  points[6].y = y + radius * 0.7 * sin(th + 0.05);
-
-  XDrawLines (dpy, d, disc->gc, points, 7, CoordModeOrigin);
-
-  /* 12 (1) */
-
-  th = th2 + (2 * M_PI * 0.58333);
-
-  points[0].x = x + radius * 0.77 * cos(th - 0.06);
-  points[0].y = y + radius * 0.77 * sin(th - 0.06);
-
-  points[1].x = x + radius * 0.8  * cos(th - 0.03);
-  points[1].y = y + radius * 0.8  * sin(th - 0.03);
-
-  points[2].x = x + radius * 0.7  * cos(th - 0.03);
-  points[2].y = y + radius * 0.7  * sin(th - 0.03);
-
-  XDrawLines (dpy, d, disc->gc, points, 3, CoordModeOrigin);
-
-  /* 12 (2) */
-
-  points[0].x = x + radius * 0.78 * cos(th + 0.02);
-  points[0].y = y + radius * 0.78 * sin(th + 0.02);
-
-  points[1].x = x + radius * 0.8  * cos(th + 0.07);
-  points[1].y = y + radius * 0.8  * sin(th + 0.07);
-
-  points[2].x = x + radius * 0.78 * cos(th + 0.11);
-  points[2].y = y + radius * 0.78 * sin(th + 0.11);
-
-  points[3].x = x + radius * 0.76 * cos(th + 0.11);
-  points[3].y = y + radius * 0.76 * sin(th + 0.11);
-
-  points[4].x = x + radius * 0.74 * cos(th + 0.02);
-  points[4].y = y + radius * 0.74 * sin(th + 0.02);
-
-  points[5].x = x + radius * 0.71 * cos(th + 0.03);
-  points[5].y = y + radius * 0.71 * sin(th + 0.03);
-
-  points[6].x = x + radius * 0.7  * cos(th + 0.03);
-  points[6].y = y + radius * 0.7  * sin(th + 0.03);
-
-  points[7].x = x + radius * 0.7  * cos(th + 0.13);
-  points[7].y = y + radius * 0.7  * sin(th + 0.13);
-
-  XDrawLines (dpy, d, disc->gc, points, 8, CoordModeOrigin);
-
-  /* 15 (1) */
-
-  th = th2 + (2 * M_PI * 0.66666);
-
-  points[0].x = x + radius * 0.77 * cos(th - 0.06);
-  points[0].y = y + radius * 0.77 * sin(th - 0.06);
-
-  points[1].x = x + radius * 0.8  * cos(th - 0.03);
-  points[1].y = y + radius * 0.8  * sin(th - 0.03);
-
-  points[2].x = x + radius * 0.7  * cos(th - 0.03);
-  points[2].y = y + radius * 0.7  * sin(th - 0.03);
-
-  XDrawLines (dpy, d, disc->gc, points, 3, CoordModeOrigin);
-
-  /* 15 (2) */
-
-  points[0].x = x + radius * 0.8  * cos(th + 0.11);
-  points[0].y = y + radius * 0.8  * sin(th + 0.11);
-
-  points[1].x = x + radius * 0.8  * cos(th + 0.02);
-  points[1].y = y + radius * 0.8  * sin(th + 0.02);
-
-  points[2].x = x + radius * 0.76 * cos(th + 0.02);
-  points[2].y = y + radius * 0.76 * sin(th + 0.02);
-
-  points[3].x = x + radius * 0.77 * cos(th + 0.06);
-  points[3].y = y + radius * 0.77 * sin(th + 0.06);
-
-  points[4].x = x + radius * 0.76 * cos(th + 0.10);
-  points[4].y = y + radius * 0.76 * sin(th + 0.10);
-
-  points[5].x = x + radius * 0.73 * cos(th + 0.11);
-  points[5].y = y + radius * 0.73 * sin(th + 0.11);
-
-  points[6].x = x + radius * 0.72 * cos(th + 0.10);
-  points[6].y = y + radius * 0.72 * sin(th + 0.10);
-
-  points[7].x = x + radius * 0.7  * cos(th + 0.06);
-  points[7].y = y + radius * 0.7  * sin(th + 0.06);
-
-  points[8].x = x + radius * 0.72 * cos(th + 0.02);
-  points[8].y = y + radius * 0.72 * sin(th + 0.02);
-
-  XDrawLines (dpy, d, disc->gc, points, 9, CoordModeOrigin);
-
-  /* S */
-
-  th = th2 + (2 * M_PI * 0.75);
-
-  points[0].x = x + radius * 0.78 * cos(th + 0.05);
-  points[0].y = y + radius * 0.78 * sin(th + 0.05);
-
-  points[1].x = x + radius * 0.8  * cos(th);
-  points[1].y = y + radius * 0.8  * sin(th);
-
-  points[2].x = x + radius * 0.78 * cos(th - 0.05);
-  points[2].y = y + radius * 0.78 * sin(th - 0.05);
-
-  points[3].x = x + radius * 0.76 * cos(th - 0.05);
-  points[3].y = y + radius * 0.76 * sin(th - 0.05);
-
-  points[4].x = x + radius * 0.74 * cos(th + 0.05);
-  points[4].y = y + radius * 0.74 * sin(th + 0.05);
-
-  points[5].x = x + radius * 0.72 * cos(th + 0.05);
-  points[5].y = y + radius * 0.72 * sin(th + 0.05);
-
-  points[6].x = x + radius * 0.7  * cos(th);
-  points[6].y = y + radius * 0.7  * sin(th);
-
-  points[7].x = x + radius * 0.72  * cos(th - 0.05);
-  points[7].y = y + radius * 0.72  * sin(th - 0.05);
-
-  XDrawLines (dpy, d, disc->gc, points, 8, CoordModeOrigin);
-
-  /* 21 (1) */
-
-  th = th2 + (2 * M_PI * 0.83333);
-
-  points[0].x = x + radius * 0.78 * cos(th - 0.13);
-  points[0].y = y + radius * 0.78 * sin(th - 0.13);
-
-  points[1].x = x + radius * 0.8  * cos(th - 0.08);
-  points[1].y = y + radius * 0.8  * sin(th - 0.08);
-
-  points[2].x = x + radius * 0.78 * cos(th - 0.03);
-  points[2].y = y + radius * 0.78 * sin(th - 0.03);
-
-  points[3].x = x + radius * 0.76 * cos(th - 0.03);
-  points[3].y = y + radius * 0.76 * sin(th - 0.03);
-
-  points[4].x = x + radius * 0.74 * cos(th - 0.12);
-  points[4].y = y + radius * 0.74 * sin(th - 0.12);
-
-  points[5].x = x + radius * 0.71 * cos(th - 0.13);
-  points[5].y = y + radius * 0.71 * sin(th - 0.13);
-
-  points[6].x = x + radius * 0.7  * cos(th - 0.13);
-  points[6].y = y + radius * 0.7  * sin(th - 0.13);
-
-  points[7].x = x + radius * 0.7  * cos(th - 0.02);
-  points[7].y = y + radius * 0.7  * sin(th - 0.02);
-
-  XDrawLines (dpy, d, disc->gc, points, 8, CoordModeOrigin);
-
-  /* 21 (2) */
-
-  points[0].x = x + radius * 0.77 * cos(th + 0.03);
-  points[0].y = y + radius * 0.77 * sin(th + 0.03);
-
-  points[1].x = x + radius * 0.8  * cos(th + 0.06);
-  points[1].y = y + radius * 0.8  * sin(th + 0.06);
-
-  points[2].x = x + radius * 0.7  * cos(th + 0.06);
-  points[2].y = y + radius * 0.7  * sin(th + 0.06);
-
-  XDrawLines (dpy, d, disc->gc, points, 3, CoordModeOrigin);
-
-  /* 24 (1) */
-
-  th = th2 + (2 * M_PI * 0.91666);
-
-  points[0].x = x + radius * 0.78 * cos(th - 0.13);
-  points[0].y = y + radius * 0.78 * sin(th - 0.13);
-
-  points[1].x = x + radius * 0.8  * cos(th - 0.08);
-  points[1].y = y + radius * 0.8  * sin(th - 0.08);
-
-  points[2].x = x + radius * 0.78 * cos(th - 0.03);
-  points[2].y = y + radius * 0.78 * sin(th - 0.03);
-
-  points[3].x = x + radius * 0.76 * cos(th - 0.03);
-  points[3].y = y + radius * 0.76 * sin(th - 0.03);
-
-  points[4].x = x + radius * 0.74 * cos(th - 0.12);
-  points[4].y = y + radius * 0.74 * sin(th - 0.12);
-
-  points[5].x = x + radius * 0.71 * cos(th - 0.13);
-  points[5].y = y + radius * 0.71 * sin(th - 0.13);
-
-  points[6].x = x + radius * 0.7  * cos(th - 0.13);
-  points[6].y = y + radius * 0.7  * sin(th - 0.13);
-
-  points[7].x = x + radius * 0.7  * cos(th - 0.02);
-  points[7].y = y + radius * 0.7  * sin(th - 0.02);
-
-  XDrawLines (dpy, d, disc->gc, points, 8, CoordModeOrigin);
-
-  /* 24 (2) */
-
-  points[0].x = x + radius * 0.69 * cos(th + 0.09);
-  points[0].y = y + radius * 0.69 * sin(th + 0.09);
-
-  points[1].x = x + radius * 0.8  * cos(th + 0.09);
-  points[1].y = y + radius * 0.8  * sin(th + 0.09);
-
-  points[2].x = x + radius * 0.72 * cos(th + 0.01);
-  points[2].y = y + radius * 0.72 * sin(th + 0.01);
-
-  points[3].x = x + radius * 0.72 * cos(th + 0.13);
-  points[3].y = y + radius * 0.72 * sin(th + 0.13);
-
-  XDrawLines (dpy, d, disc->gc, points, 4, CoordModeOrigin);
-}
-
-
-static void
-draw_ticks (Display *dpy, Drawable d, struct disc *disc,
-            int x, int y, int radius)
-{
-  XSegment segs[72];
-  int i;
-  double tick = (M_PI * 2) / 72;
-
-  for (i = 0; i < 72; i++)
-    {
-      int radius2 = radius;
-      double th = (i * tick) + (2 * M_PI * (disc->theta / ((double) 360*64)));
-
-      if (i % 6)
-        radius2 -= radius / 16;
-      else
-        radius2 -= radius / 8;
-
-      segs[i].x1 = x + radius  * cos(th);
-      segs[i].y1 = y + radius  * sin(th);
-      segs[i].x2 = x + radius2 * cos(th);
-      segs[i].y2 = y + radius2 * sin(th);
-    }
-  XDrawSegments (dpy, d, disc->gc, segs, countof(segs));
-
-  draw_letters (dpy, d, disc, x, y, radius);
-}
-
-
-static void
-draw_thin_arrow (Display *dpy, Drawable d, struct disc *disc,
-                 int x, int y, int radius)
-{
-  XPoint points[3];
-  double th;
-  int radius2;
-  double tick = ((M_PI * 2) / 72) * 2;
-
-  radius *= 0.9;
-  radius2 = radius - (radius / 8) * 3;
-
-  th = 2 * M_PI * (disc->theta / ((double) 360*64));
-
-  points[0].x = x + radius * cos(th);          /* tip */
-  points[0].y = y + radius * sin(th);
-
-  points[1].x = x + radius2 * cos(th - tick);  /* tip left */
-  points[1].y = y + radius2 * sin(th - tick);
-
-  points[2].x = x + radius2 * cos(th + tick);  /* tip right */
-  points[2].y = y + radius2 * sin(th + tick);
-
-  XDrawLine (dpy, d, disc->gc,
-             (int) (x + radius2 * cos(th)),
-             (int) (y + radius2 * sin(th)),
-             (int) (x + -radius * cos(th)),
-             (int) (y + -radius * sin(th)));
-
-  XFillPolygon (dpy, d, disc->gc, points, 3, Convex, CoordModeOrigin);
-}
-
-
-static void
-draw_thick_arrow (Display *dpy, Drawable d, struct disc *disc,
-                  int x, int y, int radius)
-{
-  XPoint points[10];
-  double th;
-  int radius2, radius3;
-  double tick = ((M_PI * 2) / 72) * 2;
-
-  radius *= 0.9;
-  radius2 = radius - (radius / 8) * 3;
-  radius3 = radius - (radius / 8) * 2;
-  th = 2 * M_PI * (disc->theta / ((double) 360*64));
-
-  points[0].x = x + radius * cos(th);          /* tip */
-  points[0].y = y + radius * sin(th);
-
-  points[1].x = x + radius2 * cos(th - tick);  /* tip left */
-  points[1].y = y + radius2 * sin(th - tick);
-
-  points[2].x = x + radius2 * cos(th + tick);  /* tip right */
-  points[2].y = y + radius2 * sin(th + tick);
-
-  points[3] = points[0];
-
-  XDrawLines (dpy, d, disc->gc, points, 4, CoordModeOrigin);
-
-  points[0].x = x + radius2 * cos(th - tick/2);         /* top left */
-  points[0].y = y + radius2 * sin(th - tick/2);
-
-  points[1].x = x + -radius2 * cos(th + tick/2); /* bottom left */
-  points[1].y = y + -radius2 * sin(th + tick/2);
-
-  points[2].x = x + -radius3 * cos(th);                 /* bottom */
-  points[2].y = y + -radius3 * sin(th);
-
-  points[3].x = x + -radius * cos(th);          /* bottom spike */
-  points[3].y = y + -radius * sin(th);
-
-  points[4] = points[2];                        /* return */
-
-  points[5].x = x + -radius2 * cos(th - tick/2); /* bottom right */
-  points[5].y = y + -radius2 * sin(th - tick/2);
-
-  points[6].x = x + radius2 * cos(th + tick/2);  /* top right */
-  points[6].y = y + radius2 * sin(th + tick/2);
-
-  XDrawLines (dpy, d, disc->gc, points, 7, CoordModeOrigin);
-}
-
-
-
-static void
-roll_disc (struct disc *disc)
-{
-  double th = disc->theta;
-  if (th < 0)
-    th = -(th + disc->velocity);
-  else
-    th = (th + disc->velocity);
-
-  if (th > (360*64))
-    th -= (360*64);
-  else if (th < 0)
-    th += (360*64);
-
-  disc->theta = (disc->theta > 0 ? th : -th);
-
-  disc->velocity += disc->acceleration;
-
-  if (disc->velocity > disc->limit || 
-      disc->velocity < -disc->limit)
-    disc->acceleration = -disc->acceleration;
-
-  /* Alter direction of rotational acceleration randomly. */
-  if (! (random() % 120))
-    disc->acceleration = -disc->acceleration;
-
-  /* Change acceleration very occasionally. */
-  if (! (random() % 200))
-    {
-      if (random() & 1)
-       disc->acceleration *= 1.2;
-      else
-       disc->acceleration *= 0.8;
-    }
-}
-
-
-static void
-init_spin (struct disc *disc)
-{
-  disc->limit = 5*64;
-  disc->theta = RAND(360*64);
-  disc->velocity = RAND(16) * RANDSIGN();
-  disc->acceleration = RAND(16) * RANDSIGN();
-}
-
-
-static void
-draw_compass (Display *dpy, Drawable d, struct disc **discs,
-              int x, int y, int radius)
-{
-  int i = 0;
-  while (discs[i])
-    {
-      discs[i]->draw (dpy, d, discs[i], x, y, radius);
-      roll_disc (discs[i]);
-      i++;
-    }
-}
-
-static void
-draw_pointer (Display *dpy, Drawable d, GC ptr_gc, GC dot_gc,
-              int x, int y, int radius)
-{
-  XPoint points[3];
-  int size = radius * 0.1;
-
-  /* top */
-
-  points[0].x = x - size;
-  points[0].y = y - radius - size;
-
-  points[1].x = x + size;
-  points[1].y = y - radius - size;
-
-  points[2].x = x;
-  points[2].y = y - radius;
-  
-  XFillPolygon (dpy, d, ptr_gc, points, 3, Convex, CoordModeOrigin);
-
-  /* top right */
-
-  points[0].x = x - (radius * 0.85);
-  points[0].y = y - (radius * 0.8);
-
-  points[1].x = x - (radius * 1.1);
-  points[1].y = y - (radius * 0.55);
-
-  points[2].x = x - (radius * 0.6);
-  points[2].y = y - (radius * 0.65);
-  
-  XFillPolygon (dpy, d, ptr_gc, points, 3, Convex, CoordModeOrigin);
-
-  /* left */
-
-  points[0].x = x - (radius * 1.05);
-  points[0].y = y;
-
-  points[1].x = x - (radius * 1.1);
-  points[1].y = y - (radius * 0.025);
-
-  points[2].x = x - (radius * 1.1);
-  points[2].y = y + (radius * 0.025);
-  
-  XFillPolygon (dpy, d, dot_gc, points, 3, Convex, CoordModeOrigin);
-
-  /* right */
-
-  points[0].x = x + (radius * 1.05);
-  points[0].y = y;
-
-  points[1].x = x + (radius * 1.1);
-  points[1].y = y - (radius * 0.025);
-
-  points[2].x = x + (radius * 1.1);
-  points[2].y = y + (radius * 0.025);
-  
-  XFillPolygon (dpy, d, dot_gc, points, 3, Convex, CoordModeOrigin);
-
-  /* bottom */
-
-  points[0].x = x;
-  points[0].y = y + (radius * 1.05);
-
-  points[1].x = x - (radius * 0.025);
-  points[1].y = y + (radius * 1.1);
-
-  points[2].x = x + (radius * 0.025);
-  points[2].y = y + (radius * 1.1);
-  
-  XFillPolygon (dpy, d, dot_gc, points, 3, Convex, CoordModeOrigin);
-
-  /* bottom left */
-
-  points[0].x = x + (radius * 0.74);
-  points[0].y = y + (radius * 0.74);
-
-  points[1].x = x + (radius * 0.78);
-  points[1].y = y + (radius * 0.75);
-
-  points[2].x = x + (radius * 0.75);
-  points[2].y = y + (radius * 0.78);
-  
-  XFillPolygon (dpy, d, dot_gc, points, 3, Convex, CoordModeOrigin);
-
-  /* top left */
-
-  points[0].x = x + (radius * 0.74);
-  points[0].y = y - (radius * 0.74);
-
-  points[1].x = x + (radius * 0.78);
-  points[1].y = y - (radius * 0.75);
-
-  points[2].x = x + (radius * 0.75);
-  points[2].y = y - (radius * 0.78);
-  
-  XFillPolygon (dpy, d, dot_gc, points, 3, Convex, CoordModeOrigin);
-
-  /* bottom right */
-
-  points[0].x = x - (radius * 0.74);
-  points[0].y = y + (radius * 0.74);
-
-  points[1].x = x - (radius * 0.78);
-  points[1].y = y + (radius * 0.75);
-
-  points[2].x = x - (radius * 0.75);
-  points[2].y = y + (radius * 0.78);
-  
-  XFillPolygon (dpy, d, dot_gc, points, 3, Convex, CoordModeOrigin);
-}
-
-\f
-char *progclass = "Compass";
-
-char *defaults [] = {
-  ".background:                #000000",
-  ".foreground:                #DDFFFF",
-  "*arrow1Foreground:  #FFF66A",
-  "*arrow2Foreground:  #F7D64A",
-  "*pointerForeground: #FF0000",
-  "*delay:             10000",
-  "*doubleBuffer:      True",
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  "*useDBE:            True",
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-db",             ".doubleBuffer", XrmoptionNoArg,  "True" },
-  { "-no-db",          ".doubleBuffer", XrmoptionNoArg,  "False" },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  XGCValues gcv;
-  int delay = get_integer_resource ("delay", "Integer");
-  Bool dbuf = get_boolean_resource ("doubleBuffer", "Boolean");
-  struct disc *discs[4];
-  int x, y, size, size2;
-  GC ptr_gc;
-  GC erase_gc = 0;
-  XWindowAttributes xgwa;
-  Pixmap b=0, ba=0, bb=0;      /* double-buffer to reduce flicker */
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  XdbeBackBuffer backb = 0;
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  size2 = MIN(xgwa.width, xgwa.height);
-
-  if (size2 > 600) size2 = 600;
-
-  size = (size2 / 2) * 0.8;
-
-  x = xgwa.width/2;
-  y = xgwa.height/2;
-
-  if (dbuf)
-    {
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-      b = backb = xdbe_get_backbuffer (dpy, window, XdbeUndefined);
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-      if (!b)
-        {
-          x = size2/2;
-          y = size2/2;
-          ba = XCreatePixmap (dpy, window, size2, size2, xgwa.depth);
-          bb = XCreatePixmap (dpy, window, size2, size2, xgwa.depth);
-          b = ba;
-        }
-    }
-  else
-    {
-      b = window;
-    }
-
-  discs[0] = (struct disc *) calloc (1, sizeof (struct disc));
-  discs[1] = (struct disc *) calloc (1, sizeof (struct disc));
-  discs[2] = (struct disc *) calloc (1, sizeof (struct disc));
-  discs[3] = 0;
-
-  gcv.foreground = get_pixel_resource ("foreground", "Foreground",
-                                       dpy, xgwa.colormap);
-  gcv.line_width = MAX(2, (size/60));
-  gcv.join_style = JoinBevel;
-  discs[0]->draw = draw_ticks;
-  discs[0]->gc = XCreateGC (dpy, b, GCForeground|GCLineWidth|GCJoinStyle,
-                            &gcv);
-  init_spin (discs[0]);
-
-  gcv.foreground = get_pixel_resource ("arrow2Foreground", "Foreground",
-                                       dpy, xgwa.colormap);
-  gcv.line_width = MAX(4, (size / 30));
-  discs[1]->draw = draw_thick_arrow;
-  discs[1]->gc = XCreateGC (dpy, b, GCForeground|GCLineWidth, &gcv);
-  init_spin (discs[1]);
-
-  gcv.foreground = get_pixel_resource ("arrow1Foreground", "Foreground",
-                                       dpy, xgwa.colormap);
-  gcv.line_width = MAX(4, (size / 30));
-  discs[2]->draw = draw_thin_arrow;
-  discs[2]->gc = XCreateGC (dpy, b, GCForeground|GCLineWidth, &gcv);
-  init_spin (discs[2]);
-
-  gcv.foreground = get_pixel_resource ("pointerForeground", "Foreground",
-                                       dpy, xgwa.colormap);
-  ptr_gc = XCreateGC (dpy, b, GCForeground|GCLineWidth, &gcv);
-
-  gcv.foreground = get_pixel_resource ("background", "Background",
-                                       dpy, xgwa.colormap);
-  erase_gc = XCreateGC (dpy, b, GCForeground, &gcv);
-
-  if (ba) XFillRectangle (dpy, ba, erase_gc, 0, 0, size2, size2);
-  if (bb) XFillRectangle (dpy, bb, erase_gc, 0, 0, size2, size2);
-
-  while (1)
-    {
-      XFillRectangle (dpy, b, erase_gc, 0, 0, xgwa.width, xgwa.height);
-
-      draw_compass (dpy, b, discs, x, y, size);
-      draw_pointer (dpy, b, ptr_gc, discs[0]->gc, x, y, size);
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-      if (backb)
-        {
-          XdbeSwapInfo info[1];
-          info[0].swap_window = window;
-          info[0].swap_action = XdbeUndefined;
-          XdbeSwapBuffers (dpy, info, 1);
-        }
-      else
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-      if (dbuf)
-        {
-          XCopyArea (dpy, b, window, erase_gc, 0, 0,
-                     size2, size2,
-                     xgwa.width/2 - x,
-                     xgwa.height/2 - y);
-          b = (b == ba ? bb : ba);
-        }
-
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay)
-        usleep (delay);
-    }
-}
diff --git a/hacks/compile_axp.com b/hacks/compile_axp.com
deleted file mode 100644 (file)
index 13adf73..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ATTRACTION.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BLITSPIN.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BOUBOULE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BRAID.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BSOD.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES-DEFAULT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) COMPASS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CORAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CRITICAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CRYSTAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CYNOSURE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DECAYSCREEN.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DECO.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DELUXE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DEMON.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DISCRETE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DISTORT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DRIFT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) EPICYCLE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FADEPLOT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAG.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAME.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLOW.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FOREST.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GALAXY.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GOOP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GRAV.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GREYNETIC.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HALO.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HELIX.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HOPALONG.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HYPERCUBE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) IFS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) IMSMAP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) INTERFERENCE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) JIGSAW.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) JULIA.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) KALEIDESCOPE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) KUMPPA.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LASER.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LIGHTNING.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LISA.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LISSIE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LMORPH.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LOOP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MAZE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOUNTAIN.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MUNCH.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NOSEGUY.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PEDAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENETRATE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENROSE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PHOSPHOR.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PYRO.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) QIX.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) RD-BOMB.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ROCKS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) RORSCHACH.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ROTOR.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SCREENHACK.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SIERPINSKI.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SLIDESCREEN.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SLIP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SONAR.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SPHERE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SPIRAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SPOTLIGHT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SQUIRAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) STARFISH.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) STRANGE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SWIRL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) T3D.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) TRIANGLE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) TRUCHET.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) VINES.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) WANDER.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) WORM.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XFLAME.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XJACK.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XLOCKMORE.C
-$ 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]) 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,XLOCKMORE)/INCL=([],[-],[-.UTILS])/OBJ=SCREENHACK-XLOCK.OBJ SCREENHACK.C
diff --git a/hacks/compile_decc.com b/hacks/compile_decc.com
deleted file mode 100644 (file)
index 13adf73..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ATTRACTION.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BLITSPIN.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BOUBOULE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BRAID.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BSOD.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES-DEFAULT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) COMPASS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CORAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CRITICAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CRYSTAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CYNOSURE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DECAYSCREEN.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DECO.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DELUXE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DEMON.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DISCRETE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DISTORT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) DRIFT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) EPICYCLE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FADEPLOT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAG.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAME.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLOW.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FOREST.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GALAXY.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GOOP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GRAV.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GREYNETIC.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HALO.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HELIX.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HOPALONG.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HYPERCUBE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) IFS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) IMSMAP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) INTERFERENCE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) JIGSAW.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) JULIA.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) KALEIDESCOPE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) KUMPPA.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LASER.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LIGHTNING.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LISA.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LISSIE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LMORPH.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LOOP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MAZE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOUNTAIN.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MUNCH.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NOSEGUY.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PEDAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENETRATE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENROSE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PHOSPHOR.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PYRO.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) QIX.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) RD-BOMB.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ROCKS.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) RORSCHACH.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ROTOR.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SCREENHACK.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SIERPINSKI.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SLIDESCREEN.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SLIP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SONAR.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SPHERE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SPIRAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SPOTLIGHT.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SQUIRAL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) STARFISH.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) STRANGE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) SWIRL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) T3D.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) TRIANGLE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) TRUCHET.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) VINES.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) WANDER.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) WORM.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XFLAME.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XJACK.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) XLOCKMORE.C
-$ 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]) 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,XLOCKMORE)/INCL=([],[-],[-.UTILS])/OBJ=SCREENHACK-XLOCK.OBJ SCREENHACK.C
diff --git a/hacks/coral.c b/hacks/coral.c
deleted file mode 100644 (file)
index 7621d5e..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-/* coral, by "Frederick G.M. Roeber" <roeber@netscape.com>, 15-jul-97.
- *
- * 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"
-#include "colors.h"
-#include "erase.h"
-
-static GC draw_gc, erase_gc;
-static unsigned int default_fg_pixel;
-#define NCOLORSMAX 200
-static XColor colors[NCOLORSMAX];
-static int ncolors = 0;
-static int colorindex = 0;
-static int colorsloth;
-
-static XPoint *walkers = 0;
-static int nwalkers;
-static int width, widthb;
-static int height;
-
-static unsigned int *board = 0;
-#define getdot(x,y) (board[(y*widthb)+(x>>5)] &  (1<<(x & 31)))
-#define setdot(x,y) (board[(y*widthb)+(x>>5)] |= (1<<(x & 31)))
-
-
-static void
-init_coral(Display *dpy, Window window)
-{
-    XGCValues gcv;
-    Colormap cmap;
-    XWindowAttributes xgwa;
-    Bool writeable = False;
-    int seeds;
-    int density;
-    int i;
-
-    XClearWindow(dpy, window);
-    XGetWindowAttributes(dpy, window, &xgwa);
-    width = xgwa.width;
-    widthb = ((xgwa.width + 31) >> 5);
-    height = xgwa.height;
-    if (board) free(board);
-    board = (unsigned int *)calloc(widthb * xgwa.height, sizeof(unsigned int));
-    if(!board) exit(1);
-    cmap = xgwa.colormap;
-    if( ncolors ) {
-        free_colors(dpy, cmap, colors, ncolors);
-        ncolors = 0;
-    }
-    gcv.foreground = default_fg_pixel = get_pixel_resource("foreground", "Foreground", dpy, cmap);
-    draw_gc = XCreateGC(dpy, window, GCForeground, &gcv);
-    gcv.foreground = get_pixel_resource ("background", "Background",dpy, cmap);
-    erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-    ncolors = NCOLORSMAX;
-    make_uniform_colormap(dpy, xgwa.visual, cmap, colors, &ncolors, True, &writeable, False);
-    if (ncolors <= 0) {
-      ncolors = 2;
-      colors[0].red = colors[0].green = colors[0].blue = 0;
-      colors[1].red = colors[1].green = colors[1].blue = 0xFFFF;
-      XAllocColor(dpy, cmap, &colors[0]);
-      XAllocColor(dpy, cmap, &colors[1]);
-   }
-    colorindex = random()%ncolors;
-    
-    density = get_integer_resource("density", "Integer");
-    if( density < 1 ) density = 1;
-    if( density > 100 ) density = 90; /* more like mold than coral */
-    nwalkers = (width*height*density)/100;
-    if (walkers) free(walkers);
-    walkers = (XPoint *)calloc(nwalkers, sizeof(XPoint));
-    if( (XPoint *)0 == walkers ) exit(1);
-
-    seeds = get_integer_resource("seeds", "Integer");
-    if( seeds < 1 ) seeds = 1;
-    if( seeds > 1000 ) seeds = 1000;
-
-    colorsloth = nwalkers*2/ncolors;
-    XSetForeground(dpy, draw_gc, colors[colorindex].pixel);
-
-    for( i = 0; i < seeds; i++ ) {
-        int x, y;
-        do {
-            x = random() % width;
-            y = random() % height;
-        } while( getdot(x, y) );
-
-        setdot((x-1), (y-1)); setdot(x, (y-1)); setdot((x+1), (y-1));
-       setdot((x-1),  y   ); setdot(x,  y   ); setdot((x+1),  y   );
-       setdot((x-1), (y+1)); setdot(x, (y+1)); setdot((x+1), (y+1));
-        XDrawPoint(dpy, window, draw_gc, x, y);
-    }
-
-    for( i = 0; i < nwalkers; i++ ) {
-        walkers[i].x = (random() % (width-2)) + 1;
-        walkers[i].y = (random() % (height-2)) + 1;
-    }
-}
-
-
-/* returns 2 bits of randomness (conserving calls to random()).
-   This speeds things up a little, but not a lot (5-10% or so.)
- */
-static int 
-rand_2(void)
-{
-  static int i = 0;
-  static int r = 0;
-  if (i != 0) {
-    i--;
-  } else {
-    i = 15;
-    r = random();
-  }
-
-  {
-    register int j = (r & 3);
-    r = r >> 2;
-    return j;
-  }
-}
-
-
-static void
-coral(Display *dpy, Window window)
-{
-    int delay2 = get_integer_resource ("delay2", "Integer");
-
-    int max_points = 200;
-    int npoints = 0;
-    XPoint *pointbuf = (XPoint *) calloc(sizeof(XPoint), max_points+2);
-    if (!pointbuf) exit(-1);
-
-    while( 1 ) {
-        int i;
-
-        for( i = 0; i < nwalkers; i++ ) {
-            int x = walkers[i].x;
-            int y = walkers[i].y;
-
-            if( getdot(x, y) ) {
-
-               Bool flush = False;
-               Bool color = False;
-
-               /* XDrawPoint(dpy, window, draw_gc, x, y); */
-               pointbuf[npoints].x = x;
-               pointbuf[npoints].y = y;
-               npoints++;
-
-                /* Mark the surrounding area as "sticky" */
-                setdot((x-1), (y-1)); setdot(x, (y-1)); setdot((x+1), (y-1));
-               setdot((x-1),  y   );                   setdot((x+1),  y   );
-                setdot((x-1), (y+1)); setdot(x, (y+1)); setdot((x+1), (y+1));
-                nwalkers--;
-                walkers[i].x = walkers[nwalkers].x;
-                walkers[i].y = walkers[nwalkers].y;
-                if( 0 == (nwalkers%colorsloth) ) {
-                 color = True;
-                }
-                 
-               if (flush || color || 0 == nwalkers || npoints >= max_points) {
-                 XDrawPoints(dpy, window, draw_gc, pointbuf, npoints,
-                             CoordModeOrigin);
-                 npoints = 0;
-                 XSync(dpy, False);
-               }
-
-               if (color) {
-                    colorindex++;
-                    if( colorindex == ncolors )
-                        colorindex = 0;
-                    XSetForeground(dpy, draw_gc, colors[colorindex].pixel);
-                }
-
-                if( 0 == nwalkers ) {
-                    XSync(dpy, False);
-                   free(pointbuf);
-                    return;
-                }
-            } else {
-                /* move it a notch */
-                do {
-                    switch(rand_2()) {
-                    case 0:
-                        if( 1 == x ) continue;
-                        walkers[i].x--;
-                        break;
-                    case 1:
-                        if( width-2 == x ) continue;
-                        walkers[i].x++;
-                        break;
-                    case 2:
-                        if( 1 == y ) continue;
-                        walkers[i].y--;
-                        break;
-                    default: /* case 3: */
-                        if( height-2 == y ) continue;
-                        walkers[i].y++;
-                        break;
-                   /* default:
-                     abort(); */
-                    }
-                } while(0);
-            }
-        }
-
-       if (delay2 > 0) {
-         if (npoints > 0) {
-           XDrawPoints(dpy, window, draw_gc, pointbuf, npoints,
-                       CoordModeOrigin);
-           npoints = 0;
-           XSync(dpy, False);
-         }
-          screenhack_handle_events (dpy);
-         usleep(delay2);
-       }
-    }
-}
-
-char *progclass = "Coral";
-
-char *defaults[] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*density:   25",
-  "*seeds:     20", /* too many for 640x480, too few for 1280x1024 */
-  "*delay:     5",
-  "*delay2:    1000",
-  0
-};
-
-XrmOptionDescRec options[] = {
-    { "-density", ".density", XrmoptionSepArg, 0 },
-    { "-seeds", ".seeds", XrmoptionSepArg, 0 },
-    { "-delay", ".delay", XrmoptionSepArg, 0 },
-    { "-delay2", ".delay2", XrmoptionSepArg, 0 },
-    { 0, 0, 0, 0 }
-};
-
-void
-screenhack(dpy, window)
-Display *dpy;
-Window window;
-{
-    int delay = get_integer_resource ("delay", "Integer");
-    while( 1 ) {
-        init_coral(dpy, window);
-        coral(dpy, window);
-        screenhack_handle_events (dpy);
-        if( delay ) sleep(delay);
-       erase_full_window(dpy, window);
-    }
-}
diff --git a/hacks/critical.c b/hacks/critical.c
deleted file mode 100644 (file)
index 17abf8f..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/* critical -- Self-organizing-criticality display hack for XScreenSaver
- * Copyright (C) 1998, 1999 Martin Pool <mbp@humbug.org.au>
- *
- * 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.
- *
- * See `critical.man' for more information.
- *
- * Revision history:
- * 13 Nov 1998: Initial version, Martin Pool <mbp@humbug.org.au>
- */
-
-#include "screenhack.h"
-#include "erase.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-char *progclass = "Critical";
-
-
-typedef struct {
-  int width, height;           /* in cells */
-  unsigned short *cells;
-} CriticalModel;
-
-
-CriticalModel * model_allocate (int w, int h);
-void model_initialize (CriticalModel *model);
-static void model_step (CriticalModel *model, int *top_x, int *top_y);
-
-
-/* Options this module understands.  */
-XrmOptionDescRec options[] = {
-  { "-ncolors",                ".ncolors",     XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-colorscheme",    ".colorscheme", XrmoptionSepArg, 0 },
-  { "-restart",                ".restart",     XrmoptionSepArg, 0 },
-  { "-cellsize",       ".cellsize",    XrmoptionSepArg, 0 },
-  { "-batchcount",     ".batchcount",  XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }               /* end */
-};
-
-
-/* Default xrm resources. */
-char *defaults[] = {
-  ".background:                        black",
-  "*colorscheme:               smooth",
-  "*delay:                     10000", 
-  "*ncolors:                   64",
-  "*restart:                   8",
-  "*cellsize:                  9",
-  "*batchcount:                        1500",
-  0                            /* end */
-};
-
-
-/* Allocate an return a new simulation model datastructure.
- */
-
-CriticalModel *
-model_allocate (int model_w, int model_h)
-{
-  CriticalModel                *model;
-
-  model = malloc (sizeof (CriticalModel));
-  if (!model)
-    return 0;
-
-  model->width = model_w;
-  model->height = model_h;
-
-  model->cells = malloc (sizeof (int) * model_w * model_h);
-  if (!model->cells)
-    return 0;
-
-  return model;
-}
-
-
-
-/* Initialize the data model underlying the hack.
-
-   For the self-organizing criticality hack, this consists of a 2d
-   array full of random integers.
-
-   I've considered storing the data as (say) a binary tree within a 2d
-   array, to make finding the highest value faster at the expense of
-   storage space: searching the whole array on each iteration seems a
-   little inefficient.  However, the screensaver doesn't seem to take
-   up many cycles as it is: presumably the search is pretty quick
-   compared to the sleeps.  The current version uses less than 1% of
-   the CPU time of an AMD K6-233.  Many machines running X11 at this
-   point in time seem to be memory-limited, not CPU-limited.
-
-   The root of all evil, and all that.
-*/
-
-
-void
-model_initialize (CriticalModel *model)
-{
-  int i;
-  
-  for (i = model->width * model->height; i >= 0; i--)
-    {
-      model->cells[i] = (unsigned short) random ();
-    }
-}
-
-
-/* Move one step forward in the criticality simulation.
-
-   This function locates and returns in (TOP_X, TOP_Y) the location of
-   the highest-valued cell in the model.  It also replaces that cell
-   and it's eight nearest neighbours with new random values.
-   Neighbours that fall off the edge of the model are simply
-   ignored. */
-static void
-model_step (CriticalModel *model, int *top_x, int *top_y)
-{
-  int                  x, y, i;
-  int                  dx, dy;
-  unsigned short       top_value;
-
-  /* Find the top cell */
-  top_value = 0;
-  i = 0;
-  for (y = 0; y < model->height; y++)
-    for (x = 0; x < model->width; x++)
-      {
-       if (model->cells[i] >= top_value)
-         {
-           top_value = model->cells[i];
-           *top_x = x;
-           *top_y = y;
-         }
-       i++;
-      }
-
-  /* Replace it and its neighbours with new random values */
-  for (dy = -1; dy <= 1; dy++)
-    {
-      int y = *top_y + dy;
-      if (y < 0  ||  y >= model->height)
-       continue;
-      
-      for (dx = -1; dx <= 1; dx++)
-       {
-         int x = *top_x + dx;
-         if (x < 0  ||  x >= model->width)
-           continue;
-         
-         model->cells[y * model->width + x] = (unsigned short) random();
-       }
-    }
-}
-
-
-/* Construct and return in COLORS and N_COLORS a new set of colors,
-   depending on the resource settings.  */
-void
-setup_colormap (Display *dpy, XWindowAttributes *wattr,
-               XColor **colors,
-               int *n_colors)
-{
-  Bool                 writable;
-  char const *         color_scheme;
-
-  /* Make a colormap */
-  *n_colors = get_integer_resource ("ncolors", "Integer");
-  if (*n_colors < 2)
-    *n_colors = 2;
-  
-  *colors = (XColor *) calloc (sizeof(XColor), *n_colors);
-  if (!*colors)
-    {
-      fprintf (stderr, "%s:%d: can't allocate memory for colors\n",
-              __FILE__, __LINE__);
-      return;
-    }
-
-  writable = False;
-  color_scheme = get_string_resource ("colorscheme", "ColorScheme");
-  
-  if (!strcmp (color_scheme, "random"))
-    {
-      make_random_colormap (dpy, wattr->visual,
-                           wattr->colormap,
-                           *colors, n_colors,
-                           True, True, &writable, True);
-    }
-  else if (!strcmp (color_scheme, "smooth"))
-    {
-      make_smooth_colormap (dpy, wattr->visual,
-                           wattr->colormap,
-                           *colors, n_colors,
-                           True, &writable, True);
-    }
-  else 
-    {
-      make_uniform_colormap (dpy, wattr->visual,
-                            wattr->colormap,
-                            *colors, n_colors, True,
-                            &writable, True);
-    }
-}
-
-
-
-/* Display a self-organizing criticality screen hack.  The program
-   runs indefinately on the root window. */
-void
-screenhack (Display *dpy, Window window)
-{
-  GC                   fgc, bgc;
-  XGCValues            gcv;
-  XWindowAttributes    wattr;
-  int                  n_colors;
-  XColor               *colors;
-  int                  model_w, model_h;
-  CriticalModel                *model;
-  int                  lines_per_color = 10;
-  int                  i_color = 0;
-  int                  x1, y1, x2, y2;
-  long                 delay_usecs;
-  int                  cell_size;
-  int                  batchcount;
-
-  /* Number of screens that should be drawn before reinitializing the
-     model, and count of the number of screens done so far. */
-  int                  n_restart, i_restart;
-
-  /* Find window attributes */
-  XGetWindowAttributes (dpy, window, &wattr);
-
-  /* Construct the initial model state. */
-  cell_size = get_integer_resource ("cellsize", "Integer");
-  if (cell_size < 1)
-    cell_size = 1;
-  if (cell_size >= 100)
-    cell_size = 99;
-
-  batchcount = get_integer_resource ("batchcount", "Integer");
-  if (batchcount < 5)
-    batchcount = 5;
-  
-  model_w = wattr.width / cell_size;
-  model_h = wattr.height  / cell_size;
-  
-  model = model_allocate (model_w, model_h);
-  if (!model)
-    {
-      fprintf (stderr, "critical: error preparing the model\n");
-      return;
-    }
-  
-  /* make a black gc for the background */
-  gcv.foreground = get_pixel_resource ("background", "Background",
-                                      dpy, wattr.colormap);
-  bgc = XCreateGC (dpy, window, GCForeground, &gcv);
-
-  fgc = XCreateGC (dpy, window, 0, &gcv);
-
-  x2 = rand() % model_w;
-  y2 = rand() % model_h;
-
-  delay_usecs = get_integer_resource ("delay", "Integer");
-  n_restart = get_integer_resource ("restart", "Integer");
-    
-  /* xscreensaver will kill or stop us when the user does something
-   * that deserves attention. */
-  i_restart = 0;
-  
-  while (1) {
-    int i_batch;
-
-    if (!i_restart)
-      {
-       setup_colormap (dpy, &wattr, &colors, &n_colors);
-       model_initialize (model);
-      }
-    
-    for (i_batch = batchcount; i_batch; i_batch--)
-      {
-       /* Set color */
-       if ((i_batch % lines_per_color) == 0)
-         {
-           i_color = (i_color + 1) % n_colors;
-           gcv.foreground = colors[i_color].pixel;
-           XChangeGC (dpy, fgc, GCForeground, &gcv);
-         }
-       
-      /* draw a line */
-      x1 = x2;
-      y1 = y2;
-
-      model_step (model, &x2, &y2);
-
-      XDrawLine (dpy, window, fgc,
-                x1 * cell_size + cell_size/2,
-                y1 * cell_size + cell_size/2,
-                x2 * cell_size + cell_size/2,
-                y2 * cell_size + cell_size/2);
-
-      XSync (dpy, False); 
-      screenhack_handle_events (dpy);
-
-      if (delay_usecs)
-        usleep (delay_usecs);
-    }
-
-    i_restart = (i_restart + 1) % n_restart;
-    erase_full_window (dpy, window);
-  }
-}
-
-
-/*
- * Local variables:
- * c-indent-mode: gnu
- * compile-command "make critical && ./critical"
- * End:
- */
diff --git a/hacks/critical.man b/hacks/critical.man
deleted file mode 100644 (file)
index 21eec6a..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-.TH XScreenSaver 1 "13-Nov-98" "X Version 11"
-.SH NAME
-critical - Draw a system showing self-organizing criticality
-.SH SYNOPSIS
-.B critical
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-random \fIboolean\fP] [\-ncolors \fIint\fP] [\-offset \fIint\fP] 
-.SH DESCRIPTION
-The \fIcritical\fP program displays a self-organizing critical system
-that gradually emerges from chaos.
-
-\fIcritical\fP performs a simulation on a two-dimensional array of
-integers.  The array is initialized to random values.  On each
-iteration, it draws a line to the array position with the greatest
-value.  It then replaces that location and the eight neighboring
-locations with randomly-selected values.
-
-The lines are initially random, but over time a chaotic
-self-organizing system evolves: areas of the screen which happen to
-have lower values are less likely to be updated to new values, and so
-the line tends to avoid those areas.  Eventually, the histogram of
-changes approaches the power-law curve typical of such systems.
-
-The simplest documented self-organizing system is the one-dimensional
-equivalent of \fIcritical\fP.
-
-I heard about this algorithm second-hand: apparently there was an
-article in \fIScientific American\fP describing it sometime in 1997.
-.SH OPTIONS
-.I critical
-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 \fIusecs\fP
-Number of microseconds to wait after drawing each line.
-.TP 8
-.B \-random \fIboolean\fP
-Whether to use randomly selected colours rather than a cycle around
-the colour wheel.
-.TP 8
-.B \-offset \fIinteger\fP
-The maximum random radius increment to use.
-.TP 8
-.B \-ncolors \fIinteger\fP
-How many colors should be allocated in the color ramp (note that this
-value interacts with \fIoffset\fP.)
-.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)
-.BR xscreensaver-command (1)
-.BR xscreensaver-demo (1)
-.SH COPYRIGHT
-Copyright \(co 1998 by Martin Pool.
-
-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
-Martin Pool <mbp@humbug.org.au>, 13-Nov-1998.  Based in part on the
-XScreenSaver code by Jamie Zawinski <jwz@jwz.org>.
diff --git a/hacks/crystal.c b/hacks/crystal.c
deleted file mode 100644 (file)
index 7041e5c..0000000
+++ /dev/null
@@ -1,1256 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* crystal --- polygons moving according to plane group rules */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)crystal.c    4.12 98/09/10 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1997 by Jouk Jansen <joukj@crys.chem.uva.nl>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The author should like to be notified if changes have been made to the
- * routine.  Response will only be guaranteed when a VMS version of the 
- * program is available.
- *
- * A moving polygon-mode. The polygons obey 2D-planegroup symmetry.
- *
- * The groupings of the cells fall in 3 categories:
- *   oblique groups 1 and 2 where the angle gamma ranges from 60 to 120 degrees
- *   square groups 3 through 11 where the angle gamma is 90 degrees
- *   hexagonal groups 12 through 17 where the angle gamma is 120 degrees
- *
- * Revision History:
- * 03-Dec-98: Random inversion of y-axis included to simulate hexagonal groups
- *             with an angle of 60 degrees.
- * 10-Sep-98: new colour scheme
- * 24-Feb-98: added option centre which turns on/off forcing the centre of
- *              the screen to be used
- *            added option maxsize which forces the dimensions to be chasen
- *              in such ua way that the largest possible part of the screen is
- *              used 
- *            When only one unit cell is drawn, it is chosen at random
- * 18-Feb-98: added support for negative numbers with -nx and -ny meaning
- *            "random" choice with given maximum
- *            added +/-grid option. If -cell is specified this option
- *            determines if one or all unit cells are drawn.
- *            -batchcount is now a parameter for all the objects on the screen
- *            instead of the number of "unique" objects
- *            The maximum size of the objects now scales with the part
- *            of the screen used.
- *            fixed "size" problem. Now very small non-vissable objects
- *            are not allowed
- * 13-Feb-98: randomized the unit cell size
- *            runtime options -/+cell (turn on/off unit cell drawing)
- *             -nx num (number of translational symmetries in x-direction
- *             -ny num (idem y-direction but ignored for square and
- *               hexagonal space groups
- *               i.e. try xlock -mode crystal -nx 3 -ny 2
- *            Fullrandom overrules the -/+cell option.
- * 05-Feb-98: Revision + bug repairs
- *            shows unit cell
- *            use part of the screen for unit cell
- *            in hexagonal and square groups a&b axis forced to be equal
- *            cell angle for oblique groups randomly chosen between 60 and 120
- *   bugs solved: planegroups with cell angles <> 90.0 now work properly
- * 19-Sep-97: Added remaining hexagonal groups
- * 12-Jun-97: Created
- */
-
-#ifdef STANDALONE
-# define PROGCLASS             "Crystal"
-# define HACK_INIT             init_crystal
-# define HACK_DRAW             draw_crystal
-# define crystal_opts  xlockmore_opts
-# define DEFAULTS              "*delay:                60000   \n" \
-                                                "*count:                -500   \n" \
-                                                "*cycles:                200   \n" \
-                                                "*size:                  -15   \n" \
-                                                "*ncolors:               100   \n" \
-                                                "*fullrandom:   True   \n" \
-                                                "*verbose:             False   \n"
-# include "xlockmore.h"                /* in xscreensaver distribution */
-#else /* STANDALONE */
-# include "xlock.h"                    /* in xlockmore distribution */
-# include "color.h"
-#endif /* STANDALONE */
-
-#define DEF_CELL "True"                /* Draw unit cell */
-#define DEF_GRID "False"       /* Draw unit all cell if DEF_CELL is True */
-#define DEF_NX "-3"            /* number of unit cells in x-direction */
-#define DEF_NX1 1              /* number of unit cells in x-direction */
-#define DEF_NY "-3"            /* number of unit cells in y-direction */
-#define DEF_NY1 1              /* number of unit cells in y-direction */
-#define DEF_CENTRE "False"
-#define DEF_MAXSIZE "False"
-#define DEF_CYCLE "True"
-
-#define min(a,b) ((a) <= (b) ? (a) : (b))
-
-#ifdef STANDALONE
-void release_crystal(ModeInfo * mi);
-#endif
-
-static int  nx, ny;
-
-static Bool unit_cell, grid_cell, centre, maxsize, cycle_p;
-
-static XrmOptionDescRec opts[] =
-{
-       {"-nx", "crystal.nx", XrmoptionSepArg, (caddr_t) NULL},
-       {"-ny", "crystal.ny", XrmoptionSepArg, (caddr_t) NULL},
-       {"-centre", ".crystal.centre", XrmoptionNoArg, (caddr_t) "on"},
-       {"+centre", ".crystal.centre", XrmoptionNoArg, (caddr_t) "off"},
-       {"-maxsize", ".crystal.maxsize", XrmoptionNoArg, (caddr_t) "on"},
-       {"+maxsize", ".crystal.maxsize", XrmoptionNoArg, (caddr_t) "off"},
-       {"-cell", ".crystal.cell", XrmoptionNoArg, (caddr_t) "on"},
-       {"+cell", ".crystal.cell", XrmoptionNoArg, (caddr_t) "off"},
-       {"-grid", ".crystal.grid", XrmoptionNoArg, (caddr_t) "on"},
-       {"+grid", ".crystal.grid", XrmoptionNoArg, (caddr_t) "off"},
-       {"-shift", ".crystal.shift", XrmoptionNoArg, (caddr_t) "on"},
-       {"+shift", ".crystal.shift", XrmoptionNoArg, (caddr_t) "off"}
-};
-
-static argtype vars[] =
-{
-       {(caddr_t *) & nx, "nx", "nx", DEF_NX, t_Int},
-       {(caddr_t *) & ny, "ny", "ny", DEF_NY, t_Int},
-       {(caddr_t *) & centre, "centre", "Centre", DEF_CENTRE, t_Bool},
-       {(caddr_t *) & maxsize, "maxsize", "Maxsize", DEF_MAXSIZE, t_Bool},
-       {(caddr_t *) & unit_cell, "cell", "Cell", DEF_CELL, t_Bool},
-       {(caddr_t *) & grid_cell, "grid", "Grid", DEF_GRID, t_Bool},
-       {(caddr_t *) & cycle_p, "shift", "Shift", DEF_CYCLE, t_Bool}
-};
-static OptionStruct desc[] =
-{
-       {"-nx num", "Number of unit cells in x-direction"},
-       {"-ny num", "Number of unit cells in y-direction"},
-       {"-/+centre", "turn on/off centering on screen"},
-       {"-/+maxsize", "turn on/off use of maximum part of screen"},
-       {"-/+cell", "turn on/off drawing of unit cell"},
-   {"-/+grid", "turn on/off drawing of grid of unit cells (if -cell is on)"},
-       {"-/+shift", "turn on/off colour cycling"}
-};
-
-ModeSpecOpt crystal_opts =
-{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   crystal_description =
-{"crystal", "init_crystal", "draw_crystal", "release_crystal",
- "refresh_crystal", "init_crystal", NULL, &crystal_opts,
- 60000, -40, 200, -15, 64, 1.0, "",
- "Shows polygons in 2D plane groups", 0, NULL};
-
-#endif
-
-#define DEF_NUM_ATOM 10
-
-#define DEF_SIZ_ATOM 10
-
-#define PI_RAD (M_PI / 180.0)
-
-static Bool centro[17] =
-{
-       False,
-       True,
-       False,
-       False,
-       False,
-       True,
-       True,
-       True,
-       True,
-       True,
-       True,
-       True,
-       False,
-       False,
-       False,
-       True,
-       True
-};
-
-static Bool primitive[17] =
-{
-       True,
-       True,
-       True,
-       True,
-       False,
-       True,
-       True,
-       True,
-       False,
-       True,
-       True,
-       True,
-       True,
-       True,
-       True,
-       True,
-       True
-};
-
-static short numops[34] =
-{
-       1, 0,
-       1, 0,
-       9, 7,
-       2, 0,
-       9, 7,
-       9, 7,
-       4, 2,
-       5, 3,
-       9, 7,
-       8, 6,
-       10, 6,
-       8, 4,
-       16, 13,
-       19, 13,
-       16, 10,
-       19, 13,
-       19, 13
-};
-
-static short operation[114] =
-{
-       1, 0, 0, 1, 0, 0,
-       -1, 0, 0, 1, 0, 1,
-       -1, 0, 0, 1, 1, 0,
-       1, 0, 0, 1, 0, 0,
-       -1, 0, 0, 1, 1, 1,
-       1, 0, 0, 1, 1, 1,
-       0, -1, 1, 0, 0, 0,
-       1, 0, 0, 1, 0, 0,
-       -1, 0, 0, 1, 0, 0,
-       0, 1, 1, 0, 0, 0,
-       -1, 0, -1, 1, 0, 0,
-       1, -1, 0, -1, 0, 0,
-       0, 1, 1, 0, 0, 0,
-       0, -1, 1, -1, 0, 0,
-       -1, 1, -1, 0, 0, 0,
-       1, 0, 0, 1, 0, 0,
-       0, -1, -1, 0, 0, 0,
-       -1, 1, 0, 1, 0, 0,
-       1, 0, 1, -1, 0, 0
-};
-
-typedef struct {
-       unsigned long colour;
-       int         x0, y0, velocity[2];
-       float       angle, velocity_a;
-       int         num_point, at_type, size_at;
-       XPoint      xy[5];
-} crystalatom;
-
-typedef struct {
-       Bool        painted;
-       int         win_width, win_height, num_atom;
-       int         planegroup, a, b, offset_w, offset_h, nx, ny;
-       float       gamma;
-       crystalatom *atom;
-       GC          gc;
-       Bool        unit_cell, grid_cell;
-       Colormap    cmap;
-       XColor     *colors;
-       int         ncolors;
-       Bool        cycle_p, mono_p, no_colors;
-       unsigned long blackpixel, whitepixel, fg, bg;
-       int         direction, invert;
-} crystalstruct;
-
-static crystalstruct *crystals = NULL;
-
-static void
-trans_coor(XPoint * xyp, XPoint * new_xyp, int num_points,
-          float gamma)
-{
-       int         i;
-
-       for (i = 0; i <= num_points; i++) {
-               new_xyp[i].x = xyp[i].x +
-                       (int) (xyp[i].y * sin((gamma - 90.0) * PI_RAD));
-               new_xyp[i].y = (int) (xyp[i].y / cos((gamma - 90.0) * PI_RAD));
-       }
-}
-
-static void
-trans_coor_back(XPoint * xyp, XPoint * new_xyp,
-               int num_points, float gamma, int offset_w, int offset_h ,
-               int winheight , int invert )
-{
-       int         i;
-
-       for (i = 0; i <= num_points; i++) {
-               new_xyp[i].y = (int) (xyp[i].y * cos((gamma - 90) * PI_RAD)) +
-                       offset_h;
-               new_xyp[i].x = xyp[i].x - (int) (xyp[i].y * sin((gamma - 90.0)
-                                                      * PI_RAD)) + offset_w;
-          if ( invert ) new_xyp[i].y = winheight - new_xyp[i].y;
-       }
-}
-
-static void
-crystal_setupatom(crystalatom * atom0, float gamma)
-{
-       XPoint      xy[5];
-       int         x0, y0;
-
-       y0 = (int) (atom0->y0 * cos((gamma - 90) * PI_RAD));
-       x0 = atom0->x0 - (int) (atom0->y0 * sin((gamma - 90.0) * PI_RAD));
-       switch (atom0->at_type) {
-               case 0: /* rectangles */
-                       xy[0].x = x0 + (int) (2 * atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (atom0->size_at * sin(atom0->angle));
-                       xy[0].y = y0 + (int) (atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (2 * atom0->size_at * sin(atom0->angle));
-                       xy[1].x = x0 + (int) (2 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (atom0->size_at * sin(atom0->angle));
-                       xy[1].y = y0 - (int) (atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (2 * atom0->size_at * sin(atom0->angle));
-                       xy[2].x = x0 - (int) (2 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (atom0->size_at * sin(atom0->angle));
-                       xy[2].y = y0 - (int) (atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (2 * atom0->size_at * sin(atom0->angle));
-                       xy[3].x = x0 - (int) (2 * atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (atom0->size_at * sin(atom0->angle));
-                       xy[3].y = y0 + (int) (atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (2 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[4].x = xy[0].x;
-                       xy[4].y = xy[0].y;
-                       trans_coor(xy, atom0->xy, 4, gamma);
-                       return;
-               case 1: /* squares */
-                       xy[0].x = x0 + (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[0].y = y0 + (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[1].x = x0 + (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[1].y = y0 - (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[2].x = x0 - (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[2].y = y0 - (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[3].x = x0 - (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[3].y = y0 + (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[4].x = xy[0].x;
-                       xy[4].y = xy[0].y;
-                       trans_coor(xy, atom0->xy, 4, gamma);
-                       return;
-               case 2: /* triangles */
-                       xy[0].x = x0 + (int) (1.5 * atom0->size_at *
-                                             sin(atom0->angle));
-                       xy[0].y = y0 + (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle));
-                       xy[1].x = x0 + (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[1].y = y0 - (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[2].x = x0 - (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) -
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[2].y = y0 - (int) (1.5 * atom0->size_at *
-                                             cos(atom0->angle)) +
-                               (int) (1.5 * atom0->size_at *
-                                      sin(atom0->angle));
-                       xy[3].x = xy[0].x;
-                       xy[3].y = xy[0].y;
-                       trans_coor(xy, atom0->xy, 3, gamma);
-                       return;
-       }
-}
-
-static void
-crystal_drawatom(ModeInfo * mi, crystalatom * atom0)
-{
-       crystalstruct *cryst;
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       int         j, k, l, m;
-
-       cryst = &crystals[MI_SCREEN(mi)];
-       for (j = numops[2 * cryst->planegroup + 1];
-            j < numops[2 * cryst->planegroup]; j++) {
-               XPoint      xy[5], new_xy[5];
-               XPoint      xy_1[5];
-               int         xtrans, ytrans;
-
-               xtrans = operation[j * 6] * atom0->x0 + operation[j * 6 + 1] *
-                       atom0->y0 + (int) (operation[j * 6 + 4] * cryst->a /
-                                          2.0);
-               ytrans = operation[j * 6 + 2] * atom0->x0 + operation[j * 6 +
-                              3] * atom0->y0 + (int) (operation[j * 6 + 5] *
-                                                      cryst->b / 2.0);
-               if (xtrans < 0) {
-                       if (xtrans < -cryst->a)
-                               xtrans = 2 * cryst->a;
-                       else
-                               xtrans = cryst->a;
-               } else if (xtrans >= cryst->a)
-                       xtrans = -cryst->a;
-               else
-                       xtrans = 0;
-               if (ytrans < 0)
-                       ytrans = cryst->b;
-               else if (ytrans >= cryst->b)
-                       ytrans = -cryst->b;
-               else
-                       ytrans = 0;
-               for (k = 0; k < atom0->num_point; k++) {
-                       xy[k].x = operation[j * 6] * atom0->xy[k].x +
-                               operation[j * 6 + 1] *
-                               atom0->xy[k].y + (int) (operation[j * 6 + 4] *
-                                                       cryst->a / 2.0) +
-                               xtrans;
-                       xy[k].y = operation[j * 6 + 2] * atom0->xy[k].x +
-                               operation[j * 6 + 3] *
-                               atom0->xy[k].y + (int) (operation[j * 6 + 5] *
-                                                       cryst->b / 2.0) +
-                               ytrans;
-               }
-               xy[atom0->num_point].x = xy[0].x;
-               xy[atom0->num_point].y = xy[0].y;
-               for (l = 0; l < cryst->nx; l++) {
-                       for (m = 0; m < cryst->ny; m++) {
-
-                               for (k = 0; k <= atom0->num_point; k++) {
-                                       xy_1[k].x = xy[k].x + l * cryst->a;
-                                       xy_1[k].y = xy[k].y + m * cryst->b;
-                               }
-                               trans_coor_back(xy_1, new_xy, atom0->num_point,
-                                               cryst->gamma, cryst->offset_w,
-                                               cryst->offset_h ,
-                                               cryst->win_height,
-                                               cryst->invert);
-                               XFillPolygon(display, window, cryst->gc, new_xy,
-                                 atom0->num_point, Convex, CoordModeOrigin);
-                       }
-               }
-               if (centro[cryst->planegroup] == True) {
-                       for (k = 0; k <= atom0->num_point; k++) {
-                               xy[k].x = cryst->a - xy[k].x;
-                               xy[k].y = cryst->b - xy[k].y;
-                       }
-                       for (l = 0; l < cryst->nx; l++) {
-                               for (m = 0; m < cryst->ny; m++) {
-
-                                       for (k = 0; k <= atom0->num_point; k++) {
-                                               xy_1[k].x = xy[k].x + l * cryst->a;
-                                               xy_1[k].y = xy[k].y + m * cryst->b;
-                                       }
-                                       trans_coor_back(xy_1, new_xy, atom0->num_point,
-                                                       cryst->gamma,
-                                                       cryst->offset_w,
-                                                       cryst->offset_h ,
-                                                       cryst->win_height ,
-                                                       cryst->invert);
-                                       XFillPolygon(display, window, cryst->gc,
-                                                    new_xy,
-                                                    atom0->num_point, Convex,
-                                                    CoordModeOrigin);
-                               }
-                       }
-               }
-               if (primitive[cryst->planegroup] == False) {
-                       if (xy[atom0->num_point].x >= (int) (cryst->a / 2.0))
-                               xtrans = (int) (-cryst->a / 2.0);
-                       else
-                               xtrans = (int) (cryst->a / 2.0);
-                       if (xy[atom0->num_point].y >= (int) (cryst->b / 2.0))
-                               ytrans = (int) (-cryst->b / 2.0);
-                       else
-                               ytrans = (int) (cryst->b / 2.0);
-                       for (k = 0; k <= atom0->num_point; k++) {
-                               xy[k].x = xy[k].x + xtrans;
-                               xy[k].y = xy[k].y + ytrans;
-                       }
-                       for (l = 0; l < cryst->nx; l++) {
-                               for (m = 0; m < cryst->ny; m++) {
-
-                                       for (k = 0; k <= atom0->num_point; k++) {
-                                               xy_1[k].x = xy[k].x + l * cryst->a;
-                                               xy_1[k].y = xy[k].y + m * cryst->b;
-                                       }
-                                       trans_coor_back(xy_1, new_xy, atom0->num_point,
-                                                       cryst->gamma,
-                                                       cryst->offset_w,
-                                                       cryst->offset_h ,
-                                                       cryst->win_height,
-                                                       cryst->invert);
-                                       XFillPolygon(display, window, cryst->gc,
-                                                    new_xy,
-                                                    atom0->num_point, Convex,
-                                                    CoordModeOrigin);
-                               }
-                       }
-                       if (centro[cryst->planegroup] == True) {
-                               XPoint      xy1[5];
-
-                               for (k = 0; k <= atom0->num_point; k++) {
-                                       xy1[k].x = cryst->a - xy[k].x;
-                                       xy1[k].y = cryst->b - xy[k].y;
-                               }
-                               for (l = 0; l < cryst->nx; l++) {
-                                       for (m = 0; m < cryst->ny; m++) {
-
-                                               for (k = 0; k <= atom0->num_point; k++) {
-                                                       xy_1[k].x = xy1[k].x + l * cryst->a;
-                                                       xy_1[k].y = xy1[k].y + m * cryst->b;
-                                               }
-                                               trans_coor_back(xy_1, new_xy, atom0->num_point,
-                                                               cryst->gamma,
-                                                               cryst->offset_w,
-                                                               cryst->offset_h ,
-                                                               cryst->win_height,
-                                                               cryst->invert);
-                                               XFillPolygon(display, window,
-                                                            cryst->gc,
-                                                   new_xy, atom0->num_point,
-                                                   Convex, CoordModeOrigin);
-                                       }
-                               }
-                       }
-               }
-       }
-}
-
-void
-draw_crystal(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       crystalstruct *cryst = &crystals[MI_SCREEN(mi)];
-       int         i;
-
-       if (cryst->no_colors) {
-               release_crystal(mi);
-               init_crystal(mi);
-               return;
-       }
-       cryst->painted = True;
-       MI_IS_DRAWN(mi) = True;
-       XSetFunction(display, cryst->gc, GXxor);
-
-/* Rotate colours */
-       if (cryst->cycle_p) {
-               rotate_colors(display, cryst->cmap, cryst->colors, cryst->ncolors,
-                             cryst->direction);
-               if (!(LRAND() % 1000))
-                       cryst->direction = -cryst->direction;
-       }
-       for (i = 0; i < cryst->num_atom; i++) {
-               crystalatom *atom0;
-
-               atom0 = &cryst->atom[i];
-               if (MI_IS_INSTALL(mi) && MI_NPIXELS(mi) > 2) {
-                       XSetForeground(display, cryst->gc, cryst->colors[atom0->colour].pixel);
-               } else {
-                       XSetForeground(display, cryst->gc, atom0->colour);
-               }
-               crystal_drawatom(mi, atom0);
-               atom0->velocity[0] += NRAND(3) - 1;
-               atom0->velocity[0] = MAX(-20, MIN(20, atom0->velocity[0]));
-               atom0->velocity[1] += NRAND(3) - 1;
-               atom0->velocity[1] = MAX(-20, MIN(20, atom0->velocity[1]));
-               atom0->x0 += atom0->velocity[0];
-               /*if (cryst->gamma == 90.0) { */
-               if (atom0->x0 < 0)
-                       atom0->x0 += cryst->a;
-               else if (atom0->x0 >= cryst->a)
-                       atom0->x0 -= cryst->a;
-               atom0->y0 += atom0->velocity[1];
-               if (atom0->y0 < 0)
-                       atom0->y0 += cryst->b;
-               else if (atom0->y0 >= cryst->b)
-                       atom0->y0 -= cryst->b;
-               /*} */
-               atom0->velocity_a += ((float) NRAND(1001) - 500.0) / 2000.0;
-               atom0->angle += atom0->velocity_a;
-               crystal_setupatom(atom0, cryst->gamma);
-               crystal_drawatom(mi, atom0);
-       }
-       XSetFunction(display, cryst->gc, GXcopy);
-}
-
-void
-refresh_crystal(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       crystalstruct *cryst = &crystals[MI_SCREEN(mi)];
-       int         i;
-
-       if (!cryst->painted)
-               return;
-       MI_CLEARWINDOW(mi);
-       XSetFunction(display, cryst->gc, GXxor);
-
-       if (cryst->unit_cell) {
-          int y_coor1 , y_coor2;
-          
-               if (MI_NPIXELS(mi) > 2)
-                       XSetForeground(display, cryst->gc, MI_PIXEL(mi, NRAND(MI_NPIXELS(mi))));
-               else
-                       XSetForeground(display, cryst->gc, MI_WHITE_PIXEL(mi));
-               if (cryst->grid_cell) {
-                       int         inx, iny;
-
-                  if ( cryst->invert )
-                    y_coor1 = y_coor2 = cryst->win_height - cryst->offset_h;
-                  else
-                    y_coor1 = y_coor2 = cryst->offset_h;
-                       XDrawLine(display, window, cryst->gc, cryst->offset_w,
-                                 y_coor1, cryst->offset_w + cryst->nx * cryst->a,
-                                 y_coor2);
-                  if ( cryst->invert )
-                    {
-                       y_coor1 = cryst->win_height - cryst->offset_h;
-                       y_coor2 = cryst->win_height - (int) (cryst->ny *
-                                                            cryst->b *
-                                        cos((cryst->gamma - 90) * PI_RAD)) -
-                         cryst->offset_h;
-                    }
-                  else
-                    {
-                       y_coor1 = cryst->offset_h;
-                       y_coor2 = (int) (cryst->ny * cryst->b *
-                                        cos((cryst->gamma - 90) * PI_RAD)) +
-                         cryst->offset_h;
-                    }
-                       XDrawLine(display, window, cryst->gc, cryst->offset_w,
-                                 y_coor1, (int) (cryst->offset_w - cryst->ny * cryst->b *
-                                         sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2);
-                       inx = cryst->nx;
-                       for (iny = 1; iny <= cryst->ny; iny++) {
-                  if ( cryst->invert )
-                    {
-                       y_coor1 = cryst->win_height -
-                         (int) (iny * cryst->b * cos((cryst->gamma - 90) *
-                                                 PI_RAD)) - cryst->offset_h;
-                       y_coor2 = cryst->win_height -
-                         (int) (iny * cryst->b * cos((cryst->gamma - 90) *
-                                                     PI_RAD)) -
-                         cryst->offset_h;
-                    }
-                  else
-                    {
-                       y_coor1 = (int) (iny * cryst->b * cos((cryst->gamma - 90) *
-                                                 PI_RAD)) + cryst->offset_h;
-                       y_coor2 = (int) (iny * cryst->b * cos((cryst->gamma - 90) * PI_RAD)) +
-                                         cryst->offset_h;
-                    }
-                               XDrawLine(display, window, cryst->gc,
-                                         (int) (cryst->offset_w +
-                                    inx * cryst->a - (int) (iny * cryst->b *
-                                        sin((cryst->gamma - 90) * PI_RAD))),
-                                         y_coor1,
-                                   (int) (cryst->offset_w - iny * cryst->b *
-                                          sin((cryst->gamma - 90) * PI_RAD)),
-                                         y_coor2);
-                       }
-                       iny = cryst->ny;
-                       for (inx = 1; inx <= cryst->nx; inx++) {
-                          if ( cryst->invert )
-                            {
-                               y_coor1 =cryst->win_height -
-                                 (int) (iny * cryst->b *
-                                               cos((cryst->gamma - 90) *
-                                                   PI_RAD)) - cryst->offset_h;
-                               y_coor2 =cryst->win_height - cryst->offset_h;
-                            }
-                          else
-                            {
-                               y_coor1 =(int) (iny * cryst->b *
-                                               cos((cryst->gamma - 90) *
-                                                   PI_RAD)) + cryst->offset_h;
-                               y_coor2 =cryst->offset_h;
-                            }
-                               XDrawLine(display, window, cryst->gc,
-                                         (int) (cryst->offset_w +
-                                    inx * cryst->a - (int) (iny * cryst->b *
-                                        sin((cryst->gamma - 90) * PI_RAD))),
-                                         y_coor1,
-                                         cryst->offset_w + inx * cryst->a,
-                                         y_coor2);
-                       }
-               } else {
-                       int         inx, iny;
-
-                       inx = NRAND(cryst->nx);
-                       iny = NRAND(cryst->ny);
-                  if ( cryst->invert )
-                    {
-                       y_coor1 =cryst->win_height -
-                         (int) (iny * cryst->b *
-                                                 cos((cryst->gamma - 90) *
-                                                     PI_RAD)) -
-                         cryst->offset_h;
-                       y_coor2 =cryst->win_height -
-                         (int) ( ( iny + 1 ) * cryst->b *
-                                                 cos((cryst->gamma - 90) *
-                                                     PI_RAD)) -
-                         cryst->offset_h;
-                    }
-                  else
-                    {
-                       y_coor1 =(int) (iny * cryst->b *
-                                                 cos((cryst->gamma - 90) *
-                                                     PI_RAD)) +
-                         cryst->offset_h;
-                       y_coor2 =(int) (( iny + 1 ) * cryst->b *
-                                                 cos((cryst->gamma - 90) *
-                                                     PI_RAD)) +
-                         cryst->offset_h;
-                    }
-                       XDrawLine(display, window, cryst->gc,
-                                 cryst->offset_w + inx * cryst->a - (int) (iny * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor1,
-                                 cryst->offset_w + (inx + 1) * cryst->a - (int) (iny * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor1);
-                       XDrawLine(display, window, cryst->gc,
-                                 cryst->offset_w + inx * cryst->a - (int) (iny * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor1,
-                                 cryst->offset_w + inx * cryst->a - (int) ((iny + 1) * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2);
-                       XDrawLine(display, window, cryst->gc,
-                                 cryst->offset_w + (inx + 1) * cryst->a - (int) (iny * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor1,
-                                 cryst->offset_w + (inx + 1) * cryst->a - (int) ((iny + 1) * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2);
-                       XDrawLine(display, window, cryst->gc,
-                                 cryst->offset_w + inx * cryst->a - (int) ((iny + 1) * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2,
-                                 cryst->offset_w + (inx + 1) * cryst->a - (int) ((iny + 1) * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2);
-               }
-       }
-       for (i = 0; i < cryst->num_atom; i++) {
-               crystalatom *atom0;
-
-               atom0 = &cryst->atom[i];
-               if (MI_IS_INSTALL(mi) && MI_NPIXELS(mi) > 2) {
-                       XSetForeground(display, cryst->gc, cryst->colors[atom0->colour].pixel);
-               } else {
-                       XSetForeground(display, cryst->gc, atom0->colour);
-               }
-               crystal_drawatom(mi, atom0);
-       }
-       XSetFunction(display, cryst->gc, GXcopy);
-}
-
-void
-release_crystal(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-
-       if (crystals != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       crystalstruct *cryst = &crystals[screen];
-
-                       if (MI_IS_INSTALL(mi) && MI_NPIXELS(mi) > 2) {
-                               MI_WHITE_PIXEL(mi) = cryst->whitepixel;
-                               MI_BLACK_PIXEL(mi) = cryst->blackpixel;
-#ifndef STANDALONE
-                               MI_FG_PIXEL(mi) = cryst->fg;
-                               MI_BG_PIXEL(mi) = cryst->bg;
-#endif
-                               if (cryst->colors && cryst->ncolors && !cryst->no_colors)
-                                       free_colors(display, cryst->cmap, cryst->colors, cryst->ncolors);
-                               if (cryst->colors)
-                                       (void) free((void *) cryst->colors);
-                               XFreeColormap(display, cryst->cmap);
-                       }
-                       if (cryst->gc != NULL)
-                               XFreeGC(display, cryst->gc);
-                       if (cryst->atom != NULL)
-                               (void) free((void *) cryst->atom);
-               }
-               (void) free((void *) crystals);
-               crystals = NULL;
-       }
-}
-
-void
-init_crystal(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       crystalstruct *cryst;
-       int         i, max_atoms, size_atom, neqv;
-       int         cell_min;
-
-#define MIN_CELL 200
-
-/* initialize */
-       if (crystals == NULL) {
-               if ((crystals = (crystalstruct *) calloc(MI_NUM_SCREENS(mi),
-                                           sizeof (crystalstruct))) == NULL)
-                       return;
-       }
-       cryst = &crystals[MI_SCREEN(mi)];
-
-       if (!cryst->gc) {
-               if (MI_IS_INSTALL(mi) && MI_NPIXELS(mi) > 2) {
-                       XColor      color;
-
-#ifndef STANDALONE
-                       extern char *background;
-                       extern char *foreground;
-
-                       cryst->fg = MI_FG_PIXEL(mi);
-                       cryst->bg = MI_BG_PIXEL(mi);
-#endif
-                       cryst->blackpixel = MI_BLACK_PIXEL(mi);
-                       cryst->whitepixel = MI_WHITE_PIXEL(mi);
-                       cryst->cmap = XCreateColormap(display, window,
-                                                  MI_VISUAL(mi), AllocNone);
-                       XSetWindowColormap(display, window, cryst->cmap);
-                       (void) XParseColor(display, cryst->cmap, "black", &color);
-                       (void) XAllocColor(display, cryst->cmap, &color);
-                       MI_BLACK_PIXEL(mi) = color.pixel;
-                       (void) XParseColor(display, cryst->cmap, "white", &color);
-                       (void) XAllocColor(display, cryst->cmap, &color);
-                       MI_WHITE_PIXEL(mi) = color.pixel;
-#ifndef STANDALONE
-                       (void) XParseColor(display, cryst->cmap, background, &color);
-                       (void) XAllocColor(display, cryst->cmap, &color);
-                       MI_BG_PIXEL(mi) = color.pixel;
-                       (void) XParseColor(display, cryst->cmap, foreground, &color);
-                       (void) XAllocColor(display, cryst->cmap, &color);
-                       MI_FG_PIXEL(mi) = color.pixel;
-#endif
-                       cryst->colors = 0;
-                       cryst->ncolors = 0;
-               }
-               if ((cryst->gc = XCreateGC(display, MI_WINDOW(mi),
-                            (unsigned long) 0, (XGCValues *) NULL)) == None)
-                       return;
-       }
-/* Clear Display */
-       MI_CLEARWINDOW(mi);
-       cryst->painted = False;
-       XSetFunction(display, cryst->gc, GXxor);
-
-
-/*Set up crystal data */
-       cryst->direction = (LRAND() & 1) ? 1 : -1;
-       if (MI_IS_FULLRANDOM(mi)) {
-               if (LRAND() & 1)
-                       cryst->unit_cell = True;
-               else
-                       cryst->unit_cell = False;
-       } else
-               cryst->unit_cell = unit_cell;
-       if (cryst->unit_cell) {
-               if (MI_IS_FULLRANDOM(mi)) {
-                       if (LRAND() & 1)
-                               cryst->grid_cell = True;
-                       else
-                               cryst->grid_cell = False;
-               } else
-                       cryst->grid_cell = grid_cell;
-       }
-       cryst->win_width = MI_WIDTH(mi);
-       cryst->win_height = MI_HEIGHT(mi);
-       cell_min = min(cryst->win_width / 2 + 1, MIN_CELL);
-       cell_min = min(cell_min, cryst->win_height / 2 + 1);
-       cryst->planegroup = NRAND(17);
-        cryst->invert = NRAND(2);
-       if (MI_IS_VERBOSE(mi))
-               (void) fprintf(stdout, "Selected plane group no %d\n",
-                              cryst->planegroup + 1);
-       if (cryst->planegroup > 11)
-               cryst->gamma = 120.0;
-       else if (cryst->planegroup < 2)
-               cryst->gamma = 60.0 + NRAND(60);
-       else
-               cryst->gamma = 90.0;
-       neqv = numops[2 * cryst->planegroup] - numops[2 * cryst->planegroup + 1];
-       if (centro[cryst->planegroup] == True)
-               neqv = 2 * neqv;
-       if (primitive[cryst->planegroup] == False)
-               neqv = 2 * neqv;
-
-
-       if (nx > 0)
-               cryst->nx = nx;
-       else if (nx < 0)
-               cryst->nx = NRAND(-nx) + 1;
-       else
-               cryst->nx = DEF_NX1;
-       if (cryst->planegroup > 8)
-               cryst->ny = cryst->nx;
-       else if (ny > 0)
-               cryst->ny = ny;
-       else if (ny < 0)
-               cryst->ny = NRAND(-ny) + 1;
-       else
-               cryst->ny = DEF_NY1;
-       neqv = neqv * cryst->nx * cryst->ny;
-
-       cryst->num_atom = MI_COUNT(mi);
-       max_atoms = MI_COUNT(mi);
-       if (cryst->num_atom == 0) {
-               cryst->num_atom = DEF_NUM_ATOM;
-               max_atoms = DEF_NUM_ATOM;
-       } else if (cryst->num_atom < 0) {
-               max_atoms = -cryst->num_atom;
-               cryst->num_atom = NRAND(-cryst->num_atom) + 1;
-       }
-       if (neqv > 1)
-               cryst->num_atom = cryst->num_atom / neqv + 1;
-
-       if (cryst->atom == NULL)
-               cryst->atom = (crystalatom *) calloc(max_atoms, sizeof (
-                                                              crystalatom));
-
-       if (maxsize) {
-               if (cryst->planegroup < 13) {
-                       cryst->gamma = 90.0;
-                       cryst->offset_w = 0;
-                       cryst->offset_h = 0;
-                       if (cryst->planegroup < 10) {
-                               cryst->b = cryst->win_height;
-                               cryst->a = cryst->win_width;
-                       } else {
-                               cryst->b = min(cryst->win_height, cryst->win_width);
-                               cryst->a = cryst->b;
-                       }
-               } else {
-                       cryst->gamma = 120.0;
-                       cryst->a = (int) (cryst->win_width * 2.0 / 3.0);
-                       cryst->b = cryst->a;
-                       cryst->offset_h = (int) (cryst->b * 0.25 *
-                                         cos((cryst->gamma - 90) * PI_RAD));
-                       cryst->offset_w = (int) (cryst->b * 0.5);
-               }
-       } else {
-               cryst->offset_w = -1;
-               while (cryst->offset_w < 4 || (int) (cryst->offset_w - cryst->b *
-                                   sin((cryst->gamma - 90) * PI_RAD)) < 4) {
-                       cryst->b = NRAND((int) (cryst->win_height / (cos((cryst->gamma - 90) *
-                                           PI_RAD))) - cell_min) + cell_min;
-                       if (cryst->planegroup > 8)
-                               cryst->a = cryst->b;
-                       else
-                               cryst->a = NRAND(cryst->win_width - cell_min) + cell_min;
-                       cryst->offset_w = (int) ((cryst->win_width - (cryst->a - cryst->b *
-                                                   sin((cryst->gamma - 90) *
-                                                       PI_RAD))) / 2.0);
-               }
-               cryst->offset_h = (int) ((cryst->win_height - cryst->b * cos((
-                                       cryst->gamma - 90) * PI_RAD)) / 2.0);
-               if (!centre) {
-                       if (cryst->offset_h > 0)
-                               cryst->offset_h = NRAND(2 * cryst->offset_h);
-                       cryst->offset_w = (int) (cryst->win_width - cryst->a -
-                                                cryst->b *
-                                   fabs(sin((cryst->gamma - 90) * PI_RAD)));
-                       if (cryst->gamma > 90.0) {
-                               if (cryst->offset_w > 0)
-                                       cryst->offset_w = NRAND(cryst->offset_w) +
-                                               (int) (cryst->b * sin((cryst->gamma - 90) * PI_RAD));
-                               else
-                                       cryst->offset_w = (int) (cryst->b * sin((cryst->gamma - 90) *
-                                                                   PI_RAD));
-                       } else if (cryst->offset_w > 0)
-                               cryst->offset_w = NRAND(cryst->offset_w);
-                       else
-                               cryst->offset_w = 0;
-               }
-       }
-
-       size_atom = min((int) ((float) (cryst->a) / 40.) + 1,
-                       (int) ((float) (cryst->b) / 40.) + 1);
-       if (MI_SIZE(mi) < size_atom) {
-               if (MI_SIZE(mi) < -size_atom)
-                       size_atom = -size_atom;
-               else
-                       size_atom = MI_SIZE(mi);
-       }
-       cryst->a = cryst->a / cryst->nx;
-       cryst->b = cryst->b / cryst->ny;
-       if (cryst->unit_cell) {
-          int y_coor1 , y_coor2;
-          
-               if (MI_NPIXELS(mi) > 2)
-                       XSetForeground(display, cryst->gc, MI_PIXEL(mi, NRAND(MI_NPIXELS(mi))));
-               else
-                       XSetForeground(display, cryst->gc, MI_WHITE_PIXEL(mi));
-               if (cryst->grid_cell) {
-                       int         inx, iny;
-
-                  if ( cryst->invert )
-                    y_coor1 = y_coor2 = cryst->win_height - cryst->offset_h;
-                  else
-                    y_coor1 = y_coor2 = cryst->offset_h;
-                       XDrawLine(display, window, cryst->gc, cryst->offset_w,
-                                 y_coor1, cryst->offset_w + cryst->nx * cryst->a,
-                                 y_coor2);
-                  if ( cryst->invert )
-                    {
-                       y_coor1 = cryst->win_height - cryst->offset_h;
-                       y_coor2 = cryst->win_height - (int) (cryst->ny *
-                                                            cryst->b *
-                                        cos((cryst->gamma - 90) * PI_RAD)) -
-                         cryst->offset_h;
-                    }
-                  else
-                    {
-                       y_coor1 = cryst->offset_h;
-                       y_coor2 = (int) (cryst->ny * cryst->b *
-                                        cos((cryst->gamma - 90) * PI_RAD)) +
-                         cryst->offset_h;
-                    }
-                       XDrawLine(display, window, cryst->gc, cryst->offset_w,
-                                 y_coor1, (int) (cryst->offset_w - cryst->ny * cryst->b *
-                                         sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2);
-                       inx = cryst->nx;
-                       for (iny = 1; iny <= cryst->ny; iny++) {
-                  if ( cryst->invert )
-                    {
-                       y_coor1 = cryst->win_height -
-                         (int) (iny * cryst->b * cos((cryst->gamma - 90) *
-                                                 PI_RAD)) - cryst->offset_h;
-                       y_coor2 = cryst->win_height -
-                         (int) (iny * cryst->b * cos((cryst->gamma - 90) *
-                                                     PI_RAD)) -
-                         cryst->offset_h;
-                    }
-                  else
-                    {
-                       y_coor1 = (int) (iny * cryst->b * cos((cryst->gamma - 90) *
-                                                 PI_RAD)) + cryst->offset_h;
-                       y_coor2 = (int) (iny * cryst->b * cos((cryst->gamma - 90) * PI_RAD)) +
-                                         cryst->offset_h;
-                    }
-                               XDrawLine(display, window, cryst->gc,
-                                         (int) (cryst->offset_w +
-                                    inx * cryst->a - (int) (iny * cryst->b *
-                                        sin((cryst->gamma - 90) * PI_RAD))),
-                                         y_coor1,
-                                   (int) (cryst->offset_w - iny * cryst->b *
-                                          sin((cryst->gamma - 90) * PI_RAD)),
-                                         y_coor2);
-                       }
-                       iny = cryst->ny;
-                       for (inx = 1; inx <= cryst->nx; inx++) {
-                          if ( cryst->invert )
-                            {
-                               y_coor1 =cryst->win_height -
-                                 (int) (iny * cryst->b *
-                                               cos((cryst->gamma - 90) *
-                                                   PI_RAD)) - cryst->offset_h;
-                               y_coor2 =cryst->win_height - cryst->offset_h;
-                            }
-                          else
-                            {
-                               y_coor1 =(int) (iny * cryst->b *
-                                               cos((cryst->gamma - 90) *
-                                                   PI_RAD)) + cryst->offset_h;
-                               y_coor2 =cryst->offset_h;
-                            }
-                               XDrawLine(display, window, cryst->gc,
-                                         (int) (cryst->offset_w +
-                                    inx * cryst->a - (int) (iny * cryst->b *
-                                        sin((cryst->gamma - 90) * PI_RAD))),
-                                         y_coor1,
-                                         cryst->offset_w + inx * cryst->a,
-                                         y_coor2);
-                       }
-               } else {
-                       int         inx, iny;
-
-                       inx = NRAND(cryst->nx);
-                       iny = NRAND(cryst->ny);
-                  if ( cryst->invert )
-                    {
-                       y_coor1 =cryst->win_height -
-                         (int) (iny * cryst->b *
-                                                 cos((cryst->gamma - 90) *
-                                                     PI_RAD)) -
-                         cryst->offset_h;
-                       y_coor2 =cryst->win_height -
-                         (int) ( ( iny + 1 ) * cryst->b *
-                                                 cos((cryst->gamma - 90) *
-                                                     PI_RAD)) -
-                         cryst->offset_h;
-                    }
-                  else
-                    {
-                       y_coor1 =(int) (iny * cryst->b *
-                                                 cos((cryst->gamma - 90) *
-                                                     PI_RAD)) +
-                         cryst->offset_h;
-                       y_coor2 =(int) (( iny + 1 ) * cryst->b *
-                                                 cos((cryst->gamma - 90) *
-                                                     PI_RAD)) +
-                         cryst->offset_h;
-                    }
-                       XDrawLine(display, window, cryst->gc,
-                                 cryst->offset_w + inx * cryst->a - (int) (iny * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor1,
-                                 cryst->offset_w + (inx + 1) * cryst->a - (int) (iny * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor1);
-                       XDrawLine(display, window, cryst->gc,
-                                 cryst->offset_w + inx * cryst->a - (int) (iny * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor1,
-                                 cryst->offset_w + inx * cryst->a - (int) ((iny + 1) * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2);
-                       XDrawLine(display, window, cryst->gc,
-                                 cryst->offset_w + (inx + 1) * cryst->a - (int) (iny * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor1,
-                                 cryst->offset_w + (inx + 1) * cryst->a - (int) ((iny + 1) * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2);
-                       XDrawLine(display, window, cryst->gc,
-                                 cryst->offset_w + inx * cryst->a - (int) ((iny + 1) * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2,
-                                 cryst->offset_w + (inx + 1) * cryst->a - (int) ((iny + 1) * cryst->b * sin((cryst->gamma - 90) * PI_RAD)),
-                                 y_coor2);
-               }
-       }
-       if (MI_IS_INSTALL(mi) && MI_NPIXELS(mi) > 2) {
-/* Set up colour map */
-               if (cryst->colors && cryst->ncolors && !cryst->no_colors)
-                       free_colors(display, cryst->cmap, cryst->colors, cryst->ncolors);
-               if (cryst->colors)
-                       (void) free((void *) cryst->colors);
-               cryst->colors = 0;
-               cryst->ncolors = MI_NCOLORS(mi);
-               if (cryst->ncolors < 2)
-                       cryst->ncolors = 2;
-               if (cryst->ncolors <= 2)
-                       cryst->mono_p = True;
-               else
-                       cryst->mono_p = False;
-
-               if (cryst->mono_p)
-                       cryst->colors = 0;
-               else
-                       cryst->colors = (XColor *) malloc(sizeof (*cryst->colors) * (cryst->ncolors + 1));
-               cryst->cycle_p = has_writable_cells(mi->xgwa.screen, MI_VISUAL(mi));
-               if (cryst->cycle_p) {
-                       if (MI_IS_FULLRANDOM(mi)) {
-                               if (!NRAND(8))
-                                       cryst->cycle_p = False;
-                               else
-                                       cryst->cycle_p = True;
-                       } else {
-                               cryst->cycle_p = cycle_p;
-                       }
-               }
-               if (!cryst->mono_p) {
-                       if (!(LRAND() % 10))
-                               make_random_colormap(MI_DISPLAY(mi), MI_VISUAL(mi), cryst->cmap, cryst->colors, &cryst->ncolors,
-                                               True, True, &cryst->cycle_p, True);
-                       else if (!(LRAND() % 2))
-                               make_uniform_colormap(MI_DISPLAY(mi), MI_VISUAL(mi), cryst->cmap, cryst->colors, &cryst->ncolors,
-                                                     True, &cryst->cycle_p, True);
-                       else
-                               make_smooth_colormap(MI_DISPLAY(mi), MI_VISUAL(mi), cryst->cmap, cryst->colors, &cryst->ncolors,
-                                                    True, &cryst->cycle_p, True);
-               }
-               XInstallColormap(display, cryst->cmap);
-               if (cryst->ncolors < 2) {
-                       cryst->ncolors = 2;
-                       cryst->no_colors = True;
-               } else
-                       cryst->no_colors = False;
-               if (cryst->ncolors <= 2)
-                       cryst->mono_p = True;
-
-               if (cryst->mono_p)
-                       cryst->cycle_p = False;
-
-       }
-       for (i = 0; i < cryst->num_atom; i++) {
-               crystalatom *atom0;
-
-               atom0 = &cryst->atom[i];
-               if (MI_IS_INSTALL(mi) && MI_NPIXELS(mi) > 2) {
-                       if (cryst->ncolors > 2)
-                               atom0->colour = NRAND(cryst->ncolors - 2) + 2;
-                       else
-                               atom0->colour = 1;      /* Just in case */
-                       XSetForeground(display, cryst->gc, cryst->colors[atom0->colour].pixel);
-               } else {
-                       if (MI_NPIXELS(mi) > 2)
-                               atom0->colour = MI_PIXEL(mi, NRAND(MI_NPIXELS(mi)));
-                       else
-                               atom0->colour = 1;      /*Xor'red so WHITE may not be appropriate */
-                       XSetForeground(display, cryst->gc, atom0->colour);
-               }
-               atom0->x0 = NRAND(cryst->a);
-               atom0->y0 = NRAND(cryst->b);
-               atom0->velocity[0] = NRAND(7) - 3;
-               atom0->velocity[1] = NRAND(7) - 3;
-               atom0->velocity_a = (NRAND(7) - 3) * PI_RAD;
-               atom0->angle = NRAND(90) * PI_RAD;
-               atom0->at_type = NRAND(3);
-               if (size_atom == 0)
-                       atom0->size_at = DEF_SIZ_ATOM;
-               else if (size_atom > 0)
-                       atom0->size_at = size_atom;
-               else
-                       atom0->size_at = NRAND(-size_atom) + 1;
-               atom0->size_at++;
-               if (atom0->at_type == 2)
-                       atom0->num_point = 3;
-               else
-                       atom0->num_point = 4;
-               crystal_setupatom(atom0, cryst->gamma);
-               crystal_drawatom(mi, atom0);
-       }
-       XSync(display, False);
-       XSetFunction(display, cryst->gc, GXcopy);
-}
diff --git a/hacks/cynosure.c b/hacks/cynosure.c
deleted file mode 100644 (file)
index 052a944..0000000
+++ /dev/null
@@ -1,393 +0,0 @@
-/* cynosure --- draw some rectangles
- *
- * 01-aug-96: written in Java by ozymandias G desiderata <ogd@organic.com>
- * 25-dec-97: ported to C and XScreenSaver by Jamie Zawinski <jwz@jwz.org>
- *
- * Original version:
- *   http://www.organic.com/staff/ogd/java/cynosure.html
- *   http://www.organic.com/staff/ogd/java/source/cynosure/Cynosure-java.txt
- *
- * Original comments and copyright:
- *
- *   Cynosure.java
- *   A Java implementation of Stephen Linhart's Cynosure screen-saver as a
- *   drop-in class.
- *
- *   Header: /home/ogd/lib/cvs/aoaioxxysz/graphics/Cynosure.java,v 1.2 1996/08/02 02:41:21 ogd Exp 
- *
- *   ozymandias G desiderata <ogd@organic.com>
- *   Thu Aug  1 1996
- *
- *   COPYRIGHT NOTICE
- *
- *   Copyright 1996 ozymandias G desiderata. Title, ownership rights, and
- *   intellectual property rights in and to this software remain with
- *   ozymandias G desiderata. This software may be copied, modified,
- *   or used as long as this copyright is retained. Use this code at your
- *   own risk.
- *
- *   Revision: 1.2 
- *
- *   Log: Cynosure.java,v 
- *   Revision 1.2  1996/08/02 02:41:21  ogd
- *   Added a few more comments, fixed messed-up header.
- *
- *   Revision 1.1.1.1  1996/08/02 02:30:45  ogd
- *   First version
- */
-
-#include "screenhack.h"
-static Display *dpy;
-static Window window;
-static XColor *colors;
-static int ncolors;
-static int fg_pixel, bg_pixel;
-static GC fg_gc, bg_gc, shadow_gc;
-
-static void paint(void);
-static int genNewColor(void);
-static int genConstrainedColor(int base, int tweak);
-static int c_tweak(int base, int tweak);
-
-/**
- * The current color that is being tweaked to create the
- * rectangles.
- **/
-static int curColor;
-
-/**
- * A variable used for the progression of the colors (yes, I know
- * that's a lame explanation, but if your read the source, it should
- * become obvious what I'm doing with this variable).
- **/
-static int curBase;
-
-/**
- * The width of the right and bottom edges of the rectangles.
- **/
-static int   shadowWidth;
-
-/* The offset of the dropshadow beneath the rectangles. */
-static int   elevation;
-
-/**
- * The approximate amount of time that will elapse before the base
- * color is permanently changed.
- *
- * @see #tweak
- **/
-static int   sway;
-
-/**
- * The counter of time left until the base color value used. This class
- * variable is necessary because Java doesn't support static method
- * variables (grr grr).
- **/
-static int   timeLeft;
-
-/**
- * The amount by which the color of the polygons drawn will vary.
- *
- * @see #sway;
- **/
-static int   tweak;
-
-/**
- * The smallest size for an individual cell.
- **/
-#define MINCELLSIZE 16
-
-/**
- * The narrowest a rectangle can be.
- **/
-#define MINRECTSIZE 6
-
-/**
- * The size of the grid that the rectangles are placed within.
- **/
-static int gridSize;
-
-/**
- * Every so often genNewColor() generates a completely random
- * color. This variable sets how frequently that happens. It's
- * currently set to happen 1% of the time.
- *
- * @see #genNewColor
- **/
-#define THRESHOLD 100 /*0.01*/
-
-
-char *progclass = "Cynosure";
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*delay:             500000",
-  "*colors:            128",
-  "*iterations:                100",
-  "*shadowWidth:       2",
-  "*elevation:         5",
-  "*sway:              30",
-  "*tweak:             20",
-  "*gridSize:          12",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-ncolors",                ".colors",      XrmoptionSepArg, 0 },
-  { "-iterations",     ".iterations",  XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-
-void screenhack(Display *d, Window w) 
-{
-  XWindowAttributes xgwa;
-  XGCValues gcv;
-  int delay;
-  int i, iterations;
-
-  dpy = d;
-  window = w;
-
-  curColor    = 0;
-  curBase     = curColor;
-  shadowWidth = get_integer_resource ("shadowWidth", "Integer");
-  elevation   = get_integer_resource ("elevation", "Integer");
-  sway        = get_integer_resource ("sway", "Integer");
-  tweak       = get_integer_resource ("tweak", "Integer");
-  gridSize    = get_integer_resource ("gridSize", "Integer");
-  timeLeft    = 0;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  ncolors = get_integer_resource ("colors", "Colors");
-  if (ncolors < 2) ncolors = 2;
-  if (ncolors <= 2) mono_p = True;
-
-  if (mono_p)
-    colors = 0;
-  else
-    colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-
-  if (mono_p)
-    ;
-  else {
-    make_smooth_colormap (dpy, xgwa.visual, xgwa.colormap, colors, &ncolors,
-                         True, 0, True);
-    if (ncolors <= 2) {
-      mono_p = True;
-      ncolors = 2;
-      if (colors) free(colors);
-      colors = 0;
-    }
-  }
-
-  bg_pixel = get_pixel_resource("background", "Background", dpy,
-                               xgwa.colormap);
-  fg_pixel = get_pixel_resource("foreground", "Foreground", dpy,
-                               xgwa.colormap);
-
-  gcv.foreground = fg_pixel;
-  fg_gc = XCreateGC(dpy, window, GCForeground, &gcv);
-  gcv.foreground = bg_pixel;
-  bg_gc = XCreateGC(dpy, window, GCForeground, &gcv);
-
-  gcv.fill_style = FillStippled;
-  gcv.stipple = XCreateBitmapFromData(dpy, window, "\125\252", 8, 2);
-  shadow_gc = XCreateGC(dpy, window, GCForeground|GCFillStyle|GCStipple, &gcv);
-  XFreePixmap(dpy, gcv.stipple);
-
-  delay = get_integer_resource ("delay", "Delay");
-  iterations = get_integer_resource ("iterations", "Iterations");
-
-  i = 0;
-  while (1)
-    {
-      if (iterations > 0 && ++i >= iterations)
-       {
-         i = 0;
-         if (!mono_p)
-           XSetWindowBackground(dpy, window,
-                                colors[random() % ncolors].pixel);
-         XClearWindow(dpy, window);
-       }
-      paint();
-      XSync(dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay)
-       usleep(delay);
-    }
-}
-
-/**
- * paint adds a new layer of multicolored rectangles within a grid of
- * randomly generated size. Each row of rectangles is the same color,
- * but colors vary slightly from row to row. Each rectangle is placed
- * within a regularly-sized cell, but each rectangle is sized and
- * placed randomly within that cell.
- *
- * @param g      the Graphics coordinate in which to draw
- * @see #genNewColor
- **/
-static void paint(void)
-{
-    int i;
-    int cellsWide, cellsHigh, cellWidth, cellHeight;
-    static int width, height;
-    static int size_check = 1;
-
-    if (--size_check <= 0)
-      {
-       XWindowAttributes xgwa;
-       XGetWindowAttributes (dpy, window, &xgwa);
-       width = xgwa.width;
-       height = xgwa.height;
-       size_check = 1000;
-      }
-
-    /* How many cells wide the grid is (equal to gridSize +/- (gridSize / 2))
-     */
-    cellsWide  = c_tweak(gridSize, gridSize / 2);
-    /* How many cells high the grid is (equal to gridSize +/- (gridSize / 2))
-     */
-    cellsHigh  = c_tweak(gridSize, gridSize / 2);
-    /* How wide each cell in the grid is */
-    cellWidth  = width  / cellsWide;
-    /* How tall each cell in the grid is */
-    cellHeight = height / cellsHigh;
-
-    /* Ensure that each cell is above a certain minimum size */
-
-    if (cellWidth < MINCELLSIZE) {
-      cellWidth  = MINCELLSIZE;
-      cellsWide  = width / cellWidth;
-    }
-
-    if (cellHeight < MINCELLSIZE) {
-      cellHeight = MINCELLSIZE;
-      cellsHigh  = width / cellWidth;
-    }
-
-    /* fill the grid with randomly-generated cells */
-    for(i = 0; i < cellsHigh; i++) {
-      int j;
-
-      /* Each row is a different color, randomly generated (but constrained) */
-      if (!mono_p)
-       {
-         int c = genNewColor();
-         XSetForeground(dpy, fg_gc, colors[c].pixel);
-       }
-
-      for(j = 0; j < cellsWide; j++) {
-       int curWidth, curHeight, curX, curY;
-
-        /* Generate a random height for a rectangle and make sure that */
-        /* it's above a certain minimum size */
-        curHeight = random() % (cellHeight - shadowWidth);
-        if (curHeight < MINRECTSIZE)
-          curHeight = MINRECTSIZE;
-        /* Generate a random width for a rectangle and make sure that
-           it's above a certain minimum size */
-        curWidth  = random() % (cellWidth  - shadowWidth);
-        if (curWidth < MINRECTSIZE)
-          curWidth = MINRECTSIZE;
-        /* Figure out a random place to locate the rectangle within the
-           cell */
-        curY      = (i * cellHeight) + (random() % ((cellHeight - curHeight) -
-                                                   shadowWidth));
-        curX      = (j * cellWidth) +  (random() % ((cellWidth  - curWidth) -
-                                                   shadowWidth));
-
-        /* Draw the shadow */
-       if (elevation > 0)
-         XFillRectangle(dpy, window, shadow_gc,
-                        curX + elevation, curY + elevation,
-                        curWidth, curHeight);
-
-        /* Draw the edge */
-       if (shadowWidth > 0)
-         XFillRectangle(dpy, window, bg_gc,
-                        curX + shadowWidth, curY + shadowWidth,
-                        curWidth, curHeight);
-
-       XFillRectangle(dpy, window, fg_gc, curX, curY, curWidth, curHeight);
-
-        /* Draw a 1-pixel black border around the rectangle */
-       XDrawRectangle(dpy, window, bg_gc, curX, curY, curWidth, curHeight);
-      }
-
-    }
-}
-
-
-/**
- * genNewColor returns a new color, gradually mutating the colors and
- * occasionally returning a totally random color, just for variety.
- *
- * @return the new color
- **/
-static int genNewColor(void)
-{
-    /* These lines handle "sway", or the gradual random changing of */
-    /* colors. After genNewColor() has been called a given number of */
-    /* times (specified by a random permutation of the tweak variable), */
-    /* take whatever color has been most recently randomly generated and */
-    /* make it the new base color. */
-    if (timeLeft == 0) {
-      timeLeft = c_tweak(sway, sway / 3);
-      curColor = curBase;
-    } else {
-      timeLeft--;
-    }
-     
-    /* If a randomly generated number is less than the threshold value,
-       produce a "sport" color value that is completely unrelated to the 
-       current palette. */
-    if (0 == (random() % THRESHOLD)) {
-      return (random() % ncolors);
-    } else {
-      curBase = genConstrainedColor(curColor, tweak);
-      return curBase;
-    }
-
-}
-
-/**
- * genConstrainedColor creates a random new color within a certain
- * range of an existing color. Right now this works with RGB color
- * values, but a future version of the program will most likely use HSV
- * colors, which should generate a more pleasing progression of values.
- *
- * @param base  the color on which the new color will be based
- * @param tweak the amount that the new color can be tweaked
- * @return a new constrained color
- * @see #genNewColor
- **/
-static int genConstrainedColor(int base, int tweak) 
-{
-    int i = 1 + (random() % tweak);
-    if (random() & 1)
-      i = -i;
-    i = (base + i) % ncolors;
-    while (i < 0)
-      i += ncolors;
-    return i;
-}
-
-/**
- * Utility function to generate a tweaked color value
- *
- * @param  base   the byte value on which the color is based
- * @param  tweak  the amount the value will be skewed
- * @see    #tweak
- * @return the tweaked byte
- **/
-static int c_tweak(int base, int tweak) 
-{
-    int ranTweak = (random() % (2 * tweak));
-    int n = (base + (ranTweak - tweak));
-    if (n < 0) n = -n;
-    return (n < 255 ? n : 255);
-}
diff --git a/hacks/decayscreen.c b/hacks/decayscreen.c
deleted file mode 100644 (file)
index 64a846c..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1996, 1997 
- * 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.
- */
-
-/* decayscreen
- *
- * Based on slidescreen program from the xscreensaver application and the
- * decay program for Sun framebuffers.  This is the comment from the decay.c
- * file:
-
- * decay.c
- *   find the screen bitmap for the console and make it "decay" by
- *   randomly shifting random rectangles by one pixelwidth at a time.
- *
- *   by David Wald, 1988
- *        rewritten by Natuerlich!
- *   based on a similar "utility" on the Apollo ring at Yale.
-
- * X version by
- *
- *  Vivek Khera <khera@cs.duke.edu>
- *  5-AUG-1993
- *
- *  Hacked by jwz, 28-Nov-97 (sped up and added new motion directions)
- *  R. Schultz
- *  Added "melt" & "stretch" modes 28-Mar-1999
- *
- */
-
-#include "screenhack.h"
-
-static int sizex, sizey;
-static int delay;
-static GC gc;
-static int mode;
-static int iterations=100;
-
-#define SHUFFLE 0
-#define UP 1
-#define LEFT 2
-#define RIGHT 3
-#define DOWN 4
-#define UPLEFT 5
-#define DOWNLEFT 6
-#define UPRIGHT 7
-#define DOWNRIGHT 8
-#define IN 9
-#define OUT 10
-#define MELT 11
-#define STRETCH 12
-
-static void
-init_decay (Display *dpy, Window window)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  long gcflags;
-  unsigned long bg;
-
-  char *s = get_string_resource("mode", "Mode");
-  if      (s && !strcmp(s, "shuffle")) mode = SHUFFLE;
-  else if (s && !strcmp(s, "up")) mode = UP;
-  else if (s && !strcmp(s, "left")) mode = LEFT;
-  else if (s && !strcmp(s, "right")) mode = RIGHT;
-  else if (s && !strcmp(s, "down")) mode = DOWN;
-  else if (s && !strcmp(s, "upleft")) mode = UPLEFT;
-  else if (s && !strcmp(s, "downleft")) mode = DOWNLEFT;
-  else if (s && !strcmp(s, "upright")) mode = UPRIGHT;
-  else if (s && !strcmp(s, "downright")) mode = DOWNRIGHT;
-  else if (s && !strcmp(s, "in")) mode = IN;
-  else if (s && !strcmp(s, "out")) mode = OUT;
-  else if (s && !strcmp(s, "melt")) mode = MELT;
-  else if (s && !strcmp(s, "stretch")) mode = STRETCH;
-  else {
-    if (s && *s && !!strcmp(s, "random"))
-      fprintf(stderr, "%s: unknown mode %s\n", progname, s);
-    mode = random() % (STRETCH+1);
-  }
-
-  delay = get_integer_resource ("delay", "Integer");
-
-  if (delay < 0) delay = 0;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  gcv.function = GXcopy;
-  gcv.subwindow_mode = IncludeInferiors;
-
-  if (mode == MELT || mode == STRETCH) {
-    bg = get_pixel_resource ("background", "Background", dpy, xgwa.colormap);
-    gcv.foreground = bg;
-  }
-
-  gcflags = GCForeground |GCFunction;
-  if (use_subwindow_mode_p(xgwa.screen, window)) /* see grabscreen.c */
-    gcflags |= GCSubwindowMode;
-  gc = XCreateGC (dpy, window, gcflags, &gcv);
-
-  sizex = xgwa.width;
-  sizey = xgwa.height;
-
-  grab_screen_image (xgwa.screen, window);
-  
-  if (mode == MELT || mode == STRETCH) {
-    /* make sure screen eventually turns background color */
-    XDrawLine(dpy, window, gc, 0, 0, sizex, 0); 
-
-    /* slow down for smoother melting*/
-    iterations = 1;
-  }
-
-}
-
-
-/*
- * perform one iteration of decay
- */
-static void
-decay1 (Display *dpy, Window window)
-{
-    int left, top, width, height, toleft, totop;
-
-#define L 101
-#define R 102
-#define U 103
-#define D 104
-    static int no_bias[]        = { L,L,L,L, R,R,R,R, U,U,U,U, D,D,D,D };
-    static int up_bias[]        = { L,L,L,L, R,R,R,R, U,U,U,U, U,U,D,D };
-    static int down_bias[]      = { L,L,L,L, R,R,R,R, U,U,D,D, D,D,D,D };
-    static int left_bias[]      = { L,L,L,L, L,L,R,R, U,U,U,U, D,D,D,D };
-    static int right_bias[]     = { L,L,R,R, R,R,R,R, U,U,U,U, D,D,D,D };
-
-    static int upleft_bias[]    = { L,L,L,L, L,R,R,R, U,U,U,U, U,D,D,D };
-    static int downleft_bias[]  = { L,L,L,L, L,R,R,R, U,U,U,D, D,D,D,D };
-    static int upright_bias[]   = { L,L,L,R, R,R,R,R, U,U,U,U, U,D,D,D };
-    static int downright_bias[] = { L,L,L,R, R,R,R,R, U,U,U,D, D,D,D,D };
-    static int *bias;
-
-    switch (mode) {
-      case SHUFFLE:    bias = no_bias; break;
-      case UP:         bias = up_bias; break;
-      case LEFT:       bias = left_bias; break;
-      case RIGHT:      bias = right_bias; break;
-      case DOWN:       bias = down_bias; break;
-      case UPLEFT:     bias = upleft_bias; break;
-      case DOWNLEFT:   bias = downleft_bias; break;
-      case UPRIGHT:    bias = upright_bias; break;
-      case DOWNRIGHT:  bias = downright_bias; break;
-      case IN:         bias = no_bias; break;
-      case OUT:                bias = no_bias; break;
-      case MELT:       bias = no_bias; break;
-      case STRETCH:    bias = no_bias; break;
-     default: abort();
-    }
-
-#define nrnd(x) (random() % (x))
-
-    if (mode == MELT || mode == STRETCH) {
-      left = nrnd(sizex/2);
-      top = nrnd(sizey);
-      width = nrnd( sizex/2 ) + sizex/2 - left;
-      height = nrnd(sizey - top);
-      toleft = left;
-      totop = top+1;
-
-    } else {
-
-      left = nrnd(sizex - 1);
-      top = nrnd(sizey);
-      width = nrnd(sizex - left);
-      height = nrnd(sizey - top);
-      
-      toleft = left;
-      totop = top;
-      if (mode == IN || mode == OUT) {
-       int x = left+(width/2);
-       int y = top+(height/2);
-       int cx = sizex/2;
-       int cy = sizey/2;
-       if (mode == IN) {
-         if      (x > cx && y > cy)   bias = upleft_bias;
-         else if (x < cx && y > cy)   bias = upright_bias;
-         else if (x < cx && y < cy)   bias = downright_bias;
-         else /* (x > cx && y < cy)*/ bias = downleft_bias;
-       } else {
-         if      (x > cx && y > cy)   bias = downright_bias;
-         else if (x < cx && y > cy)   bias = downleft_bias;
-         else if (x < cx && y < cy)   bias = upleft_bias;
-         else /* (x > cx && y < cy)*/ bias = upright_bias;
-       }
-      }
-      
-      switch (bias[random() % (sizeof(no_bias)/sizeof(*no_bias))]) {
-      case L: toleft = left-1; break;
-      case R: toleft = left+1; break;
-      case U: totop = top-1; break;
-      case D: totop = top+1; break;
-      default: abort(); break;
-      }
-    }
-    
-    if (mode == STRETCH) {
-      XCopyArea (dpy, window, window, gc, 0, sizey-top-2, sizex, top+1, 
-                0, sizey-top-1); 
-    } else {
-      XCopyArea (dpy, window, window, gc, left, top, width, height,
-                toleft, totop);
-    }
-
-#undef nrnd
-}
-
-\f
-char *progclass = "DecayScreen";
-
-char *defaults [] = {
-  "*dontClearRoot:             True",
-
-#ifdef __sgi   /* really, HAVE_READ_DISPLAY_EXTENSION */
-  "*visualID:                  Best",
-#endif
-
-  "*delay:                     10000",
-  "*mode:                      random",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
-  { "-mode",           ".mode",                XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-    init_decay (dpy, window);
-    while (1) {
-      int i;
-      for (i = 0; i < iterations; i++)
-       decay1 (dpy, window);
-      XSync(dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay) usleep (delay);
-    }
-}
diff --git a/hacks/decayscreen.man b/hacks/decayscreen.man
deleted file mode 100644 (file)
index 8dc0a0e..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-.TH XScreenSaver 1 "05-Apr-1999" "X Version 11"
-.SH NAME
-decayscreen - make a screen meltdown.
-.SH SYNOPSIS
-.B decayscreen
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-mode \fImode\fP]
-.SH DESCRIPTION
-The \fIdecayscreen\fP program creates a melting effect by randomly
-shifting rectangles around the screen.
-.SH OPTIONS
-.I decayscreen
-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
-Slow it down.
-.TP 8
-.B \-mode \fImode\fP
-The direction in which the image should tend to slide.  Legal values are
-\fIrandom\fP (meaning pick one), \fIup\fP, \fIleft\fP, \fIright\fP, 
-\fIdown\fP, \fIupleft\fP, \fIdownleft\fP, \fIupright\fP, \fIdownright\fP, 
-\fIshuffle\fP (meaning perfer no particular direction), \fIin\fP (meaning
-move things toward the center), \fIout\fP (meaning move things away
-from the center), \fImelt\fP (meaning melt straight downward), and \fIstretch\fP 
-(meaning stretch the screen downward).
-.SH RESOURCES
-On some systems (currently, only SGIs), this program can, instead of grabbing
-a desktop image, grab a frame of video from an external camera and manipulate
-that instead.  The following resources control that.
-.PP
-.TP 8
-.B grabVideoProbability \fR(Float)\fP
-What portion of the time to grab video rather than a screen image, 
-between 0.0 and 1.0.  Defaults to 0.5, or half the time.
-.TP 8
-.B videoDevice \fR(Integer)\fP
-The number of the default video input device to check first.  If unspecified, 
-the default camera (from videopanel(1)) will be checked first.  After that, all
-other available video input devices will be checked in order.  
-
-The first one which produces a non-black image will be used.  If all images
-are black, the others will be re-checked a few times before giving up and
-falling back to simply grabbing a desktop image (but note that this takes a
-few seconds, so if you don't actually have any video sources hooked up, you
-should consider turning off video grabbing by setting
-\fBgrabVideoProbability\fP to 0.0.)
-.TP 8
-.B videoGain \fR(Float)\fP
-The amount by which to brighten the grabbed image.  This defaults to 2.2.
-.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"
-X(1),
-xscreensaver(1)
-.SH COPYRIGHT
-Copyright 1992 by Vivek Khera.  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
-Vivek Khera <khera@cs.duke.edu>, 05-Aug-93; based on code by David Wald, 1988.
-Modified by jwz, 28-Nov-97.  Modified by Rick Schultz <rick@skapunx.net> 05-Apr-1999.
-
diff --git a/hacks/deco.c b/hacks/deco.c
deleted file mode 100644 (file)
index ae90805..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-/* xscreensaver, Copyright (c) 1997, 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.
- *
- * Concept snarfed from Michael D. Bayne in
- * http://www.go2net.com/internet/deep/1997/04/16/body.html
- */
-
-#include "screenhack.h"
-#include <stdio.h>
-
-static XColor colors[255];
-static int ncolors = 0;
-static int max_depth = 0;
-static int min_height = 0;
-static int min_width = 0;
-
-static void
-deco (Display *dpy,
-      Window window,
-      Colormap cmap,
-      GC fgc, GC bgc,
-      int x, int y, int w, int h, int depth)
-{
-  if (((random() % max_depth) < depth) || (w < min_width) || (h < min_height))
-    {
-      if (!mono_p)
-       {
-         static int current_color = 0;
-         if (++current_color >= ncolors)
-           current_color = 0;
-         XSetForeground(dpy, bgc, colors[current_color].pixel);
-       }
-      XFillRectangle (dpy, window, bgc, x, y, w, h);
-      XDrawRectangle (dpy, window, fgc, x, y, w, h);
-    }
-  else
-    {
-      if (random() & 1)
-       {
-         deco (dpy, window, cmap, fgc, bgc, x, y, w/2, h, depth+1);
-         deco (dpy, window, cmap, fgc, bgc, x+w/2, y, w/2, h, depth+1);
-       }
-      else
-       {
-         deco (dpy, window, cmap, fgc, bgc, x, y, w, h/2, depth+1);
-         deco (dpy, window, cmap, fgc, bgc, x, y+h/2, w, h/2, depth+1);
-       }
-    }
-}
-
-\f
-char *progclass = "Deco";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*maxDepth:          12",
-  "*minWidth:          20",
-  "*minHeight:         20",
-  "*cycle:             False",
-  "*delay:             5",
-  "*cycleDelay:                1000000",
-  "*ncolors:           64",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-max-depth",      ".maxDepth",    XrmoptionSepArg, 0 },
-  { "-min-width",      ".minWidth",    XrmoptionSepArg, 0 },
-  { "-min-height",     ".minHeight",   XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-ncolors",                ".ncolors",     XrmoptionSepArg, 0 },
-  { "-cycle",          ".cycle",       XrmoptionNoArg, "True" },
-  { "-no-cycle",       ".cycle",       XrmoptionNoArg, "False" },
-  { "-cycle-delay",    ".cycleDelay",  XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  GC fgc, bgc;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  int delay = get_integer_resource ("delay", "Integer");
-  int cycle_delay = get_integer_resource ("cycleDelay", "Integer");
-  Bool writable = get_boolean_resource ("cycle", "Boolean");
-
-  max_depth = get_integer_resource ("maxDepth", "Integer");
-  if (max_depth < 1) max_depth = 1;
-  else if (max_depth > 1000) max_depth = 1000;
-
-  min_width = get_integer_resource ("minWidth", "Integer");
-  if (min_width < 2) min_width = 2;
-  min_height = get_integer_resource ("minHeight", "Integer");
-  if (min_height < 2) min_height = 2;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  gcv.foreground = get_pixel_resource("foreground", "Foreground",
-                                     dpy, xgwa.colormap);
-  fgc = XCreateGC (dpy, window, GCForeground, &gcv);
-
-  gcv.foreground = get_pixel_resource("background", "Background",
-                                     dpy, xgwa.colormap);
-  bgc = XCreateGC (dpy, window, GCForeground, &gcv);
-
-  ncolors = get_integer_resource ("ncolors", "Integer");
-
-  make_random_colormap (dpy, xgwa.visual, xgwa.colormap, colors, &ncolors,
-                       False, True, &writable, True);
-
-  if (ncolors <= 2)
-    mono_p = True;
-
-  if (!mono_p)
-    {
-      GC tmp = fgc;
-      fgc = bgc;
-      bgc = tmp;
-    }
-
-  while (1)
-    {
-      XGetWindowAttributes (dpy, window, &xgwa);
-      XFillRectangle(dpy, window, bgc, 0, 0, xgwa.width, xgwa.height);
-      deco (dpy, window, xgwa.colormap, fgc, bgc,
-           0, 0, xgwa.width, xgwa.height, 0);
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-
-      if (!delay) continue;
-      if (!writable)
-       sleep (delay);
-      else
-       {
-         time_t start = time((time_t) 0);
-         while (start - delay < time((time_t) 0))
-           {
-             rotate_colors (dpy, xgwa.colormap, colors, ncolors, 1);
-              XSync (dpy, False);
-              screenhack_handle_events (dpy);
-             if (cycle_delay)
-               usleep (cycle_delay);
-           }
-       }
-    }
-}
diff --git a/hacks/deco.man b/hacks/deco.man
deleted file mode 100644 (file)
index 5f8a6fc..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-.TH XScreenSaver 1 "27-Apr-97" "X Version 11"
-.SH NAME
-deco - draw tacky 70s basement wall panelling
-.SH SYNOPSIS
-.B deco
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-max\-depth \fIint\fP] [\-min\-width \fIint\fP] [\-min\-height \fIint\fP] [\-cycle] [\-no\-cycle] [\-cycle\-delay]
-.SH DESCRIPTION
-The \fIdeco\fP program subdivides and colors rectangles randomly.
-It looks kind of like Brady-Bunch-era rec-room wall paneling.
-(Raven says: "this screensaver is ugly enough to peel paint.")
-.SH OPTIONS
-.I deco
-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 \fIseconds\fP
-How long to wait before starting over.  Default 5 seconds.
-.TP 8
-.B \-max\-depth \fIinteger\fP
-How deep to subdivide.  Default 12.
-Default 8.
-.TP 8
-.B \-min-width \fIinteger\fP
-.B \-min-height \fIinteger\fP
-The size of the smallest rectangle to draw.  Default 20x20.
-.TP 8
-.B \-cycle
-.TP 8
-.B \-no\-cycle
-Whether to do color cycling.  Default False.
-.TP 8
-.B \-cycle\-delay \fIusecs\fP
-If color cycling, how often to change the colors.  Default 1000000,
-or 1 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 1997 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 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>, 26-Apr-97, based on code by
-Michael D. Bayne <mdb@go2net.com>.
diff --git a/hacks/deluxe.c b/hacks/deluxe.c
deleted file mode 100644 (file)
index 739536e..0000000
+++ /dev/null
@@ -1,318 +0,0 @@
-/* xscreensaver, Copyright (c) 1999 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 <math.h>
-#include "screenhack.h"
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-# include "xdbe.h"
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-#define countof(x) (sizeof(x)/sizeof(*(x)))
-#define ABS(x) ((x)<0?-(x):(x))
-
-struct throbber {
-  int x, y;
-  int size;
-  int max_size;
-  int thickness;
-  int speed;
-  int fuse;
-  GC gc;
-  void (*draw) (Display *, Drawable, struct throbber *);
-};
-
-static void
-draw_star (Display *dpy, Drawable w, struct throbber *t)
-{
-  XPoint points[11];
-  int x = t->x;
-  int y = t->y;
-  int s = t->size / 0.383;  /* trial and error, I forget how to derive this */
-  int s2 = t->size;
-  double c = M_PI * 2;
-  double o = -M_PI / 2;
-
-  points[0].x = x + s  * cos(o + 0.0*c); points[0].y = y + s  * sin(o + 0.0*c);
-  points[1].x = x + s2 * cos(o + 0.1*c); points[1].y = y + s2 * sin(o + 0.1*c);
-  points[2].x = x + s  * cos(o + 0.2*c); points[2].y = y + s  * sin(o + 0.2*c);
-  points[3].x = x + s2 * cos(o + 0.3*c); points[3].y = y + s2 * sin(o + 0.3*c);
-  points[4].x = x + s  * cos(o + 0.4*c); points[4].y = y + s  * sin(o + 0.4*c);
-  points[5].x = x + s2 * cos(o + 0.5*c); points[5].y = y + s2 * sin(o + 0.5*c);
-  points[6].x = x + s  * cos(o + 0.6*c); points[6].y = y + s  * sin(o + 0.6*c);
-  points[7].x = x + s2 * cos(o + 0.7*c); points[7].y = y + s2 * sin(o + 0.7*c);
-  points[8].x = x + s  * cos(o + 0.8*c); points[8].y = y + s  * sin(o + 0.8*c);
-  points[9].x = x + s2 * cos(o + 0.9*c); points[9].y = y + s2 * sin(o + 0.9*c);
-  points[10] = points[0];
-
-  XDrawLines (dpy, w, t->gc, points, countof(points), CoordModeOrigin);
-}
-
-static void
-draw_circle (Display *dpy, Drawable w, struct throbber *t)
-{
-  XDrawArc (dpy, w, t->gc,
-            t->x - t->size / 2,
-            t->y - t->size / 2,
-            t->size, t->size,
-            0, 360*64);
-}
-
-static void
-draw_hlines (Display *dpy, Drawable w, struct throbber *t)
-{
-  XDrawLine (dpy, w, t->gc, 0,
-             t->y - t->size, t->max_size,
-             t->y - t->size);
-  XDrawLine (dpy, w, t->gc, 0,
-             t->y + t->size, t->max_size,
-             t->y + t->size);
-}
-
-static void
-draw_vlines (Display *dpy, Drawable w, struct throbber *t)
-{
-  XDrawLine (dpy, w, t->gc,
-             t->x - t->size, 0,
-             t->x - t->size, t->max_size);
-  XDrawLine (dpy, w, t->gc,
-             t->x + t->size, 0,
-             t->x + t->size, t->max_size);
-}
-
-static void
-draw_corners (Display *dpy, Drawable w, struct throbber *t)
-{
-  int s = (t->size + t->thickness) / 2;
-  XPoint points[3];
-
-  points[0].x = 0;        points[0].y = t->y - s;
-  points[1].x = t->x - s; points[1].y = t->y - s;
-  points[2].x = t->x - s; points[2].y = 0;
-  XDrawLines (dpy, w, t->gc, points, countof(points), CoordModeOrigin);
-
-  points[0].x = 0;        points[0].y = t->y + s;
-  points[1].x = t->x - s; points[1].y = t->y + s;
-  points[2].x = t->x - s; points[2].y = t->max_size;
-  XDrawLines (dpy, w, t->gc, points, countof(points), CoordModeOrigin);
-
-  points[0].x = t->x + s;    points[0].y = 0;
-  points[1].x = t->x + s;    points[1].y = t->y - s;
-  points[2].x = t->max_size; points[2].y = t->y - s;
-  XDrawLines (dpy, w, t->gc, points, countof(points), CoordModeOrigin);
-
-  points[0].x = t->x + s;    points[0].y = t->max_size;
-  points[1].x = t->x + s;    points[1].y = t->y + s;
-  points[2].x = t->max_size; points[2].y = t->y + s;
-  XDrawLines (dpy, w, t->gc, points, countof(points), CoordModeOrigin);
-}
-
-
-static struct throbber *
-make_throbber (Display *dpy, Drawable d, int w, int h, unsigned long pixel)
-{
-  XGCValues gcv;
-  struct throbber *t = (struct throbber *) malloc (sizeof (*t));
-  t->x = w / 2;
-  t->y = h / 2;
-  t->max_size = w;
-  t->speed = get_integer_resource ("speed", "Speed");
-  t->fuse = 1 + (random() % 4);
-  t->thickness = get_integer_resource ("thickness", "Thickness");
-
-  if (t->speed < 0) t->speed = -t->speed;
-  t->speed += (((random() % t->speed) / 2) - (t->speed / 2));
-  if (t->speed > 0) t->speed = -t->speed;
-
-  if (random() % 4)
-    t->size = t->max_size;
-  else
-    t->size = t->thickness, t->speed = -t->speed;
-
-  gcv.foreground = pixel;
-  gcv.line_width = t->thickness;
-  gcv.line_style = LineSolid;
-  gcv.cap_style = CapProjecting;
-  gcv.join_style = JoinMiter;
-  t->gc = XCreateGC (dpy, d,
-                     (GCForeground|GCLineWidth|GCLineStyle|
-                      GCCapStyle|GCJoinStyle),
-                     &gcv);
-
-  switch (random() % 11) {
-  case 0: case 1: case 2: case 3: t->draw = draw_star; break;
-  case 4: case 5: case 6: case 7: t->draw = draw_circle; break;
-  case 8: t->draw = draw_hlines; break;
-  case 9: t->draw = draw_vlines; break;
-  case 10: t->draw = draw_corners; break;
-  default: abort(); break;
-  }
-
-  return t;
-}
-
-static int
-throb (Display *dpy, Drawable window, struct throbber *t)
-{
-  t->size += t->speed;
-  if (t->size <= (t->thickness / 2))
-    {
-      t->speed = -t->speed;
-      t->size += (t->speed * 2);
-    }
-  else if (t->size > t->max_size)
-    {
-      t->speed = -t->speed;
-      t->size += (t->speed * 2);
-      t->fuse--;
-    }
-
-  if (t->fuse <= 0)
-    {
-      XFreeGC (dpy, t->gc);
-      memset (t, 0, sizeof(*t));
-      free (t);
-      return -1;
-    }
-  else
-    {
-      t->draw (dpy, window, t);
-      return 0;
-    }
-}
-
-
-\f
-char *progclass = "Deluxe";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*delay:             5000",
-  "*count:             5",
-  "*thickness:         50",
-  "*speed:             15",
-  "*ncolors:           20",
-  "*doubleBuffer:      True",
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  "*useDBE:            True",
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-thickness",      ".thickness",   XrmoptionSepArg, 0 },
-  { "-count",          ".count",       XrmoptionSepArg, 0 },
-  { "-ncolors",                ".ncolors",     XrmoptionSepArg, 0 },
-  { "-speed",          ".speed",       XrmoptionSepArg, 0 },
-  { "-db",             ".doubleBuffer", XrmoptionNoArg,  "True" },
-  { "-no-db",          ".doubleBuffer", XrmoptionNoArg,  "False" },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  int count = get_integer_resource ("count", "Integer");
-  int delay = get_integer_resource ("delay", "Integer");
-  int ncolors = get_integer_resource ("ncolors", "Integer");
-  Bool dbuf = get_boolean_resource ("doubleBuffer", "Boolean");
-  XColor colors[255];
-  XGCValues gcv;
-  GC erase_gc = 0;
-  int i;
-  struct throbber **throbbers;
-  XWindowAttributes xgwa;
-  Pixmap b=0, ba=0, bb=0;      /* double-buffer to reduce flicker */
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  XdbeBackBuffer backb = 0;
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  if (get_boolean_resource("mono", "Boolean"))
-    {
-    MONO:
-      ncolors = 1;
-      colors[0].pixel = get_pixel_resource("foreground", "Foreground",
-                                           dpy, xgwa.colormap);
-    }
-  else
-    {
-      make_random_colormap (dpy, xgwa.visual, xgwa.colormap,
-                            colors, &ncolors, True, True, 0, True);
-      if (ncolors < 2)
-        goto MONO;
-    }
-
-  if (dbuf)
-    {
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-      b = backb = xdbe_get_backbuffer (dpy, window, XdbeUndefined);
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-      if (!b)
-        {
-          ba = XCreatePixmap (dpy, window, xgwa.width, xgwa.height,xgwa.depth);
-          bb = XCreatePixmap (dpy, window, xgwa.width, xgwa.height,xgwa.depth);
-          b = ba;
-        }
-    }
-  else
-    {
-      b = window;
-    }
-
-  throbbers = (struct throbber **) calloc (count, sizeof(struct throbber *));
-  for (i = 0; i < count; i++)
-    throbbers[i] = make_throbber (dpy, b, xgwa.width, xgwa.height,
-                                  colors[random() % ncolors].pixel);
-
-  gcv.foreground = get_pixel_resource ("background", "Background",
-                                       dpy, xgwa.colormap);
-  erase_gc = XCreateGC (dpy, b, GCForeground, &gcv);
-
-  if (ba) XFillRectangle (dpy, ba, erase_gc, 0, 0, xgwa.width, xgwa.height);
-  if (bb) XFillRectangle (dpy, bb, erase_gc, 0, 0, xgwa.width, xgwa.height);
-
-  while (1)
-    {
-      XFillRectangle (dpy, b, erase_gc, 0, 0, xgwa.width, xgwa.height);
-
-      for (i = 0; i < count; i++)
-        if (throb (dpy, b, throbbers[i]) < 0)
-          throbbers[i] = make_throbber (dpy, b, xgwa.width, xgwa.height,
-                                        colors[random() % ncolors].pixel);
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-      if (backb)
-        {
-          XdbeSwapInfo info[1];
-          info[0].swap_window = window;
-          info[0].swap_action = XdbeUndefined;
-          XdbeSwapBuffers (dpy, info, 1);
-        }
-      else
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-      if (dbuf)
-        {
-          XCopyArea (dpy, b, window, erase_gc, 0, 0,
-                     xgwa.width, xgwa.height, 0, 0);
-          b = (b == ba ? bb : ba);
-        }
-
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay)
-        usleep (delay);
-    }
-}
diff --git a/hacks/demon.c b/hacks/demon.c
deleted file mode 100644 (file)
index db0255a..0000000
+++ /dev/null
@@ -1,902 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* demon --- David Griffeath's cellular automata */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)demon.c      4.07 97/11/24 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1995 by David Bagley.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- * 16-Apr-97: -neighbors 3, 9 (not sound mathematically), 12, and 8 added
- * 30-May-96: Ron Hitchens <ron@idiom.com>
- *            Fixed memory management that caused leaks
- * 14-Apr-96: -neighbors 6 runtime-time option added
- * 21-Aug-95: Coded from A.K. Dewdney's "Computer Recreations", Scientific
- *            American Magazine" Aug 1989 pp 102-105.  Also very similar to
- *            hodgepodge machine described in A.K. Dewdney's "Computer
- *            Recreations", Scientific American Magazine" Aug 1988 pp 104-107.
- *            also used life.c as a guide.
- */
-
-/*-
- * A cellular universe of 4 phases debris, droplets, defects, and demons.
- */
-
-/*-
-  Grid     Number of Neigbors
-  ----     ------------------
-  Square   4 or 8
-  Hexagon  6
-  Triangle 3, 9, or 12
-*/
-
-#ifdef STANDALONE
-#define PROGCLASS "Demon"
-#define HACK_INIT init_demon
-#define HACK_DRAW draw_demon
-#define demon_opts xlockmore_opts
-#define DEFAULTS       "*delay:        50000 \n"       \
-                                       "*count:            0 \n"       \
-                                       "*cycles:        1000 \n"       \
-                                       "*size:            -7 \n"       \
-                                       "*ncolors:         64 \n"       \
-                                       "*neighbors:    0 \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                /* in xscreensaver distribution */
-#else /* STANDALONE */
-# include "xlock.h"                    /* in xlockmore distribution */
-#endif /* STANDALONE */
-#include "automata.h"
-
-/*-
- * neighbors of 0 randomizes it between 3, 4, 6, 8, 9, and 12.
- */
-#ifdef STANDALONE
-static int neighbors;
-#else
-extern int  neighbors;
-#endif /* !STANDALONE */
-
-ModeSpecOpt demon_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   demon_description =
-{"demon", "init_demon", "draw_demon", "release_demon",
- "refresh_demon", "init_demon", NULL, &demon_opts,
- 50000, 0, 1000, -7, 64, 1.0, "",
- "Shows Griffeath's cellular automata", 0, NULL};
-
-#endif
-
-#define DEMONBITS(n,w,h)\
-  dp->pixmaps[dp->init_bits++]=\
-  XCreatePixmapFromBitmapData(display,window,(char *)n,w,h,1,0,1)
-
-#define REDRAWSTEP 2000                /* How many cells to draw per cycle */
-#define MINSTATES 2
-#define MINGRIDSIZE 24
-#define MINSIZE 4
-#define NEIGHBORKINDS 6
-
-/* Singly linked list */
-typedef struct _CellList {
-       XPoint      pt;
-       struct _CellList *next;
-} CellList;
-
-typedef struct {
-       int         generation;
-       int         xs, ys;
-       int         xb, yb;
-       int         nrows, ncols;
-       int         width, height;
-       int         states;
-       int         state;
-       int         redrawing, redrawpos;
-       int        *ncells;
-       CellList  **cellList;
-       unsigned char *oldcell, *newcell;
-       int         neighbors;
-       int         init_bits;
-       GC          stippledGC;
-       Pixmap      pixmaps[NUMSTIPPLES - 1];
-       union {
-               XPoint      hexagon[6];
-               XPoint      triangle[2][3];
-       } shape;
-} demonstruct;
-
-static char plots[2][NEIGHBORKINDS] =
-{
-       {3, 4, 6, 8, 9, 12},    /* Neighborhoods */
-       {12, 16, 18, 20, 22, 24}        /* Number of states */
-};
-
-static demonstruct *demons = NULL;
-
-static void
-drawcell(ModeInfo * mi, int col, int row, unsigned char state)
-{
-       demonstruct *dp = &demons[MI_SCREEN(mi)];
-       GC          gc;
-
-       if (!state) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_BLACK_PIXEL(mi));
-               gc = MI_GC(mi);
-       } else if (MI_NPIXELS(mi) >= NUMSTIPPLES) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi),
-                          MI_PIXEL(mi, (((int) state - 1) * MI_NPIXELS(mi) /
-                                        (dp->states - 1)) % MI_NPIXELS(mi)));
-               gc = MI_GC(mi);
-       } else {
-               XGCValues   gcv;
-
-               gcv.stipple = dp->pixmaps[(state - 1) % (NUMSTIPPLES - 1)];
-               gcv.foreground = MI_WHITE_PIXEL(mi);
-               gcv.background = MI_BLACK_PIXEL(mi);
-               XChangeGC(MI_DISPLAY(mi), dp->stippledGC,
-                         GCStipple | GCForeground | GCBackground, &gcv);
-               gc = dp->stippledGC;
-       }
-       if (dp->neighbors == 6) {
-               int         ccol = 2 * col + !(row & 1), crow = 2 * row;
-
-               dp->shape.hexagon[0].x = dp->xb + ccol * dp->xs;
-               dp->shape.hexagon[0].y = dp->yb + crow * dp->ys;
-               if (dp->xs == 1 && dp->ys == 1)
-                       XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                      gc, dp->shape.hexagon[0].x, dp->shape.hexagon[0].y, 1, 1);
-               else
-                       XFillPolygon(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                           dp->shape.hexagon, 6, Convex, CoordModePrevious);
-       } else if (dp->neighbors == 4 || dp->neighbors == 8) {
-               XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-               dp->xb + dp->xs * col, dp->yb + dp->ys * row,
-               dp->xs - (dp->xs > 3), dp->ys - (dp->ys > 3));
-       } else {                /* TRI */
-               int         orient = (col + row) % 2;   /* O left 1 right */
-
-               dp->shape.triangle[orient][0].x = dp->xb + col * dp->xs;
-               dp->shape.triangle[orient][0].y = dp->yb + row * dp->ys;
-               if (dp->xs <= 3 || dp->ys <= 3)
-                       XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                       ((orient) ? -1 : 1) + dp->shape.triangle[orient][0].x,
-                                      dp->shape.triangle[orient][0].y, 1, 1);
-               else {
-                       if (orient)
-                               dp->shape.triangle[orient][0].x += (dp->xs / 2 - 1);
-                       else
-                               dp->shape.triangle[orient][0].x -= (dp->xs / 2 - 1);
-                       XFillPolygon(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                                    dp->shape.triangle[orient], 3, Convex, CoordModePrevious);
-
-               }
-       }
-}
-
-static void
-addtolist(ModeInfo * mi, int col, int row, unsigned char state)
-{
-       demonstruct *dp = &demons[MI_SCREEN(mi)];
-       CellList   *current;
-
-       current = dp->cellList[state];
-       dp->cellList[state] = (CellList *) malloc(sizeof (CellList));
-       dp->cellList[state]->pt.x = col;
-       dp->cellList[state]->pt.y = row;
-       dp->cellList[state]->next = current;
-       dp->ncells[state]++;
-}
-
-#ifdef DEBUG
-static void
-print_state(ModeInfo * mi, int state)
-{
-       demonstruct *dp = &demons[MI_SCREEN(mi)];
-       CellList   *locallist;
-       int         i = 0;
-
-       locallist = dp->cellList[state];
-       (void) printf("state %d\n", state);
-       while (locallist) {
-               (void) printf("%d       x %d, y %d\n", i,
-                             locallist->pt.x, locallist->pt.y);
-               locallist = locallist->next;
-               i++;
-       }
-}
-
-#endif
-
-static void
-free_state(demonstruct * dp, int state)
-{
-       CellList   *current;
-
-       while (dp->cellList[state]) {
-               current = dp->cellList[state];
-               dp->cellList[state] = dp->cellList[state]->next;
-               (void) free((void *) current);
-       }
-       dp->cellList[state] = NULL;
-       if (dp->ncells)
-               dp->ncells[state] = 0;
-}
-
-
-static void
-free_list(demonstruct * dp)
-{
-       int         state;
-
-       for (state = 0; state < dp->states; state++)
-               free_state(dp, state);
-       (void) free((void *) dp->cellList);
-       dp->cellList = NULL;
-}
-
-static void
-free_struct(demonstruct * dp)
-{
-       if (dp->cellList != NULL) {
-               free_list(dp);
-       }
-       if (dp->ncells != NULL) {
-               (void) free((void *) dp->ncells);
-               dp->ncells = NULL;
-       }
-       if (dp->oldcell != NULL) {
-               (void) free((void *) dp->oldcell);
-               dp->oldcell = NULL;
-       }
-       if (dp->newcell != NULL) {
-               (void) free((void *) dp->newcell);
-               dp->newcell = NULL;
-       }
-}
-
-static void
-draw_state(ModeInfo * mi, int state)
-{
-       demonstruct *dp = &demons[MI_SCREEN(mi)];
-       GC          gc;
-       XRectangle *rects;
-       CellList   *current;
-
-       if (!state) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_BLACK_PIXEL(mi));
-               gc = MI_GC(mi);
-       } else if (MI_NPIXELS(mi) >= NUMSTIPPLES) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi),
-                          MI_PIXEL(mi, (((int) state - 1) * MI_NPIXELS(mi) /
-                                        (dp->states - 1)) % MI_NPIXELS(mi)));
-               gc = MI_GC(mi);
-       } else {
-               XGCValues   gcv;
-
-               gcv.stipple = dp->pixmaps[(state - 1) % (NUMSTIPPLES - 1)];
-               gcv.foreground = MI_WHITE_PIXEL(mi);
-               gcv.background = MI_BLACK_PIXEL(mi);
-               XChangeGC(MI_DISPLAY(mi), dp->stippledGC,
-                         GCStipple | GCForeground | GCBackground, &gcv);
-               gc = dp->stippledGC;
-       }
-       if (dp->neighbors == 6) {       /* Draw right away, slow */
-               current = dp->cellList[state];
-               while (current) {
-                       int         col, row, ccol, crow;
-
-                       col = current->pt.x;
-                       row = current->pt.y;
-                       ccol = 2 * col + !(row & 1), crow = 2 * row;
-                       dp->shape.hexagon[0].x = dp->xb + ccol * dp->xs;
-                       dp->shape.hexagon[0].y = dp->yb + crow * dp->ys;
-                       if (dp->xs == 1 && dp->ys == 1)
-                               XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                              gc, dp->shape.hexagon[0].x, dp->shape.hexagon[0].y, 1, 1);
-                       else
-                               XFillPolygon(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                                            dp->shape.hexagon, 6, Convex, CoordModePrevious);
-                       current = current->next;
-               }
-       } else if (dp->neighbors == 4 || dp->neighbors == 8) {
-               /* Take advantage of XDrawRectangles */
-               int         ncells = 0;
-
-               /* Create Rectangle list from part of the cellList */
-               rects = (XRectangle *) malloc(dp->ncells[state] * sizeof (XRectangle));
-               current = dp->cellList[state];
-               while (current) {
-                       rects[ncells].x = dp->xb + current->pt.x * dp->xs;
-                       rects[ncells].y = dp->yb + current->pt.y * dp->ys;
-                       rects[ncells].width = dp->xs - (dp->xs > 3);
-                       rects[ncells].height = dp->ys - (dp->ys > 3);
-                       current = current->next;
-                       ncells++;
-               }
-               /* Finally get to draw */
-               XFillRectangles(MI_DISPLAY(mi), MI_WINDOW(mi), gc, rects, ncells);
-               /* Free up rects list and the appropriate part of the cellList */
-               (void) free((void *) rects);
-       } else {                /* TRI */
-               current = dp->cellList[state];
-               while (current) {
-                       int         col, row, orient;
-
-                       col = current->pt.x;
-                       row = current->pt.y;
-                       orient = (col + row) % 2;       /* O left 1 right */
-                       dp->shape.triangle[orient][0].x = dp->xb + col * dp->xs;
-                       dp->shape.triangle[orient][0].y = dp->yb + row * dp->ys;
-                       if (dp->xs <= 3 || dp->ys <= 3)
-                               XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                                              ((orient) ? -1 : 1) + dp->shape.triangle[orient][0].x,
-                                     dp->shape.triangle[orient][0].y, 1, 1);
-                       else {
-                               if (orient)
-                                       dp->shape.triangle[orient][0].x += (dp->xs / 2 - 1);
-                               else
-                                       dp->shape.triangle[orient][0].x -= (dp->xs / 2 - 1);
-                               XFillPolygon(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                                            dp->shape.triangle[orient], 3, Convex, CoordModePrevious);
-                       }
-                       current = current->next;
-               }
-       }
-       free_state(dp, state);
-       XFlush(MI_DISPLAY(mi));
-}
-
-static void
-RandomSoup(ModeInfo * mi)
-{
-       demonstruct *dp = &demons[MI_SCREEN(mi)];
-       int         row, col, mrow = 0;
-
-       for (row = 0; row < dp->nrows; ++row) {
-               for (col = 0; col < dp->ncols; ++col) {
-                       dp->oldcell[col + mrow] =
-                               (unsigned char) LRAND() % ((unsigned char) dp->states);
-                       addtolist(mi, col, row, dp->oldcell[col + mrow]);
-               }
-               mrow += dp->ncols;
-       }
-}
-
-void
-init_demon(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       int         size = MI_SIZE(mi), nk;
-       demonstruct *dp;
-
-       if (demons == NULL) {
-               if ((demons = (demonstruct *) calloc(MI_NUM_SCREENS(mi),
-                                             sizeof (demonstruct))) == NULL)
-                       return;
-       }
-       dp = &demons[MI_SCREEN(mi)];
-       dp->generation = 0;
-       dp->redrawing = 0;
-       if (MI_NPIXELS(mi) < NUMSTIPPLES) {
-               if (dp->stippledGC == None) {
-                       XGCValues   gcv;
-
-                       gcv.fill_style = FillOpaqueStippled;
-                       dp->stippledGC = XCreateGC(display, window, GCFillStyle, &gcv);
-               }
-               if (dp->init_bits == 0) {
-                       int         i;
-
-                       for (i = 1; i < NUMSTIPPLES; i++)
-                               DEMONBITS(stipples[i], STIPPLESIZE, STIPPLESIZE);
-               }
-       }
-       free_struct(dp);
-
-       for (nk = 0; nk < NEIGHBORKINDS; nk++) {
-               if (neighbors == plots[0][nk]) {
-                       dp->neighbors = plots[0][nk];
-                       break;
-               }
-               if (nk == NEIGHBORKINDS - 1) {
-                       nk = NRAND(NEIGHBORKINDS);
-                       dp->neighbors = plots[0][nk];
-                       break;
-               }
-       }
-
-       dp->states = MI_COUNT(mi);
-       if (dp->states < -MINSTATES)
-               dp->states = NRAND(-dp->states - MINSTATES + 1) + MINSTATES;
-       else if (dp->states < MINSTATES)
-               dp->states = plots[1][nk];
-       dp->cellList = (CellList **) calloc(dp->states, sizeof (CellList *));
-       dp->ncells = (int *) calloc(dp->states, sizeof (int));
-
-       dp->state = 0;
-
-       dp->width = MI_WIDTH(mi);
-       dp->height = MI_HEIGHT(mi);
-
-       if (dp->neighbors == 6) {
-               int         nccols, ncrows, i;
-
-               if (dp->width < 2)
-                       dp->width = 2;
-               if (dp->height < 4)
-                       dp->height = 4;
-               if (size < -MINSIZE)
-                       dp->ys = NRAND(MIN(-size, MAX(MINSIZE, MIN(dp->width, dp->height) /
-                                     MINGRIDSIZE)) - MINSIZE + 1) + MINSIZE;
-               else if (size < MINSIZE) {
-                       if (!size)
-                               dp->ys = MAX(MINSIZE, MIN(dp->width, dp->height) / MINGRIDSIZE);
-                       else
-                               dp->ys = MINSIZE;
-               } else
-                       dp->ys = MIN(size, MAX(MINSIZE, MIN(dp->width, dp->height) /
-                                              MINGRIDSIZE));
-               dp->xs = dp->ys;
-               nccols = MAX(dp->width / dp->xs - 2, 2);
-               ncrows = MAX(dp->height / dp->ys - 1, 2);
-               dp->ncols = nccols / 2;
-               dp->nrows = 2 * (ncrows / 4);
-               dp->xb = (dp->width - dp->xs * nccols) / 2 + dp->xs / 2;
-               dp->yb = (dp->height - dp->ys * (ncrows / 2) * 2) / 2 + dp->ys;
-               for (i = 0; i < 6; i++) {
-                       dp->shape.hexagon[i].x = (dp->xs - 1) * hexagonUnit[i].x;
-                       dp->shape.hexagon[i].y = ((dp->ys - 1) * hexagonUnit[i].y / 2) * 4 / 3;
-               }
-       } else if (dp->neighbors == 4 || dp->neighbors == 8) {
-               if (size < -MINSIZE)
-                       dp->ys = NRAND(MIN(-size, MAX(MINSIZE, MIN(dp->width, dp->height) /
-                                     MINGRIDSIZE)) - MINSIZE + 1) + MINSIZE;
-               else if (size < MINSIZE) {
-                       if (!size)
-                               dp->ys = MAX(MINSIZE, MIN(dp->width, dp->height) / MINGRIDSIZE);
-                       else
-                               dp->ys = MINSIZE;
-               } else
-                       dp->ys = MIN(size, MAX(MINSIZE, MIN(dp->width, dp->height) /
-                                              MINGRIDSIZE));
-               dp->xs = dp->ys;
-               dp->ncols = MAX(dp->width / dp->xs, 2);
-               dp->nrows = MAX(dp->height / dp->ys, 2);
-               dp->xb = (dp->width - dp->xs * dp->ncols) / 2;
-               dp->yb = (dp->height - dp->ys * dp->nrows) / 2;
-       } else {                /* TRI */
-               int         orient, i;
-
-               if (dp->width < 2)
-                       dp->width = 2;
-               if (dp->height < 2)
-                       dp->height = 2;
-               if (size < -MINSIZE)
-                       dp->ys = NRAND(MIN(-size, MAX(MINSIZE, MIN(dp->width, dp->height) /
-                                     MINGRIDSIZE)) - MINSIZE + 1) + MINSIZE;
-               else if (size < MINSIZE) {
-                       if (!size)
-                               dp->ys = MAX(MINSIZE, MIN(dp->width, dp->height) / MINGRIDSIZE);
-                       else
-                               dp->ys = MINSIZE;
-               } else
-                       dp->ys = MIN(size, MAX(MINSIZE, MIN(dp->width, dp->height) /
-                                              MINGRIDSIZE));
-               dp->xs = (int) (1.52 * dp->ys);
-               dp->ncols = (MAX(dp->width / dp->xs - 1, 2) / 2) * 2;
-               dp->nrows = (MAX(dp->height / dp->ys - 1, 2) / 2) * 2;
-               dp->xb = (dp->width - dp->xs * dp->ncols) / 2 + dp->xs / 2;
-               dp->yb = (dp->height - dp->ys * dp->nrows) / 2 + dp->ys / 2;
-               for (orient = 0; orient < 2; orient++) {
-                       for (i = 0; i < 3; i++) {
-                               dp->shape.triangle[orient][i].x =
-                                       (dp->xs - 2) * triangleUnit[orient][i].x;
-                               dp->shape.triangle[orient][i].y =
-                                       (dp->ys - 2) * triangleUnit[orient][i].y;
-                       }
-               }
-       }
-
-       MI_CLEARWINDOW(mi);
-
-       dp->oldcell = (unsigned char *)
-               malloc(dp->ncols * dp->nrows * sizeof (unsigned char));
-
-       dp->newcell = (unsigned char *)
-               malloc(dp->ncols * dp->nrows * sizeof (unsigned char));
-
-       RandomSoup(mi);
-}
-
-void
-draw_demon(ModeInfo * mi)
-{
-       demonstruct *dp = &demons[MI_SCREEN(mi)];
-       int         i, j, k, l, mj = 0, ml;
-
-       MI_IS_DRAWN(mi) = True;
-
-       if (dp->state >= dp->states) {
-               (void) memcpy((char *) dp->newcell, (char *) dp->oldcell,
-                             dp->ncols * dp->nrows * sizeof (unsigned char));
-
-               if (dp->neighbors == 6) {
-                       for (j = 0; j < dp->nrows; j++) {
-                               for (i = 0; i < dp->ncols; i++) {
-                                       /* NE */
-                                       if (!(j & 1))
-                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                       else
-                                               k = i;
-                                       l = (!j) ? dp->nrows - 1 : j - 1;
-                                       ml = l * dp->ncols;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* E */
-                                       k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                       l = j;
-                                       ml = mj;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* SE */
-                                       if (!(j & 1))
-                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                       else
-                                               k = i;
-                                       l = (j + 1 == dp->nrows) ? 0 : j + 1;
-                                       ml = l * dp->ncols;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* SW */
-                                       if (j & 1)
-                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                       else
-                                               k = i;
-                                       l = (j + 1 == dp->nrows) ? 0 : j + 1;
-                                       ml = l * dp->ncols;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* W */
-                                       k = (!i) ? dp->ncols - 1 : i - 1;
-                                       l = j;
-                                       ml = mj;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* NW */
-                                       if (j & 1)
-                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                       else
-                                               k = i;
-                                       l = (!j) ? dp->nrows - 1 : j - 1;
-                                       ml = l * dp->ncols;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                               }
-                               mj += dp->ncols;
-                       }
-               } else if (dp->neighbors == 4 || dp->neighbors == 8) {
-                       for (j = 0; j < dp->nrows; j++) {
-                               for (i = 0; i < dp->ncols; i++) {
-                                       /* N */
-                                       k = i;
-                                       l = (!j) ? dp->nrows - 1 : j - 1;
-                                       ml = l * dp->ncols;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* E */
-                                       k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                       l = j;
-                                       ml = mj;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* S */
-                                       k = i;
-                                       l = (j + 1 == dp->nrows) ? 0 : j + 1;
-                                       ml = l * dp->ncols;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* W */
-                                       k = (!i) ? dp->ncols - 1 : i - 1;
-                                       l = j;
-                                       ml = mj;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                               }
-                               mj += dp->ncols;
-                       }
-                       if (dp->neighbors == 8) {
-                               mj = 0;
-                               for (j = 0; j < dp->nrows; j++) {
-                                       for (i = 0; i < dp->ncols; i++) {
-                                               /* NE */
-                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                               l = (!j) ? dp->nrows - 1 : j - 1;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                               /* SE */
-                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                               l = (j + 1 == dp->nrows) ? 0 : j + 1;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                               /* SW */
-                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                               l = (j + 1 == dp->nrows) ? 0 : j + 1;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                               /* NW */
-                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                               l = (!j) ? dp->nrows - 1 : j - 1;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       }
-                                       mj += dp->ncols;
-                               }
-                       }
-               } else if (dp->neighbors == 3 || dp->neighbors == 9 ||
-                          dp->neighbors == 12) {
-                       for (j = 0; j < dp->nrows; j++) {
-                               for (i = 0; i < dp->ncols; i++) {
-                                       if ((i + j) % 2) {      /* right */
-                                               /* W */
-                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                               l = j;
-                                               ml = mj;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       } else {        /* left */
-                                               /* E */
-                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                               l = j;
-                                               ml = mj;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       }
-                                       /* N */
-                                       k = i;
-                                       l = (!j) ? dp->nrows - 1 : j - 1;
-                                       ml = l * dp->ncols;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       /* S */
-                                       k = i;
-                                       l = (j + 1 == dp->nrows) ? 0 : j + 1;
-                                       ml = l * dp->ncols;
-                                       if (dp->oldcell[k + ml] ==
-                                           (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                               dp->newcell[i + mj] = dp->oldcell[k + ml];
-                               }
-                               mj += dp->ncols;
-                       }
-                       if (dp->neighbors == 9 || dp->neighbors == 12) {
-                               mj = 0;
-                               for (j = 0; j < dp->nrows; j++) {
-                                       for (i = 0; i < dp->ncols; i++) {
-                                               /* NN */
-                                               k = i;
-                                               if (!j)
-                                                       l = dp->nrows - 2;
-                                               else if (!(j - 1))
-                                                       l = dp->nrows - 1;
-                                               else
-                                                       l = j - 2;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                               /* SS */
-                                               k = i;
-                                               if (j + 1 == dp->nrows)
-                                                       l = 1;
-                                               else if (j + 2 == dp->nrows)
-                                                       l = 0;
-                                               else
-                                                       l = j + 2;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                               /* NW */
-                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                               l = (!j) ? dp->nrows - 1 : j - 1;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                               /* NE */
-                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                               l = (!j) ? dp->nrows - 1 : j - 1;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                               /* SW */
-                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                               l = (j + 1 == dp->nrows) ? 0 : j + 1;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                               /* SE */
-                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                               l = (j + 1 == dp->nrows) ? 0 : j + 1;
-                                               ml = l * dp->ncols;
-                                               if (dp->oldcell[k + ml] ==
-                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                       }
-                                       mj += dp->ncols;
-                               }
-                               if (dp->neighbors == 12) {
-                                       mj = 0;
-                                       for (j = 0; j < dp->nrows; j++) {
-                                               for (i = 0; i < dp->ncols; i++) {
-                                                       if ((i + j) % 2) {      /* right */
-                                                               /* NNW */
-                                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                                               if (!j)
-                                                                       l = dp->nrows - 2;
-                                                               else if (!(j - 1))
-                                                                       l = dp->nrows - 1;
-                                                               else
-                                                                       l = j - 2;
-                                                               ml = l * dp->ncols;
-                                                               if (dp->oldcell[k + ml] ==
-                                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                                               /* SSW */
-                                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                                               if (j + 1 == dp->nrows)
-                                                                       l = 1;
-                                                               else if (j + 2 == dp->nrows)
-                                                                       l = 0;
-                                                               else
-                                                                       l = j + 2;
-                                                               ml = l * dp->ncols;
-                                                               if (dp->oldcell[k + ml] ==
-                                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                                               /* EE */
-                                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                                               l = j;
-                                                               ml = mj;
-                                                               if (dp->oldcell[k + ml] ==
-                                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                                       } else {        /* left */
-                                                               /* NNE */
-                                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                                               if (!j)
-                                                                       l = dp->nrows - 2;
-                                                               else if (!(j - 1))
-                                                                       l = dp->nrows - 1;
-                                                               else
-                                                                       l = j - 2;
-                                                               ml = l * dp->ncols;
-                                                               if (dp->oldcell[k + ml] ==
-                                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                                               /* SSE */
-                                                               k = (i + 1 == dp->ncols) ? 0 : i + 1;
-                                                               if (j + 1 == dp->nrows)
-                                                                       l = 1;
-                                                               else if (j + 2 == dp->nrows)
-                                                                       l = 0;
-                                                               else
-                                                                       l = j + 2;
-                                                               ml = l * dp->ncols;
-                                                               if (dp->oldcell[k + ml] ==
-                                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                                               /* WW */
-                                                               k = (!i) ? dp->ncols - 1 : i - 1;
-                                                               l = j;
-                                                               ml = mj;
-                                                               if (dp->oldcell[k + ml] ==
-                                                                   (int) (dp->oldcell[i + mj] + 1) % dp->states)
-                                                                       dp->newcell[i + mj] = dp->oldcell[k + ml];
-                                                       }
-                                               }
-                                               mj += dp->ncols;
-                                       }
-                               }
-                       }
-               }
-               mj = 0;
-               for (j = 0; j < dp->nrows; j++) {
-                       for (i = 0; i < dp->ncols; i++)
-                               if (dp->oldcell[i + mj] != dp->newcell[i + mj]) {
-                                       dp->oldcell[i + mj] = dp->newcell[i + mj];
-                                       addtolist(mi, i, j, dp->oldcell[i + mj]);
-                               }
-                       mj += dp->ncols;
-               }
-               if (++dp->generation > MI_CYCLES(mi))
-                       init_demon(mi);
-               dp->state = 0;
-       } else {
-               if (dp->ncells[dp->state])
-                       draw_state(mi, dp->state);
-               dp->state++;
-       }
-       if (dp->redrawing) {
-               for (i = 0; i < REDRAWSTEP; i++) {
-                       if (dp->oldcell[dp->redrawpos]) {
-                               drawcell(mi, dp->redrawpos % dp->ncols, dp->redrawpos / dp->ncols,
-                                        dp->oldcell[dp->redrawpos]);
-                       }
-                       if (++(dp->redrawpos) >= dp->ncols * dp->nrows) {
-                               dp->redrawing = 0;
-                               break;
-                       }
-               }
-       }
-}
-void
-release_demon(ModeInfo * mi)
-{
-       if (demons != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       demonstruct *dp = &demons[screen];
-                       int         shade;
-
-                       if (dp->stippledGC != None) {
-                               XFreeGC(MI_DISPLAY(mi), dp->stippledGC);
-                       }
-                       for (shade = 0; shade < dp->init_bits; shade++)
-                               XFreePixmap(MI_DISPLAY(mi), dp->pixmaps[shade]);
-                       free_struct(dp);
-               }
-               (void) free((void *) demons);
-               demons = NULL;
-       }
-} void
-
-refresh_demon(ModeInfo * mi)
-{
-       demonstruct *dp = &demons[MI_SCREEN(mi)];
-
-       dp->redrawing = 1;
-       dp->redrawpos = 0;
-}
diff --git a/hacks/discrete.c b/hacks/discrete.c
deleted file mode 100644 (file)
index 7f336a6..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* discrete --- chaotic mappings */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)discrete.c 4.10 98/04/24 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1996 by Tim Auckland <Tim.Auckland@Sun.COM>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * "discrete" shows a number of fractals based on the "discrete map"
- * type of dynamical systems.  They include a different way of looking
- * at the HOPALONG system, an inverse julia-set iteration, the "Standard
- * Map" and the "Bird in a Thornbush" fractal.
- *
- * Revision History:
- * 31-Jul-97: Ported to xlockmore-4
- * 08-Aug-96: Adapted from hop.c Copyright (c) 1991 by Patrick J. Naughton.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS             "Discrete"
-# define HACK_INIT             init_discrete
-# define HACK_DRAW             draw_discrete
-# define discrete_opts xlockmore_opts
-# define SMOOTH_COLORS
-# define BRIGHT_COLORS
-# define DEFAULTS              "*delay:  1000 \n" \
-                                               "*count:  4096 \n" \
-                                               "*cycles: 2500 \n" \
-                                               "*ncolors: 100 \n"
-
-# include "xlockmore.h"                /* in xscreensaver distribution */
-# include "erase.h"
-
-#else /* STANDALONE */
-# include "xlock.h"            /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-ModeSpecOpt discrete_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   discrete_description =
-{"discrete", "init_discrete", "draw_discrete", "release_discrete",
- "refresh_discrete", "init_discrete", NULL, &discrete_opts,
- 1000, 4096, 2500, 1, 64, 1.0, "",
- "Shows various discrete maps", 0, NULL};
-
-#endif
-
-enum ftypes {
-       SQRT, BIRDIE, STANDARD, TRIG, CUBIC, HENON, AILUJ, HSHOE, DELOG
-};
-
-/*#define TEST STANDARD */
-
-#define BIASES 18
-static int  bias[BIASES] =
-{
-       STANDARD, STANDARD, STANDARD, STANDARD,
-       SQRT, SQRT, SQRT, SQRT,
-       BIRDIE, BIRDIE, BIRDIE,
-       AILUJ, AILUJ, AILUJ,
-       TRIG, TRIG,
-       CUBIC,
-       HENON,
-};
-
-typedef struct {
-       int         maxx;
-       int         maxy;       /* max of the screen */
-       double      a;
-       double      b;
-       double      c;
-       double      d;
-       double      e;
-       double      i;
-       double      j;          /* discrete parameters */
-       double      ic;
-       double      jc;
-       double      is;
-       double      js;
-       int         inc;
-       int         pix;
-       enum ftypes op;
-       int         count;
-       XPoint     *pointBuffer;        /* pointer for XDrawPoints */
-} discretestruct;
-
-static discretestruct *discretes = NULL;
-
-void
-init_discrete(ModeInfo * mi)
-{
-       double      range;
-       discretestruct *hp;
-
-       if (discretes == NULL) {
-               if ((discretes =
-                    (discretestruct *) calloc(MI_NUM_SCREENS(mi),
-                                          sizeof (discretestruct))) == NULL)
-                       return;
-       }
-       hp = &discretes[MI_SCREEN(mi)];
-
-
-       hp->maxx = MI_WIDTH(mi);
-       hp->maxy = MI_HEIGHT(mi);
-#ifdef TEST
-       hp->op = TEST;
-#else
-       hp->op = bias[LRAND() % BIASES];
-#endif
-       switch (hp->op) {
-               case HSHOE:
-                       hp->ic = 0;
-                       hp->jc = 0;
-                       hp->is = hp->maxx / (4);
-                       hp->js = hp->maxy / (4);
-                       hp->a = 0.5;
-                       hp->b = 0.5;
-                       hp->c = 0.2;
-                       hp->d = -1.25;
-                       hp->e = 1;
-                       hp->i = hp->j = 0.0;
-                       break;
-               case DELOG:
-                       hp->ic = 0.5;
-                       hp->jc = 0.3;
-                       hp->is = hp->maxx / 1.5;
-                       hp->js = hp->maxy / 1.5;
-                       hp->a = 2.176399;
-                       hp->i = hp->j = 0.01;
-                       break;
-               case HENON:
-                       hp->jc = ((LRAND() / MAXRAND) * 2.0 - 1.0) * 0.4;
-                       hp->ic = 1.3 * (1 - (hp->jc * hp->jc) / (0.4 * 0.4));
-                       hp->is = hp->maxx;
-                       hp->js = hp->maxy * 1.5;
-                       hp->a = 1;
-                       hp->b = 1.4;
-                       hp->c = 0.3;
-                       hp->i = hp->j = 0;
-                       break;
-               case SQRT:
-                       hp->ic = 0;
-                       hp->jc = 0;
-                       hp->is = 1;
-                       hp->js = 1;
-                       range = sqrt((double) hp->maxx * 2 * hp->maxx * 2 +
-                                    (double) hp->maxy * 2 * hp->maxy * 2) /
-                               (10.0 + LRAND() % 10);
-
-                       hp->a = (LRAND() / MAXRAND) * range - range / 2.0;
-                       hp->b = (LRAND() / MAXRAND) * range - range / 2.0;
-                       hp->c = (LRAND() / MAXRAND) * range - range / 2.0;
-                       if (!(LRAND() % 2))
-                               hp->c = 0.0;
-                       hp->i = hp->j = 0.0;
-                       break;
-               case STANDARD:
-                       hp->ic = M_PI;
-                       hp->jc = M_PI;
-                       hp->is = hp->maxx / (M_PI * 2);
-                       hp->js = hp->maxy / (M_PI * 2);
-                       hp->a = 0;      /* decay */
-                       hp->b = (LRAND() / MAXRAND) * 2.0;
-                       hp->c = 0;
-                       hp->i = M_PI;
-                       hp->j = M_PI;
-                       break;
-               case BIRDIE:
-                       hp->ic = 0;
-                       hp->jc = 0;
-                       hp->is = hp->maxx / 2;
-                       hp->js = hp->maxy / 2;
-                       hp->a = 1.99 + ((LRAND() / MAXRAND) * 2.0 - 1.0) * 0.2;
-                       hp->b = 0;
-                       hp->c = 0.8 + ((LRAND() / MAXRAND) * 2.0 - 1.0) * 0.1;
-                       hp->i = hp->j = 0;
-                       break;
-               case TRIG:
-                       hp->a = 5;
-                       hp->b = 0.5 + ((LRAND() / MAXRAND) * 2.0 - 1.0) * 0.3;
-                       hp->ic = hp->a;
-                       hp->jc = 0;
-                       hp->is = hp->maxx / (hp->b * 20);
-                       hp->js = hp->maxy / (hp->b * 20);
-                       hp->i = hp->j = 0;
-                       break;
-               case CUBIC:
-                       hp->a = 2.77;
-                       hp->b = 0.1 + ((LRAND() / MAXRAND) * 2.0 - 1.0) * 0.1;
-                       hp->ic = 0;
-                       hp->jc = 0;
-                       hp->is = hp->maxx / 4;
-                       hp->js = hp->maxy / 4;
-                       hp->i = hp->j = 0.1;
-                       break;
-               case AILUJ:
-                       {
-                               int         i;
-                               double      x, y, xn, yn;
-
-                               hp->ic = 0;
-                               hp->jc = 0;
-                               hp->is = hp->maxx / 4;
-                               hp->js = hp->maxx / 4;
-                               do {
-                                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * 1.5 - 0.5;
-                                       hp->b = ((LRAND() / MAXRAND) * 2.0 - 1.0) * 1.5;
-                                       x = y = 0;
-#define MAXITER 10
-                                       for (i = 0; i < MAXITER && x * x + y * y < 13; i++) {   /* 'Brot calc */
-                                               xn = x * x - y * y + hp->a;
-                                               yn = 2 * x * y + hp->b;
-                                               x = xn;
-                                               y = yn;
-                                       }
-                               } while (i < MAXITER);  /* wait for a connected set */
-                               hp->i = hp->j = 0.1;
-                               break;
-                       }
-       }
-       hp->pix = 0;
-       hp->inc = 0;
-
-       if (hp->pointBuffer == NULL)
-               hp->pointBuffer = (XPoint *) malloc(MI_COUNT(mi) * sizeof (XPoint));
-
-       /* Clear the background. */
-       MI_CLEARWINDOW(mi);
-
-       hp->count = 0;
-}
-
-
-void
-draw_discrete(ModeInfo * mi)
-{
-       Display    *dsp = MI_DISPLAY(mi);
-       Window      win = MI_WINDOW(mi);
-       double      oldj, oldi;
-       int         batchcount = MI_COUNT(mi);
-       int         cycles = MI_CYCLES(mi);
-       int         k;
-       XPoint     *xp;
-       GC          gc = MI_GC(mi);
-       discretestruct *hp = &discretes[MI_SCREEN(mi)];
-
-       k = batchcount;
-       xp = hp->pointBuffer;
-
-       hp->inc++;
-
-       if (MI_NPIXELS(mi) > 2) {
-               XSetForeground(dsp, gc, MI_PIXEL(mi, hp->pix));
-               if (++hp->pix >= MI_NPIXELS(mi))
-                       hp->pix = 0;
-       }
-       while (k--) {
-               oldj = hp->j;
-               oldi = hp->i;
-               switch (hp->op) {
-                       case HSHOE:
-                               {
-                                       int         i;
-
-#if 0
-                                       if (!k) {
-                                               XSetForeground(dsp, gc, MI_BLACK_PIXEL(mi));
-                                               XFillRectangle(dsp, win, gc, 0, 0, hp->maxx, hp->maxy);
-                                               XSetForeground(dsp, gc, MI_PIXEL(mi, hp->pix));
-                                       } else
-#endif
-#define HD
-#ifdef HD
-                                       if (k < batchcount / 4) {
-                                               hp->i = ((double) k / batchcount) * 8 - 1;
-                                               hp->j = 1;
-                                       } else if (k < batchcount / 2) {
-                                               hp->i = 1;
-                                               hp->j = 3 - ((double) k / batchcount) * 8;
-                                       } else if (k < 3 * batchcount / 4) {
-                                               hp->i = 5 - ((double) k / batchcount) * 8;
-                                               hp->j = -1;
-                                       } else {
-                                               hp->i = -1;
-                                               hp->j = ((double) k / batchcount) * 8 - 7;
-                                       }
-                                       for (i = 1; i < (hp->inc % 15); i++) {
-                                               oldj = hp->j;
-                                               oldi = hp->i;
-#endif
-                                               hp->i = (hp->a * oldi + hp->b) * oldj;
-                                               hp->j = (hp->e - hp->d + hp->c * oldi) * oldj * oldj - hp->c * oldi + hp->d;
-#ifdef HD
-                                       }
-#endif
-                                       break;
-                               }
-                       case DELOG:
-                               hp->j = oldi;
-                               hp->i = hp->a * oldi * (1 - oldj);
-                               break;
-                       case HENON:
-                               hp->i = oldj + hp->a - hp->b * oldi * oldi;
-                               hp->j = hp->c * oldi;
-                               break;
-                       case SQRT:
-                               if (k) {
-                                       hp->j = hp->a + hp->i;
-                                       hp->i = -oldj + (hp->i < 0
-                                       ? sqrt(fabs(hp->b * (hp->i - hp->c)))
-                                                        : -sqrt(fabs(hp->b * (hp->i - hp->c))));
-                               } else {
-                                       static int  s = 1;
-
-                                       hp->i = s * hp->inc * hp->maxx / cycles / 2;
-                                       hp->j = hp->a + hp->i;
-                                       s = -s;
-                               }
-                               break;
-                       case STANDARD:
-                               if (k) {
-                                       hp->j = (1 - hp->a) * oldj + hp->b * sin(oldi) + hp->a * hp->c;
-                                       hp->j = fmod(hp->j + 2 * M_PI, 2 * M_PI);
-                                       hp->i = oldi + hp->j;
-                                       hp->i = fmod(hp->i + 2 * M_PI, 2 * M_PI);
-                               } else {
-                                       static int  s = 1;
-
-                                       hp->j = M_PI + fmod(s * hp->inc * 2 * M_PI / (cycles - 0.5), M_PI);
-                                       hp->i = M_PI;
-                                       s = -s;
-                               }
-                               break;
-                       case BIRDIE:
-                               hp->j = oldi;
-                               hp->i = (1 - hp->c) * cos(M_PI * hp->a * oldj) + hp->c * hp->b;
-                               hp->b = oldj;
-                               break;
-                       case TRIG:
-                               {
-                                       double      r2 = oldi * oldi + oldj * oldj;
-
-                                       hp->i = hp->a + hp->b * (oldi * cos(r2) - oldj * sin(r2));
-                                       hp->j = hp->b * (oldj * cos(r2) + oldi * sin(r2));
-                               }
-                               break;
-                       case CUBIC:
-                               hp->i = oldj;
-                               hp->j = hp->a * oldj - oldj * oldj * oldj - hp->b * oldi;
-                               break;
-                       case AILUJ:
-                               hp->i = ((LRAND() < MAXRAND / 2) ? -1 : 1) *
-                                       sqrt(((oldi - hp->a) +
-                                             sqrt((oldi - hp->a) * (oldi - hp->a) + (oldj - hp->b) * (oldj - hp->b))) / 2);
-                               hp->j = (oldj - hp->b) / (2 * hp->i);
-                               break;
-               }
-               xp->x = hp->maxx / 2 + (int) ((hp->i - hp->ic) * hp->is);
-               xp->y = hp->maxy / 2 - (int) ((hp->j - hp->jc) * hp->js);
-               xp++;
-       }
-       XDrawPoints(dsp, win, gc, hp->pointBuffer, batchcount, CoordModeOrigin);
-       if (++hp->count > cycles) {
-#ifdef STANDALONE
-               erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif /* STANDALONE */
-               init_discrete(mi);
-       }
-}
-
-void
-release_discrete(ModeInfo * mi)
-{
-       if (discretes != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       discretestruct *hp = &discretes[screen];
-
-                       if (hp->pointBuffer != NULL)
-                               (void) free((void *) hp->pointBuffer);
-               }
-               (void) free((void *) discretes);
-               discretes = NULL;
-       }
-}
-
-void
-refresh_discrete(ModeInfo * mi)
-{
-       MI_CLEARWINDOW(mi);
-}
diff --git a/hacks/distort.c b/hacks/distort.c
deleted file mode 100644 (file)
index dc8852d..0000000
+++ /dev/null
@@ -1,600 +0,0 @@
-/* -*- mode: C; tab-width: 4 -*-
- * xscreensaver, Copyright (c) 1992, 1993, 1994, 1996, 1997, 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.
- */
-
-/* distort
- * by Jonas Munsin (jmunsin@iki.fi) and Jamie Zawinski <jwz@jwz.org>
- * TODO:
- *     -check the allocations in init_round_lense again, maybe make it possible again
- *      to use swamp without pre-allocating/calculating (although that
- *      makes it slower) - -swamp is memory hungry
- *     -more distortion matrices (fortunately, I'm out of ideas :)
- * Stuff that would be cool but probably too much of a resource hog:
- *     -some kind of interpolation to avoid jaggies
- * program idea borrowed from a screensaver on a non-*NIX OS,
- */
-
-#include <math.h>
-#include "screenhack.h"
-#include <X11/Xutil.h>
-
-#ifdef HAVE_XSHM_EXTENSION
-# include "xshm.h"
-static Bool use_shm;
-static XShmSegmentInfo shm_info;
-#endif /* HAVE_XSHM_EXTENSION */
-
-struct coo {
-       int x;
-       int y;
-       int r, r_change;
-       int xmove, ymove;
-};
-static struct coo xy_coo[10];
-
-static int delay, radius, speed, number, blackhole, vortex, magnify, reflect;
-static XWindowAttributes xgwa;
-static GC gc;
-static Window g_window;
-static Display *g_dpy;
-static unsigned long black_pixel;
-
-static XImage *orig_map, *buffer_map;
-
-static int ***from;
-static int ****from_array;
-static void (*effect) (int) = NULL;
-static void move_lense(int);
-static void swamp_thing(int);
-static void new_rnd_coo(int);
-static void init_round_lense(void);
-static void (*draw) (int) = NULL;
-static void reflect_draw(int);
-static void plain_draw(int);
-
-static void init_distort(Display *dpy, Window window) 
-{
-       XGCValues gcv;
-       long gcflags;
-       int i;
-
-       g_window=window;
-       g_dpy=dpy;
-
-       delay = get_integer_resource("delay", "Integer");
-       radius = get_integer_resource("radius", "Integer");
-       speed = get_integer_resource("speed", "Integer");
-       number = get_integer_resource("number", "Integer");
-
-#ifdef HAVE_XSHM_EXTENSION
-       use_shm = get_boolean_resource("useSHM", "Boolean");
-#endif /* HAVE_XSHM_EXTENSION */
-       
-       blackhole = get_boolean_resource("blackhole", "Boolean");
-       vortex = get_boolean_resource("vortex", "Boolean");
-       magnify = get_boolean_resource("magnify", "Boolean");
-       reflect = get_boolean_resource("reflect", "Boolean");
-       
-       if (get_boolean_resource("swamp", "Boolean"))
-               effect = &swamp_thing;
-       if (get_boolean_resource("bounce", "Boolean"))
-               effect = &move_lense;
-
-       if (effect == NULL && radius == 0 && speed == 0 && number == 0
-               && !blackhole && !vortex && !magnify && !reflect) {
-/* if no cmdline options are given, randomly choose one of:
- * -radius 50 -number 4 -speed 1 -bounce
- * -radius 50 -number 4 -speed 1 -blackhole
- * -radius 50 -number 4 -speed 1 -vortex
- * -radius 50 -number 4 -speed 1 -vortex -magnify
- * -radius 50 -number 4 -speed 1 -vortex -magnify -blackhole
- * -radius 100 -number 1 -speed 2 -bounce
- * -radius 100 -number 1 -speed 2 -blackhole
- * -radius 100 -number 1 -speed 2 -vortex
- * -radius 100 -number 1 -speed 2 -vortex -magnify
- * -radius 100 -number 1 -speed 2 -vortex -magnify -blackhole
- * -radius 50 -number 4 -speed 2 -swamp
- * -radius 50 -number 4 -speed 2 -swamp -blackhole
- * -radius 50 -number 4 -speed 2 -swamp -vortex
- * -radius 50 -number 4 -speed 2 -swamp -vortex -magnify
- * -radius 50 -number 4 -speed 2 -swamp -vortex -magnify -blackhole
- * -radius 80 -number 1 -speed 2 -reflect
- * -radius 50 -number 3 -speed 2 -reflect
- */
-               
-               i = (random() % 17);
-
-               draw = &plain_draw;
-
-               switch (i) {
-                       case 0:
-                               radius=50;number=4;speed=1;
-                               effect=&move_lense;break;
-                       case 1:
-                               radius=50;number=4;speed=1;blackhole=1;
-                               effect=&move_lense;break;
-                       case 2:
-                               radius=50;number=4;speed=1;vortex=1;
-                               effect=&move_lense;break;
-                       case 3:
-                               radius=50;number=4;speed=1;vortex=1;magnify=1;
-                               effect=&move_lense;break;
-                       case 4:
-                               radius=50;number=4;speed=1;vortex=1;magnify=1;blackhole=1;
-                               effect=&move_lense;break;
-                       case 5:
-                               radius=100;number=1;speed=2;
-                               effect=&move_lense;break;
-                       case 6:
-                               radius=100;number=1;speed=2;blackhole=1;
-                               effect=&move_lense;break;
-                       case 7:
-                               radius=100;number=1;speed=2;vortex=1;
-                               effect=&move_lense;break;
-                       case 8:
-                               radius=100;number=1;speed=2;vortex=1;magnify=1;
-                               effect=&move_lense;break;
-                       case 9:
-                               radius=100;number=1;speed=2;vortex=1;magnify=1;blackhole=1;
-                               effect=&move_lense;break;
-                       case 10:
-                               radius=50;number=4;speed=2;
-                               effect=&swamp_thing;break;
-                       case 11:
-                               radius=50;number=4;speed=2;blackhole=1;
-                               effect=&swamp_thing;break;
-                       case 12:
-                               radius=50;number=4;speed=2;vortex=1;
-                               effect=&swamp_thing;break;
-                       case 13:
-                               radius=50;number=4;speed=2;vortex=1;magnify=1;
-                               effect=&swamp_thing;break;
-                       case 14:
-                               radius=50;number=4;speed=2;vortex=1;magnify=1;blackhole=1;
-                               effect=&swamp_thing;break;
-                       case 15:
-                               radius=80;number=1;speed=2;reflect=1;
-                               draw = &reflect_draw;effect = &move_lense;break;
-                       case 16: default:
-                               radius=50;number=4;speed=2;reflect=1;
-                               draw = &reflect_draw;effect = &move_lense;break;
-               }
-
-       }
-
-       if (delay < 0)
-               delay = 0;
-       if (radius <= 0)
-               radius = 60;
-       if (speed <= 0) 
-               speed = 2;
-       if (number <= 0)
-               number=1;
-       if (number >= 10)
-               number=1;
-       if (effect == NULL)
-               effect = &move_lense;
-       if (reflect) {
-               draw = &reflect_draw;
-               effect = &move_lense;
-       }
-       if (draw == NULL)
-               draw = &plain_draw;
-
-       XGetWindowAttributes (dpy, window, &xgwa);
-       black_pixel = BlackPixelOfScreen( xgwa.screen );
-
-       gcv.function = GXcopy;
-       gcv.subwindow_mode = IncludeInferiors;
-       gcflags = GCForeground |GCFunction;
-       if (use_subwindow_mode_p(xgwa.screen, window)) /* see grabscreen.c */
-               gcflags |= GCSubwindowMode;
-       gc = XCreateGC (dpy, window, gcflags, &gcv);
-
-       grab_screen_image (xgwa.screen, window);
-
-       buffer_map = 0;
-       orig_map = XGetImage(dpy, window, 0, 0, xgwa.width, xgwa.height,
-                                                ~0L, ZPixmap);
-
-# ifdef HAVE_XSHM_EXTENSION
-
-       if (use_shm)
-         {
-               buffer_map = create_xshm_image(dpy, xgwa.visual, orig_map->depth,
-                                                                          ZPixmap, 0, &shm_info,
-                                                                          2*radius + speed + 2,
-                                                                          2*radius + speed + 2);
-               if (!buffer_map)
-                 use_shm = False;
-         }
-# endif /* HAVE_XSHM_EXTENSION */
-
-       if (!buffer_map)
-         {
-               buffer_map = XCreateImage(dpy, xgwa.visual,
-                                                                 orig_map->depth, ZPixmap, 0, 0,
-                                                                 2*radius + speed + 2, 2*radius + speed + 2,
-                                                                 8, 0);
-               buffer_map->data = (char *)
-                 calloc(buffer_map->height, buffer_map->bytes_per_line);
-       }
-
-       init_round_lense();
-
-       for (i = 0; i < number; i++) {
-               new_rnd_coo(i);
-               if (number != 1)
-                       xy_coo[i].r = (i*radius)/(number-1); /* "randomize" initial */
-               else
-                        xy_coo[i].r = 0;
-               xy_coo[i].r_change = speed + (i%2)*2*(-speed);  /* values a bit */
-               xy_coo[i].xmove = speed + (i%2)*2*(-speed);
-               xy_coo[i].ymove = speed + (i%2)*2*(-speed);
-       }
-}
-
-/* example: initializes a "see-trough" matrix */
-/* static void make_null_lense(void)
-{
-       int i, j;
-       for (i = 0; i < 2*radius+speed+2; i++) {
-               for (j = 0 ; j < 2*radius+speed+2 ; j++) {
-                       from[i][j][0]=i;
-                       from[i][j][1]=j;
-               }
-       } 
-}
-*/
-
-/* makes a lense with the Radius=loop and centred in
- * the point (radius, radius)
- */
-static void make_round_lense(int radius, int loop)
-{
-       int i, j;
-
-       for (i = 0; i < 2*radius+speed+2; i++) {
-               for(j = 0; j < 2*radius+speed+2; j++) {
-                       double r, d;
-                       r = sqrt ((i-radius)*(i-radius)+(j-radius)*(j-radius));
-                       if (loop == 0)
-                         d=0.0;
-                       else
-                         d=r/loop;
-
-                       if (r < loop-1) {
-
-                               if (vortex) { /* vortex-twist effect */
-                                       double angle;
-               /* this one-line formula for getting a nice rotation angle is borrowed
-                * (with permission) from the whirl plugin for gimp,
-                * Copyright (C) 1996 Federico Mena Quintero
-                */
-               /* 2.5 is just a constant used because it looks good :) */
-                                       angle = 2.5*(1-d)*(1-d);
-
-        /* Avoid atan2: DOMAIN error message */
-                                       if ((radius-j) == 0.0 && (radius-i) == 0.0) {
-                                               from[i][j][0] = radius + cos(angle)*r;
-                                               from[i][j][1] = radius + sin(angle)*r;
-                                       } else {
-                                       from[i][j][0] = radius +
-                                                                       cos(angle - atan2(radius-j, -(radius-i)))*r;
-                                       from[i][j][1] = radius +
-                                                                       sin(angle - atan2(radius-j, -(radius-i)))*r;
-                                       }
-                                       if (magnify) {
-                                               r = sin(d*M_PI_2);
-                                               if (blackhole && r != 0) /* blackhole effect */
-                                                       r = 1/r;
-                                               from[i][j][0] = radius + (from[i][j][0]-radius)*r;
-                                               from[i][j][1] = radius + (from[i][j][1]-radius)*r;
-                                       }
-                               } else { /* default is to magnify */
-                                       r = sin(d*M_PI_2);
-                               
-       /* raising r to different power here gives different amounts of
-        * distortion, a negative value sucks everything into a black hole
-        */
-                               /*      r = r*r; */
-                                       if (blackhole && r != 0) /* blackhole effect */
-                                               r = 1/r;
-                                                                       /* bubble effect (and blackhole) */
-                                       from[i][j][0] = radius + (i-radius)*r;
-                                       from[i][j][1] = radius + (j-radius)*r;
-                               }
-                       } else { /* not inside loop */
-                               from[i][j][0] = i;
-                               from[i][j][1] = j;
-                       }
-               }
-       }
-}
-
-#ifndef EXIT_FAILURE
-# define EXIT_FAILURE -1
-#endif
-
-static void allocate_lense(void)
-{
-       int i, j;
-       /* maybe this should be redone so that from[][][] is in one block;
-        * then pointers could be used instead of arrays in some places (and
-        * maybe give a speedup - maybe also consume less memory)
-        */
-
-       from = (int ***)malloc((2*radius+speed+2) * sizeof(int **));
-       if (from == NULL) {
-               perror("distort");
-               exit(EXIT_FAILURE);
-       }
-       for (i = 0; i < 2*radius+speed+2; i++) {
-               from[i] = (int **)malloc((2*radius+speed+2) * sizeof(int *));
-               if (from[i] == NULL) {
-                       perror("distort");
-                       exit(EXIT_FAILURE);
-               }
-               for (j = 0; j < 2*radius+speed+2; j++) {
-                       from[i][j] = (int *)malloc(2 * sizeof(int));
-                       if (from[i][j] == NULL) {
-                               perror("distort");
-                               exit(EXIT_FAILURE);
-                       }
-               }
-       }
-}
-
-/* from_array in an array containing precalculated from matrices,
- * this is a double faced mem vs speed trade, it's faster, but eats
- * _a lot_ of mem for large radius (is there a bug here? I can't see it)
- */
-static void init_round_lense(void)
-{
-       int k;
-
-       if (effect == &swamp_thing) {
-               from_array = (int ****)malloc((radius+1)*sizeof(int ***));
-               for (k=0; k <= radius; k++) {
-                       allocate_lense();
-                       make_round_lense(radius, k);
-                       from_array[k] = from;
-               }
-       } else { /* just allocate one from[][][] */
-               allocate_lense();
-               make_round_lense(radius,radius);
-       }
-}
-
-
-/* generate an XImage of from[][][] and draw it on the screen */
-void plain_draw(int k)
-{
-       int i, j;
-       for(i = 0 ; i < 2*radius+speed+2; i++) {
-               for(j = 0 ; j < 2*radius+speed+2 ; j++) {
-                       if (xy_coo[k].x+from[i][j][0] >= 0 &&
-                                       xy_coo[k].x+from[i][j][0] < xgwa.width &&
-                                       xy_coo[k].y+from[i][j][1] >= 0 &&
-                                       xy_coo[k].y+from[i][j][1] < xgwa.height)
-                               XPutPixel(buffer_map, i, j,
-                                               XGetPixel(orig_map,
-                                                       xy_coo[k].x+from[i][j][0],
-                                                       xy_coo[k].y+from[i][j][1]));
-               }
-       }
-
-       XPutImage(g_dpy, g_window, gc, buffer_map, 0, 0, xy_coo[k].x, xy_coo[k].y,
-                       2*radius+speed+2, 2*radius+speed+2);
-}
-
-/* generate an XImage from the reflect algoritm submitted by
- * Randy Zack <randy@acucorp.com>
- * draw really got too big and ugly so I split it up
- * it should be possible to use the from[][] to speed it up
- * (once I figure out the algorithm used :)
- */
-void reflect_draw(int k)
-{
-       int i, j;
-       int     cx, cy;
-       int     ly, lysq, lx, ny, dist, rsq = radius * radius;
-
-       cx = cy = radius;
-       if (xy_coo[k].ymove > 0)
-               cy += speed;
-       if (xy_coo[k].xmove > 0)
-               cx += speed;
-
-       for(i = 0 ; i < 2*radius+speed+2; i++) {
-               ly = i - cy;
-               lysq = ly * ly;
-               ny = xy_coo[k].y + i;
-               for(j = 0 ; j < 2*radius+speed+2 ; j++) {
-                       lx = j - cx;
-                       dist = lx * lx + lysq;
-                       if (dist > rsq ||
-                               ly < -radius || ly > radius ||
-                               lx < -radius || lx > radius)
-                               XPutPixel( buffer_map, j, i,
-                                                  XGetPixel( orig_map, xy_coo[k].x + j, ny ));
-                       else if (dist == 0)
-                               XPutPixel( buffer_map, j, i, black_pixel );
-                       else {
-                               int     x = xy_coo[k].x + cx + (lx * rsq / dist);
-                               int     y = xy_coo[k].y + cy + (ly * rsq / dist);
-                               if (x < 0 || x >= xgwa.width ||
-                                       y < 0 || y >= xgwa.height)
-                                       XPutPixel( buffer_map, j, i, black_pixel );
-                               else
-                                       XPutPixel( buffer_map, j, i,
-                                                          XGetPixel( orig_map, x, y ));
-                       }
-               }
-       }
-
-       XPutImage(g_dpy, g_window, gc, buffer_map, 0, 0, xy_coo[k].x, xy_coo[k].y,
-                       2*radius+speed+2, 2*radius+speed+2);
-}
-
-/* create a new, random coordinate, that won't interfer with any other
- * coordinates, as the drawing routines would be significantly slowed
- * down if they were to handle serveral layers of distortions
- */
-static void new_rnd_coo(int k)
-{
-       int i;
-
-       xy_coo[k].x = (random() % (xgwa.width-2*radius));
-       xy_coo[k].y = (random() % (xgwa.height-2*radius));
-       
-       for (i = 0; i < number; i++) {
-               if (i != k) {
-                       if ((abs(xy_coo[k].x - xy_coo[i].x) <= 2*radius+speed+2)
-                        && (abs(xy_coo[k].y - xy_coo[i].y) <= 2*radius+speed+2)) {
-                               xy_coo[k].x = (random() % (xgwa.width-2*radius));
-                               xy_coo[k].y = (random() % (xgwa.height-2*radius));
-                               i=-1; /* ugly */
-                       } 
-               }
-       }
-}
-
-/* move lens and handle bounces with walls and other lenses */
-static void move_lense(int k)
-{
-       int i;
-
-       if (xy_coo[k].x + 2*radius + speed + 2 >= xgwa.width)
-               xy_coo[k].xmove = -abs(xy_coo[k].xmove);
-       if (xy_coo[k].x <= speed) 
-               xy_coo[k].xmove = abs(xy_coo[k].xmove);
-       if (xy_coo[k].y + 2*radius + speed + 2 >= xgwa.height)
-               xy_coo[k].ymove = -abs(xy_coo[k].ymove);
-       if (xy_coo[k].y <= speed)
-               xy_coo[k].ymove = abs(xy_coo[k].ymove);
-
-       xy_coo[k].x = xy_coo[k].x + xy_coo[k].xmove;
-       xy_coo[k].y = xy_coo[k].y + xy_coo[k].ymove;
-
-       for (i = 0; i < number; i++) {
-               if ((i != k)
-               
-/* This commented test is for rectangular lenses (not currently used) and
- * the one used is for circular ones
-               && (abs(xy_coo[k].x - xy_coo[i].x) <= 2*radius)
-               && (abs(xy_coo[k].y - xy_coo[i].y) <= 2*radius)) { */
-
-               && ((xy_coo[k].x - xy_coo[i].x)*(xy_coo[k].x - xy_coo[i].x)
-                 + (xy_coo[k].y - xy_coo[i].y)*(xy_coo[k].y - xy_coo[i].y)
-                       <= 2*radius*2*radius)) {
-
-                       int x, y;
-                       x = xy_coo[k].xmove;
-                       y = xy_coo[k].ymove;
-                       xy_coo[k].xmove = xy_coo[i].xmove;
-                       xy_coo[k].ymove = xy_coo[i].ymove;
-                       xy_coo[i].xmove = x;
-                       xy_coo[i].ymove = y;
-               }
-       }
-
-}
-
-/* make xy_coo[k] grow/shrink */
-void swamp_thing(int k)
-{
-       if (xy_coo[k].r >= radius)
-               xy_coo[k].r_change = -abs(xy_coo[k].r_change);
-       
-       if (xy_coo[k].r <= 0) {
-               from = from_array[0];
-               draw(k); 
-               xy_coo[k].r_change = abs(xy_coo[k].r_change);
-               new_rnd_coo(k);
-               xy_coo[k].r=xy_coo[k].r_change;
-               return;
-       }
-
-       xy_coo[k].r = xy_coo[k].r + xy_coo[k].r_change;
-
-       if (xy_coo[k].r >= radius)
-               xy_coo[k].r = radius;
-       if (xy_coo[k].r <= 0)
-               xy_coo[k].r=0;
-
-       from = from_array[xy_coo[k].r];
-}
-
-
-\f
-
-char *progclass = "Distort";
-
-char *defaults [] = {
-       "*dontClearRoot:                True",
-#ifdef __sgi    /* really, HAVE_READ_DISPLAY_EXTENSION */
-       "*visualID:                     Best",
-#endif
-
-       "*delay:                        10000",
-       "*radius:                       0",
-       "*speed:                        0",
-       "*number:                       0",
-       "*vortex:                       False",
-       "*magnify:                      False",
-       "*swamp:                        False",
-       "*bounce:                       False",
-       "*reflect:                      False",
-       "*blackhole:            False",
-#ifdef HAVE_XSHM_EXTENSION
-       "*useSHM:                       False",         /* xshm turns out not to help. */
-#endif /* HAVE_XSHM_EXTENSION */
-       0
-};
-
-XrmOptionDescRec options [] = {
-       { "-delay",     ".delay",       XrmoptionSepArg, 0 },
-       { "-radius",    ".radius",      XrmoptionSepArg, 0 },
-       { "-speed",     ".speed",       XrmoptionSepArg, 0 },
-       { "-number",    ".number",      XrmoptionSepArg, 0 },
-       { "-swamp",     ".swamp",       XrmoptionNoArg, "True" },
-       { "-bounce",    ".bounce",      XrmoptionNoArg, "True" },
-       { "-reflect",   ".reflect",     XrmoptionNoArg, "True" },
-       { "-vortex",    ".vortex",      XrmoptionNoArg, "True" },
-       { "-magnify",   ".magnify",     XrmoptionNoArg, "True" },
-       { "-blackhole", ".blackhole",   XrmoptionNoArg, "True" },
-#ifdef HAVE_XSHM_EXTENSION
-       { "-shm",               ".useSHM",      XrmoptionNoArg, "True" },
-       { "-no-shm",    ".useSHM",      XrmoptionNoArg, "False" },
-#endif /* HAVE_XSHM_EXTENSION */
-       { 0, 0, 0, 0 }
-};
-
-
-void screenhack(Display *dpy, Window window)
-{
-       int k;
-
-       init_distort (dpy, window);
-       while (1) {
-               for (k = 0; k < number; k++) {
-                       effect(k);
-                       draw(k);
-               }
-
-               XSync(dpy, False);
-        screenhack_handle_events (dpy);
-               if (delay) usleep(delay);
-       }
-
-}
diff --git a/hacks/drift.c b/hacks/drift.c
deleted file mode 100644 (file)
index 6e5399f..0000000
+++ /dev/null
@@ -1,630 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * drift --- drifting recursive fractal cosmic flames.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)drift.c      4.02 97/04/01 xlockmore";
-#endif
-
-/* Copyright (c) 1991 by Patrick J. Naughton.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 01-Jan-97: Moved new flame to drift.  Compile time options now run time.
- * 01-Jun-95: Updated by Scott Draves.
- * 27-Jun-91: vary number of functions used.
- * 24-Jun-91: fixed portability problem with integer mod (%).
- * 06-Jun-91: Written. (received from Scott Draves, spot@cs.cmu.edu).
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Drift"
-# define HACK_INIT                                     init_drift
-# define HACK_DRAW                                     draw_drift
-# define drift_opts                                    xlockmore_opts
-# define DEFAULTS      "*count:                30    \n"                       \
-                                       "*delay:                10000 \n"                       \
-                                       "*ncolors:              200   \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-# include "erase.h"
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-
-#define MAXBATCH1      200     /* mono */
-#define MAXBATCH2      20      /* color */
-#define FUSE           10      /* discard this many initial iterations */
-#define NMAJORVARS     7
-#define MAXLEV 10
-
-#define DEF_GROW "False"       /* Grow fractals instead of animating one at a time,
-                                  would then be like flame */
-#define DEF_LISS "False"       /* if this is defined then instead of a point
-                                  bouncing around in a high dimensional sphere, we
-                                  use lissojous figures.  Only makes sense if
-                                  grow is false. */
-
-static Bool grow;
-static Bool liss;
-
-static XrmOptionDescRec opts[] =
-{
-       {"-grow", ".drift.grow", XrmoptionNoArg, (caddr_t) "on"},
-       {"+grow", ".drift.grow", XrmoptionNoArg, (caddr_t) "off"},
-       {"-liss", ".drift.trail", XrmoptionNoArg, (caddr_t) "on"},
-       {"+liss", ".drift.trail", XrmoptionNoArg, (caddr_t) "off"}
-};
-static argtype vars[] =
-{
-       {(caddr_t *) & grow, "grow", "Grow", DEF_GROW, t_Bool},
-       {(caddr_t *) & liss, "liss", "Liss", DEF_LISS, t_Bool}
-};
-static OptionStruct desc[] =
-{
-       {"-/+grow", "turn on/off growing fractals, else they are animated"},
-       {"-/+liss", "turn on/off using lissojous figures to get points"}
-};
-
-ModeSpecOpt drift_opts = { 4, opts, 2, vars, desc };
-
-
-typedef struct {
-       /* shape of current flame */
-       int         nxforms;
-       double      f[2][3][MAXLEV];    /* a bunch of non-homogeneous xforms */
-       int         variation[10];      /* for each xform */
-
-       /* Animation */
-       double      df[2][3][MAXLEV];
-
-       /* high-level control */
-       int         mode;       /* 0->slow/single 1->fast/many */
-       int         nfractals;  /* draw this many fractals */
-       int         major_variation;
-       int         fractal_len;        /* pts/fractal */
-       int         color;
-       int         rainbow;    /* more than one color per fractal
-                                  1-> computed by adding dimension to fractal */
-
-       int         width, height;      /* of window */
-       int         timer;
-
-       /* draw info about current flame */
-       int         fuse;       /* iterate this many before drawing */
-       int         total_points;       /* draw this many pts before fractal ends */
-       int         npoints;    /* how many we've computed but not drawn */
-       XPoint      pts[MAXBATCH1];     /* here they are */
-       unsigned long pixcol;
-       /* when drawing in color, we have a buffer per color */
-       int         ncpoints[NUMCOLORS];
-       XPoint      cpts[NUMCOLORS][MAXBATCH2];
-
-       double      x, y, c;
-       int         liss_time;
-       Bool        grow, liss;
-} driftstruct;
-
-static driftstruct *drifts = NULL;
-
-static short
-halfrandom(int mv)
-{
-       static short lasthalf = 0;
-       unsigned long r;
-
-       if (lasthalf) {
-               r = lasthalf;
-               lasthalf = 0;
-       } else {
-               r = LRAND();
-               lasthalf = r >> 16;
-       }
-       r = r % mv;
-       return r;
-}
-
-static int
-frandom(int n)
-{
-       static long saved_random_bits = 0;
-       static int  nbits = 0;
-       int         result;
-
-       if (3 > nbits) {
-               saved_random_bits = LRAND();
-               nbits = 31;
-       }
-       switch (n) {
-               case 2:
-                       result = saved_random_bits & 1;
-                       saved_random_bits >>= 1;
-                       nbits -= 1;
-                       return result;
-
-               case 3:
-                       result = saved_random_bits & 3;
-                       saved_random_bits >>= 2;
-                       nbits -= 2;
-                       if (3 == result)
-                               return frandom(3);
-                       return result;
-
-               case 4:
-                       result = saved_random_bits & 3;
-                       saved_random_bits >>= 2;
-                       nbits -= 2;
-                       return result;
-
-               case 5:
-                       result = saved_random_bits & 7;
-                       saved_random_bits >>= 3;
-                       nbits -= 3;
-                       if (4 < result)
-                               return frandom(5);
-                       return result;
-               default:
-                       (void) fprintf(stderr, "bad arg to frandom\n");
-                       exit(1);
-       }
-       return 0;
-}
-
-#define DISTRIB_A (halfrandom(7000) + 9000)
-#define DISTRIB_B ((frandom(3) + 1) * (frandom(3) + 1) * 120000)
-#define LEN(x) (sizeof(x)/sizeof((x)[0]))
-
-static void
-initmode(ModeInfo * mi, int mode)
-{
-       driftstruct *dp = &drifts[MI_SCREEN(mi)];
-
-#define VARIATION_LEN 14
-
-       dp->mode = mode;
-
-       dp->major_variation = halfrandom(VARIATION_LEN);
-       /*  0, 0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 6 */
-       dp->major_variation = ((dp->major_variation >= VARIATION_LEN >> 1) &&
-                              (dp->major_variation < VARIATION_LEN - 1)) ?
-               (dp->major_variation + 1) >> 1 : dp->major_variation >> 1;
-
-       if (dp->grow) {
-               dp->rainbow = 0;
-               if (mode) {
-                       if (!dp->color || halfrandom(8)) {
-                               dp->nfractals = halfrandom(30) + 5;
-                               dp->fractal_len = DISTRIB_A;
-                       } else {
-                               dp->nfractals = halfrandom(5) + 5;
-                               dp->fractal_len = DISTRIB_B;
-                       }
-               } else {
-                       dp->rainbow = dp->color;
-                       dp->nfractals = 1;
-                       dp->fractal_len = DISTRIB_B;
-               }
-       } else {
-               dp->nfractals = 1;
-               dp->rainbow = dp->color;
-               dp->fractal_len = 2000000;
-       }
-       dp->fractal_len = (dp->fractal_len * MI_BATCHCOUNT(mi)) / 20;
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-}
-
-static void
-pick_df_coefs(ModeInfo * mi)
-{
-       driftstruct *dp = &drifts[MI_SCREEN(mi)];
-       int         i, j, k;
-       double      r;
-
-       for (i = 0; i < dp->nxforms; i++) {
-
-               r = 1e-6;
-               for (j = 0; j < 2; j++)
-                       for (k = 0; k < 3; k++) {
-                               dp->df[j][k][i] = ((double) halfrandom(1000) / 500.0 - 1.0);
-                               r += dp->df[j][k][i] * dp->df[j][k][i];
-                       }
-               r = (3 + halfrandom(5)) * 0.01 / sqrt(r);
-               for (j = 0; j < 2; j++)
-                       for (k = 0; k < 3; k++)
-                               dp->df[j][k][i] *= r;
-       }
-}
-
-static void
-initfractal(ModeInfo * mi)
-{
-       driftstruct *dp = &drifts[MI_SCREEN(mi)];
-       int         i, j, k;
-
-#define XFORM_LEN 9
-
-       dp->fuse = FUSE;
-       dp->total_points = 0;
-       if (dp->rainbow)
-               for (i = 0; i < MI_NPIXELS(mi); i++)
-                       dp->ncpoints[i] = 0;
-       else
-               dp->npoints = 0;
-       dp->nxforms = halfrandom(XFORM_LEN);
-       /* 2, 2, 2, 3, 3, 3, 4, 4, 5 */
-       dp->nxforms = (dp->nxforms >= XFORM_LEN - 1) + dp->nxforms / 3 + 2;
-
-       dp->c = dp->x = dp->y = 0.0;
-       if (dp->liss && !halfrandom(10)) {
-               dp->liss_time = 0;
-       }
-       if (!dp->grow)
-               pick_df_coefs(mi);
-       for (i = 0; i < dp->nxforms; i++) {
-               if (NMAJORVARS == dp->major_variation)
-                       dp->variation[i] = halfrandom(NMAJORVARS);
-               else
-                       dp->variation[i] = dp->major_variation;
-               for (j = 0; j < 2; j++)
-                       for (k = 0; k < 3; k++) {
-                               if (dp->liss)
-                                       dp->f[j][k][i] = sin(dp->liss_time * dp->df[j][k][i]);
-                               else
-                                       dp->f[j][k][i] = ((double) halfrandom(1000) / 500.0 - 1.0);
-                       }
-       }
-       if (dp->color)
-               dp->pixcol = MI_PIXEL(mi, halfrandom(MI_NPIXELS(mi)));
-       else
-               dp->pixcol = MI_WIN_WHITE_PIXEL(mi);
-
-}
-
-
-void
-init_drift(ModeInfo * mi)
-{
-       driftstruct *dp;
-
-       if (drifts == NULL) {
-               if ((drifts = (driftstruct *) calloc(MI_NUM_SCREENS(mi),
-                                             sizeof (driftstruct))) == NULL)
-                       return;
-       }
-       dp = &drifts[MI_SCREEN(mi)];
-
-       dp->width = MI_WIN_WIDTH(mi);
-       dp->height = MI_WIN_HEIGHT(mi);
-       dp->color = MI_NPIXELS(mi) > 2;
-
-       if (MI_WIN_IS_FULLRANDOM(mi)) {
-#if 1 /* jwz: even up the odds */
-         switch ((int) (LRAND() % 3)) {
-         case 0:   dp->grow = True;  dp->liss = False; break;
-         case 1:   dp->grow = False; dp->liss = True;  break;
-         default:  dp->grow = False; dp->liss = False; break;
-               /* liss and grow don't work together. */
-         }
-#else /* 0 */
-               if (LRAND() & 1)
-                       dp->grow = True;
-               else {
-                       dp->grow = False;
-                       dp->liss = (Bool) (LRAND() & 1);
-               }
-#endif
-       } else {
-               dp->grow = grow;
-               if (dp->grow)
-                       dp->liss = False;
-               else
-                       dp->liss = liss;
-       }
-       initmode(mi, 1);
-       initfractal(mi);
-}
-
-static void
-iter(driftstruct * dp)
-{
-       int         i = frandom(dp->nxforms);
-       double      nx, ny, nc;
-
-
-       if (i)
-               nc = (dp->c + 1.0) / 2.0;
-       else
-               nc = dp->c / 2.0;
-
-       nx = dp->f[0][0][i] * dp->x + dp->f[0][1][i] * dp->y + dp->f[0][2][i];
-       ny = dp->f[1][0][i] * dp->x + dp->f[1][1][i] * dp->y + dp->f[1][2][i];
-
-
-       switch (dp->variation[i]) {
-               case 1:
-                       /* sinusoidal */
-                       nx = sin(nx);
-                       ny = sin(ny);
-                       break;
-               case 2:
-                       {
-                               /* complex */
-                               double      r2 = nx * nx + ny * ny + 1e-6;
-
-                               nx = nx / r2;
-                               ny = ny / r2;
-                               break;
-                       }
-               case 3:
-                       /* bent */
-                       if (nx < 0.0)
-                               nx = nx * 2.0;
-                       if (ny < 0.0)
-                               ny = ny / 2.0;
-                       break;
-               case 4:
-                       {
-                               /* swirl */
-
-                               double      r = (nx * nx + ny * ny);    /* times k here is fun */
-                               double      c1 = sin(r);
-                               double      c2 = cos(r);
-                               double      t = nx;
-
-                               if (nx > 1e4 || nx < -1e4 || ny > 1e4 || ny < -1e4)
-                                       ny = 1e4;
-                               else
-                                       ny = c2 * t + c1 * ny;
-                               nx = c1 * nx - c2 * ny;
-                               break;
-                       }
-               case 5:
-                       {
-                               /* horseshoe */
-                               double      r, c1, c2, t;
-
-                               /* Avoid atan2: DOMAIN error message */
-                               if (nx == 0.0 && ny == 0.0)
-                                       r = 0.0;
-                               else
-                                       r = atan2(nx, ny);      /* times k here is fun */
-                               c1 = sin(r);
-                               c2 = cos(r);
-                               t = nx;
-
-                               nx = c1 * nx - c2 * ny;
-                               ny = c2 * t + c1 * ny;
-                               break;
-                       }
-               case 6:
-                       {
-                               /* drape */
-                               double      t;
-
-                               /* Avoid atan2: DOMAIN error message */
-                               if (nx == 0.0 && ny == 0.0)
-                                       t = 0.0;
-                               else
-                                       t = atan2(nx, ny) / M_PI;
-
-                               if (nx > 1e4 || nx < -1e4 || ny > 1e4 || ny < -1e4)
-                                       ny = 1e4;
-                               else
-                                       ny = sqrt(nx * nx + ny * ny) - 1.0;
-                               nx = t;
-                               break;
-                       }
-       }
-
-#if 0
-       /* here are some others */
-       {
-               /* broken */
-               if (nx > 1.0)
-                       nx = nx - 1.0;
-               if (nx < -1.0)
-                       nx = nx + 1.0;
-               if (ny > 1.0)
-                       ny = ny - 1.0;
-               if (ny < -1.0)
-                       ny = ny + 1.0;
-               break;
-       }
-       {
-               /* complex sine */
-               double      u = nx, v = ny;
-               double      ev = exp(v);
-               double      emv = exp(-v);
-
-               nx = (ev + emv) * sin(u) / 2.0;
-               ny = (ev - emv) * cos(u) / 2.0;
-       }
-       {
-
-               /* polynomial */
-               if (nx < 0)
-                       nx = -nx * nx;
-               else
-                       nx = nx * nx;
-
-               if (ny < 0)
-                       ny = -ny * ny;
-               else
-                       ny = ny * ny;
-       }
-       {
-               /* spherical */
-               double      r = 0.5 + sqrt(nx * nx + ny * ny + 1e-6);
-
-               nx = nx / r;
-               ny = ny / r;
-       }
-       {
-               nx = atan(nx) / M_PI_2
-                       ny = atan(ny) / M_PI_2
-       }
-#endif
-
-       /* how to check nan too?  some machines don't have finite().
-          don't need to check ny, it'll propogate */
-       if (nx > 1e4 || nx < -1e4) {
-               nx = halfrandom(1000) / 500.0 - 1.0;
-               ny = halfrandom(1000) / 500.0 - 1.0;
-               dp->fuse = FUSE;
-       }
-       dp->x = nx;
-       dp->y = ny;
-       dp->c = nc;
-
-}
-
-static void
-draw(ModeInfo * mi, driftstruct * dp, Drawable d)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       double      x = dp->x;
-       double      y = dp->y;
-       int         fixed_x, fixed_y, npix, c, n;
-
-       if (dp->fuse) {
-               dp->fuse--;
-               return;
-       }
-       if (!(x > -1.0 && x < 1.0 && y > -1.0 && y < 1.0))
-               return;
-
-       fixed_x = (int) ((dp->width / 2) * (x + 1.0));
-       fixed_y = (int) ((dp->height / 2) * (y + 1.0));
-
-       if (!dp->rainbow) {
-
-               dp->pts[dp->npoints].x = fixed_x;
-               dp->pts[dp->npoints].y = fixed_y;
-               dp->npoints++;
-               if (dp->npoints == MAXBATCH1) {
-                       XSetForeground(display, gc, dp->pixcol);
-                       XDrawPoints(display, d, gc, dp->pts, dp->npoints, CoordModeOrigin);
-                       dp->npoints = 0;
-               }
-       } else {
-
-               npix = MI_NPIXELS(mi);
-               c = (int) (dp->c * npix);
-
-               if (c < 0)
-                       c = 0;
-               if (c >= npix)
-                       c = npix - 1;
-               n = dp->ncpoints[c];
-               dp->cpts[c][n].x = fixed_x;
-               dp->cpts[c][n].y = fixed_y;
-               if (++dp->ncpoints[c] == MAXBATCH2) {
-                       XSetForeground(display, gc, MI_PIXEL(mi, c));
-                       XDrawPoints(display, d, gc, dp->cpts[c],
-                                   dp->ncpoints[c], CoordModeOrigin);
-                       dp->ncpoints[c] = 0;
-               }
-       }
-}
-
-static void
-draw_flush(ModeInfo * mi, driftstruct * dp, Drawable d)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-
-       if (dp->rainbow) {
-               int         npix = MI_NPIXELS(mi);
-               int         i;
-
-               for (i = 0; i < npix; i++) {
-                       if (dp->ncpoints[i]) {
-                               XSetForeground(display, gc, MI_PIXEL(mi, i));
-                               XDrawPoints(display, d, gc, dp->cpts[i],
-                                           dp->ncpoints[i], CoordModeOrigin);
-                               dp->ncpoints[i] = 0;
-                       }
-               }
-       } else {
-               if (dp->npoints)
-                       XSetForeground(display, gc, dp->pixcol);
-               XDrawPoints(display, d, gc, dp->pts,
-                           dp->npoints, CoordModeOrigin);
-               dp->npoints = 0;
-       }
-}
-
-
-void
-draw_drift(ModeInfo * mi)
-{
-       Window      window = MI_WINDOW(mi);
-       driftstruct *dp = &drifts[MI_SCREEN(mi)];
-
-       dp->timer = 3000;
-
-       while (dp->timer) {
-               iter(dp);
-               draw(mi, dp, window);
-               if (dp->total_points++ > dp->fractal_len) {
-                       draw_flush(mi, dp, window);
-                       if (0 == --dp->nfractals) {
-#ifdef STANDALONE
-                         XSync(MI_DISPLAY(mi), False);
-                         sleep(4); /* #### make settable */
-                         erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif /* STANDALONE */
-                         initmode(mi, frandom(2));
-                       }
-                       initfractal(mi);
-               }
-               dp->timer--;
-       }
-       if (!dp->grow) {
-               int         i, j, k;
-
-               draw_flush(mi, dp, window);
-               if (dp->liss)
-                       dp->liss_time++;
-               for (i = 0; i < dp->nxforms; i++)
-                       for (j = 0; j < 2; j++)
-                               for (k = 0; k < 3; k++) {
-                                       if (dp->liss)
-                                               dp->f[j][k][i] = sin(dp->liss_time * dp->df[j][k][i]);
-                                       else {
-                                               double      t = dp->f[j][k][i] += dp->df[j][k][i];
-
-                                               if (t < -1.0 || 1.0 < t)
-                                                       dp->df[j][k][i] *= -1.0;
-                                       }
-                               }
-       }
-}
-
-void
-release_drift(ModeInfo * mi)
-{
-       if (drifts != NULL) {
-               (void) free((void *) drifts);
-               drifts = NULL;
-       }
-}
-
-void
-refresh_drift(ModeInfo * mi)
-{
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-}
diff --git a/hacks/drift.man b/hacks/drift.man
deleted file mode 100644 (file)
index 407f06a..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-drift - draws drifting recursive fractal cosmic flames
-.SH SYNOPSIS
-.B drift
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP] [\-grow] [\-no\-grow] [\-liss] [\-no\-liss]
-
-.SH DESCRIPTION
-The \fIdrift\fP program draws drifting recursive fractal cosmic flames
-.SH OPTIONS
-.I drift
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-The colors used cycle through the hue, making N stops around
-the color wheel.
-.TP 8
-.B \-count \fIinteger\fP
-
-.TP 8
-.B \-grow
-.TP 8
-.B \-no\-grow
-Whether fractals should grow; otherwise, they are animated.
-
-.TP 8
-.B \-liss
-.TP 8
-.B \-no\-liss
-Whether we should use lissojous figures to get points.
-
-.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 flame (1),
-.BR X (1),
-.BR xscreensaver (1),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1991, 1995 by Scott Draves.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Scott Draves <spot@cs.cmu.edu>, 06-Jun-91, 01-Jun-95.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/epicycle.c b/hacks/epicycle.c
deleted file mode 100644 (file)
index b812e6a..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-/* epicycle --- The motion of a body with epicycles, as in the pre-Copernican
- * cosmologies.
- *
- * Copyright (c) 1998  James Youngman <jay@gnu.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.
- */
-
-/* Standard C headers; screenhack.h assumes that these have already
- * been included if required -- for example, it defines M_PI if not
- * already defined.
- */
-#include <float.h>
-#include <math.h>
-
-
-#include "screenhack.h"
-#include "erase.h"
-
-/* MIT-SHM headers omitted; this screenhack doesn't use it */
-
-
-
-/*********************************************************/
-/******************** MAGIC CONSTANTS ********************/
-/*********************************************************/
-#define MIN_RADIUS (5)         /* smallest allowable circle radius */
-#define FILL_PROPORTION (0.9)  /* proportion of screen to fill by scaling. */
-/*********************************************************/
-/***************** END OF MAGIC CONSTANTS ****************/
-/*********************************************************/
-
-
-
-#define FULLCIRCLE (2.0 * M_PI)        /* radians in a circle. */
-
-
-/* Name of the Screensaver hack */
-char *progclass="Epicycle";
-
-/* Some of these resource values here are hand-tuned to give a
- * pleasing variety of interesting shapes.  These are not the only
- * good settings, but you may find you need to change some as a group
- * to get pleasing figures.
- */
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*colors:    100",
-  "*color0:    red",
-  "*delay:     1000",
-  "*holdtime:  2",
-  "*lineWidth: 4",
-  "*minCircles:  2",
-  "*maxCircles:  10",
-  "*minSpeed:  0.003",
-  "*maxSpeed:  0.005",
-  "*harmonics: 8",
-  "*timestep:  1.0",
-  "*timestepCoarseFactor: 1.0", /* no option for this resource. */
-  "*divisorPoisson: 0.4",
-  "*sizeFactorMin: 1.05",
-  "*sizeFactorMax: 2.05",
-  0
-};
-
-/* options passed to this program */
-XrmOptionDescRec options [] = {
-  { "-color0",         ".color0",        XrmoptionSepArg, 0 },
-  { "-colors",         ".colors",        XrmoptionSepArg, 0 },
-  { "-colours",                ".colors",        XrmoptionSepArg, 0 },
-  { "-foreground",     ".foreground",    XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",         XrmoptionSepArg, 0 },
-  { "-holdtime",       ".holdtime",      XrmoptionSepArg, 0 },
-  { "-linewidth",      ".lineWidth",     XrmoptionSepArg, 0 },
-  { "-min_circles",    ".minCircles",    XrmoptionSepArg, 0 },
-  { "-max_circles",    ".maxCircles",    XrmoptionSepArg, 0 },
-  { "-min_speed",      ".minSpeed",      XrmoptionSepArg, 0 },
-  { "-max_speed",      ".maxSpeed",      XrmoptionSepArg, 0 },
-  { "-harmonics",      ".harmonics",     XrmoptionSepArg, 0 },
-  { "-timestep",       ".timestep",      XrmoptionSepArg, 0 },
-  { "-divisor_poisson",".divisorPoisson",XrmoptionSepArg, 0 },
-  { "-size_factor_min", ".sizeFactorMin", XrmoptionSepArg, 0 },
-  { "-size_factor_max", ".sizeFactorMax", XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-
-static Display *dpy;
-static Window window;
-static GC color0;
-static int width, height;
-static int x_offset, y_offset;
-static int unit_pixels;
-static unsigned long bg;
-static Colormap cmap;
-static int restart = 0;
-static int stop = 0;
-static double wdot_max;
-static XColor *colors = NULL;
-static int ncolors = 2;
-static int color_shift_pos=0;  /* how far we are towards that. */
-static double colour_cycle_rate = 1.0;
-static int harmonics = 8;
-static double divisorPoisson = 0.4;
-static double sizeFactorMin = 1.05;
-static double sizeFactorMax = 2.05;
-static int minCircles;
-static int maxCircles;
-
-/* Each circle is centred on a point on the rim of another circle.
- */
-struct tagCircle
-{
-  long radius;                 /* in pixels */
-  double w;                    /* position (radians ccw from x-axis) */
-  double initial_w;            /* starting position */
-  double wdot;                 /* rotation rate (change in w per iteration) */
-  int    divisor;
-
-  struct tagCircle *pchild;
-};
-typedef struct tagCircle Circle;
-
-
-struct tagBody                 /* a body that moves on a system of circles. */
-{
-  int x_origin, y_origin;
-  int x, y;
-  int old_x, old_y;
-  int current_color;           /* pixel index into colors[] */
-  Circle *epicycles;           /* system of circles on which it moves. */
-  struct tagBody *next;                /* next in list. */
-};
-typedef struct tagBody Body;
-
-
-/* Determine the GCD of two numbers using Euclid's method.  The other
- * possible algorighm is Stein's method, but it's probably only going
- * to be much faster on machines with no divide instruction, like the
- * ARM and the Z80.  The former is very fast anyway and the latter
- * probably won't run X clients; in any case, this calculation is not
- * the bulk of the computational expense of the program.  I originally
- * tried using Stein's method, but I wanted to remove the gotos.  Not
- * wanting to introduce possible bugs, I plumped for Euclid's method
- * instead.  Lastly, Euclid's algorithm is preferred to the
- * generalisation for N inputs.
- *
- * See Knuth, section 4.5.2.
- */
-static int
-gcd(int u, int v)              /* Euclid's Method */
-{
-  /* If either operand of % is negative, the sign of the result is
-   * implementation-defined.  See section 6.3.5 "Multiplicative
-   * Operators" of the ANSI C Standard (page 46 [LEFT HAND PAGE!] of
-   * "Annotated C Standard", Osborne, ISBN 0-07-881952-0).
-   */
-  if (u < 0) u = -u;
-  if (v < 0) v = -v;
-  
-  while (0 != v)
-    {
-      int r;
-      r = u % v;
-      u = v;
-      v = r;
-    }
-  return u;
-}
-
-/* Determine the Lowest Common Multiple of two integers, using
- * Euclid's Proposition 34, as explained in Knuth's The Art of
- * Computer Programming, Vol 2, section 4.5.2.
- */
-static int
-lcm(int u, int v)
-{
-  return u / gcd(u,v) * v;
-}
-
-static long 
-random_radius(double scale)    
-{
-  long r;
-
-  r = frand(scale) * unit_pixels/2; /* for frand() see utils/yarandom.h */
-  if (r < MIN_RADIUS)
-    r = MIN_RADIUS;
-  return r;
-}
-
-
-static long
-random_divisor(void)
-{
-  int divisor = 1;
-  int sign;
-
-  while (frand(1.0) < divisorPoisson && divisor <= harmonics)
-    {
-      ++divisor;
-    }
-  sign = (frand(1.0) < 0.5) ? +1 : -1;
-  return sign * divisor;
-}
-
-
-static void
-oom(void)
-{
-  fprintf(stderr, "Failed to allocate memory!\n");
-  exit(-1);
-}
-
-
-/* Construct a circle or die.
- */
-Circle *
-new_circle(double scale)
-{
-  Circle *p = malloc(sizeof(Circle));
-  
-  p->radius = random_radius(scale);
-  p->w = p->initial_w = 0.0;
-  p->divisor = random_divisor();
-  p->wdot = wdot_max / p->divisor;
-  p->pchild = NULL;
-  
-  return p;
-}
-
-static void delete_circle(Circle *p)
-{
-  free(p);
-}
-
-static void 
-delete_circle_chain(Circle *p)
-{
-  while (p)
-    {
-      Circle *q = p->pchild;
-      delete_circle(p);
-      p = q;
-    }
-}
-
-Circle *
-new_circle_chain(void)
-{
-  Circle *head;
-  double scale = 1.0, factor;
-  int n;
-
-  /* Parent circles are larger than their children by a factor of at
-   * least FACTOR_MIN and at most FACTOR_MAX.
-   */
-  factor = sizeFactorMin + frand(sizeFactorMax - sizeFactorMin);
-  
-  /* There are between minCircles and maxCircles in each figure.
-   */
-  n = minCircles + rand() % (maxCircles - minCircles);
-  
-  head = NULL;
-  while (n--)
-    {
-      Circle *p = new_circle(scale);
-      p->pchild = head;
-      head = p;
-
-      scale /= factor;
-    }
-  return head;
-}
-
-static void
-assign_random_common_w(Circle *p)
-{
-  double w_common = frand(FULLCIRCLE); /* anywhere on the circle */
-  while (p)
-    {
-      p->initial_w = w_common;
-      p = p->pchild;
-    }
-}
-
-static Body *
-new_body(void)
-{
-  Body *p = malloc(sizeof(Body));
-  if (NULL == p)
-    oom();
-  p->epicycles = new_circle_chain();
-  p->current_color = 0;                /* ?? start them all on different colors? */
-  p->next = NULL;
-  p->x = p->y = 0;
-  p->old_x = p->old_y = 0;
-  p->x_origin = p->y_origin = 0;
-
-  /* Start all the epicycles at the same w value to make it easier to
-   * figure out at what T value the cycle is closed.   We don't just fix
-   * the initial W value because that makes all the patterns tend to 
-   * be symmetrical about the X axis.
-   */
-  assign_random_common_w(p->epicycles);
-  return p;
-}
-
-static void
-delete_body(Body *p)
-{
-  delete_circle_chain(p->epicycles);
-  free(p);
-}
-
-
-static void 
-draw_body(Body *pb, GC gc)
-{
-  XDrawLine(dpy, window, gc, pb->old_x, pb->old_y, pb->x, pb->y);
-}
-
-static long
-compute_divisor_lcm(Circle *p)
-{
-  long l = 1;
-  
-  while (p)
-    {
-      l = lcm(l, p->divisor);
-      p = p->pchild;
-    }
-  return l;
-}
-
-             
-/* move_body()
- *
- * Calculate the position for the body at time T.  We work in double 
- * rather than int to avoid the cumulative errors that would be caused
- * by the rounding implicit in an assignment to int.
- */
-static void
-move_body(Body *pb, double t)
-{
-  Circle *p;
-  double x, y;
-
-  pb->old_x = pb->x;
-  pb->old_y = pb->y;
-  
-  x = pb->x_origin;
-  y = pb->y_origin;
-  
-  for (p=pb->epicycles; NULL != p; p=p->pchild)
-    {
-      /* angular pos = initial_pos + time * angular speed */
-      /* but this is an angular position, so modulo FULLCIRCLE. */
-      p->w = fmod(p->initial_w + (t * p->wdot), FULLCIRCLE);
-      
-      x += (p->radius * cos(p->w));
-      y += (p->radius * sin(p->w));
-    }
-  
-  pb->x = (int)x;
-  pb->y = (int)y;
-}
-
-static int
-colour_init(XWindowAttributes *pxgwa)
-{
-  XGCValues gcv;
-
-#if 0
-  int H = random() % 360;      /* colour choice from attraction.c. */
-  double S1 = 0.25;
-  double S2 = 1.00;
-  double V = frand(0.25) + 0.75;
-  int line_width = 0;
-#endif
-
-  int retval = 1;
-  unsigned long valuemask = 0L;
-  unsigned long fg;
-  
-  /* Free any already allocated colors...
-   */
-  if (colors)
-    {
-      free_colors(dpy, cmap, colors, ncolors);
-      colors = 0;
-      ncolors = 0;
-    }
-       
-  ncolors = get_integer_resource ("colors", "Colors");
-  if (0 == ncolors)            /* English spelling? */
-    ncolors = get_integer_resource ("colours", "Colors");
-  
-  if (ncolors < 2)
-    ncolors = 2;
-  if (ncolors <= 2)
-    mono_p = True;
-  colors = 0;
-
-  if (!mono_p)
-    {
-      colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-      if (!colors)
-       oom();
-         
-      make_smooth_colormap (dpy, pxgwa->visual, cmap, colors, &ncolors,
-                           True, /* allocate */
-                           False, /* not writable */
-                           True); /* verbose (complain about failure) */
-      if (ncolors <= 2)
-       {
-         if (colors)
-           free (colors);
-         colors = 0;
-         mono_p = True;
-       }
-    }
-
-  
-  bg = get_pixel_resource ("background", "Background", dpy, cmap);
-
-  /* Set the line width
-   */
-  gcv.line_width = get_integer_resource ("lineWidth", "Integer");
-  if (gcv.line_width)
-    {
-      valuemask |= GCLineWidth;
-
-      gcv.join_style = JoinRound;
-      gcv.cap_style = CapRound;
-         
-      valuemask |= (GCCapStyle | GCJoinStyle);
-    }
-  
-
-  /* Set the drawing function.
-   */
-  gcv.function = GXcopy;
-  valuemask |= GCFunction;
-  
-  /* Set the foreground.
-   */
-  if (mono_p)
-    fg = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  else
-    fg = bg ^ get_pixel_resource (("color0"), "Foreground", dpy, cmap); 
-  gcv.foreground = fg;
-  valuemask |= GCForeground;
-
-  /* Actually create the GC.
-   */
-  color0 = XCreateGC (dpy, window, valuemask, &gcv);
-  
-  return retval;
-}
-
-
-/* check_events(); originally from XScreensaver: hacks/maze.c,
- * but now quite heavily modified.
- *
- * Reaction to events:-
- *
- * Mouse 1 -- new figure }
- *       2 -- new figure }-- ignored when running on root window.
- *       3 -- exit       }
- *
- * Window resized or exposed -- new figure.
- * Window iconised -- wait until it's re-mapped, then start a new figure.
- */
-static int
-check_events (void)                        /* X event handler [ rhess ] */
-{
-  XEvent e;
-  int unmapped = 0;
-       
-  while (unmapped || XPending(dpy))
-    {
-      XNextEvent(dpy, &e);
-               
-      switch (e.type)
-       {
-       case ButtonPress:
-         switch (e.xbutton.button)
-           {
-           case 3:
-             exit (0);
-             break;
-                               
-           case 2:
-           case 1:
-           default:
-             restart = 1 ;
-             stop = 0 ;
-             break;
-           }
-         break;
-                       
-       case ConfigureNotify:
-         restart = 1;
-         break;
-                       
-       case UnmapNotify:
-         printf("unmapped!\n");
-         unmapped = 1;
-         restart = 1;                  /* restart with new fig. when re-mapped. */
-         break;
-                       
-       case Expose:            
-         if (0 == e.xexpose.count)
-           {
-                               /* We can get several expose events in the queue.
-                                * Only the last one has a zero count.  We eat
-                                * events in this function so as to avoid restarting
-                                * the screensaver many times in quick succession.
-                                */
-             restart = 1;
-           }
-         /* If we had been unmapped and are now waiting to be re-mapped,
-          * indicate that we condition we are waiting for is now met.
-          */
-         if (unmapped)
-           printf("re-mapped!\n");
-         unmapped = 0;
-         break;
-
-        default:
-          screenhack_handle_event(dpy, &e);
-          break;
-       }
-               
-      /* If we're unmapped, don't return to the caller.  This
-       * prevents us wasting CPU, calculating new positions for
-       * things that will never be plotted.   This is a real CPU
-       * saver.
-       */
-      if (!unmapped)
-       return 1;
-    }
-  return 0;
-}
-
-
-static void
-setup(void)
-{
-  XWindowAttributes xgwa;
-  int root;
-  
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-
-  width = xgwa.width;
-  height = xgwa.height;
-  x_offset = width / 2;
-  y_offset = height / 2;
-  unit_pixels = width < height ? width : height;
-
-  {
-    static Bool done = False;
-    if (!done)
-      {
-       colour_init(&xgwa);
-       done = True;
-      }
-  }
-  
-  root = get_boolean_resource("root", "Boolean");
-  
-  if (root)
-    {
-      XSelectInput(dpy, window, ExposureMask);
-    }
-  else
-    {
-      XWindowAttributes xgwa;
-      XGetWindowAttributes (dpy, window, &xgwa);
-      XSelectInput (dpy, window,
-                    xgwa.your_event_mask | ExposureMask |
-                    ButtonPressMask |StructureNotifyMask);
-    }
-  
-}
-static void
-color_step(Body *pb, double frac)
-{
-  if (!mono_p)
-    {
-      int newshift = ncolors * fmod(frac * colour_cycle_rate, 1.0);
-      if (newshift != color_shift_pos)
-       {
-         pb->current_color = newshift;
-         XSetForeground (dpy, color0, colors[pb->current_color].pixel);
-         color_shift_pos = newshift;
-       }
-    }
-}
-
-
-long
-distance(long x1, long y1, long x2, long y2)
-{
-  long dx, dy;
-
-  dx = x2 - x1;
-  dy = y2 - y1;
-  return dx*dx + dy*dy;
-}
-
-#if 0
-static int poisson_irand(double p)
-{
-  int r = 1;
-  while (fabs(frand(1.0)) < p)
-    ++r;
-  return r < 1 ? 1 : r;
-}
-#endif
-
-static void
-precalculate_figure(Body *pb,
-                   double xtime, double step,
-                   int *x_max, int *y_max,
-                   int *x_min, int *y_min)
-{
-  double t;
-  
-  move_body(pb, 0.0); /* move once to avoid initial line from origin */
-  *x_min = *x_max = pb->x;
-  *y_min = *y_max = pb->y;
-  
-  for (t=0.0; t<xtime; t += step)
-    {
-      move_body(pb, t); /* move once to avoid initial line from origin */
-      if (pb->x > *x_max)
-       *x_max = pb->x;
-      if (pb->x < *x_min)
-       *x_min = pb->x;
-      if (pb->y > *y_max)
-       *y_max = pb->y;
-      if (pb->y < *y_min)
-       *y_min = pb->y;
-    }
-}
-
-static int i_max(int a, int b)
-{
-  return (a>b) ? a : b;
-}
-
-static void rescale_circles(Body *pb,
-                           int x_max, int y_max,
-                           int x_min, int y_min)
-{
-  double xscale, yscale, scale;
-  double xm, ym;
-  
-  x_max -= x_offset;
-  x_min -= x_offset;
-  y_max -= y_offset;
-  y_min -= y_offset;
-
-  x_max = i_max(x_max, -x_min);
-  y_max = i_max(y_max, -y_min);
-
-
-  xm = width / 2.0;
-  ym = height / 2.0;
-  if (x_max > xm)
-    xscale = xm / x_max;
-  else
-    xscale = 1.0;
-  if (y_max > ym)
-    yscale = ym / y_max;
-  else
-    yscale = 1.0;
-
-  if (xscale < yscale)         /* wider than tall */
-    scale = xscale;            /* ensure width fits onscreen */
-  else
-    scale = yscale;            /* ensure height fits onscreen */
-
-
-  scale *= FILL_PROPORTION;    /* only fill FILL_PROPORTION of screen */
-  if (scale < 1.0)             /* only reduce, don't enlarge. */
-    {
-      Circle *p;
-      for (p=pb->epicycles; p; p=p->pchild)
-       {
-         p->radius *= scale;
-       }
-    }
-  else
-    {
-      printf("enlarge by x%.2f skipped...\n", scale);
-    }
-}
-
-
-/* angular speeds of the circles are harmonics of a fundamental
- * value.  That should please the Pythagoreans among you... :-)
- */
-static double 
-random_wdot_max(void)
-{
-  /* Maximum and minimum values for the choice of wdot_max.  Possible
-   * epicycle speeds vary from wdot_max to (wdot_max * harmonics).
-   */
-  double minspeed, maxspeed;
-  minspeed = get_float_resource("minSpeed", "Double");
-  maxspeed = get_float_resource("maxSpeed", "Double");
-  return harmonics * (minspeed + FULLCIRCLE * frand(maxspeed-minspeed));
-}
-
-/* this is the function called for your screensaver */
-/*GLOBAL*/ void
-screenhack(Display *disp, Window win)
-{
-  Body *pb = NULL;
-  long l;
-  double t, timestep, circle, xtime, timestep_coarse;
-  int delay;
-  int uncleared = 1;
-  int xmax, xmin, ymax, ymin;
-  int holdtime = get_integer_resource ("holdtime", "Integer");
-
-  dpy = disp;
-  window = win;
-
-  circle = FULLCIRCLE;
-  
-  XClearWindow(dpy, window);
-  uncleared = 0;
-  
-  delay = get_integer_resource ("delay", "Integer");
-  harmonics = get_integer_resource("harmonics", "Integer");
-  divisorPoisson = get_float_resource("divisorPoisson", "Double");
-  
-  timestep = get_float_resource("timestep", "Double");
-  timestep_coarse = timestep *
-    get_float_resource("timestepCoarseFactor", "Double");
-  
-  sizeFactorMin = get_float_resource("sizeFactorMin", "Double");
-  sizeFactorMax = get_float_resource("sizeFactorMax", "Double");
-
-  minCircles = get_integer_resource ("minCircles", "Integer");
-  maxCircles = get_integer_resource ("maxCircles", "Integer");
-
-  xtime = 0; /* is this right? */
-  while (0 == stop)
-    {
-      setup(); /* do this inside the loop to cope with any window resizing */
-      restart = 0;
-
-      /* Flush any outstanding events; this has the side effect of
-       * reducing the number of "false restarts"; resdtarts caused by
-       * one event (e.g. ConfigureNotify) followed by another
-       * (e.g. Expose).
-       */
-      XSync(dpy, True);
-         
-      wdot_max = random_wdot_max();
-         
-      if (pb)
-       {
-         delete_body(pb);
-         pb = NULL;
-       }
-      pb = new_body();
-      pb->x_origin = pb->x = x_offset;
-      pb->y_origin = pb->y = y_offset;
-         
-      
-      if (uncleared)
-       {
-         erase_full_window(dpy, window);
-         uncleared = 0;
-       }
-
-      fflush(stdout);
-      precalculate_figure(pb, xtime, timestep_coarse,
-                         &xmax, &ymax, &xmin, &ymin);
-
-      rescale_circles(pb, xmax, ymax, xmin, ymin);
-      
-      move_body(pb, 0.0); /* move once to avoid initial line from origin */
-      move_body(pb, 0.0); /* move once to avoid initial line from origin */
-
-      
-      t = 0.0;                 /* start at time zero. */
-
-      l = compute_divisor_lcm(pb->epicycles);
-      
-      colour_cycle_rate = fabs(l);
-      
-      xtime = fabs(l * circle / wdot_max);
-
-      if (colors)                              /* (colors==NULL) if mono_p */
-       XSetForeground (dpy, color0, colors[pb->current_color].pixel);
-
-      while (0 == restart)
-       {
-         color_step(pb, t/xtime );
-         draw_body(pb, color0);
-         uncleared = 1;
-
-         
-         /* Check if the figure is complete...*/
-         if (t > xtime)
-           {
-             XSync (dpy, False);
-
-              check_events();
-             if (holdtime)
-               sleep(holdtime); /* show complete figure for a bit. */
-
-             restart = 1;      /* begin new figure. */
-           }
-         
-         
-         check_events();
-         if (delay)
-           usleep (delay);
-         
-         t += timestep;
-         move_body(pb, t);
-         check_events();
-       }
-    }
-}
-
diff --git a/hacks/epicycle.man b/hacks/epicycle.man
deleted file mode 100644 (file)
index 3af0ed5..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-.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 "27-Apr-97" "X Version 11"
-.SH NAME
-epicycle - draws a point moving around a circle which moves around a cicle which...
-.SH SYNOPSIS
-.B epicycle 
-[\-display \fIhost:display.screen\fP] [\-root] [\-window] [\-mono] [\-install] [\-noinstall] [\-visual \fIviz\fP] [\-colors \fIN\fP] [\-foreground \fIname\fP] [\-color\-shift \fIN\fP] [\-delay \fImicroseconds\fP] [\-holdtime \fIseconds\fP] [\-linewidth \fIN\fP] [\-min_circles \fIN\fP] [\-max_circles \fIN\fP] [\-min_speed \fInumber\fP] [\-max_speed \fInumber\fP] [\-harmonics \fIN\fP] [\-timestep \fInumber\fP] [\-divisor_poisson \fIprobability\fP] [\-size_factor_min \fInumber\fP] [\-size_factor_max \fInumber\fP]
-.SH DESCRIPTION
-The epicycle program draws the path traced out by a point on the edge
-of a circle.  That circle rotates around a point on the rim of another
-circle, and so on, several times.  The random curves produced can be
-simple or complex, convex or concave, but they are always closed
-curves (they never go in indefinitely).
-
-You can configure both the way the curves are drawn and the way in
-which the random sequence of circles is generated, either with
-command-line options or X resources.
-.SH OPTIONS
-.TP 8
-.B \-display \fIhost:display.screen\fP
-Specifies which X display we should use (see the section DISPLAY NAMES in
-.BR X (1)
-for more information about this option).
-.TP 8
-.B \-root
-Draw on the root window.
-.TP 8
-.B \-window
-Draw on a newly-created window.  This is the default.
-.TP 8
-.B \-mono
-If on a color display, pretend we're on a monochrome display.
-If we're on a mono display, we have no choice.
-.TP 8
-.B \-install
-Install a private colormap for the window.
-.TP 8
-.B \-noinstall
-Don't install a private colormap for the window.
-.TP 8
-.B \-visual \fIviz\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.
-Possible choices include
-
-.RS
-default, best, mono, monochrome, gray, grey, color, staticgray, staticcolor, 
-truecolor, grayscale, greyscale, pseudocolor, directcolor, \fInumber\fP
-
-If a decimal or hexadecimal number is used, 
-.BR XGetVisualInfo (3X)
-is consulted to obtain the required visual.
-.RE
-.TP 8
-.B \-colors \fIN\fP
-How many colors should be used (if possible).  The colors are chosen
-randomly.
-.TP 8
-.B \-foreground \fIname\fP
-With 
-.BR \-mono ,
-this option selects the foreground colour.   
-.TP 8
-.B \-delay \fImicroseconds\fP
-Specifies the delay between drawing successive line segments of the
-path.   If you do not specify 
-.BR -sync ,
-some X servers may batch up several drawing operations together,
-producing a less smooth effect.   This is more likely to happen 
-in monochrome mode (on monochrome servers or when 
-.B \-mono 
-is specified).
-.TP 8
-.B \-holdtime \fIseconds\fP
-When the figure is complete, 
-.I epicycle
-pauses this number of seconds.
-.TP 8
-.B \-linewidth \fIN\fP
-Width in pixels of the body's track.   Specifying values greater than
-one may cause slower drawing.   The fastest value is usually zero,
-meaning one pixel.   
-.TP 8
-.B \-min_circles \fIN\fP
-Smallest number of epicycles in the figure.
-.TP 8
-.B \-max_circles \fIN\fP
-Largest number of epicycles in the figure.
-.TP 8
-.B \-min_speed \fInumber\fP
-Smallest possible value for the base speed of revolution of the
-epicycles.  The actual speeds of the epicycles vary from this down
-to
-.IB "min_speed / harmonics" .
-.TP 8
-.B \-max_speed \fInumber\fP
-Smallest possible value for the base speed of revolution of the 
-epicycles.
-.TP 8
-.B \-harmonics \fIN\fP
-Number of possible harmonics; the larger this value is, the greater
-the possible variety of possible speeds of epicycle.
-.TP 8
-.B \-timestep \fInumber\fP
-Decreasing this value will reduce the distance the body moves for
-each line segment, possibly producing a smoother figure.  Increasing
-it may produce faster results.  
-.TP 8
-.B \-divisor_poisson \fIprobability\fP
-Each epicycle rotates at a rate which is a factor of the base speed.
-The speed of each epicycle is the base speed divided by some integer
-between 1 and the value of the 
-.B \-harmonics 
-option.  This integer is decided by starting at 1 and tossing 
-a biased coin.  For each consecutive head, the value is incremented by
-one.  The integer will not be incremented above the value of the 
-.B \-harmonics
-option.  The argument of this option decides the bias of the coin; it
-is the probability that that coin will produce a head at any given toss.
-.TP 8
-.B \-size_factor_min \fInumber\fP
-Epicycles are always at least this factor smaller than their
-parents.  
-.TP 8
-.B \-size_factor_max \fInumber\fP
-Epicycles are never more than this factor smaller than their parents.
-.SH RESOURCES
-.EX
-Option            Resource               Default Value
-------            --------               -------------
--colors           .colors                100
--delay            .delay                 1000
--holdtime         .holdtime              2
--linewidth        .lineWidth             4
--min_circles      .minCircles            2
--max_circles      .maxCircles            10
--min_speed        .minSpeed              0.003
--max_speed        .maxSpeed              0.005
--harmonics        .harmonics             8
--timestep         .timestep              1.0
--divisor_poisson  .divisorPoisson        0.4
--size_factor_min  .sizeFactorMin         1.05
--size_factor_max  .sizeFactorMax         2.05
-                  .timestepCoarseFactor  1.0
-.EE
-Before the drawing of the figure is begun, a preliminary calculation
-of the path is done in order to scale the radii of the epicycles so
-as to fit the figure on the screen or window.  For the sake of speed,
-This calculation is done with a larger timestep than the actual
-drawing.  The time-step used is the value of the
-.B \-timestep 
-option multiplied by the timestepCoarseFactor resource.  The default
-value of 1 will almost always work fast enough and so this resource
-is not available as a command-line option.
-.SH USER INTERFACE
-The program runs mostly without user interaction.  When running on the
-root window, no input is accepted.  When running in its own window,
-the program will exit if mouse button 3 is pressed.  If any other
-mouse button is pressed, the current figure will be abandoned and
-another will be started.
-.SH HISTORY
-The geometry of epicycles was perfected by Hipparchus of Rhodes at
-some time around 125 B.C., 185 years after the birth of Aristarchus of
-Samos, the inventor of the heliocentric universe model.  Hipparchus
-applied epicycles to the Sun and the Moon.  Ptolemy of Alexandria went
-on to apply them to what was then the known universe, at around 150
-A.D.  Copernicus went on to apply them to the heliocentric model at
-the beginning of the sixteenth century.  Johannes Kepler discovered
-that the planets actually move in elliptical orbits in about 1602.
-The inverse-square law of gravity was suggested by Boulliau in 1645.
-Isaac Newton's 
-.I Principia Mathematica
-was published in 1687, and proved that Kepler's laws derived from
-Newtonian gravitation.
-.SH BUGS
-The colour selection is re-done for every figure.  This may 
-generate too much network traffic for this program to work well 
-over slow or long links.   
-.SH COPYRIGHT
-Copyright \(co 1998, James Youngman.  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
-James Youngman <jay@gnu.org>, April 1998.
diff --git a/hacks/fadeplot.c b/hacks/fadeplot.c
deleted file mode 100644 (file)
index 5b71552..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * fadeplot.c --- some easy plotting stuff, by Bas van Gaalen, Holland, PD
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)fadeplot.c  4.04 97/07/26 xlockmore";
-#endif
-
-/* Converted for xlock by Charles Vidal
- * See xlock.c for copying information.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- */
-
-/*-
- 1) Not random enough, i.e. always same starting position.
- 2) Needs to be less flashy
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                     "Fadeplot"
-# define HACK_INIT                     init_fadeplot
-# define HACK_DRAW                     draw_fadeplot
-# define fadeplot_opts         xlockmore_opts
-# define DEFAULTS                      "*count:                10      \n"                     \
-                                                       "*delay:                30000   \n"                     \
-                                                       "*cycles:               1500    \n"                     \
-                                                       "*ncolors:              64      \n"
-# define BRIGHT_COLORS
-# define UNIFORM_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else /* STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* STANDALONE */
-
-ModeSpecOpt fadeplot_opts = {
-  0, NULL, 0, NULL, NULL };
-
-#define MINSTEPS 1
-#define ANGLES 1000
-
-typedef struct {
-       XPoint      speed, step, factor, st;
-       int         temps, maxpts, nbstep;
-       int         min;
-       int         width, height;
-       int         pix;
-       int         stab[ANGLES];
-       XPoint     *pts;
-} fadeplotstruct;
-
-static fadeplotstruct *fadeplots = NULL;
-
-static void
-initSintab(ModeInfo * mi)
-{
-       fadeplotstruct *fp = &fadeplots[MI_SCREEN(mi)];
-       int         i;
-       float       x;
-
-       for (i = 0; i < ANGLES; i++) {
-               x = SINF(i * 2 * M_PI / ANGLES);
-               fp->stab[i] = (int) (x * ABS(x) * fp->min) + fp->min;
-       }
-}
-
-void
-init_fadeplot(ModeInfo * mi)
-{
-       fadeplotstruct *fp;
-
-       if (fadeplots == NULL) {
-               if ((fadeplots = (fadeplotstruct *) calloc(MI_NUM_SCREENS(mi),
-                                          sizeof (fadeplotstruct))) == NULL)
-                       return;
-       }
-       fp = &fadeplots[MI_SCREEN(mi)];
-
-       fp->width = MI_WIN_WIDTH(mi);
-       fp->height = MI_WIN_HEIGHT(mi);
-  fp->min = MAX(MIN(fp->width, fp->height) / 2, 1);
-
-       fp->speed.x = 8;
-       fp->speed.y = 10;
-       fp->step.x = 1;
-       fp->step.y = 1;
-       fp->temps = 0;
-       fp->factor.x = MAX(fp->width / (2 * fp->min), 1);
-       fp->factor.y = MAX(fp->height / (2 * fp->min), 1);
-
-       fp->nbstep = MI_BATCHCOUNT(mi);
-       if (fp->nbstep < -MINSTEPS) {
-               fp->nbstep = NRAND(-fp->nbstep - MINSTEPS + 1) + MINSTEPS;
-       } else if (fp->nbstep < MINSTEPS)
-               fp->nbstep = MINSTEPS;
-
-  fp->maxpts = MI_CYCLES(mi);
-  if (fp->maxpts < 1)
-    fp->maxpts = 1;
-
-       if (fp->pts == NULL)
-               fp->pts = (XPoint *) calloc(fp->maxpts, sizeof (XPoint));
-       if (MI_NPIXELS(mi) > 2)
-               fp->pix = NRAND(MI_NPIXELS(mi));
-
-       initSintab(mi);
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-}
-
-void
-draw_fadeplot(ModeInfo * mi)
-{
-       fadeplotstruct *fp = &fadeplots[MI_SCREEN(mi)];
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       int         i, j;
-       long        temp;
-
-       XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-       XDrawPoints(display, window, gc, fp->pts, fp->maxpts, CoordModeOrigin);
-
-       if (MI_NPIXELS(mi) > 2) {
-               XSetForeground(display, gc, MI_PIXEL(mi, fp->pix));
-               if (++fp->pix >= MI_NPIXELS(mi))
-                       fp->pix = 0;
-       } else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-
-               for (temp = fp->nbstep - 1; temp >= 0; temp--) {
-                       j = temp;
-                       for (i = 0; i < fp->maxpts / fp->nbstep; i++) {
-                               fp->pts[temp * i + i].x =
-                                       fp->stab[(fp->st.x + fp->speed.x * j + i * fp->step.x) % ANGLES] *
-                                       fp->factor.x + fp->width / 2 - fp->min;
-                               fp->pts[temp * i + i].y =
-                                       fp->stab[(fp->st.y + fp->speed.y * j + i * fp->step.y) % ANGLES] *
-                                       fp->factor.y + fp->height / 2 - fp->min;
-                       }
-               }
-       XDrawPoints(display, window, gc, fp->pts, fp->maxpts, CoordModeOrigin);
-       XFlush(display);
-       fp->st.x = (fp->st.x + fp->speed.x) % ANGLES;
-       fp->st.y = (fp->st.y + fp->speed.y) % ANGLES;
-       fp->temps++;
-       if ((fp->temps % (ANGLES / 2)) == 0) {
-               fp->temps = fp->temps % ANGLES * 5;
-               if ((fp->temps % (ANGLES)) == 0)
-                       fp->speed.y = (fp->speed.y++) % 30 + 1;
-               if ((fp->temps % (ANGLES * 2)) == 0)
-                       fp->speed.x = (fp->speed.x) % 20;
-               if ((fp->temps % (ANGLES * 3)) == 0)
-                       fp->step.y = (fp->step.y++) % 2 + 1;
-               XClearWindow(display, window);
-       }
-}
-void
-refresh_fadeplot(ModeInfo * mi)
-{
-
-}
-
-void
-release_fadeplot(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/flag.c b/hacks/flag.c
deleted file mode 100644 (file)
index c633cdc..0000000
+++ /dev/null
@@ -1,606 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * flag --- a waving flag
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)flag.c       4.02 97/04/01 xlockmore";
-#endif
-
-/* Copyright (c) 1996 Charles Vidal <vidalc@univ-mlv.fr>.
- * PEtite demo X11 de charles vidal 15 05 96
- * tourne sous Linux et SOLARIS
- * thank's to Bas van Gaalen, Holland, PD, for his sources
- * in pascal vous devez rajouter une ligne dans mode.c
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History: 
- * 22-Jan-98: jwz: made the flag wigglier; added xpm support.
- *            (I tried to do this by re-porting from xlockmore, but the
- *            current xlockmore version is completely inscrutable.)
- * 13-May-97: jwz@jwz.org: turned into a standalone program.
- *                       Made it able to animate arbitrary (runtime) text or bitmaps.
- * 01-May-96: written.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Flag"
-# define HACK_INIT                                     init_flag
-# define HACK_DRAW                                     draw_flag
-# define flag_opts                                     xlockmore_opts
-# define DEFAULTS      "*delay:                50000   \n"                     \
-                                       "*cycles:               1000    \n"                     \
-                                       "*size:                 -7      \n"                     \
-                                       "*ncolors:              200     \n"
-# define BRIGHT_COLORS
-# define UNIFORM_COLORS
-# define DEF_FONT                                      "-*-helvetica-bold-r-*-240-*"
-# define DEF_BITMAP                                    ""
-# define DEF_TEXT                                      ""
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-
-# ifdef HAVE_XPM
-#  include <X11/xpm.h>
-#  ifndef PIXEL_ALREADY_TYPEDEFED
-#   define PIXEL_ALREADY_TYPEDEFED /* Sigh, Xmu/Drawing.h needs this... */
-#  endif
-# endif
-
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/Drawing.h>
-# else  /* VMS */
-#  include <Xmu/Drawing.h>
-# endif /* VMS */
-#endif /* HAVE_XMU */
-
-#include "images/bob.xbm"
-
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-# include "flag.h"
-#endif /* !STANDALONE */
-
-
-#if defined(VMS) && !defined(HAVE_UNAME) && (__VMS_VER >= 70000000)
-# define HAVE_UNAME 1
-#endif
-
-#ifdef HAVE_UNAME
-# include <sys/utsname.h>
-#endif /* HAVE_UNAME */
-
-#ifdef STANDALONE
-static XrmOptionDescRec opts[] =
-{
-  { "-bitmap", ".flag.bitmap", XrmoptionSepArg, 0 },
-  { "-text",   ".flag.text",   XrmoptionSepArg, 0 }
-};
-
-#endif /* STANDALONE */
-
-ModeSpecOpt flag_opts = {
-#ifdef STANDALONE
-  2, opts, 0, NULL, NULL
-#else  /* !STANDALONE */
-  0, NULL, 0, NULL, NULL
-#endif /* STANDALONE */
-};
-
-#include <string.h>
-#include <X11/Xutil.h>
-
-#define MINSIZE 1
-#define MAXSCALE 8
-#define MINSCALE 2
-#define MAXINITSIZE 6
-#define MININITSIZE 2
-#define MINAMP 5
-#define MAXAMP 20
-#define MAXW(fp) (MAXSCALE * (fp)->image->width + 2 * MAXAMP + (fp)->pointsize)
-#define MAXH(fp) (MAXSCALE * (fp)->image->height+ 2 * MAXAMP + (fp)->pointsize)
-#define MINW(fp) (MINSCALE * (fp)->image->width + 2 * MINAMP + (fp)->pointsize)
-#define MINH(fp) (MINSCALE * (fp)->image->height+ 2 * MINAMP + (fp)->pointsize)
-#define ANGLES         360
-
-typedef struct {
-       int         samp;
-       int         sofs;
-       int         sidx;
-       int         x_flag, y_flag;
-       int         timer;
-       int         initialized;
-       int         stab[ANGLES];
-       Pixmap      cache;
-       int         width, height;
-       int         pointsize;
-       float      size;
-       float      inctaille;
-       int         startcolor;
-    XImage     *image;
-} flagstruct;
-
-static flagstruct *flags = NULL;
-
-static int
-random_num(int n)
-{
-       return ((int) (((float) LRAND() / MAXRAND) * (n + 1.0)));
-}
-
-static void
-initSintab(ModeInfo * mi)
-{
-       flagstruct *fp = &flags[MI_SCREEN(mi)];
-       int         i;
-
-  /*-
-   * change the periodicity of the sin formula : the maximum of the
-   * periocity seem to be 16 ( 2^4 ), after the drawing isn't good looking
-   */
-       int         periodicity = random_num(4);
-       int         puissance = 1;
-
-       /* for (i=0;i<periodicity;i++) puissance*=2; */
-       puissance <<= periodicity;
-       for (i = 0; i < ANGLES; i++)
-               fp->stab[i] = (int) (SINF(i * puissance * M_PI / ANGLES) * fp->samp) +
-                       fp->sofs;
-}
-
-static void
-affiche(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       int         x, y, xp, yp;
-       flagstruct *fp = &flags[MI_SCREEN(mi)];
-
-       for (x = 0; x < fp->image->width; x++)
-               for (y = fp->image->height-1; y >= 0; y--) {
-                       xp = (int) (fp->size * (float) x) +
-                               fp->stab[(fp->sidx + x + y) % ANGLES];
-                       yp = (int) (fp->size * (float) y) +
-                               fp->stab[(fp->sidx + 4 * x + y + y) % ANGLES];
-
-                       if (fp->image->depth > 1)
-                         XSetForeground(display, MI_GC(mi),
-                                                        XGetPixel(fp->image, x, y));
-                       else if (XGetPixel(fp->image, x, y))
-                               XSetForeground(display, MI_GC(mi), MI_WIN_BLACK_PIXEL(mi));
-                       else if (MI_NPIXELS(mi) <= 2)
-                               XSetForeground(display, MI_GC(mi), MI_WIN_WHITE_PIXEL(mi));
-                       else
-                               XSetForeground(display, MI_GC(mi),
-                                              MI_PIXEL(mi, (y + x + fp->sidx + fp->startcolor) % MI_NPIXELS(mi)));
-
-                       if (fp->pointsize <= 1)
-                               XDrawPoint(display, fp->cache, MI_GC(mi), xp, yp);
-                       else if (fp->pointsize < 6)
-                               XFillRectangle(display, fp->cache, MI_GC(mi), xp, yp,
-                                                          fp->pointsize, fp->pointsize);
-                       else
-                               XFillArc(display, fp->cache, MI_GC(mi), xp, yp,
-                                                fp->pointsize, fp->pointsize, 0, 360*64);
-               }
-}
-
-#ifdef STANDALONE
-
-static void
-make_flag_bits(ModeInfo *mi)
-{
-  Display *dpy = MI_DISPLAY(mi);
-  flagstruct *fp = &flags[MI_SCREEN(mi)];
-  char *bitmap_name = get_string_resource ("bitmap", "Bitmap");
-  char *text = get_string_resource ("text", "Text");
-
-  /* If neither a bitmap nor text are specified, randomly select either
-        the builtin bitmap or builtin text. */
-  if ((!bitmap_name || !*bitmap_name) && (!text || !*text))
-       {
-         if (random() & 1)
-               {
-                 free(bitmap_name);
-                 bitmap_name = strdup("(default)");
-               }
-         else
-               {
-                 free(text);
-                 text = strdup("(default)");
-               }
-       }
-
-  if (bitmap_name &&
-         *bitmap_name &&
-         !!strcmp(bitmap_name, "(default)"))
-       {
-#ifdef HAVE_XPM
-         Window window = MI_WINDOW(mi);
-         XWindowAttributes xgwa;
-         XpmAttributes xpmattrs;
-         int result;
-         Pixmap bitmap = 0;
-         int width = 0, height = 0;
-         xpmattrs.valuemask = 0;
-
-         XGetWindowAttributes (dpy, window, &xgwa);
-
-# ifdef XpmCloseness
-         xpmattrs.valuemask |= XpmCloseness;
-         xpmattrs.closeness = 40000;
-# endif
-# ifdef XpmVisual
-         xpmattrs.valuemask |= XpmVisual;
-         xpmattrs.visual = xgwa.visual;
-# endif
-# ifdef XpmDepth
-         xpmattrs.valuemask |= XpmDepth;
-         xpmattrs.depth = xgwa.depth;
-# endif
-# ifdef XpmColormap
-         xpmattrs.valuemask |= XpmColormap;
-         xpmattrs.colormap = xgwa.colormap;
-# endif
-
-         /* Uh, we don't need these now.  We use the colors from the xpm.
-                It kinda sucks that we already allocated them. */
-         XFreeColors(dpy, xgwa.colormap, mi->pixels, mi->npixels, 0L);
-
-         result = XpmReadFileToPixmap (dpy, window, bitmap_name, &bitmap, 0,
-                                                                       &xpmattrs);
-         switch (result)
-               {
-               case XpmColorError:
-                 fprintf (stderr, "%s: warning: xpm color substitution performed\n",
-                                  progname);
-                 /* fall through */
-               case XpmSuccess:
-                 width = xpmattrs.width;
-                 height = xpmattrs.height;
-                 break;
-               case XpmFileInvalid:
-               case XpmOpenFailed:
-                 bitmap = 0;
-                 break;
-               case XpmColorFailed:
-                 fprintf (stderr, "%s: xpm: color allocation failed\n", progname);
-                 exit (-1);
-               case XpmNoMemory:
-                 fprintf (stderr, "%s: xpm: out of memory\n", progname);
-                 exit (-1);
-               default:
-                 fprintf (stderr, "%s: xpm: unknown error code %d\n", progname,
-                                  result);
-                 exit (-1);
-               }
-
-         if (bitmap)
-               {
-                 fp->image = XGetImage(dpy, bitmap, 0, 0, width, height, ~0L,
-                                                               ZPixmap);
-                 XFreePixmap(dpy, bitmap);
-               }
-         else
-#endif /* HAVE_XPM */
-
-#ifdef HAVE_XMU
-               {
-                 int width, height, xh, yh;
-                 Pixmap bitmap =
-                       XmuLocateBitmapFile (DefaultScreenOfDisplay (dpy),
-                                                                bitmap_name, 0, 0, &width, &height, &xh, &yh);
-                 if (!bitmap)
-                       {
-                         fprintf(stderr, "%s: unable to load bitmap file %s\n",
-                                         progname, bitmap_name);
-                         exit (1);
-                       }
-                 fp->image = XGetImage(dpy, bitmap, 0, 0, width, height,
-                                                               1L, XYPixmap);
-                 XFreePixmap(dpy, bitmap);
-               }
-
-#else  /* !XMU */
-      fprintf (stderr,
-                          "%s: your vendor doesn't ship the standard Xmu library.\n",
-                          progname);
-      fprintf (stderr, "\tWe can't load XBM files without it.\n");
-      exit (1);
-#endif /* !XMU */
-
-       }
-  else if (text && *text)
-       {
-         char *text2;
-         char *fn = get_string_resource ("font", "Font");
-         char *def_fn = "fixed";
-         char *line, *token;
-         int width, height;
-         int lines;
-         int margin = 2;
-         int fg = 1;
-         int bg = 0;
-         Pixmap bitmap;
-         XFontStruct *font;
-         XCharStruct overall;
-      XGCValues gcv;
-         GC gc;
-
-         if (!strcmp(text, "(default)"))
-               {
-# ifdef HAVE_UNAME
-                 struct utsname uts;
-                 if (uname (&uts) < 0)
-                       {
-                         text = strdup("uname() failed");
-                       }
-                 else
-                       {
-                         char *s;
-                         if ((s = strchr(uts.nodename, '.')))
-                               *s = 0;
-                         text = (char *) malloc(strlen(uts.nodename) +
-                                                                        strlen(uts.sysname) +
-                                                                        strlen(uts.release) + 10);
-                         sprintf(text, "%s\n%s %s",
-                                         uts.nodename, uts.sysname, uts.release);
-                       }
-#else  /* !HAVE_UNAME */
-# ifdef VMS
-                 text = strdup(getenv("SYS$NODE"));
-# else
-                 text = strdup("X\nScreen\nSaver");
-# endif
-#endif /* !HAVE_UNAME */
-               }
-
-         while (*text &&
-                        (text[strlen(text)-1] == '\r' ||
-                         text[strlen(text)-1] == '\n'))
-               text[strlen(text)-1] = 0;
-
-         text2 = strdup(text);
-
-         if (!fn) fn = def_fn;
-      font = XLoadQueryFont (dpy, fn);
-      if (! font)
-               {
-                 fprintf(stderr, "%s: unable to load font %s; using %s\n",
-                                 progname, fn, def_fn);
-                 font = XLoadQueryFont (dpy, def_fn);
-               }
-
-         memset(&overall, 0, sizeof(overall));
-         token = text;
-         lines = 0;
-         while ((line = strtok(token, "\r\n")))
-               {
-                 XCharStruct o2;
-                 int ascent, descent, direction;
-                 token = 0;
-                 XTextExtents(font, line, strlen(line),
-                                          &direction, &ascent, &descent, &o2);
-                 overall.lbearing = MAX(overall.lbearing, o2.lbearing);
-                 overall.rbearing = MAX(overall.rbearing, o2.rbearing);
-                 lines++;
-               }
-
-         width = overall.lbearing + overall.rbearing + margin + margin + 1;
-         height = ((font->ascent + font->descent) * lines) + margin + margin;
-
-         bitmap = XCreatePixmap(dpy, MI_WINDOW(mi), width, height, 1);
-
-      gcv.font = font->fid;
-      gcv.foreground = bg;
-      gc = XCreateGC (dpy, bitmap, (GCFont | GCForeground), &gcv);
-         XFillRectangle(dpy, bitmap, gc, 0, 0, width, height);
-         XSetForeground(dpy, gc, fg);
-
-         token = text2;
-         lines = 0;
-         while ((line = strtok(token, "\r\n")))
-               {
-                 XCharStruct o2;
-                 int ascent, descent, direction, xoff;
-                 token = 0;
-
-                 XTextExtents(font, line, strlen(line),
-                                          &direction, &ascent, &descent, &o2);
-                 xoff = ((overall.lbearing + overall.rbearing) -
-                                 (o2.lbearing + o2.rbearing)) / 2;
-
-                 XDrawString(dpy, bitmap, gc,
-                                         overall.lbearing + margin + xoff,
-                                         ((font->ascent * (lines + 1)) +
-                                          (font->descent * lines) +
-                                          margin),
-                                         line, strlen(line));
-                 lines++;
-               }
-         free(text2);
-         XUnloadFont(dpy, font->fid);
-         XFree((XPointer) font);
-         XFreeGC(dpy, gc);
-
-         fp->image = XGetImage(dpy, bitmap, 0, 0, width, height, 1L, XYPixmap);
-         XFreePixmap(dpy, bitmap);
-       }
-  else
-       {
-      char *bits = (char *) malloc (sizeof(bob_bits));
-      memcpy (bits, bob_bits, sizeof(bob_bits));
-         fp->image = XCreateImage (dpy, MI_VISUAL(mi), 1, XYBitmap, 0,
-                                                               bits, bob_width, bob_height,
-                                                               8, 0);
-         fp->image->byte_order = LSBFirst;
-         fp->image->bitmap_bit_order = LSBFirst;
-       }
-
-  if (bitmap_name)
-       free (bitmap_name);
-  if (text)
-       free (text);
-}
-
-#else  /* !STANDALONE */
-
-static void
-make_flag_bits(ModeInfo *mi)
-{
-  flagstruct *fp = &flags[MI_SCREEN(mi)];
-  int x, y;
-  int w = flag_width;
-  int h = flag_height;
-  int i = 0;
-  fp->image =
-       XCreateImage(MI_DISPLAY(mi), MI_VISUAL(mi),
-                                1, XYBitmap, 0,                                        /* dpth, fmt, offset */
-                                (char *) calloc ((w+8) / 8, h),        /* data */
-                                w, h, 8, 0);                                           /* w, h, pad, bpl */
-  /* Geez, what kinda goofy bit order is this?? */
-  for (x = 0; x < w; x++)
-       for (y = h-1; y >= 0; y--)
-         XPutPixel (fp->image, x, y, flag_bits[i++]);
-}
-
-#endif /* !STANDALONE */
-
-
-void
-init_flag(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       int         size = MI_SIZE(mi);
-       flagstruct *fp;
-
-       if (flags == NULL) {
-               if ((flags = (flagstruct *) calloc(MI_NUM_SCREENS(mi),
-                                              sizeof (flagstruct))) == NULL)
-                       return;
-       }
-       fp = &flags[MI_SCREEN(mi)];
-
-       make_flag_bits(mi);
-
-       fp->width = MI_WIN_WIDTH(mi);
-       fp->height = MI_WIN_HEIGHT(mi);
-
-       fp->samp = MAXAMP;      /* Amplitude */
-       fp->sofs = 20;          /* ???????? */
-       fp->pointsize = size;
-       if (size < -MINSIZE)
-               fp->pointsize = NRAND(-size - MINSIZE + 1) + MINSIZE;
-       if (fp->pointsize < MINSIZE ||
-       fp->width <= MAXW(fp) || fp->height <= MAXH(fp))
-               fp->pointsize = MINSIZE;
-       fp->size = MAXINITSIZE; /* Initial distance between pts */
-       fp->inctaille = 0.05;
-       fp->timer = 0;
-       fp->sidx = fp->x_flag = fp->y_flag = 0;
-
-       if (!fp->initialized) {
-               fp->initialized = True;
-               if (!(fp->cache = XCreatePixmap(display, MI_WINDOW(mi),
-               MAXW(fp), MAXH(fp), MI_WIN_DEPTH(mi))))
-#ifdef STANDALONE
-                 exit(-1);
-#else   /* !STANDALONE */
-                       error("%s: catastrophe memoire\n");
-#endif /* !STANDALONE */
-       }
-       XSetForeground(display, MI_GC(mi), MI_WIN_BLACK_PIXEL(mi));
-       XFillRectangle(display, fp->cache, MI_GC(mi),
-                      0, 0, MAXW(fp), MAXH(fp));
-       /* don't want any exposure events from XCopyArea */
-       XSetGraphicsExposures(display, MI_GC(mi), False);
-       if (MI_NPIXELS(mi) > 2)
-               fp->startcolor = NRAND(MI_NPIXELS(mi));
-       if (fp->width <= MAXW(fp) || fp->height <= MAXH(fp)) {
-               fp->samp = MINAMP;
-               fp->sofs = 0;
-               fp->x_flag = random_num(fp->width - MINW(fp));
-               fp->y_flag = random_num(fp->height - MINH(fp));
-       } else {
-               fp->samp = MAXAMP;
-               fp->sofs = 20;
-               fp->x_flag = random_num(fp->width - MAXW(fp));
-               fp->y_flag = random_num(fp->height - MAXH(fp));
-       }
-
-       initSintab(mi);
-
-       XClearWindow(display, MI_WINDOW(mi));
-}
-
-void release_flag(ModeInfo * mi);
-
-
-void
-draw_flag(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       flagstruct *fp = &flags[MI_SCREEN(mi)];
-
-       if (fp->width <= MAXW(fp) || fp->height <= MAXH(fp)) {
-               fp->size = MININITSIZE;
-               /* fp->pointsize = MINPOINTSIZE; */
-               XCopyArea(display, fp->cache, window, MI_GC(mi),
-                         0, 0, MINW(fp), MINH(fp), fp->x_flag, fp->y_flag);
-       } else {
-               if ((fp->size + fp->inctaille) > MAXSCALE)
-                       fp->inctaille = -fp->inctaille;
-               if ((fp->size + fp->inctaille) < MINSCALE)
-                       fp->inctaille = -fp->inctaille;
-               fp->size += fp->inctaille;
-               XCopyArea(display, fp->cache, window, MI_GC(mi),
-                         0, 0, MAXW(fp), MAXH(fp), fp->x_flag, fp->y_flag);
-       }
-       XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WIN_BLACK_PIXEL(mi));
-       XFillRectangle(display, fp->cache, MI_GC(mi),
-                      0, 0, MAXW(fp), MAXH(fp));
-       XFlush(display);
-       affiche(mi);
-       fp->sidx += 2;
-       fp->sidx %= (ANGLES * MI_NPIXELS(mi));
-       XFlush(display);
-       fp->timer++;
-       if ((MI_CYCLES(mi) > 0) && (fp->timer >= MI_CYCLES(mi)))
-      {
-        release_flag(mi);
-               init_flag(mi);
-      }
-}
-
-void
-release_flag(ModeInfo * mi)
-{
-       if (flags != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
-                 {
-                       if (flags[screen].cache)
-                               XFreePixmap(MI_DISPLAY(mi), flags[screen].cache);
-                       if (flags[screen].image)
-                         XDestroyImage(flags[screen].image);
-                 }
-               (void) free((void *) flags);
-               flags = NULL;
-       }
-}
-
-void
-refresh_flag(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/flag.man b/hacks/flag.man
deleted file mode 100644 (file)
index 1c7d93b..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-.TH XScreenSaver 1 "24-May-97" "X Version 11"
-.SH NAME
-flag - draws a waving flag, containing text or an image
-.SH SYNOPSIS
-.B flag
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-size \fIinteger\fP] [\-text \fIstring\fP] [\-font \fIfont\fP] [\-bitmap \fIxbm-file\fP]
-
-.SH DESCRIPTION
-The \fIflag\fP program draws a waving flag that contains text or a bitmap.
-.SH OPTIONS
-.I flag
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.TP 8
-.B \-size \fIinteger\fP
-How large the pixels in the flag should be, from 1 to 8.
-If this is a negative number, the pixel size is chosen randomly
-from the range 1 to -size.  Default -7.
-.TP 8
-.B \-text \fItext\fP
-The text to display in the flag.  Multiple lines of text are allowed;
-the lines will be displayed centered atop one another.  Default: none.
-If the text is the magic string \fI"(default)"\fP, then the text used 
-will be the local machine name; a newline; and the local OS version.
-.TP 8
-.B \-bitmap \fIxbm-file\fP
-The bitmap to display in the flag; this must be an XBM file (color XPMs
-are not allowed.)  Default: none.  If the bitmap is the magic 
-string \fI"(default)"\fP, then the bitmap used will be a charming 
-little picture of J. R. "Bob" Dobbs.
-
-If neither \fI\-text\fP nor \fI\-bitmap\fP are specified, then either
-the builtin text or the builtin bitmap will be chosen randomly.
-.TP 8
-.B \-font \fIfont\fP
-The font in which to draw the text; the default is
-"-*-helvetica-bold-r-*-240-*".
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1996 Charles Vidal.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Charles Vidal <vidalc@univ-mlv.fr>, 1996.
-
-Ability to run standalone or with \fIxscreensaver\fP, and the \-text
-and \-bitmap options, added by Jamie Zawinski <jwz@jwz.org>, 24-May-97.
diff --git a/hacks/flame.c b/hacks/flame.c
deleted file mode 100644 (file)
index 9d3543c..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-/* xscreensaver, Copyright (c) 1993, 1995, 1996, 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.
- */
-
-/* This file was ported from xlock for use in xscreensaver (and standalone)
- * by jwz on 18-Oct-93.  (And again, 11-May-97.)  Original copyright reads:
- *
- *   static char sccsid[] = "@(#)flame.c 1.4 91/09/27 XLOCK";
- *
- * flame.c - recursive fractal cosmic flames.
- *
- * Copyright (c) 1991 by Patrick J. Naughton.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Comments and additions should be sent to the author:
- *
- *                    naughton@eng.sun.com
- *
- *                    Patrick J. Naughton
- *                    MS 21-14
- *                    Sun Laboritories, Inc.
- *                    2550 Garcia Ave
- *                    Mountain View, CA  94043
- *
- * Revision History:
- * 01-Jun-95: This should look more like the original with some updates by
- *            Scott Draves.
- * 27-Jun-91: vary number of functions used.
- * 24-Jun-91: fixed portability problem with integer mod (%).
- * 06-Jun-91: Written. (received from Scott Draves, spot@cs.cmu.edu).
- */
-
-#include <math.h>
-#include "screenhack.h"
-
-#include <signal.h>            /* so we can ignore SIGFPE */
-
-#define POINT_BUFFER_SIZE 10
-#define MAXLEV 4
-#define MAXKINDS  10
-
-static double f[2][3][MAXLEV]; /* three non-homogeneous transforms */
-static int max_total;
-static int max_levels;
-static int max_points;
-static int cur_level;
-static int variation;
-static int snum;
-static int anum;
-static int num_points;
-static int total_points;
-static int pixcol;
-static int ncolors;
-static XColor *colors;
-static XPoint points [POINT_BUFFER_SIZE];
-static GC gc;
-
-static int delay, delay2;
-static int width, height;
-
-static short
-halfrandom (int mv)
-{
-  static short lasthalf = 0;
-  unsigned long r;
-
-  if (lasthalf)
-    {
-      r = lasthalf;
-      lasthalf = 0;
-    }
-  else
-    {
-      r = random ();
-      lasthalf = r >> 16;
-    }
-  return (r % mv);
-}
-
-static void
-init_flame (Display *dpy, Window window)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  Colormap cmap;
-
-#if defined(SIGFPE) && defined(SIG_IGN)
-  /* No doubt a better fix would be to track down where the NaN is coming
-     from, and code around that; but this should do.  Apparently most systems
-     (Linux, Solaris, Irix, ...) ignore FPE by default -- but FreeBSD dumps
-     core by default. */
-  signal (SIGFPE, SIG_IGN);
-#endif
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  width = xgwa.width;
-  height = xgwa.height;
-  cmap = xgwa.colormap;
-
-  max_points = get_integer_resource ("iterations", "Integer");
-  if (max_points <= 0) max_points = 100;
-
-  max_levels = max_points;
-
-  max_total = get_integer_resource ("points", "Integer");
-  if (max_total <= 0) max_total = 10000;
-
-  delay = get_integer_resource ("delay", "Integer");
-  if (delay < 0) delay = 0;
-  delay2 = get_integer_resource ("delay2", "Integer");
-  if (delay2 < 0) delay2 = 0;
-
-  variation = random() % MAXKINDS;
-
-  if (mono_p)
-    ncolors = 0;
-  else
-    {
-      ncolors = get_integer_resource ("colors", "Integer");
-      if (ncolors <= 0) ncolors = 128;
-      colors = (XColor *) malloc ((ncolors+1) * sizeof (*colors));
-      make_smooth_colormap (dpy, xgwa.visual, xgwa.colormap, colors, &ncolors,
-                           True, 0, True);
-      if (ncolors <= 2)
-       mono_p = True, ncolors = 0;
-    }
-
-  gcv.foreground = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  gcv.background = get_pixel_resource ("background", "Background", dpy, cmap);
-
-  if (! mono_p)
-    {
-      pixcol = halfrandom (ncolors);
-      gcv.foreground = (colors [pixcol].pixel);
-    }
-
-  gc = XCreateGC (dpy, window, GCForeground | GCBackground, &gcv);
-}
-
-static int
-recurse (double x, double y, int l, Display *dpy, Window win)
-{
-  int xp, yp, i;
-  double nx, ny;
-
-  if (l == max_levels)
-    {
-      total_points++;
-      if (total_points > max_total) /* how long each fractal runs */
-       return 0;
-
-      if (x > -1.0 && x < 1.0 && y > -1.0 && y < 1.0)
-       {
-         xp = points[num_points].x = (int) ((width / 2) * (x + 1.0));
-         yp = points[num_points].y = (int) ((height / 2) * (y + 1.0));
-         num_points++;
-         if (num_points >= POINT_BUFFER_SIZE)
-           {
-             XDrawPoints (dpy, win, gc, points, num_points, CoordModeOrigin);
-             num_points = 0;
-             /* if (delay) usleep (delay); */
-             /* XSync (dpy, False); */
-           }
-       }
-    }
-  else
-    {
-      for (i = 0; i < snum; i++)
-       {
-
-         /* Scale back when values get very large. Spot sez:
-            "I think this happens on HPUX.  I think it's non-IEEE
-            to generate an exception instead of a silent NaN."
-          */
-         if ((abs(x) > 1.0E5) || (abs(y) > 1.0E5))
-           x = x / y;
-
-         nx = f[0][0][i] * x + f[0][1][i] * y + f[0][2][i];
-         ny = f[1][0][i] * x + f[1][1][i] * y + f[1][2][i];
-         if (i < anum)
-           {
-             switch (variation)
-               {
-               case 0: /* sinusoidal */
-                 nx = sin(nx);
-                 ny = sin(ny);
-                 break;
-               case 1: /* complex */
-                 {
-                   double r2 = nx * nx + ny * ny + 1e-6;
-                   nx = nx / r2;
-                   ny = ny / r2;
-                 }
-                 break;
-               case 2: /* bent */
-                 if (nx < 0.0)
-                   nx = nx * 2.0;
-                 if (ny < 0.0)
-                   ny = ny / 2.0;
-                 break;
-               case 3: /* swirl */
-                 {
-                   double r = (nx * nx + ny * ny);     /* times k here is fun */
-                   double c1 = sin(r);
-                   double c2 = cos(r);
-                   double t = nx;
-
-                   if (nx > 1e4 || nx < -1e4 || ny > 1e4 || ny < -1e4)
-                     ny = 1e4;
-                   else
-                     ny = c2 * t + c1 * ny;
-                   nx = c1 * nx - c2 * ny;
-                 }
-                 break;
-               case 4: /* horseshoe */
-                 {
-                   double r, c1, c2, t;
-
-                   /* Avoid atan2: DOMAIN error message */
-                   if (nx == 0.0 && ny == 0.0)
-                     r = 0.0;
-                   else
-                     r = atan2(nx, ny);      /* times k here is fun */
-                   c1 = sin(r);
-                   c2 = cos(r);
-                   t = nx;
-
-                   nx = c1 * nx - c2 * ny;
-                   ny = c2 * t + c1 * ny;
-                 }
-                 break;
-               case 5: /* drape */
-                 {
-                   double t;
-
-                   /* Avoid atan2: DOMAIN error message */
-                   if (nx == 0.0 && ny == 0.0)
-                     t = 0.0;
-                   else
-                     t = atan2(nx, ny) / M_PI;
-
-                   if (nx > 1e4 || nx < -1e4 || ny > 1e4 || ny < -1e4)
-                     ny = 1e4;
-                   else
-                     ny = sqrt(nx * nx + ny * ny) - 1.0;
-                   nx = t;
-                 }
-                 break;
-               case 6: /* broken */
-                 if (nx > 1.0)
-                   nx = nx - 1.0;
-                 if (nx < -1.0)
-                   nx = nx + 1.0;
-                 if (ny > 1.0)
-                   ny = ny - 1.0;
-                 if (ny < -1.0)
-                   ny = ny + 1.0;
-                 break;
-               case 7: /* spherical */
-                 {
-                   double r = 0.5 + sqrt(nx * nx + ny * ny + 1e-6);
-
-                   nx = nx / r;
-                   ny = ny / r;
-                 }
-                 break;
-               case 8: /*  */
-                 nx = atan(nx) / M_PI_2;
-                 ny = atan(ny) / M_PI_2;
-                 break;
-/* #if 0 */  /* core dumps on some machines, why not all? */
-               case 9: /* complex sine */
-                 {
-                   double u = nx;
-                   double v = ny;
-                   double ev = exp(v);
-                   double emv = exp(-v);
-
-                   nx = (ev + emv) * sin(u) / 2.0;
-                   ny = (ev - emv) * cos(u) / 2.0;
-                 }
-                 break;
-               case 10:        /* polynomial */
-                 if (nx < 0)
-                   nx = -nx * nx;
-                 else
-                   nx = nx * nx;
-                 if (ny < 0)
-                   ny = -ny * ny;
-                 else
-                   ny = ny * ny;
-                 break;
-/* #endif */
-               default:
-                 nx = sin(nx);
-                 ny = sin(ny);
-               }
-           }
-         if (!recurse (nx, ny, l + 1, dpy, win))
-           return 0;
-       }
-    }
-  return 1;
-}
-
-
-static void
-flame (Display *dpy, Window window)
-{
-  int i, j, k;
-  static int alt = 0;
-
-  if (!(cur_level++ % max_levels))
-    {
-      if (delay2) usleep (delay2);
-      XClearWindow (dpy, window);
-      alt = !alt;
-
-      variation = random() % MAXKINDS;
-    }
-  else
-    {
-      if (ncolors > 2)
-       {
-         XSetForeground (dpy, gc, colors [pixcol].pixel);
-         if (--pixcol < 0)
-           pixcol = ncolors - 1;
-       }
-    }
-
-  /* number of functions */
-  snum = 2 + (cur_level % (MAXLEV - 1));
-
-  /* how many of them are of alternate form */
-  if (alt)
-    anum = 0;
-  else
-    anum = halfrandom (snum) + 2;
-
-  /* 6 coefs per function */
-  for (k = 0; k < snum; k++)
-    {
-      for (i = 0; i < 2; i++)
-       for (j = 0; j < 3; j++)
-         f[i][j][k] = ((double) (random() & 1023) / 512.0 - 1.0);
-    }
-  num_points = 0;
-  total_points = 0;
-  (void) recurse (0.0, 0.0, 0, dpy, window);
-  XDrawPoints (dpy, window, gc, points, num_points, CoordModeOrigin);
-  XSync (dpy, False);
-  if (delay) usleep (delay);
-}
-
-
-#if defined(__hpux) && defined(PLOSS)
-/* I don't understand why this is necessary, but I'm told that this program
-   does nothing at all on HP-sUX without it.
-
-   I'm further told that HPUX 11.0 doesn't define PLOSS, and works ok without
-   this section.  Go figure.
- */
-#undef random
-#undef srandom
-#include <math.h>
-int matherr(x)
-   register struct exception *x;
-{
-  if (x->type == PLOSS) return 1;
-  else return 0;
-}
-#endif /* __hpux */
-
-
-\f
-char *progclass = "Flame";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*colors:    64",
-  "*iterations:        25",
-  "*delay:     50000",
-  "*delay2:    2000000",
-  "*points:    10000",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-colors",         ".colors",      XrmoptionSepArg, 0 },
-  { "-iterations",     ".iterations",  XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-delay2",         ".delay2",      XrmoptionSepArg, 0 },
-  { "-points",         ".points",      XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  init_flame (dpy, window);
-  while (1)
-    {
-      flame (dpy, window);
-      screenhack_handle_events (dpy);
-    }
-}
diff --git a/hacks/flame.man b/hacks/flame.man
deleted file mode 100644 (file)
index a646973..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-.TH XScreenSaver 1 "13-aug-92" "X Version 11"
-.SH NAME
-flame - draw weird cosmic fractals
-.SH SYNOPSIS
-.B flame
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-colors \fIinteger\fP] [\-iterations \fIinteger\fP] [\-points \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-delay2 \fImicroseconds\fP]
-.SH DESCRIPTION
-The \fIflame\fP program generates colorful fractal displays.
-.SH OPTIONS
-.I flame
-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 \-colors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-.TP 8
-.B \-iterations \fIinteger\fP
-How many fractals to generate.  Default 25.
-.TP 8
-.B \-points \fIinteger\fP
-How many pixels to draw for each fractal.  Default 10000.
-.TP 8
-.B \-delay \fImicroseconds\fP
-How long we should wait between drawing each fractal.  Default 50000,
-or about 1/20th second.
-.TP 8
-.B \-delay2 \fImicroseconds\fP
-How long we should wait before clearing the screen when each run ends.
-Default 2000000, or two seconds.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1991 by Patrick J. Naughton
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Scott Graves <spot@cs.cmu.edu>, 06-Jun-91.n
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 18-Oct-93.
diff --git a/hacks/flow.c b/hacks/flow.c
deleted file mode 100644 (file)
index f606e05..0000000
+++ /dev/null
@@ -1,567 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* flow --- flow of strange bees */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)flow.c 4.10 98/04/24 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1996 by Tim Auckland <Tim.Auckland@Sun.COM>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * "flow" shows a variety of continuous phase-space flows around strange
- * attractors.  It includes the well-known Lorentz mask (the "Butterfly"
- * of chaos fame), two forms of Rossler's "Folded Band" and Poincare'
- * sections of the "Birkhoff Bagel" and Duffing's forced occilator.
- *
- * Revision History:
- * 31-Nov-98: [TDA] Added Duffing  (what a strange day that was :) DAB)
- *   Duffing's forced oscillator has been added to the formula list and
- *   the parameters section has been updated to display it in Poincare'
- *   section.
- * 30-Nov-98: [TDA] Added travelling perspective option
- *   A more exciting point-of-view has been added to all autonomous flows.
- *   This views the flow as seen by a particle moving with the flow.  In the
- *   metaphor of the original code, I've attached a camera to one of the
- *   trained bees!
- * 30-Nov-98: [TDA] Much code cleanup.
- * 09-Apr-97: [TDA] Ported to xlockmore-4
- * 18-Jul-96: Adapted from swarm.c Copyright (c) 1991 by Patrick J. Naughton.
- * 31-Aug-90: Adapted from xswarm by Jeff Butterworth. (butterwo@ncsc.org)
- */
-
-#ifdef STANDALONE
-# define PROGCLASS     "Flow"
-# define HACK_INIT     init_flow
-# define HACK_DRAW     draw_flow
-# define flow_opts     xlockmore_opts
-# define DEFAULTS      "*delay:                1000 \n" \
-                                       "*count:                1024 \n" \
-                                       "*cycles:               3000 \n" \
-                                       "*ncolors:              200 \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                /* in xscreensaver distribution */
-# include "erase.h"
-
-#else /* STANDALONE */
-# include "xlock.h"            /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-ModeSpecOpt flow_opts = { 0, NULL, 0, NULL, NULL };
-
-#ifdef USE_MODULES
-ModStruct   flow_description = {
-       "flow", "init_flow", "draw_flow", "release_flow",
-       "refresh_flow", "init_flow", NULL, &flow_opts,
-       1000, 1024, 3000, 1, 64, 1.0, "",
-       "Shows dynamic strange attractors", 0, NULL
-};
-
-#endif
-
-typedef struct {
-       double      x;
-       double      y;
-       double      z;
-} dvector;
-
-typedef struct {
-       double      a, b, c;
-} Par;
-
-/* Macros */
-#define X(t,b) (sp->p[t][b].x)
-#define Y(t,b) (sp->p[t][b].y)
-#define Z(t,b) (sp->p[t][b].z)
-#define balance_rand(v)        ((LRAND()/MAXRAND*(v))-((v)/2)) /* random around 0 */
-#define SCALE_X(A) (sp->width/2+sp->width/sp->size*(A))
-#define SCALE_Y(A) (sp->height/2+sp->height/sp->size*(A))
-
-typedef struct {
-       int         width;
-       int         height;
-       int         count;
-       double      size;
-       
-       int         beecount;   /* number of bees */
-       XSegment   *csegs;          /* bee lines */
-       int        *cnsegs;
-       XSegment   *old_segs;   /* old bee lines */
-       int         nold_segs;
-       double      step;
-       dvector     centre;             /* centre */
-       struct {
-               double  depth;
-               double  height;
-       }           view;
-       dvector    *p[2];   /* bee positions x[time][bee#] */
-       struct {
-               double  theta;
-               double  dtheta;
-               double  phi;
-               double  dphi;
-       }           tumble;
-       dvector  (*ODE) (Par par, double x, double y, double z);
-       Par         par;
-} flowstruct;
-
-static flowstruct *flows = NULL;
-
-static dvector
-Lorentz(Par par, double x, double y, double z)
-{
-       dvector d;
-
-       d.x = par.a * (y - x);
-       d.y = x * (par.b - z) - y;
-       d.z = x * y - par.c * z;
-       return d;
-}
-
-static dvector
-Rossler(Par par, double x, double y, double z)
-{
-       dvector d;
-
-       d.x = -(y + par.a * z);
-       d.y = x + y * par.b;
-       d.z = par.c + z * (x - 5.7);
-       return d;
-}
-
-static dvector
-RosslerCone(Par par, double x, double y, double z)
-{
-       dvector d;
-
-       d.x = -(y + par.a * z);
-       d.y = x + y * par.b - z * z * par.c;
-       d.z = 0.2 + z * (x - 5.7);
-       return d;
-}
-
-static dvector
-Birkhoff(Par par, double x, double y, double z)
-{
-       dvector d;
-
-       d.x = -y + par.b * sin(z);
-       d.y = 0.7 * x + par.a * y * (0.1 - x * x);
-       d.z = par.c;
-       return d;
-}
-
-static dvector
-Duffing(Par par, double x, double y, double z)
-{
-       dvector d;
-
-       d.x = -par.a * x - y/2 - y * y * y/8 + par.b * cos(z);
-       d.y = 2*x;
-       d.z = par.c;
-       return d;
-}
-
-void
-init_flow(ModeInfo * mi)
-{
-       flowstruct *sp;
-       int         b;
-       double      beemult = 1;
-       dvector     range;
-       static int  allocated = 0;
-
-       if (flows == NULL) {
-               if ((flows = (flowstruct *) calloc(MI_NUM_SCREENS(mi),
-                                              sizeof (flowstruct))) == NULL)
-                       return;
-       }
-       sp = &flows[MI_SCREEN(mi)];
-
-       sp->count = 0;
-
-       sp->width = MI_WIDTH(mi);
-       sp->height = MI_HEIGHT(mi);
-
-       sp->tumble.theta = balance_rand(M_PI);
-       sp->tumble.phi = balance_rand(M_PI);
-       sp->tumble.dtheta = 0.002;
-       sp->tumble.dphi = 0.001;
-       sp->view.height = 0;
-       sp->view.depth = 0; /* no perspective view */
-
-       switch (NRAND(8)) {
-       case 0:
-               sp->view.depth = 10;
-               sp->view.height = 0.2;
-               beemult = 3;
-       case 1:
-               sp->ODE = Lorentz;
-               sp->step = 0.02;
-               sp->size = 60;
-               sp->centre.x = 0;
-               sp->centre.y = 0;
-               sp->centre.z = 24;
-               range.x = 5;
-               range.y = 5;
-               range.z = 1;
-               sp->par.a = 10 + balance_rand(5);
-               sp->par.b = 28 + balance_rand(5);
-               sp->par.c = 2 + balance_rand(1);
-               break;
-       case 2:
-               sp->view.depth = 10;
-               sp->view.height = 0.1;
-               beemult = 4;
-       case 3:
-               sp->ODE = Rossler;
-               sp->step = 0.05;
-               sp->size = 24;
-               sp->centre.x = 0;
-               sp->centre.y = 0;
-               sp->centre.z = 3;
-               range.x = 4;
-               range.y = 4;
-               range.z = 7;
-               sp->par.a = 2 + balance_rand(1);
-               sp->par.b = 0.2 + balance_rand(0.1);
-               sp->par.c = 0.2 + balance_rand(0.1);
-               break;
-       case 4:
-               sp->view.depth = 10;
-               sp->view.height = 0.1;
-               beemult = 3;
-       case 5:
-               sp->ODE = RosslerCone;
-               sp->step = 0.05;
-               sp->size = 24;
-               sp->centre.x = 0;
-               sp->centre.y = 0;
-               sp->centre.z = 3;
-               range.x = 4;
-               range.y = 4;
-               range.z = 4;
-               sp->par.a = 2;
-               sp->par.b = 0.2;
-               sp->par.c = 0.25 + balance_rand(0.09);
-               break;
-       case 6:
-               sp->ODE = Birkhoff;
-               sp->step = 0.04;
-               sp->size = 2.6;
-               sp->centre.x = 0;
-               sp->centre.y = 0;
-               sp->centre.z = 0;
-               range.x = 3;
-               range.y = 4;
-               range.z = 0;
-               sp->par.a = 10 + balance_rand(5);
-               sp->par.b = 0.35 + balance_rand(0.25);
-               sp->par.c = 1.57;
-               sp->tumble.theta = 0;
-               sp->tumble.phi = 0;
-               sp->tumble.dtheta = 0;
-               sp->tumble.dphi = 0;
-               break;
-       case 7:
-       default:
-               sp->ODE = Duffing;
-               sp->step = 0.02;
-               sp->size = 30;
-               sp->centre.x = 0;
-               sp->centre.y = 0;
-               sp->centre.z = 0;
-               range.x = 20;
-               range.y = 20;
-               range.z = 0;
-               sp->par.a = 0.2 + balance_rand(0.1);
-               sp->par.b = 27.0 + balance_rand(3.0);
-               sp->par.c = 1.33;
-               sp->tumble.theta = 0;
-               sp->tumble.phi = 0;
-               sp->tumble.dtheta = -NRAND(2)*sp->par.c*sp->step;
-               sp->tumble.dphi = 0;
-               beemult = 0.5;
-               break;
-       }
-
-       sp->beecount = beemult * MI_COUNT(mi);
-       if (sp->beecount < 0)   /* random variations */ 
-               sp->beecount = NRAND(-sp->beecount) + 1; /* Minimum 1 */
-
-       /* Clear the background. */
-       MI_CLEARWINDOW(mi);
-
-       if(!allocated || sp->beecount != allocated){ /* reallocate */
-               if (sp->csegs != NULL) {
-                       (void) free((void *) sp->csegs);
-                       sp->csegs = NULL;
-               }
-               if (sp->cnsegs != NULL) {
-                       (void) free((void *) sp->cnsegs);
-                       sp->cnsegs = NULL;
-               }
-               if (sp->old_segs != NULL) {
-                       (void) free((void *) sp->old_segs);
-                       sp->old_segs = NULL;
-               }
-               if (sp->p[0] != NULL) {
-                       (void) free((void *) sp->p[0]);
-                       sp->p[0] = NULL;
-               }
-               if (sp->p[1] != NULL) {
-                       (void) free((void *) sp->p[1]);
-                       sp->p[1] = NULL;
-               }
-       }
-
-       /* Allocate memory. */
-
-       if (!sp->csegs) {
-               sp->csegs = (XSegment *) malloc(sizeof (XSegment) * sp->beecount
-                                               * MI_NPIXELS(mi));
-               sp->cnsegs = (int *) malloc(sizeof (int) * MI_NPIXELS(mi));
-
-               sp->old_segs = (XSegment *) malloc(sizeof (XSegment) * sp->beecount);
-               sp->p[0] = (dvector *) malloc(sizeof (dvector) * sp->beecount);
-               sp->p[1] = (dvector *) malloc(sizeof (dvector) * sp->beecount);
-       }
-
-       /* Initialize point positions, velocities, etc. */
-
-       for (b = 0; b < sp->beecount; b++) {
-               X(1, b) = X(0, b) = balance_rand(range.x);
-               Y(1, b) = Y(0, b) = balance_rand(range.y);
-               Z(1, b) = Z(0, b) = balance_rand(range.z);
-       }
-}
-
-void
-draw_flow(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       flowstruct *sp = &flows[MI_SCREEN(mi)];
-       int         b, c, i;
-       int         col, ix;
-       double      M[3][3]; /* transformation matrix */
-
-       if(!sp->view.depth){ /* simple 3D tumble */
-               double      sint, cost, sinp, cosp;
-               sp->tumble.theta += sp->tumble.dtheta;
-               sp->tumble.phi += sp->tumble.dphi;
-               sint = sin(sp->tumble.theta);
-               cost = cos(sp->tumble.theta);
-               sinp = sin(sp->tumble.phi);
-               cosp = cos(sp->tumble.phi);
-               M[0][0]= cost; M[0][1]=-sint*cosp; M[0][2]= sint*sinp;
-               M[1][0]= sint; M[1][1]= cost*cosp; M[1][2]=-cost*sinp;
-               M[2][0]= 0;    M[2][1]= 0;         M[2][2]= 1;
-       } else { /* initialize matrix */
-               M[0][0]= 0; M[0][1]= 0; M[0][2]= 0;
-               M[1][0]= 0; M[1][1]= 0; M[1][2]= 0;
-               M[2][0]= 0; M[2][1]= 0; M[2][2]= 0;
-
-       }
-
-       for (col = 0; col < MI_NPIXELS(mi); col++)
-               sp->cnsegs[col] = 0;
-
-       MI_IS_DRAWN(mi) = True;
-
-       /* <=- Bees -=> */
-       for (b = 0; b < sp->beecount; b++) {
-               /* Age the arrays. */
-               X(1, b) = X(0, b);
-               Y(1, b) = Y(0, b);
-               Z(1, b) = Z(0, b);
-
-               /* 2nd order Kunge Kutta */
-               {
-                       dvector     k1, k2;
-
-                       k1 = sp->ODE(sp->par, X(1, b), Y(1, b), Z(1, b));
-                       k1.x *= sp->step;
-                       k1.y *= sp->step;
-                       k1.z *= sp->step;
-                       k2 = sp->ODE(sp->par, X(1, b) + k1.x, Y(1, b) + k1.y, Z(1, b) + k1.z);
-                       k2.x *= sp->step;
-                       k2.y *= sp->step;
-                       k2.z *= sp->step;
-                       X(0, b) = X(1, b) + (k1.x + k2.x) / 2.0;
-                       Y(0, b) = Y(1, b) + (k1.y + k2.y) / 2.0;
-                       Z(0, b) = Z(1, b) + (k1.z + k2.z) / 2.0;
-               }
-
-               /* Colour according to bee */
-               col = b % (MI_NPIXELS(mi) - 1);
-               ix = col * sp->beecount + sp->cnsegs[col];
-
-               /* Fill the segment lists. */
-
-               if(sp->view.depth) /* perspective view has special points */
-                       if(b==0){ /* point of view */
-                               sp->centre.x=X(0, b);
-                               sp->centre.y=Y(0, b);
-                               sp->centre.z=Z(0, b);
-                       }else if(b==1){ /* neighbour: used to compute local axes */
-                               double x[3], p[3], x2=0, xp=0;
-                               int j;
-
-                               /* forward */                           
-                               x[0] = X(0, 0) - X(1, 0);
-                               x[1] = Y(0, 0) - Y(1, 0);
-                               x[2] = Z(0, 0) - Z(1, 0);
-                       
-                               /* neighbour */
-                               p[0] = X(0, 1) - X(1, 0);
-                               p[1] = Y(0, 1) - Y(1, 0);
-                               p[2] = Z(0, 1) - Z(1, 0);
-
-                               for(i=0; i<3; i++){
-                                       x2+= x[i]*x[i];    /* X . X */
-                                       xp+= x[i]*p[i];    /* X . P */
-                                       M[0][i] = x[i];    /* X */
-                               }
-
-                               for(i=0; i<3; i++)               /* (X x P) x X */
-                                       M[1][i] = x2*p[i] - xp*x[i]; /* == (X . X) P - (X . P) X */
-                               
-                               M[2][0] =  x[1]*p[2] - x[2]*p[1]; /* X x P */
-                               M[2][1] = -x[0]*p[2] + x[2]*p[0];
-                               M[2][2] =  x[0]*p[1] - x[1]*p[0];
-
-                               /* normalise axes */
-                               for(j=0; j<3; j++){
-                                       double A=0;
-                                       for(i=0; i<3; i++) A+=M[j][i]*M[j][i]; /* sum squares */
-                                       A=sqrt(A);
-                                       for(i=0; i<3; i++) M[j][i]/=A;
-                               }
-
-                               X(0, 1)=X(0, 0)+M[1][0]; /* adjust neighbour */
-                               Y(0, 1)=Y(0, 0)+M[1][1];
-                               Z(0, 1)=Z(0, 0)+M[1][2];
-
-#if 0  /* display local axes for testing */
-                               X(1, b)=X(0, 0);
-                               Y(1, b)=Y(0, 0);
-                               Z(1, b)=Z(0, 0);
-                       }else if(b==2){
-                               X(0, b)=X(0, 0)+0.5*M[0][0];
-                               Y(0, b)=Y(0, 0)+0.5*M[0][1];
-                               Z(0, b)=Z(0, 0)+0.5*M[0][2];
-                               X(1, b)=X(0, 0);
-                               Y(1, b)=Y(0, 0);
-                               Z(1, b)=Z(0, 0);
-                       }else if(b==3){
-                               X(0, b)=X(0, 0)+1.5*M[2][0];
-                               Y(0, b)=Y(0, 0)+1.5*M[2][1];
-                               Z(0, b)=Z(0, 0)+1.5*M[2][2];
-                               X(1, b)=X(0, 0);
-                               Y(1, b)=Y(0, 0);
-                               Z(1, b)=Z(0, 0);
-#endif
-                       }
-               
-               for(i=0; i<2; i++){
-                       double x=X(i,b)-sp->centre.x;
-                       double y=Y(i,b)-sp->centre.y;
-                       double z=Z(i,b)-sp->centre.z;
-                       double X=M[0][0]*x + M[0][1]*y + M[0][2]*z;
-                       double Y=M[1][0]*x + M[1][1]*y + M[1][2]*z;
-                       double Z=M[2][0]*x + M[2][1]*y + M[2][2]*z+sp->view.height;
-                       double absx, absy;                              
-                       if(sp->view.depth){
-                               if(X <= 0) break;
-                               absx=SCALE_X(sp->view.depth*Y/X);
-                               absy=SCALE_Y(sp->view.depth*Z/X);
-                               if(absx < -sp->width || absx > 2*sp->width ||
-                                  absy < -sp->height || absy > 2*sp->height)
-                                       break;
-                       }else{
-                               absx=SCALE_X(X);
-                               absy=SCALE_Y(Y);
-                       }
-                       if(i){
-                               sp->csegs[ix].x1 = (short) absx;
-                               sp->csegs[ix].y1 = (short) absy;
-                       }else{
-                               sp->csegs[ix].x2 = (short) absx;
-                               sp->csegs[ix].y2 = (short) absy;
-                       }
-               }
-               if(i == 2) /* both assigned */
-                       sp->cnsegs[col]++;
-    }
-       if (sp->count) { /* erase */
-               XSetForeground(display, gc, MI_BLACK_PIXEL(mi));
-               XDrawSegments(display, window, gc, sp->old_segs, sp->nold_segs);
-       }
-
-       if (MI_NPIXELS(mi) > 2){ /* render colour */
-               for (col = 0; col < MI_NPIXELS(mi); col++)
-                       if (sp->cnsegs[col] > 0) {
-                               XSetForeground(display, gc, MI_PIXEL(mi, col));
-                               XDrawSegments(display, window, gc,
-                                             sp->csegs + col * sp->beecount, sp->cnsegs[col]);
-                       }
-       } else {                /* render mono */
-               XSetForeground(display, gc, MI_WHITE_PIXEL(mi));
-               XDrawSegments(display, window, gc,
-                                         sp->csegs + col * sp->beecount, sp->cnsegs[col]);
-       }
-
-       /* Copy to erase-list */
-       for (col = 0, c = 0; col < MI_NPIXELS(mi); col++)
-               for (b = 0; b < sp->cnsegs[col]; b++)
-                       sp->old_segs[c++] = (sp->csegs + col * sp->beecount)[b];
-       sp->nold_segs = c;
-
-       if (++sp->count > MI_CYCLES(mi)) /* pick a new flow */
-               init_flow(mi);
-}
-
-void
-release_flow(ModeInfo * mi)
-{
-       if (flows != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       flowstruct *sp = &flows[screen];
-
-                       if (sp->csegs != NULL)
-                               (void) free((void *) sp->csegs);
-                       if (sp->cnsegs != NULL)
-                               (void) free((void *) sp->cnsegs);
-                       if (sp->old_segs != NULL)
-                               (void) free((void *) sp->old_segs);
-                       if (sp->p[0] != NULL)
-                               (void) free((void *) sp->p[0]);
-                       if (sp->p[1] != NULL)
-                               (void) free((void *) sp->p[1]);
-               }
-               (void) free((void *) flows);
-               flows = NULL;
-       }
-}
-
-void
-refresh_flow(ModeInfo * mi)
-{
-       MI_CLEARWINDOW(mi);
-}
diff --git a/hacks/forest.c b/hacks/forest.c
deleted file mode 100644 (file)
index 54fe807..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * forest.c --- draw a fractal forest.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)forest.c     4.03 97/05/10 xlockmore";
-#endif
-
-/* Copyright (c) 1995 Pascal Pensa <pensa@aurora.unice.fr>
- *
- * Original idea : Guillaume Ramey <ramey@aurora.unice.fr>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Forest"
-# define HACK_INIT                                     init_forest
-# define HACK_DRAW                                     draw_forest
-# define forest_opts                           xlockmore_opts
-# define DEFAULTS      "*count:                100     \n"                     \
-                                       "*cycles:               200     \n"                     \
-                                       "*delay:                400000  \n"                     \
-                                       "*ncolors:              100     \n"
-# define UNIFORM_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-# include "erase.h"
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt forest_opts = {
-  0, NULL, 0, NULL, NULL };
-
-
-#define MINTREES   1
-
-#define MINHEIGHT  20          /* Tree height range */
-#define MAXHEIGHT  40
-
-#define MINANGLE   15          /* (degree) angle between soon */
-#define MAXANGLE   35
-#define RANDANGLE  15          /* (degree) Max random angle from default */
-
-#define REDUCE     90          /* Height % from father */
-
-#define ITERLEVEL  10          /* Tree iteration */
-
-#define COLORSPEED  2          /* Color increment */
-
-/* degree to radian */
-#define DEGTORAD(x) (((float)(x)) * M_PI / 180.0)
-
-#define RANGE_RAND(min,max) ((min) + NRAND((max) - (min)))
-
-typedef struct {
-       int         width;
-       int         height;
-       int         time;       /* up time */
-       int         ntrees;
-} foreststruct;
-
-static foreststruct *forests = NULL;
-
-static void
-draw_tree(ModeInfo * mi,
-         short int x, short int y, short int len,
-         float a, float as, short int c, short int level)
-                               /* Father's end */
-                               /* Length */
-                               /* color */
-                               /* Height level */
-                               /* Father's angle */
-                               /* Father's angle step */
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       short       x_1, y_1, x_2, y_2;
-       float       a1, a2;
-
-       /* left */
-
-       a1 = a + as + DEGTORAD(NRAND(2 * RANDANGLE) - RANDANGLE);
-
-       x_1 = x + (short) (COSF(a1) * ((float) len));
-       y_1 = y + (short) (SINF(a1) * ((float) len));
-
-       /* right */
-
-       a2 = a - as + DEGTORAD(NRAND(2 * RANDANGLE) - RANDANGLE);
-
-       x_2 = x + (short) (COSF(a2) * ((float) len));
-       y_2 = y + (short) (SINF(a2) * ((float) len));
-
-       if (MI_NPIXELS(mi) > 2) {
-               XSetForeground(display, gc, MI_PIXEL(mi, c));
-               c = (c + COLORSPEED) % MI_NPIXELS(mi);
-       } else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-
-       XDrawLine(display, window, gc, x, y, x_1, y_1);
-       XDrawLine(display, window, gc, x, y, x_2, y_2);
-
-       if (level < 2) {
-               XDrawLine(display, window, gc, x + 1, y, x_1 + 1, y_1);
-               XDrawLine(display, window, gc, x + 1, y, x_2 + 1, y_2);
-       }
-       len = (len * REDUCE * 10) / 1000;
-
-       if (level < ITERLEVEL) {
-               draw_tree(mi, x_1, y_1, len, a1, as, c, level + 1);
-               draw_tree(mi, x_2, y_2, len, a2, as, c, level + 1);
-       }
-}
-
-void
-init_forest(ModeInfo * mi)
-{
-       foreststruct *fp;
-
-       if (forests == NULL) {
-               if ((forests = (foreststruct *) calloc(MI_NUM_SCREENS(mi),
-                                            sizeof (foreststruct))) == NULL)
-                       return;
-       }
-       fp = &forests[MI_SCREEN(mi)];
-
-       fp->width = MI_WIN_WIDTH(mi);
-       fp->height = MI_WIN_HEIGHT(mi);
-       fp->time = 0;
-
-       fp->ntrees = MI_BATCHCOUNT(mi);
-       if (fp->ntrees < -MINTREES)
-               fp->ntrees = NRAND(-fp->ntrees - MINTREES + 1) + MINTREES;
-       else if (fp->ntrees < MINTREES)
-               fp->ntrees = MINTREES;
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-}
-
-void
-draw_forest(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       foreststruct *fp = &forests[MI_SCREEN(mi)];
-       short       x, y, x_2, y_2, len, c = 0;
-       float       a, as;
-
-       if (fp->time < fp->ntrees) {
-
-               x = RANGE_RAND(0, fp->width);
-               y = RANGE_RAND(0, fp->height + MAXHEIGHT);
-               a = -M_PI / 2.0 + DEGTORAD(NRAND(2 * RANDANGLE) - RANDANGLE);
-               as = DEGTORAD(RANGE_RAND(MINANGLE, MAXANGLE));
-               len = ((RANGE_RAND(MINHEIGHT, MAXHEIGHT) * (fp->width / 20)) / 50) + 2;
-
-               if (MI_NPIXELS(mi) > 2) {
-                       c = NRAND(MI_NPIXELS(mi));
-                       XSetForeground(display, gc, MI_PIXEL(mi, c));
-                       c = (c + COLORSPEED) % MI_NPIXELS(mi);
-               } else
-                       XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-
-               x_2 = x + (short) (COSF(a) * ((float) len));
-               y_2 = y + (short) (SINF(a) * ((float) len));
-
-               XDrawLine(display, MI_WINDOW(mi), gc, x, y, x_2, y_2);
-               XDrawLine(display, MI_WINDOW(mi), gc, x + 1, y, x_2 + 1, y_2);
-
-               draw_tree(mi, x_2, y_2, (len * REDUCE) / 100, a, as, c, 1);
-       }
-       if (++fp->time > MI_CYCLES(mi)) {
-#ifdef STANDALONE
-         erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif /* STANDALONE */
-         init_forest(mi);
-       }
-}
-
-void
-release_forest(ModeInfo * mi)
-{
-       if (forests != NULL) {
-               (void) free((void *) forests);
-               forests = NULL;
-       }
-}
-
-void
-refresh_forest(ModeInfo * mi)
-{
-       foreststruct *fp = &forests[MI_SCREEN(mi)];
-
-       if (fp->time < fp->ntrees)
-               XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-       else
-               init_forest(mi);
-}
diff --git a/hacks/forest.man b/hacks/forest.man
deleted file mode 100644 (file)
index 9f2d2c6..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-.TH XScreenSaver 1 "27-May-97" "X Version 11"
-.SH NAME
-forest - draws a fractal forest
-.SH SYNOPSIS
-.B forest
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
-
-.SH DESCRIPTION
-The \fIforest\fP program draws a fractal forest.
-.SH OPTIONS
-.I forest
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 100.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1995 by Pascal Pensa.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Pascal Pensa <pensa@aurora.unice.fr>, 1995.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 27-May-97.
diff --git a/hacks/galaxy.c b/hacks/galaxy.c
deleted file mode 100644 (file)
index b75ff03..0000000
+++ /dev/null
@@ -1,469 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* galaxy --- spinning galaxies */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)galaxy.c     4.04 97/07/28 xlockmore";
-#endif
-
-/* Originally done by Uli Siegmund <uli@wombat.okapi.sub.org> on Amiga
- *   for EGS in Cluster
- * Port from Cluster/EGS to C/Intuition by Harald Backert
- * Port to X11 and incorporation into xlockmore by Hubert Feyrer
- *   <hubert.feyrer@rz.uni-regensburg.de>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 18-Apr-97: Memory leak fixed by Tom Schmidt <tschmidt@micron.com>
- * 07-Apr-97: Modified by Dave Mitchell <davem@magnet.com>
- * 23-Oct-94: Modified by David Bagley <bagleyd@bigfoot.com>
- *             random star sizes
- *             colors change depending on velocity
- * 10-Oct-94: Add colors by Hubert Feyer
- * 30-Sep-94: Initial port by Hubert Feyer
- * 09-Mar-94: VMS can generate a random number 0.0 which results in a
- *            division by zero, corrected by Jouk Jansen
- *            <joukj@crys.chem.uva.nl>
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Galaxy"
-# define HACK_INIT                                     init_galaxy
-# define HACK_DRAW                                     draw_galaxy
-# define galaxy_opts                           xlockmore_opts
-# define DEFAULTS      "*delay:                100  \n"                        \
-                                       "*count:                -5   \n"                        \
-                                       "*cycles:               250  \n"                        \
-                                       "*size:                 -3   \n"                        \
-                                       "*ncolors:              64   \n"
-# define UNIFORM_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-static Bool tracks;
-
-#define DEF_TRACKS "False"
-
-static XrmOptionDescRec opts[] =
-{
-       {"-tracks", ".galaxy.tracks", XrmoptionNoArg, (caddr_t) "on"},
-       {"+tracks", ".galaxy.tracks", XrmoptionNoArg, (caddr_t) "off"}
-};
-
-static argtype vars[] =
-{
-       {(caddr_t *) & tracks, "tracks", "Tracks", DEF_TRACKS, t_Bool}
-};
-
-static OptionStruct desc[] =
-{
-       {"-/+tracks", "turn on/off star tracks"}
-};
-
-ModeSpecOpt galaxy_opts = { 2, opts, 1, vars, desc };
-
-
-#define FLOATRAND ((double) LRAND() / ((double) MAXRAND))
-
-#if 0
-#define WRAP       1           /* Warp around edges */
-#define BOUNCE     1           /* Bounce from borders */
-#endif
-
-#define MINSIZE       1
-#define MINGALAXIES    1
-#define MAX_STARS    300
-#define MAX_IDELTAT    50
-/* These come originally from the Cluster-version */
-#define DEFAULT_GALAXIES  2
-#define DEFAULT_STARS    1000
-#define DEFAULT_HITITERATIONS  7500
-#define DEFAULT_IDELTAT    200 /* 0.02 */
-#define EPSILON 0.00000001
-
-#define sqrt_EPSILON 0.0001
-
-#define DELTAT (MAX_IDELTAT * 0.0001)
-
-#define GALAXYRANGESIZE  0.1
-#define GALAXYMINSIZE  0.1
-#define QCONS    0.001
-
-/*-
- *  The following is enabled, it does not look that good for some.
- *  (But it looks great for me.)  Maybe velocities should be measured
- *  relative to their galaxy-centers instead of absolute.
- */
-#if 0
-#undef NO_VELOCITY_COLORING */ /* different colors for different speeds */
-#endif
-
-#define COLORBASE  8
-  /* Colors for stars start here */
-#define COLORSTEP  (NUMCOLORS/COLORBASE)       /* 8 colors per galaxy */
-
-#define drawStar(x,y,size) if(size<=1) XDrawPoint(display,window,gc,x,y);\
-  else XFillArc(display,window,gc,x,y,size,size,0,23040)
-
-typedef struct {
-       double      pos[3], vel[3];
-       int         px, py;
-       int         color;
-       int         size;
-} Star;
-
-typedef struct {
-       int         mass;
-       int         nstars;
-       Star       *stars;
-       double      pos[3], vel[3];
-       int         galcol;
-} Galaxy;
-
-typedef struct {
-       struct {
-               int         left;       /* x minimum */
-               int         right;      /* x maximum */
-               int         top;        /* y minimum */
-               int         bottom;     /* y maximum */
-       } clip;
-       double      mat[3][3];  /* Movement of stars(?) */
-       double      scale;      /* Scale */
-       int         midx;       /* Middle of screen, x */
-       int         midy;       /* Middle of screen, y */
-       double      size;       /* */
-       double      diff[3];    /* */
-       Galaxy     *galaxies;   /* the Whole Universe */
-       int         ngalaxies;  /* # galaxies */
-       int         f_hititerations;    /* # iterations before restart */
-       int         step;       /* */
-} unistruct;
-
-static unistruct *universes = NULL;
-
-static void
-free_galaxies(unistruct * gp)
-{
-       if (gp->galaxies != NULL) {
-               int         i;
-
-               for (i = 0; i < gp->ngalaxies; i++) {
-                       Galaxy     *gt = &gp->galaxies[i];
-
-                       if (gt->stars != NULL)
-                               (void) free((void *) gt->stars);
-               }
-               (void) free((void *) gp->galaxies);
-               gp->galaxies = NULL;
-       }
-}
-
-static void
-startover(ModeInfo * mi)
-{
-       unistruct  *gp = &universes[MI_SCREEN(mi)];
-       int         size = MI_SIZE(mi);
-       int         i, j;       /* more tmp */
-       double      w1, w2;     /* more tmp */
-       double      d, v, w, h; /* yet more tmp */
-
-       gp->step = 0;
-
-       if (MI_BATCHCOUNT(mi) < -MINGALAXIES)
-               free_galaxies(gp);
-       gp->ngalaxies = MI_BATCHCOUNT(mi);
-       if (gp->ngalaxies < -MINGALAXIES)
-               gp->ngalaxies = NRAND(-gp->ngalaxies - MINGALAXIES + 1) + MINGALAXIES;
-       else if (gp->ngalaxies < MINGALAXIES)
-               gp->ngalaxies = MINGALAXIES;
-       if (gp->galaxies == NULL)
-               gp->galaxies = (Galaxy *) calloc(gp->ngalaxies, sizeof (Galaxy));
-
-       for (i = 0; i < gp->ngalaxies; ++i) {
-               Galaxy     *gt = &gp->galaxies[i];
-               double      sinw1, sinw2, cosw1, cosw2;
-
-               gt->galcol = NRAND(COLORBASE - 2);
-               if (gt->galcol > 1)
-                       gt->galcol += 2;        /* Mult 8; 16..31 no green stars */
-               /* Galaxies still may have some green stars but are not all green. */
-
-               if (gt->stars != NULL) {
-                       (void) free((void *) gt->stars);
-                       gt->stars = NULL;
-               }
-               gt->nstars = (NRAND(MAX_STARS / 2)) + MAX_STARS / 2;
-               gt->stars = (Star *) malloc(gt->nstars * sizeof (Star));
-               w1 = 2.0 * M_PI * FLOATRAND;
-               w2 = 2.0 * M_PI * FLOATRAND;
-               sinw1 = SINF(w1);
-               sinw2 = SINF(w2);
-               cosw1 = COSF(w1);
-               cosw2 = COSF(w2);
-
-               gp->mat[0][0] = cosw2;
-               gp->mat[0][1] = -sinw1 * sinw2;
-               gp->mat[0][2] = cosw1 * sinw2;
-               gp->mat[1][0] = 0.0;
-               gp->mat[1][1] = cosw1;
-               gp->mat[1][2] = sinw1;
-               gp->mat[2][0] = -sinw2;
-               gp->mat[2][1] = -sinw1 * cosw2;
-               gp->mat[2][2] = cosw1 * cosw2;
-
-               gt->vel[0] = FLOATRAND * 2.0 - 1.0;
-               gt->vel[1] = FLOATRAND * 2.0 - 1.0;
-               gt->vel[2] = FLOATRAND * 2.0 - 1.0;
-               gt->pos[0] = -gt->vel[0] * DELTAT *
-                       gp->f_hititerations + FLOATRAND - 0.5;
-               gt->pos[1] = -gt->vel[1] * DELTAT *
-                       gp->f_hititerations + FLOATRAND - 0.5;
-               gt->pos[2] = -gt->vel[2] * DELTAT *
-                       gp->f_hititerations + FLOATRAND - 0.5;
-
-               gt->mass = (int) (FLOATRAND * 1000.0) + 1;
-
-               gp->size = GALAXYRANGESIZE * FLOATRAND + GALAXYMINSIZE;
-
-               for (j = 0; j < gt->nstars; ++j) {
-                       Star       *st = &gt->stars[j];
-                       double      sinw, cosw;
-
-                       w = 2.0 * M_PI * FLOATRAND;
-                       sinw = SINF(w);
-                       cosw = COSF(w);
-                       d = FLOATRAND * gp->size;
-                       h = FLOATRAND * exp(-2.0 * (d / gp->size)) / 5.0 * gp->size;
-                       if (FLOATRAND < 0.5)
-                               h = -h;
-                       st->pos[0] = gp->mat[0][0] * d * cosw + gp->mat[1][0] * d * sinw +
-                               gp->mat[2][0] * h + gt->pos[0];
-                       st->pos[1] = gp->mat[0][1] * d * cosw + gp->mat[1][1] * d * sinw +
-                               gp->mat[2][1] * h + gt->pos[1];
-                       st->pos[2] = gp->mat[0][2] * d * cosw + gp->mat[1][2] * d * sinw +
-                               gp->mat[2][2] * h + gt->pos[2];
-
-                       v = sqrt(gt->mass * QCONS / sqrt(d * d + h * h));
-                       st->vel[0] = -gp->mat[0][0] * v * sinw + gp->mat[1][0] * v * cosw +
-                               gt->vel[0];
-                       st->vel[1] = -gp->mat[0][1] * v * sinw + gp->mat[1][1] * v * cosw +
-                               gt->vel[1];
-                       st->vel[2] = -gp->mat[0][2] * v * sinw + gp->mat[1][2] * v * cosw +
-                               gt->vel[2];
-
-                       st->vel[0] *= DELTAT;
-                       st->vel[1] *= DELTAT;
-                       st->vel[2] *= DELTAT;
-
-                       st->px = 0;
-                       st->py = 0;
-
-                       if (size < -MINSIZE)
-                               st->size = NRAND(-size - MINSIZE + 1) + MINSIZE;
-                       else if (size < MINSIZE)
-                               st->size = MINSIZE;
-                       else
-                               st->size = size;
-               }
-       }
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-
-#if 0
-       (void) printf("ngalaxies=%d, f_hititerations=%d\n",
-                     gp->ngalaxies, gp->f_hititerations);
-       (void) printf("f_deltat=%g\n", DELTAT);
-       (void) printf("Screen: ");
-       (void) printf("%dx%d pixel (%d-%d, %d-%d)\n",
-         (gp->clip.right - gp->clip.left), (gp->clip.bottom - gp->clip.top),
-              gp->clip.left, gp->clip.right, gp->clip.top, gp->clip.bottom);
-#endif /*0 */
-}
-
-void
-init_galaxy(ModeInfo * mi)
-{
-       unistruct  *gp;
-
-       if (universes == NULL) {
-               if ((universes = (unistruct *) calloc(MI_NUM_SCREENS(mi),
-                                               sizeof (unistruct))) == NULL)
-                       return;
-       }
-       gp = &universes[MI_SCREEN(mi)];
-
-       gp->f_hititerations = MI_CYCLES(mi);
-
-       gp->clip.left = 0;
-       gp->clip.top = 0;
-       gp->clip.right = MI_WIN_WIDTH(mi);
-       gp->clip.bottom = MI_WIN_HEIGHT(mi);
-
-       gp->scale = (double) (gp->clip.right + gp->clip.bottom) / 8.0;
-       gp->midx = gp->clip.right / 2;
-       gp->midy = gp->clip.bottom / 2;
-       startover(mi);
-}
-
-void
-draw_galaxy(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       unistruct  *gp = &universes[MI_SCREEN(mi)];
-       double      d;          /* tmp */
-       int         i, j, k;    /* more tmp */
-
-       for (i = 0; i < gp->ngalaxies; ++i) {
-               Galaxy     *gt = &gp->galaxies[i];
-
-               for (j = 0; j < gp->galaxies[i].nstars; ++j) {
-                       Star       *st = &gt->stars[j];
-                       double      v0 = st->vel[0];
-                       double      v1 = st->vel[1];
-                       double      v2 = st->vel[2];
-
-                       for (k = 0; k < gp->ngalaxies; ++k) {
-                               Galaxy     *gtk = &gp->galaxies[k];
-                               double      d0 = gtk->pos[0] - st->pos[0];
-                               double      d1 = gtk->pos[1] - st->pos[1];
-                               double      d2 = gtk->pos[2] - st->pos[2];
-
-                               d = d0 * d0 + d1 * d1 + d2 * d2;
-                               if (d > EPSILON)
-                                       d = gt->mass / (d * sqrt(d)) * DELTAT * DELTAT * QCONS;
-                               else
-                                       d = gt->mass / (EPSILON * sqrt_EPSILON) * DELTAT * DELTAT * QCONS;
-                               v0 += d0 * d;
-                               v1 += d1 * d;
-                               v2 += d2 * d;
-                       }
-
-                       st->vel[0] = v0;
-                       st->vel[1] = v1;
-                       st->vel[2] = v2;
-
-#ifndef NO_VELOCITY_COLORING
-                       d = (v0 * v0 + v1 * v1 + v2 * v2) / (3.0 * DELTAT * DELTAT);
-                       if (d > (double) COLORSTEP)
-                               st->color = COLORSTEP * gt->galcol + COLORSTEP - 1;
-                       else
-                               st->color = COLORSTEP * gt->galcol + ((int) d) % COLORSTEP;
-#endif
-                       st->pos[0] += v0;
-                       st->pos[1] += v1;
-                       st->pos[2] += v2;
-
-                       if (st->px >= gp->clip.left &&
-                           st->px <= gp->clip.right - st->size &&
-                           st->py >= gp->clip.top &&
-                           st->py <= gp->clip.bottom - st->size) {
-                               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-                               drawStar(st->px, st->py, st->size);
-                       }
-                       st->px = (int) (st->pos[0] * gp->scale) + gp->midx;
-                       st->py = (int) (st->pos[1] * gp->scale) + gp->midy;
-
-
-#ifdef WRAP
-                       if (st->px < gp->clip.left) {
-                               (void) printf("wrap l -> r\n");
-                               st->px = gp->clip.right;
-                       }
-                       if (st->px > gp->clip.right) {
-                               (void) printf("wrap r -> l\n");
-                               st->px = gp->clip.left;
-                       }
-                       if (st->py > gp->clip.bottom) {
-                               (void) printf("wrap b -> t\n");
-                               st->py = gp->clip.top;
-                       }
-                       if (st->py < gp->clip.top) {
-                               (void) printf("wrap t -> b\n");
-                               st->py = gp->clip.bottom;
-                       }
-#endif /*WRAP */
-
-
-                       if (st->px >= gp->clip.left &&
-                           st->px <= gp->clip.right - st->size &&
-                           st->py >= gp->clip.top &&
-                           st->py <= gp->clip.bottom - st->size) {
-                               if (MI_NPIXELS(mi) > 2)
-#ifdef NO_VELOCITY_COLORING
-                                       XSetForeground(display, gc, MI_PIXEL(mi, COLORSTEP * gt->galcol));
-#else
-                                       XSetForeground(display, gc, MI_PIXEL(mi, st->color));
-#endif
-                               else
-                                       XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-                               if (tracks)
-                                       drawStar(st->px + 1, st->py, st->size);
-                               else
-                                       drawStar(st->px, st->py, st->size);
-                       }
-               }
-
-               for (k = i + 1; k < gp->ngalaxies; ++k) {
-                       Galaxy     *gtk = &gp->galaxies[k];
-                       double      d0 = gtk->pos[0] - gt->pos[0];
-                       double      d1 = gtk->pos[1] - gt->pos[1];
-                       double      d2 = gtk->pos[2] - gt->pos[2];
-
-                       d = d0 * d0 + d1 * d1 + d2 * d2;
-                       if (d > EPSILON)
-                               d = gt->mass * gt->mass / (d * sqrt(d)) * DELTAT * QCONS;
-                       else
-                               d = gt->mass * gt->mass / (EPSILON * sqrt_EPSILON) * DELTAT * QCONS;
-                       d0 *= d;
-                       d1 *= d;
-                       d2 *= d;
-                       gt->vel[0] += d0 / gt->mass;
-                       gt->vel[1] += d1 / gt->mass;
-                       gt->vel[2] += d2 / gt->mass;
-                       gtk->vel[0] -= d0 / gtk->mass;
-                       gtk->vel[1] -= d1 / gtk->mass;
-                       gtk->vel[2] -= d2 / gtk->mass;
-               }
-               gt->pos[0] += gt->vel[0] * DELTAT;
-               gt->pos[1] += gt->vel[1] * DELTAT;
-               gt->pos[2] += gt->vel[2] * DELTAT;
-       }
-
-       gp->step++;
-       if (gp->step > gp->f_hititerations * 4)
-               startover(mi);
-}
-
-void
-release_galaxy(ModeInfo * mi)
-{
-       if (universes != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
-                       free_galaxies(&universes[screen]);
-               (void) free((void *) universes);
-               universes = NULL;
-       }
-}
-
-void
-refresh_galaxy(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/galaxy.man b/hacks/galaxy.man
deleted file mode 100644 (file)
index 2ef9e12..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-galaxy - draws spinning galaxies
-.SH SYNOPSIS
-.B galaxy
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-size \fIinteger\fP] [\-trail] [\-no\-trail]
-
-.SH DESCRIPTION
-The \fIgalaxy\fP program draws spinning galaxies.
-.SH OPTIONS
-.I galaxy
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors used cycle through the hue, making N stops around
-the color wheel.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.TP 8
-.B \-size \fIinteger\fP
-
-.TP 8
-.B \-trail
-.TP 8
-.B \-no\-trail
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1994 by Hubert Feyrer.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Original Amiga version by Uli Siegmund <uli@wombat.okapi.sub.org>
- for EGS in Cluster.
-
-Ported from Cluster/EGS to C/Intuition by Harald Backert.
-
-Ported to X11 and xlockmore by 
-Hubert Feyrer <hubert.feyrer@rz.uni-regensburg.de>, 30-Sep-94.
-
-Modified by David Bagley <bagleyd@bigfoot.com>, 23-Oct-94.
-
-Modified by Dave Mitchell <davem@magnet.com>, 7-Apr-97.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/glx/Makefile.in b/hacks/glx/Makefile.in
deleted file mode 100644 (file)
index b5291ac..0000000
+++ /dev/null
@@ -1,528 +0,0 @@
-# hacks/glx/Makefile.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski.
-# the `../../configure' script generates `hacks/glx/Makefile' from this file.
-
-@SET_MAKE@
-.SUFFIXES:
-.SUFFIXES: .c .o
-
-srcdir         = @srcdir@
-VPATH          = @srcdir@
-
-install_prefix =
-prefix         = @prefix@
-exec_prefix    = @exec_prefix@
-bindir         = @bindir@
-mandir         = @mandir@
-man1dir                = $(mandir)/man1
-mansuffix      = 1
-
-CC             = @CC@
-CFLAGS         = @CFLAGS@
-LDFLAGS                = @LDFLAGS@
-DEFS           = -DSTANDALONE -DUSE_GL @DEFS@
-LIBS           = @LIBS@
-
-DEPEND         = @DEPEND@
-DEPEND_FLAGS   = @DEPEND_FLAGS@
-DEPEND_DEFINES = @DEPEND_DEFINES@
-
-SHELL          = /bin/sh
-INSTALL                = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA   = @INSTALL_DATA@
-INSTALL_DIRS   = @INSTALL_DIRS@
-HACKDIR                = @HACKDIR@
-
-X_CFLAGS       = @X_CFLAGS@
-X_LIBS         = @X_LIBS@
-X_PRE_LIBS     = @X_PRE_LIBS@
-X_EXTRA_LIBS   = @X_EXTRA_LIBS@
-
-# Note: see comment in ../../driver/Makefile.in for explanation of X_LIBS, etc.
-#
-HACK_PRE       = $(LIBS) $(X_LIBS)
-HACK_POST      = $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS) -lm
-HACK_LIBS      = $(HACK_PRE)            @GL_LIBS@ @HACK_LIBS@ $(HACK_POST)
-XPM_LIBS       = $(HACK_PRE) @XPM_LIBS@ @GL_LIBS@ @HACK_LIBS@ $(HACK_POST)
-
-HACK_SRC       = $(srcdir)/..
-HACK_BIN       = ..
-UTILS_SRC      = $(HACK_SRC)/../utils
-UTILS_BIN      = $(HACK_BIN)/../utils
-
-INCLUDES       = -I$(srcdir) -I$(UTILS_SRC) -I$(HACK_SRC) -I../.. @INCLUDES@
-
-UTIL_SRCS      = $(UTILS_SRC)/colors.c $(UTILS_SRC)/hsv.c \
-                 $(UTILS_SRC)/resources.c $(UTILS_SRC)/usleep.c \
-                 $(UTILS_SRC)/visual.c $(UTILS_SRC)/visual-gl.c \
-                 $(UTILS_SRC)/yarandom.c
-UTIL_OBJS      = $(UTILS_SRC)/colors.o $(UTILS_SRC)/hsv.o \
-                 $(UTILS_SRC)/resources.o $(UTILS_SRC)/usleep.o \
-                 $(UTILS_SRC)/visual.o $(UTILS_SRC)/visual-gl.o \
-                  $(UTILS_SRC)/yarandom.o
-
-SRCS           = atlantis.c b_draw.c b_lockglue.c b_sphere.c bubble3d.c \
-                 buildlwo.c cage.c dolphin.c gears.c lament.c moebius.c \
-                 morph3d.c pipeobjs.c pipes.c rubik.c s1_1.c s1_2.c s1_3.c \
-                 s1_4.c s1_5.c s1_6.c s1_b.c shark.c sproingies.c \
-                 sproingiewrap.c stairs.c superquadrics.c swim.c whale.c \
-                 xlock-gl.c xpm-ximage.c glplanet.c pulsar.c
-
-OBJS           = atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
-                 buildlwo.o cage.o dolphin.o gears.o lament.o moebius.o \
-                 morph3d.o pipeobjs.o pipes.o rubik.o s1_1.o s1_2.o s1_3.o \
-                 s1_4.o s1_5.o s1_6.o s1_b.o shark.o sproingies.o \
-                 sproingiewrap.o stairs.o superquadrics.o swim.o whale.o \
-                 xlock-gl.o xpm-ximage.o glplanet.o pulsar.o
-
-GL_EXES                = cage gears moebius pipes sproingies stairs superquadrics \
-                 morph3d rubik atlantis lament bubble3d glplanet pulsar
-EXES           = @GL_EXES@
-
-HACK_OBJS      = screenhack-gl.o xlock-gl.o $(HACK_BIN)/xlockmore.o \
-                 $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \
-                 $(UTILS_BIN)/visual-gl.o $(UTILS_BIN)/usleep.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
-MEN            = @GL_MEN@
-EXTRAS         = README Makefile.in
-
-TARFILES       = $(SRCS) $(HDRS) $(MEN) $(EXTRAS)
-
-
-all: $(EXES)
-
-install:   install-program   install-man
-uninstall: uninstall-program uninstall-man
-
-install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
-
-install-program: $(EXES)
-       @exes="$(EXES)" ;                                               \
-       if [ ! -d $(HACKDIR) ]; then $(INSTALL_DIRS) $(HACKDIR) ; fi ;  \
-       for program in $$exes; do                                       \
-         echo $(INSTALL_PROGRAM) $$program $(HACKDIR)/$$program ;      \
-         $(INSTALL_PROGRAM) $$program $(HACKDIR)/$$program ;           \
-       done
-
-install-man: $(MEN)
-       @men="$(MEN)" ;                                                 \
-       if [ ! -d $(man1dir) ]; then $(INSTALL_DIRS) $(man1dir) ; fi ;  \
-       for man in $$men; do                                            \
-         instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo $(INSTALL_DATA) $(srcdir)/$$man $(man1dir)/$$instname ;  \
-         $(INSTALL_DATA) $(srcdir)/$$man $(man1dir)/$$instname ;       \
-       done
-
-uninstall-program:
-       @for program in $(EXES); do                                     \
-         echo rm -f $(HACKDIR)/$$program ;                             \
-         rm -f $(HACKDIR)/$$program ;                                  \
-       done
-
-uninstall-man:
-       @men="$(MEN)" ;                                                 \
-       for man in $$men; do                                            \
-         instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo rm -f $(man1dir)/$$instname ;                            \
-         rm -f $(man1dir)/$$instname ;                                 \
-       done
-
-clean:
-       -rm -f *.o a.out core $(EXES)
-
-distclean: clean
-       -rm -f Makefile TAGS *~ "#"*
-
-# Adds all current dependencies to Makefile
-depend:
-       $(DEPEND) -s '# DO NOT DELETE: updated by make depend'              \
-       $(DEPEND_FLAGS) --                                                  \
-       $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
-       $(SRCS)
-
-# Adds some dependencies to Makefile.in -- not totally accurate, but pretty
-# close.  This excludes dependencies on files in /usr/include, etc.  It tries
-# to include only dependencies on files which are themselves a part of this
-# package.
-distdepend::
-       @echo updating dependencies in `pwd`/Makefile.in... ;               \
-       $(DEPEND) -w 0 -f -                                                 \
-       -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
-       $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
-       $(SRCS) |                                                           \
-       (                                                                   \
-         awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \
-         sed -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d'                        \
-             -e 's@\.\./\.\./utils@$$(UTILS_SRC)@g'                        \
-             -e 's@\.\./glx/@@g'                                           \
-             -e 's@ \.\./@ $$(HACK_SRC)/@g'                                \
-             -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'                            \
-             -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g'                       \
-             -e 's@ $$(HACK_SRC)/\(.*config.h\)@ ../\1@g' ;                \
-         echo ''                                                           \
-       ) > /tmp/distdepend.$$$$ &&                                         \
-       mv Makefile.in Makefile.in.bak &&                                   \
-       mv /tmp/distdepend.$$$$ Makefile.in
-
-TAGS: tags
-tags:
-       find $(srcdir) -name '*.[chly]' -print | xargs etags -a
-
-echo_tarfiles:
-       @echo $(TARFILES)
-
-
-# Rules for noticing when the objects from the utils directory are out of
-# date with respect to their sources, and going and building them according
-# to the rules in their own Makefile...
-#
-$(UTILS_BIN)/colors.o:         $(UTILS_SRC)/colors.c
-$(UTILS_BIN)/hsv.o:            $(UTILS_SRC)/hsv.c
-$(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)/visual-gl.o:      $(UTILS_SRC)/visual-gl.c
-$(UTILS_BIN)/yarandom.o:       $(UTILS_SRC)/yarandom.c
-
-$(UTIL_OBJS):
-       cd $(UTILS_BIN) ; \
-       $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
-
-$(HACK_BIN)/xlockmore.o: $(HACK_SRC)/xlockmore.c
-       cd $(HACK_BIN)  ; $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)"
-
-
-# How we build object files in this directory.
-.c.o:
-       $(CC) -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) $<
-
-# These hacks use a slightly-differently-compiled variant of screenhack.c.
-# This is how to make the the other .o file from it.
-#
-screenhack-gl.o: $(HACK_SRC)/screenhack.c
-       $(CC) -o $@ -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) \
-         -DXLOCKMORE  -DUSE_GL $(HACK_SRC)/screenhack.c
-
-CC_HACK                = $(CC) $(LDFLAGS)
-
-atlantis:      atlantis.o      $(HACK_OBJS) dolphin.o shark.o swim.o whale.o
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) dolphin.o shark.o swim.o whale.o \
-                               $(HACK_LIBS)
-
-cage:          cage.o          $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-gears:         gears.o         $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-moebius:       moebius.o               $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-pipes:         pipes.o         $(HACK_OBJS) pipeobjs.o buildlwo.o
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) pipeobjs.o buildlwo.o \
-         $(HACK_LIBS)
-
-superquadrics: superquadrics.o $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-morph3d:       morph3d.o       $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-rubik:         rubik.o $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-stairs:                stairs.o        $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-SPROINGIES = sproingiewrap.o buildlwo.o \
-            s1_1.o s1_2.o s1_3.o s1_4.o s1_5.o s1_6.o s1_b.o
-sproingies: sproingies.o $(HACK_OBJS) $(SPROINGIES)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SPROINGIES) $(HACK_LIBS)
-
-lament:                lament.o        $(HACK_OBJS) xpm-ximage.o
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS)
-
-B3D = b_sphere.o b_draw.o b_lockglue.o
-bubble3d:      bubble3d.o      $(HACK_OBJS) $(B3D)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(B3D) $(HACK_LIBS)
-
-glplanet:      glplanet.o      $(HACK_OBJS) xpm-ximage.o
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS)
-
-pulsar:                pulsar.o                $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
-
-
-##############################################################################
-#
-# DO NOT DELETE: updated by make distdepend
-# $(srcdir)/DO $(srcdir)/NOT $(srcdir)/DELETE: $(srcdir)/updated $(srcdir)/by $(srcdir)/make $(srcdir)/distdepend
-
-atlantis.o: $(HACK_SRC)/xlockmore.h
-atlantis.o: ../../config.h
-atlantis.o: $(HACK_SRC)/xlockmoreI.h
-atlantis.o: $(HACK_SRC)/screenhack.h
-atlantis.o: $(UTILS_SRC)/yarandom.h
-atlantis.o: $(UTILS_SRC)/usleep.h
-atlantis.o: $(UTILS_SRC)/resources.h
-atlantis.o: $(UTILS_SRC)/hsv.h
-atlantis.o: $(UTILS_SRC)/colors.h
-atlantis.o: $(UTILS_SRC)/grabscreen.h
-atlantis.o: $(UTILS_SRC)/visual.h
-atlantis.o: $(UTILS_SRC)/xshm.h
-atlantis.o: $(srcdir)/atlantis.h
-b_draw.o: $(srcdir)/bubble3d.h
-b_draw.o: $(HACK_SRC)/xlockmoreI.h
-b_draw.o: $(HACK_SRC)/screenhack.h
-b_draw.o: ../../config.h
-b_draw.o: $(UTILS_SRC)/yarandom.h
-b_draw.o: $(UTILS_SRC)/usleep.h
-b_draw.o: $(UTILS_SRC)/resources.h
-b_draw.o: $(UTILS_SRC)/hsv.h
-b_draw.o: $(UTILS_SRC)/colors.h
-b_draw.o: $(UTILS_SRC)/grabscreen.h
-b_draw.o: $(UTILS_SRC)/visual.h
-b_draw.o: $(UTILS_SRC)/xshm.h
-b_lockglue.o: $(srcdir)/bubble3d.h
-b_lockglue.o: $(HACK_SRC)/xlockmoreI.h
-b_lockglue.o: $(HACK_SRC)/screenhack.h
-b_lockglue.o: ../../config.h
-b_lockglue.o: $(UTILS_SRC)/yarandom.h
-b_lockglue.o: $(UTILS_SRC)/usleep.h
-b_lockglue.o: $(UTILS_SRC)/resources.h
-b_lockglue.o: $(UTILS_SRC)/hsv.h
-b_lockglue.o: $(UTILS_SRC)/colors.h
-b_lockglue.o: $(UTILS_SRC)/grabscreen.h
-b_lockglue.o: $(UTILS_SRC)/visual.h
-b_lockglue.o: $(UTILS_SRC)/xshm.h
-b_lockglue.o: $(HACK_SRC)/xlockmore.h
-b_sphere.o: $(srcdir)/bubble3d.h
-b_sphere.o: $(HACK_SRC)/xlockmoreI.h
-b_sphere.o: $(HACK_SRC)/screenhack.h
-b_sphere.o: ../../config.h
-b_sphere.o: $(UTILS_SRC)/yarandom.h
-b_sphere.o: $(UTILS_SRC)/usleep.h
-b_sphere.o: $(UTILS_SRC)/resources.h
-b_sphere.o: $(UTILS_SRC)/hsv.h
-b_sphere.o: $(UTILS_SRC)/colors.h
-b_sphere.o: $(UTILS_SRC)/grabscreen.h
-b_sphere.o: $(UTILS_SRC)/visual.h
-b_sphere.o: $(UTILS_SRC)/xshm.h
-bubble3d.o: $(srcdir)/bubble3d.h
-bubble3d.o: $(HACK_SRC)/xlockmoreI.h
-bubble3d.o: $(HACK_SRC)/screenhack.h
-bubble3d.o: ../../config.h
-bubble3d.o: $(UTILS_SRC)/yarandom.h
-bubble3d.o: $(UTILS_SRC)/usleep.h
-bubble3d.o: $(UTILS_SRC)/resources.h
-bubble3d.o: $(UTILS_SRC)/hsv.h
-bubble3d.o: $(UTILS_SRC)/colors.h
-bubble3d.o: $(UTILS_SRC)/grabscreen.h
-bubble3d.o: $(UTILS_SRC)/visual.h
-bubble3d.o: $(UTILS_SRC)/xshm.h
-buildlwo.o: $(srcdir)/buildlwo.h
-cage.o: $(HACK_SRC)/xlockmore.h
-cage.o: ../../config.h
-cage.o: $(HACK_SRC)/xlockmoreI.h
-cage.o: $(HACK_SRC)/screenhack.h
-cage.o: $(UTILS_SRC)/yarandom.h
-cage.o: $(UTILS_SRC)/usleep.h
-cage.o: $(UTILS_SRC)/resources.h
-cage.o: $(UTILS_SRC)/hsv.h
-cage.o: $(UTILS_SRC)/colors.h
-cage.o: $(UTILS_SRC)/grabscreen.h
-cage.o: $(UTILS_SRC)/visual.h
-cage.o: $(UTILS_SRC)/xshm.h
-cage.o: $(srcdir)/e_textures.h
-dolphin.o: $(srcdir)/atlantis.h
-gears.o: $(HACK_SRC)/xlockmore.h
-gears.o: ../../config.h
-gears.o: $(HACK_SRC)/xlockmoreI.h
-gears.o: $(HACK_SRC)/screenhack.h
-gears.o: $(UTILS_SRC)/yarandom.h
-gears.o: $(UTILS_SRC)/usleep.h
-gears.o: $(UTILS_SRC)/resources.h
-gears.o: $(UTILS_SRC)/hsv.h
-gears.o: $(UTILS_SRC)/colors.h
-gears.o: $(UTILS_SRC)/grabscreen.h
-gears.o: $(UTILS_SRC)/visual.h
-gears.o: $(UTILS_SRC)/xshm.h
-lament.o: $(HACK_SRC)/xlockmore.h
-lament.o: ../../config.h
-lament.o: $(HACK_SRC)/xlockmoreI.h
-lament.o: $(HACK_SRC)/screenhack.h
-lament.o: $(UTILS_SRC)/yarandom.h
-lament.o: $(UTILS_SRC)/usleep.h
-lament.o: $(UTILS_SRC)/resources.h
-lament.o: $(UTILS_SRC)/hsv.h
-lament.o: $(UTILS_SRC)/colors.h
-lament.o: $(UTILS_SRC)/grabscreen.h
-lament.o: $(UTILS_SRC)/visual.h
-lament.o: $(UTILS_SRC)/xshm.h
-lament.o: $(srcdir)/xpm-ximage.h
-lament.o: $(HACK_SRC)/images/lament.xpm
-moebius.o: $(HACK_SRC)/xlockmore.h
-moebius.o: ../../config.h
-moebius.o: $(HACK_SRC)/xlockmoreI.h
-moebius.o: $(HACK_SRC)/screenhack.h
-moebius.o: $(UTILS_SRC)/yarandom.h
-moebius.o: $(UTILS_SRC)/usleep.h
-moebius.o: $(UTILS_SRC)/resources.h
-moebius.o: $(UTILS_SRC)/hsv.h
-moebius.o: $(UTILS_SRC)/colors.h
-moebius.o: $(UTILS_SRC)/grabscreen.h
-moebius.o: $(UTILS_SRC)/visual.h
-moebius.o: $(UTILS_SRC)/xshm.h
-moebius.o: $(srcdir)/e_textures.h
-morph3d.o: $(HACK_SRC)/xlockmore.h
-morph3d.o: ../../config.h
-morph3d.o: $(HACK_SRC)/xlockmoreI.h
-morph3d.o: $(HACK_SRC)/screenhack.h
-morph3d.o: $(UTILS_SRC)/yarandom.h
-morph3d.o: $(UTILS_SRC)/usleep.h
-morph3d.o: $(UTILS_SRC)/resources.h
-morph3d.o: $(UTILS_SRC)/hsv.h
-morph3d.o: $(UTILS_SRC)/colors.h
-morph3d.o: $(UTILS_SRC)/grabscreen.h
-morph3d.o: $(UTILS_SRC)/visual.h
-morph3d.o: $(UTILS_SRC)/xshm.h
-pipeobjs.o: $(srcdir)/buildlwo.h
-pipes.o: $(HACK_SRC)/xlockmore.h
-pipes.o: ../../config.h
-pipes.o: $(HACK_SRC)/xlockmoreI.h
-pipes.o: $(HACK_SRC)/screenhack.h
-pipes.o: $(UTILS_SRC)/yarandom.h
-pipes.o: $(UTILS_SRC)/usleep.h
-pipes.o: $(UTILS_SRC)/resources.h
-pipes.o: $(UTILS_SRC)/hsv.h
-pipes.o: $(UTILS_SRC)/colors.h
-pipes.o: $(UTILS_SRC)/grabscreen.h
-pipes.o: $(UTILS_SRC)/visual.h
-pipes.o: $(UTILS_SRC)/xshm.h
-pipes.o: $(srcdir)/buildlwo.h
-rubik.o: $(HACK_SRC)/xlockmore.h
-rubik.o: ../../config.h
-rubik.o: $(HACK_SRC)/xlockmoreI.h
-rubik.o: $(HACK_SRC)/screenhack.h
-rubik.o: $(UTILS_SRC)/yarandom.h
-rubik.o: $(UTILS_SRC)/usleep.h
-rubik.o: $(UTILS_SRC)/resources.h
-rubik.o: $(UTILS_SRC)/hsv.h
-rubik.o: $(UTILS_SRC)/colors.h
-rubik.o: $(UTILS_SRC)/grabscreen.h
-rubik.o: $(UTILS_SRC)/visual.h
-rubik.o: $(UTILS_SRC)/xshm.h
-s1_1.o: $(srcdir)/buildlwo.h
-s1_2.o: $(srcdir)/buildlwo.h
-s1_3.o: $(srcdir)/buildlwo.h
-s1_4.o: $(srcdir)/buildlwo.h
-s1_5.o: $(srcdir)/buildlwo.h
-s1_6.o: $(srcdir)/buildlwo.h
-s1_b.o: $(srcdir)/buildlwo.h
-shark.o: $(srcdir)/atlantis.h
-sproingies.o: $(HACK_SRC)/xlockmoreI.h
-sproingies.o: $(HACK_SRC)/screenhack.h
-sproingies.o: ../../config.h
-sproingies.o: $(UTILS_SRC)/yarandom.h
-sproingies.o: $(UTILS_SRC)/usleep.h
-sproingies.o: $(UTILS_SRC)/resources.h
-sproingies.o: $(UTILS_SRC)/hsv.h
-sproingies.o: $(UTILS_SRC)/colors.h
-sproingies.o: $(UTILS_SRC)/grabscreen.h
-sproingies.o: $(UTILS_SRC)/visual.h
-sproingies.o: $(UTILS_SRC)/xshm.h
-sproingies.o: $(srcdir)/buildlwo.h
-sproingiewrap.o: $(HACK_SRC)/xlockmore.h
-sproingiewrap.o: ../../config.h
-sproingiewrap.o: $(HACK_SRC)/xlockmoreI.h
-sproingiewrap.o: $(HACK_SRC)/screenhack.h
-sproingiewrap.o: $(UTILS_SRC)/yarandom.h
-sproingiewrap.o: $(UTILS_SRC)/usleep.h
-sproingiewrap.o: $(UTILS_SRC)/resources.h
-sproingiewrap.o: $(UTILS_SRC)/hsv.h
-sproingiewrap.o: $(UTILS_SRC)/colors.h
-sproingiewrap.o: $(UTILS_SRC)/grabscreen.h
-sproingiewrap.o: $(UTILS_SRC)/visual.h
-sproingiewrap.o: $(UTILS_SRC)/xshm.h
-stairs.o: $(HACK_SRC)/xlockmore.h
-stairs.o: ../../config.h
-stairs.o: $(HACK_SRC)/xlockmoreI.h
-stairs.o: $(HACK_SRC)/screenhack.h
-stairs.o: $(UTILS_SRC)/yarandom.h
-stairs.o: $(UTILS_SRC)/usleep.h
-stairs.o: $(UTILS_SRC)/resources.h
-stairs.o: $(UTILS_SRC)/hsv.h
-stairs.o: $(UTILS_SRC)/colors.h
-stairs.o: $(UTILS_SRC)/grabscreen.h
-stairs.o: $(UTILS_SRC)/visual.h
-stairs.o: $(UTILS_SRC)/xshm.h
-stairs.o: $(srcdir)/e_textures.h
-superquadrics.o: $(HACK_SRC)/xlockmore.h
-superquadrics.o: ../../config.h
-superquadrics.o: $(HACK_SRC)/xlockmoreI.h
-superquadrics.o: $(HACK_SRC)/screenhack.h
-superquadrics.o: $(UTILS_SRC)/yarandom.h
-superquadrics.o: $(UTILS_SRC)/usleep.h
-superquadrics.o: $(UTILS_SRC)/resources.h
-superquadrics.o: $(UTILS_SRC)/hsv.h
-superquadrics.o: $(UTILS_SRC)/colors.h
-superquadrics.o: $(UTILS_SRC)/grabscreen.h
-superquadrics.o: $(UTILS_SRC)/visual.h
-superquadrics.o: $(UTILS_SRC)/xshm.h
-swim.o: $(HACK_SRC)/xlockmoreI.h
-swim.o: $(HACK_SRC)/screenhack.h
-swim.o: ../../config.h
-swim.o: $(UTILS_SRC)/yarandom.h
-swim.o: $(UTILS_SRC)/usleep.h
-swim.o: $(UTILS_SRC)/resources.h
-swim.o: $(UTILS_SRC)/hsv.h
-swim.o: $(UTILS_SRC)/colors.h
-swim.o: $(UTILS_SRC)/grabscreen.h
-swim.o: $(UTILS_SRC)/visual.h
-swim.o: $(UTILS_SRC)/xshm.h
-swim.o: $(srcdir)/atlantis.h
-whale.o: $(srcdir)/atlantis.h
-xlock-gl.o: $(HACK_SRC)/screenhack.h
-xlock-gl.o: ../../config.h
-xlock-gl.o: $(UTILS_SRC)/yarandom.h
-xlock-gl.o: $(UTILS_SRC)/usleep.h
-xlock-gl.o: $(UTILS_SRC)/resources.h
-xlock-gl.o: $(UTILS_SRC)/hsv.h
-xlock-gl.o: $(UTILS_SRC)/colors.h
-xlock-gl.o: $(UTILS_SRC)/grabscreen.h
-xlock-gl.o: $(UTILS_SRC)/visual.h
-xlock-gl.o: $(HACK_SRC)/xlockmoreI.h
-xlock-gl.o: $(UTILS_SRC)/xshm.h
-xpm-ximage.o: ../../config.h
-glplanet.o: $(HACK_SRC)/xlockmore.h
-glplanet.o: ../../config.h
-glplanet.o: $(HACK_SRC)/xlockmoreI.h
-glplanet.o: $(HACK_SRC)/screenhack.h
-glplanet.o: $(UTILS_SRC)/yarandom.h
-glplanet.o: $(UTILS_SRC)/usleep.h
-glplanet.o: $(UTILS_SRC)/resources.h
-glplanet.o: $(UTILS_SRC)/hsv.h
-glplanet.o: $(UTILS_SRC)/colors.h
-glplanet.o: $(UTILS_SRC)/grabscreen.h
-glplanet.o: $(UTILS_SRC)/visual.h
-glplanet.o: $(UTILS_SRC)/xshm.h
-glplanet.o: $(HACK_SRC)/images/earth.xbm
-glplanet.o: $(srcdir)/xpm-ximage.h
-pulsar.o: $(HACK_SRC)/xlockmore.h
-pulsar.o: ../../config.h
-pulsar.o: $(HACK_SRC)/xlockmoreI.h
-pulsar.o: $(HACK_SRC)/screenhack.h
-pulsar.o: $(UTILS_SRC)/yarandom.h
-pulsar.o: $(UTILS_SRC)/usleep.h
-pulsar.o: $(UTILS_SRC)/resources.h
-pulsar.o: $(UTILS_SRC)/hsv.h
-pulsar.o: $(UTILS_SRC)/colors.h
-pulsar.o: $(UTILS_SRC)/grabscreen.h
-pulsar.o: $(UTILS_SRC)/visual.h
-pulsar.o: $(UTILS_SRC)/xshm.h
-
diff --git a/hacks/glx/README b/hacks/glx/README
deleted file mode 100644 (file)
index 5142503..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-This directory contains various graphics hacks that requre OpenGL.  These are
-independent from the xscreensaver program (in the ../../driver/ directory)
-but some of them use the utility functions found in the ../../utils/ directory.
-
-If you have compilation problems, check the parameters in ../../config.h.
-
-If you're looking for a free implementation of the OpenGL library, 
-check out <http://www.mesa3d.org/>.  For general OpenGL info, see
-<http://www.opengl.org/>.
diff --git a/hacks/glx/atlantis.c b/hacks/glx/atlantis.c
deleted file mode 100644 (file)
index 140295c..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-/* atlantis --- Shows moving 3D sea animals */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)atlantis.c   1.3 98/06/18 xlockmore";
-
-#endif
-
-/* Copyright (c) E. Lassauge, 1998. */
-
-/*
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The original code for this mode was written by Mark J. Kilgard
- * as a demo for openGL programming.
- * 
- * Porting it to xlock  was possible by comparing the original Mesa's morph3d 
- * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna 
- * (look at morph3d.c) for his indirect help.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * My e-mail address is lassauge@sagem.fr
- *
- * Eric Lassauge  (May-13-1998)
- *
- * REVISION HISTORY:
- * 
- * David A. Bagley - 98/06/17 : Add whalespeed option. Global options to
- *                              initialize local variables are now:
- *                              XLock.atlantis.cycles: 100      ! SharkSpeed
- *                              XLock.atlantis.batchcount: 4    ! SharkNum
- *                              XLock.atlantis.whalespeed: 250  ! WhaleSpeed
- *                              XLock.atlantis.size: 6000       ! SharkSize
- *                              Add random direction for whales/dolphins
- * 
- * E.Lassauge - 98/06/16: Use the following global options to initialize
- *                        local variables :
- *                              XLock.atlantis.delay: 100       ! SharkSpeed
- *                              XLock.atlantis.batchcount: 4    ! SharkNum
- *                              XLock.atlantis.cycles: 250      ! WhaleSpeed
- *                              XLock.atlantis.size: 6000       ! SharkSize
- *                        Add support for -/+ wireframe (t'was so easy to do!)
- *
- * TODO : 
- *        - add a sort of background image or random bg color
- *        - better handling of sizes and speeds
- *        - test standalone and module modes
- *        - purify it (!)
- */
-
-/* Copyright (c) Mark J. Kilgard, 1994. */
-
-/**
- * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
- * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States.  Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS     "Atlantis"
-# define HACK_INIT     init_atlantis
-# define HACK_DRAW     draw_atlantis
-# define atlantis_opts xlockmore_opts
-# define DEFAULTS      "*delay:        1000 \n" \
-                        "*count:          4 \n" \
-                        "*cycles:       100 \n" \
-                        "*size:        6000 \n" \
-                        "*whalespeed:   250 \n"
-# include "xlockmore.h"                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"            /* from the xlockmore distribution */
-#include "vis.h"
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-#include "atlantis.h"
-#include <GL/glu.h>
-
-
-#define DEF_WHALESPEED  "250"
-static int  whalespeed;
-static XrmOptionDescRec opts[] =
-{
-     {"-whalespeed", ".atlantis.whalespeed", XrmoptionSepArg, (caddr_t) NULL}
-};
-
-static argtype vars[] =
-{
-{(caddr_t *) & whalespeed, "whalespeed", "WhaleSpeed", DEF_WHALESPEED, t_Int}
-};
-
-static OptionStruct desc[] =
-{
-       {"-whalespeed num", "speed of whales and the dolphin"}
-};
-
-ModeSpecOpt atlantis_opts =
-{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   atlantis_description =
-{"atlantis", "init_atlantis", "draw_atlantis", "release_atlantis",
- "refresh_atlantis", "change_atlantis", NULL, &atlantis_opts,
- 1000, NUM_SHARKS, SHARKSPEED, SHARKSIZE, 64, 1.0, "",
- "Shows moving sharks/whales/dolphin", 0, NULL};
-
-#endif
-
-static atlantisstruct *atlantis = NULL;
-
-static void
-InitFishs(atlantisstruct * ap)
-{
-       int         i;
-
-       for (i = 0; i < ap->num_sharks; i++) {
-               ap->sharks[i].x = 70000.0 + NRAND(ap->sharksize);
-               ap->sharks[i].y = NRAND(ap->sharksize);
-               ap->sharks[i].z = NRAND(ap->sharksize);
-               ap->sharks[i].psi = NRAND(360) - 180.0;
-               ap->sharks[i].v = 1.0;
-       }
-
-       /* Random whae direction */
-       ap->whaledir = LRAND() & 1;
-
-       ap->dolph.x = 30000.0;
-       ap->dolph.y = 0.0;
-       ap->dolph.z = (float) (ap->sharksize);
-       ap->dolph.psi = (ap->whaledir) ? 90.0 : -90.0;
-       ap->dolph.theta = 0.0;
-       ap->dolph.v = 6.0;
-
-       ap->momWhale.x = 70000.0;
-       ap->momWhale.y = 0.0;
-       ap->momWhale.z = 0.0;
-       ap->momWhale.psi = (ap->whaledir) ? 90.0 : -90.0;
-       ap->momWhale.theta = 0.0;
-       ap->momWhale.v = 3.0;
-
-       ap->babyWhale.x = 60000.0;
-       ap->babyWhale.y = -2000.0;
-       ap->babyWhale.z = -2000.0;
-       ap->babyWhale.psi = (ap->whaledir) ? 90.0 : -90.0;
-       ap->babyWhale.theta = 0.0;
-       ap->babyWhale.v = 3.0;
-}
-
-static void
-Init(atlantisstruct * ap)
-{
-       static float ambient[] =
-       {0.1, 0.1, 0.1, 1.0};
-       static float diffuse[] =
-       {1.0, 1.0, 1.0, 1.0};
-       static float position[] =
-       {0.0, 1.0, 0.0, 0.0};
-       static float mat_shininess[] =
-       {90.0};
-       static float mat_specular[] =
-       {0.8, 0.8, 0.8, 1.0};
-       static float mat_diffuse[] =
-       {0.46, 0.66, 0.795, 1.0};
-       static float mat_ambient[] =
-       {0.0, 0.1, 0.2, 1.0};
-       static float lmodel_ambient[] =
-       {0.4, 0.4, 0.4, 1.0};
-       static float lmodel_localviewer[] =
-       {0.0};
-       float       fblue = 0.0, fgreen;
-
-       glFrontFace(GL_CW);
-
-       glDepthFunc(GL_LEQUAL);
-       glEnable(GL_DEPTH_TEST);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT0, GL_POSITION, position);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_localviewer);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient);
-
-       InitFishs(ap);
-
-       /* Add a little randomness */
-       fblue = ((float) (NRAND(50)) / 100.0) + 0.50;
-       fgreen = fblue * 0.56;
-       glClearColor(0.0, fgreen, fblue, 0.0);
-}
-
-static void
-Reshape(ModeInfo * mi, int width, int height)
-{
-       atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
-
-       glViewport(0, 0, ap->WinW = (GLint) width, ap->WinH = (GLint) height);
-
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       gluPerspective(400.0, (GLdouble) width / (GLdouble) height, 1.0, 2000000.0);
-       glMatrixMode(GL_MODELVIEW);
-}
-
-static void
-Animate(atlantisstruct * ap)
-{
-       int         i;
-
-       for (i = 0; i < ap->num_sharks; i++) {
-               SharkPilot(&(ap->sharks[i]), ap->sharkspeed);
-               SharkMiss(ap, i);
-       }
-       WhalePilot(&(ap->dolph), ap->whalespeed, ap->whaledir);
-       ap->dolph.phi++;
-       WhalePilot(&(ap->momWhale), ap->whalespeed, ap->whaledir);
-       ap->momWhale.phi++;
-       WhalePilot(&(ap->babyWhale), ap->whalespeed, ap->whaledir);
-       ap->babyWhale.phi++;
-}
-
-static void
-AllDisplay(atlantisstruct * ap)
-{
-       int         i;
-
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       for (i = 0; i < ap->num_sharks; i++) {
-               glPushMatrix();
-               FishTransform(&(ap->sharks[i]));
-               DrawShark(&(ap->sharks[i]), ap->wire);
-               glPopMatrix();
-       }
-
-       glPushMatrix();
-       FishTransform(&(ap->dolph));
-       DrawDolphin(&(ap->dolph), ap->wire);
-       glPopMatrix();
-
-       glPushMatrix();
-       FishTransform(&(ap->momWhale));
-       DrawWhale(&(ap->momWhale), ap->wire);
-       glPopMatrix();
-
-       glPushMatrix();
-       FishTransform(&(ap->babyWhale));
-       glScalef(0.45, 0.45, 0.3);
-       DrawWhale(&(ap->babyWhale), ap->wire);
-       glPopMatrix();
-}
-
-/*
- *-----------------------------------------------------------------------------
- *-----------------------------------------------------------------------------
- *    Xlock hooks.
- *-----------------------------------------------------------------------------
- *-----------------------------------------------------------------------------
- */
-
-/*
- *-----------------------------------------------------------------------------
- *    Initialize atlantis.  Called each time the window changes.
- *-----------------------------------------------------------------------------
- */
-
-void
-init_atlantis(ModeInfo * mi)
-{
-       int         screen = MI_SCREEN(mi);
-       atlantisstruct *ap;
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       if (atlantis == NULL) {
-               if ((atlantis = (atlantisstruct *) calloc(MI_NUM_SCREENS(mi),
-                                          sizeof (atlantisstruct))) == NULL)
-                       return;
-       }
-       ap = &atlantis[screen];
-       ap->num_sharks = MI_COUNT(mi);
-       if (ap->sharks == NULL) {
-               if ((ap->sharks = (fishRec *) calloc(ap->num_sharks,
-                                               sizeof (fishRec))) == NULL) {
-                       /* free everything up to now */
-                       (void) free((void *) atlantis);
-                       atlantis = NULL;
-                       return;
-               }
-       }
-       ap->sharkspeed = MI_CYCLES(mi);         /* has influence on the "width"
-                                                  of the movement */
-       ap->sharksize = MI_SIZE(mi);    /* has influence on the "distance"
-                                          of the sharks */
-       ap->whalespeed = whalespeed;
-       ap->wire = MI_IS_WIREFRAME(mi);
-
-       if (MI_IS_DEBUG(mi)) {
-               (void) fprintf(stderr,
-                              "%s:\n\tnum_sharks=%d\n\tsharkspeed=%.1f\n\tsharksize=%d\n\twhalespeed=%.1f\n\twireframe=%s\n",
-                              MI_NAME(mi),
-                              ap->num_sharks,
-                              ap->sharkspeed,
-                              ap->sharksize,
-                              ap->whalespeed,
-                              ap->wire ? "yes" : "no"
-                       );
-       }
-       if ((ap->glx_context = init_GL(mi)) != NULL) {
-
-               Reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
-               glDrawBuffer(GL_BACK);
-               Init(ap);
-               AllDisplay(ap);
-               glXSwapBuffers(display, window);
-
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-/*
- *-----------------------------------------------------------------------------
- *    Called by the mainline code periodically to update the display.
- *-----------------------------------------------------------------------------
- */
-void
-draw_atlantis(ModeInfo * mi)
-{
-       atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
-
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       MI_IS_DRAWN(mi) = True;
-
-       if (!ap->glx_context)
-               return;
-
-       glXMakeCurrent(display, window, *(ap->glx_context));
-
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       glPushMatrix();
-
-       AllDisplay(ap);
-       Animate(ap);
-
-       glXSwapBuffers(display, window);
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *    The display is being taken away from us.  Free up malloc'ed 
- *      memory and X resources that we've alloc'ed.  Only called
- *      once, we must zap everything for every screen.
- *-----------------------------------------------------------------------------
- */
-
-void
-release_atlantis(ModeInfo * mi)
-{
-       int         screen;
-
-       if (atlantis != NULL) {
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       atlantisstruct *ap = &atlantis[screen];
-
-                       if (ap->sharks)
-                               (void) free((void *) ap->sharks);
-               }
-               (void) free((void *) atlantis);
-               atlantis = NULL;
-       }
-       FreeAllGL(mi);
-}
-
-void
-refresh_atlantis(ModeInfo * mi)
-{
-}
-
-void
-change_atlantis(ModeInfo * mi)
-{
-       atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
-
-       if (!ap->glx_context)
-               return;
-
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ap->glx_context));
-       Init(ap);
-}
-
-#endif /* USE_GL */
diff --git a/hacks/glx/atlantis.h b/hacks/glx/atlantis.h
deleted file mode 100644 (file)
index 413b48b..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* atlantis --- Shows moving 3D sea animals */
-
-/* Copyright (c) E. Lassauge, 1998. */
-
-/*
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The original code for this mode was written by Mark J. Kilgard
- * as a demo for openGL programming.
- * 
- * Porting it to xlock  was possible by comparing the original Mesa's morph3d 
- * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna 
- * (look at morph3d.c) for his indirect help.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * My e-mail address is lassauge@sagem.fr
- *
- * Eric Lassauge  (May-13-1998)
- *
- */
-
-/**
- * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
- * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States.  Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-#include <GL/gl.h>
-#include <GL/glx.h>
-
-#define RAD 57.295
-#define RRAD 0.01745
-
-/* default values */
-#define NUM_SHARKS 4
-#define SHARKSPEED 100
-#define SHARKSIZE 6000
-
-typedef struct _fishRec {
-       float       x, y, z, phi, theta, psi, v;
-       float       xt, yt, zt;
-       float       htail, vtail;
-       float       dtheta;
-       int         spurt, attack;
-} fishRec;
-
-typedef struct {
-       GLint       WinH, WinW;
-       GLXContext *glx_context;
-       int         num_sharks;
-       float       sharkspeed, whalespeed;
-       int         sharksize;
-       int         wire;
-       Bool        whaledir;
-       fishRec    *sharks;
-       fishRec     momWhale;
-       fishRec     babyWhale;
-       fishRec     dolph;
-} atlantisstruct;
-
-extern void FishTransform(fishRec *);
-extern void WhalePilot(fishRec *, float, Bool);
-extern void SharkPilot(fishRec *, float);
-extern void SharkMiss(atlantisstruct *, int);
-extern void DrawWhale(fishRec *, int);
-extern void DrawShark(fishRec *, int);
-extern void DrawDolphin(fishRec *, int);
diff --git a/hacks/glx/b_draw.c b/hacks/glx/b_draw.c
deleted file mode 100644 (file)
index 18c89d9..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)b_draw.c  4.11 98/06/16 xlockmore";
-
-#endif
-
-/*-
- * BUBBLE3D (C) 1998 Richard W.M. Jones.
- * b_draw.c: This code creates new bubbles, manages them and controls
- * them as they are drawn on the screen.
- */
-
-#include "bubble3d.h"
-
-typedef struct draw_context {
-       /* The list of bubbles currently on the screen. */
-       void      **bubble_list;
-       int         nr_bubbles;
-
-       /* When was the last time we created a new bubble? */
-       int         bubble_count;
-} draw_context;
-
-void       *
-glb_draw_init(void)
-{
-       draw_context *c;
-
-       GLfloat     mat_specular[] =
-       {1, 1, 1, 1};
-       GLfloat     mat_emission[] =
-       {0, 0, 0, 1};
-       GLfloat     mat_shininess[] =
-       {100};
-       GLfloat     ambient[] =
-       {0.5, 0.5, 0.5, 1.0};
-       GLfloat     light_position[][4] =
-       {
-               {0, -1, 0, 0},
-               {1, 1, 0, 0},
-               {-1, 0, 1, 0}};
-       GLfloat     light_diffuse[][4] =
-       {
-               {1, 1, 1, 1},
-               {1, 1, 1, 1},
-               {1, 1, 1, 1}};
-       GLfloat     light_specular[][4] =
-       {
-               {1, 1, 1, 1},
-               {1, 1, 1, 1},
-               {1, 1, 1, 1}};
-
-       /* Initialize the context. */
-       c = (struct draw_context *) malloc(sizeof (struct draw_context));
-
-       if (c == 0)
-               return 0;
-       c->bubble_list = 0;
-       c->nr_bubbles = 0;
-       c->bubble_count = glb_config.create_bubbles_every;
-
-       /* Do some GL initialization. */
-       glClearColor(glb_config.bg_colour[0],
-                    glb_config.bg_colour[1],
-                    glb_config.bg_colour[2],
-                    glb_config.bg_colour[3]);
-#if 0
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, glb_config.bubble_colour);
-#else
-       {
-               /* 
-                * E. Lassauge - 98/06/29
-                * Yeahh, cool ! Now that I know how to have random colors I 
-                * patch this pretty beautiful mode too !!
-                */
-               GLfloat     fred, fgreen, fblue;
-               GLfloat     params[4];
-
-               fred = ((float) (NRAND(100)) / 100.0);
-               fgreen = ((float) (NRAND(100)) / 100.0);
-               /* I keep more blue */
-               fblue = ((float) (NRAND(50)) / 100.0) + 0.50;
-
-               params[0] = fred;
-               params[1] = fgreen;
-               params[2] = fblue;
-               /* For the moment don't play with ALPHA channel */
-               params[3] = glb_config.bubble_colour[3];
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, params);
-       }
-#endif
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, mat_emission);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
-
-#if GLB_USE_BLENDING
-       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-#endif
-
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_LIGHT2);
-#if GLB_USE_BLENDING
-       glEnable(GL_BLEND);
-#else
-       glEnable(GL_DEPTH_TEST);
-#endif
-       glEnable(GL_AUTO_NORMAL);
-       glEnable(GL_NORMALIZE);
-
-#if GLB_USE_BLENDING
-       glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
-#endif
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT0, GL_POSITION, light_position[0]);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse[0]);
-       glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular[0]);
-       glLightfv(GL_LIGHT1, GL_POSITION, light_position[1]);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse[1]);
-       glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular[1]);
-       glLightfv(GL_LIGHT2, GL_POSITION, light_position[2]);
-       glLightfv(GL_LIGHT2, GL_DIFFUSE, light_diffuse[2]);
-       glLightfv(GL_LIGHT2, GL_SPECULAR, light_specular[2]);
-
-       return c;
-}
-
-static void
-delete_bubble(draw_context * c, int j)
-{
-       int         i;
-
-       glb_bubble_delete(c->bubble_list[j]);
-
-       for (i = j; i < c->nr_bubbles - 1; ++i)
-               c->bubble_list[i] = c->bubble_list[i + 1];
-
-       c->nr_bubbles--;
-}
-
-void
-glb_draw_end(void *cc)
-{
-       draw_context *c = (draw_context *) cc;
-       int         i;
-
-       for (i = 0; i < c->nr_bubbles; ++i) {
-               delete_bubble(c, i);
-               i--;
-       }
-       (void) free((void *) c->bubble_list);
-       (void) free((void *) c);
-}
-
-static int
-create_new_bubbles(draw_context * c)
-{
-       int         n, i;
-       double      r = glb_drand();
-       GLfloat     size, speed, scale_incr, x, y, z;
-       void       *b[4];
-       void      **old_bubble_list;
-
-       /* How many bubbles to make? */
-       if (r < glb_config.p_bubble_group[0])
-               n = 1;
-       else if (r < glb_config.p_bubble_group[1])
-               n = 2;
-       else if (r < glb_config.p_bubble_group[2])
-               n = 3;
-       else
-               n = 4;
-
-       /* Initial position of top-most bubble in group. */
-       x = glb_drand() * 4 - 2;
-       y = glb_config.screen_bottom;
-       z = glb_drand() * 2 - 2;
-
-       /* What size? */
-       size = glb_config.min_size
-               + glb_drand() * (glb_config.max_size - glb_config.min_size);
-
-       /* What speed? */
-       speed = glb_config.min_speed
-               + glb_drand() * (glb_config.max_speed - glb_config.min_speed);
-
-       /* Work out the scaling increment. Bubbles should increase by scale_factor
-        * as they go from bottom to top of screen.
-        */
-       scale_incr = (size * glb_config.scale_factor - size)
-               / ((glb_config.screen_top - glb_config.screen_bottom) / speed);
-
-       /* Create the bubble(s). */
-       for (i = 0; i < n; ++i) {
-               if ((b[i] = glb_bubble_new(x, y, z, size, speed, scale_incr)) == 0) {
-                       /* Out of memory - recover. */
-                       i--;
-                       while (i >= 0)
-                               glb_bubble_delete(b[i]);
-                       return 0;
-               }
-               /* Create the next bubble below the last bubble. */
-               y -= size * 3;
-       }
-
-       /* Add the bubbles to the list. */
-       c->nr_bubbles += n;
-       old_bubble_list = c->bubble_list;
-       if (c->bubble_list == 0) {
-               c->bubble_list = (void **) malloc(c->nr_bubbles * sizeof (void *));
-       } else {
-               c->bubble_list = (void **) realloc(c->bubble_list,
-                                           c->nr_bubbles * sizeof (void *));
-       }
-
-       if (c->bubble_list == 0) {
-               /* Out of memory - recover. */
-               for (i = 0; i < n; ++i)
-                       glb_bubble_delete(b[i]);
-               c->bubble_list = old_bubble_list;
-               c->nr_bubbles -= n;
-               return 0;
-       }
-       for (i = 0; i < n; ++i)
-               c->bubble_list[c->nr_bubbles - i - 1] = b[i];
-
-       return 1;
-}
-
-void
-glb_draw_step(void *cc)
-{
-       draw_context *c = (draw_context *) cc;
-       int         i;
-
-       /* Consider creating a new bubble or bubbles. */
-       if (c->nr_bubbles < glb_config.max_bubbles &&
-           c->bubble_count++ > glb_config.create_bubbles_every) {
-               if (create_new_bubbles(c))
-                       c->bubble_count = 0;
-       }
-       /* Clear the display. */
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       /* XXX Draw the background here ... */
-
-       /* Draw all the bubbles on the display. */
-       for (i = 0; i < c->nr_bubbles; ++i) {
-               void       *b = c->bubble_list[i];
-
-               glb_bubble_step(b);
-               glb_bubble_draw(b);
-
-               /* Has the bubble reached the top of the screen? */
-               if (glb_bubble_get_y(b) >= glb_config.screen_top) {
-                       delete_bubble(c, i);
-                       i--;
-               }
-       }
-}
diff --git a/hacks/glx/b_lockglue.c b/hacks/glx/b_lockglue.c
deleted file mode 100644 (file)
index 7af0d62..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)b_lockglue.c  4.11 98/06/16 xlockmore";
-
-#endif
-
-/*-
- * BUBBLE3D (C) 1998 Richard W.M. Jones.
- * b_lockglue.c: Glue to make this all work with xlockmore.
- */
-
-#include "bubble3d.h"
-
-/* XXX This lot should eventually be made configurable using the
- * options stuff below.
- */
-struct glb_config glb_config =
-{
-#if GLB_SLOW_GL
-       2,                      /* subdivision_depth */
-#else
-       3,                      /* subdivision_depth */
-#endif
-       5,                      /* nr_nudge_axes */
-       0.3,                    /* nudge_angle_factor */
-       0.15,                   /* nudge_factor */
-       0.1,                    /* rotation_factor */
-       8,                      /* create_bubbles_every */
-       8,                      /* max_bubbles */
-       {0.7, 0.8, 0.9, 1.0},   /* p_bubble_group */
-       0.5,                    /* max_size */
-       0.1,                    /* min_size */
-       0.1,                    /* max_speed */
-       0.03,                   /* min_speed */
-       1.5,                    /* scale_factor */
-       -4,                     /* screen_bottom */
-       4,                      /* screen_top */
-#if 0
-       {0.1, 0.0, 0.4, 0.0},   /* bg_colour */
-#else
-       {0.0, 0.0, 0.0, 0.0},   /* bg_colour */
-#endif
-#if 0
-       {0.7, 0.7, 0.0, 0.3}    /* bubble_colour */
-#else
-       {0.0, 0.0, 0.7, 0.3}    /* bubble_colour */
-#endif
-};
-
-#ifdef STANDALONE
-#define PROGCLASS "Bubble3D"
-#define HACK_INIT init_bubble3d
-#define HACK_DRAW draw_bubble3d
-#define bubble3d_opts xlockmore_opts
-# define DEFAULTS ""
-#include "xlockmore.h"
-#else
-#include "xlock.h"
-#include "vis.h"
-#endif
-
-#ifdef USE_GL
-
-ModeSpecOpt bubble3d_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   bubbles3d_description =
-{"bubbles3d",
- "init_bubble3d",
- "draw_bubble3d",
- "release_bubble3d",
- "change_bubble3d",
- "init_bubble3d",
- NULL,
- &bubble3d_opts,
- 1000, 1, 2, 1, 64, 1.0, "",
- "Richard Jones's GL bubbles",
- 0,
- NULL
-};
-
-#endif /* USE_MODULES */
-
-struct context {
-       GLXContext *glx_context;
-       void       *draw_context;
-};
-
-static struct context *contexts = 0;
-
-static void
-init(struct context *c)
-{
-       glb_sphere_init();
-       c->draw_context = glb_draw_init();
-}
-
-static void
-reshape(int w, int h)
-{
-       glViewport(0, 0, (GLsizei) w, (GLsizei) h);
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       gluPerspective(45, (GLdouble) w / (GLdouble) h, 3, 8);
-       glMatrixMode(GL_MODELVIEW);
-       glLoadIdentity();
-       glTranslatef(0, 0, -5);
-}
-
-static void
-do_display(struct context *c)
-{
-       glb_draw_step(c->draw_context);
-}
-
-void
-init_bubble3d(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       int         screen = MI_SCREEN(mi);
-       struct context *c;
-
-       if (contexts == 0) {
-               contexts = (struct context *) malloc(sizeof (struct context) * MI_NUM_SCREENS(mi));
-
-               if (contexts == 0)
-                       return;
-       }
-       c = &contexts[screen];
-       c->glx_context = init_GL(mi);
-       if (c->glx_context != 0) {
-               init(c);
-               reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
-               do_display(c);
-               glFinish();
-               glXSwapBuffers(display, window);
-       } else
-               MI_CLEARWINDOW(mi);
-}
-
-void
-draw_bubble3d(ModeInfo * mi)
-{
-       struct context *c = &contexts[MI_SCREEN(mi)];
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       MI_IS_DRAWN(mi) = True;
-
-       if (!c->glx_context)
-               return;
-
-       glXMakeCurrent(display, window, *(c->glx_context));
-
-       do_display(c);
-
-       glFinish();
-       glXSwapBuffers(display, window);
-}
-
-void
-change_bubble3d(ModeInfo * mi)
-{
-       /* nothing */
-}
-
-void
-release_bubble3d(ModeInfo * mi)
-{
-       struct context *c = &contexts[MI_SCREEN(mi)];
-
-       if (contexts != 0) {
-               glb_draw_end(c->draw_context);
-               (void) free((void *) contexts);
-               contexts = 0;
-       }
-       FreeAllGL(mi);
-}
-
-#endif /* USE_GL */
diff --git a/hacks/glx/b_sphere.c b/hacks/glx/b_sphere.c
deleted file mode 100644 (file)
index 2f8b25f..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)b_sphere.c  4.11 98/06/16 xlockmore";
-
-#endif
-
-/*-
- * BUBBLE3D (C) 1998 Richard W.M. Jones.
- * b_sphere.c: Create a list of vertices and triangles in a
- * normalized sphere, which is then later used as the basic shape
- * for all bubbles. This code is run once when the program starts
- * up.
- */
-
-#include "bubble3d.h"
-
-/* The list of vertices created. */
-typedef glb_vertex vertex;
-static vertex *vertices = 0;
-static int  nr_vertices = 0, nr_vertices_allocated = 0;
-
-/* The list of triangles created. */
-typedef glb_triangle triangle;
-static triangle *triangles = 0;
-static int  nr_triangles = 0, nr_triangles_allocated = 0;
-
-/* Have we initialized the lists yet? */
-static int  initialized = 0;
-
-#define EPSILON GLB_VERTICES_EPSILON
-
-/* Should be taken care of already... but just in case */
-#if !defined( __GNUC__ ) && !defined(__cplusplus) && !defined(c_plusplus)
-#undef inline
-#define inline                 /* */
-#endif
-static inline int
-close_enough(GLfloat * v1, GLfloat * v2)
-{
-       return fabs((double) (v1[0] - v2[0])) <= EPSILON &&
-               fabs((double) (v1[1] - v2[1])) <= EPSILON &&
-               fabs((double) (v1[2] - v2[2])) <= EPSILON;
-}
-
-#define INCR(n) ((n == 0) ? (n = 1) : (n *= 2))
-#define INCR_ALLOCATION(a, n, t) (a = (t *) realloc (a, INCR (n) * sizeof (t)))
-
-static inline GLuint
-save_vertex(GLfloat * v)
-{
-       int         i;
-
-       /* Inefficient, but we only do this a few times. Check to see if there's
-        * an existing vertex which is `close enough' to this one.
-        */
-       for (i = 0; i < nr_vertices; ++i)
-               if (close_enough(v, vertices[i]))
-                       return i;
-
-       if (nr_vertices_allocated <= nr_vertices) {
-               if (vertices == 0) {
-                       vertices = (vertex *) malloc(INCR(nr_vertices_allocated) * sizeof (vertex));
-               } else {
-                       INCR_ALLOCATION(vertices, nr_vertices_allocated, vertex);
-               }
-       }
-       vertices[nr_vertices][0] = v[0];
-       vertices[nr_vertices][1] = v[1];
-       vertices[nr_vertices][2] = v[2];
-       return nr_vertices++;
-}
-
-static inline GLuint
-save_triangle(GLuint v1, GLuint v2, GLuint v3)
-{
-       if (nr_triangles_allocated <= nr_triangles) {
-               if (triangles == 0) {
-                       triangles = (triangle *) malloc(INCR(nr_triangles_allocated) * sizeof (triangle));
-               } else {
-                       INCR_ALLOCATION(triangles, nr_triangles_allocated, triangle);
-               }
-       }
-       triangles[nr_triangles][0] = v1;
-       triangles[nr_triangles][1] = v2;
-       triangles[nr_triangles][2] = v3;
-       return nr_triangles++;
-}
-
-static inline void
-normalize(GLfloat v[3])
-{
-       GLfloat     d = (GLfloat) sqrt((double) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2]));
-
-       if (d != 0) {
-               v[0] /= d;
-               v[1] /= d;
-               v[2] /= d;
-       } else {
-               v[0] = v[1] = v[2] = 0;
-       }
-}
-
-static void
-subdivide(GLfloat * v1, GLuint vi1,
-         GLfloat * v2, GLuint vi2,
-         GLfloat * v3, GLuint vi3,
-         int depth)
-{
-       int         i;
-
-       if (depth == 0) {
-               save_triangle(vi1, vi2, vi3);
-       } else {
-               GLuint      vi12, vi23, vi31;
-               GLfloat     v12[3], v23[3], v31[3];
-
-               for (i = 0; i < 3; ++i) {
-                       v12[i] = v1[i] + v2[i];
-                       v23[i] = v2[i] + v3[i];
-                       v31[i] = v3[i] + v1[i];
-               }
-               normalize(v12);
-               vi12 = save_vertex(v12);
-               normalize(v23);
-               vi23 = save_vertex(v23);
-               normalize(v31);
-               vi31 = save_vertex(v31);
-               subdivide(v1, vi1, v12, vi12, v31, vi31, depth - 1);
-               subdivide(v2, vi2, v23, vi23, v12, vi12, depth - 1);
-               subdivide(v3, vi3, v31, vi31, v23, vi23, depth - 1);
-               subdivide(v12, vi12, v23, vi23, v31, vi31, depth - 1);
-       }
-}
-
-#define ICO_X 0.525731112119133606
-#define ICO_Z 0.850650808352039932
-
-static GLfloat vdata[12][3] =
-{
-       {-ICO_X, 0, ICO_Z},
-       {ICO_X, 0, ICO_Z},
-       {-ICO_X, 0, -ICO_Z},
-       {ICO_X, 0, -ICO_Z},
-       {0, ICO_Z, ICO_X},
-       {0, ICO_Z, -ICO_X},
-       {0, -ICO_Z, ICO_X},
-       {0, -ICO_Z, -ICO_X},
-       {ICO_Z, ICO_X, 0},
-       {-ICO_Z, ICO_X, 0},
-       {ICO_Z, -ICO_X, 0},
-       {-ICO_Z, -ICO_X, 0}
-};
-
-static GLuint tindices[20][3] =
-{
-       {0, 4, 1},
-       {0, 9, 4},
-       {9, 5, 4},
-       {4, 5, 8},
-       {4, 8, 1},
-       {8, 10, 1},
-       {8, 3, 10},
-       {5, 3, 8},
-       {5, 2, 3},
-       {2, 7, 3},
-       {7, 10, 3},
-       {7, 6, 10},
-       {7, 11, 6},
-       {11, 0, 6},
-       {0, 1, 6},
-       {6, 1, 10},
-       {9, 0, 11},
-       {9, 11, 2},
-       {9, 2, 5},
-       {7, 2, 11}
-};
-
-/* Public interface: Create the sphere. */
-void
-glb_sphere_init(void)
-{
-       int         i;
-
-       if (initialized)
-               return;
-
-       for (i = 0; i < 20; ++i) {
-               subdivide(vdata[tindices[i][0]], save_vertex(vdata[tindices[i][0]]),
-                  vdata[tindices[i][1]], save_vertex(vdata[tindices[i][1]]),
-                  vdata[tindices[i][2]], save_vertex(vdata[tindices[i][2]]),
-                         glb_config.subdivision_depth);
-       }
-
-       initialized = 1;
-}
-
-/* Return the vertices list. */
-glb_vertex *
-glb_sphere_get_vertices(int *nr_vertices_ptr)
-{
-       glb_sphere_init();
-       *nr_vertices_ptr = nr_vertices;
-       return vertices;
-}
-
-/* Return the triangles list. */
-glb_triangle *
-glb_sphere_get_triangles(int *nr_triangles_ptr)
-{
-       glb_sphere_init();
-       *nr_triangles_ptr = nr_triangles;
-       return triangles;
-}
-
-/* Free up memory. */
-#if 0
-void
-glb_sphere_end(void)
-{
-       initialized = 0;
-
-       (void) free((void *) vertices);
-       (void) free((void *) triangles);
-
-       vertices = 0;
-       nr_vertices = nr_vertices_allocated = 0;
-
-       triangles = 0;
-       nr_triangles = nr_triangles_allocated = 0;
-}
-
-#endif
diff --git a/hacks/glx/bubble3d.c b/hacks/glx/bubble3d.c
deleted file mode 100644 (file)
index dd5b68e..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* bubble3d.c - 3D bubbles  */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)bubble3d.c  4.11 98/06/16 xlockmore";
-
-#endif
-
-/*-
- * BUBBLE3D (C) 1998 Richard W.M. Jones.
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 16-Jun-98: Written.
- *
- * bubble.c: This code is responsible for creating and managing
- * bubbles over their lifetime.
- * The bubbles may be drawn inside out.
- */
-
-#include "bubble3d.h"
-
-typedef struct bubble {
-       GLfloat    *contributions;      /* List of contributions from each
-                                        * nudge to each vertex. This list has
-                                        * length nr_vertices * nr_nudge_axes.
-                                        */
-       GLfloat     x, y, z;    /* (x,y,z) location of the bubble. */
-       GLfloat     scale;      /* Scaling factor applied to bubble. */
-       GLfloat     y_incr, scale_incr;         /* Change in y and scale each frame. */
-       GLfloat     rotx, roty, rotz;   /* Current rotation. */
-       GLfloat     rotx_incr, roty_incr, rotz_incr;    /* Amount by which we increase
-                                                        * rotation each step.
-                                                        */
-       GLfloat    *nudge_angle;        /* Current angle (radians) of each
-                                        * nudge. This list has length nr_nudge_axes.
-                                        */
-       GLfloat    *nudge_angle_incr;   /* Amount by which we increase each nudge
-                                        * angle in each frame.
-                                        */
-} bubble;
-
-/* Should be taken care of already... but just in case */
-#if !defined( __GNUC__ ) && !defined(__cplusplus) && !defined(c_plusplus)
-#undef inline
-#define inline                 /* */
-#endif
-static inline void
-normalize(GLfloat v[3])
-{
-       GLfloat     d = (GLfloat) sqrt((double) (v[0] * v[0] + v[1] * v[1] +
-                                                v[2] * v[2]));
-
-       if (d != 0) {
-               v[0] /= d;
-               v[1] /= d;
-               v[2] /= d;
-       } else {
-               v[0] = v[1] = v[2] = 0;
-       }
-}
-
-static inline GLfloat
-dotprod(GLfloat * v1, GLfloat * v2)
-{
-       return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
-}
-
-static inline GLfloat
-max(GLfloat a, GLfloat b)
-{
-       return a > b ? a : b;
-}
-
-/* Create a new bubble. */
-void       *
-glb_bubble_new(GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
-              GLfloat y_incr, GLfloat scale_incr)
-{
-       int         i, j;
-
-       /* GLfloat axes [glb_config.nr_nudge_axes][3]; */
-       GLfloat     axes[5][3]; /* HARD CODED for SunCC */
-       int         nr_vertices;
-       glb_vertex *vertices = glb_sphere_get_vertices(&nr_vertices);
-
-       bubble     *b = (bubble *) malloc(sizeof *b);
-
-       if (b == 0)
-               return 0;
-
-       b->contributions = (GLfloat *) malloc(sizeof (GLfloat) * nr_vertices *
-                                             glb_config.nr_nudge_axes);
-       if (b->contributions == 0) {
-               (void) free((void *) b);
-               return 0;
-       }
-       b->nudge_angle = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes);
-       if (b->nudge_angle == 0) {
-               (void) free((void *) b->contributions);
-               (void) free((void *) b);
-               return 0;
-       }
-       b->nudge_angle_incr = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes);
-       if (b->nudge_angle_incr == 0) {
-               (void) free((void *) b->nudge_angle);
-               (void) free((void *) b->contributions);
-               (void) free((void *) b);
-               return 0;
-       }
-       /* Initialize primitive elements. */
-       b->x = x;
-       b->y = y;
-       b->z = z;
-       b->scale = scale;
-       b->y_incr = y_incr;
-       b->scale_incr = scale_incr;
-       b->rotx = b->roty = b->rotz = 0;
-       b->rotx_incr = glb_drand() * glb_config.rotation_factor * 2
-               - glb_config.rotation_factor;
-       b->roty_incr = glb_drand() * glb_config.rotation_factor * 2
-               - glb_config.rotation_factor;
-       b->rotz_incr = glb_drand() * glb_config.rotation_factor * 2
-               - glb_config.rotation_factor;
-
-       /* Initialize the nudge angle arrays. */
-       for (i = 0; i < glb_config.nr_nudge_axes; ++i) {
-               b->nudge_angle[i] = 0;
-               b->nudge_angle_incr[i] = glb_drand() * glb_config.nudge_angle_factor;
-       }
-
-       /* Choose some random nudge axes. */
-       for (i = 0; i < glb_config.nr_nudge_axes; ++i) {
-               axes[i][0] = glb_drand() * 2 - 1;
-               axes[i][1] = glb_drand() * 2 - 1;
-               axes[i][2] = glb_drand() * 2 - 1;
-               normalize(axes[i]);
-       }
-
-       /* Calculate the contribution that each nudge axis has on each vertex. */
-       for (i = 0; i < nr_vertices; ++i)
-               for (j = 0; j < glb_config.nr_nudge_axes; ++j)
-                       b->contributions[i * glb_config.nr_nudge_axes + j]
-                               = max(0, dotprod(vertices[i], axes[j]));
-
-       return (void *) b;
-}
-
-/* Delete a bubble and free up all memory. */
-void
-glb_bubble_delete(void *bb)
-{
-       bubble     *b = (bubble *) bb;
-
-       if (b != NULL) {
-               if (b->nudge_angle_incr) {
-                       (void) free((void *) b->nudge_angle_incr);
-                       b->nudge_angle_incr = NULL;
-               }
-               if (b->nudge_angle) {
-                       (void) free((void *) b->nudge_angle);
-                       b->nudge_angle = NULL;
-               }
-               if (b->contributions) {
-                       (void) free((void *) b->contributions);
-                       b->contributions = NULL;
-               }
-               (void) free((void *) b);
-               b = NULL;
-       }
-}
-
-/* Rotate and wobble a bubble by a single step. */
-void
-glb_bubble_step(void *bb)
-{
-       int         i;
-       bubble     *b = (bubble *) bb;
-
-       /* Update the rotation. */
-       b->rotx += b->rotx_incr;
-       b->roty += b->roty_incr;
-       b->rotz += b->rotz_incr;
-
-       /* Update the nudge angles. */
-       for (i = 0; i < glb_config.nr_nudge_axes; ++i)
-               b->nudge_angle[i] += b->nudge_angle_incr[i];
-
-       /* Move it upwards & outwards. */
-       b->y += b->y_incr;
-       b->scale += b->scale_incr;
-}
-
-/* Draw a bubble. */
-void
-glb_bubble_draw(void *bb)
-{
-       int         i, j;
-       bubble     *b = (bubble *) bb;
-       int         nr_vertices;
-       glb_vertex *vertices = glb_sphere_get_vertices(&nr_vertices);
-       int         nr_triangles;
-       glb_triangle *triangles = glb_sphere_get_triangles(&nr_triangles);
-       glb_vertex *new_vertices;
-
-       new_vertices = (glb_vertex *) malloc(sizeof (glb_vertex) * nr_vertices);
-       /* Calculate the vertices of this bubble, factoring in each nudge axis. */
-       for (i = 0; i < nr_vertices; ++i) {
-               GLfloat     s = 0;
-
-               for (j = 0; j < glb_config.nr_nudge_axes; ++j)
-                       s += ((GLfloat) cos((double) (b->nudge_angle[j])) *
-                             glb_config.nudge_factor - glb_config.nudge_factor / 2) *
-                               b->contributions[i * glb_config.nr_nudge_axes + j];
-
-               new_vertices[i][0] = vertices[i][0] * (s + 1);
-               new_vertices[i][1] = vertices[i][1] * (s + 1);
-               new_vertices[i][2] = vertices[i][2] * (s + 1);
-       }
-
-       glPushMatrix();
-
-       /* Apply translation, rotation and scalings. */
-       glTranslatef(b->x, b->y, b->z);
-
-       glRotatef(b->rotx, 1, 0, 0);
-       glRotatef(b->roty, 0, 1, 0);
-       glRotatef(b->rotz, 0, 0, 1);
-
-       glScalef(b->scale, b->scale, b->scale);
-
-       /* Draw the bubble. */
-       glBegin(GL_TRIANGLES);
-       for (i = 0; i < nr_triangles; ++i) {
-               glNormal3fv(new_vertices[triangles[i][0]]);
-               glVertex3fv(new_vertices[triangles[i][0]]);
-               glNormal3fv(new_vertices[triangles[i][1]]);
-               glVertex3fv(new_vertices[triangles[i][1]]);
-               glNormal3fv(new_vertices[triangles[i][2]]);
-               glVertex3fv(new_vertices[triangles[i][2]]);
-       }
-       glEnd();
-       glPopMatrix();
-       (void) free((void *) new_vertices);
-}
-
-/* Return y value. */
-GLfloat
-glb_bubble_get_y(void *bb)
-{
-       bubble     *b = (bubble *) bb;
-
-       return b->y;
-}
diff --git a/hacks/glx/bubble3d.h b/hacks/glx/bubble3d.h
deleted file mode 100644 (file)
index 4cbdd75..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/* GLBUBBLES (C) 1998 Richard W.M. Jones. */
-
-#ifndef __bubbles3d_h__
-#define __bubbles3d_h__
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# include <math.h>
-# include "xlockmoreI.h"       /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"            /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-/* Static configuration. */
-#define GLB_SLOW_GL          1 /* Set this if you have a slow GL
-                                  * implementation. If you have an accelerated
-                                  * graphics card, set this to 0.
-                                */
-#define GLB_USE_BLENDING     0 /* Use alpha feature to create see-through
-                                  * bubbles.
-                                */
-#define GLB_VERTICES_EPSILON 0.0005    /* How close are identical vertices? */
-
-/* Configuration structure. */
-struct glb_config {
-       int         subdivision_depth;  /* Controls how many triangles are in
-                                        * each bubble. 2 and 3 are good values.
-                                        */
-       int         nr_nudge_axes;      /* Number of directions in which each
-                                        * bubble gets stretched. Values between
-                                        * 3 and 7 seem to produce good results.
-                                        */
-       GLfloat     nudge_angle_factor;         /* Max. amount of rotation in nudge angles.
-                                                * Controls the amount of `wobble' we see,
-                                                * and 0.3 seems to work well.
-                                                */
-       GLfloat     nudge_factor;       /* Max. displacement of any single nudge.
-                                        * Controls the amount of the wobble. Depends
-                                        * on NR_NUDGE_AXES, and must not exceed
-                                        * 1 / NR_NUDGE_AXES. 0.1 is good.
-                                        */
-       GLfloat     rotation_factor;    /* Max. amount by which bubbles rotate. */
-       int         create_bubbles_every;       /* How often to create new bubbles. */
-       int         max_bubbles;        /* Max. number of bubbles to create. */
-       double      p_bubble_group[4];  /* Probabilities of creating 1, 2, 3, 4
-                                        * bubbles in a group. Cumulative.
-                                        */
-       GLfloat     max_size;   /* Max. size. */
-       GLfloat     min_size;   /* Min. size of bubbles. */
-       GLfloat     max_speed;  /* Max. speed. */
-       GLfloat     min_speed;  /* Min. speed of bubbles. */
-       GLfloat     scale_factor;       /* Factor by which bubbles scale from bottom
-                                        * of screen to top. 1.5 - 2.0 are OK.
-                                        */
-       GLfloat     screen_bottom;      /* Bottom of screen. */
-       GLfloat     screen_top; /* Top of screen. */
-       GLfloat     bg_colour[4];       /* Background colour. */
-       GLfloat     bubble_colour[4];   /* Colour of the bubbles. */
-};
-
-extern struct glb_config glb_config;
-
-#define glb_drand() ((double)LRAND() / (double)MAXRAND)
-
-/*-- From glb_sphere.c. --*/
-typedef GLfloat glb_vertex[3];
-typedef GLuint glb_triangle[3];
-extern void glb_sphere_init(void);
-extern glb_vertex *glb_sphere_get_vertices(int *nr_vertices);
-extern glb_triangle *glb_sphere_get_triangles(int *nr_triangles);
-extern void glb_sphere_end(void);
-
-/*-- From glb_bubble.c. --*/
-extern void *glb_bubble_new(GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
-                           GLfloat y_incr, GLfloat scale_incr);
-extern void glb_bubble_delete(void *);
-extern void glb_bubble_step(void *);
-extern void glb_bubble_draw(void *);
-extern GLfloat glb_bubble_get_y(void *);
-
-/*-- From glb_draw.c. --*/
-extern void *glb_draw_init(void);
-extern void glb_draw_step(void *);
-extern void glb_draw_end(void *);
-
-#endif /* __bubbles3d_h__ */
diff --git a/hacks/glx/buildlwo.c b/hacks/glx/buildlwo.c
deleted file mode 100644 (file)
index 1aa86ed..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)buildlwo.c   4.02 97/04/20 xlockmore";
-
-#endif
-
-/*-
- * buildlwo.c: Lightwave Object Display List Builder for OpenGL
- *
- * This module can be called by any GL mode wishing to use
- * objects created in NewTek's Lightwave 3D.  The objects must
- * first be converted to C source with my converter "lw2ogl".
- * If other people are interested in this, I will put up a
- * web page for it at http://www.netaxs.com/~emackey/lw2ogl/
- *
- * by Ed Mackey, 4/19/97
- *
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "buildlwo.h"
-
-GLuint
-BuildLWO(int wireframe, struct lwo *object)
-{
-       GLuint      dl_num;
-       GLfloat    *pnts, *normals, three[3], *grab;
-       unsigned short int *pols;
-       int         p, num_pnts = 0;
-
-       dl_num = glGenLists(1);
-       if (!dl_num)
-               return (0);
-
-       pnts = object->pnts;
-       normals = object->normals;
-       pols = object->pols;
-
-       glNewList(dl_num, GL_COMPILE);
-
-       if (!pols) {
-               num_pnts = object->num_pnts;
-               glBegin(GL_POINTS);
-               for (p = 0; p < num_pnts; ++p) {
-                       three[0] = *(pnts++);
-                       three[1] = *(pnts++);
-                       three[2] = *(pnts++);
-                       glVertex3fv(three);
-               }
-               glEnd();
-       } else
-               for (;;) {
-                       if (num_pnts <= 0) {
-                               num_pnts = *pols + 2;
-                               if (num_pnts < 3)
-                                       break;
-                               if (num_pnts == 3) {
-                                       glBegin(GL_POINTS);
-                               } else if (num_pnts == 4) {
-                                       glBegin(GL_LINES);
-                               } else {
-                                       three[0] = *(normals++);
-                                       three[1] = *(normals++);
-                                       three[2] = *(normals++);
-                                       glNormal3fv(three);
-                                       if (wireframe)
-                                               glBegin(GL_LINE_LOOP);
-                                       else
-                                               glBegin(GL_POLYGON);
-                               }
-                       } else if (num_pnts == 1) {
-                               glEnd();
-                       } else {
-                               grab = pnts + ((int) (*pols) * 3);
-                               three[0] = *(grab++);
-                               three[1] = *(grab++);
-                               three[2] = *(grab++);
-                               glVertex3fv(three);
-                       }
-                       --num_pnts;
-                       ++pols;
-               }
-
-       glEndList();
-
-       return (dl_num);
-}
-
-#endif /* USE_GL */
-
-/* End of buildlwo.c */
diff --git a/hacks/glx/buildlwo.h b/hacks/glx/buildlwo.h
deleted file mode 100644 (file)
index fd9f027..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*-
- * buildlwo.h: Header file for Lightwave Object Display List Builder
- * for OpenGL
- *
- * by Ed Mackey, 4/19/97
- *
- */
-
-#ifndef __BUILD_LWO_H__
-#define __BUILD_LWO_H__
-
-struct lwo {
-       int         num_pnts;
-       GLfloat    *pnts;
-       GLfloat    *normals;
-       unsigned short int *pols;
-       GLfloat    *smoothnormals;
-};
-
-GLuint      BuildLWO(int wireframe, struct lwo *object);
-
-#endif
-
-/* End of buildlwo.h */
diff --git a/hacks/glx/cage.c b/hacks/glx/cage.c
deleted file mode 100644 (file)
index 26a60b5..0000000
+++ /dev/null
@@ -1,452 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* cage --- the Impossible Cage, an Escher like scene. */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)cage.c       4.07 98/01/04 xlockmore";
-
-#endif
-
-#undef DEBUG_LISTS
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The RotateAroundU() routine was adapted from the book
- *    "Computer Graphics Principles and Practice 
- *     Foley - vanDam - Feiner - Hughes
- *     Second Edition" Pag. 227, exercise 5.15.
- * 
- * This mode shows some interesting scenes that are impossible OR very
- * wierd to build in the real universe. Much of the scenes are inspirated
- * on Mauritz Cornelis Escher's works which derivated the mode's name.
- * M.C. Escher (1898-1972) was a dutch artist and many people prefer to
- * say he was a mathematician.
- *
- * Thanks goes to Brian Paul for making it possible and inexpensive to use 
- * OpenGL at home.
- *
- * Since I'm not a native English speaker, my apologies for any grammatical
- * mistake.
- *
- * My e-mail address is
- * m-vianna@usa.net
- *
- * Marcelo F. Vianna (Jun-01-1997)
- *
- * Revision History:
- * 01-Jan-98: Mode separated from escher and renamed
- * 08-Jun-97: New scene implemented: "Impossible Cage" based in a M.C. Escher's
- *            painting with the same name (quite similar). The first GL mode
- *            to use texture mapping.
- *            The "Impossible Cage" scene doesn't use DEPTH BUFFER, the 
- *            wood planks are drawn consistently using GL_CULL_FACE, and
- *            the painter's algorithm is used to sort the planks.
- *            Marcelo F. Vianna.
- * 07-Jun-97: Speed ups in Moebius Strip using GL_CULL_FACE.
- *            Marcelo F. Vianna.
- * 03-Jun-97: Initial Release (Only one scene: "Moebius Strip")
- *            The Moebius Strip scene was inspirated in a M.C. Escher's
- *            painting named Moebius Strip II in wich ants walk across a
- *            Moebius Strip path, sometimes meeting each other and sometimes
- *            being in "opposite faces" (note that the moebius strip has
- *            only one face and one edge).
- *            Marcelo F. Vianna.
- *
- */
-
-/*-
- * Texture mapping is only available on RGBA contexts, Mono and color index
- * visuals DO NOT support texture mapping in OpenGL.
- *
- * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture
- * mapping shuld work on PseudoColor, DirectColor, TrueColor using Mesa. Mono
- * is not officially supported for both OpenGL and Mesa, but seems to not crash
- * Mesa.
- *
- * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know).
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS                     "Cage"
-# define HACK_INIT                     init_cage
-# define HACK_DRAW                     draw_cage
-# define cage_opts                     xlockmore_opts
-# define DEFAULTS                      "*cycles:               1       \n"                     \
-                                                       "*delay:                1000    \n"                     \
-                                                       "*wireframe:    False   \n"
-# include "xlockmore.h"                /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"            /* from the xlockmore distribution */
-
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-
-#include <GL/glu.h>
-#include "e_textures.h"
-
-ModeSpecOpt cage_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   cage_description =
-{"cage", "init_cage", "draw_cage", "release_cage",
- "draw_cage", "change_cage", NULL, &cage_opts,
- 1000, 1, 1, 1, 1.0, 4, "",
- "Shows the Impossible Cage, an Escher-like GL scene", 0, NULL};
-
-#endif
-
-#define Scale4Window               0.3
-#define Scale4Iconic               0.4
-
-#define sqr(A)                     ((A)*(A))
-
-#ifndef Pi
-#define Pi                         M_PI
-#endif
-
-/*************************************************************************/
-
-typedef struct {
-       GLint       WindH, WindW;
-       GLfloat     step;
-       int         AreObjectsDefined[1];
-       GLXContext *glx_context;
-} cagestruct;
-
-static float front_shininess[] =
-{60.0};
-static float front_specular[] =
-{0.7, 0.7, 0.7, 1.0};
-static float ambient[] =
-{0.0, 0.0, 0.0, 1.0};
-static float diffuse[] =
-{1.0, 1.0, 1.0, 1.0};
-static float position0[] =
-{1.0, 1.0, 1.0, 0.0};
-static float position1[] =
-{-1.0, -1.0, 1.0, 0.0};
-static float lmodel_ambient[] =
-{0.5, 0.5, 0.5, 1.0};
-static float lmodel_twoside[] =
-{GL_TRUE};
-
-static float MaterialWhite[] =
-{0.7, 0.7, 0.7, 1.0};
-
-static cagestruct *cage = NULL;
-static GLuint objects;
-
-#define ObjWoodPlank    0
-
-#define PlankWidth      3.0
-#define PlankHeight     0.35
-#define PlankThickness  0.15
-
-static void
-draw_woodplank(cagestruct * cp)
-{
-       if (!cp->AreObjectsDefined[ObjWoodPlank]) {
-               glNewList(objects + ObjWoodPlank, GL_COMPILE_AND_EXECUTE);
-               glBegin(GL_QUADS);
-               glNormal3f(0, 0, 1);
-               glTexCoord2f(0, 0);
-               glVertex3f(-PlankWidth, -PlankHeight, PlankThickness);
-               glTexCoord2f(1, 0);
-               glVertex3f(PlankWidth, -PlankHeight, PlankThickness);
-               glTexCoord2f(1, 1);
-               glVertex3f(PlankWidth, PlankHeight, PlankThickness);
-               glTexCoord2f(0, 1);
-               glVertex3f(-PlankWidth, PlankHeight, PlankThickness);
-               glNormal3f(0, 0, -1);
-               glTexCoord2f(0, 0);
-               glVertex3f(-PlankWidth, PlankHeight, -PlankThickness);
-               glTexCoord2f(1, 0);
-               glVertex3f(PlankWidth, PlankHeight, -PlankThickness);
-               glTexCoord2f(1, 1);
-               glVertex3f(PlankWidth, -PlankHeight, -PlankThickness);
-               glTexCoord2f(0, 1);
-               glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness);
-               glNormal3f(0, 1, 0);
-               glTexCoord2f(0, 0);
-               glVertex3f(-PlankWidth, PlankHeight, PlankThickness);
-               glTexCoord2f(1, 0);
-               glVertex3f(PlankWidth, PlankHeight, PlankThickness);
-               glTexCoord2f(1, 1);
-               glVertex3f(PlankWidth, PlankHeight, -PlankThickness);
-               glTexCoord2f(0, 1);
-               glVertex3f(-PlankWidth, PlankHeight, -PlankThickness);
-               glNormal3f(0, -1, 0);
-               glTexCoord2f(0, 0);
-               glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness);
-               glTexCoord2f(1, 0);
-               glVertex3f(PlankWidth, -PlankHeight, -PlankThickness);
-               glTexCoord2f(1, 1);
-               glVertex3f(PlankWidth, -PlankHeight, PlankThickness);
-               glTexCoord2f(0, 1);
-               glVertex3f(-PlankWidth, -PlankHeight, PlankThickness);
-               glNormal3f(1, 0, 0);
-               glTexCoord2f(0, 0);
-               glVertex3f(PlankWidth, -PlankHeight, PlankThickness);
-               glTexCoord2f(1, 0);
-               glVertex3f(PlankWidth, -PlankHeight, -PlankThickness);
-               glTexCoord2f(1, 1);
-               glVertex3f(PlankWidth, PlankHeight, -PlankThickness);
-               glTexCoord2f(0, 1);
-               glVertex3f(PlankWidth, PlankHeight, PlankThickness);
-               glNormal3f(-1, 0, 0);
-               glTexCoord2f(0, 0);
-               glVertex3f(-PlankWidth, PlankHeight, PlankThickness);
-               glTexCoord2f(1, 0);
-               glVertex3f(-PlankWidth, PlankHeight, -PlankThickness);
-               glTexCoord2f(1, 1);
-               glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness);
-               glTexCoord2f(0, 1);
-               glVertex3f(-PlankWidth, -PlankHeight, PlankThickness);
-               glEnd();
-               glEndList();
-               cp->AreObjectsDefined[ObjWoodPlank] = 1;
-#ifdef DEBUG_LISTS
-               (void) printf("WoodPlank drawn SLOWLY\n");
-#endif
-       } else {
-               glCallList(objects + ObjWoodPlank);
-#ifdef DEBUG_LISTS
-               (void) printf("WoodPlank drawn quickly\n");
-#endif
-       }
-}
-
-static void
-draw_impossiblecage(cagestruct * cp)
-{
-       glPushMatrix();
-       glRotatef(90, 0, 1, 0);
-       glTranslatef(0.0, PlankHeight - PlankWidth, -PlankThickness - PlankWidth);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(90, 0, 0, 1);
-       glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - PlankThickness);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(90, 0, 1, 0);
-       glTranslatef(0.0, PlankWidth - PlankHeight, -PlankThickness - PlankWidth);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glTranslatef(0.0, PlankWidth - PlankHeight, 3 * PlankThickness - PlankWidth);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(90, 0, 0, 1);
-       glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - PlankThickness);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - 3 * PlankThickness);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glTranslatef(0.0, PlankHeight - PlankWidth, 3 * PlankThickness - PlankWidth);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(90, 0, 0, 1);
-       glTranslatef(0.0, PlankHeight - PlankWidth, PlankThickness - PlankWidth);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - 3 * PlankThickness);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(90, 0, 1, 0);
-       glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth + PlankThickness);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(90, 0, 0, 1);
-       glTranslatef(0.0, PlankWidth - PlankHeight, PlankThickness - PlankWidth);
-       draw_woodplank(cp);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(90, 0, 1, 0);
-       glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth + PlankThickness);
-       draw_woodplank(cp);
-       glPopMatrix();
-}
-
-static void
-reshape(ModeInfo * mi, int width, int height)
-{
-       cagestruct *cp = &cage[MI_SCREEN(mi)];
-
-       glViewport(0, 0, cp->WindW = (GLint) width, cp->WindH = (GLint) height);
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0);
-       glMatrixMode(GL_MODELVIEW);
-       if (width >= 1024) {
-               glLineWidth(3);
-               glPointSize(3);
-       } else if (width >= 512) {
-               glLineWidth(2);
-               glPointSize(2);
-       } else {
-               glLineWidth(1);
-               glPointSize(1);
-       }
-       cp->AreObjectsDefined[ObjWoodPlank] = 0;
-}
-
-static void
-pinit(void)
-{
-       glClearDepth(1.0);
-       glClearColor(0.0, 0.0, 0.0, 1.0);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT0, GL_POSITION, position0);
-       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT1, GL_POSITION, position1);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_NORMALIZE);
-       glFrontFace(GL_CCW);
-       glCullFace(GL_BACK);
-
-       /* cage */
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite);
-       glShadeModel(GL_FLAT);
-       glDisable(GL_DEPTH_TEST);
-       glEnable(GL_TEXTURE_2D);
-       glEnable(GL_CULL_FACE);
-
-       glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-       gluBuild2DMipmaps(GL_TEXTURE_2D, 3, WoodTextureWidth, WoodTextureHeight,
-                         GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData);
-       glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-}
-
-void
-init_cage(ModeInfo * mi)
-{
-       int         screen = MI_SCREEN(mi);
-       cagestruct *cp;
-
-       if (cage == NULL) {
-               if ((cage = (cagestruct *) calloc(MI_NUM_SCREENS(mi),
-                                              sizeof (cagestruct))) == NULL)
-                       return;
-       }
-       cp = &cage[screen];
-       cp->step = NRAND(90);
-
-       if ((cp->glx_context = init_GL(mi)) != NULL) {
-
-               reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
-               glDrawBuffer(GL_BACK);
-               if (!glIsList(objects))
-                       objects = glGenLists(1);
-               pinit();
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-void
-draw_cage(ModeInfo * mi)
-{
-       cagestruct *cp = &cage[MI_SCREEN(mi)];
-
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       MI_IS_DRAWN(mi) = True;
-
-       if (!cp->glx_context)
-               return;
-
-       glXMakeCurrent(display, window, *(cp->glx_context));
-
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       glPushMatrix();
-
-       glTranslatef(0.0, 0.0, -10.0);
-
-       if (!MI_IS_ICONIC(mi)) {
-               glScalef(Scale4Window * cp->WindH / cp->WindW, Scale4Window, Scale4Window);
-       } else {
-               glScalef(Scale4Iconic * cp->WindH / cp->WindW, Scale4Iconic, Scale4Iconic);
-       }
-
-       /* cage */
-       glRotatef(cp->step * 100, 0, 0, 1);
-       glRotatef(25 + cos(cp->step * 5) * 6, 1, 0, 0);
-       glRotatef(204.5 - sin(cp->step * 5) * 8, 0, 1, 0);
-       draw_impossiblecage(cp);
-
-       glPopMatrix();
-
-       glFlush();
-
-       glXSwapBuffers(display, window);
-
-       cp->step += 0.025;
-}
-
-void
-change_cage(ModeInfo * mi)
-{
-       cagestruct *cp = &cage[MI_SCREEN(mi)];
-
-       if (!cp->glx_context)
-               return;
-
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
-       pinit();
-}
-
-void
-release_cage(ModeInfo * mi)
-{
-       if (cage != NULL) {
-               (void) free((void *) cage);
-               cage = NULL;
-       }
-       if (glIsList(objects)) {
-               glDeleteLists(objects, 1);
-       }
-       FreeAllGL(mi);
-}
-
-#endif
diff --git a/hacks/glx/dolphin.c b/hacks/glx/dolphin.c
deleted file mode 100644 (file)
index 67406d2..0000000
+++ /dev/null
@@ -1,2070 +0,0 @@
-/* atlantis --- Shows moving 3D sea animals */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)dolphin.c    1.2 98/06/16 xlockmore";
-
-#endif
-
-/* Copyright (c) E. Lassauge, 1998. */
-
-/*
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The original code for this mode was written by Mark J. Kilgard
- * as a demo for openGL programming.
- * 
- * Porting it to xlock  was possible by comparing the original Mesa's morph3d 
- * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna 
- * (look at morph3d.c) for his indirect help.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * My e-mail address is lassauge@sagem.fr
- *
- * Eric Lassauge  (May-13-1998)
- *
- */
-
-/**
- * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
- * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States.  Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <math.h>
-#include <GL/glx.h>
-#endif
-
-#include "atlantis.h"
-/* *INDENT-OFF* */
-static float N001[3] = {-0.005937 ,-0.101998 ,-0.994767};
-static float N002[3] = {0.936780 ,-0.200803 ,0.286569};
-static float N003[3] = {-0.233062 ,0.972058 ,0.028007};
-#if 0
-static float N004[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N005[3] = {0.898117 ,0.360171 ,0.252315};
-static float N006[3] = {-0.915437 ,0.348456 ,0.201378};
-static float N007[3] = {0.602263 ,-0.777527 ,0.180920};
-static float N008[3] = {-0.906912 ,-0.412015 ,0.088061};
-#if 0
-static float N009[3] = {-0.015623 ,0.999878 ,0.000000};
-static float N010[3] = {0.000000 ,-0.992278 ,0.124035};
-static float N011[3] = {0.000000 ,-0.936329 ,-0.351123};
-#endif
-static float N012[3] = {0.884408 ,-0.429417 ,-0.182821};
-static float N013[3] = {0.921121 ,0.311084 ,-0.234016};
-static float N014[3] = {0.382635 ,0.877882 ,-0.287948};
-static float N015[3] = {-0.380046 ,0.888166 ,-0.258316};
-static float N016[3] = {-0.891515 ,0.392238 ,-0.226607};
-static float N017[3] = {-0.901419 ,-0.382002 ,-0.203763};
-static float N018[3] = {-0.367225 ,-0.911091 ,-0.187243};
-static float N019[3] = {0.339539 ,-0.924846 ,-0.171388};
-static float N020[3] = {0.914706 ,-0.378617 ,-0.141290};
-static float N021[3] = {0.950662 ,0.262713 ,-0.164994};
-static float N022[3] = {0.546359 ,0.801460 ,-0.243218};
-static float N023[3] = {-0.315796 ,0.917068 ,-0.243431};
-static float N024[3] = {-0.825687 ,0.532277 ,-0.186875};
-static float N025[3] = {-0.974763 ,-0.155232 ,-0.160435};
-static float N026[3] = {-0.560596 ,-0.816658 ,-0.137119};
-static float N027[3] = {0.380210 ,-0.910817 ,-0.160786};
-static float N028[3] = {0.923772 ,-0.358322 ,-0.135093};
-static float N029[3] = {0.951202 ,0.275053 ,-0.139859};
-static float N030[3] = {0.686099 ,0.702548 ,-0.188932};
-static float N031[3] = {-0.521865 ,0.826719 ,-0.210220};
-static float N032[3] = {-0.923820 ,0.346739 ,-0.162258};
-static float N033[3] = {-0.902095 ,-0.409995 ,-0.134646};
-static float N034[3] = {-0.509115 ,-0.848498 ,-0.144404};
-static float N035[3] = {0.456469 ,-0.880293 ,-0.129305};
-static float N036[3] = {0.873401 ,-0.475489 ,-0.105266};
-static float N037[3] = {0.970825 ,0.179861 ,-0.158584};
-static float N038[3] = {0.675609 ,0.714187 ,-0.183004};
-static float N039[3] = {-0.523574 ,0.830212 ,-0.191360};
-static float N040[3] = {-0.958895 ,0.230808 ,-0.165071};
-static float N041[3] = {-0.918285 ,-0.376803 ,-0.121542};
-static float N042[3] = {-0.622467 ,-0.774167 ,-0.114888};
-static float N043[3] = {0.404497 ,-0.908807 ,-0.102231};
-static float N044[3] = {0.930538 ,-0.365155 ,-0.027588};
-static float N045[3] = {0.921920 ,0.374157 ,-0.100345};
-static float N046[3] = {0.507346 ,0.860739 ,0.041562};
-static float N047[3] = {-0.394646 ,0.918815 ,-0.005730};
-static float N048[3] = {-0.925411 ,0.373024 ,-0.066837};
-static float N049[3] = {-0.945337 ,-0.322309 ,-0.049551};
-static float N050[3] = {-0.660437 ,-0.750557 ,-0.022072};
-static float N051[3] = {0.488835 ,-0.871950 ,-0.027261};
-static float N052[3] = {0.902599 ,-0.421397 ,0.087969};
-static float N053[3] = {0.938636 ,0.322606 ,0.122020};
-static float N054[3] = {0.484605 ,0.871078 ,0.079878};
-static float N055[3] = {-0.353607 ,0.931559 ,0.084619};
-static float N056[3] = {-0.867759 ,0.478564 ,0.134054};
-static float N057[3] = {-0.951583 ,-0.296030 ,0.082794};
-static float N058[3] = {-0.672355 ,-0.730209 ,0.121384};
-static float N059[3] = {0.528336 ,-0.842452 ,0.105525};
-static float N060[3] = {0.786913 ,-0.564760 ,0.248627};
-#if 0
-static float N061[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N062[3] = {0.622098 ,0.765230 ,0.165584};
-static float N063[3] = {-0.631711 ,0.767816 ,0.106773};
-static float N064[3] = {-0.687886 ,0.606351 ,0.398938};
-static float N065[3] = {-0.946327 ,-0.281623 ,0.158598};
-static float N066[3] = {-0.509549 ,-0.860437 ,0.002776};
-static float N067[3] = {0.462594 ,-0.876692 ,0.131977};
-#if 0
-static float N068[3] = {0.000000 ,-0.992278 ,0.124035};
-static float N069[3] = {0.000000 ,-0.970143 ,-0.242536};
-static float N070[3] = {0.015502 ,0.992159 ,-0.124020};
-#endif
-static float N071[3] = {0.000000 ,1.000000 ,0.000000};
-#if 0
-static float N072[3] = {0.000000 ,1.000000 ,0.000000};
-static float N073[3] = {0.000000 ,1.000000 ,0.000000};
-static float N074[3] = {0.000000 ,-1.000000 ,0.000000};
-static float N075[3] = {-0.242536 ,0.000000 ,-0.970143};
-static float N076[3] = {-0.010336 ,-0.992225 ,-0.124028};
-#endif
-static float N077[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N078[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N079[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N080[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N081[3] = {-0.571197 ,0.816173 ,0.087152};
-static float N082[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N083[3] = {-0.571197 ,0.816173 ,0.087152};
-static float N084[3] = {-0.571197 ,0.816173 ,0.087152};
-static float N085[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N086[3] = {-0.571197 ,0.816173 ,0.087152};
-static float N087[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N088[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N089[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N090[3] = {-0.880770 ,0.461448 ,0.106351};
-static float N091[3] = {0.000000 ,1.000000 ,0.000000};
-static float N092[3] = {0.000000 ,1.000000 ,0.000000};
-static float N093[3] = {0.000000 ,1.000000 ,0.000000};
-static float N094[3] = {1.000000 ,0.000000 ,0.000000};
-static float N095[3] = {-1.000000 ,0.000000 ,0.000000};
-#if 0
-static float N096[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N097[3] = {-0.697296 ,0.702881 ,0.140491};
-static float N098[3] = {0.918864 ,0.340821 ,0.198819};
-static float N099[3] = {-0.932737 ,0.201195 ,0.299202};
-static float N100[3] = {0.029517 ,0.981679 ,0.188244};
-#if 0
-static float N101[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N102[3] = {0.813521 ,-0.204936 ,0.544229};
-#if 0
-static float N103[3] = {0.000000 ,1.000000 ,0.000000};
-static float N104[3] = {0.000000 ,1.000000 ,0.000000};
-static float N105[3] = {0.000000 ,1.000000 ,0.000000};
-static float N106[3] = {0.000000 ,1.000000 ,0.000000};
-static float N107[3] = {0.000000 ,1.000000 ,0.000000};
-static float N108[3] = {0.000000 ,1.000000 ,0.000000};
-static float N109[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N110[3] = {-0.781480 ,-0.384779 ,0.491155};
-static float N111[3] = {-0.722243 ,0.384927 ,0.574627};
-static float N112[3] = {-0.752278 ,0.502679 ,0.425901};
-static float N113[3] = {0.547257 ,0.367910 ,0.751766};
-static float N114[3] = {0.725949 ,-0.232568 ,0.647233};
-static float N115[3] = {-0.747182 ,-0.660786 ,0.071280};
-static float N116[3] = {0.931519 ,0.200748 ,0.303270};
-static float N117[3] = {-0.828928 ,0.313757 ,0.463071};
-static float N118[3] = {0.902554 ,-0.370967 ,0.218587};
-static float N119[3] = {-0.879257 ,-0.441851 ,0.177973};
-static float N120[3] = {0.642327 ,0.611901 ,0.461512};
-static float N121[3] = {0.964817 ,-0.202322 ,0.167910};
-static float N122[3] = {0.000000 ,1.000000 ,0.000000};
-#if 0
-static float N123[3] = {-0.980734 ,0.041447 ,0.190900};
-static float N124[3] = {-0.980734 ,0.041447 ,0.190900};
-static float N125[3] = {-0.980734 ,0.041447 ,0.190900};
-static float N126[3] = {0.000000 ,1.000000 ,0.000000};
-static float N127[3] = {0.000000 ,1.000000 ,0.000000};
-static float N128[3] = {0.000000 ,1.000000 ,0.000000};
-static float N129[3] = {0.963250 ,0.004839 ,0.268565};
-static float N130[3] = {0.963250 ,0.004839 ,0.268565};
-static float N131[3] = {0.963250 ,0.004839 ,0.268565};
-static float N132[3] = {0.000000 ,1.000000 ,0.000000};
-static float N133[3] = {0.000000 ,1.000000 ,0.000000};
-static float N134[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float P001[3] = {5.68, -300.95, 1324.70};
-static float P002[3] = {338.69, -219.63, 9677.03};
-static float P003[3] = {12.18, 474.59, 9138.14};
-#if 0
-static float P004[3] = {-7.49, -388.91, 10896.74};
-#endif
-static float P005[3] = {487.51, 198.05, 9350.78};
-static float P006[3] = {-457.61, 68.74, 9427.85};
-static float P007[3] = {156.52, -266.72, 10311.68};
-static float P008[3] = {-185.56, -266.51, 10310.47};
-static float P009[3] = {124.39, -261.46, 1942.34};
-static float P010[3] = {-130.05, -261.46, 1946.03};
-static float P011[3] = {141.07, -320.11, 1239.38};
-static float P012[3] = {156.48, -360.12, 2073.41};
-static float P013[3] = {162.00, -175.88, 2064.44};
-static float P014[3] = {88.16, -87.72, 2064.02};
-static float P015[3] = {-65.21, -96.13, 2064.02};
-static float P016[3] = {-156.48, -180.96, 2064.44};
-static float P017[3] = {-162.00, -368.93, 2082.39};
-static float P018[3] = {-88.16, -439.22, 2082.39};
-static float P019[3] = {65.21, -440.32, 2083.39};
-static float P020[3] = {246.87, -356.02, 2576.95};
-static float P021[3] = {253.17, -111.15, 2567.15};
-static float P022[3] = {132.34, 51.41, 2559.84};
-static float P023[3] = {-97.88, 40.44, 2567.15};
-static float P024[3] = {-222.97, -117.49, 2567.15};
-static float P025[3] = {-252.22, -371.53, 2569.92};
-static float P026[3] = {-108.44, -518.19, 2586.75};
-static float P027[3] = {97.88, -524.79, 2586.75};
-static float P028[3] = {370.03, -421.19, 3419.70};
-static float P029[3] = {351.15, -16.98, 3423.17};
-static float P030[3] = {200.66, 248.46, 3430.37};
-static float P031[3] = {-148.42, 235.02, 3417.91};
-static float P032[3] = {-360.21, -30.27, 3416.84};
-static float P033[3] = {-357.90, -414.89, 3407.04};
-static float P034[3] = {-148.88, -631.35, 3409.90};
-static float P035[3] = {156.38, -632.59, 3419.70};
-static float P036[3] = {462.61, -469.21, 4431.51};
-static float P037[3] = {466.60, 102.25, 4434.98};
-static float P038[3] = {243.05, 474.34, 4562.02};
-static float P039[3] = {-191.23, 474.40, 4554.42};
-static float P040[3] = {-476.12, 111.05, 4451.11};
-static float P041[3] = {-473.36, -470.74, 4444.78};
-static float P042[3] = {-266.95, -748.41, 4447.78};
-static float P043[3] = {211.14, -749.91, 4429.73};
-static float P044[3] = {680.57, -370.27, 5943.46};
-static float P045[3] = {834.01, 363.09, 6360.63};
-static float P046[3] = {371.29, 804.51, 6486.26};
-static float P047[3] = {-291.43, 797.22, 6494.28};
-static float P048[3] = {-784.13, 370.75, 6378.01};
-static float P049[3] = {-743.29, -325.82, 5943.46};
-static float P050[3] = {-383.24, -804.77, 5943.46};
-static float P051[3] = {283.47, -846.09, 5943.46};
-static float iP001[3] = {5.68, -300.95, 1324.70};
-#if 0
-static float iP002[3] = {338.69, -219.63, 9677.03};
-static float iP003[3] = {12.18, 624.93, 8956.39};
-static float iP004[3] = {-7.49, -388.91, 10896.74};
-static float iP005[3] = {487.51, 198.05, 9350.78};
-static float iP006[3] = {-457.61, 199.04, 9353.01};
-static float iP007[3] = {156.52, -266.72, 10311.68};
-static float iP008[3] = {-185.56, -266.51, 10310.47};
-#endif
-static float iP009[3] = {124.39, -261.46, 1942.34};
-static float iP010[3] = {-130.05, -261.46, 1946.03};
-static float iP011[3] = {141.07, -320.11, 1239.38};
-static float iP012[3] = {156.48, -360.12, 2073.41};
-static float iP013[3] = {162.00, -175.88, 2064.44};
-static float iP014[3] = {88.16, -87.72, 2064.02};
-static float iP015[3] = {-65.21, -96.13, 2064.02};
-static float iP016[3] = {-156.48, -180.96, 2064.44};
-static float iP017[3] = {-162.00, -368.93, 2082.39};
-static float iP018[3] = {-88.16, -439.22, 2082.39};
-static float iP019[3] = {65.21, -440.32, 2083.39};
-static float iP020[3] = {246.87, -356.02, 2576.95};
-static float iP021[3] = {253.17, -111.15, 2567.15};
-static float iP022[3] = {132.34, 51.41, 2559.84};
-static float iP023[3] = {-97.88, 40.44, 2567.15};
-static float iP024[3] = {-222.97, -117.49, 2567.15};
-static float iP025[3] = {-252.22, -371.53, 2569.92};
-static float iP026[3] = {-108.44, -518.19, 2586.75};
-static float iP027[3] = {97.88, -524.79, 2586.75};
-static float iP028[3] = {370.03, -421.19, 3419.70};
-static float iP029[3] = {351.15, -16.98, 3423.17};
-static float iP030[3] = {200.66, 248.46, 3430.37};
-static float iP031[3] = {-148.42, 235.02, 3417.91};
-static float iP032[3] = {-360.21, -30.27, 3416.84};
-static float iP033[3] = {-357.90, -414.89, 3407.04};
-static float iP034[3] = {-148.88, -631.35, 3409.90};
-static float iP035[3] = {156.38, -632.59, 3419.70};
-static float iP036[3] = {462.61, -469.21, 4431.51};
-static float iP037[3] = {466.60, 102.25, 4434.98};
-static float iP038[3] = {243.05, 474.34, 4562.02};
-static float iP039[3] = {-191.23, 474.40, 4554.42};
-static float iP040[3] = {-476.12, 111.05, 4451.11};
-static float iP041[3] = {-473.36, -470.74, 4444.78};
-static float iP042[3] = {-266.95, -748.41, 4447.78};
-static float iP043[3] = {211.14, -749.91, 4429.73};
-static float iP044[3] = {680.57, -370.27, 5943.46};
-static float iP045[3] = {834.01, 363.09, 6360.63};
-static float iP046[3] = {371.29, 804.51, 6486.26};
-static float iP047[3] = {-291.43, 797.22, 6494.28};
-static float iP048[3] = {-784.13, 370.75, 6378.01};
-static float iP049[3] = {-743.29, -325.82, 5943.46};
-static float iP050[3] = {-383.24, -804.77, 5943.46};
-static float iP051[3] = {283.47, -846.09, 5943.46};
-static float P052[3] = {599.09, -300.15, 7894.03};
-static float P053[3] = {735.48, 306.26, 7911.92};
-static float P054[3] = {246.22, 558.53, 8460.50};
-static float P055[3] = {-230.41, 559.84, 8473.23};
-static float P056[3] = {-698.66, 320.83, 7902.59};
-static float P057[3] = {-643.29, -299.16, 7902.59};
-static float P058[3] = {-341.47, -719.30, 7902.59};
-static float P059[3] = {252.57, -756.12, 7902.59};
-static float P060[3] = {458.39, -265.31, 9355.44};
-#if 0
-static float P061[3] = {433.38, -161.90, 9503.03};
-#endif
-static float P062[3] = {224.04, 338.75, 9450.30};
-static float P063[3] = {-165.71, 341.04, 9462.35};
-static float P064[3] = {-298.11, 110.13, 10180.37};
-static float P065[3] = {-473.99, -219.71, 9355.44};
-static float P066[3] = {-211.97, -479.87, 9355.44};
-static float P067[3] = {192.86, -491.45, 9348.73};
-static float P068[3] = {-136.29, -319.84, 1228.73};
-static float P069[3] = {1111.17, -314.14, 1314.19};
-static float P070[3] = {-1167.34, -321.61, 1319.45};
-static float P071[3] = {1404.86, -306.66, 1235.45};
-static float P072[3] = {-1409.73, -314.14, 1247.66};
-static float P073[3] = {1254.01, -296.87, 1544.58};
-static float P074[3] = {-1262.09, -291.70, 1504.26};
-static float P075[3] = {965.71, -269.26, 1742.65};
-static float P076[3] = {-900.97, -276.74, 1726.07};
-static float iP068[3] = {-136.29, -319.84, 1228.73};
-static float iP069[3] = {1111.17, -314.14, 1314.19};
-static float iP070[3] = {-1167.34, -321.61, 1319.45};
-static float iP071[3] = {1404.86, -306.66, 1235.45};
-static float iP072[3] = {-1409.73, -314.14, 1247.66};
-static float iP073[3] = {1254.01, -296.87, 1544.58};
-static float iP074[3] = {-1262.09, -291.70, 1504.26};
-static float iP075[3] = {965.71, -269.26, 1742.65};
-static float iP076[3] = {-900.97, -276.74, 1726.07};
-static float P077[3] = {1058.00, -448.81, 8194.66};
-static float P078[3] = {-1016.51, -456.43, 8190.62};
-static float P079[3] = {-1515.96, -676.45, 7754.93};
-static float P080[3] = {1856.75, -830.34, 7296.56};
-static float P081[3] = {1472.16, -497.38, 7399.68};
-static float P082[3] = {-1775.26, -829.51, 7298.46};
-static float P083[3] = {911.09, -252.51, 7510.99};
-static float P084[3] = {-1451.94, -495.62, 7384.30};
-static float P085[3] = {1598.75, -669.26, 7769.90};
-static float P086[3] = {-836.53, -250.08, 7463.25};
-static float P087[3] = {722.87, -158.18, 8006.41};
-static float P088[3] = {-688.86, -162.28, 7993.89};
-static float P089[3] = {-626.92, -185.30, 8364.98};
-static float P090[3] = {647.72, -189.46, 8354.99};
-static float P091[3] = {0.00, 835.01, 5555.62};
-static float P092[3] = {0.00, 1350.18, 5220.86};
-static float P093[3] = {0.00, 1422.94, 5285.27};
-static float P094[3] = {0.00, 1296.75, 5650.19};
-static float P095[3] = {0.00, 795.63, 6493.88};
-static float iP091[3] = {0.00, 835.01, 5555.62};
-static float iP092[3] = {0.00, 1350.18, 5220.86};
-static float iP093[3] = {0.00, 1422.94, 5285.27};
-static float iP094[3] = {0.00, 1296.75, 5650.19};
-static float iP095[3] = {0.00, 795.63, 6493.88};
-#if 0
-static float P096[3] = {-447.38, -165.99, 9499.60};
-#endif
-static float P097[3] = {-194.91, -357.14, 10313.32};
-static float P098[3] = {135.35, -357.66, 10307.94};
-static float iP097[3] = {-194.91, -357.14, 10313.32};
-static float iP098[3] = {135.35, -357.66, 10307.94};
-static float P099[3] = {-380.53, -221.14, 9677.98};
-static float P100[3] = {0.00, 412.99, 9629.33};
-#if 0
-static float P101[3] = {5.70, 567.00, 7862.98};
-#endif
-static float P102[3] = {59.51, -412.55, 10677.58};
-static float iP102[3] = {59.51, -412.55, 10677.58};
-static float P103[3] = {6.50, 484.74, 9009.94};
-#if 0
-static float P104[3] = {-9.86, 567.62, 7858.65};
-#endif
-static float P105[3] = {-41.86, 476.51, 9078.17};
-#if 0
-static float P106[3] = {22.75, 568.13, 7782.83};
-static float P107[3] = {58.93, 568.42, 7775.94};
-#endif
-static float P108[3] = {49.20, 476.83, 9078.24};
-#if 0
-static float P109[3] = {99.21, 566.00, 7858.65};
-#endif
-static float P110[3] = {-187.62, -410.04, 10674.12};
-static float iP110[3] = {-187.62, -410.04, 10674.12};
-static float P111[3] = {-184.25, -318.70, 10723.88};
-static float iP111[3] = {-184.25, -318.70, 10723.88};
-static float P112[3] = {-179.61, -142.81, 10670.26};
-static float P113[3] = {57.43, -147.94, 10675.26};
-static float P114[3] = {54.06, -218.90, 10712.44};
-static float P115[3] = {-186.35, -212.09, 10713.76};
-static float P116[3] = {205.90, -84.61, 10275.97};
-static float P117[3] = {-230.96, -83.26, 10280.09};
-static float iP118[3] = {216.78, -509.17, 10098.94};
-static float iP119[3] = {-313.21, -510.79, 10102.62};
-static float P118[3] = {216.78, -509.17, 10098.94};
-static float P119[3] = {-313.21, -510.79, 10102.62};
-static float P120[3] = {217.95, 96.34, 10161.62};
-static float P121[3] = {71.99, -319.74, 10717.70};
-static float iP121[3] = {71.99, -319.74, 10717.70};
-static float P122[3] = {0.00, 602.74, 5375.84};
-static float iP122[3] = {0.00, 602.74, 5375.84};
-static float P123[3] = {-448.94, -203.14, 9499.60};
-static float P124[3] = {-442.64, -185.20, 9528.07};
-static float P125[3] = {-441.07, -148.05, 9528.07};
-static float P126[3] = {-443.43, -128.84, 9499.60};
-static float P127[3] = {-456.87, -146.78, 9466.67};
-static float P128[3] = {-453.68, -183.93, 9466.67};
-static float P129[3] = {428.43, -124.08, 9503.03};
-static float P130[3] = {419.73, -142.14, 9534.56};
-static float P131[3] = {419.92, -179.96, 9534.56};
-static float P132[3] = {431.20, -199.73, 9505.26};
-static float P133[3] = {442.28, -181.67, 9475.96};
-static float P134[3] = {442.08, -143.84, 9475.96};
-/* *INDENT-ON* */
-
-
-
-static void
-Dolphin001(GLenum cap)
-{
-       glNormal3fv(N071);
-       glBegin(cap);
-       glVertex3fv(P001);
-       glVertex3fv(P068);
-       glVertex3fv(P010);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P068);
-       glVertex3fv(P076);
-       glVertex3fv(P010);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P068);
-       glVertex3fv(P070);
-       glVertex3fv(P076);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P076);
-       glVertex3fv(P070);
-       glVertex3fv(P074);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P070);
-       glVertex3fv(P072);
-       glVertex3fv(P074);
-       glEnd();
-       glNormal3fv(N119);
-       glBegin(cap);
-       glVertex3fv(P072);
-       glVertex3fv(P070);
-       glVertex3fv(P074);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P074);
-       glVertex3fv(P070);
-       glVertex3fv(P076);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P070);
-       glVertex3fv(P068);
-       glVertex3fv(P076);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P076);
-       glVertex3fv(P068);
-       glVertex3fv(P010);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P068);
-       glVertex3fv(P001);
-       glVertex3fv(P010);
-       glEnd();
-}
-
-static void
-Dolphin002(GLenum cap)
-{
-       glNormal3fv(N071);
-       glBegin(cap);
-       glVertex3fv(P011);
-       glVertex3fv(P001);
-       glVertex3fv(P009);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P075);
-       glVertex3fv(P011);
-       glVertex3fv(P009);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P069);
-       glVertex3fv(P011);
-       glVertex3fv(P075);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P069);
-       glVertex3fv(P075);
-       glVertex3fv(P073);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P071);
-       glVertex3fv(P069);
-       glVertex3fv(P073);
-       glEnd();
-       glNormal3fv(N119);
-       glBegin(cap);
-       glVertex3fv(P001);
-       glVertex3fv(P011);
-       glVertex3fv(P009);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P009);
-       glVertex3fv(P011);
-       glVertex3fv(P075);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P011);
-       glVertex3fv(P069);
-       glVertex3fv(P075);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P069);
-       glVertex3fv(P073);
-       glVertex3fv(P075);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P069);
-       glVertex3fv(P071);
-       glVertex3fv(P073);
-       glEnd();
-}
-
-static void
-Dolphin003(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glEnd();
-}
-
-static void
-Dolphin004(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glEnd();
-}
-
-static void
-Dolphin005(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glEnd();
-}
-
-static void
-Dolphin006(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N092);
-       glVertex3fv(P092);
-       glNormal3fv(N093);
-       glVertex3fv(P093);
-       glNormal3fv(N094);
-       glVertex3fv(P094);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N093);
-       glVertex3fv(P093);
-       glNormal3fv(N092);
-       glVertex3fv(P092);
-       glNormal3fv(N094);
-       glVertex3fv(P094);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N092);
-       glVertex3fv(P092);
-       glNormal3fv(N091);
-       glVertex3fv(P091);
-       glNormal3fv(N095);
-       glVertex3fv(P095);
-       glNormal3fv(N094);
-       glVertex3fv(P094);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N091);
-       glVertex3fv(P091);
-       glNormal3fv(N092);
-       glVertex3fv(P092);
-       glNormal3fv(N094);
-       glVertex3fv(P094);
-       glNormal3fv(N095);
-       glVertex3fv(P095);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N122);
-       glVertex3fv(P122);
-       glNormal3fv(N095);
-       glVertex3fv(P095);
-       glNormal3fv(N091);
-       glVertex3fv(P091);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N122);
-       glVertex3fv(P122);
-       glNormal3fv(N091);
-       glVertex3fv(P091);
-       glNormal3fv(N095);
-       glVertex3fv(P095);
-       glEnd();
-}
-
-static void
-Dolphin007(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glEnd();
-}
-
-static void
-Dolphin008(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glEnd();
-}
-
-static void
-Dolphin009(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glEnd();
-}
-
-static void
-Dolphin010(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N080);
-       glVertex3fv(P080);
-       glNormal3fv(N081);
-       glVertex3fv(P081);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N081);
-       glVertex3fv(P081);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N087);
-       glVertex3fv(P087);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glNormal3fv(N087);
-       glVertex3fv(P087);
-       glNormal3fv(N090);
-       glVertex3fv(P090);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N081);
-       glVertex3fv(P081);
-       glNormal3fv(N080);
-       glVertex3fv(P080);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N081);
-       glVertex3fv(P081);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N087);
-       glVertex3fv(P087);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N087);
-       glVertex3fv(P087);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glNormal3fv(N090);
-       glVertex3fv(P090);
-       glEnd();
-}
-
-static void
-Dolphin011(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N082);
-       glVertex3fv(P082);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N088);
-       glVertex3fv(P088);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glNormal3fv(N088);
-       glVertex3fv(P088);
-       glNormal3fv(N089);
-       glVertex3fv(P089);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N088);
-       glVertex3fv(P088);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N089);
-       glVertex3fv(P089);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N089);
-       glVertex3fv(P089);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N082);
-       glVertex3fv(P082);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glEnd();
-}
-
-static void
-Dolphin012(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glEnd();
-}
-
-static void
-Dolphin013(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N116);
-       glVertex3fv(P116);
-       glNormal3fv(N117);
-       glVertex3fv(P117);
-       glNormal3fv(N112);
-       glVertex3fv(P112);
-       glNormal3fv(N113);
-       glVertex3fv(P113);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N114);
-       glVertex3fv(P114);
-       glNormal3fv(N113);
-       glVertex3fv(P113);
-       glNormal3fv(N112);
-       glVertex3fv(P112);
-       glNormal3fv(N115);
-       glVertex3fv(P115);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N114);
-       glVertex3fv(P114);
-       glNormal3fv(N116);
-       glVertex3fv(P116);
-       glNormal3fv(N113);
-       glVertex3fv(P113);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N114);
-       glVertex3fv(P114);
-       glNormal3fv(N007);
-       glVertex3fv(P007);
-       glNormal3fv(N116);
-       glVertex3fv(P116);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N007);
-       glVertex3fv(P007);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N116);
-       glVertex3fv(P116);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P002);
-       glVertex3fv(P007);
-       glVertex3fv(P008);
-       glVertex3fv(P099);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P007);
-       glVertex3fv(P114);
-       glVertex3fv(P115);
-       glVertex3fv(P008);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N117);
-       glVertex3fv(P117);
-       glNormal3fv(N099);
-       glVertex3fv(P099);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N117);
-       glVertex3fv(P117);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glNormal3fv(N112);
-       glVertex3fv(P112);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N112);
-       glVertex3fv(P112);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glNormal3fv(N115);
-       glVertex3fv(P115);
-       glEnd();
-}
-
-static void
-Dolphin014(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N111);
-       glVertex3fv(P111);
-       glNormal3fv(N110);
-       glVertex3fv(P110);
-       glNormal3fv(N102);
-       glVertex3fv(P102);
-       glNormal3fv(N121);
-       glVertex3fv(P121);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N111);
-       glVertex3fv(P111);
-       glNormal3fv(N097);
-       glVertex3fv(P097);
-       glNormal3fv(N110);
-       glVertex3fv(P110);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N097);
-       glVertex3fv(P097);
-       glNormal3fv(N119);
-       glVertex3fv(P119);
-       glNormal3fv(N110);
-       glVertex3fv(P110);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N097);
-       glVertex3fv(P097);
-       glNormal3fv(N099);
-       glVertex3fv(P099);
-       glNormal3fv(N119);
-       glVertex3fv(P119);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N099);
-       glVertex3fv(P099);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N119);
-       glVertex3fv(P119);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N119);
-       glVertex3fv(P119);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P098);
-       glVertex3fv(P097);
-       glVertex3fv(P111);
-       glVertex3fv(P121);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P002);
-       glVertex3fv(P099);
-       glVertex3fv(P097);
-       glVertex3fv(P098);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N110);
-       glVertex3fv(P110);
-       glNormal3fv(N119);
-       glVertex3fv(P119);
-       glNormal3fv(N118);
-       glVertex3fv(P118);
-       glNormal3fv(N102);
-       glVertex3fv(P102);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N119);
-       glVertex3fv(P119);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glNormal3fv(N118);
-       glVertex3fv(P118);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N118);
-       glVertex3fv(P118);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N118);
-       glVertex3fv(P118);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N098);
-       glVertex3fv(P098);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N118);
-       glVertex3fv(P118);
-       glNormal3fv(N098);
-       glVertex3fv(P098);
-       glNormal3fv(N102);
-       glVertex3fv(P102);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N102);
-       glVertex3fv(P102);
-       glNormal3fv(N098);
-       glVertex3fv(P098);
-       glNormal3fv(N121);
-       glVertex3fv(P121);
-       glEnd();
-}
-
-static void
-Dolphin015(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N064);
-       glVertex3fv(P064);
-       glNormal3fv(N120);
-       glVertex3fv(P120);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N064);
-       glVertex3fv(P064);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N064);
-       glVertex3fv(P064);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N064);
-       glVertex3fv(P064);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N099);
-       glVertex3fv(P099);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N064);
-       glVertex3fv(P064);
-       glNormal3fv(N099);
-       glVertex3fv(P099);
-       glNormal3fv(N117);
-       glVertex3fv(P117);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N120);
-       glVertex3fv(P120);
-       glNormal3fv(N064);
-       glVertex3fv(P064);
-       glNormal3fv(N117);
-       glVertex3fv(P117);
-       glNormal3fv(N116);
-       glVertex3fv(P116);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N099);
-       glVertex3fv(P099);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N120);
-       glVertex3fv(P120);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N120);
-       glVertex3fv(P120);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N120);
-       glVertex3fv(P120);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N120);
-       glVertex3fv(P120);
-       glNormal3fv(N116);
-       glVertex3fv(P116);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glEnd();
-}
-
-static void
-Dolphin016(GLenum cap)
-{
-
-       glDisable(GL_DEPTH_TEST);
-       glBegin(cap);
-       glVertex3fv(P123);
-       glVertex3fv(P124);
-       glVertex3fv(P125);
-       glVertex3fv(P126);
-       glVertex3fv(P127);
-       glVertex3fv(P128);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P129);
-       glVertex3fv(P130);
-       glVertex3fv(P131);
-       glVertex3fv(P132);
-       glVertex3fv(P133);
-       glVertex3fv(P134);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P103);
-       glVertex3fv(P105);
-       glVertex3fv(P108);
-       glEnd();
-       glEnable(GL_DEPTH_TEST);
-}
-
-void
-DrawDolphin(fishRec * fish, int wire)
-{
-       float       seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
-       float       pitch, thrash, chomp;
-       GLenum      cap;
-
-       fish->htail = (int) (fish->htail - (int) (10.0 * fish->v)) % 360;
-
-       thrash = 70.0 * fish->v;
-
-       seg0 = 1.0 * thrash * sin((fish->htail) * RRAD);
-       seg3 = 1.0 * thrash * sin((fish->htail) * RRAD);
-       seg1 = 2.0 * thrash * sin((fish->htail + 4.0) * RRAD);
-       seg2 = 3.0 * thrash * sin((fish->htail + 6.0) * RRAD);
-       seg4 = 4.0 * thrash * sin((fish->htail + 10.0) * RRAD);
-       seg5 = 4.5 * thrash * sin((fish->htail + 15.0) * RRAD);
-       seg6 = 5.0 * thrash * sin((fish->htail + 20.0) * RRAD);
-       seg7 = 6.0 * thrash * sin((fish->htail + 30.0) * RRAD);
-
-       pitch = fish->v * sin((fish->htail + 180.0) * RRAD);
-
-       if (fish->v > 2.0) {
-               chomp = -(fish->v - 2.0) * 200.0;
-       }
-       chomp = 100.0;
-
-       P012[1] = iP012[1] + seg5;
-       P013[1] = iP013[1] + seg5;
-       P014[1] = iP014[1] + seg5;
-       P015[1] = iP015[1] + seg5;
-       P016[1] = iP016[1] + seg5;
-       P017[1] = iP017[1] + seg5;
-       P018[1] = iP018[1] + seg5;
-       P019[1] = iP019[1] + seg5;
-
-       P020[1] = iP020[1] + seg4;
-       P021[1] = iP021[1] + seg4;
-       P022[1] = iP022[1] + seg4;
-       P023[1] = iP023[1] + seg4;
-       P024[1] = iP024[1] + seg4;
-       P025[1] = iP025[1] + seg4;
-       P026[1] = iP026[1] + seg4;
-       P027[1] = iP027[1] + seg4;
-
-       P028[1] = iP028[1] + seg2;
-       P029[1] = iP029[1] + seg2;
-       P030[1] = iP030[1] + seg2;
-       P031[1] = iP031[1] + seg2;
-       P032[1] = iP032[1] + seg2;
-       P033[1] = iP033[1] + seg2;
-       P034[1] = iP034[1] + seg2;
-       P035[1] = iP035[1] + seg2;
-
-       P036[1] = iP036[1] + seg1;
-       P037[1] = iP037[1] + seg1;
-       P038[1] = iP038[1] + seg1;
-       P039[1] = iP039[1] + seg1;
-       P040[1] = iP040[1] + seg1;
-       P041[1] = iP041[1] + seg1;
-       P042[1] = iP042[1] + seg1;
-       P043[1] = iP043[1] + seg1;
-
-       P044[1] = iP044[1] + seg0;
-       P045[1] = iP045[1] + seg0;
-       P046[1] = iP046[1] + seg0;
-       P047[1] = iP047[1] + seg0;
-       P048[1] = iP048[1] + seg0;
-       P049[1] = iP049[1] + seg0;
-       P050[1] = iP050[1] + seg0;
-       P051[1] = iP051[1] + seg0;
-
-       P009[1] = iP009[1] + seg6;
-       P010[1] = iP010[1] + seg6;
-       P075[1] = iP075[1] + seg6;
-       P076[1] = iP076[1] + seg6;
-
-       P001[1] = iP001[1] + seg7;
-       P011[1] = iP011[1] + seg7;
-       P068[1] = iP068[1] + seg7;
-       P069[1] = iP069[1] + seg7;
-       P070[1] = iP070[1] + seg7;
-       P071[1] = iP071[1] + seg7;
-       P072[1] = iP072[1] + seg7;
-       P073[1] = iP073[1] + seg7;
-       P074[1] = iP074[1] + seg7;
-
-       P091[1] = iP091[1] + seg3;
-       P092[1] = iP092[1] + seg3;
-       P093[1] = iP093[1] + seg3;
-       P094[1] = iP094[1] + seg3;
-       P095[1] = iP095[1] + seg3;
-       P122[1] = iP122[1] + seg3 * 1.5;
-
-       P097[1] = iP097[1] + chomp;
-       P098[1] = iP098[1] + chomp;
-       P102[1] = iP102[1] + chomp;
-       P110[1] = iP110[1] + chomp;
-       P111[1] = iP111[1] + chomp;
-       P121[1] = iP121[1] + chomp;
-       P118[1] = iP118[1] + chomp;
-       P119[1] = iP119[1] + chomp;
-
-       glPushMatrix();
-
-       glRotatef(pitch, 1.0, 0.0, 0.0);
-
-       glTranslatef(0.0, 0.0, 7000.0);
-
-       glRotatef(180.0, 0.0, 1.0, 0.0);
-
-       glEnable(GL_CULL_FACE);
-       cap = wire ? GL_LINE_LOOP : GL_POLYGON;
-       Dolphin014(cap);
-       Dolphin010(cap);
-       Dolphin009(cap);
-       Dolphin012(cap);
-       Dolphin013(cap);
-       Dolphin006(cap);
-       Dolphin002(cap);
-       Dolphin001(cap);
-       Dolphin003(cap);
-       Dolphin015(cap);
-       Dolphin004(cap);
-       Dolphin005(cap);
-       Dolphin007(cap);
-       Dolphin008(cap);
-       Dolphin011(cap);
-       Dolphin016(cap);
-       glDisable(GL_CULL_FACE);
-
-       glPopMatrix();
-}
-#endif
diff --git a/hacks/glx/e_textures.h b/hacks/glx/e_textures.h
deleted file mode 100644 (file)
index 7f9457e..0000000
+++ /dev/null
@@ -1,1478 +0,0 @@
-static unsigned char WoodTextureWidth = 199;
-static unsigned char WoodTextureHeight = 37;
-static unsigned char WoodTextureData[] =
-{
-       84, 30, 12, 84, 26, 12, 108, 42, 28, 100, 38, 28, 108, 42, 28,
-       108, 46, 28, 100, 38, 28, 108, 46, 28, 108, 42, 28, 108, 42, 20,
-       108, 42, 28, 108, 38, 20, 108, 42, 20, 108, 42, 28, 116, 42, 28,
-       108, 42, 20, 108, 46, 28, 100, 34, 12, 108, 42, 20, 108, 42, 20,
-       108, 42, 20, 108, 38, 20, 100, 38, 20, 100, 38, 20, 108, 42, 20,
-       108, 42, 20, 108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20,
-       108, 42, 20, 108, 42, 20, 108, 42, 28, 108, 42, 20, 108, 42, 20,
-       100, 38, 20, 100, 38, 20, 100, 38, 20, 108, 38, 20, 116, 50, 28,
-       108, 42, 28, 108, 42, 20, 100, 38, 20, 108, 42, 20, 108, 42, 20,
-       108, 46, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 100, 38, 20,
-       108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20, 100, 38, 20,
-       108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 42, 20, 108, 42, 20,
-       108, 42, 28, 108, 42, 20, 100, 38, 20, 108, 42, 20, 100, 38, 20,
-       100, 34, 12, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 42, 20,
-       108, 42, 20, 108, 42, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20,
-       100, 34, 12, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 42, 20,
-       100, 38, 20, 100, 34, 12, 100, 34, 12, 100, 38, 20, 108, 38, 20,
-       100, 38, 20, 108, 38, 20, 108, 42, 20, 100, 38, 20, 108, 42, 20,
-       108, 42, 28, 108, 46, 20, 108, 38, 20, 108, 42, 20, 108, 46, 28,
-       108, 46, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 100, 38, 20,
-       108, 42, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 38, 20,
-       108, 42, 20, 108, 46, 28, 116, 50, 28, 116, 54, 36, 116, 54, 36,
-       116, 54, 28, 108, 46, 28, 108, 42, 20, 108, 42, 28, 108, 42, 20,
-       108, 42, 20, 108, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28,
-       116, 46, 28, 108, 42, 28, 116, 50, 36, 116, 50, 36, 100, 38, 20,
-       108, 42, 28, 108, 38, 20, 100, 38, 20, 108, 38, 20, 108, 42, 28,
-       108, 46, 28, 116, 46, 28, 108, 42, 28, 108, 42, 28, 108, 42, 20,
-       108, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28,
-       108, 42, 28, 108, 42, 20, 100, 38, 20, 116, 50, 28, 108, 46, 28,
-       108, 42, 20, 108, 42, 20, 108, 46, 28, 116, 46, 28, 108, 46, 28,
-       108, 46, 28, 108, 46, 20, 108, 46, 28, 116, 46, 28, 108, 46, 28,
-       116, 50, 28, 108, 46, 28, 108, 46, 28, 108, 42, 20, 116, 46, 28,
-       108, 46, 28, 108, 42, 20, 108, 42, 28, 108, 46, 28, 116, 50, 28,
-       116, 50, 28, 116, 50, 36, 124, 54, 36, 116, 54, 36, 116, 54, 28,
-       116, 50, 28, 116, 50, 28, 108, 46, 28, 116, 46, 28, 108, 46, 28,
-       116, 50, 28, 116, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28,
-       116, 50, 28, 108, 46, 28, 108, 46, 20, 124, 50, 36, 116, 54, 28,
-       124, 54, 28, 116, 54, 28, 116, 54, 28, 116, 54, 28, 124, 54, 36,
-       124, 58, 36, 124, 50, 36, 116, 46, 28, 116, 46, 28, 116, 42, 28,
-       116, 50, 36, 124, 66, 44, 108, 58, 36, 84, 30, 12, 100, 42, 20,
-       116, 54, 36, 140, 82, 68, 148, 86, 68, 148, 86, 68, 156, 90, 76,
-       148, 86, 68, 156, 86, 76, 156, 86, 68, 148, 86, 68, 156, 86, 68,
-       156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 90, 68, 156, 86, 68,
-       156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 102, 84, 164, 102, 84,
-       164, 98, 76, 156, 94, 68, 164, 94, 76, 156, 94, 76, 164, 98, 84,
-       164, 98, 76, 164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76,
-       164, 102, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84, 164, 98, 76,
-       164, 94, 68, 164, 94, 68, 164, 98, 76, 172, 106, 84, 164, 98, 76,
-       164, 98, 76, 164, 94, 68, 164, 94, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 94, 68, 164, 98, 76, 164, 98, 76, 164, 102, 76,
-       164, 94, 76, 156, 94, 68, 172, 102, 84, 172, 106, 84, 172, 102, 84,
-       164, 98, 76, 164, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 102, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76,
-       164, 94, 76, 156, 94, 68, 164, 98, 76, 164, 102, 76, 164, 98, 76,
-       164, 98, 76, 164, 94, 76, 156, 94, 68, 164, 94, 76, 164, 102, 76,
-       172, 106, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 76, 172, 102, 84,
-       172, 106, 84, 172, 110, 84, 180, 110, 92, 172, 110, 84, 172, 110, 84,
-     180, 114, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
-       180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 114, 92,
-   188, 118, 100, 188, 118, 100, 180, 118, 100, 188, 122, 108, 188, 126, 108,
-   188, 118, 100, 196, 130, 108, 204, 134, 116, 188, 126, 108, 196, 122, 108,
-    180, 118, 100, 180, 110, 92, 180, 114, 100, 180, 118, 100, 188, 118, 100,
-   188, 122, 108, 188, 118, 100, 188, 118, 100, 180, 118, 100, 188, 118, 100,
-     180, 118, 100, 180, 118, 100, 180, 118, 100, 180, 114, 92, 180, 114, 92,
-       172, 110, 92, 172, 106, 84, 180, 114, 92, 172, 106, 92, 172, 102, 84,
-       172, 106, 84, 172, 110, 92, 180, 110, 84, 172, 110, 92, 172, 106, 84,
-       172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84,
-       164, 102, 84, 164, 102, 76, 172, 106, 84, 172, 110, 92, 180, 110, 92,
-       172, 110, 84, 172, 114, 92, 180, 114, 92, 180, 110, 92, 172, 110, 92,
-       172, 106, 92, 172, 106, 84, 172, 106, 84, 164, 102, 84, 180, 114, 100,
-      180, 114, 92, 180, 118, 100, 180, 118, 100, 180, 114, 92, 172, 110, 92,
-       172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
-       172, 110, 92, 172, 110, 84, 172, 110, 92, 180, 114, 92, 180, 118, 100,
-   196, 126, 100, 196, 122, 108, 196, 126, 108, 196, 130, 116, 196, 134, 116,
-       204, 142, 124, 164, 106, 84, 100, 42, 20, 84, 26, 4, 132, 78, 68,
-   188, 122, 108, 188, 122, 108, 188, 126, 116, 196, 134, 116, 188, 122, 108,
-   188, 126, 108, 188, 126, 108, 188, 122, 108, 196, 126, 108, 196, 130, 108,
-   188, 126, 108, 188, 122, 100, 196, 126, 108, 196, 126, 108, 188, 126, 108,
-   196, 130, 108, 196, 130, 108, 196, 134, 116, 196, 130, 108, 196, 130, 108,
-   188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 130, 108, 188, 126, 108,
-   188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 130, 108, 196, 130, 108,
-   196, 134, 116, 204, 142, 116, 204, 134, 116, 196, 130, 108, 196, 130, 108,
-   188, 126, 108, 196, 126, 100, 196, 134, 108, 196, 130, 108, 188, 126, 100,
-   188, 122, 100, 188, 126, 108, 196, 126, 100, 188, 126, 108, 196, 126, 100,
-   188, 126, 100, 196, 130, 108, 204, 134, 108, 196, 134, 116, 196, 134, 108,
-   196, 130, 108, 196, 126, 108, 196, 130, 108, 196, 130, 108, 196, 130, 108,
-   188, 126, 108, 196, 126, 108, 196, 134, 108, 196, 130, 108, 196, 130, 108,
-   188, 122, 100, 196, 130, 108, 196, 130, 108, 196, 134, 108, 196, 130, 108,
-   188, 126, 100, 196, 130, 108, 196, 134, 108, 204, 134, 116, 204, 138, 116,
-   204, 138, 116, 204, 134, 116, 196, 130, 108, 196, 130, 108, 196, 134, 108,
-   204, 134, 116, 196, 134, 116, 196, 134, 108, 196, 130, 108, 196, 130, 108,
-   204, 134, 116, 204, 138, 116, 204, 138, 116, 196, 130, 108, 196, 130, 108,
-    188, 122, 100, 180, 118, 92, 188, 118, 100, 196, 130, 108, 196, 130, 108,
-   188, 126, 100, 188, 122, 100, 188, 122, 100, 204, 134, 108, 196, 134, 116,
-   204, 134, 116, 196, 134, 108, 196, 130, 108, 204, 134, 108, 204, 138, 116,
-   204, 138, 116, 212, 142, 124, 204, 142, 116, 204, 134, 116, 204, 138, 116,
-   204, 138, 116, 204, 138, 116, 204, 134, 108, 188, 126, 108, 196, 130, 108,
-   196, 126, 100, 188, 122, 100, 196, 130, 108, 204, 138, 116, 212, 146, 124,
-   204, 142, 116, 204, 138, 116, 212, 146, 124, 212, 142, 124, 204, 138, 124,
-   204, 138, 124, 204, 138, 124, 204, 138, 116, 212, 142, 124, 204, 138, 124,
-   196, 130, 116, 204, 134, 116, 204, 138, 116, 204, 138, 124, 204, 138, 116,
-   204, 138, 124, 204, 134, 116, 204, 138, 124, 212, 142, 124, 204, 138, 116,
-   196, 134, 116, 196, 130, 108, 196, 134, 116, 204, 138, 116, 204, 142, 124,
-   212, 142, 124, 204, 138, 116, 204, 138, 116, 204, 138, 116, 204, 138, 116,
-   204, 138, 124, 204, 142, 124, 204, 142, 116, 204, 138, 124, 196, 134, 108,
-   196, 134, 116, 196, 134, 116, 196, 130, 116, 196, 130, 108, 188, 126, 108,
-   196, 126, 108, 188, 130, 108, 188, 126, 108, 188, 122, 100, 180, 118, 100,
-   188, 118, 100, 188, 126, 108, 196, 130, 108, 196, 126, 108, 188, 126, 108,
-   188, 122, 100, 188, 122, 108, 188, 126, 108, 196, 126, 108, 196, 130, 108,
-   188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 134, 108, 196, 134, 116,
-   196, 134, 108, 196, 130, 108, 196, 126, 108, 188, 122, 108, 188, 122, 100,
-   188, 122, 100, 196, 130, 108, 196, 130, 100, 196, 130, 108, 196, 130, 100,
-   188, 130, 108, 196, 130, 108, 196, 134, 108, 204, 138, 116, 204, 130, 108,
-   204, 134, 116, 204, 134, 116, 204, 134, 116, 204, 138, 124, 204, 146, 124,
-       156, 102, 84, 84, 26, 4, 84, 26, 4, 116, 58, 36, 164, 106, 92,
-       164, 102, 84, 164, 106, 92, 172, 110, 92, 156, 98, 84, 172, 102, 84,
-      172, 102, 84, 180, 110, 92, 180, 118, 100, 180, 118, 100, 180, 110, 92,
-       180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 106, 92,
-       172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 92, 172, 110, 92,
-       172, 106, 84, 172, 106, 84, 164, 102, 84, 164, 102, 84, 172, 102, 76,
-       164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84,
-       180, 110, 92, 172, 110, 84, 180, 110, 92, 172, 110, 84, 172, 106, 84,
-       172, 110, 84, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 102, 84,
-       172, 102, 76, 172, 102, 84, 172, 102, 84, 164, 102, 76, 164, 94, 76,
-       172, 102, 84, 172, 110, 92, 172, 110, 84, 172, 102, 84, 164, 98, 76,
-       172, 102, 76, 172, 106, 84, 172, 110, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 180, 114, 92, 180, 114, 92, 172, 110, 84, 172, 106, 84,
-       172, 102, 76, 172, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 84,
-       172, 106, 84, 180, 110, 92, 172, 110, 84, 180, 118, 92, 180, 114, 92,
-       180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 114, 92, 180, 118, 92,
-      188, 122, 100, 188, 118, 100, 180, 114, 92, 180, 118, 92, 180, 114, 92,
-       180, 118, 92, 188, 118, 100, 180, 118, 92, 180, 114, 92, 180, 118, 92,
-      180, 110, 84, 180, 110, 92, 180, 118, 92, 188, 122, 100, 188, 114, 100,
-     180, 114, 92, 180, 114, 92, 196, 126, 108, 188, 126, 100, 188, 122, 100,
-    188, 118, 100, 180, 118, 100, 180, 114, 92, 188, 118, 100, 188, 122, 100,
-       180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 114, 92, 188, 122, 100,
-      188, 126, 100, 188, 118, 100, 180, 114, 92, 172, 110, 84, 172, 110, 92,
-      180, 114, 92, 180, 114, 92, 180, 118, 92, 188, 118, 100, 188, 122, 100,
-       188, 122, 100, 180, 106, 92, 172, 110, 92, 172, 102, 84, 172, 102, 84,
-       164, 94, 76, 164, 94, 76, 164, 98, 76, 164, 102, 84, 172, 102, 84,
-       172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 92,
-       172, 106, 84, 172, 106, 92, 172, 110, 84, 164, 102, 84, 164, 98, 76,
-       164, 94, 76, 164, 98, 76, 172, 110, 92, 180, 114, 92, 180, 118, 100,
-   180, 118, 100, 188, 122, 100, 180, 122, 108, 188, 122, 100, 188, 122, 100,
-   188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 188, 126, 108,
-     188, 122, 100, 188, 122, 100, 180, 118, 100, 180, 114, 92, 180, 114, 92,
-       180, 118, 100, 180, 110, 92, 172, 110, 92, 172, 106, 84, 180, 110, 92,
-       180, 118, 92, 180, 118, 100, 180, 114, 92, 180, 110, 92, 172, 110, 84,
-       172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92,
-       180, 114, 92, 180, 118, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92,
-       172, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84,
-       180, 110, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92, 180, 118, 92,
-     180, 118, 92, 188, 118, 100, 188, 122, 100, 180, 114, 100, 180, 110, 92,
-       188, 114, 100, 180, 110, 92, 172, 110, 92, 180, 126, 108, 148, 98, 76,
-       84, 26, 4, 84, 26, 12, 108, 50, 36, 164, 102, 84, 164, 98, 84,
-       156, 94, 76, 164, 98, 84, 148, 86, 68, 156, 90, 76, 156, 94, 84,
-       164, 90, 76, 164, 98, 84, 172, 102, 84, 164, 94, 76, 156, 90, 68,
-       164, 94, 76, 164, 98, 84, 164, 94, 76, 164, 98, 76, 164, 98, 84,
-       164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       164, 102, 84, 164, 94, 68, 164, 94, 76, 156, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 84, 164, 102, 84, 172, 102, 84, 164, 98, 76,
-       164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84,
-       172, 110, 84, 172, 106, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76,
-       164, 102, 76, 164, 102, 76, 164, 98, 76, 164, 98, 76, 172, 106, 84,
-       180, 110, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 106, 84,
-       180, 114, 92, 172, 106, 84, 164, 102, 76, 164, 98, 76, 172, 106, 84,
-       180, 110, 92, 180, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84,
-       180, 114, 92, 188, 118, 100, 180, 114, 92, 172, 110, 84, 180, 114, 92,
-       180, 114, 92, 180, 114, 92, 172, 110, 92, 172, 106, 84, 164, 102, 76,
-       172, 102, 76, 164, 102, 84, 180, 110, 84, 180, 118, 92, 188, 118, 100,
-       188, 122, 100, 180, 118, 92, 180, 110, 92, 180, 110, 84, 172, 106, 92,
-     180, 114, 84, 180, 114, 100, 188, 122, 100, 188, 122, 100, 180, 114, 92,
-       172, 110, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 114, 92,
-       180, 118, 92, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 102, 76,
-       164, 102, 76, 172, 102, 84, 172, 110, 84, 180, 114, 92, 172, 110, 84,
-       172, 102, 84, 172, 106, 84, 180, 110, 84, 180, 118, 100, 188, 118, 92,
-       180, 110, 92, 172, 106, 84, 172, 106, 84, 180, 110, 92, 188, 118, 92,
-      180, 118, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100,
-     180, 114, 92, 188, 122, 100, 188, 126, 108, 188, 118, 100, 172, 110, 92,
-       172, 102, 84, 172, 106, 84, 180, 106, 92, 164, 98, 76, 172, 102, 84,
-       172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84,
-       172, 102, 84, 172, 106, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76,
-       172, 106, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100,
-   188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 188, 122, 100,
-    188, 122, 108, 196, 126, 108, 180, 118, 92, 188, 118, 100, 180, 118, 100,
-      180, 118, 100, 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 118, 100,
-       180, 110, 92, 172, 110, 84, 172, 106, 92, 172, 110, 92, 188, 118, 100,
-       180, 118, 100, 180, 114, 92, 172, 106, 84, 180, 110, 92, 180, 114, 92,
-       172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92, 172, 110, 92,
-       172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 100, 180, 110, 92,
-       172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 92, 172, 106, 84,
-      180, 110, 84, 180, 118, 92, 188, 122, 100, 180, 118, 100, 180, 118, 92,
-       180, 118, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92, 188, 118, 108,
-       188, 118, 100, 188, 122, 100, 188, 130, 108, 156, 102, 84, 84, 26, 12,
-       84, 30, 12, 108, 46, 28, 140, 82, 68, 156, 90, 76, 156, 94, 84,
-       156, 94, 84, 156, 94, 76, 164, 94, 76, 156, 90, 76, 164, 94, 76,
-       156, 94, 76, 156, 90, 68, 156, 90, 68, 164, 90, 76, 156, 90, 68,
-       148, 82, 60, 148, 78, 60, 164, 98, 76, 164, 94, 76, 156, 90, 68,
-       156, 90, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       156, 90, 68, 148, 86, 68, 156, 90, 68, 156, 90, 68, 156, 90, 76,
-       164, 94, 68, 156, 94, 76, 156, 94, 68, 156, 90, 68, 156, 90, 68,
-       172, 102, 76, 180, 114, 92, 188, 118, 92, 172, 106, 84, 180, 106, 84,
-       172, 106, 84, 164, 98, 76, 164, 94, 68, 164, 98, 76, 172, 102, 84,
-       172, 106, 84, 172, 102, 76, 164, 98, 76, 172, 106, 84, 180, 110, 92,
-       172, 110, 84, 172, 98, 76, 164, 98, 76, 172, 106, 84, 180, 118, 92,
-       180, 106, 84, 180, 106, 84, 172, 106, 84, 172, 110, 84, 180, 110, 92,
-       180, 110, 84, 172, 102, 76, 164, 98, 76, 164, 94, 68, 172, 106, 84,
-       180, 114, 92, 172, 106, 84, 164, 98, 76, 172, 98, 76, 172, 106, 84,
-       172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 84, 180, 110, 92,
-       180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 84, 188, 118, 92,
-       188, 114, 92, 172, 106, 84, 172, 102, 76, 172, 106, 84, 188, 118, 92,
-      188, 122, 100, 188, 118, 100, 188, 118, 92, 180, 110, 92, 180, 114, 84,
-       180, 114, 92, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 102, 76,
-       180, 106, 84, 180, 114, 84, 172, 102, 76, 164, 94, 76, 172, 106, 84,
-       180, 110, 84, 172, 106, 84, 172, 106, 84, 188, 122, 100, 188, 118, 92,
-     180, 118, 92, 188, 118, 100, 196, 122, 100, 188, 122, 100, 180, 118, 92,
-       180, 110, 84, 188, 114, 92, 172, 110, 84, 172, 106, 84, 180, 114, 92,
-       188, 114, 92, 180, 114, 92, 180, 114, 84, 180, 114, 92, 180, 110, 92,
-       180, 110, 92, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 110, 92,
-     188, 118, 100, 180, 118, 92, 180, 110, 92, 180, 114, 100, 180, 118, 100,
-       172, 106, 84, 164, 94, 76, 164, 98, 76, 172, 102, 76, 164, 102, 84,
-       164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 118, 92, 180, 118, 100,
-       180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 114, 100, 180, 118, 92,
-    180, 118, 100, 188, 122, 108, 188, 122, 100, 188, 118, 100, 180, 114, 92,
-       180, 114, 92, 172, 110, 92, 172, 110, 92, 172, 106, 84, 188, 122, 100,
-       180, 114, 100, 172, 106, 84, 172, 110, 84, 180, 114, 92, 180, 114, 92,
-       180, 110, 92, 172, 110, 92, 172, 106, 84, 172, 110, 92, 180, 114, 92,
-       180, 118, 100, 180, 114, 92, 172, 110, 92, 172, 110, 92, 180, 110, 92,
-       164, 106, 84, 172, 106, 84, 172, 110, 84, 172, 110, 92, 172, 110, 92,
-       180, 110, 84, 172, 110, 92, 172, 110, 84, 180, 110, 92, 180, 110, 92,
-       180, 114, 92, 180, 118, 92, 180, 118, 92, 180, 118, 100, 188, 118, 92,
-     188, 118, 100, 180, 110, 92, 180, 110, 92, 188, 118, 100, 188, 118, 100,
-       180, 118, 100, 180, 122, 108, 148, 90, 68, 84, 30, 12, 92, 34, 12,
-       116, 58, 44, 156, 90, 76, 156, 94, 76, 156, 94, 76, 156, 90, 76,
-       148, 86, 68, 156, 90, 76, 148, 86, 68, 156, 86, 68, 156, 86, 68,
-       156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 86, 68, 148, 78, 60,
-       140, 74, 52, 148, 82, 68, 148, 82, 60, 148, 86, 68, 156, 90, 68,
-       156, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76, 148, 86, 68,
-       156, 86, 68, 156, 90, 68, 156, 90, 76, 156, 94, 68, 156, 94, 76,
-       164, 94, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76,
-       172, 106, 84, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 102, 76,
-       172, 102, 84, 164, 94, 68, 164, 94, 76, 172, 102, 76, 180, 110, 84,
-       180, 110, 92, 164, 98, 76, 172, 102, 76, 172, 106, 84, 172, 102, 76,
-       164, 98, 76, 164, 98, 76, 172, 102, 76, 180, 110, 92, 180, 110, 92,
-       172, 110, 84, 172, 106, 84, 180, 106, 84, 180, 114, 84, 180, 110, 92,
-       172, 102, 84, 164, 98, 76, 156, 94, 68, 172, 106, 84, 188, 114, 92,
-       180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84,
-       172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 110, 92, 180, 114, 84,
-       172, 110, 84, 172, 106, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 90, 68, 164, 98, 76, 172, 102, 84, 172, 106, 76,
-       172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92,
-       188, 114, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 172, 106, 84,
-       180, 114, 92, 172, 106, 84, 164, 94, 68, 172, 106, 84, 180, 114, 92,
-     188, 118, 92, 196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
-       180, 118, 92, 188, 118, 100, 188, 118, 92, 180, 114, 92, 172, 106, 84,
-       180, 114, 92, 180, 106, 84, 172, 102, 76, 172, 102, 76, 172, 106, 84,
-       172, 102, 84, 172, 106, 84, 180, 110, 84, 172, 102, 84, 164, 102, 84,
-       172, 102, 84, 164, 94, 76, 156, 90, 68, 164, 94, 76, 180, 106, 92,
-       172, 102, 84, 164, 98, 84, 180, 110, 84, 180, 110, 92, 164, 98, 84,
-       164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 98, 76, 164, 102, 84,
-       164, 102, 84, 172, 102, 84, 164, 106, 84, 172, 106, 92, 172, 106, 92,
-     172, 110, 92, 180, 110, 84, 180, 118, 100, 188, 118, 100, 180, 118, 100,
-       180, 114, 92, 172, 114, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92,
-      180, 118, 100, 180, 118, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92,
-       172, 110, 92, 180, 110, 92, 172, 114, 92, 188, 118, 100, 180, 114, 92,
-       172, 110, 92, 172, 106, 84, 172, 110, 92, 172, 110, 92, 172, 110, 84,
-       164, 102, 84, 172, 102, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92,
-       180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, 180, 114, 92,
-       180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 118, 92, 188, 118, 92,
-    188, 122, 92, 180, 122, 100, 188, 122, 100, 180, 122, 100, 188, 118, 100,
-   196, 122, 100, 188, 118, 100, 196, 122, 108, 180, 114, 100, 180, 114, 100,
-       180, 126, 108, 148, 98, 76, 92, 34, 12, 84, 26, 12, 116, 58, 36,
-       148, 90, 76, 148, 90, 76, 140, 82, 68, 148, 82, 68, 140, 78, 60,
-       156, 86, 68, 148, 86, 68, 156, 90, 68, 156, 90, 76, 164, 94, 76,
-       156, 90, 76, 156, 90, 68, 148, 82, 68, 148, 78, 60, 140, 78, 60,
-       156, 86, 68, 148, 86, 68, 156, 86, 68, 156, 90, 68, 156, 94, 76,
-       164, 94, 76, 156, 94, 76, 148, 86, 68, 148, 82, 60, 148, 86, 68,
-       156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68, 156, 94, 76,
-       164, 102, 76, 172, 102, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84,
-       180, 114, 84, 180, 110, 84, 172, 102, 76, 180, 106, 84, 172, 106, 76,
-       172, 98, 76, 164, 98, 68, 172, 106, 76, 172, 106, 84, 180, 110, 84,
-       172, 98, 76, 180, 106, 84, 180, 110, 84, 180, 110, 84, 172, 98, 76,
-       172, 98, 76, 180, 106, 84, 180, 114, 84, 188, 114, 92, 180, 110, 84,
-       180, 110, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84,
-       164, 98, 68, 164, 94, 68, 180, 106, 84, 188, 118, 92, 180, 114, 92,
-       180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 76,
-       180, 106, 84, 180, 110, 84, 180, 114, 92, 188, 114, 92, 180, 110, 84,
-       180, 106, 84, 172, 106, 76, 180, 106, 84, 188, 114, 92, 180, 114, 84,
-       180, 110, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 110, 84,
-       180, 106, 84, 172, 106, 76, 180, 106, 84, 188, 114, 92, 188, 118, 92,
-       180, 118, 92, 188, 118, 92, 196, 122, 100, 172, 106, 84, 188, 114, 84,
-       172, 106, 84, 164, 98, 68, 172, 102, 76, 180, 106, 84, 180, 110, 84,
-       188, 118, 92, 188, 122, 92, 188, 114, 92, 180, 110, 92, 180, 114, 84,
-       188, 118, 92, 188, 118, 92, 180, 110, 84, 172, 102, 84, 188, 122, 92,
-       180, 110, 84, 164, 102, 76, 172, 102, 76, 172, 98, 76, 172, 102, 76,
-       172, 102, 76, 180, 106, 84, 180, 110, 92, 180, 106, 84, 180, 106, 84,
-       172, 102, 76, 164, 90, 76, 172, 98, 76, 180, 110, 92, 172, 102, 76,
-       172, 102, 84, 180, 106, 84, 180, 110, 84, 172, 102, 84, 172, 98, 76,
-       164, 94, 76, 164, 98, 76, 164, 98, 76, 172, 98, 84, 164, 98, 76,
-       164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 180, 114, 92,
-    180, 114, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 180, 118, 100,
-       172, 106, 92, 172, 106, 84, 164, 106, 84, 172, 106, 84, 180, 114, 92,
-       180, 110, 92, 172, 110, 84, 172, 110, 92, 180, 110, 92, 172, 110, 92,
-       180, 114, 92, 180, 114, 92, 180, 118, 92, 172, 110, 92, 172, 106, 84,
-       172, 106, 84, 172, 110, 92, 172, 106, 84, 164, 102, 84, 164, 94, 76,
-       164, 98, 76, 172, 110, 92, 180, 114, 92, 172, 106, 92, 172, 106, 92,
-       172, 110, 84, 172, 106, 92, 164, 102, 84, 172, 110, 92, 180, 110, 92,
-       172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, 180, 114, 92,
-       180, 118, 92, 180, 114, 92, 188, 114, 92, 180, 118, 92, 180, 118, 100,
-       180, 118, 92, 180, 118, 100, 188, 118, 92, 180, 118, 92, 180, 110, 92,
-       180, 106, 92, 180, 110, 92, 172, 106, 92, 172, 106, 84, 172, 114, 92,
-       140, 90, 68, 84, 26, 12, 84, 30, 12, 116, 58, 44, 156, 90, 76,
-       156, 90, 76, 148, 86, 68, 148, 86, 76, 148, 86, 68, 156, 90, 76,
-       156, 90, 76, 164, 94, 84, 164, 98, 76, 164, 94, 76, 156, 90, 68,
-       156, 86, 68, 156, 86, 60, 156, 90, 68, 156, 90, 76, 164, 94, 76,
-       156, 94, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       156, 94, 76, 156, 94, 68, 148, 78, 60, 148, 86, 68, 156, 90, 68,
-       156, 90, 68, 148, 86, 68, 156, 86, 68, 156, 90, 68, 164, 98, 76,
-       164, 94, 68, 172, 98, 76, 180, 106, 84, 188, 118, 92, 188, 118, 92,
-       188, 118, 100, 180, 114, 92, 180, 114, 84, 180, 106, 84, 172, 102, 76,
-       172, 98, 76, 172, 106, 84, 180, 106, 84, 164, 98, 68, 172, 102, 76,
-       180, 114, 84, 196, 122, 100, 188, 118, 92, 172, 106, 76, 172, 102, 76,
-       180, 110, 84, 188, 122, 92, 188, 118, 92, 188, 114, 92, 180, 110, 84,
-       188, 114, 84, 188, 114, 92, 180, 114, 84, 180, 106, 84, 172, 102, 76,
-       164, 94, 68, 180, 110, 84, 188, 118, 92, 188, 118, 92, 188, 114, 92,
-       180, 114, 92, 188, 114, 84, 180, 114, 92, 180, 106, 84, 180, 110, 84,
-       180, 114, 84, 188, 114, 92, 180, 114, 84, 180, 110, 92, 180, 110, 84,
-       180, 106, 84, 180, 114, 84, 188, 114, 92, 188, 114, 92, 180, 114, 92,
-       188, 118, 92, 196, 122, 100, 188, 122, 92, 180, 114, 92, 188, 114, 92,
-       180, 110, 84, 180, 114, 84, 188, 118, 92, 188, 122, 92, 188, 118, 92,
-       188, 118, 92, 188, 122, 92, 188, 118, 92, 196, 122, 100, 188, 118, 92,
-      188, 114, 92, 188, 122, 100, 196, 126, 100, 188, 118, 92, 188, 114, 92,
-       188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84, 188, 118, 92,
-       188, 118, 92, 188, 118, 92, 180, 114, 84, 196, 126, 100, 188, 114, 92,
-       180, 106, 84, 172, 106, 76, 172, 102, 76, 172, 102, 76, 172, 106, 76,
-       180, 110, 84, 188, 118, 92, 180, 110, 92, 180, 114, 92, 180, 106, 92,
-       164, 98, 76, 180, 106, 84, 188, 114, 100, 180, 106, 84, 180, 110, 92,
-       180, 110, 92, 188, 114, 92, 180, 110, 92, 172, 106, 84, 172, 98, 76,
-       172, 98, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 172, 102, 84,
-      172, 106, 84, 172, 110, 92, 180, 118, 92, 180, 114, 100, 180, 118, 100,
-     188, 122, 108, 188, 126, 100, 188, 118, 100, 180, 114, 92, 172, 106, 84,
-       164, 102, 84, 172, 102, 84, 172, 110, 92, 172, 110, 92, 172, 110, 84,
-       172, 106, 92, 172, 106, 84, 172, 110, 84, 172, 110, 92, 180, 110, 92,
-       180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92, 180, 110, 92,
-       172, 110, 92, 180, 110, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76,
-       172, 106, 84, 180, 114, 92, 172, 106, 84, 164, 102, 84, 172, 110, 84,
-       172, 106, 84, 164, 98, 76, 172, 102, 84, 164, 106, 84, 172, 106, 84,
-       172, 106, 92, 172, 110, 92, 180, 110, 92, 180, 110, 92, 172, 110, 92,
-       180, 106, 84, 172, 110, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84,
-       172, 110, 84, 172, 106, 84, 172, 106, 84, 180, 106, 92, 180, 106, 84,
-     188, 114, 100, 188, 118, 100, 180, 114, 100, 180, 126, 108, 148, 90, 68,
-       84, 30, 12, 92, 34, 12, 124, 66, 44, 156, 98, 84, 164, 102, 84,
-       164, 98, 84, 164, 98, 84, 156, 94, 76, 164, 98, 84, 164, 98, 76,
-       156, 90, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 90, 68,
-       156, 86, 68, 156, 86, 68, 164, 94, 68, 156, 90, 76, 156, 94, 68,
-       156, 90, 76, 164, 98, 76, 164, 102, 84, 172, 106, 84, 172, 106, 84,
-       172, 102, 84, 148, 82, 60, 148, 86, 68, 156, 90, 68, 156, 90, 68,
-       148, 86, 68, 148, 82, 60, 156, 86, 68, 156, 94, 68, 156, 86, 68,
-       164, 98, 68, 180, 110, 84, 188, 118, 92, 196, 122, 92, 196, 122, 100,
-       188, 118, 92, 188, 118, 92, 180, 110, 92, 172, 106, 76, 172, 106, 76,
-       180, 106, 84, 180, 106, 84, 172, 102, 76, 180, 110, 84, 188, 118, 92,
-      196, 126, 100, 188, 118, 100, 180, 110, 84, 172, 106, 84, 188, 114, 84,
-      188, 122, 100, 196, 122, 100, 188, 118, 92, 180, 114, 84, 180, 114, 92,
-       188, 118, 92, 188, 118, 92, 180, 110, 84, 180, 106, 84, 172, 102, 76,
-       180, 110, 84, 196, 122, 100, 188, 122, 92, 188, 118, 92, 188, 118, 92,
-       188, 122, 92, 188, 114, 92, 188, 114, 84, 180, 114, 92, 188, 114, 84,
-       180, 110, 92, 180, 114, 84, 188, 114, 92, 180, 114, 84, 188, 114, 92,
-       180, 114, 92, 188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84,
-       188, 118, 92, 188, 114, 92, 180, 114, 84, 188, 118, 92, 180, 114, 92,
-       188, 114, 92, 188, 122, 92, 188, 118, 100, 188, 118, 92, 188, 118, 92,
-       196, 122, 100, 180, 114, 92, 188, 118, 92, 180, 110, 84, 180, 110, 84,
-    196, 130, 100, 204, 134, 108, 196, 126, 100, 188, 118, 100, 188, 122, 92,
-      188, 114, 92, 188, 114, 92, 188, 114, 92, 188, 122, 100, 196, 122, 100,
-      196, 122, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 180, 110, 84,
-       180, 110, 84, 180, 110, 84, 172, 102, 76, 172, 102, 76, 180, 110, 84,
-       180, 110, 92, 172, 106, 84, 180, 106, 84, 172, 98, 76, 164, 94, 68,
-       172, 106, 84, 180, 110, 92, 172, 106, 84, 180, 110, 84, 180, 110, 84,
-       180, 114, 92, 180, 110, 92, 180, 110, 92, 172, 106, 84, 180, 106, 84,
-       172, 106, 84, 172, 102, 84, 172, 102, 76, 164, 102, 84, 172, 110, 92,
-     180, 114, 92, 188, 118, 100, 188, 122, 100, 188, 118, 92, 188, 126, 108,
-      188, 122, 100, 180, 118, 100, 172, 110, 92, 164, 106, 84, 172, 102, 84,
-       172, 106, 84, 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 106, 84,
-       172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92,
-       172, 110, 92, 172, 110, 92, 172, 110, 84, 180, 110, 92, 172, 114, 92,
-       180, 110, 92, 172, 106, 92, 172, 106, 84, 156, 94, 68, 172, 106, 92,
-       180, 114, 92, 172, 102, 84, 164, 102, 84, 180, 110, 92, 172, 106, 92,
-       164, 98, 76, 164, 102, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 84, 172, 102, 84,
-       172, 106, 84, 172, 106, 84, 172, 110, 84, 172, 106, 84, 164, 106, 84,
-       172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 180, 114, 100,
-       188, 118, 100, 180, 118, 100, 188, 126, 100, 148, 94, 76, 92, 34, 12,
-       92, 34, 12, 116, 62, 44, 156, 94, 76, 164, 94, 84, 156, 94, 76,
-       156, 94, 76, 148, 86, 68, 148, 86, 76, 148, 82, 68, 148, 78, 60,
-       148, 82, 68, 156, 90, 68, 156, 94, 76, 164, 90, 76, 156, 90, 68,
-       148, 82, 68, 148, 82, 60, 164, 94, 76, 156, 94, 76, 156, 94, 68,
-       164, 94, 76, 164, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84,
-       156, 90, 68, 156, 90, 68, 156, 94, 76, 156, 90, 68, 148, 86, 68,
-       148, 86, 68, 156, 90, 68, 156, 90, 68, 164, 98, 76, 172, 106, 84,
-       180, 110, 84, 180, 110, 84, 180, 114, 92, 188, 118, 92, 180, 110, 84,
-       188, 118, 92, 188, 118, 92, 180, 110, 84, 180, 106, 84, 180, 114, 84,
-       180, 114, 84, 180, 114, 92, 188, 114, 84, 180, 114, 92, 188, 114, 84,
-       188, 118, 92, 188, 114, 92, 180, 114, 92, 188, 114, 84, 180, 110, 84,
-       196, 122, 100, 188, 118, 92, 188, 114, 92, 188, 114, 92, 188, 118, 92,
-       188, 118, 92, 188, 118, 92, 180, 110, 84, 172, 106, 84, 188, 114, 92,
-    196, 122, 100, 188, 122, 100, 196, 122, 92, 196, 122, 100, 188, 122, 100,
-       188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 118, 92, 188, 114, 92,
-       188, 118, 92, 188, 114, 92, 188, 118, 92, 188, 122, 92, 196, 122, 100,
-      188, 126, 100, 188, 118, 92, 180, 110, 84, 188, 114, 92, 188, 122, 100,
-      196, 126, 100, 188, 118, 100, 196, 122, 92, 188, 114, 92, 180, 114, 92,
-     196, 122, 92, 188, 122, 100, 188, 118, 92, 196, 122, 100, 196, 126, 100,
-       188, 118, 92, 188, 118, 92, 172, 98, 76, 164, 94, 68, 180, 110, 92,
-      188, 122, 92, 188, 114, 92, 180, 114, 84, 204, 130, 108, 196, 126, 100,
-       188, 118, 92, 188, 122, 92, 196, 122, 100, 188, 122, 92, 188, 122, 92,
-       188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84, 180, 114, 92,
-       180, 110, 84, 172, 102, 76, 172, 102, 76, 180, 106, 84, 180, 110, 92,
-       180, 106, 84, 172, 102, 76, 172, 98, 76, 164, 94, 76, 180, 106, 84,
-       180, 110, 92, 180, 106, 84, 172, 102, 76, 172, 98, 84, 172, 102, 76,
-       180, 110, 84, 180, 110, 84, 180, 106, 84, 180, 110, 92, 180, 114, 92,
-       172, 110, 92, 172, 106, 92, 172, 106, 84, 180, 110, 92, 180, 118, 100,
-   188, 122, 100, 180, 122, 100, 188, 118, 100, 188, 126, 108, 188, 118, 100,
-       180, 114, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92, 180, 114, 92,
-       180, 114, 92, 172, 114, 92, 180, 110, 92, 172, 106, 84, 164, 102, 84,
-       164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 110, 84,
-       172, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 114, 92,
-       172, 114, 92, 180, 110, 92, 164, 98, 76, 172, 110, 92, 180, 114, 92,
-       172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84, 164, 102, 84,
-       172, 106, 84, 172, 110, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84,
-       172, 110, 92, 172, 110, 92, 180, 110, 84, 172, 106, 84, 172, 106, 84,
-       180, 110, 84, 172, 110, 84, 172, 114, 92, 172, 110, 92, 172, 110, 84,
-       172, 110, 84, 180, 106, 92, 172, 102, 84, 180, 106, 92, 172, 106, 92,
-       172, 106, 92, 180, 122, 100, 148, 98, 76, 92, 34, 12, 100, 42, 28,
-       116, 54, 36, 148, 86, 68, 148, 90, 76, 148, 86, 76, 148, 86, 76,
-       140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 78, 60, 148, 78, 60,
-       148, 82, 60, 156, 86, 68, 156, 90, 68, 156, 90, 68, 156, 90, 68,
-       148, 86, 68, 172, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84,
-       172, 106, 84, 172, 106, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76,
-       164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 94, 76, 164, 94, 76,
-       156, 94, 76, 164, 98, 76, 180, 110, 84, 188, 114, 84, 188, 114, 92,
-       180, 106, 84, 188, 114, 84, 188, 118, 92, 188, 114, 92, 188, 118, 92,
-       188, 118, 92, 188, 114, 92, 180, 110, 84, 188, 114, 92, 188, 118, 92,
-       188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92,
-       188, 118, 92, 188, 118, 92, 188, 114, 92, 180, 110, 84, 196, 122, 100,
-       188, 118, 92, 180, 114, 84, 188, 114, 92, 188, 122, 92, 196, 122, 100,
-       188, 118, 92, 188, 114, 92, 180, 110, 84, 188, 118, 92, 196, 122, 100,
-       196, 122, 92, 188, 118, 92, 188, 118, 100, 196, 122, 92, 188, 118, 92,
-     196, 122, 100, 196, 122, 92, 196, 122, 100, 188, 122, 92, 196, 122, 100,
-     188, 122, 92, 196, 122, 100, 196, 122, 100, 196, 122, 100, 196, 122, 92,
-       188, 114, 92, 180, 110, 84, 188, 114, 84, 188, 118, 92, 196, 122, 92,
-       188, 118, 92, 188, 122, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92,
-      196, 122, 92, 188, 118, 92, 188, 118, 92, 196, 126, 100, 204, 130, 108,
-       204, 134, 108, 188, 122, 92, 180, 106, 84, 188, 114, 92, 188, 118, 92,
-    188, 118, 92, 196, 122, 100, 204, 134, 108, 196, 130, 100, 196, 122, 100,
-      188, 122, 92, 196, 122, 100, 196, 122, 100, 188, 118, 92, 188, 114, 92,
-       188, 114, 84, 180, 110, 84, 180, 110, 84, 188, 114, 92, 180, 110, 84,
-       180, 106, 84, 180, 106, 84, 188, 114, 92, 188, 118, 92, 188, 114, 92,
-       180, 110, 92, 180, 106, 84, 172, 102, 84, 180, 110, 84, 188, 118, 92,
-       180, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 106, 92,
-       188, 114, 92, 180, 110, 92, 180, 110, 84, 188, 114, 92, 188, 114, 100,
-      180, 114, 92, 172, 110, 92, 180, 114, 92, 188, 122, 100, 188, 122, 108,
-    188, 122, 100, 180, 118, 100, 188, 122, 100, 180, 118, 100, 180, 114, 92,
-       180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 92,
-       180, 110, 92, 172, 110, 84, 172, 106, 84, 164, 102, 84, 172, 102, 84,
-       164, 106, 84, 172, 106, 84, 180, 110, 92, 172, 114, 92, 180, 110, 92,
-       172, 110, 92, 180, 110, 92, 172, 110, 84, 172, 110, 92, 172, 110, 84,
-       180, 110, 92, 164, 102, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92,
-       180, 110, 92, 172, 110, 84, 172, 110, 92, 172, 106, 84, 180, 114, 92,
-       180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92, 172, 110, 84,
-       172, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 84, 180, 114, 92,
-       180, 114, 92, 180, 114, 92, 180, 118, 92, 180, 114, 92, 180, 114, 92,
-    188, 118, 100, 188, 114, 92, 196, 122, 108, 188, 118, 100, 180, 118, 100,
-       188, 130, 108, 156, 106, 84, 100, 42, 28, 84, 30, 12, 116, 54, 36,
-       156, 90, 76, 156, 90, 76, 156, 90, 68, 156, 94, 76, 148, 86, 68,
-       164, 94, 84, 156, 94, 76, 156, 90, 76, 148, 86, 68, 148, 78, 60,
-       148, 78, 60, 148, 86, 68, 164, 94, 76, 164, 94, 76, 172, 98, 84,
-       164, 98, 76, 164, 102, 76, 172, 106, 84, 180, 110, 92, 180, 118, 100,
-       180, 118, 100, 180, 110, 92, 172, 110, 92, 164, 98, 76, 164, 94, 76,
-       164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84, 172, 102, 84,
-      164, 102, 76, 188, 118, 92, 188, 122, 100, 196, 122, 100, 188, 114, 92,
-      180, 114, 92, 188, 114, 92, 196, 122, 100, 196, 122, 100, 188, 118, 92,
-       188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 92, 180, 110, 84,
-    196, 122, 100, 196, 122, 100, 188, 122, 92, 196, 122, 100, 196, 126, 100,
-      196, 122, 100, 188, 118, 92, 188, 118, 92, 196, 122, 100, 188, 118, 92,
-     188, 114, 92, 188, 118, 92, 196, 122, 100, 196, 126, 100, 196, 122, 100,
-       188, 118, 92, 188, 114, 84, 188, 122, 92, 196, 122, 100, 188, 122, 92,
-      188, 118, 92, 196, 122, 100, 196, 122, 92, 188, 118, 92, 196, 122, 100,
-   196, 126, 100, 196, 122, 100, 196, 126, 100, 196, 126, 100, 196, 126, 100,
-   196, 122, 100, 196, 126, 100, 196, 122, 100, 196, 126, 100, 196, 122, 100,
-    188, 118, 92, 188, 118, 100, 196, 126, 100, 196, 126, 100, 196, 122, 100,
-     196, 126, 100, 196, 122, 100, 188, 118, 92, 188, 122, 100, 196, 122, 92,
-       188, 114, 92, 188, 114, 92, 188, 122, 92, 188, 114, 92, 204, 130, 108,
-      196, 126, 100, 188, 118, 92, 188, 118, 92, 188, 118, 92, 196, 122, 100,
-    196, 126, 100, 204, 130, 108, 196, 126, 100, 196, 122, 100, 188, 118, 92,
-     196, 122, 100, 196, 126, 100, 196, 122, 100, 188, 118, 92, 188, 114, 92,
-       188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 92, 180, 114, 84,
-      188, 114, 92, 196, 126, 100, 196, 122, 100, 188, 114, 92, 180, 110, 84,
-       180, 106, 84, 172, 98, 76, 180, 110, 92, 188, 114, 92, 172, 102, 84,
-       196, 126, 100, 188, 114, 92, 188, 114, 92, 188, 114, 92, 188, 114, 92,
-      180, 110, 84, 188, 114, 92, 188, 114, 92, 188, 122, 100, 180, 118, 100,
-    180, 114, 92, 180, 118, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100,
-    180, 118, 100, 188, 122, 100, 180, 118, 100, 180, 110, 92, 180, 114, 100,
-      180, 118, 100, 188, 118, 100, 172, 114, 92, 172, 106, 84, 172, 110, 92,
-       172, 106, 92, 172, 102, 84, 164, 102, 84, 172, 102, 76, 172, 106, 84,
-       172, 106, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 110, 92,
-       172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84,
-      172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 118, 100, 180, 118, 100,
-       180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 114, 92, 172, 114, 92,
-       172, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84,
-       172, 106, 84, 180, 110, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92,
-       180, 118, 92, 180, 118, 92, 180, 114, 92, 180, 118, 92, 188, 114, 100,
-    180, 110, 92, 188, 122, 108, 188, 122, 100, 180, 118, 108, 188, 126, 108,
-       148, 90, 76, 84, 30, 12, 92, 38, 28, 140, 78, 60, 156, 90, 68,
-       156, 90, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76, 156, 94, 76,
-       164, 94, 76, 156, 94, 68, 156, 94, 76, 156, 90, 68, 156, 86, 68,
-       148, 86, 68, 156, 86, 68, 156, 94, 76, 164, 102, 76, 180, 110, 92,
-       172, 102, 84, 172, 98, 84, 172, 106, 84, 180, 114, 92, 188, 122, 100,
-       188, 114, 92, 172, 110, 92, 172, 102, 84, 164, 98, 76, 156, 90, 68,
-       156, 86, 68, 164, 94, 76, 172, 102, 84, 172, 106, 84, 180, 110, 92,
-      188, 114, 92, 196, 126, 100, 196, 126, 100, 188, 118, 92, 180, 110, 92,
-    188, 118, 92, 196, 130, 108, 196, 126, 100, 196, 122, 100, 188, 126, 100,
-     196, 126, 108, 196, 126, 100, 196, 122, 100, 180, 118, 92, 188, 114, 92,
-     188, 118, 92, 196, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
-     188, 118, 92, 188, 118, 92, 196, 126, 100, 188, 122, 100, 196, 122, 100,
-   188, 122, 100, 196, 126, 100, 196, 130, 100, 196, 126, 108, 196, 130, 100,
-   196, 122, 100, 188, 122, 100, 196, 126, 108, 196, 126, 100, 204, 130, 108,
-   196, 130, 100, 196, 130, 108, 196, 130, 108, 188, 122, 100, 196, 126, 100,
-   188, 122, 100, 196, 122, 100, 188, 122, 100, 196, 126, 100, 196, 126, 100,
-   196, 130, 100, 196, 130, 108, 196, 130, 100, 196, 126, 100, 196, 126, 100,
-   204, 130, 108, 196, 130, 100, 196, 126, 108, 188, 126, 100, 196, 122, 100,
-   196, 126, 100, 196, 130, 108, 204, 130, 108, 196, 126, 108, 196, 130, 100,
-   196, 122, 100, 188, 122, 100, 196, 126, 100, 204, 134, 108, 204, 134, 108,
-     196, 126, 100, 188, 114, 92, 188, 118, 92, 188, 122, 100, 196, 126, 100,
-   196, 130, 108, 196, 126, 108, 196, 126, 100, 196, 126, 100, 196, 126, 100,
-    188, 122, 92, 188, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100,
-    196, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100, 188, 118, 92,
-   188, 118, 100, 196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100,
-       188, 118, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92, 188, 122, 100,
-       188, 114, 92, 180, 114, 92, 180, 114, 84, 172, 102, 84, 172, 106, 84,
-    188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100, 180, 118, 100,
-   188, 118, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100,
-       196, 130, 108, 180, 114, 92, 172, 106, 84, 172, 110, 92, 180, 114, 92,
-       172, 110, 92, 172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92,
-       180, 114, 92, 180, 110, 92, 164, 102, 84, 164, 98, 84, 172, 102, 84,
-       172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84, 180, 106, 92,
-       172, 106, 92, 180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 102, 84,
-       172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92, 172, 110, 92,
-       180, 114, 92, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92,
-       180, 110, 92, 172, 110, 92, 180, 110, 84, 172, 110, 92, 172, 110, 92,
-       180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100,
-       180, 118, 100, 180, 114, 92, 180, 114, 92, 172, 102, 84, 172, 102, 84,
-       180, 106, 92, 164, 94, 84, 156, 94, 76, 172, 110, 100, 140, 82, 68,
-       92, 38, 28, 92, 34, 20, 124, 58, 44, 140, 78, 60, 148, 86, 68,
-       156, 90, 68, 156, 94, 76, 164, 94, 76, 148, 90, 68, 156, 90, 68,
-       164, 94, 76, 156, 94, 76, 156, 94, 76, 156, 90, 68, 148, 86, 60,
-       148, 86, 68, 156, 90, 68, 164, 94, 76, 164, 98, 76, 156, 94, 76,
-       156, 94, 76, 172, 98, 84, 180, 110, 92, 180, 118, 100, 188, 114, 100,
-       180, 114, 92, 172, 102, 84, 164, 98, 84, 164, 94, 76, 156, 94, 76,
-       156, 90, 68, 164, 94, 76, 164, 94, 76, 164, 94, 76, 164, 98, 76,
-    180, 110, 92, 196, 126, 100, 196, 126, 108, 204, 130, 100, 196, 126, 108,
-   196, 130, 108, 196, 126, 100, 188, 122, 100, 196, 122, 100, 196, 126, 100,
-    196, 126, 100, 188, 122, 100, 188, 118, 92, 196, 130, 108, 196, 134, 108,
-   204, 134, 108, 204, 134, 108, 196, 130, 108, 196, 130, 108, 196, 126, 108,
-   196, 130, 108, 196, 126, 100, 188, 126, 100, 188, 122, 100, 196, 126, 100,
-   196, 126, 100, 196, 126, 108, 196, 126, 100, 188, 126, 100, 188, 122, 100,
-   196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100,
-   196, 126, 100, 196, 126, 108, 204, 130, 108, 196, 130, 108, 196, 130, 108,
-   196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 130, 108, 204, 130, 108,
-   196, 130, 108, 196, 126, 100, 188, 126, 108, 196, 126, 100, 196, 126, 108,
-   196, 130, 108, 196, 126, 100, 196, 126, 100, 196, 126, 100, 188, 126, 100,
-   196, 126, 100, 196, 126, 108, 196, 130, 100, 196, 126, 108, 188, 126, 100,
-   196, 122, 100, 188, 126, 100, 196, 130, 108, 196, 130, 108, 188, 122, 100,
-      180, 114, 92, 188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 118, 92,
-    188, 122, 100, 188, 118, 100, 188, 122, 100, 188, 118, 92, 188, 118, 100,
-      188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 122, 92, 188, 118, 100,
-       188, 118, 92, 188, 118, 92, 188, 118, 92, 188, 118, 100, 180, 118, 92,
-      188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 118, 92, 180, 114, 92,
-      180, 114, 92, 180, 114, 92, 188, 118, 92, 196, 126, 100, 188, 118, 100,
-      188, 122, 100, 188, 118, 92, 180, 110, 84, 180, 114, 92, 188, 122, 100,
-       188, 122, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92,
-      180, 118, 100, 180, 118, 100, 180, 114, 92, 172, 110, 92, 172, 106, 84,
-       164, 94, 76, 164, 102, 84, 180, 114, 92, 180, 118, 100, 172, 106, 84,
-       164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 84, 172, 102, 84,
-       172, 102, 84, 164, 98, 76, 172, 102, 84, 172, 106, 84, 180, 110, 92,
-       180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92,
-       180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 106, 84, 172, 110, 92,
-       180, 118, 92, 188, 118, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92,
-    180, 114, 92, 180, 118, 100, 180, 118, 100, 180, 118, 100, 180, 118, 100,
-     188, 118, 92, 180, 118, 100, 180, 118, 100, 188, 118, 100, 180, 110, 92,
-   172, 110, 100, 180, 114, 100, 180, 118, 100, 180, 118, 100, 180, 118, 100,
-     188, 122, 100, 188, 118, 100, 180, 106, 84, 172, 102, 84, 188, 114, 100,
-       164, 98, 76, 164, 98, 84, 172, 110, 100, 132, 78, 68, 92, 34, 20,
-       92, 34, 20, 132, 70, 52, 156, 90, 68, 164, 102, 76, 164, 98, 76,
-       164, 98, 84, 164, 98, 76, 156, 90, 68, 156, 94, 76, 148, 82, 60,
-       148, 86, 68, 148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 78, 60,
-       148, 82, 60, 148, 86, 68, 148, 82, 68, 148, 82, 60, 156, 82, 68,
-       156, 90, 68, 164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84,
-       164, 102, 76, 172, 98, 84, 164, 98, 76, 156, 90, 76, 156, 82, 60,
-       140, 78, 60, 140, 70, 52, 132, 70, 52, 156, 82, 60, 172, 98, 76,
-    188, 114, 92, 196, 122, 100, 196, 126, 100, 196, 126, 108, 196, 130, 108,
-   196, 130, 108, 196, 126, 100, 188, 126, 100, 196, 126, 100, 188, 126, 100,
-   196, 126, 100, 188, 122, 100, 196, 130, 108, 204, 130, 108, 196, 130, 108,
-   196, 130, 108, 196, 122, 100, 188, 122, 100, 196, 122, 100, 188, 126, 100,
-   196, 126, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100,
-   188, 126, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100,
-    196, 126, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 122, 100,
-   188, 126, 100, 196, 126, 100, 196, 126, 100, 196, 130, 108, 196, 126, 100,
-   196, 126, 100, 196, 126, 108, 196, 126, 100, 188, 122, 100, 196, 130, 108,
-   196, 130, 100, 196, 126, 108, 196, 126, 100, 196, 130, 108, 204, 130, 108,
-   196, 130, 108, 196, 126, 108, 196, 130, 108, 204, 134, 108, 196, 130, 108,
-   196, 130, 108, 196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 134, 108,
-   204, 130, 108, 204, 134, 116, 196, 130, 108, 196, 122, 100, 188, 122, 100,
-    196, 126, 108, 196, 126, 100, 196, 126, 100, 188, 118, 100, 188, 118, 92,
-     188, 118, 92, 188, 122, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100,
-    188, 122, 100, 188, 122, 100, 188, 118, 100, 188, 122, 92, 188, 118, 100,
-    188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
-     188, 122, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 114, 92,
-    188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 122, 100,
-     188, 122, 100, 180, 110, 92, 180, 114, 92, 188, 122, 100, 188, 122, 100,
-   188, 118, 100, 180, 118, 100, 180, 118, 100, 188, 122, 100, 188, 122, 100,
-       188, 122, 100, 180, 114, 92, 180, 110, 92, 172, 110, 92, 164, 102, 76,
-      164, 102, 84, 188, 118, 100, 180, 118, 100, 172, 106, 84, 164, 102, 84,
-       172, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92,
-       172, 106, 84, 180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 110, 92,
-       180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 110, 92, 180, 110, 84,
-       180, 110, 92, 180, 110, 92, 172, 102, 84, 172, 106, 84, 172, 110, 92,
-       180, 110, 92, 172, 110, 92, 172, 110, 92, 172, 106, 92, 172, 110, 92,
-       180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 100,
-       180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 100, 180, 114, 92,
-     180, 114, 92, 180, 114, 100, 180, 118, 92, 180, 122, 100, 188, 122, 100,
-     188, 122, 100, 188, 118, 100, 180, 110, 92, 188, 114, 100, 172, 102, 92,
-       172, 106, 92, 180, 118, 100, 132, 78, 68, 92, 34, 20, 92, 34, 20,
-       132, 74, 60, 156, 90, 68, 164, 94, 76, 148, 90, 68, 156, 86, 68,
-       156, 90, 68, 156, 90, 68, 164, 98, 84, 156, 90, 68, 156, 90, 68,
-       156, 90, 76, 156, 94, 76, 164, 98, 76, 164, 98, 84, 164, 102, 76,
-       172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92,
-       180, 110, 92, 180, 110, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92,
-       180, 114, 92, 180, 114, 92, 180, 110, 92, 164, 98, 84, 164, 94, 76,
-       156, 90, 68, 156, 90, 68, 172, 102, 84, 180, 110, 92, 188, 118, 92,
-    196, 122, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
-     188, 118, 100, 188, 118, 100, 180, 114, 92, 188, 114, 92, 188, 118, 100,
-    188, 118, 92, 196, 126, 100, 188, 126, 100, 196, 122, 100, 188, 122, 100,
-     180, 118, 92, 188, 118, 92, 188, 122, 100, 196, 122, 100, 196, 126, 108,
-   188, 126, 100, 188, 122, 100, 196, 122, 100, 188, 126, 100, 196, 122, 100,
-       188, 122, 100, 188, 118, 92, 180, 110, 92, 180, 114, 92, 188, 118, 92,
-       180, 114, 92, 180, 110, 84, 172, 110, 84, 180, 114, 92, 188, 114, 92,
-   188, 126, 100, 196, 126, 108, 196, 126, 100, 196, 130, 108, 196, 126, 108,
-   188, 126, 100, 188, 126, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100,
-    188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 126, 100, 188, 122, 100,
-    188, 118, 92, 196, 130, 108, 196, 130, 108, 196, 126, 108, 196, 126, 100,
-   196, 130, 108, 196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 130, 108,
-     196, 130, 100, 196, 122, 100, 180, 118, 92, 188, 118, 92, 188, 122, 100,
-      196, 126, 100, 180, 118, 100, 188, 118, 92, 180, 118, 92, 180, 114, 92,
-       188, 118, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 188, 114, 92,
-       180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 188, 118, 92,
-       180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 110, 92, 188, 114, 92,
-       188, 122, 92, 180, 118, 92, 180, 110, 92, 180, 110, 92, 180, 118, 92,
-     196, 122, 100, 188, 118, 100, 180, 114, 92, 188, 122, 100, 188, 118, 92,
-      180, 110, 92, 180, 114, 84, 188, 118, 100, 180, 118, 92, 188, 118, 100,
-   188, 122, 100, 188, 122, 100, 188, 122, 108, 188, 122, 100, 188, 122, 100,
-       180, 114, 92, 172, 106, 84, 164, 98, 84, 156, 94, 76, 164, 94, 76,
-       164, 102, 76, 172, 102, 84, 164, 98, 76, 172, 106, 84, 188, 122, 100,
-      188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 114, 92, 180, 110, 92,
-       180, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 110, 92,
-       180, 110, 84, 172, 110, 92, 180, 110, 92, 172, 106, 92, 172, 110, 84,
-       172, 106, 92, 172, 102, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84,
-       172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84,
-       164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92,
-       172, 106, 84, 172, 106, 92, 180, 110, 92, 172, 110, 92, 180, 106, 92,
-       172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92,
-    188, 118, 100, 188, 114, 100, 188, 118, 100, 180, 110, 92, 180, 118, 108,
-       180, 122, 108, 132, 78, 68, 92, 34, 20, 92, 34, 20, 108, 50, 28,
-       132, 66, 52, 140, 74, 52, 132, 70, 52, 140, 74, 52, 140, 78, 60,
-       148, 86, 60, 164, 94, 76, 156, 94, 68, 156, 94, 76, 164, 98, 76,
-       164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84,
-       180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92,
-       180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 106, 92, 180, 110, 92,
-       180, 114, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 188, 114, 100,
-       188, 122, 100, 180, 110, 84, 188, 114, 92, 180, 114, 92, 188, 114, 92,
-       180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 84,
-       180, 114, 92, 180, 110, 84, 180, 110, 92, 172, 110, 84, 180, 110, 92,
-       180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92, 180, 110, 84,
-       180, 110, 92, 188, 118, 92, 188, 122, 100, 180, 114, 84, 180, 110, 92,
-       180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 106, 84,
-       172, 106, 84, 164, 102, 76, 172, 102, 84, 180, 110, 84, 180, 110, 84,
-       172, 110, 92, 180, 106, 84, 180, 110, 84, 180, 110, 92, 180, 118, 92,
-     188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 92, 188, 118, 100,
-       188, 118, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 110, 92,
-       180, 114, 92, 180, 114, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92,
-       188, 114, 92, 188, 118, 92, 188, 122, 92, 188, 118, 100, 196, 122, 92,
-     188, 122, 100, 188, 118, 100, 188, 122, 92, 188, 118, 100, 188, 118, 92,
-       180, 114, 92, 172, 106, 84, 180, 110, 92, 180, 118, 92, 188, 114, 92,
-       172, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 92, 180, 110, 84,
-       172, 110, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84,
-       172, 106, 76, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84,
-       172, 106, 84, 172, 102, 84, 172, 102, 76, 180, 106, 84, 180, 114, 92,
-       188, 118, 92, 180, 114, 92, 188, 118, 92, 188, 122, 100, 180, 110, 84,
-       180, 110, 92, 188, 118, 92, 180, 114, 92, 180, 114, 92, 172, 114, 92,
-       180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 84, 164, 98, 84,
-       156, 94, 76, 140, 74, 52, 140, 78, 60, 148, 86, 68, 156, 90, 68,
-       156, 94, 76, 156, 98, 76, 172, 102, 84, 172, 110, 92, 172, 106, 92,
-       172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 180, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84,
-       172, 102, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 92,
-       172, 106, 84, 172, 106, 84, 172, 110, 92, 164, 102, 84, 172, 102, 84,
-       164, 106, 84, 172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 92, 172, 106, 92, 164, 102, 84, 172, 102, 84,
-       164, 106, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92,
-      180, 106, 92, 180, 110, 92, 172, 102, 92, 172, 114, 100, 180, 118, 100,
-       132, 74, 60, 92, 34, 20, 92, 34, 12, 124, 58, 44, 148, 78, 60,
-       148, 90, 68, 156, 86, 68, 156, 94, 76, 156, 94, 76, 156, 90, 68,
-       164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 94, 68, 164, 94, 76,
-       164, 98, 76, 164, 98, 84, 164, 98, 76, 156, 98, 76, 164, 94, 76,
-       164, 98, 76, 164, 98, 84, 164, 98, 84, 172, 102, 76, 164, 102, 84,
-       172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92, 180, 106, 84,
-       172, 106, 92, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 92,
-       180, 110, 92, 180, 106, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92,
-       188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 100, 188, 118, 92,
-      188, 122, 100, 188, 122, 100, 188, 118, 92, 180, 118, 92, 188, 118, 92,
-       188, 118, 100, 188, 118, 92, 180, 118, 92, 188, 114, 92, 180, 118, 92,
-      188, 122, 100, 196, 130, 108, 188, 114, 92, 180, 114, 92, 180, 118, 92,
-       188, 118, 92, 188, 118, 100, 188, 118, 92, 180, 114, 92, 180, 110, 84,
-       180, 110, 92, 180, 114, 84, 180, 114, 92, 180, 114, 92, 188, 118, 92,
-     188, 118, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 188, 118, 100,
-    188, 122, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100,
-    196, 122, 100, 188, 126, 100, 188, 122, 100, 188, 122, 92, 188, 122, 100,
-     196, 122, 100, 188, 126, 100, 196, 122, 100, 188, 118, 92, 180, 118, 92,
-    188, 118, 100, 188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100,
-     188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 118, 100, 180, 114, 92,
-       180, 110, 84, 180, 110, 92, 188, 118, 92, 180, 114, 92, 180, 110, 92,
-       188, 118, 92, 180, 118, 92, 188, 114, 92, 180, 114, 92, 180, 110, 92,
-       180, 110, 84, 180, 110, 84, 180, 110, 84, 180, 110, 84, 180, 110, 84,
-       180, 106, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92,
-       180, 110, 92, 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 92,
-       172, 110, 84, 172, 110, 84, 180, 110, 92, 188, 118, 92, 188, 118, 92,
-       180, 114, 92, 188, 118, 100, 188, 118, 92, 180, 110, 92, 180, 114, 84,
-       188, 118, 100, 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92,
-       172, 110, 92, 172, 110, 92, 172, 102, 84, 164, 98, 76, 156, 94, 76,
-       156, 94, 68, 172, 102, 76, 172, 110, 92, 172, 110, 84, 172, 106, 92,
-       172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 106, 92,
-       172, 106, 84, 172, 106, 92, 172, 102, 84, 172, 102, 84, 172, 106, 92,
-       172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84,
-       172, 106, 84, 172, 102, 84, 172, 106, 92, 172, 102, 84, 164, 98, 76,
-       164, 102, 84, 164, 102, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84,
-       172, 102, 84, 164, 102, 84, 164, 102, 84, 164, 102, 84, 164, 98, 76,
-       172, 102, 84, 172, 102, 84, 172, 102, 84, 164, 98, 84, 164, 102, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 98, 84, 172, 98, 76,
-       172, 98, 84, 164, 94, 84, 172, 110, 92, 172, 110, 100, 116, 62, 52,
-       92, 34, 12, 92, 34, 20, 148, 90, 68, 172, 106, 84, 172, 110, 92,
-       172, 106, 84, 172, 110, 84, 180, 110, 92, 164, 102, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84,
-       172, 110, 92, 172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 102, 84,
-       172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 110, 92,
-      180, 110, 92, 188, 118, 100, 188, 114, 100, 180, 114, 92, 180, 110, 92,
-       180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 106, 84, 188, 118, 100,
-    188, 118, 92, 196, 122, 100, 196, 126, 108, 204, 130, 108, 188, 122, 100,
-     188, 118, 100, 180, 118, 92, 180, 114, 92, 188, 122, 100, 196, 122, 100,
-     188, 122, 100, 188, 118, 92, 180, 110, 92, 196, 122, 100, 188, 126, 100,
-   196, 126, 100, 188, 122, 100, 188, 122, 100, 196, 126, 100, 196, 126, 108,
-   196, 130, 108, 196, 130, 108, 196, 126, 100, 196, 126, 108, 196, 130, 108,
-    196, 134, 108, 204, 134, 108, 196, 130, 108, 188, 126, 108, 188, 118, 92,
-       180, 114, 92, 180, 106, 84, 180, 110, 84, 180, 114, 92, 180, 118, 92,
-     188, 118, 92, 180, 118, 92, 188, 126, 100, 188, 122, 100, 196, 126, 100,
-   196, 126, 100, 196, 126, 100, 196, 130, 108, 204, 130, 108, 196, 130, 108,
-    196, 122, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 122, 100,
-    188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100, 188, 118, 92,
-      180, 114, 92, 188, 118, 92, 188, 118, 100, 188, 122, 92, 188, 122, 100,
-       196, 122, 100, 180, 118, 92, 188, 118, 92, 180, 114, 92, 172, 110, 84,
-       180, 110, 84, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 118, 92,
-       188, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92,
-       180, 110, 92, 180, 114, 84, 180, 110, 92, 180, 110, 84, 180, 114, 84,
-       180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92,
-       180, 114, 84, 180, 114, 92, 180, 118, 92, 180, 110, 92, 172, 106, 84,
-       180, 110, 84, 180, 110, 84, 164, 102, 76, 172, 102, 84, 180, 110, 84,
-       172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84,
-       172, 110, 84, 172, 106, 92, 172, 106, 84, 164, 98, 76, 180, 118, 100,
-     188, 122, 100, 188, 118, 100, 188, 118, 100, 180, 114, 92, 172, 106, 92,
-       172, 106, 84, 164, 102, 84, 180, 106, 84, 172, 106, 92, 180, 110, 92,
-       172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92,
-       172, 98, 84, 164, 102, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92,
-       180, 106, 84, 172, 110, 92, 180, 106, 92, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76, 156, 94, 76,
-       164, 98, 76, 164, 98, 84, 164, 98, 76, 172, 102, 84, 164, 102, 84,
-       172, 102, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76, 172, 102, 84,
-       172, 102, 92, 164, 102, 84, 172, 102, 84, 164, 106, 84, 164, 106, 84,
-       164, 102, 76, 172, 102, 84, 164, 98, 76, 172, 102, 84, 172, 102, 84,
-       164, 94, 84, 172, 106, 92, 164, 106, 92, 116, 62, 52, 92, 34, 20,
-       100, 46, 28, 148, 86, 76, 164, 98, 76, 164, 98, 76, 156, 90, 76,
-       164, 98, 76, 164, 102, 84, 172, 102, 84, 172, 106, 84, 164, 102, 84,
-       164, 102, 84, 164, 98, 76, 164, 98, 84, 172, 106, 84, 172, 110, 92,
-       180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 106, 92, 172, 106, 84,
-       180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 172, 110, 92,
-       172, 106, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84, 180, 106, 92,
-       180, 110, 84, 172, 106, 84, 172, 102, 84, 180, 110, 92, 172, 102, 76,
-       172, 98, 76, 172, 106, 84, 180, 106, 84, 172, 98, 76, 164, 98, 76,
-       164, 94, 76, 164, 98, 76, 172, 102, 76, 172, 110, 84, 172, 106, 84,
-       172, 98, 76, 156, 94, 68, 164, 94, 68, 164, 94, 76, 164, 98, 76,
-       164, 94, 68, 164, 94, 68, 156, 90, 68, 164, 94, 68, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84,
-       172, 106, 84, 172, 102, 76, 164, 98, 76, 172, 106, 84, 164, 98, 76,
-       148, 86, 60, 148, 82, 60, 156, 90, 68, 164, 94, 76, 164, 98, 76,
-       164, 94, 76, 172, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 84,
-       172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 172, 106, 84,
-       172, 102, 76, 172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 106, 84,
-       172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 102, 84, 172, 102, 76,
-       164, 102, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84, 180, 114, 92,
-       172, 102, 76, 172, 106, 84, 172, 102, 84, 164, 94, 76, 164, 98, 76,
-       172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76, 172, 98, 76,
-       164, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 164, 102, 76,
-       172, 102, 76, 172, 102, 76, 164, 102, 76, 172, 102, 76, 164, 102, 76,
-       172, 98, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76, 172, 102, 84,
-       172, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84,
-       172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76, 164, 98, 76,
-       164, 102, 76, 156, 90, 68, 164, 94, 68, 164, 98, 76, 164, 98, 76,
-       164, 94, 76, 156, 94, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76,
-       164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 94, 76, 156, 90, 68,
-       156, 90, 76, 156, 94, 68, 156, 94, 76, 156, 90, 68, 156, 90, 68,
-       156, 94, 76, 156, 86, 68, 156, 90, 68, 164, 98, 76, 164, 94, 76,
-       164, 94, 76, 164, 98, 76, 172, 102, 84, 180, 114, 92, 164, 102, 76,
-       172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92,
-       180, 110, 92, 180, 114, 92, 172, 106, 92, 180, 110, 92, 172, 110, 92,
-       180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92,
-       172, 110, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92,
-       172, 110, 92, 172, 110, 84, 172, 106, 84, 172, 102, 92, 172, 106, 84,
-       172, 106, 92, 172, 110, 92, 172, 110, 92, 172, 110, 92, 180, 106, 84,
-       172, 106, 84, 180, 106, 92, 180, 110, 92, 180, 110, 100, 172, 102, 84,
-       180, 114, 100, 172, 110, 100, 124, 66, 52, 100, 46, 28, 100, 42, 28,
-       148, 78, 68, 156, 90, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 156, 90, 68, 148, 82, 60, 148, 82, 68, 148, 86, 60,
-       148, 82, 68, 148, 86, 60, 148, 86, 68, 156, 90, 68, 148, 86, 68,
-       156, 90, 68, 156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 98, 76,
-       156, 94, 76, 164, 94, 76, 164, 98, 76, 164, 98, 76, 172, 102, 84,
-       156, 90, 68, 164, 94, 76, 164, 98, 76, 164, 94, 76, 156, 86, 68,
-       156, 94, 76, 180, 110, 92, 172, 98, 76, 172, 102, 76, 172, 102, 84,
-       164, 98, 76, 172, 98, 76, 180, 110, 84, 188, 122, 100, 188, 118, 92,
-      180, 114, 92, 188, 118, 100, 188, 118, 92, 188, 122, 100, 180, 114, 92,
-       180, 110, 92, 172, 102, 76, 172, 106, 84, 188, 118, 92, 188, 122, 100,
-      188, 122, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 172, 102, 76,
-       172, 102, 76, 180, 106, 84, 180, 110, 92, 180, 114, 92, 188, 118, 92,
-       188, 114, 92, 180, 114, 92, 188, 114, 92, 188, 118, 100, 188, 118, 92,
-       180, 114, 92, 172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84,
-       180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 76, 164, 98, 76,
-       172, 102, 76, 172, 106, 76, 172, 102, 84, 172, 102, 76, 172, 106, 84,
-       180, 110, 92, 180, 114, 92, 180, 110, 84, 172, 110, 84, 180, 106, 84,
-       180, 110, 92, 172, 106, 76, 172, 110, 84, 180, 110, 92, 180, 110, 84,
-       180, 106, 84, 172, 106, 84, 180, 106, 84, 172, 110, 84, 180, 110, 84,
-       172, 102, 84, 172, 102, 76, 172, 102, 76, 164, 94, 68, 164, 98, 76,
-       172, 102, 76, 164, 94, 76, 172, 102, 76, 164, 98, 76, 164, 94, 76,
-       164, 98, 76, 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76,
-       164, 102, 84, 172, 98, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76,
-       156, 90, 68, 156, 90, 68, 164, 94, 76, 172, 102, 76, 172, 106, 84,
-       172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 102, 76,
-       164, 98, 76, 164, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84,
-       164, 94, 68, 164, 94, 76, 172, 102, 76, 164, 98, 76, 164, 102, 76,
-       164, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76, 156, 94, 76,
-       156, 90, 68, 156, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76,
-       164, 98, 76, 156, 94, 76, 156, 86, 68, 148, 86, 68, 148, 82, 60,
-       156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 82, 60,
-       148, 86, 68, 156, 86, 68, 156, 90, 76, 156, 90, 68, 156, 86, 68,
-       148, 78, 60, 148, 82, 60, 156, 86, 68, 156, 90, 76, 156, 90, 68,
-       156, 86, 68, 148, 86, 60, 156, 86, 68, 148, 86, 68, 148, 86, 68,
-       156, 90, 68, 156, 90, 68, 164, 94, 76, 156, 94, 76, 156, 86, 68,
-       156, 90, 68, 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68,
-       156, 86, 68, 148, 86, 68, 156, 86, 68, 156, 86, 68, 156, 90, 68,
-       156, 90, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 172, 106, 84,
-       172, 102, 84, 164, 90, 76, 172, 102, 84, 172, 102, 84, 164, 102, 92,
-       164, 102, 92, 124, 70, 60, 100, 42, 28, 84, 30, 12, 132, 70, 52,
-       140, 74, 60, 148, 78, 60, 140, 74, 52, 140, 74, 60, 140, 78, 60,
-       140, 78, 60, 140, 74, 52, 148, 78, 60, 148, 82, 60, 148, 82, 60,
-       148, 82, 68, 156, 86, 60, 156, 90, 68, 156, 90, 68, 156, 90, 76,
-       148, 82, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68, 156, 90, 68,
-       156, 86, 68, 156, 90, 68, 164, 90, 76, 172, 102, 84, 156, 94, 76,
-       156, 90, 68, 172, 98, 84, 164, 102, 84, 164, 94, 76, 164, 94, 76,
-       172, 102, 84, 180, 110, 84, 180, 110, 92, 188, 114, 92, 180, 110, 84,
-       180, 110, 92, 188, 114, 92, 188, 118, 92, 188, 118, 92, 180, 118, 92,
-       188, 114, 92, 188, 118, 92, 180, 118, 92, 180, 114, 92, 180, 110, 84,
-       180, 114, 92, 180, 118, 92, 188, 118, 100, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 188, 118, 92, 188, 122, 100, 180, 114, 92, 180, 114, 92,
-       180, 110, 84, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 84,
-       172, 102, 84, 172, 106, 76, 180, 110, 92, 188, 118, 92, 188, 118, 100,
-       188, 118, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 84,
-       180, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92,
-       180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 106, 84, 180, 110, 84,
-       180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92,
-       172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 84, 172, 106, 84,
-       172, 106, 84, 180, 106, 84, 180, 110, 92, 180, 110, 92, 172, 106, 76,
-       172, 106, 84, 172, 106, 84, 164, 94, 76, 164, 98, 76, 172, 106, 84,
-       172, 102, 76, 172, 102, 76, 164, 102, 76, 172, 98, 76, 164, 102, 76,
-       172, 102, 84, 172, 106, 76, 172, 102, 84, 172, 102, 76, 172, 102, 76,
-       164, 102, 84, 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 94, 68,
-       164, 94, 76, 172, 102, 76, 172, 106, 84, 180, 106, 84, 172, 106, 84,
-       172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 106, 84, 172, 102, 76,
-       172, 102, 76, 164, 98, 76, 172, 102, 84, 172, 106, 76, 164, 94, 76,
-       164, 98, 76, 172, 102, 76, 164, 98, 76, 172, 102, 84, 164, 98, 76,
-       156, 94, 76, 164, 102, 84, 172, 102, 84, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76, 164, 102, 84,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84, 164, 94, 76,
-       156, 94, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68, 156, 86, 68,
-       156, 90, 68, 164, 94, 76, 164, 94, 76, 156, 90, 68, 156, 86, 68,
-       156, 86, 68, 156, 94, 76, 164, 98, 76, 164, 94, 76, 156, 90, 76,
-       156, 86, 68, 148, 90, 68, 156, 90, 68, 156, 94, 68, 156, 94, 76,
-       156, 94, 76, 156, 94, 76, 156, 94, 68, 156, 94, 76, 156, 94, 76,
-       164, 94, 76, 156, 98, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68,
-       156, 90, 68, 164, 94, 84, 156, 94, 76, 164, 98, 84, 164, 98, 76,
-       164, 102, 76, 156, 98, 76, 164, 98, 76, 164, 94, 68, 156, 82, 68,
-       132, 66, 44, 140, 70, 52, 148, 78, 68, 156, 90, 76, 156, 102, 84,
-       124, 66, 52, 84, 30, 12, 92, 38, 28, 132, 66, 52, 140, 74, 52,
-       132, 74, 60, 132, 66, 44, 124, 66, 44, 140, 70, 52, 140, 78, 60,
-       148, 82, 60, 148, 82, 68, 148, 86, 60, 148, 86, 68, 156, 86, 68,
-       148, 90, 68, 156, 90, 76, 156, 94, 68, 156, 94, 76, 164, 90, 68,
-       164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 98, 84, 164, 98, 84,
-       172, 98, 76, 164, 102, 84, 172, 102, 84, 172, 98, 84, 164, 98, 76,
-       172, 102, 84, 180, 110, 84, 180, 110, 92, 172, 110, 92, 172, 102, 76,
-       180, 106, 92, 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 106, 84,
-       172, 102, 84, 180, 118, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 188, 114, 92, 180, 110, 92, 172, 110, 84, 188, 118, 100,
-       188, 118, 92, 188, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92,
-       180, 114, 92, 188, 118, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 180, 114, 92, 180, 110, 84, 172, 102, 84, 172, 102, 76,
-      172, 102, 76, 172, 110, 84, 188, 118, 100, 188, 122, 100, 188, 118, 92,
-      188, 118, 100, 188, 122, 92, 188, 122, 100, 172, 110, 84, 180, 110, 92,
-       180, 114, 84, 180, 114, 92, 188, 114, 92, 180, 118, 92, 188, 114, 92,
-       180, 118, 92, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 114, 84,
-       180, 114, 92, 188, 114, 92, 180, 114, 92, 180, 114, 84, 172, 106, 84,
-       180, 106, 84, 172, 110, 92, 180, 110, 84, 180, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 164, 94, 68, 164, 98, 76, 180, 106, 84, 172, 110, 84,
-       172, 102, 84, 172, 102, 84, 164, 102, 76, 172, 102, 76, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 76,
-       172, 106, 84, 172, 106, 84, 172, 102, 84, 164, 98, 76, 172, 102, 76,
-       172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84,
-       172, 106, 84, 180, 110, 92, 180, 110, 84, 172, 110, 84, 172, 102, 84,
-       172, 102, 76, 172, 106, 84, 180, 110, 84, 164, 98, 76, 164, 98, 76,
-       172, 106, 84, 164, 102, 76, 172, 102, 84, 164, 98, 84, 164, 98, 76,
-       172, 106, 84, 172, 110, 84, 172, 102, 84, 164, 102, 84, 164, 102, 84,
-       172, 106, 84, 164, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84,
-       156, 94, 76, 164, 98, 76, 172, 106, 84, 172, 102, 76, 164, 98, 84,
-       172, 102, 84, 164, 98, 76, 164, 94, 76, 164, 94, 76, 164, 98, 76,
-       164, 98, 84, 164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
-       172, 102, 84, 172, 102, 84, 164, 98, 76, 164, 94, 76, 156, 86, 68,
-       156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76,
-       164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 102, 76, 164, 98, 76,
-       164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 94, 76,
-       164, 98, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92, 164, 102, 84,
-       164, 98, 76, 156, 94, 68, 156, 90, 68, 156, 86, 68, 132, 62, 44,
-       140, 66, 52, 140, 74, 60, 156, 94, 84, 172, 110, 100, 132, 74, 60,
-       92, 38, 28, 116, 58, 44, 164, 106, 84, 180, 114, 92, 180, 114, 92,
-      172, 106, 84, 172, 106, 84, 172, 110, 92, 188, 122, 100, 188, 126, 100,
-       180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92,
-       180, 110, 92, 172, 110, 92, 180, 110, 92, 164, 102, 84, 172, 106, 84,
-       180, 106, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92,
-       180, 110, 92, 172, 110, 84, 180, 114, 92, 180, 114, 100, 180, 114, 92,
-     180, 114, 100, 188, 122, 100, 188, 122, 100, 188, 114, 92, 180, 114, 92,
-       188, 114, 92, 188, 114, 92, 188, 122, 100, 188, 114, 92, 180, 110, 84,
-       180, 110, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
-       180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92, 180, 110, 84,
-       180, 110, 92, 172, 110, 84, 172, 106, 84, 180, 106, 84, 180, 110, 84,
-       180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 102, 76, 180, 110, 92,
-       180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 114, 92,
-       188, 118, 92, 188, 122, 100, 188, 114, 92, 180, 110, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92, 188, 118, 92,
-       180, 110, 92, 180, 114, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 180, 110, 84, 172, 106, 84, 172, 102, 84, 172, 106, 76,
-       172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 106, 84,
-       180, 106, 84, 172, 110, 84, 172, 102, 84, 180, 110, 84, 172, 106, 84,
-       164, 94, 68, 164, 98, 76, 172, 106, 84, 180, 110, 84, 172, 106, 84,
-       172, 102, 76, 172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 76, 172, 102, 76, 172, 102, 84, 164, 102, 76, 172, 102, 84,
-       172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84, 180, 110, 84,
-       180, 110, 92, 180, 114, 84, 180, 110, 92, 172, 106, 84, 180, 106, 84,
-       172, 110, 84, 180, 106, 84, 172, 110, 92, 180, 106, 84, 172, 106, 84,
-       180, 110, 84, 172, 106, 84, 164, 98, 76, 172, 98, 76, 180, 110, 84,
-       172, 106, 84, 172, 102, 84, 164, 98, 76, 164, 102, 84, 172, 106, 84,
-       172, 110, 92, 172, 106, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84,
-       164, 98, 76, 164, 98, 76, 164, 102, 84, 164, 98, 76, 156, 90, 68,
-       156, 90, 68, 164, 98, 84, 164, 98, 84, 172, 102, 76, 172, 102, 84,
-       164, 102, 84, 164, 98, 76, 164, 98, 84, 172, 102, 84, 172, 106, 84,
-       172, 98, 84, 164, 98, 76, 164, 98, 76, 172, 98, 84, 172, 106, 84,
-       172, 106, 84, 164, 98, 84, 164, 94, 76, 156, 94, 76, 164, 98, 76,
-       164, 98, 76, 164, 102, 76, 164, 102, 84, 164, 98, 76, 164, 98, 76,
-       156, 94, 76, 164, 102, 76, 172, 102, 84, 164, 102, 84, 164, 102, 76,
-       164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 98, 84, 164, 98, 84,
-       164, 98, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84, 164, 102, 84,
-       164, 98, 76, 164, 98, 76, 172, 102, 84, 164, 90, 68, 164, 90, 76,
-       164, 94, 76, 164, 102, 92, 172, 114, 100, 140, 82, 68, 116, 58, 44,
-       116, 62, 52, 148, 86, 68, 164, 98, 76, 164, 102, 84, 164, 98, 76,
-       156, 94, 76, 164, 98, 76, 164, 102, 84, 172, 102, 84, 164, 102, 84,
-       164, 102, 76, 164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 102, 84,
-       164, 98, 76, 164, 98, 76, 172, 102, 84, 172, 102, 84, 172, 106, 84,
-       180, 110, 84, 172, 110, 92, 180, 110, 84, 172, 106, 92, 172, 106, 84,
-       164, 90, 76, 172, 106, 84, 180, 110, 92, 172, 98, 84, 164, 98, 76,
-       172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 84,
-       188, 114, 92, 188, 118, 100, 188, 114, 92, 180, 110, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 110, 84, 180, 114, 92,
-       180, 110, 84, 180, 114, 92, 180, 106, 84, 172, 110, 84, 180, 106, 84,
-       172, 106, 84, 180, 110, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84,
-       172, 102, 76, 172, 102, 76, 172, 102, 76, 172, 102, 84, 172, 110, 92,
-       180, 110, 84, 172, 106, 84, 172, 102, 84, 172, 110, 84, 180, 110, 84,
-       180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84, 180, 110, 84,
-       180, 110, 92, 180, 114, 92, 180, 114, 92, 172, 106, 84, 172, 102, 84,
-       172, 102, 76, 172, 106, 84, 180, 106, 84, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 114, 84,
-       172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 102, 84,
-       172, 102, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84,
-       172, 102, 84, 172, 102, 76, 172, 106, 84, 172, 102, 76, 156, 90, 68,
-       164, 94, 68, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 98, 76,
-       164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 102, 76, 172, 102, 84,
-       164, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 180, 106, 84,
-       172, 106, 84, 164, 102, 76, 172, 102, 76, 172, 110, 92, 180, 110, 84,
-       172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 180, 114, 84, 172, 106, 84, 180, 106, 84,
-       172, 106, 84, 164, 94, 68, 164, 98, 76, 180, 110, 84, 180, 114, 92,
-       164, 98, 84, 156, 98, 76, 164, 98, 76, 172, 106, 84, 172, 110, 92,
-       172, 106, 84, 164, 102, 76, 164, 102, 84, 156, 90, 68, 156, 90, 68,
-       156, 94, 76, 164, 102, 76, 164, 98, 76, 156, 94, 76, 164, 98, 76,
-       164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84, 172, 98, 76,
-       164, 98, 84, 172, 98, 76, 172, 102, 84, 172, 106, 92, 164, 98, 76,
-       164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 106, 84, 172, 102, 84,
-       164, 98, 76, 156, 90, 68, 164, 98, 76, 164, 98, 76, 164, 98, 84,
-       164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 98, 84, 164, 102, 76,
-       172, 102, 84, 164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 98, 76,
-       164, 98, 76, 164, 102, 76, 164, 98, 76, 164, 98, 84, 172, 98, 84,
-       164, 102, 84, 164, 102, 84, 164, 102, 84, 164, 106, 84, 172, 102, 84,
-       172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 92, 164, 98, 84,
-       164, 102, 92, 156, 98, 84, 132, 74, 60, 116, 62, 52, 116, 58, 44,
-       148, 86, 68, 164, 94, 76, 164, 102, 84, 164, 102, 76, 164, 98, 76,
-       164, 98, 76, 164, 102, 84, 164, 98, 76, 172, 106, 84, 172, 106, 84,
-       172, 106, 92, 172, 110, 84, 172, 110, 92, 180, 110, 92, 180, 114, 92,
-       180, 114, 92, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92,
-       180, 110, 92, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 98, 84,
-       180, 114, 92, 188, 122, 100, 180, 114, 92, 172, 102, 84, 180, 106, 92,
-      188, 118, 100, 188, 122, 100, 172, 102, 84, 172, 106, 84, 180, 106, 84,
-       180, 110, 84, 180, 110, 84, 180, 106, 92, 172, 102, 76, 172, 102, 84,
-       180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 114, 92,
-       180, 114, 92, 180, 110, 84, 172, 106, 84, 172, 102, 76, 164, 98, 76,
-       172, 102, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92, 172, 102, 84,
-       172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84,
-       172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84, 172, 106, 84,
-       180, 110, 92, 180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84,
-       180, 110, 84, 180, 114, 92, 180, 114, 92, 188, 114, 92, 180, 114, 92,
-       180, 110, 92, 172, 110, 84, 172, 106, 84, 180, 114, 92, 180, 110, 92,
-       180, 110, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84,
-       172, 102, 76, 172, 102, 84, 172, 102, 84, 172, 106, 76, 164, 98, 76,
-       164, 98, 76, 172, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 76,
-       164, 98, 76, 172, 106, 84, 172, 102, 84, 164, 94, 68, 164, 94, 76,
-       172, 102, 76, 172, 102, 76, 164, 102, 84, 172, 102, 76, 164, 98, 76,
-       172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84,
-       164, 102, 76, 172, 98, 76, 164, 102, 76, 172, 106, 84, 172, 102, 76,
-       172, 102, 76, 172, 102, 84, 180, 110, 84, 180, 110, 84, 172, 102, 84,
-       172, 102, 76, 172, 106, 84, 172, 106, 76, 172, 102, 76, 172, 102, 84,
-       172, 106, 84, 180, 110, 84, 172, 106, 84, 180, 110, 84, 172, 102, 84,
-       156, 90, 68, 164, 94, 68, 172, 110, 84, 180, 114, 92, 172, 102, 76,
-       164, 94, 76, 164, 98, 76, 164, 102, 84, 172, 106, 84, 164, 102, 84,
-       164, 98, 76, 164, 98, 84, 156, 94, 76, 164, 98, 76, 164, 98, 84,
-       164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84,
-       164, 94, 76, 164, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76,
-       164, 98, 76, 172, 102, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76,
-       164, 94, 76, 164, 98, 76, 172, 102, 84, 172, 102, 84, 164, 94, 76,
-       156, 90, 68, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84,
-       164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84,
-       164, 98, 76, 164, 98, 84, 172, 102, 84, 164, 102, 84, 172, 102, 84,
-       164, 98, 84, 164, 102, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76,
-       172, 98, 84, 164, 98, 76, 172, 98, 84, 164, 94, 76, 164, 98, 84,
-       156, 98, 84, 124, 70, 60, 116, 58, 44, 116, 62, 44, 164, 98, 76,
-       164, 102, 84, 172, 106, 84, 164, 98, 84, 164, 102, 84, 172, 102, 84,
-       172, 106, 84, 164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 102, 84,
-       172, 102, 84, 172, 106, 84, 172, 110, 84, 172, 110, 92, 180, 110, 92,
-       172, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 92,
-       180, 114, 92, 180, 106, 92, 164, 102, 84, 180, 106, 84, 180, 114, 100,
-     188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 110, 92, 180, 118, 100,
-     188, 118, 100, 188, 114, 92, 188, 118, 100, 188, 118, 92, 188, 118, 100,
-       188, 114, 92, 188, 122, 100, 172, 106, 84, 172, 106, 84, 180, 110, 84,
-       172, 110, 92, 180, 110, 84, 172, 106, 84, 172, 110, 84, 180, 110, 84,
-       180, 114, 92, 172, 106, 84, 172, 102, 84, 172, 102, 76, 172, 106, 84,
-       180, 110, 84, 180, 114, 92, 180, 114, 92, 180, 110, 84, 172, 110, 84,
-       172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84,
-       172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92,
-       180, 114, 92, 180, 114, 92, 180, 106, 84, 172, 106, 84, 172, 106, 84,
-       180, 110, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 114, 92,
-       180, 110, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84,
-       172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 76, 172, 106, 84,
-       172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84,
-       172, 102, 76, 172, 106, 84, 180, 110, 84, 180, 106, 84, 172, 102, 76,
-       172, 106, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 102, 84,
-       164, 98, 76, 172, 106, 76, 172, 102, 84, 164, 98, 76, 172, 102, 76,
-       172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84,
-       172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 98, 76,
-       164, 102, 84, 180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 76,
-       172, 106, 84, 172, 106, 84, 172, 98, 76, 172, 102, 76, 172, 106, 84,
-       172, 106, 84, 172, 102, 84, 180, 110, 84, 172, 106, 84, 156, 94, 68,
-       164, 90, 68, 172, 106, 84, 180, 110, 84, 164, 102, 84, 164, 98, 76,
-       164, 98, 76, 164, 102, 84, 172, 106, 84, 164, 98, 84, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 172, 106, 84, 172, 106, 84, 164, 98, 76,
-       164, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76,
-       164, 98, 84, 172, 102, 84, 172, 98, 76, 164, 98, 76, 164, 94, 76,
-       164, 98, 76, 172, 102, 84, 164, 98, 84, 164, 94, 76, 164, 94, 76,
-       164, 94, 76, 164, 98, 84, 164, 98, 76, 164, 94, 76, 156, 86, 68,
-       164, 94, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84,
-       172, 102, 76, 164, 102, 84, 164, 102, 76, 172, 102, 84, 164, 102, 76,
-       164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 84,
-       164, 102, 76, 164, 102, 84, 172, 98, 84, 164, 102, 84, 164, 98, 76,
-       164, 102, 84, 156, 98, 76, 164, 98, 76, 164, 94, 76, 164, 98, 76,
-       172, 98, 84, 172, 98, 84, 164, 90, 76, 172, 106, 92, 164, 106, 92,
-       132, 70, 60, 116, 62, 44, 116, 58, 44, 164, 98, 84, 164, 98, 76,
-       164, 98, 76, 156, 90, 68, 156, 90, 68, 164, 98, 76, 164, 102, 84,
-       164, 98, 76, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 92, 172, 106, 84, 172, 110, 92, 172, 106, 84, 180, 110, 92,
-       172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 100, 180, 110, 92,
-       172, 106, 84, 164, 98, 76, 180, 110, 92, 180, 110, 92, 180, 114, 92,
-      188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 110, 92, 180, 110, 92,
-       180, 114, 92, 188, 118, 92, 188, 118, 100, 180, 110, 84, 180, 110, 92,
-       188, 118, 92, 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 92,
-       180, 110, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84, 180, 110, 92,
-       172, 106, 84, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
-       180, 110, 92, 180, 106, 84, 172, 110, 84, 180, 106, 84, 180, 110, 92,
-       180, 110, 84, 180, 118, 100, 188, 114, 92, 180, 114, 92, 180, 110, 92,
-      188, 122, 100, 188, 118, 92, 180, 114, 100, 180, 114, 84, 180, 110, 92,
-       180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 84, 172, 110, 84,
-       180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92, 180, 110, 84,
-       180, 110, 92, 164, 98, 76, 172, 102, 76, 172, 106, 84, 172, 102, 76,
-       172, 102, 76, 172, 102, 76, 172, 106, 84, 180, 106, 84, 180, 110, 84,
-       180, 110, 84, 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       172, 110, 84, 180, 114, 92, 180, 110, 92, 172, 106, 84, 180, 106, 84,
-       180, 110, 84, 172, 102, 76, 172, 102, 76, 172, 102, 76, 164, 94, 76,
-       172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84,
-       180, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84,
-       180, 110, 84, 180, 110, 92, 172, 106, 76, 172, 102, 84, 172, 106, 84,
-       172, 106, 84, 172, 102, 76, 164, 102, 76, 180, 106, 84, 164, 98, 76,
-       164, 102, 76, 180, 110, 84, 172, 110, 84, 164, 94, 76, 156, 94, 68,
-       172, 102, 84, 172, 106, 84, 172, 106, 92, 164, 102, 84, 164, 98, 76,
-       164, 102, 84, 172, 102, 84, 164, 98, 76, 164, 98, 84, 164, 102, 84,
-       156, 90, 68, 164, 102, 84, 164, 102, 84, 156, 86, 68, 148, 86, 68,
-       172, 102, 84, 172, 110, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84,
-       172, 102, 84, 164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
-       164, 98, 76, 172, 98, 84, 164, 98, 76, 156, 90, 76, 164, 94, 76,
-       172, 98, 76, 164, 98, 84, 164, 94, 76, 156, 90, 68, 148, 90, 68,
-       156, 94, 76, 164, 94, 76, 164, 102, 84, 164, 102, 84, 164, 102, 84,
-       164, 98, 76, 164, 98, 84, 172, 106, 84, 164, 102, 84, 172, 102, 84,
-       164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 102, 76, 164, 98, 84,
-       164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 102, 84, 164, 102, 84,
-       164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76, 164, 94, 84,
-       164, 98, 84, 156, 94, 76, 164, 106, 92, 164, 102, 92, 124, 66, 52,
-       116, 58, 44, 116, 58, 36, 164, 106, 92, 172, 106, 84, 164, 106, 84,
-       172, 102, 84, 164, 102, 84, 164, 102, 84, 164, 102, 76, 164, 98, 84,
-       172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84, 172, 106, 92,
-       172, 106, 84, 172, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92,
-      172, 110, 92, 180, 110, 92, 188, 118, 92, 188, 118, 100, 180, 114, 100,
-      180, 114, 92, 180, 114, 92, 180, 114, 92, 188, 118, 100, 180, 114, 100,
-       180, 114, 92, 180, 114, 92, 180, 110, 92, 172, 106, 84, 188, 118, 100,
-       188, 118, 92, 188, 118, 100, 188, 118, 92, 188, 118, 92, 180, 114, 92,
-      180, 106, 92, 180, 114, 92, 188, 118, 100, 180, 114, 100, 180, 110, 92,
-       172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92,
-      172, 106, 84, 172, 106, 84, 180, 114, 92, 188, 122, 100, 188, 118, 100,
-     180, 118, 92, 188, 114, 100, 180, 118, 92, 188, 118, 100, 188, 118, 100,
-     188, 118, 100, 180, 114, 92, 180, 118, 92, 188, 118, 100, 188, 122, 100,
-      188, 118, 100, 180, 114, 92, 188, 114, 92, 180, 114, 100, 180, 114, 92,
-       180, 110, 92, 172, 106, 84, 188, 118, 92, 180, 114, 92, 172, 110, 84,
-       172, 110, 84, 172, 110, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84,
-       172, 110, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84,
-       172, 102, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       180, 110, 84, 180, 114, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92,
-       180, 110, 84, 172, 106, 84, 172, 106, 76, 172, 102, 84, 164, 102, 76,
-       164, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76,
-       172, 102, 84, 172, 106, 84, 180, 110, 84, 180, 110, 92, 172, 106, 84,
-       172, 106, 84, 172, 102, 84, 180, 106, 84, 172, 106, 84, 180, 106, 92,
-       172, 106, 84, 180, 106, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84, 172, 98, 76,
-       164, 102, 76, 172, 110, 84, 180, 118, 92, 172, 106, 84, 172, 110, 84,
-       172, 102, 84, 172, 102, 76, 164, 102, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 68, 164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 164, 98, 76,
-       164, 98, 76, 156, 98, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76,
-       164, 98, 84, 164, 106, 84, 164, 98, 76, 164, 98, 76, 156, 94, 76,
-       156, 94, 76, 164, 94, 76, 164, 98, 76, 172, 102, 84, 164, 102, 84,
-       164, 94, 76, 156, 98, 76, 164, 94, 76, 164, 98, 76, 164, 98, 76,
-       164, 102, 76, 164, 94, 76, 156, 94, 76, 148, 86, 68, 164, 94, 76,
-       164, 102, 84, 164, 102, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84,
-       164, 94, 84, 164, 90, 76, 164, 94, 76, 164, 98, 84, 164, 98, 84,
-       164, 94, 76, 164, 94, 76, 172, 102, 84, 164, 98, 76, 172, 98, 84,
-       164, 98, 84, 172, 110, 92, 164, 102, 84, 124, 66, 52, 116, 58, 36,
-       108, 46, 28, 180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 84,
-       172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92,
-       172, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 84, 172, 110, 92,
-       180, 114, 92, 180, 118, 100, 180, 110, 92, 172, 106, 84, 180, 110, 92,
-      180, 110, 92, 180, 114, 100, 188, 118, 100, 180, 114, 92, 180, 114, 92,
-      180, 114, 100, 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92,
-       180, 110, 92, 172, 106, 92, 180, 106, 84, 180, 114, 92, 180, 110, 92,
-       180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 92,
-       180, 110, 92, 188, 118, 100, 180, 114, 92, 180, 110, 92, 172, 106, 84,
-       180, 106, 92, 180, 110, 92, 180, 114, 92, 172, 106, 92, 172, 106, 84,
-      180, 106, 92, 180, 114, 92, 188, 118, 100, 188, 118, 100, 180, 114, 92,
-    180, 110, 92, 180, 114, 100, 188, 118, 100, 188, 118, 100, 180, 118, 100,
-   188, 118, 100, 188, 118, 100, 188, 118, 100, 196, 126, 108, 188, 122, 100,
-   188, 118, 100, 188, 118, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100,
-       180, 114, 92, 188, 118, 100, 180, 118, 92, 180, 110, 84, 180, 110, 92,
-       180, 114, 84, 180, 114, 92, 180, 110, 92, 180, 110, 84, 180, 110, 92,
-       180, 110, 84, 180, 110, 92, 180, 110, 92, 188, 114, 84, 180, 110, 92,
-       180, 110, 84, 188, 114, 92, 188, 114, 92, 180, 118, 92, 188, 118, 100,
-      188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 118, 100, 180, 118, 92,
-       180, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 102, 84,
-       172, 102, 76, 172, 106, 84, 172, 106, 84, 172, 102, 84, 164, 102, 84,
-       172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84,
-       164, 98, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84, 180, 110, 92,
-       172, 106, 84, 172, 110, 92, 180, 106, 92, 172, 110, 92, 180, 110, 84,
-       172, 114, 92, 180, 114, 92, 172, 110, 84, 172, 106, 84, 172, 106, 84,
-       180, 114, 84, 180, 118, 92, 180, 110, 84, 172, 110, 84, 172, 110, 84,
-       172, 106, 84, 164, 102, 76, 172, 102, 76, 164, 102, 76, 164, 102, 84,
-       172, 102, 76, 164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 98, 76,
-       164, 102, 84, 164, 102, 84, 172, 98, 76, 164, 98, 84, 164, 98, 76,
-       164, 94, 76, 156, 94, 68, 164, 94, 76, 164, 98, 76, 164, 98, 76,
-       164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76,
-       156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76,
-       164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 102, 84, 164, 98, 84,
-       164, 98, 76, 164, 94, 76, 156, 94, 68, 164, 102, 84, 172, 106, 84,
-       172, 110, 92, 172, 102, 84, 164, 102, 76, 172, 102, 84, 164, 106, 84,
-       164, 98, 84, 164, 98, 76, 164, 98, 84, 156, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 84, 164, 98, 84, 164, 94, 76,
-       164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 98, 84, 164, 98, 84,
-       164, 94, 76, 156, 94, 84, 156, 94, 76, 156, 94, 76, 156, 90, 76,
-       164, 98, 84, 156, 90, 76, 116, 54, 36, 108, 46, 28, 116, 54, 36,
-       172, 110, 92, 172, 110, 92, 180, 110, 92, 172, 110, 92, 172, 106, 84,
-       172, 106, 92, 164, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       172, 110, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92,
-       180, 114, 92, 180, 114, 92, 188, 114, 100, 180, 114, 92, 180, 110, 92,
-       180, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 84, 180, 106, 92,
-       172, 110, 84, 172, 106, 92, 180, 110, 84, 180, 110, 92, 180, 110, 92,
-       180, 110, 84, 180, 110, 92, 180, 106, 84, 180, 106, 84, 180, 114, 92,
-       180, 114, 100, 180, 114, 92, 172, 106, 92, 172, 106, 84, 172, 106, 84,
-       172, 106, 92, 180, 110, 92, 172, 106, 84, 172, 102, 84, 172, 106, 84,
-       180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 110, 92,
-     180, 114, 92, 188, 122, 100, 188, 118, 100, 188, 118, 100, 180, 114, 92,
-       180, 114, 92, 180, 114, 92, 180, 110, 92, 172, 106, 92, 172, 106, 84,
-       172, 106, 84, 172, 106, 92, 172, 106, 84, 180, 110, 92, 172, 110, 84,
-       180, 114, 92, 180, 114, 92, 172, 110, 84, 172, 110, 84, 172, 110, 84,
-       180, 110, 92, 180, 114, 84, 172, 110, 84, 172, 102, 84, 172, 106, 76,
-       172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 106, 84,
-       172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 92, 180, 110, 84,
-       180, 110, 92, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84,
-       172, 106, 84, 164, 102, 84, 172, 102, 76, 164, 102, 76, 172, 102, 84,
-       172, 106, 76, 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 106, 84,
-       180, 106, 84, 172, 106, 92, 172, 106, 84, 172, 102, 84, 172, 102, 84,
-       172, 102, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92,
-       180, 106, 84, 172, 106, 92, 172, 110, 84, 180, 110, 92, 180, 110, 92,
-       172, 114, 92, 180, 110, 84, 172, 114, 92, 180, 110, 84, 172, 114, 92,
-       180, 110, 92, 172, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84,
-       164, 106, 84, 172, 106, 84, 164, 102, 84, 172, 106, 84, 164, 98, 76,
-       164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84, 164, 98, 76,
-       164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 156, 94, 76,
-       156, 90, 76, 156, 94, 68, 156, 94, 76, 156, 94, 76, 164, 98, 76,
-       164, 102, 84, 164, 102, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76,
-       156, 94, 68, 156, 90, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76,
-       156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       156, 94, 76, 156, 86, 68, 156, 94, 68, 164, 98, 76, 164, 98, 76,
-       156, 94, 76, 156, 90, 68, 156, 94, 76, 164, 94, 76, 156, 98, 76,
-       164, 94, 76, 156, 98, 76, 164, 94, 76, 164, 98, 76, 156, 94, 76,
-       164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 90, 76,
-       156, 90, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 94, 76,
-       164, 98, 84, 164, 94, 76, 164, 98, 84, 156, 94, 76, 164, 102, 84,
-       156, 94, 76, 116, 58, 36, 116, 54, 36, 116, 58, 36, 180, 114, 100,
-       180, 118, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92,
-       180, 110, 92, 172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92,
-       180, 114, 92, 172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 100,
-    180, 114, 92, 180, 114, 100, 188, 118, 100, 188, 118, 100, 188, 122, 100,
-   196, 126, 108, 188, 122, 108, 196, 126, 100, 188, 122, 108, 188, 122, 100,
-   188, 118, 100, 180, 118, 100, 188, 114, 100, 180, 118, 100, 188, 118, 100,
-   188, 118, 100, 196, 126, 108, 188, 126, 100, 196, 126, 108, 188, 122, 100,
-    180, 114, 100, 180, 114, 92, 188, 122, 100, 196, 122, 108, 196, 126, 108,
-    196, 126, 100, 188, 118, 100, 180, 114, 100, 188, 114, 92, 180, 118, 100,
-   188, 122, 100, 188, 118, 100, 188, 114, 100, 188, 118, 100, 188, 122, 100,
-   196, 122, 108, 188, 126, 108, 188, 122, 100, 196, 126, 108, 196, 130, 108,
-   196, 130, 116, 196, 130, 108, 196, 126, 108, 188, 118, 100, 180, 114, 100,
-       180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84,
-       172, 106, 84, 180, 106, 92, 180, 114, 92, 180, 114, 92, 180, 118, 92,
-       180, 118, 92, 180, 118, 92, 180, 118, 92, 188, 118, 92, 180, 118, 92,
-       180, 118, 92, 188, 118, 100, 180, 114, 84, 180, 110, 92, 188, 114, 92,
-       180, 110, 92, 188, 114, 92, 188, 118, 92, 188, 118, 100, 188, 118, 92,
-       180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84,
-       180, 110, 92, 180, 110, 84, 180, 110, 84, 188, 118, 92, 180, 114, 92,
-       180, 114, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
-    188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100, 188, 122, 108,
-    188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 114, 92,
-     180, 114, 92, 180, 114, 100, 188, 114, 92, 180, 118, 100, 188, 118, 100,
-   188, 118, 100, 188, 118, 100, 188, 122, 100, 180, 122, 100, 188, 118, 100,
-    188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 180, 118, 92,
-       172, 106, 84, 172, 110, 84, 172, 106, 84, 164, 102, 84, 172, 102, 76,
-       164, 102, 76, 164, 102, 84, 172, 102, 76, 156, 94, 76, 164, 98, 76,
-       164, 98, 76, 164, 102, 84, 164, 98, 76, 164, 102, 76, 164, 98, 76,
-       156, 98, 76, 164, 98, 84, 164, 98, 76, 156, 94, 76, 164, 94, 68,
-       156, 94, 76, 156, 94, 68, 164, 94, 76, 156, 94, 76, 164, 98, 76,
-       164, 98, 84, 164, 98, 76, 156, 94, 76, 156, 90, 68, 156, 94, 76,
-       156, 90, 68, 156, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
-       156, 98, 76, 164, 98, 76, 164, 98, 84, 156, 98, 76, 156, 94, 68,
-       164, 94, 76, 164, 98, 76, 164, 102, 84, 164, 102, 84, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 156, 94, 76, 156, 94, 68,
-       156, 94, 76, 156, 94, 76, 156, 94, 76, 156, 94, 76, 156, 94, 68,
-       156, 94, 76, 172, 98, 84, 164, 98, 84, 172, 98, 76, 164, 94, 84,
-       172, 98, 84, 164, 98, 84, 164, 98, 84, 172, 98, 84, 164, 98, 84,
-       164, 98, 84, 164, 106, 84, 164, 102, 84, 172, 110, 92, 164, 98, 84,
-       124, 66, 44, 116, 58, 36, 116, 50, 36, 172, 106, 84, 164, 102, 84,
-       172, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 102, 84,
-       172, 102, 84, 164, 102, 84, 172, 106, 84, 164, 106, 84, 172, 102, 84,
-       164, 102, 76, 172, 102, 84, 164, 102, 84, 172, 106, 84, 172, 102, 84,
-       180, 106, 84, 172, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92,
-       180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92, 180, 110, 92,
-       172, 106, 84, 180, 110, 84, 172, 106, 84, 180, 110, 92, 180, 110, 92,
-       180, 118, 92, 180, 114, 100, 180, 110, 92, 180, 110, 92, 180, 106, 92,
-       172, 102, 84, 180, 114, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92,
-       180, 110, 92, 180, 106, 92, 172, 106, 84, 172, 106, 84, 180, 106, 92,
-       172, 110, 92, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 92,
-      180, 110, 92, 180, 110, 92, 180, 110, 92, 188, 114, 100, 188, 122, 100,
-       188, 118, 100, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 98, 76,
-       172, 102, 84, 172, 102, 84, 164, 102, 84, 172, 98, 76, 164, 98, 84,
-       172, 106, 84, 180, 106, 92, 180, 110, 92, 172, 106, 92, 172, 110, 84,
-       172, 106, 84, 172, 110, 92, 172, 106, 84, 172, 110, 92, 180, 106, 84,
-       172, 110, 92, 180, 110, 84, 172, 110, 92, 180, 110, 84, 180, 110, 92,
-       180, 114, 92, 180, 114, 92, 188, 114, 92, 188, 114, 92, 180, 110, 92,
-       180, 110, 92, 180, 110, 92, 180, 110, 84, 180, 110, 92, 172, 110, 84,
-       172, 106, 84, 172, 106, 92, 172, 106, 84, 180, 106, 84, 172, 106, 84,
-       172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
-       180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 100,
-       180, 114, 92, 180, 110, 92, 180, 110, 92, 172, 102, 84, 172, 102, 84,
-       172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 110, 84, 172, 110, 92,
-       180, 110, 92, 172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92,
-       180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 102, 84, 172, 106, 92,
-       164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 98, 84, 164, 102, 76,
-       164, 98, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84,
-       172, 102, 76, 164, 102, 84, 164, 98, 84, 164, 98, 84, 164, 98, 76,
-       172, 102, 76, 164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 164, 94, 76, 164, 98, 76, 164, 94, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       164, 102, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76, 164, 98, 76,
-       164, 98, 84, 172, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76,
-       164, 98, 84, 164, 98, 76, 164, 94, 76, 164, 94, 76, 164, 94, 76,
-       156, 94, 76, 164, 94, 68, 164, 94, 76, 164, 94, 76, 156, 94, 76,
-       164, 94, 76, 164, 90, 76, 156, 94, 76, 164, 94, 76, 164, 94, 76,
-       156, 94, 76, 164, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
-       164, 102, 84, 164, 102, 84, 172, 106, 92, 156, 94, 76, 124, 62, 44,
-       116, 50, 36, 108, 50, 28, 156, 86, 68, 156, 90, 68, 148, 86, 68,
-       156, 90, 68, 148, 86, 68, 156, 90, 68, 156, 86, 68, 148, 90, 68,
-       156, 90, 68, 156, 90, 76, 156, 94, 76, 156, 90, 68, 148, 86, 68,
-       156, 86, 68, 156, 90, 68, 156, 90, 76, 148, 86, 68, 156, 86, 68,
-       156, 90, 68, 164, 90, 76, 156, 90, 68, 156, 90, 76, 164, 90, 68,
-       156, 90, 76, 164, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68,
-       156, 90, 76, 156, 90, 68, 156, 90, 68, 156, 90, 68, 156, 86, 76,
-       156, 86, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 90, 68,
-       164, 90, 76, 164, 94, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68,
-       156, 90, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68,
-       156, 90, 68, 156, 90, 68, 156, 90, 76, 164, 90, 68, 156, 90, 76,
-       156, 90, 68, 148, 86, 68, 156, 86, 68, 164, 94, 76, 164, 94, 76,
-       156, 90, 68, 156, 90, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68,
-       156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68,
-       156, 90, 68, 164, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76,
-       164, 94, 76, 156, 94, 68, 156, 90, 68, 156, 94, 68, 164, 94, 68,
-       156, 86, 68, 156, 86, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68,
-       164, 90, 76, 164, 90, 68, 164, 90, 76, 164, 94, 76, 156, 94, 68,
-       164, 94, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68, 164, 94, 76,
-       156, 90, 68, 156, 90, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68,
-       156, 90, 68, 156, 90, 68, 164, 90, 68, 156, 90, 68, 156, 90, 76,
-       156, 90, 68, 156, 90, 76, 164, 90, 68, 156, 90, 68, 156, 90, 76,
-       156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 86, 68,
-       164, 90, 76, 156, 90, 68, 164, 90, 76, 156, 94, 68, 164, 94, 76,
-       156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 94, 76,
-       156, 94, 76, 156, 90, 76, 148, 86, 68, 164, 98, 84, 164, 98, 76,
-       164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
-       156, 94, 76, 164, 94, 76, 156, 98, 76, 164, 98, 76, 164, 98, 76,
-       164, 94, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76, 164, 98, 76,
-       164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
-       164, 98, 76, 156, 94, 76, 156, 94, 76, 156, 90, 68, 156, 94, 76,
-       156, 94, 76, 164, 94, 76, 156, 98, 76, 164, 98, 76, 164, 98, 84,
-       156, 94, 76, 156, 94, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76,
-       164, 98, 76, 164, 94, 76, 156, 90, 76, 156, 90, 68, 156, 90, 68,
-       156, 94, 76, 156, 90, 68, 156, 90, 68, 156, 90, 68, 148, 90, 68,
-       156, 90, 68, 156, 90, 76, 156, 94, 68, 156, 90, 68, 156, 94, 76,
-       156, 90, 68, 156, 94, 76, 156, 90, 68, 156, 94, 68, 156, 82, 68,
-       156, 86, 76, 156, 90, 76, 156, 86, 76, 148, 86, 68, 156, 86, 68,
-       156, 86, 76, 156, 90, 68, 156, 94, 76, 164, 94, 84, 164, 98, 84,
-       156, 94, 76, 156, 98, 76, 148, 86, 68, 116, 54, 36, 108, 50, 28,
-       108, 50, 36, 140, 78, 60, 140, 78, 60, 148, 78, 60, 140, 78, 60,
-       140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60, 148, 82, 60,
-       148, 82, 60, 148, 82, 60, 148, 78, 60, 140, 74, 52, 140, 74, 52,
-       140, 78, 60, 148, 82, 60, 140, 70, 52, 140, 74, 52, 148, 74, 60,
-       140, 78, 60, 148, 74, 60, 140, 74, 52, 140, 74, 52, 140, 78, 60,
-       140, 74, 52, 148, 78, 60, 140, 74, 60, 148, 78, 60, 148, 74, 60,
-       148, 78, 60, 148, 74, 60, 148, 78, 60, 140, 70, 52, 140, 70, 52,
-       148, 74, 60, 140, 74, 60, 148, 78, 60, 148, 78, 68, 140, 78, 60,
-       148, 78, 60, 140, 78, 60, 148, 78, 60, 148, 78, 60, 148, 74, 60,
-       140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52,
-       148, 74, 60, 148, 78, 60, 140, 78, 60, 148, 74, 60, 140, 74, 52,
-       140, 70, 52, 140, 74, 52, 140, 78, 60, 148, 78, 60, 148, 78, 60,
-       148, 78, 60, 148, 78, 60, 148, 82, 60, 140, 74, 52, 140, 74, 52,
-       140, 78, 60, 140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52,
-       140, 78, 60, 140, 82, 60, 148, 82, 60, 148, 86, 68, 148, 86, 60,
-       140, 82, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 140, 70, 52,
-       140, 70, 52, 140, 74, 52, 140, 70, 52, 140, 74, 52, 140, 70, 52,
-       140, 74, 52, 140, 74, 52, 140, 78, 60, 148, 74, 60, 140, 74, 52,
-       140, 74, 60, 140, 74, 52, 140, 74, 60, 140, 78, 60, 148, 78, 60,
-       156, 82, 60, 148, 82, 68, 156, 82, 60, 148, 82, 68, 148, 82, 60,
-       156, 82, 68, 148, 82, 60, 148, 82, 68, 148, 82, 60, 148, 82, 60,
-       148, 82, 60, 148, 82, 68, 148, 78, 60, 156, 82, 60, 148, 82, 68,
-       148, 82, 60, 156, 82, 60, 148, 82, 60, 156, 82, 68, 148, 82, 60,
-       156, 86, 68, 148, 82, 60, 156, 82, 68, 148, 82, 60, 148, 82, 68,
-       148, 82, 68, 148, 82, 68, 148, 86, 68, 148, 82, 68, 156, 86, 68,
-       148, 82, 68, 148, 82, 60, 148, 82, 68, 140, 78, 60, 148, 78, 68,
-       140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 78, 60, 140, 78, 60,
-       148, 82, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60,
-       140, 78, 60, 148, 78, 60, 148, 82, 60, 140, 78, 60, 148, 78, 60,
-       140, 78, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 148, 78, 60,
-       148, 82, 60, 140, 74, 52, 140, 78, 60, 148, 78, 60, 140, 78, 60,
-       148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 78, 60,
-       148, 78, 60, 140, 78, 60, 140, 78, 60, 148, 82, 60, 148, 82, 60,
-       148, 78, 60, 140, 78, 60, 148, 86, 60, 148, 82, 68, 148, 82, 60,
-       148, 82, 60, 140, 78, 60, 148, 82, 60, 148, 78, 60, 148, 78, 60,
-       140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60,
-       140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 82, 68, 148, 82, 68,
-       148, 86, 68, 156, 82, 68, 148, 82, 68, 148, 82, 68, 148, 82, 68,
-       148, 86, 68, 148, 82, 68, 148, 78, 60, 140, 82, 60, 140, 74, 60,
-       140, 78, 60, 140, 74, 60, 116, 50, 36, 108, 50, 36, 108, 50, 28,
-       108, 42, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 116, 46, 28,
-       108, 42, 20, 116, 46, 28, 108, 42, 20, 108, 46, 28, 108, 46, 28,
-       116, 46, 28, 108, 46, 20, 108, 42, 20, 100, 42, 20, 108, 42, 20,
-       108, 42, 28, 108, 42, 20, 116, 46, 28, 116, 46, 28, 116, 46, 28,
-       108, 42, 20, 108, 38, 20, 108, 42, 28, 116, 42, 28, 108, 42, 20,
-       116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 50, 28, 108, 46, 28,
-       116, 46, 28, 108, 42, 20, 108, 42, 28, 116, 42, 28, 108, 46, 28,
-       116, 46, 28, 116, 46, 28, 108, 46, 28, 116, 42, 28, 108, 42, 20,
-       116, 46, 28, 108, 42, 20, 116, 46, 28, 108, 46, 28, 108, 42, 20,
-       116, 42, 28, 108, 38, 20, 108, 42, 28, 116, 46, 28, 108, 46, 28,
-       116, 46, 28, 108, 42, 20, 108, 42, 20, 116, 42, 28, 116, 46, 28,
-       116, 50, 28, 116, 50, 28, 116, 50, 28, 116, 46, 28, 116, 46, 28,
-       116, 46, 28, 116, 50, 28, 116, 46, 28, 116, 50, 36, 124, 50, 36,
-       116, 50, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28,
-       108, 46, 20, 108, 50, 28, 116, 50, 28, 116, 54, 28, 108, 46, 28,
-       108, 46, 20, 108, 42, 20, 108, 42, 20, 116, 50, 28, 116, 46, 28,
-       116, 46, 28, 116, 46, 28, 116, 46, 28, 108, 46, 28, 116, 46, 28,
-       116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 42, 28,
-       116, 46, 28, 116, 46, 28, 116, 50, 28, 124, 50, 36, 124, 58, 36,
-       124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 44, 124, 58, 36,
-       124, 58, 36, 124, 54, 36, 132, 62, 44, 124, 54, 36, 124, 58, 36,
-       124, 58, 36, 124, 58, 36, 124, 54, 44, 124, 58, 36, 132, 62, 44,
-       124, 54, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36,
-       124, 54, 36, 124, 58, 36, 124, 58, 36, 124, 58, 44, 124, 58, 36,
-       124, 58, 44, 124, 54, 36, 124, 58, 44, 124, 58, 36, 124, 58, 44,
-       124, 58, 44, 132, 62, 44, 124, 62, 44, 132, 62, 44, 124, 58, 44,
-       124, 58, 44, 124, 58, 44, 132, 62, 44, 124, 62, 44, 132, 62, 44,
-       124, 62, 44, 124, 62, 44, 124, 58, 36, 124, 58, 36, 124, 62, 44,
-       124, 62, 44, 132, 62, 44, 116, 58, 36, 124, 58, 36, 124, 58, 44,
-       124, 62, 44, 124, 62, 44, 124, 62, 44, 124, 62, 44, 124, 58, 36,
-       124, 62, 44, 124, 58, 36, 124, 62, 44, 132, 62, 44, 124, 62, 44,
-       132, 62, 44, 124, 66, 44, 132, 62, 44, 124, 62, 44, 124, 58, 36,
-       124, 58, 36, 124, 62, 44, 132, 62, 44, 124, 62, 44, 124, 62, 44,
-       124, 58, 36, 124, 62, 44, 124, 58, 36, 124, 58, 36, 124, 58, 44,
-       124, 58, 36, 124, 58, 36, 116, 58, 36, 124, 58, 36, 124, 58, 36,
-       124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36,
-       124, 58, 36, 124, 58, 36, 124, 50, 36, 124, 54, 36, 124, 54, 36,
-       124, 54, 36, 116, 54, 36, 116, 50, 36, 124, 54, 36, 124, 54, 44,
-       124, 54, 36, 116, 54, 36, 116, 54, 36, 108, 46, 28, 124, 58, 44,
-       124, 58, 44, 100, 42, 20, 108, 50, 28
-};
diff --git a/hacks/glx/gears.c b/hacks/glx/gears.c
deleted file mode 100644 (file)
index 1350f73..0000000
+++ /dev/null
@@ -1,516 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* gears --- 3D gear wheels */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)gears.c      4.07 97/11/24 xlockmore";
-
-#endif
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- * 22-Mar-97: Added support for -mono mode, and monochrome X servers.
- *              Ed Mackey, emackey@netaxs.com
- * 13-Mar-97: Memory leak fix by Tom Schmidt <tschmidt@micron.com>
- * 1996: "written" by Danny Sung <dannys@ucla.edu>
- *       Based on 3-D gear wheels by Brian Paul which is in the public domain.
- */
-
-/*-
- * PURIFY 3.0a on SunOS4 reports an unitialized memory read on each of
- * the glCallList() functions below when using MesaGL 2.1.  This has
- * been fixed in MesaGL 2.2 and later releases.
- */
-
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Gears"
-# define HACK_INIT                                     init_gears
-# define HACK_DRAW                                     draw_gears
-# define gears_opts                                    xlockmore_opts
-# define DEFAULTS      "*count:                1       \n"                     \
-                                       "*cycles:               2       \n"                     \
-                                       "*delay:                100     \n"                     \
-                                       "*wireframe:    False   \n"
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-ModeSpecOpt gears_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   gears_description =
-{"gears", "init_gears", "draw_gears", "release_gears",
- "draw_gears", "init_gears", NULL, &gears_opts,
- 1000, 1, 2, 1, 4, 1.0, "",
- "Shows GL's gears", 0, NULL};
-
-#endif
-
-typedef struct {
-       GLfloat     view_rotx, view_roty, view_rotz;
-       GLuint      gear1, gear2, gear3;
-       GLfloat     angle;
-       GLXContext *glx_context;
-       Window      window;
-#if 0
-       Window      win;
-#endif
-} gearsstruct;
-
-static gearsstruct *gears = NULL;
-
-/*-
- * Draw a gear wheel.  You'll probably want to call this function when
- * building a display list since we do a lot of trig here.
- *
- * Input:  inner_radius - radius of hole at center
- *         outer_radius - radius at center of teeth
- *         width - width of gear
- *         teeth - number of teeth
- *         tooth_depth - depth of tooth
- *         wire - true for wireframe mode
- */
-static void
-gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
-     GLint teeth, GLfloat tooth_depth, Bool wire)
-{
-       GLint       i;
-       GLfloat     r0, r1, r2;
-       GLfloat     angle, da;
-       GLfloat     u, v, len;
-
-       r0 = inner_radius;
-       r1 = outer_radius - tooth_depth / 2.0;
-       r2 = outer_radius + tooth_depth / 2.0;
-
-       da = 2.0 * M_PI / teeth / 4.0;
-
-       glShadeModel(GL_FLAT);
-
-       /* This subroutine got kind of messy when I added all the checks
-        * for wireframe mode.  A much cleaner solution that I sometimes
-        * use is to have a variable hold the value GL_LINE_LOOP when
-        * in wireframe mode, or hold the value GL_POLYGON otherwise.
-        * Then I just call glBegin(that_variable), give my polygon
-        * coordinates, and glEnd().  Pretty neat eh?  Too bad I couldn't
-        * integrate that trick here.
-        *                                  --Ed.
-        */
-
-       if (!wire)
-               glNormal3f(0.0, 0.0, 1.0);
-
-       /* draw front face */
-       if (!wire)
-               glBegin(GL_QUAD_STRIP);
-       for (i = 0; i <= teeth; i++) {
-               if (wire)
-                       glBegin(GL_LINES);
-               angle = i * 2.0 * M_PI / teeth;
-               glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
-               glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
-               if (!wire) {
-                       glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
-                       glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
-               } else {
-                       glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
-                       glVertex3f(r1 * cos(angle + 4 * da), r1 * sin(angle + 4 * da), width * 0.5);
-                       glEnd();
-               }
-       }
-       if (!wire)
-               glEnd();
-
-       /* draw front sides of teeth */
-       if (!wire)
-               glBegin(GL_QUADS);
-       da = 2.0 * M_PI / teeth / 4.0;
-       for (i = 0; i < teeth; i++) {
-               angle = i * 2.0 * M_PI / teeth;
-
-               if (wire)
-                       glBegin(GL_LINE_LOOP);
-               glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
-               glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
-               glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
-               glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
-               if (wire)
-                       glEnd();
-       }
-       if (!wire)
-               glEnd();
-
-
-       if (!wire)
-               glNormal3f(0.0, 0.0, -1.0);
-
-       /* draw back face */
-       if (!wire)
-               glBegin(GL_QUAD_STRIP);
-       for (i = 0; i <= teeth; i++) {
-               angle = i * 2.0 * M_PI / teeth;
-               if (wire)
-                       glBegin(GL_LINES);
-               glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
-               glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
-               if (!wire) {
-                       glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
-                       glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
-               } else {
-                       glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
-                       glVertex3f(r1 * cos(angle + 4 * da), r1 * sin(angle + 4 * da), -width * 0.5);
-                       glEnd();
-               }
-       }
-       if (!wire)
-               glEnd();
-
-       /* draw back sides of teeth */
-       if (!wire)
-               glBegin(GL_QUADS);
-       da = 2.0 * M_PI / teeth / 4.0;
-       for (i = 0; i < teeth; i++) {
-               angle = i * 2.0 * M_PI / teeth;
-
-               if (wire)
-                       glBegin(GL_LINE_LOOP);
-               glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
-               glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
-               glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
-               glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
-               if (wire)
-                       glEnd();
-       }
-       if (!wire)
-               glEnd();
-
-
-       /* draw outward faces of teeth */
-       if (!wire)
-               glBegin(GL_QUAD_STRIP);
-       for (i = 0; i < teeth; i++) {
-               angle = i * 2.0 * M_PI / teeth;
-
-               if (wire)
-                       glBegin(GL_LINES);
-               glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
-               glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
-               u = r2 * cos(angle + da) - r1 * cos(angle);
-               v = r2 * sin(angle + da) - r1 * sin(angle);
-               len = sqrt(u * u + v * v);
-               u /= len;
-               v /= len;
-               glNormal3f(v, -u, 0.0);
-               glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
-               glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
-               glNormal3f(cos(angle), sin(angle), 0.0);
-               glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
-               glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
-               u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da);
-               v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da);
-               glNormal3f(v, -u, 0.0);
-               glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
-               glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
-               glNormal3f(cos(angle), sin(angle), 0.0);
-               if (wire)
-                       glEnd();
-       }
-
-       if (!wire) {
-               glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5);
-               glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5);
-               glEnd();
-       }
-       if (!wire)
-               glShadeModel(GL_SMOOTH);
-
-       /* draw inside radius cylinder */
-       if (!wire)
-               glBegin(GL_QUAD_STRIP);
-       for (i = 0; i <= teeth; i++) {
-               angle = i * 2.0 * M_PI / teeth;
-               if (wire)
-                       glBegin(GL_LINES);
-               glNormal3f(-cos(angle), -sin(angle), 0.0);
-               glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
-               glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
-               if (wire) {
-                       glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
-                       glVertex3f(r0 * cos(angle + 4 * da), r0 * sin(angle + 4 * da), -width * 0.5);
-                       glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
-                       glVertex3f(r0 * cos(angle + 4 * da), r0 * sin(angle + 4 * da), width * 0.5);
-                       glEnd();
-               }
-       }
-       if (!wire)
-               glEnd();
-
-}
-
-static void
-draw(ModeInfo * mi)
-{
-       gearsstruct *gp = &gears[MI_SCREEN(mi)];
-       int         wire = MI_IS_WIREFRAME(mi);
-
-       if (!wire) {
-               glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-       } else {
-               glClear(GL_COLOR_BUFFER_BIT);
-       }
-
-       glPushMatrix();
-       glRotatef(gp->view_rotx, 1.0, 0.0, 0.0);
-       glRotatef(gp->view_roty, 0.0, 1.0, 0.0);
-       glRotatef(gp->view_rotz, 0.0, 0.0, 1.0);
-
-       glPushMatrix();
-       glTranslatef(-3.0, -2.0, 0.0);
-       glRotatef(gp->angle, 0.0, 0.0, 1.0);
-/* PURIFY 4.0.1 reports an unitialized memory read on the next line when using
-   * MesaGL 2.2 and -mono.  This has been fixed in MesaGL 2.3 and later. */
-       glCallList(gp->gear1);
-       glPopMatrix();
-
-       glPushMatrix();
-       glTranslatef(3.1, -2.0, 0.0);
-       glRotatef(-2.0 * gp->angle - 9.0, 0.0, 0.0, 1.0);
-       glCallList(gp->gear2);
-       glPopMatrix();
-
-       glPushMatrix();
-       glTranslatef(-3.1, 4.2, 0.0);
-       glRotatef(-2.0 * gp->angle - 25.0, 0.0, 0.0, 1.0);
-       glCallList(gp->gear3);
-       glPopMatrix();
-
-       glPopMatrix();
-}
-
-
-
-/* new window size or exposure */
-static void
-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);
-
-       /* The depth buffer will be cleared, if needed, before the
-        * next frame.  Right now we just want to black the screen.
-        */
-       glClear(GL_COLOR_BUFFER_BIT);
-
-}
-
-
-static void
-pinit(ModeInfo * mi)
-{
-       gearsstruct *gp = &gears[MI_SCREEN(mi)];
-       static GLfloat pos[4] =
-       {5.0, 5.0, 10.0, 1.0};
-       static GLfloat red[4] =
-       {0.8, 0.1, 0.0, 1.0};
-       static GLfloat green[4] =
-       {0.0, 0.8, 0.2, 1.0};
-       static GLfloat blue[4] =
-       {0.2, 0.2, 1.0, 1.0};
-       static GLfloat gray[4] =
-       {0.5, 0.5, 0.5, 1.0};
-       static GLfloat white[4] =
-       {1.0, 1.0, 1.0, 1.0};
-       int         wire = MI_IS_WIREFRAME(mi);
-       int         mono = MI_IS_MONO(mi);
-
-       if (!wire) {
-               glLightfv(GL_LIGHT0, GL_POSITION, pos);
-               glEnable(GL_CULL_FACE);
-               glEnable(GL_LIGHTING);
-               glEnable(GL_LIGHT0);
-               glEnable(GL_DEPTH_TEST);
-       }
-#if 0
-/*-
- * Messes up on multiscreen Pseudocolor:0 StaticGray(monochrome):1
- * 2nd time mode is run it is Grayscale on PseudoColor.
- * The code below forces monochrome on TrueColor.
- */
-       if (MI_IS_MONO(mi)) {
-               red[0] = red[1] = red[2] = 1.0;
-               green[0] = green[1] = green[2] = 1.0;
-               blue[0] = blue[1] = blue[2] = 1.0;
-       }
-#endif
-
-       /* make the gears */
-       gp->gear1 = glGenLists(1);
-       glNewList(gp->gear1, GL_COMPILE);
-       if (wire) {
-               if (mono)
-                       glColor4fv(white);
-               else
-                       glColor4fv(red);
-       } else {
-               if (mono)
-                       glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gray);
-               else
-                       glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
-       }
-       gear(1.0, 4.0, 1.0, 20, 0.7, wire);
-       glEndList();
-
-       gp->gear2 = glGenLists(1);
-       glNewList(gp->gear2, GL_COMPILE);
-       if (wire) {
-               if (mono)
-                       glColor4fv(white);
-               else
-                       glColor4fv(green);
-       } else {
-               if (mono)
-                       glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gray);
-               else
-                       glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
-       }
-       gear(0.5, 2.0, 2.0, 10, 0.7, wire);
-       glEndList();
-
-       gp->gear3 = glGenLists(1);
-       glNewList(gp->gear3, GL_COMPILE);
-       if (wire) {
-               if (mono)
-                       glColor4fv(white);
-               else
-                       glColor4fv(blue);
-       } else {
-               if (mono)
-                       glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gray);
-               else
-                       glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
-       }
-       gear(1.3, 2.0, 0.5, 10, 0.7, wire);
-       glEndList();
-       if (!wire)
-               glEnable(GL_NORMALIZE);
-}
-
-void
-init_gears(ModeInfo * mi)
-{
-       int         screen = MI_SCREEN(mi);
-
-       /*Colormap    cmap; */
-       /* Boolean     rgba, doublebuffer, cmap_installed; */
-       gearsstruct *gp;
-
-       if (gears == NULL) {
-               if ((gears = (gearsstruct *) calloc(MI_NUM_SCREENS(mi),
-                                             sizeof (gearsstruct))) == NULL)
-                       return;
-       }
-       gp = &gears[screen];
-
-       gp->window = MI_WINDOW(mi);
-       gp->view_rotx = NRAND(360);
-       gp->view_roty = NRAND(360);
-       gp->view_rotz = NRAND(360);
-       gp->angle = NRAND(360);
-
-       if ((gp->glx_context = init_GL(mi)) != NULL) {
-               reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
-               pinit(mi);
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-void
-draw_gears(ModeInfo * mi)
-{
-       gearsstruct *gp = &gears[MI_SCREEN(mi)];
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       int         angle_incr = MI_CYCLES(mi) ? MI_CYCLES(mi) : 2;
-       int         rot_incr = MI_COUNT(mi) ? MI_COUNT(mi) : 1;
-
-       if (!gp->glx_context)
-               return;
-
-       glDrawBuffer(GL_BACK);
-
-       glXMakeCurrent(display, window, *(gp->glx_context));
-       draw(mi);
-
-       /* let's do something so we don't get bored */
-       gp->angle = (int) (gp->angle + angle_incr) % 360;
-       gp->view_rotx = (int) (gp->view_rotx + rot_incr) % 360;
-       gp->view_roty = (int) (gp->view_roty + rot_incr) % 360;
-       gp->view_rotz = (int) (gp->view_rotz + rot_incr) % 360;
-
-       glFinish();
-       glXSwapBuffers(display, window);
-}
-
-void
-release_gears(ModeInfo * mi)
-{
-       if (gears != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       gearsstruct *gp = &gears[screen];
-
-                       if (gp->glx_context) {
-                               /* Display lists MUST be freed while their glXContext is current. */
-                               glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
-
-                               if (glIsList(gp->gear1))
-                                       glDeleteLists(gp->gear1, 1);
-                               if (glIsList(gp->gear2))
-                                       glDeleteLists(gp->gear2, 1);
-                               if (glIsList(gp->gear3))
-                                       glDeleteLists(gp->gear3, 1);
-
-                       }
-               }
-               (void) free((void *) gears);
-               gears = NULL;
-       }
-       FreeAllGL(mi);
-}
-
-
-/*********************************************************/
-
-#endif
diff --git a/hacks/glx/glplanet.c b/hacks/glx/glplanet.c
deleted file mode 100644 (file)
index 39ae21b..0000000
+++ /dev/null
@@ -1,804 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* glplanet --- 3D rotating planet, e.g., Earth. */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)plate.c      4.07 97/11/24 xlockmore";
-
-#endif
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 9-Oct-98:  dek@cgl.ucsf.edu  Added stars.
- *
- * 8-Oct-98:  jwz@jwz.org   Made the 512x512x1 xearth image be built in.
- *                          Made it possible to load XPM or XBM files.
- *                          Made the planet bounce and roll around.
- *
- * 8-Oct-98: Released initial version of "glplanet"
- * (David Konerding, dek@cgl.ucsf.edu)
- *
- * BUGS:
- * -bounce is broken
- * 
- *   For even more spectacular results, grab the images from the "SSysten"
- *   package (http://www.msu.edu/user/kamelkev/) and do this:
- *
- *     cd ssystem-1.4/hires/
- *     foreach f ( *.jpg )
- *       djpeg $f | ppmquant 254 | ppmtoxpm > /tmp/$f:r.xpm
- *     end
- *
- *     cd /tmp
- *     foreach f ( *.xpm )
- *       glplanet -image $f
- *     end
- */
-
-
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS                                             "Planet"
-# define HACK_INIT                                             init_planet
-# define HACK_DRAW                                             draw_planet
-# define planet_opts                                   xlockmore_opts
-#define DEFAULTS       "*delay:                        15000   \n"     \
-                    "*rotate:           True    \n" \
-                    "*roll:             True    \n" \
-                    "*bounce:           True    \n" \
-                                       "*wireframe:            False   \n"     \
-                                       "*light:                        True    \n"     \
-                                       "*texture:                      True    \n" \
-                                       "*stars:                        True    \n" \
-                                       "*image:                        BUILTIN \n" \
-                                       "*imageForeground:      Green   \n" \
-                                       "*imageBackground:      Blue    \n"
-
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL /* whole file */
-
-#ifdef HAVE_XPM
-# include <X11/xpm.h>
-# ifndef PIXEL_ALREADY_TYPEDEFED
-#  define PIXEL_ALREADY_TYPEDEFED /* Sigh, Xmu/Drawing.h needs this... */
-# endif
-#endif
-
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/Drawing.h>
-#else  /* VMS */
-#  include <Xmu/Drawing.h>
-# endif /* VMS */
-#endif
-
-
-#include <GL/glu.h>
-
-#define DEF_ROTATE  "True"
-#define DEF_ROLL    "True"
-#define DEF_BOUNCE  "True"
-#define DEF_TEXTURE "True"
-#define DEF_STARS "True"
-#define DEF_LIGHT   "True"
-#define DEF_IMAGE   "BUILTIN"
-
-#undef countof
-#define countof(x) (sizeof((x))/sizeof((*x)))
-
-static int do_rotate;
-static int do_roll;
-static int do_bounce;
-static int do_texture;
-static int do_stars;
-static int do_light;
-static char *which_image;
-static XrmOptionDescRec opts[] = {
-  {"-rotate",  ".glplanet.rotate",  XrmoptionNoArg, (caddr_t) "true" },
-  {"+rotate",  ".glplanet.rotate",  XrmoptionNoArg, (caddr_t) "false" },
-  {"-roll",    ".glplanet.roll",    XrmoptionNoArg, (caddr_t) "true" },
-  {"+roll",    ".glplanet.roll",    XrmoptionNoArg, (caddr_t) "false" },
-  {"-bounce",  ".glplanet.bounce",  XrmoptionNoArg, (caddr_t) "true" },
-  {"+bounce",  ".glplanet.bounce",  XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture", ".glplanet.texture", XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture", ".glplanet.texture", XrmoptionNoArg, (caddr_t) "false" },
-  {"-stars",   ".glplanet.stars",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+stars",   ".glplanet.stars",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-light",   ".glplanet.light",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+light",   ".glplanet.light",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-image",   ".glplanet.image",  XrmoptionSepArg, (caddr_t) 0 },
-};
-
-static argtype vars[] = {
-  {(caddr_t *) &do_rotate,   "rotate",  "Rotate",  DEF_ROTATE,  t_Bool},
-  {(caddr_t *) &do_roll,     "roll",    "Roll",    DEF_ROLL,    t_Bool},
-  {(caddr_t *) &do_bounce,   "bounce",  "Bounce",  DEF_BOUNCE,  t_Bool},
-  {(caddr_t *) &do_texture,  "texture", "Texture", DEF_TEXTURE, t_Bool},
-  {(caddr_t *) &do_stars,  "stars", "Stars", DEF_STARS, t_Bool},
-  {(caddr_t *) &do_light,    "light",   "Light",   DEF_LIGHT,   t_Bool},
-  {(caddr_t *) &which_image, "image",   "Image",   DEF_IMAGE,   t_String},
-};
-
-ModeSpecOpt planet_opts = {countof(opts), opts, countof(vars), vars, NULL};
-
-#ifdef USE_MODULES
-ModStruct   planet_description =
-{"planet", "init_planet", "draw_planet", "release_planet",
- "draw_planet", "init_planet", NULL, &planet_opts,
- 1000, 1, 2, 1, 4, 1.0, "",
- "Animates texture mapped sphere (planet)", 0, NULL};
-#endif
-
-#include "../images/earth.xbm"
-#include "xpm-ximage.h"
-
-
-/*-
- * slices and stacks are used in the sphere parameterization routine.
- * more slices and stacks will increase the quality of the sphere,
- * at the expense of rendering speed
- */
-
-#define NUM_STARS 1000
-#define SLICES 15
-#define STACKS 15
-
-/* radius of the sphere- fairly arbitrary */
-#define RADIUS 4
-
-/* distance away from the sphere model */
-#define DIST 40
-
-
-
-/* structure for holding the planet data */
-typedef struct {
-  GLuint platelist;
-  GLuint starlist;
-  int screen_width, screen_height;
-  GLXContext *glx_context;
-  Window window;
-
-  XColor fg, bg;
-
-  GLfloat tx, ty, tz;
-  GLfloat dtx, dty, dtz;
-  GLfloat xpos, ypos, zpos;
-  GLfloat dx, dy, dz;
-  GLfloat box_width, box_height, box_depth;
-
-} planetstruct;
-
-
-static planetstruct *planets = NULL;
-
-
-static inline void
-normalize(GLfloat v[3])
-{
-       GLfloat     d = (GLfloat) sqrt((double) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2]));
-
-       if (d != 0) {
-               v[0] /= d;
-               v[1] /= d;
-               v[2] /= d;
-       } else {
-               v[0] = v[1] = v[2] = 0;
-       }
-}
-
-
-/* Set up and enable texturing on our object */
-static void
-setup_xbm_texture (char *bits, int width, int height,
-                                  XColor *fgc, XColor *bgc)
-{
-  unsigned int fg = (((fgc->red  >> 8) << 16) |
-                                        ((fgc->green >> 8) << 8) |
-                                        ((fgc->blue >> 8)));
-  unsigned int bg = (((bgc->red  >> 8) << 16) |
-                                        ((bgc->green >> 8) << 8) |
-                                        ((bgc->blue >> 8)));
-
-  unsigned char *data = (unsigned char *)
-       malloc ((width * height * 24) / 8);
-  unsigned char *out = data;
-  int x, y;
-
-  for (y = 0; y < height; y++)
-       for (x = 0; x < width; x++)
-         {
-               unsigned char byte = bits [(y * (width / 8) + (x / 8))];
-               unsigned char bit = (byte & (1 << (x % 8))) >> (x % 8);
-               unsigned int word = (bit ? bg : fg);
-               *out++ = (word & 0xFF0000) >> 16;
-               *out++ = (word & 0x00FF00) >> 8;
-               *out++ = (word & 0x0000FF);
-         }
-
-  glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0,
-                          GL_RGB, GL_UNSIGNED_BYTE, data);
-
-  /* setup parameters for texturing */
-  glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-}
-
-
-static void
-setup_file_texture (ModeInfo *mi, char *filename)
-{
-  Display *dpy = mi->dpy;
-  Visual *visual = mi->xgwa.visual;
-  Colormap cmap = mi->xgwa.colormap;
-
-#ifdef HAVE_XPM
-  {
-       char **xpm_data = 0;
-       int result = XpmReadFileToData (filename, &xpm_data);
-       switch (result) {
-       case XpmSuccess:
-         {
-               XImage *image = xpm_to_ximage (dpy, visual, cmap, xpm_data);
-
-               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
-                                        image->width, image->height, 0,
-                                        GL_RGBA, GL_UNSIGNED_BYTE, image->data);
-
-               /* setup parameters for texturing */
-               glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
-               glPixelStorei(GL_UNPACK_ROW_LENGTH, image->width);
-
-               glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-               glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-               glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-               glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-               glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-               return;
-         }
-         break;
-
-       case XpmOpenFailed:
-         fprintf (stderr, "%s: file %s doesn't exist.\n", progname, filename);
-         exit (-1);
-         break;
-
-       case XpmFileInvalid:
-         /* Fall through and try it as an XBM. */
-         break;
-
-       case XpmNoMemory:
-         fprintf (stderr, "%s: XPM: out of memory\n", progname);
-         exit (-1);
-         break;
-
-       default:
-         fprintf (stderr, "%s: XPM: unknown error code %d\n", progname, result);
-         exit (-1);
-         break;
-       }
-  }
-#endif /* HAVE_XPM */
-
-#ifdef HAVE_XMU
-  {
-       planetstruct *gp = &planets[MI_SCREEN(mi)];
-       unsigned int width = 0;
-       unsigned int height = 0;
-       unsigned char *data = 0;
-       int xhot, yhot;
-       int status = XmuReadBitmapDataFromFile (filename, &width, &height, &data,
-                                                                                       &xhot, &yhot);
-       if (status != Success)
-         {
-# ifdef HAVE_XPM
-               fprintf (stderr, "%s: not an XPM file: %s\n", progname, filename);
-# endif
-               fprintf (stderr, "%s: not an XBM file: %s\n", progname, filename);
-               exit (1);
-         }
-
-       setup_xbm_texture ((char *) data, width, height, &gp->fg, &gp->bg);
-  }
-#else  /* !XMU */
-
-# ifdef HAVE_XPM
-  fprintf (stderr, "%s: not an XPM file: %s\n", progname, filename);
-# endif
-  fprintf (stderr, "%s: your vendor doesn't ship the standard Xmu library.\n",
-                  progname);
-  fprintf (stderr, "%s: we can't load XBM files without it.\n",progname);
-  exit (1);
-#endif /* !XMU */
-}
-
-
-static void
-setup_texture(ModeInfo * mi)
-{
-  planetstruct *gp = &planets[MI_SCREEN(mi)];
-  if (!which_image ||
-         !*which_image ||
-         !strcmp(which_image, "BUILTIN"))
-       setup_xbm_texture (earth_bits, earth_width, earth_height,
-                                          &gp->fg, &gp->bg);
-  else
-       setup_file_texture (mi, which_image);
-}
-
-
-/* Set up and enable lighting */
-static void
-setup_light(void)
-{
-  /* set a number of parameters which make the scene look much nicer */
-  glEnable(GL_BLEND);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  glShadeModel(GL_SMOOTH);
-}
-
-
-/* Set up and enable face culling so we don't see the inside of the sphere */
-static void
-setup_face(void)
-{
-  glEnable(GL_CULL_FACE);
-  glCullFace(GL_BACK); 
-}
-
-
-/* Function for determining points on the surface of the sphere */
-static void inline ParametricSphere(float theta, float rho, GLfloat *vector)
-{
-  vector[0] = -sin(theta) * sin(rho);
-  vector[1] = cos(theta) * sin(rho);
-  vector[2] = cos(rho);
-
-#if DO_HELIX
-  vector[0] = -(1- cos(theta)) * cos(rho); 
-  vector[1] = -(1- cos(theta)) * sin(rho); 
-  vector[2] = -(sin(theta) + rho); 
-#endif /* DO_HELIX */
-
-       return;
-}
-
-
-/* lame way to generate some random stars */
-void generate_stars(int width, int height)
-{
-  int i;
-/*  GLfloat size_range[2], size;*/
-  GLfloat x, y;
-
-  planetstruct *gp = &planets[MI_SCREEN(mi)];
-  
-/*    glGetFloatv(GL_POINT_SIZE_RANGE, size_range); */
-  
-/*    printf("size range: %f\t%f\n", size_range[0], size_range[1]); */
-  gp->starlist = glGenLists(1);
-  glNewList(gp->starlist, GL_COMPILE);
-
-  /* this hackery makes the viewport map one-to-one with Vertex arguments */
-  glMatrixMode(GL_PROJECTION);
-  glPushMatrix();
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity();
-  gluOrtho2D(0, width, 0, height);
-  glMatrixMode(GL_MODELVIEW);
-  glLoadIdentity();
-
-  /* disable depth testing for the stars, so they don't obscure the planet */
-  glDisable(GL_DEPTH_TEST);
-  glEnable(GL_POINT_SMOOTH);
-  glEnable(GL_BLEND);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  
-  glBegin(GL_POINTS);
-  for(i = 0 ; i < NUM_STARS ; i++)
-       {
-/*       size = (drand48()+size_range[0]) * size_range[1]/2.; */
-/*    glPointSize(size); */
-         x = drand48()*width;
-         y = drand48()*height;
-         glVertex2f(x,y);
-       }
-  glEnd();
-
-  /* return to original PROJECT and MODELVIEW */
-  glMatrixMode(GL_PROJECTION);
-  glPopMatrix();
-  glMatrixMode(GL_MODELVIEW);
-
-
-  glEndList();
-
-}
-
-/* Initialization function for screen saver */
-static void
-pinit(ModeInfo * mi)
-{
-  Bool wire = MI_IS_WIREFRAME(mi);
-  planetstruct *gp = &planets[MI_SCREEN(mi)];
-  int i, j;
-  int stacks=STACKS, slices=SLICES;
-  float radius=RADIUS;
-
-  float drho, dtheta;
-  float rho, theta;
-  GLfloat vector[3];
-  GLfloat ds, dt, t, s;;
-
-  if (wire) {
-       glEnable(GL_LINE_SMOOTH);
-       do_texture = False;
-  }
-
-  /* turn on various options we like */
-  if (do_texture)
-       setup_texture(mi);
-  if (do_light)
-       setup_light();
-
-  setup_face();
-
-  if (do_stars) {
-       glEnable(GL_POINT_SMOOTH);
-       generate_stars(MI_WIDTH(mi), MI_HEIGHT(mi));
-  }
-
-
-  /*-
-   * Generate a sphere with quadrilaterals.
-   * Quad vertices are determined using a parametric sphere function.
-   * For fun, you could generate practically any parameteric surface and
-   * map an image onto it. 
-   */
-
-  drho = M_PI / stacks;
-  dtheta = 2.0 * M_PI / slices;
-  ds = 1.0 / slices;
-  dt = 1.0 / stacks;
-  
-
-  gp->platelist=glGenLists(1);
-  glNewList(gp->platelist, GL_COMPILE);
-
-  glColor3f(1,1,1);
-  glBegin( wire ? GL_LINE_LOOP : GL_QUADS );
-
-  t = 0.0;
-  for(i=0; i<stacks; i++) {
-       rho = i * drho;
-       s = 0.0;
-       for(j=0; j<slices; j++) {
-         theta = j * dtheta;
-
-
-         glTexCoord2f(s,t);
-         ParametricSphere(theta, rho, vector);
-         normalize(vector);
-         glNormal3fv(vector);
-         ParametricSphere(theta, rho, vector);
-         glVertex3f( vector[0]*radius, vector[1]*radius, vector[2]*radius );
-
-         glTexCoord2f(s,t+dt);
-         ParametricSphere(theta, rho+drho, vector);
-         normalize(vector);
-         glNormal3fv(vector);
-         ParametricSphere(theta, rho+drho, vector);
-         glVertex3f( vector[0]*radius, vector[1]*radius, vector[2]*radius );
-
-         glTexCoord2f(s+ds,t+dt);
-         ParametricSphere(theta + dtheta, rho+drho, vector);
-         normalize(vector);
-         glNormal3fv(vector);
-         ParametricSphere(theta + dtheta, rho+drho, vector);
-         glVertex3f( vector[0]*radius, vector[1]*radius, vector[2]*radius );
-
-         glTexCoord2f(s+ds, t);
-         ParametricSphere(theta + dtheta, rho, vector);
-         normalize(vector);
-         glNormal3fv(vector);
-         ParametricSphere(theta + dtheta, rho, vector);
-         glVertex3f( vector[0]*radius, vector[1]*radius, vector[2]*radius );
-
-         s = s + ds;
-
-       }
-       t = t + dt;
-  }
-  glEnd();
-  glEndList();
-
-
- }
-
-static void
-draw_sphere(ModeInfo * mi)
-{
-  planetstruct *gp = &planets[MI_SCREEN(mi)];
-
-  glEnable(GL_DEPTH_TEST);
-
-  /* turn on the various attributes for making the sphere look nice */
-  if (do_texture)
-       glEnable(GL_TEXTURE_2D);
-
-  if (do_light)
-       {
-         glEnable(GL_LIGHTING);
-         glEnable(GL_LIGHT0);
-         glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
-         glEnable(GL_COLOR_MATERIAL);
-       }
-
-  glCallList(gp->platelist);
-
-}
-
-
-#define RANDSIGN() ((random() & 1) ? 1 : -1)
-
-static void
-pick_velocity (ModeInfo * mi)
-{
-  planetstruct *gp = &planets[MI_SCREEN(mi)];
-
-  gp->box_width =  15.0;
-  gp->box_height = 15.0;
-  gp->box_depth =  5.0;
-
-  gp->tx = 0.0;
-  gp->ty = 0.0;
-  gp->tz = frand(360);
-
-  gp->dtx = (frand(0.4) + frand(0.3)) * RANDSIGN();
-  gp->dty = (frand(0.4) + frand(0.3)) * RANDSIGN();
-  gp->dtz = (frand(5.0) + frand(5.0));  /* the sun sets in the west */
-
-  gp->dx = (frand(0.2) + frand(0.2)) * RANDSIGN();
-  gp->dy = (frand(0.2) + frand(0.2)) * RANDSIGN();
-  gp->dz = (frand(0.2) + frand(0.2)) * RANDSIGN();
-}
-
-
-static void
-rotate_and_move (ModeInfo * mi)
-{
-  planetstruct *gp = &planets[MI_SCREEN(mi)];
-
-  if (do_roll)
-       {
-         gp->tx += gp->dtx;
-         while (gp->tx < 0)   gp->tx += 360;
-         while (gp->tx > 360) gp->tx -= 360;
-
-         gp->ty += gp->dty;
-         while (gp->ty < 0)   gp->ty += 360;
-         while (gp->ty > 360) gp->ty -= 360;
-       }
-
-  if (do_rotate)
-       {
-         gp->tz += gp->dtz;
-         while (gp->tz < 0)   gp->tz += 360;
-         while (gp->tz > 360) gp->tz -= 360;
-       }
-
-  if (do_bounce)
-       {
-         /* Move in the direction we had been moving in. */
-         gp->xpos += gp->dx;
-         gp->ypos += gp->dy;
-         gp->zpos += gp->dz;
-
-         /* Bounce. */
-         if (gp->xpos > gp->box_depth)
-               gp->xpos = gp->box_depth, gp->dx = -gp->dx;
-         else if (gp->xpos < 0)
-               gp->xpos = 0, gp->dx = -gp->dx;
-
-         if (gp->ypos > gp->box_width/2)
-               gp->ypos = gp->box_width/2, gp->dy = -gp->dy;
-         else if (gp->ypos < -gp->box_width/2)
-               gp->ypos = -gp->box_width/2, gp->dy = -gp->dy;
-
-         if (gp->zpos > gp->box_height/2)
-               gp->zpos = gp->box_height/2, gp->dz = -gp->dz;
-         else if (gp->zpos < -gp->box_height/2)
-               gp->zpos = -gp->box_height/2, gp->dz = -gp->dz;
-       }
-}
-
-
-/* Standard reshape function */
-static void
-reshape(int width, int height)
-{
-  GLfloat light[4];
-  GLfloat h = (GLfloat) height / (GLfloat) width;
-
-  light[0] = -1;
-  light[1] = (int) (((random() % 3) & 0xFF) - 1);
-  light[2] = (int) (((random() % 3) & 0xFF) - 1);
-  light[3] = 0;
-
-  glViewport(0, 0, (GLint) width, (GLint) height);
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity();
-  glFrustum(-1.0, 1.0, -h, h, 5.0, 100.0);
-  glMatrixMode(GL_MODELVIEW);
-  glLoadIdentity();
-  glTranslatef(0.0, 0.0, -DIST);
-  glLightfv(GL_LIGHT0, GL_POSITION, light);
-  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-}
-
-
-void
-init_planet(ModeInfo * mi)
-{
-  int         screen = MI_SCREEN(mi);
-
-  planetstruct *gp;
-
-  if (planets == NULL) {
-       if ((planets = (planetstruct *) calloc(MI_NUM_SCREENS(mi),
-                                                                                 sizeof (planetstruct))) == NULL)
-         return;
-  }
-  gp = &planets[screen];
-
-  pick_velocity (mi);
-
-  {
-       char *f = get_string_resource("imageForeground", "Foreground");
-       char *b = get_string_resource("imageBackground", "Background");
-       char *s;
-       if (!f) f = strdup("white");
-       if (!b) b = strdup("black");
-       
-       for (s = f + strlen(f)-1; s > f; s--)
-         if (*s == ' ' || *s == '\t')
-               *s = 0;
-       for (s = b + strlen(b)-1; s > b; s--)
-         if (*s == ' ' || *s == '\t')
-               *s = 0;
-
-    if (!XParseColor(mi->dpy, mi->xgwa.colormap, f, &gp->fg))
-      {
-               fprintf(stderr, "%s: unparsable color: \"%s\"\n", progname, f);
-               exit(1);
-      }
-    if (!XParseColor(mi->dpy, mi->xgwa.colormap, b, &gp->bg))
-      {
-               fprintf(stderr, "%s: unparsable color: \"%s\"\n", progname, f);
-               exit(1);
-      }
-
-       free (f);
-       free (b);
-  }
-
-
-  gp->window = MI_WINDOW(mi);
-  if ((gp->glx_context = init_GL(mi)) != NULL) {
-       reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
-       pinit(mi);
-  } else {
-       MI_CLEARWINDOW(mi);
-  }
-}
-
-void
-draw_planet(ModeInfo * mi)
-{
-  planetstruct *gp = &planets[MI_SCREEN(mi)];
-  Display    *display = MI_DISPLAY(mi);
-  Window      window = MI_WINDOW(mi);
-
-  if (!gp->glx_context)
-       return;
-
-  glDrawBuffer(GL_BACK);
-  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-  glXMakeCurrent(display, window, *(gp->glx_context));
-
-
-  if (do_stars) {
-       /* protect our modelview matrix and attributes */
-       glPushMatrix();
-       glPushAttrib(GL_ALL_ATTRIB_BITS);
-       {
-         glColor3f(1,1,1);
-         /* draw the star field. */
-         glCallList(gp->starlist);
-
-       }
-       glPopMatrix();
-       glPopAttrib();
-  }
-
-  /* protect our modelview matrix and attributes */
-  glPushMatrix();
-  glPushAttrib(GL_ALL_ATTRIB_BITS);
-  {
-       /* this pair of rotations seem to be necessary to orient the earth correctly */
-       glRotatef(90,0,0,1);
-       glRotatef(90,0,1,0);
-
-       glTranslatef(gp->xpos, gp->ypos, gp->zpos);
-       glRotatef(gp->tx, 1, 0, 0);
-       glRotatef(gp->ty, 0, 1, 0);
-       glRotatef(gp->tz, 0, 0, 1);
-       /* draw the sphere */
-       draw_sphere(mi);
-  }
-  glPopMatrix();
-  glPopAttrib();
-
-
-
-  glFinish();
-  glXSwapBuffers(display, window);
-
-  rotate_and_move (mi);
-}
-
-void
-release_planet(ModeInfo * mi)
-{
-  if (planets != NULL) {
-       int         screen;
-
-       for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-         planetstruct *gp = &planets[screen];
-
-         if (gp->glx_context) {
-               /* Display lists MUST be freed while their glXContext is current. */
-               glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
-
-               if (glIsList(gp->platelist))
-                 glDeleteLists(gp->platelist, 1);
-               if (glIsList(gp->starlist))
-                 glDeleteLists(gp->starlist, 1);
-         }
-       }
-       (void) free((void *) planets);
-       planets = NULL;
-  }
-  FreeAllGL(mi);
-}
-
-
-#endif
-
diff --git a/hacks/glx/lament.c b/hacks/glx/lament.c
deleted file mode 100644 (file)
index d79376d..0000000
+++ /dev/null
@@ -1,2112 +0,0 @@
-/* xscreensaver, Copyright (c) 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.
- */
-
-/* Animates Lemarchand's Box, the Lament Configuration.  By jwz, 25-Jul-98.
-
-   TODO:
-
-     *  The "gold" color isn't quite right; it looks more like "yellow" than
-        "gold" to me.
-
-     *  For some reason, the interior surfaces are shinier than the exterior
-        surfaces.  I don't understand why, but this should be remedied.
-
-     *  Perhaps use a slightly-bumpy or oily texture for the interior surfaces?
-
-     *  Some of the edges don't line up perfectly (since the images are not
-        perfectly symetrical.)  Something should be done about this; either
-        making the edges overlap slightly (instead of leaving gaps) or fixing
-        the images so that the edges may be symmetrical.
-
-     *  I want the gold leaf to seem to be raised up from the surface, but I
-        think this isn't possible with OpenGL.  Supposedly, OpenGL only 
-        supports Gouraud shading (interpolating edge normals from face normals,
-        and shading smoothly) but bump-maps only work with Phong shading
-        (computing a normal for each rendered pixel.)
-
-     *  As far as I can tell, OpenGL doesn't do shadows.  As a result, the
-        forward-facing interior walls are drawn bright, not dark.  If it was
-        casting shadows properly, it wouldn't matter so much that the edges
-        don't quite line up, because the lines would be black, and thus not
-        visible.  But the edges don't match up, and so the bright interior
-        faces show through, and that sucks.
-
-       But apparently there are tricky ways around this:
-       http://reality.sgi.com/opengl/tips/rts/
-       I think these techniques require GLUT, however, which isn't 
-       (currently) required by any other xscreensaver hacks.
-
-     *  There should be strange lighting effects playing across the surface:
-        electric sparks, or little glittery blobs of light.  
-        http://reality.sgi.com/opengl/tips/lensflare/ might provide guidance.
-
-     *  Need to add some more modes, to effect the transition from the cube
-        shapes to the "spike" or "leviathan" shapes.  I have extensive notes
-        on how these transformations occur, but unfortunately, due to camera
-        trickery, the transitions require dematerializations which do not
-        preserve object volume.  But I suppose that's allowed, in
-        non-Euclidian or hyperdimensional spaces (since the extra mass could
-        simply be rotated along the axis to which one cannot point.)
-
-        The other hard thing about this is that the "leviathan" shapes contain
-        a much larger number of facets, and I modelled this whole thing by 
-        hand, since I don't have any 3d-object-editing tools that I know how
-        to use (or that look like they would take any less than several months
-        to become even marginally proficient with...)
-
-     *  Perhaps there should be a table top, on which it casts a shadow?
-        And then multiple light sources (for multiple shadows)?
-
-     *  Needs music.  ("Hellraiser Themes" by Coil: TORSO CD161; also
-        duplicated on the "Unnatural History 2" compilation, WORLN M04699.)
-
-     *  I'm not totally happy with the spinning motion; I like the
-        acceleration and deceleration, but it often feels like it's going too
-        fast, or not naturally enough, or something.
-
-     *  However, the motion is better than that used by gears, superquadrics,
-        etc.; so maybe I should make them all share the same motion code.
- */
-
-#include <X11/Intrinsic.h>
-
-#define PROGCLASS      "Lament"
-#define HACK_INIT      init_lament
-#define HACK_DRAW      draw_lament
-#define lament_opts    xlockmore_opts
-#define DEFAULTS       "*delay:        10000   \n"     \
-                       "*wireframe:    False   \n"     \
-                       "*texture:      True    \n"
-#include "xlockmore.h"
-
-#ifdef USE_GL /* whole file */
-
-#undef countof
-#define countof(x) (sizeof((x))/sizeof((*x)))
-
-#define DEF_TEXTURE "True"
-
-static int do_texture;
-static XrmOptionDescRec opts[] = {
-  {"-texture", ".lament.texture", XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture", ".lament.texture", XrmoptionNoArg, (caddr_t) "false" },
-};
-
-static argtype vars[] = {
-  {(caddr_t *) &do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool},
-};
-
-ModeSpecOpt lament_opts = {countof(opts), opts, countof(vars), vars, NULL};
-
-#include "xpm-ximage.h"
-#include "../images/lament.xpm"
-
-#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n))))
-#define RANDSIGN() ((random() & 1) ? 1 : -1)
-
-typedef enum {
-  LAMENT_BOX,
-
-  LAMENT_STAR_OUT,
-  LAMENT_STAR_ROT,
-  LAMENT_STAR_ROT_IN,
-  LAMENT_STAR_ROT_OUT,
-  LAMENT_STAR_UNROT,
-  LAMENT_STAR_IN,
-
-  LAMENT_TETRA_UNE,
-  LAMENT_TETRA_USW,
-  LAMENT_TETRA_DWN,
-  LAMENT_TETRA_DSE,
-
-  LAMENT_LID_OPEN,
-  LAMENT_LID_CLOSE,
-  LAMENT_LID_ZOOM,
-
-  LAMENT_TASER_OUT,
-  LAMENT_TASER_SLIDE,
-  LAMENT_TASER_SLIDE_IN,
-  LAMENT_TASER_IN
-
-} lament_type;
-
-static GLfloat exterior_color[] = { 0.70, 0.60, 0.00, 1.00 };
-static GLfloat interior_color[] = { 0.25, 0.25, 0.20, 1.00 };
-
-
-typedef struct {
-  GLXContext *glx_context;
-
-  GLuint box;                     /* display list IDs */
-  GLuint star1, star2;
-  GLuint tetra_une, tetra_usw, tetra_dwn, tetra_dse, tetra_mid;
-  GLuint lid_0, lid_1, lid_2, lid_3, lid_4;
-  GLuint taser_base, taser_lifter, taser_slider;
-
-  GLfloat rotx, roty, rotz;       /* current object rotation */
-  GLfloat dx, dy, dz;             /* current rotational velocity */
-  GLfloat ddx, ddy, ddz;          /* current rotational acceleration */
-  GLfloat d_max;                  /* max velocity */
-  XImage *texture;                /* image bits */
-  GLuint texids[6];               /* texture map IDs */
-  lament_type type;               /* which mode of the object is current */
-
-  int anim_pause;                 /* countdown before animating again */
-  GLfloat anim_r, anim_y, anim_z;  /* relative position during anims */
-
-} lament_configuration;
-
-static lament_configuration *lcs = NULL;
-
-#define FACE_N 3
-#define FACE_S 2
-#define FACE_E 0
-#define FACE_W 4
-#define FACE_U 5
-#define FACE_D 1
-
-static void
-parse_image_data(ModeInfo *mi)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-  lc->texture = xpm_to_ximage (mi->dpy,
-                              mi->xgwa.visual,
-                              mi->xgwa.colormap,
-                              lament_faces);
-}
-
-
-\f
-/* Computing normal vectors (thanks to Nat Friedman <ndf@mit.edu>)
- */
-
-typedef struct vector {
-  GLfloat x, y, z;
-} vector;
-
-typedef struct plane {
-  vector p1, p2, p3;
-} plane;
-
-static void
-vector_set(vector *v, GLfloat x, GLfloat y, GLfloat z)
-{
-  v->x = x;
-  v->y = y;
-  v->z = z;
-}
-
-static void
-vector_cross(vector v1, vector v2, vector *v3)
-{
-  v3->x = (v1.y * v2.z) - (v1.z * v2.y);
-  v3->y = (v1.z * v2.x) - (v1.x * v2.z);
-  v3->z = (v1.x * v2.y) - (v1.y * v2.x);
-}
-
-static void
-vector_subtract(vector v1, vector v2, vector *res)
-{
-  res->x = v1.x - v2.x;
-  res->y = v1.y - v2.y;
-  res->z = v1.z - v2.z;
-}
-
-static void
-plane_normal(plane p, vector *n)
-{
-  vector v1, v2;
-  vector_subtract(p.p1, p.p2, &v1);
-  vector_subtract(p.p1, p.p3, &v2);
-  vector_cross(v2, v1, n);
-}
-
-static void
-do_normal(GLfloat x1, GLfloat y1, GLfloat z1,
-         GLfloat x2, GLfloat y2, GLfloat z2,
-         GLfloat x3, GLfloat y3, GLfloat z3)
-{
-  plane plane;
-  vector n;
-  vector_set(&plane.p1, x1, y1, z1);
-  vector_set(&plane.p2, x2, y2, z2);
-  vector_set(&plane.p3, x3, y3, z3);
-  plane_normal(plane, &n);
-  n.x = -n.x; n.y = -n.y; n.z = -n.z;
-
-  glNormal3f(n.x, n.y, n.z);
-
-#ifdef DEBUG
-  /* Draw a line in the direction of this face's normal. */
-  {
-    GLfloat ax = n.x > 0 ? n.x : -n.x;
-    GLfloat ay = n.y > 0 ? n.y : -n.y;
-    GLfloat az = n.z > 0 ? n.z : -n.z;
-    GLfloat mx = (x1 + x2 + x3) / 3;
-    GLfloat my = (y1 + y2 + y3) / 3;
-    GLfloat mz = (z1 + z2 + z3) / 3;
-    GLfloat xx, yy, zz;
-
-    GLfloat max = ax > ay ? ax : ay;
-    if (az > max) max = az;
-    max *= 2;
-    xx = n.x / max;
-    yy = n.y / max;
-    zz = n.z / max;
-
-    glBegin(GL_LINE_LOOP);
-    glVertex3f(mx, my, mz);
-    glVertex3f(mx+xx, my+yy, mz+zz);
-    glEnd();
-  }
-#endif /* DEBUG */
-}
-
-
-\f
-/* Shorthand utilities for making faces, with proper normals.
- */
-
-static void
-face3(GLint texture, GLfloat *color, Bool wire,
-      GLfloat s1, GLfloat t1, GLfloat x1, GLfloat y1, GLfloat z1,
-      GLfloat s2, GLfloat t2, GLfloat x2, GLfloat y2, GLfloat z2,
-      GLfloat s3, GLfloat t3, GLfloat x3, GLfloat y3, GLfloat z3)
-{
-#ifdef HAVE_GLBINDTEXTURE
-  glBindTexture(GL_TEXTURE_2D, texture);
-#endif /* HAVE_GLBINDTEXTURE */
-  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color);
-  do_normal(x1, y1, z1,  x2, y2, z2,  x3, y3, z3);
-  glBegin(wire ? GL_LINE_LOOP : GL_TRIANGLES);
-  glTexCoord2f(s1, t1); glVertex3f(x1, y1, z1);
-  glTexCoord2f(s2, t2); glVertex3f(x2, y2, z2);
-  glTexCoord2f(s3, t3); glVertex3f(x3, y3, z3);
-  glEnd();
-}
-
-static void
-face4(GLint texture, GLfloat *color, Bool wire,
-      GLfloat s1, GLfloat t1, GLfloat x1, GLfloat y1, GLfloat z1,
-      GLfloat s2, GLfloat t2, GLfloat x2, GLfloat y2, GLfloat z2,
-      GLfloat s3, GLfloat t3, GLfloat x3, GLfloat y3, GLfloat z3,
-      GLfloat s4, GLfloat t4, GLfloat x4, GLfloat y4, GLfloat z4)
-{
-#ifdef HAVE_GLBINDTEXTURE
-  glBindTexture(GL_TEXTURE_2D, texture);
-#endif /* HAVE_GLBINDTEXTURE */
-  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color);
-  do_normal(x1, y1, z1,  x2, y2, z2,  x3, y3, z3);
-  glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
-  glTexCoord2f(s1, t1); glVertex3f(x1, y1, z1);
-  glTexCoord2f(s2, t2); glVertex3f(x2, y2, z2);
-  glTexCoord2f(s3, t3); glVertex3f(x3, y3, z3);
-  glTexCoord2f(s4, t4); glVertex3f(x4, y4, z4);
-  glEnd();
-}
-
-static void
-face5(GLint texture, GLfloat *color, Bool wire,
-      GLfloat s1, GLfloat t1, GLfloat x1, GLfloat y1, GLfloat z1,
-      GLfloat s2, GLfloat t2, GLfloat x2, GLfloat y2, GLfloat z2,
-      GLfloat s3, GLfloat t3, GLfloat x3, GLfloat y3, GLfloat z3,
-      GLfloat s4, GLfloat t4, GLfloat x4, GLfloat y4, GLfloat z4,
-      GLfloat s5, GLfloat t5, GLfloat x5, GLfloat y5, GLfloat z5)
-{
-#ifdef HAVE_GLBINDTEXTURE
-  glBindTexture(GL_TEXTURE_2D, texture);
-#endif /* HAVE_GLBINDTEXTURE */
-  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color);
-  do_normal(x1, y1, z1,  x2, y2, z2,  x3, y3, z3);
-  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
-  glTexCoord2f(s1, t1); glVertex3f(x1, y1, z1);
-  glTexCoord2f(s2, t2); glVertex3f(x2, y2, z2);
-  glTexCoord2f(s3, t3); glVertex3f(x3, y3, z3);
-  glTexCoord2f(s4, t4); glVertex3f(x4, y4, z4);
-  glTexCoord2f(s5, t5); glVertex3f(x5, y5, z5);
-  glEnd();
-}
-
-
-\f
-/* Creating object models
- */
-
-static void
-box(ModeInfo *mi, Bool wire)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-
-  glNewList(lc->box, GL_COMPILE);
-  glShadeModel(GL_SMOOTH);
-
-  /* N */
-  face4(lc->texids[FACE_N], exterior_color, wire,
-       0.0, 0.0,       -0.5,  0.5,  0.5,
-       1.0, 0.0,        0.5,  0.5,  0.5,
-       1.0, 1.0,        0.5,  0.5, -0.5,
-       0.0, 1.0,       -0.5,  0.5, -0.5);
-
-  /* S */
-  face4(lc->texids[FACE_S], exterior_color, wire,
-       0.0, 0.0,        -0.5, -0.5, -0.5,
-       1.0, 0.0,         0.5, -0.5, -0.5,
-       1.0, 1.0,         0.5, -0.5,  0.5,
-       0.0, 1.0,        -0.5, -0.5,  0.5);
-
-  /* E */
-  face4(lc->texids[FACE_E], exterior_color, wire,
-       0.0, 0.0,        0.5, -0.5, -0.5,
-       1.0, 0.0,        0.5,  0.5, -0.5,
-       1.0, 1.0,        0.5,  0.5,  0.5,
-       0.0, 1.0,        0.5, -0.5,  0.5);
-
-  /* W */
-  face4(lc->texids[FACE_W], exterior_color, wire,
-       1.0, 1.0,       -0.5, -0.5,  0.5,
-       0.0, 1.0,       -0.5,  0.5,  0.5,
-       0.0, 0.0,       -0.5,  0.5, -0.5,
-       1.0, 0.0,       -0.5, -0.5, -0.5);
-
-  /* U */
-  face4(lc->texids[FACE_U], exterior_color, wire,
-       1.0, 0.0,        0.5, -0.5,  0.5,
-       1.0, 1.0,        0.5,  0.5,  0.5,
-       0.0, 1.0,       -0.5,  0.5,  0.5,
-       0.0, 0.0,       -0.5, -0.5,  0.5);
-
-  /* D */
-  face4(lc->texids[FACE_D], exterior_color, wire,
-       0.0, 1.0,       -0.5, -0.5, -0.5,
-       0.0, 0.0,       -0.5,  0.5, -0.5,
-       1.0, 0.0,        0.5,  0.5, -0.5,
-       1.0, 1.0,        0.5, -0.5, -0.5);
-
-  glEndList();
-}
-
-
-static void
-star(ModeInfo *mi, Bool top, Bool wire)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-  int i;
-
-  int points[][2] = {
-    {  77,  74 }, {  60,  98 }, {   0,  71 }, {   0,   0 },    /* L1 */
-    {  60,  98 }, {  55, 127 }, {   0, 127 }, {   0,  71 },    /* L2 */
-    {  55, 127 }, {  60, 154 }, {   0, 179 }, {   0, 127 },    /* L3 */
-    {  60, 154 }, {  76, 176 }, {   0, 255 }, {   0, 179 },    /* L4 */
-    {  76, 176 }, { 100, 193 }, {  74, 255 }, {   0, 255 },    /* B1 */
-    { 100, 193 }, { 127, 198 }, { 127, 255 }, {  74, 255 },    /* B2 */
-    { 127, 198 }, { 151, 193 }, { 180, 255 }, { 127, 255 },    /* B3 */
-    { 151, 193 }, { 178, 177 }, { 255, 255 }, { 180, 255 },    /* B4 */
-    { 178, 177 }, { 193, 155 }, { 255, 181 }, { 255, 255 },    /* R4 */
-    { 193, 155 }, { 199, 127 }, { 255, 127 }, { 255, 181 },    /* R3 */
-    { 199, 127 }, { 194,  99 }, { 255,  74 }, { 255, 127 },    /* R2 */
-    { 194,  99 }, { 179,  76 }, { 255,   0 }, { 255,  74 },    /* R1 */
-    { 179,  76 }, { 155,  60 }, { 180,   0 }, { 255,   0 },    /* T4 */
-    { 155,  60 }, { 126,  55 }, { 126,   0 }, { 180,   0 },    /* T3 */
-    { 126,  55 }, { 100,  60 }, {  75,   0 }, { 126,   0 },    /* T2 */
-    { 100,  60 }, {  77,  74 }, {   0,   0 }, {  75,   0 },    /* T1 */
-  };
-
-  for (i = 0; i < countof(points); i++)
-    points[i][1] = 255-points[i][1];
-
-  if (top)
-    glNewList(lc->star1, GL_COMPILE);
-  else
-    glNewList(lc->star2, GL_COMPILE);
-
-  if (!top)
-    glRotatef(-180.0, 1.0, 0.0, 0.0);
-
-  for (i = 0; i < countof(points)/4; i += 2)
-    {
-      int j, k;
-
-      /* Top face.
-       */
-
-      GLfloat s[4], t[4], x[4], y[4], z[4];
-      for (j = 3, k = 0; j >= 0; j--, k++)
-       {
-         GLfloat xx = points[(i*4)+j][0] / 255.0L;
-         GLfloat yy = points[(i*4)+j][1] / 255.0L;
-         s[k] = xx;
-         t[k] = yy;
-         x[k] = xx-0.5;
-         y[k] = yy-0.5;
-         z[k] = 0.5;
-       }
-      face4(lc->texids[top ? FACE_U : FACE_D], exterior_color, wire,
-           s[0], t[0],  x[0], y[0], z[0],
-           s[1], t[1],  x[1], y[1], z[1],
-           s[2], t[2],  x[2], y[2], z[2],
-           s[3], t[3],  x[3], y[3], z[3]);
-
-      /* Bottom face.
-       */
-      for (j = 0, k = 0; j < 4; j++, k++)
-       {
-         GLfloat xx = points[(i*4)+j][0] / 255.0L;
-         GLfloat yy = points[(i*4)+j][1] / 255.0L;
-         s[k] = xx;
-         t[k] = 1.0 - yy;
-         x[k] = xx-0.5;
-         y[k] = yy-0.5;
-         z[k] = -0.5;
-       }
-      face4(lc->texids[top ? FACE_U : FACE_D], exterior_color, wire,
-           s[0], t[0],  x[0], y[0], z[0],
-           s[1], t[1],  x[1], y[1], z[1],
-           s[2], t[2],  x[2], y[2], z[2],
-           s[3], t[3],  x[3], y[3], z[3]);
-
-      /* Connecting faces.
-       */
-      for (j = 3; j >= 0; j--)
-       {
-         int k = (j == 0 ? 3 : j-1);
-         Bool front_p = (j == 3);
-         GLfloat x1 = points[(i*4)+j][0] / 255.0L;
-         GLfloat y1 = points[(i*4)+j][1] / 255.0L;
-         GLfloat x2 = points[(i*4)+k][0] / 255.0L;
-         GLfloat y2 = points[(i*4)+k][1] / 255.0L;
-
-         GLfloat tx1=0.0, tx2=1.0, ty1=0.0, ty2=1.0;
-
-         int texture = 0;
-         int facing = i/4;
-         facing = (facing + j + 5) % 4;
-
-         switch (facing) {
-         case 0:
-           texture = FACE_W;
-           if (top) {
-             tx1 = 1.0 - y1;  tx2 = 1.0 - y2;
-             ty1 = 0.0;       ty2 = 1.0;
-           } else {
-             tx1 = y1;  tx2 = y2;
-             ty1 = 1.0; ty2 = 0.0;
-           }
-           break;
-         case 1:
-           texture = top ? FACE_S : FACE_N;
-           tx1 = x1;  tx2 = x2;
-           ty1 = 0.0; ty2 = 1.0;
-           break;
-         case 2:
-           texture = FACE_E;
-           if (top) {
-             tx1 = y1;  tx2 = y2;
-             ty1 = 0.0; ty2 = 1.0;
-           } else {
-             tx1 = 1.0 - y1;  tx2 = 1.0 - y2;
-             ty1 = 1.0;       ty2 = 0.0;
-           }
-           break;
-         case 3:
-           texture = top ? FACE_N : FACE_S;
-           tx1 = x1;  tx2 = x2;
-           ty1 = 1.0; ty2 = 0.0;
-           break;
-         }
-
-         x1 -= 0.5; x2 -= 0.5;
-         y1 -= 0.5; y2 -= 0.5;
-
-         face4(front_p ? lc->texids[texture] : 0,
-               front_p ? exterior_color : interior_color,
-               wire,
-               tx1, ty2,  x1, y1,  0.5,
-               tx1, ty1,  x1, y1, -0.5,
-               tx2, ty1,  x2, y2, -0.5,
-               tx2, ty2,  x2, y2,  0.5);
-       }
-    }
-
-
-  /* Central core top cap.
-   */
-#ifdef HAVE_GLBINDTEXTURE
-  glBindTexture(GL_TEXTURE_2D, lc->texids[top ? FACE_U : FACE_D]);
-#endif /* HAVE_GLBINDTEXTURE */
-  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, exterior_color);
-
-  i = 1;
-  do_normal(points[i+0][0], points[i+0][1], 0,
-           points[i+4][0], points[i+4][1], 0,
-           points[i+8][0], points[i+8][1], 0);
-  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
-  for (i = 1; i < countof(points); i += 4)
-    {
-      GLfloat x = points[i][0] / 255.0L;
-      GLfloat y = points[i][1] / 255.0L;
-      glTexCoord2f(x, y);
-      glVertex3f(x-0.5, y-0.5, 0.5);
-    }
-  glEnd();
-
-
-  /* Central core bottom cap.
-   */
-#ifdef HAVE_GLBINDTEXTURE
-  glBindTexture(GL_TEXTURE_2D, 0);
-#endif /* HAVE_GLBINDTEXTURE */
-  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, interior_color);
-
-  i = countof(points) - 9;
-  do_normal(points[i+0][0], points[i+0][1], 0,
-           points[i+4][0], points[i+4][1], 0,
-           points[i+8][0], points[i+8][1], 0);
-
-  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
-  for (i = countof(points) - 3; i >= 0; i -= 4)
-    {
-      GLfloat x = points[i][0] / 255.0L;
-      GLfloat y = points[i][1] / 255.0L;
-      glVertex3f(x-0.5, y-0.5, 0);
-    }
-  glEnd();
-  
-
-  /* Central core walls.
-   */
-  for (i = 1; i < countof(points); i += 4)
-    {
-
-      GLfloat x1 = points[i-1][0] / 255.0L;
-      GLfloat y1 = points[i-1][1] / 255.0L;
-      GLfloat x2 = points[i][0] / 255.0L;
-      GLfloat y2 = points[i][1] / 255.0L;
-      face4(0, interior_color, wire,
-           0.0, 0.0,  x1-0.5, y1-0.5, 0.5,
-           0.0, 0.0,  x1-0.5, y1-0.5, 0.0,
-           0.0, 0.0,  x2-0.5, y2-0.5, 0.0,
-           0.0, 0.0,  x2-0.5, y2-0.5, 0.5);
-    }
-
-  glEndList();
-}
-
-
-static void
-tetra(ModeInfo *mi, Bool wire)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-
-  glNewList(lc->tetra_une, GL_COMPILE);
-  {
-    glShadeModel(GL_SMOOTH);
-
-    /* Ua */
-    face3(lc->texids[FACE_U], exterior_color, wire,
-         1.0, 0.0,      0.5, -0.5,  0.5,
-         1.0, 1.0,      0.5,  0.5,  0.5,
-         0.0, 1.0,     -0.5,  0.5,  0.5);
-
-    /* Na */
-    face3(lc->texids[FACE_N], exterior_color, wire,
-         0.0, 0.0,     -0.5,  0.5,  0.5,
-         1.0, 0.0,      0.5,  0.5,  0.5,
-         1.0, 1.0,      0.5,  0.5, -0.5);
-
-    /* Eb */
-    face3(lc->texids[FACE_E], exterior_color, wire,
-         1.0, 0.0,      0.5,  0.5, -0.5,
-         1.0, 1.0,      0.5,  0.5,  0.5,
-         0.0, 1.0,      0.5, -0.5,  0.5);
-
-    face3(0, interior_color, wire,
-         0.0, 0.0,      0.5,  0.5, -0.5,
-         0.0, 0.0,      0.5, -0.5,  0.5,
-         0.0, 0.0,     -0.5,  0.5,  0.5);
-  }
-  glEndList();
-
-  glNewList(lc->tetra_usw, GL_COMPILE);
-  {
-    /* Ub */
-    face3(lc->texids[FACE_U], exterior_color, wire,
-         0.0, 1.0,     -0.5,  0.5,  0.5,
-         0.0, 0.0,     -0.5, -0.5,  0.5,
-         1.0, 0.0,      0.5, -0.5,  0.5);
-
-    /* Sb */
-    face3(lc->texids[FACE_S], exterior_color, wire,
-         1.0, 1.0,      0.5, -0.5,  0.5,
-         0.0, 1.0,     -0.5, -0.5,  0.5,
-         0.0, 0.0,     -0.5, -0.5, -0.5);
-
-    /* Wb */
-    face3(lc->texids[FACE_W], exterior_color, wire,
-         1.0, 0.0,     -0.5, -0.5, -0.5,
-         1.0, 1.0,     -0.5, -0.5,  0.5,
-         0.0, 1.0,     -0.5,  0.5,  0.5);
-
-    face3(0, interior_color, wire,
-         0.0,0.0,      -0.5, -0.5, -0.5,
-         0.0,0.0,      -0.5,  0.5,  0.5,
-         0.0,0.0,       0.5, -0.5,  0.5);
-  }
-  glEndList();
-
-  glNewList(lc->tetra_dwn, GL_COMPILE);
-  {
-    /* Db */
-    face3(lc->texids[FACE_D], exterior_color, wire,
-         0.0, 1.0,     -0.5, -0.5, -0.5,
-         0.0, 0.0,     -0.5,  0.5, -0.5,
-         1.0, 0.0,      0.5,  0.5, -0.5);
-
-    /* Wa */
-    face3(lc->texids[FACE_W], exterior_color, wire,
-         0.0, 1.0,     -0.5,  0.5,  0.5,
-         0.0, 0.0,     -0.5,  0.5, -0.5,
-         1.0, 0.0,     -0.5, -0.5, -0.5);
-
-    /* Nb */
-    face3(lc->texids[FACE_N], exterior_color, wire,
-         1.0, 1.0,      0.5,  0.5, -0.5,
-         0.0, 1.0,     -0.5,  0.5, -0.5,
-         0.0, 0.0,     -0.5,  0.5,  0.5);
-
-    face3(0, interior_color, wire,
-         0.0, 0.0,      0.5,  0.5, -0.5,
-         0.0, 0.0,     -0.5,  0.5,  0.5,
-         0.0, 0.0,     -0.5, -0.5, -0.5);
-  }
-  glEndList();
-
-  glNewList(lc->tetra_dse, GL_COMPILE);
-  {
-    /* Sa */
-    face3(lc->texids[FACE_S], exterior_color, wire,
-         0.0, 0.0,     -0.5, -0.5, -0.5,
-         1.0, 0.0,      0.5, -0.5, -0.5,
-         1.0, 1.0,      0.5, -0.5,  0.5);
-
-    /* Ea */
-    face3(lc->texids[FACE_E], exterior_color, wire,
-         0.0, 1.0,      0.5, -0.5,  0.5,
-         0.0, 0.0,      0.5, -0.5, -0.5,
-         1.0, 0.0,      0.5,  0.5, -0.5);
-
-    /* Da */
-    face3(lc->texids[FACE_D], exterior_color, wire,
-         1.0, 0.0,      0.5,  0.5, -0.5,
-         1.0, 1.0,      0.5, -0.5, -0.5,
-         0.0, 1.0,     -0.5, -0.5, -0.5);
-
-    face3(0, interior_color, wire,
-         0.0, 0.0,      0.5, -0.5,  0.5,
-         0.0, 0.0,      0.5,  0.5, -0.5,
-         0.0, 0.0,     -0.5, -0.5, -0.5);
-    glEnd();
-  }
-  glEndList();
-
-  glNewList(lc->tetra_mid, GL_COMPILE);
-  {
-    face3(0, interior_color, wire,
-         0.0, 0.0,      0.5, -0.5,  0.5,
-         0.0, 0.0,      0.5,  0.5, -0.5,
-         0.0, 0.0,     -0.5,  0.5,  0.5);
-
-    face3(0, interior_color, wire,
-         0.0, 0.0,     -0.5,  0.5,  0.5,
-         0.0, 0.0,     -0.5, -0.5, -0.5,
-         0.0, 0.0,      0.5, -0.5,  0.5);
-
-    face3(0, interior_color, wire,
-         0.0, 0.0,     -0.5,  0.5,  0.5,
-         0.0, 0.0,      0.5,  0.5, -0.5,
-         0.0, 0.0,     -0.5, -0.5, -0.5);
-
-    face3(0, interior_color, wire,
-         0.0, 0.0,      0.5,  0.5, -0.5,
-         0.0, 0.0,      0.5, -0.5,  0.5,
-         0.0, 0.0,     -0.5, -0.5, -0.5);
-
-    face3(0, interior_color, wire,
-         0.0, 0.0,      0.5, -0.5,  0.5,
-         0.0, 0.0,      0.5,  0.5, -0.5,
-         0.0, 0.0,     -0.5, -0.5, -0.5);
-  }
-  glEndList();
-
-}
-
-static void
-lid(ModeInfo *mi, Bool wire)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-  int i;
-
-  int points[][2] = {
-    { 128,  20 },{  21, 129 },{   0, 129 },{   0,   0 },{ 128,   0 }, /* L1 */
-    {  21, 129 },{ 127, 234 },{ 127, 255 },{   0, 255 },{   0, 129 }, /* L2 */
-    { 127, 234 },{ 233, 127 },{ 255, 127 },{ 255, 255 },{ 127, 255 }, /* R2 */
-    { 233, 127 },{ 128,  20 },{ 128,   0 },{ 255,   0 },{ 255, 127 }, /* R1 */
-  };
-
-  for (i = 0; i < countof(points); i++)
-    points[i][1] = 255-points[i][1];
-
-  glNewList(lc->lid_0, GL_COMPILE);
-  glShadeModel(GL_SMOOTH);
-
-  /* N */
-  face4(lc->texids[FACE_N], exterior_color, wire,
-       0.0, 0.0,       -0.5,  0.5,  0.5,
-       1.0, 0.0,        0.5,  0.5,  0.5,
-       1.0, 1.0,        0.5,  0.5, -0.5,
-       0.0, 1.0,       -0.5,  0.5, -0.5);
-
-  /* S */
-  face4(lc->texids[FACE_S], exterior_color, wire,
-       0.0, 0.0,       -0.5, -0.5, -0.5,
-       1.0, 0.0,        0.5, -0.5, -0.5,
-       1.0, 1.0,        0.5, -0.5,  0.5,
-       0.0, 1.0,       -0.5, -0.5,  0.5);
-
-  /* E */
-  face4(lc->texids[FACE_E], exterior_color, wire,
-       0.0, 0.0,        0.5, -0.5, -0.5,
-       1.0, 0.0,        0.5,  0.5, -0.5,
-       1.0, 1.0,        0.5,  0.5,  0.5,
-       0.0, 1.0,        0.5, -0.5,  0.5);
-
-  /* U */
-  face4(lc->texids[FACE_U], exterior_color, wire,
-       1.0, 0.0,        0.5, -0.5,  0.5,
-       1.0, 1.0,        0.5,  0.5,  0.5,
-       0.0, 1.0,       -0.5,  0.5,  0.5,
-       0.0, 0.0,       -0.5, -0.5,  0.5);
-
-  /* D */
-  face4(lc->texids[FACE_D], exterior_color, wire,
-       0.0, 1.0,       -0.5, -0.5, -0.5,
-       0.0, 0.0,       -0.5,  0.5, -0.5,
-       1.0, 0.0,        0.5,  0.5, -0.5,
-       1.0, 1.0,        0.5, -0.5, -0.5);
-
-  /* W -- lid_0 */
-  for (i = 0; i < countof(points)/5; i++)
-    {
-      int j;
-      GLfloat s[5], t[5], x[5], y[5], z[5];
-      for (j = 0; j < 5; j++)
-       {
-         GLfloat xx = points[(i*5)+j][0] / 255.0L;
-         GLfloat yy = points[(i*5)+j][1] / 255.0L;
-         s[j] = 1.0-xx;
-         t[j] = yy;
-         x[j] = -0.5;
-         y[j] = xx-0.5;
-         z[j] = yy-0.5;
-       }
-      face5(lc->texids[FACE_W], exterior_color, wire,
-           s[0], t[0],  x[0], y[0], z[0],
-           s[1], t[1],  x[1], y[1], z[1],
-           s[2], t[2],  x[2], y[2], z[2],
-           s[3], t[3],  x[3], y[3], z[3],
-           s[4], t[4],  x[4], y[4], z[4]);
-    }
-  glEndList();
-
-
-  /* W -- lid_1 through lid_4 */
-  for (i = 0; i < 4; i++)
-    {
-      GLfloat x1, y1, x2, y2, x3, y3;
-
-      glNewList(lc->lid_1 + i, GL_COMPILE);
-      glShadeModel(GL_SMOOTH);
-
-      x1 = points[(i*5)+1][0] / 255.0L;
-      y1 = points[(i*5)+1][1] / 255.0L;
-      x2 = points[(i*5)][0] / 255.0L;
-      y2 = points[(i*5)][1] / 255.0L;
-      x3 = 0.5;
-      y3 = 0.5;
-
-      /* Outer surface */
-      face3(lc->texids[FACE_W], exterior_color, wire,
-           1.0-x1, y1,         -0.5, x1-0.5, y1-0.5,
-           1.0-x2, y2,         -0.5, x2-0.5, y2-0.5,
-           1.0-x3, y3,         -0.5, x3-0.5, y3-0.5);
-
-      /* Inner surface */
-      face3(0, interior_color, wire,
-           0.0, 0.0,   -0.48, x2-0.5, y2-0.5,
-           0.0, 0.0,   -0.48, x1-0.5, y1-0.5,
-           0.0, 0.0,   -0.48, x3-0.5, y3-0.5);
-
-      /* Lip 1 */
-      face4(0, interior_color, wire,
-           0.0, 0.0,   -0.5,  x1-0.5, y1-0.5,
-           0.0, 0.0,   -0.5,  x3-0.5, y3-0.5,
-           0.0, 0.0,   -0.48, x3-0.5, y3-0.5,
-           0.0, 0.0,   -0.48, x1-0.5, y1-0.5);
-
-      /* Lip 2 */
-      face4(0, interior_color, wire,
-           0.0, 0.0,   -0.48, x2-0.5, y2-0.5,
-           0.0, 0.0,   -0.48, x3-0.5, y3-0.5,
-           0.0, 0.0,   -0.5,  x3-0.5, y3-0.5,
-           0.0, 0.0,   -0.5,  x2-0.5, y2-0.5);
-
-      glEndList();
-    }
-}
-
-static void
-taser(ModeInfo *mi, Bool wire)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-  int i;
-
-  int slider_face_points[][2] = {
-    {  86,  58 },{  38, 106 },{  70, 106 },{ 118,  58 },{  -1,  -1 }, /* a */
-    { 136,  58 },{ 184, 106 },{ 216, 106 },{ 168,  58 },{  -1,  -1 }, /* b */
-    {  38, 106 },{   0, 144 },{   0, 190 },{  60, 190 },{ 108, 106 }, /* c */
-    { 144, 106 },{ 194, 190 },{ 254, 190 },{ 254, 144 },{ 216, 106 }, /* d */
-    {  98, 124 },{  60, 190 },{  92, 190 },{ 126, 158 },{ 126, 124 }, /* e */
-    { 126, 124 },{ 126, 158 },{ 160, 190 },{ 194, 190 },{ 154, 124 }, /* f */
-    {  22, 190 },{  22, 254 },{  60, 254 },{  60, 190 },{  -1,  -1 }, /* g */
-    { 194, 190 },{ 194, 254 },{ 230, 254 },{ 230, 190 },{  -1,  -1 }, /* h */
-    {  60, 190 },{  60, 210 },{  92, 210 },{  92, 190 },{  -1,  -1 }, /* i */
-    { 160, 190 },{ 160, 210 },{ 194, 210 },{ 194, 190 },{  -1,  -1 }, /* j */
-    { 110, 172 },{  92, 190 },{ 110, 190 },{  -1,  -1 },{  -1,  -1 }, /* k */
-    { 140, 172 },{ 140, 190 },{ 160, 190 },{  -1,  -1 },{  -1,  -1 }, /* l */
-    { 110, 172 },{ 140, 172 },{ 126, 156 },{  -1,  -1 },{  -1,  -1 }, /* m */
-  };
-
-  int body_face_points[][2] = {
-    {   0,   0 },{   0,  58 },{ 254,  58 },{ 254,   0 },{  -1,  -1 }, /* A */
-    {   0,  58 },{   0, 144 },{  86,  58 },{  -1,  -1 },{  -1,  -1 }, /* B */
-    { 168,  58 },{ 254, 144 },{ 254,  58 },{  -1,  -1 },{  -1,  -1 }, /* C */
-    { 118,  58 },{  70, 106 },{ 184, 106 },{ 136,  58 },{  -1,  -1 }, /* F */
-    { 108, 106 },{  98, 124 },{ 154, 124 },{ 144, 106 },{  -1,  -1 }, /* G */
-  };
-
-  int lifter_face_points[][2] = {
-    {   0, 190 },{   0, 254 },{  22, 254 },{  22, 190 },{  -1,  -1 }, /* D */
-    { 230, 190 },{ 230, 254 },{ 254, 254 },{ 254, 190 },{  -1,  -1 }, /* E */
-    {  60, 210 },{  60, 254 },{ 194, 254 },{ 194, 210 },{  -1,  -1 }, /* H */
-    {  92, 190 },{  92, 210 },{ 160, 210 },{ 160, 190 },{  -1,  -1 }, /* I */
-    { 110, 172 },{ 110, 190 },{ 140, 190 },{ 140, 172 },{  -1,  -1 }, /* J */
-  };
-
-  int body_perimiter_points[][2] = {
-    {   0, 144 },{  86,  59 },{ 119,  58 },{  71, 107 },
-    { 108, 107 },{  98, 124 },{ 155, 124 },{ 144, 107 },
-    { 185, 106 },{ 136,  59 },{ 169,  59 },{ 255, 145 },
-    { 255,   0 },{   0,   0 },
-  };
-
-  int slider_perimiter_points[][2] = {
-    {  86,  58 },{   0,  144 },{   0, 190 },{  22,  190 },{  22, 254 },
-    {  60, 254 },{  60,  210 },{  92, 210 },{  92,  190 },{ 110, 190 },
-    { 110, 172 },{  140, 172 },{ 140, 190 },{ 160,  190 },{ 160, 210 },
-    { 194, 210 },{  194, 254 },{ 230, 254 },{ 230,  190 },{ 254, 190 },
-    { 254, 144 },{  168,  58 },{ 136,  58 },{ 184,  106 },{ 144, 106 },
-    { 154, 124 },{  98,  124 },{ 108, 106 },{  70,  106 },{ 118,  58 },
-  };
-
-  int lifter_perimiter_points_1[][2] = {
-    {   0, 189 },{   0, 254 },{  22, 255 },{  23, 190 },
-  };
-
-  int lifter_perimiter_points_2[][2] = {
-    { 230, 254 },{ 255, 255 },{ 254, 190 },{ 230, 190 },
-  };
-
-  int lifter_perimiter_points_3[][2] = {
-    {  60, 254 },{ 194, 254 },{ 194, 211 },{ 160, 210 },
-    { 160, 190 },{ 140, 191 },{ 141, 172 },{ 111, 172 },
-    { 110, 190 },{ 93, 190 },{ 92, 210 },{ 60, 211 },
-  };
-
-  for (i = 0; i < countof(slider_face_points); i++)
-    slider_face_points[i][1] = 255-slider_face_points[i][1];
-  for (i = 0; i < countof(body_face_points); i++)
-    body_face_points[i][1] = 255-body_face_points[i][1];
-  for (i = 0; i < countof(lifter_face_points); i++)
-    lifter_face_points[i][1] = 255-lifter_face_points[i][1];
-  for (i = 0; i < countof(body_perimiter_points); i++)
-    body_perimiter_points[i][1] = 255-body_perimiter_points[i][1];
-  for (i = 0; i < countof(slider_perimiter_points); i++)
-    slider_perimiter_points[i][1] = 255-slider_perimiter_points[i][1];
-  for (i = 0; i < countof(lifter_perimiter_points_1); i++)
-    lifter_perimiter_points_1[i][1] = 255-lifter_perimiter_points_1[i][1];
-  for (i = 0; i < countof(lifter_perimiter_points_2); i++)
-    lifter_perimiter_points_2[i][1] = 255-lifter_perimiter_points_2[i][1];
-  for (i = 0; i < countof(lifter_perimiter_points_3); i++)
-    lifter_perimiter_points_3[i][1] = 255-lifter_perimiter_points_3[i][1];
-
-  /* -------------------------------------------------------------------- */
-
-  glNewList(lc->taser_base, GL_COMPILE);
-  glShadeModel(GL_SMOOTH);
-
-  /* N */
-  face4(lc->texids[FACE_N], exterior_color, wire,
-       0.0, 0.0,       -0.5,  0.5,  0.5,
-       0.75, 0.0,       0.25, 0.5,  0.5,
-       0.75, 0.75,      0.25, 0.5, -0.25,
-       0.0, 0.75,      -0.5,  0.5, -0.25);
-
-  /* S */
-  face4(lc->texids[FACE_S], exterior_color, wire,
-       0.0,  0.25,     -0.5,  -0.5, -0.25,
-       0.75, 0.25,      0.25, -0.5, -0.25,
-       0.75, 1.0,       0.25, -0.5,  0.5,
-       0.0,  1.0,      -0.5,  -0.5,  0.5);
-
-  /* interior E */
-  face4(0, interior_color, wire,
-       0.0, 0.0,        0.25, -0.5, -0.25,
-       1.0, 0.0,        0.25,  0.5, -0.25,
-       1.0, 1.0,        0.25,  0.5,  0.5,
-       0.0, 1.0,        0.25, -0.5,  0.5);
-
-  /* W */
-  face4(lc->texids[FACE_W], exterior_color, wire,
-       1.0, 1.0,       -0.5, -0.5,  0.5,
-       0.0, 1.0,       -0.5,  0.5,  0.5,
-       0.0, 0.25,      -0.5,  0.5, -0.25,
-       1.0, 0.25,      -0.5, -0.5, -0.25);
-
-  /* U */
-  face4(lc->texids[FACE_U], exterior_color, wire,
-       0.75, 0.0,       0.25, -0.5,  0.5,
-       0.75, 1.0,       0.25,  0.5,  0.5,
-       0.0, 1.0,       -0.5,   0.5,  0.5,
-       0.0, 0.0,       -0.5,  -0.5,  0.5);
-
-  /* interior D */
-  face4(0, interior_color, wire,
-       0.0, 1.0,       -0.5,  -0.5, -0.25,
-       0.0, 0.0,       -0.5,   0.5, -0.25,
-       1.0, 0.0,        0.25,  0.5, -0.25,
-       1.0, 1.0,        0.25, -0.5, -0.25);
-
-  /* Top face */
-  for (i = 0; i < countof(body_face_points)/5; i++)
-    {
-      int j;
-#ifdef HAVE_GLBINDTEXTURE
-      glBindTexture(GL_TEXTURE_2D, lc->texids[FACE_E]);
-#endif /* HAVE_GLBINDTEXTURE */
-      glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, exterior_color);
-
-      do_normal(0, body_face_points[(i*5)+0][0], body_face_points[(i*5)+0][1],
-               0, body_face_points[(i*5)+1][0], body_face_points[(i*5)+1][1],
-               0, body_face_points[(i*5)+2][0], body_face_points[(i*5)+2][1]
-               );
-      glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
-      for (j = 0; j < 5; j++)
-       {
-         int ix = body_face_points[(i*5)+j][0];
-         int iy = body_face_points[(i*5)+j][1];
-         GLfloat x, y;
-         if (ix == -1)  /* these are padding: ignore them */
-           continue;
-         x = ix / 255.0L;
-         y = iy / 255.0L;
-         glTexCoord2f(x, y);
-         glVertex3f(0.5, x-0.5, y-0.5);
-       }
-      glEnd();
-    }
-
-  /* Side walls */
-  for (i = 0; i < countof(body_perimiter_points); i++)
-    {
-      int j = (i+1 >= countof(body_perimiter_points) ? 0 : i+1);
-      GLfloat x1 = body_perimiter_points[i][0] / 255.0;
-      GLfloat y1 = body_perimiter_points[i][1] / 255.0;
-      GLfloat x2 = body_perimiter_points[j][0] / 255.0;
-      GLfloat y2 = body_perimiter_points[j][1] / 255.0;
-      int texture = -1;
-      GLfloat s1=0, t1=0, s2=0, t2=0, s3=0, t3=0, s4=0, t4=0;
-
-      if (i == 11)
-       {
-         texture = lc->texids[FACE_N];
-         s1 = 1.0;  t1 = 0.0;
-         s2 = 1.0;  t2 = 0.568;
-         s3 = 0.75, t3 = 0.568;
-         s4 = 0.75; t4 = 0.0;
-       }
-      else if (i == 12)
-       {
-         texture = lc->texids[FACE_U];
-         s1 = 1.0;  t1 = 0.0;
-         s2 = 1.0;  t2 = 1.0;
-         s3 = 0.75, t3 = 1.0;
-         s4 = 0.75; t4 = 0.0;
-       }
-      else if (i == 13)
-       {
-         texture = lc->texids[FACE_S];
-         s1 = 1.0;  t1 = 0.437;
-         s2 = 1.0;  t2 = 1.0;
-         s3 = 0.75; t3 = 1.0;
-         s4 = 0.75; t4 = 0.437;
-       }
-
-      face4((texture == -1 ? 0 : texture),
-           (texture == -1 ? interior_color : exterior_color),
-           wire,
-           s1, t1,  0.5,  x2-0.5, y2-0.5,
-           s2, t2,  0.5,  x1-0.5, y1-0.5,
-           s3, t3,  0.25, x1-0.5, y1-0.5,
-           s4, t4,  0.25, x2-0.5, y2-0.5);
-    }
-
-  glEndList();
-
-  /* -------------------------------------------------------------------- */
-
-  glNewList(lc->taser_lifter, GL_COMPILE);
-  glShadeModel(GL_SMOOTH);
-
-  /* N */
-  face4(lc->texids[FACE_N], exterior_color, wire,
-       0.0,  0.75,     -0.5,  0.5, -0.25,
-       0.75, 0.75,      0.25, 0.5, -0.25,
-       0.75, 1.0,       0.25, 0.5, -0.5,
-       0.0,  1.0,      -0.5,  0.5, -0.5);
-
-  /* S */
-  face4(lc->texids[FACE_S], exterior_color, wire,
-       0.0,  0.0,      -0.5,  -0.5, -0.5,
-       0.75, 0.0,       0.25, -0.5, -0.5,
-       0.75, 0.25,      0.25, -0.5, -0.25,
-       0.0,  0.25,     -0.5,  -0.5, -0.25);
-
-  /* interior E */
-  face4(0, interior_color, wire,
-       0.0, 1.0,        0.25, -0.5, -0.5,
-       1.0, 1.0,        0.25,  0.5, -0.5,
-       1.0, 0.0,        0.25,  0.5, -0.25,
-       0.0, 0.0,        0.25, -0.5, -0.25);
-
-  /* W */
-  face4(lc->texids[FACE_W], exterior_color, wire,
-       1.0, 0.25,      -0.5, -0.5, -0.25,
-       0.0, 0.25,      -0.5,  0.5, -0.25,
-       0.0, 0.0,       -0.5,  0.5, -0.5,
-       1.0, 0.0,       -0.5, -0.5, -0.5);
-
-  /* interior U */
-  face4(0, interior_color, wire,
-       1.0, 0.0,        0.25, -0.5,  -0.25,
-       1.0, 1.0,        0.25,  0.5,  -0.25,
-       0.0, 1.0,       -0.5,   0.5,  -0.25,
-       0.0, 0.0,       -0.5,  -0.5,  -0.25);
-
-  /* D */
-  face4(lc->texids[FACE_D], exterior_color, wire,
-       0.0, 1.0,       -0.5, -0.5, -0.5,
-       0.0, 0.0,       -0.5,  0.5, -0.5,
-       0.75, 0.0,       0.25,  0.5, -0.5,
-       0.75, 1.0,       0.25, -0.5, -0.5);
-
-
-  /* Top face */
-  for (i = 0; i < countof(lifter_face_points)/5; i++)
-    {
-      int j;
-
-#ifdef HAVE_GLBINDTEXTURE
-      glBindTexture(GL_TEXTURE_2D, lc->texids[FACE_E]);
-#endif /* HAVE_GLBINDTEXTURE */
-      glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, exterior_color);
-
-      do_normal(
-         0, lifter_face_points[(i*5)+0][0], lifter_face_points[(i*5)+0][1],
-        0, lifter_face_points[(i*5)+1][0], lifter_face_points[(i*5)+1][1],
-        0, lifter_face_points[(i*5)+2][0], lifter_face_points[(i*5)+2][1]);
-
-      glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
-      for (j = 0; j < 5; j++)
-       {
-         int ix = lifter_face_points[(i*5)+j][0];
-         int iy = lifter_face_points[(i*5)+j][1];
-         GLfloat x, y;
-         if (ix == -1)  /* these are padding: ignore them */
-           continue;
-         x = ix / 255.0L;
-         y = iy / 255.0L;
-         glTexCoord2f(x, y);
-         glVertex3f(0.5, x-0.5, y-0.5);
-       }
-      glEnd();
-    }
-
-  /* Side walls */
-  for (i = 0; i < countof(lifter_perimiter_points_1); i++)
-    {
-      int j = (i+1 >= countof(lifter_perimiter_points_1) ? 0 : i+1);
-      GLfloat x1 = lifter_perimiter_points_1[i][0] / 255.0;
-      GLfloat y1 = lifter_perimiter_points_1[i][1] / 255.0;
-      GLfloat x2 = lifter_perimiter_points_1[j][0] / 255.0;
-      GLfloat y2 = lifter_perimiter_points_1[j][1] / 255.0;
-      int texture = -1;
-      GLfloat s1=0, t1=0, s2=0, t2=0, s3=0, t3=0, s4=0, t4=0;
-
-      if (i == 0)
-       {
-         texture = lc->texids[FACE_S];
-         s1 = 1.0;  t1 = 0.0;
-         s2 = 1.0;  t2 = 0.26;
-         s3 = 0.75, t3 = 0.26;
-         s4 = 0.75; t4 = 0.0;
-       }
-      else if (i == 1)
-       {
-         texture = lc->texids[FACE_D];
-         s1 = 1.0;  t1 = 0.914;
-         s2 = 1.0;  t2 = 1.0;
-         s3 = 0.75; t3 = 1.0;
-         s4 = 0.75; t4 = 0.914;
-       }
-
-      face4((texture == -1 ? 0 : texture),
-           (texture == -1 ? interior_color : exterior_color),
-           wire,
-           s1, t1,  0.5,  x2-0.5, y2-0.5,
-           s2, t2,  0.5,  x1-0.5, y1-0.5,
-           s3, t3,  0.25, x1-0.5, y1-0.5,
-           s4, t4,  0.25, x2-0.5, y2-0.5);
-    }
-
-  for (i = 0; i < countof(lifter_perimiter_points_2); i++)
-    {
-      int j = (i+1 >= countof(lifter_perimiter_points_2) ? 0 : i+1);
-      GLfloat x1 = lifter_perimiter_points_2[i][0] / 255.0;
-      GLfloat y1 = lifter_perimiter_points_2[i][1] / 255.0;
-      GLfloat x2 = lifter_perimiter_points_2[j][0] / 255.0;
-      GLfloat y2 = lifter_perimiter_points_2[j][1] / 255.0;
-      int texture = -1;
-      GLfloat s1=0, t1=0, s2=0, t2=0, s3=0, t3=0, s4=0, t4=0;
-
-      if (i == 0)
-       {
-         texture = lc->texids[FACE_D];
-         s1 = 1.0;  t1 = 0.0;
-         s2 = 1.0;  t2 = 0.095;
-         s3 = 0.75; t3 = 0.095;
-         s4 = 0.75; t4 = 0.0;
-       }
-      else if (i == 1)
-       {
-         texture = lc->texids[FACE_N];
-         s1 = 1.0;  t1 = 0.745;
-         s2 = 1.0;  t2 = 1.0;
-         s3 = 0.75; t3 = 1.0;
-         s4 = 0.75; t4 = 0.745;
-       }
-
-      face4((texture == -1 ? 0 : texture),
-           (texture == -1 ? interior_color : exterior_color),
-           wire,
-           s1, t1,  0.5,  x2-0.5, y2-0.5,
-           s2, t2,  0.5,  x1-0.5, y1-0.5,
-           s3, t3,  0.25, x1-0.5, y1-0.5,
-           s4, t4,  0.25, x2-0.5, y2-0.5);
-    }
-
-  for (i = 0; i < countof(lifter_perimiter_points_3); i++)
-    {
-      int j = (i+1 >= countof(lifter_perimiter_points_3) ? 0 : i+1);
-      GLfloat x1 = lifter_perimiter_points_3[i][0] / 255.0;
-      GLfloat y1 = lifter_perimiter_points_3[i][1] / 255.0;
-      GLfloat x2 = lifter_perimiter_points_3[j][0] / 255.0;
-      GLfloat y2 = lifter_perimiter_points_3[j][1] / 255.0;
-      int texture = -1;
-      GLfloat s1=0, t1=0, s2=0, t2=0, s3=0, t3=0, s4=0, t4=0;
-
-      if (i == 0)
-       {
-         texture = lc->texids[FACE_D];
-         s1 = 1.0;  t1 = 0.235;
-         s2 = 1.0;  t2 = 0.765;
-         s3 = 0.75; t3 = 0.765;
-         s4 = 0.75; t4 = 0.235;
-       }
-
-      face4((texture == -1 ? 0 : texture),
-           (texture == -1 ? interior_color : exterior_color),
-           wire,
-           s1, t1,  0.5,  x2-0.5, y2-0.5,
-           s2, t2,  0.5,  x1-0.5, y1-0.5,
-           s3, t3,  0.25, x1-0.5, y1-0.5,
-           s4, t4,  0.25, x2-0.5, y2-0.5);
-    }
-
-  glEndList();
-
-  /* -------------------------------------------------------------------- */
-
-  glNewList(lc->taser_slider, GL_COMPILE);
-  glShadeModel(GL_SMOOTH);
-
-  /* Top face */
-  for (i = 0; i < countof(slider_face_points)/5; i++)
-    {
-      int j;
-#ifdef HAVE_GLBINDTEXTURE
-      glBindTexture(GL_TEXTURE_2D, lc->texids[FACE_E]);
-#endif /* HAVE_GLBINDTEXTURE */
-      glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, exterior_color);
-
-      do_normal(
-          0, slider_face_points[(i*5)+0][0], slider_face_points[(i*5)+0][1],
-          0, slider_face_points[(i*5)+1][0], slider_face_points[(i*5)+1][1],
-          0, slider_face_points[(i*5)+2][0], slider_face_points[(i*5)+2][1]);
-      glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
-      for (j = 0; j < 5; j++)
-       {
-         int ix = slider_face_points[(i*5)+j][0];
-         int iy = slider_face_points[(i*5)+j][1];
-         GLfloat x, y;
-         if (ix == -1)  /* these are padding: ignore them */
-           continue;
-         x = ix / 255.0L;
-         y = iy / 255.0L;
-         glTexCoord2f(x, y);
-         glVertex3f(0.5, x-0.5, y-0.5);
-       }
-      glEnd();
-    }
-
-  /* Bottom face */
-  for (i = countof(slider_face_points)/5 - 1; i >= 0; i--)
-    {
-      int j;
-#ifdef HAVE_GLBINDTEXTURE
-      glBindTexture(GL_TEXTURE_2D, 0);
-#endif /* HAVE_GLBINDTEXTURE */
-      glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, interior_color);
-
-      do_normal(
-          0, slider_face_points[(i*5)+2][0], slider_face_points[(i*5)+2][1],
-          0, slider_face_points[(i*5)+1][0], slider_face_points[(i*5)+1][1],
-          0, slider_face_points[(i*5)+0][0], slider_face_points[(i*5)+0][1]);
-      glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
-      for (j = 4; j >= 0; j--)
-       {
-         int ix = slider_face_points[(i*5)+j][0];
-         int iy = slider_face_points[(i*5)+j][1];
-         GLfloat x, y;
-         if (ix == -1)  /* these are padding: ignore them */
-           continue;
-         x = ix / 255.0L;
-         y = iy / 255.0L;
-         glTexCoord2f(x, y);
-         glVertex3f(0.25, x-0.5, y-0.5);
-       }
-      glEnd();
-    }
-
-  /* Side walls */
-  for (i = 0; i < countof(slider_perimiter_points); i++)
-    {
-      int j = (i+1 >= countof(slider_perimiter_points) ? 0 : i+1);
-      GLfloat x1 = slider_perimiter_points[i][0] / 255.0;
-      GLfloat y1 = slider_perimiter_points[i][1] / 255.0;
-      GLfloat x2 = slider_perimiter_points[j][0] / 255.0;
-      GLfloat y2 = slider_perimiter_points[j][1] / 255.0;
-      int texture = -1;
-      GLfloat s1=0, t1=0, s2=0, t2=0, s3=0, t3=0, s4=0, t4=0;
-
-      if (i == 1)
-       {
-         texture = lc->texids[FACE_S];
-         s1 = 1.0;  t1 = 0.255;
-         s2 = 1.0;  t2 = 0.435;
-         s3 = 0.75; t3 = 0.435;
-         s4 = 0.75; t4 = 0.255;
-       }
-      else if (i == 4)
-       {
-         texture = lc->texids[FACE_D];
-         s1 = 1.0;  t1 = 0.758;
-         s2 = 1.0;  t2 = 0.915;
-         s3 = 0.75; t3 = 0.915;
-         s4 = 0.75; t4 = 0.758;
-       }
-      else if (i == 16)
-       {
-         texture = lc->texids[FACE_D];
-         s1 = 1.0;  t1 = 0.095;
-         s2 = 1.0;  t2 = 0.24;
-         s3 = 0.75; t3 = 0.24;
-         s4 = 0.75; t4 = 0.095;
-       }
-      else if (i == 19)
-       {
-         texture = lc->texids[FACE_N];
-         s1 = 1.0;  t1 = 0.568;
-         s2 = 1.0;  t2 = 0.742;
-         s3 = 0.75; t3 = 0.742;
-         s4 = 0.75; t4 = 0.568;
-       }
-
-      face4((texture == -1 ? 0 : texture),
-           (texture == -1 ? interior_color : exterior_color),
-           wire,
-           s1, t1,  0.5,  x2-0.5, y2-0.5,
-           s2, t2,  0.5,  x1-0.5, y1-0.5,
-           s3, t3,  0.25, x1-0.5, y1-0.5,
-           s4, t4,  0.25, x2-0.5, y2-0.5);
-    }
-
-  glEndList();
-}
-
-
-\f
-/* Rendering and animating object models
- */
-
-static void
-draw(ModeInfo *mi)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-  Bool wire = MI_IS_WIREFRAME(mi);
-
-  if (!wire)
-    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-  else
-    glClear(GL_COLOR_BUFFER_BIT);
-
-  glPushMatrix();
-  {
-    GLfloat x = lc->rotx;
-    GLfloat y = lc->roty;
-    GLfloat z = lc->rotz;
-
-#if 0
- x=0.75; y=0; z=0; 
-#endif
-
-    if (x < 0) x = 1 - (x + 1);
-    if (y < 0) y = 1 - (y + 1);
-    if (z < 0) z = 1 - (z + 1);
-
-    /* Make into the screen be +Y right be +X, and up be +Z. */
-    glRotatef(-90.0, 1.0, 0.0, 0.0);
-
-    /* Scale it up. */
-    glScalef(4.0, 4.0, 4.0);
-
-#ifdef DEBUG
-    glPushMatrix();
-    {
-      /* Shift to the upper left, and draw the vanilla box. */
-      glTranslatef(-0.6, 0.0, 0.6);
-
-      /* Apply rotation to the object. */
-      glRotatef(x * 360, 1.0, 0.0, 0.0);
-      glRotatef(y * 360, 0.0, 1.0, 0.0);
-      glRotatef(z * 360, 0.0, 0.0, 1.0);
-
-      /* Draw it. */
-      glCallList(lc->box);
-    }
-    glPopMatrix();
-
-    /* Shift to the lower right, and draw the animated object. */
-    glTranslatef(0.6, 0.0, -0.6);
-#endif /* DEBUG */
-
-
-    glPushMatrix();
-    {
-      /* Apply rotation to the object. */
-      glRotatef(x * 360, 1.0, 0.0, 0.0);
-      glRotatef(y * 360, 0.0, 1.0, 0.0);
-      glRotatef(z * 360, 0.0, 0.0, 1.0);
-
-      switch (lc->type)
-       {
-       case LAMENT_BOX:
-         glCallList(lc->box);
-         break;
-
-       case LAMENT_STAR_OUT:
-       case LAMENT_STAR_ROT:
-       case LAMENT_STAR_ROT_IN:
-       case LAMENT_STAR_ROT_OUT:
-       case LAMENT_STAR_UNROT:
-       case LAMENT_STAR_IN:
-         glTranslatef(0.0, 0.0, lc->anim_z/2);
-         glRotatef(lc->anim_r/2, 0.0, 0.0, 1.0);
-         glCallList(lc->star1);
-
-         glTranslatef(0.0, 0.0, -lc->anim_z);
-         glRotatef(-lc->anim_r, 0.0, 0.0, 1.0);
-         glCallList(lc->star2);
-         break;
-
-       case LAMENT_TETRA_UNE:
-       case LAMENT_TETRA_USW:
-       case LAMENT_TETRA_DWN:
-       case LAMENT_TETRA_DSE:
-         {
-           int magic;
-           GLfloat x, y, z;
-           switch (lc->type) {
-           case LAMENT_TETRA_UNE: magic = lc->tetra_une;
-             x = 1.0; y = 1.0; z = 1.0; break;
-           case LAMENT_TETRA_USW: magic = lc->tetra_usw;
-             x = 1.0; y = 1.0; z = -1.0; break;
-           case LAMENT_TETRA_DWN: magic = lc->tetra_dwn;
-             x = 1.0; y = -1.0; z = 1.0; break;
-           case LAMENT_TETRA_DSE: magic = lc->tetra_dse;
-             x = -1.0; y = 1.0; z = 1.0; break;
-           default: abort(); break;
-           }
-           glCallList(lc->tetra_mid);
-           if (magic != lc->tetra_une) glCallList(lc->tetra_une);
-           if (magic != lc->tetra_usw) glCallList(lc->tetra_usw);
-           if (magic != lc->tetra_dwn) glCallList(lc->tetra_dwn);
-           if (magic != lc->tetra_dse) glCallList(lc->tetra_dse);
-           glRotatef(lc->anim_r, x, y, z);
-           glCallList(magic);
-         }
-         break;
-
-       case LAMENT_LID_OPEN:
-       case LAMENT_LID_CLOSE:
-       case LAMENT_LID_ZOOM:
-         {
-           GLfloat d = 0.417;
-
-           glTranslatef(lc->anim_z, 0.0, 0.0);
-
-           glCallList(lc->lid_0);
-
-           glPushMatrix();
-             glTranslatef(-0.5, -d, 0.0);
-             glRotatef(-lc->anim_r, 0.0, -1.0, -1.0);
-             glTranslatef( 0.5,  d, 0.0);
-             glCallList(lc->lid_1);
-           glPopMatrix();
-           glPushMatrix();
-             glTranslatef(-0.5, -d, 0.0);
-             glRotatef( lc->anim_r, 0.0, -1.0,   1.0);
-             glTranslatef( 0.5,  d, 0.0);
-             glCallList(lc->lid_2);
-           glPopMatrix();
-           glPushMatrix();
-             glTranslatef(-0.5,  d, 0.0);
-             glRotatef( lc->anim_r, 0.0,  -1.0,  -1.0);
-             glTranslatef( 0.5, -d, 0.0);
-             glCallList(lc->lid_3);
-           glPopMatrix();
-           glPushMatrix();
-             glTranslatef(-0.5,  d, 0.0);
-             glRotatef(-lc->anim_r, 0.0,  -1.0,   1.0);
-             glTranslatef( 0.5, -d, 0.0);
-             glCallList(lc->lid_4);
-           glPopMatrix();
-         }
-         break;
-
-       case LAMENT_TASER_OUT:
-       case LAMENT_TASER_SLIDE:
-       case LAMENT_TASER_SLIDE_IN:
-       case LAMENT_TASER_IN:
-
-         glTranslatef(-lc->anim_z/2, 0.0, 0.0);
-         glCallList(lc->taser_base);
-
-         glTranslatef(lc->anim_z, 0.0, 0.0);
-         glCallList(lc->taser_lifter);
-
-         glTranslatef(0.0, 0.0, lc->anim_y);
-         glCallList(lc->taser_slider);
-         break;
-
-       default:
-         abort();
-         break;
-       }
-    }
-    glPopMatrix();
-
-  }
-  glPopMatrix();
-}
-
-
-static void
-animate(ModeInfo *mi)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-  int pause = 10;
-/*  int pause2 = 60;*/
-  int pause3 = 120;
-
-  switch (lc->type)
-    {
-    case LAMENT_BOX:
-      {
-       /* Rather than just picking states randomly, pick an ordering randomly,
-          do it, and then re-randomize.  That way one can be assured of seeing
-          all states in a short time period, though not always in the same
-          order (it's frustrating to see it pick the same state 5x in a row.)
-        */
-       static lament_type states[] = {
-         LAMENT_STAR_OUT, LAMENT_STAR_OUT,
-         LAMENT_TETRA_UNE, LAMENT_TETRA_USW,
-         LAMENT_TETRA_DWN, LAMENT_TETRA_DSE,
-         LAMENT_LID_OPEN, LAMENT_LID_OPEN, LAMENT_LID_OPEN,
-         LAMENT_TASER_OUT, LAMENT_TASER_OUT,
-         LAMENT_BOX, LAMENT_BOX, LAMENT_BOX, LAMENT_BOX, LAMENT_BOX,
-         LAMENT_BOX, LAMENT_BOX, LAMENT_BOX, LAMENT_BOX, LAMENT_BOX,
-       };
-       static int state = countof(states);
-
-       if (state < countof(states))
-         {
-           lc->type = states[state++];
-         }
-       else
-         {
-           int i;
-           state = 0;
-           for (i = 0; i < countof(states); i++)
-             {
-               int a = random() % countof(states);
-               lament_type swap = states[a];
-               states[a] = states[i];
-               states[i] = swap;
-             }
-         }
-
-       if (lc->type == LAMENT_BOX)
-         lc->anim_pause = pause3;
-
-       lc->anim_r = 0.0;
-       lc->anim_y = 0.0;
-       lc->anim_z = 0.0;
-      }
-      break;
-
-      /* -------------------------------------------------------------- */
-
-    case LAMENT_STAR_OUT:
-      lc->anim_z += 0.01;
-      if (lc->anim_z >= 1.0)
-       {
-         lc->anim_z = 1.0;
-         lc->type = LAMENT_STAR_ROT;
-         lc->anim_pause = pause;
-       }
-      break;
-
-    case LAMENT_STAR_ROT:
-      lc->anim_r += 1.0;
-      if (lc->anim_r >= 45.0)
-       {
-         lc->anim_r = 45.0;
-         lc->type = LAMENT_STAR_ROT_IN;
-         lc->anim_pause = pause;
-       }
-      break;
-
-    case LAMENT_STAR_ROT_IN:
-      lc->anim_z -= 0.01;
-      if (lc->anim_z <= 0.0)
-       {
-         lc->anim_z = 0.0;
-         lc->type = LAMENT_STAR_ROT_OUT;
-         lc->anim_pause = pause3 * (1 + (random() % 4) + (random() % 4));
-       }
-      break;
-
-    case LAMENT_STAR_ROT_OUT:
-      lc->anim_z += 0.01;
-      if (lc->anim_z >= 1.0)
-       {
-         lc->anim_z = 1.0;
-         lc->type = LAMENT_STAR_UNROT;
-         lc->anim_pause = pause;
-       }
-      break;
-      
-    case LAMENT_STAR_UNROT:
-      lc->anim_r -= 1.0;
-      if (lc->anim_r <= 0.0)
-       {
-         lc->anim_r = 0.0;
-         lc->type = LAMENT_STAR_IN;
-         lc->anim_pause = pause;
-       }
-      break;
-
-    case LAMENT_STAR_IN:
-      lc->anim_z -= 0.01;
-      if (lc->anim_z <= 0.0)
-       {
-         lc->anim_z = 0.0;
-         lc->type = LAMENT_BOX;
-         lc->anim_pause = pause3;
-       }
-      break;
-
-      /* -------------------------------------------------------------- */
-
-    case LAMENT_TETRA_UNE:
-    case LAMENT_TETRA_USW:
-    case LAMENT_TETRA_DWN:
-    case LAMENT_TETRA_DSE:
-
-      lc->anim_r += 1.0;
-      if (lc->anim_r >= 360.0)
-       {
-         lc->anim_r = 0.0;
-         lc->type = LAMENT_BOX;
-         lc->anim_pause = pause3;
-       }
-      else if (lc->anim_r > 119.0 && lc->anim_r <= 120.0)
-       {
-         lc->anim_r = 120.0;
-         lc->anim_pause = pause;
-       }
-      else if (lc->anim_r > 239.0 && lc->anim_r <= 240.0)
-       {
-         lc->anim_r = 240.0;
-         lc->anim_pause = pause;
-       }
-      break;
-
-      /* -------------------------------------------------------------- */
-
-    case LAMENT_LID_OPEN:
-      lc->anim_r += 1.0;
-
-      if (lc->anim_r >= 112.0)
-       {
-         GLfloat hysteresis = 0.05;
-
-         lc->anim_r = 112.0;
-         lc->anim_z = 0.0;
-         lc->anim_pause = pause3;
-
-         if (lc->rotx >= -hysteresis &&
-             lc->rotx <=  hysteresis &&
-             ((lc->rotz >=  (0.25 - hysteresis) &&
-               lc->rotz <=  (0.25 + hysteresis)) ||
-              (lc->rotz >= (-0.25 - hysteresis) &&
-               lc->rotz <= (-0.25 + hysteresis))))
-           {
-             lc->type = LAMENT_LID_ZOOM;
-             lc->rotx = 0.00;
-             lc->rotz = (lc->rotz < 0 ? -0.25 : 0.25);
-           }
-         else
-           {
-             lc->type = LAMENT_LID_CLOSE;
-           }
-       }
-      break;
-
-    case LAMENT_LID_CLOSE:
-      lc->anim_r -= 1.0;
-      if (lc->anim_r <= 0.0)
-       {
-         lc->anim_r = 0.0;
-         lc->type = LAMENT_BOX;
-         lc->anim_pause = pause3;
-       }
-      break;
-
-    case LAMENT_LID_ZOOM:
-      lc->anim_z -= 0.1;
-      if (lc->anim_z < -50.0)
-       {
-         lc->anim_r = 0.0;
-         lc->anim_z = 0.0;
-         lc->rotx = frand(1.0) * RANDSIGN();
-         lc->roty = frand(1.0) * RANDSIGN();
-         lc->rotz = frand(1.0) * RANDSIGN();
-         lc->type = LAMENT_BOX;
-       }
-      break;
-
-      /* -------------------------------------------------------------- */
-
-    case LAMENT_TASER_OUT:
-      lc->anim_z += 0.0025;
-      if (lc->anim_z >= 0.25)
-       {
-         lc->anim_z = 0.25;
-         lc->type = LAMENT_TASER_SLIDE;
-         lc->anim_pause = pause * (1 + (random() % 5) + (random() % 5));
-       }
-      break;
-
-    case LAMENT_TASER_SLIDE:
-      lc->anim_y += 0.0025;
-      if (lc->anim_y >= 0.23)
-       {
-         lc->anim_y = 0.23;
-         lc->type = LAMENT_TASER_SLIDE_IN;
-         lc->anim_pause = pause3 * (1 + (random() % 5) + (random() % 5));
-       }
-      break;
-
-    case LAMENT_TASER_SLIDE_IN:
-      lc->anim_y -= 0.0025;
-      if (lc->anim_y <= 0.0)
-       {
-         lc->anim_y = 0.0;
-         lc->type = LAMENT_TASER_IN;
-         lc->anim_pause = pause;
-       }
-      break;
-
-    case LAMENT_TASER_IN:
-      lc->anim_z -= 0.0025;
-      if (lc->anim_z <= 0.0)
-       {
-         lc->anim_z = 0.0;
-         lc->type = LAMENT_BOX;
-         lc->anim_pause = pause3;
-       }
-      break;
-
-    default:
-      abort();
-      break;
-    }
-}
-
-
-static void
-rotate(GLfloat *pos, GLfloat *v, GLfloat *dv, GLfloat max_v)
-{
-  double ppos = *pos;
-
-  /* tick position */
-  if (ppos < 0)
-    ppos = -(ppos + *v);
-  else
-    ppos += *v;
-
-  if (ppos > 1.0)
-    ppos -= 1.0;
-  else if (ppos < 0)
-    ppos += 1.0;
-
-  if (ppos < 0) abort();
-  if (ppos > 1.0) abort();
-  *pos = (*pos > 0 ? ppos : -ppos);
-
-  /* accelerate */
-  *v += *dv;
-
-  /* clamp velocity */
-  if (*v > max_v || *v < -max_v)
-    {
-      *dv = -*dv;
-    }
-  /* If it stops, start it going in the other direction. */
-  else if (*v < 0)
-    {
-      if (random() % 4)
-       {
-         *v = 0;
-
-         /* keep going in the same direction */
-         if (random() % 2)
-           *dv = 0;
-         else if (*dv < 0)
-           *dv = -*dv;
-       }
-      else
-       {
-         /* reverse gears */
-         *v = -*v;
-         *dv = -*dv;
-         *pos = -*pos;
-       }
-    }
-
-  /* Alter direction of rotational acceleration randomly. */
-  if (! (random() % 120))
-    *dv = -*dv;
-
-  /* Change acceleration very occasionally. */
-  if (! (random() % 200))
-    {
-      if (*dv == 0)
-       *dv = 0.00001;
-      else if (random() & 1)
-       *dv *= 1.2;
-      else
-       *dv *= 0.8;
-    }
-}
-
-
-\f
-/* Window management, etc
- */
-
-static void
-reshape(int width, int height)
-{
-  int target_size = 180;
-  int win_size = (width > height ? height : width);
-  GLfloat h = (GLfloat) height / (GLfloat) width;
-
-  glViewport(0, 0, (GLint) width, (GLint) height);
-
-/*  glViewport(-600, -600, 1800, 1800); */
-
-  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);
-
-  /* This scale makes the box take up most of the window */
-  glScalef(2.0, 2.0, 2.0);
-
-  /* But if the window is more than a little larger than our target size,
-     scale the object back down, so that the bits drawn on the screen end
-     up rougly target_size across (actually it ends up a little larger.)
-     Note that the image-map bits we have are 128x128.  Therefore, if the
-     image is magnified a lot, it looks pretty blocky.  So it's better to
-     have a 128x128 animation on a 1280x1024 screen that looks good, than
-     a 1024x1024 animation that looks really pixellated.
-   */
-  if (win_size > target_size * 1.5)
-    {
-      GLfloat ratio = ((GLfloat) target_size / (GLfloat) win_size);
-      ratio *= 2.0;
-      glScalef(ratio, ratio, ratio);
-    }
-
-  /* The depth buffer will be cleared, if needed, before the
-   * next frame.  Right now we just want to black the screen.
-   */
-  glClear(GL_COLOR_BUFFER_BIT);
-}
-
-
-static void
-gl_init(ModeInfo *mi)
-{
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-  Bool wire = MI_IS_WIREFRAME(mi);
-
-  if (wire)
-    do_texture = False;
-
-  if (!wire)
-    {
-      static GLfloat pos0[]  = { -4.0, 2.0, 5.0, 1.0 };
-      static GLfloat pos1[]  = { 12.0, 5.0, 1.0, 1.0 };
-      static GLfloat local[] = { 0.0 };
-      static GLfloat ambient[] = { 0.3, 0.3, 0.3, 1.0 };
-      static GLfloat spec[] = { 1.0, 1.0, 1.0, 1.0 };
-      static GLfloat shine[] = { 100.0 };
-
-      glLightfv(GL_LIGHT0, GL_POSITION, pos0);
-      glLightfv(GL_LIGHT1, GL_POSITION, pos1);
-
-      glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-      glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
-
-      glLightfv(GL_LIGHT0, GL_SPECULAR, spec);
-      glLightfv(GL_LIGHT1, GL_SPECULAR, spec);
-
-      glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local);
-      glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, exterior_color);
-      glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
-      glMaterialfv(GL_FRONT, GL_SHININESS, shine);
-
-      glEnable(GL_LIGHTING);
-      glEnable(GL_LIGHT0);
-      glEnable(GL_LIGHT1);
-      glDisable(GL_LIGHT1);
-
-      glEnable(GL_DEPTH_TEST);
-      glEnable(GL_TEXTURE_2D);
-      glEnable(GL_NORMALIZE);
-      glEnable(GL_CULL_FACE);
-    }
-
-  if (do_texture)
-    {
-#ifdef HAVE_GLBINDTEXTURE
-      int i;
-      for (i = 0; i < 6; i++)
-       glGenTextures(1, &lc->texids[i]);
-
-      parse_image_data(mi);
-
-      glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
-      glPixelStorei(GL_UNPACK_ROW_LENGTH, lc->texture->width);
-
-      for (i = 0; i < 6; i++)
-       {
-         int height = lc->texture->width;      /* assume square */
-         glBindTexture(GL_TEXTURE_2D, lc->texids[i]);
-         glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, exterior_color);
-         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
-                      lc->texture->width, height, 0,
-                      GL_RGBA, GL_UNSIGNED_BYTE,
-                      (lc->texture->data +
-                       (lc->texture->bytes_per_line * height * i)));
-
-         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-         glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
-         glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
-       }
-
-#else  /* !HAVE_GLBINDTEXTURE */
-      fprintf(stderr,
-             "%s: this version of GL doesn't support multiple texture maps.\n"
-             "\tGet OpenGL 1.1.\n",
-             progname);
-      exit (1);
-#endif /* !HAVE_GLBINDTEXTURE */
-    }
-
-  lc->box = glGenLists(16);
-  lc->star1 = lc->box+1;
-  lc->star2 = lc->box+2;
-  lc->tetra_une = lc->box+3;
-  lc->tetra_usw = lc->box+4;
-  lc->tetra_dwn = lc->box+5;
-  lc->tetra_dse = lc->box+6;
-  lc->tetra_mid = lc->box+7;
-  lc->lid_0 = lc->box+8;
-  lc->lid_1 = lc->box+9;
-  lc->lid_2 = lc->box+10;
-  lc->lid_3 = lc->box+11;
-  lc->lid_4 = lc->box+12;
-  lc->taser_base = lc->box+13;
-  lc->taser_lifter = lc->box+14;
-  lc->taser_slider = lc->box+15;
-
-  box(mi, wire);
-  star(mi, True, wire);
-  star(mi, False, wire);
-  tetra(mi, wire);
-  lid(mi, wire);
-  taser(mi, wire);
-}
-
-
-void
-init_lament(ModeInfo *mi)
-{
-  lament_configuration *lc;
-  if (!lcs)
-    {
-      lcs = (lament_configuration *)
-       calloc(MI_NUM_SCREENS(mi), sizeof (lament_configuration));
-      if (!lcs)
-       {
-         fprintf(stderr, "%s: out of memory\n", progname);
-         exit(1);
-       }
-    }
-
-  lc = &lcs[MI_SCREEN(mi)];
-
-  lc->rotx = frand(1.0) * RANDSIGN();
-  lc->roty = frand(1.0) * RANDSIGN();
-  lc->rotz = frand(1.0) * RANDSIGN();
-
-  /* bell curve from 0-1.5 degrees, avg 0.75 */
-  lc->dx = (frand(1) + frand(1) + frand(1)) / (360*2);
-  lc->dy = (frand(1) + frand(1) + frand(1)) / (360*2);
-  lc->dz = (frand(1) + frand(1) + frand(1)) / (360*2);
-
-  lc->d_max = lc->dx * 2;
-
-  lc->ddx = 0.00006 + frand(0.00003);
-  lc->ddy = 0.00006 + frand(0.00003);
-  lc->ddz = 0.00006 + frand(0.00003);
-
-  lc->ddx = 0.00001;
-  lc->ddy = 0.00001;
-  lc->ddz = 0.00001;
-
-  lc->type = LAMENT_BOX;
-  lc->anim_pause = 300 + (random() % 100);
-
-  if ((lc->glx_context = init_GL(mi)) != NULL)
-    {
-      reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
-      gl_init(mi);
-    }
-}
-
-
-void
-draw_lament(ModeInfo *mi)
-{
-  static int tick = 0;
-  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
-  Display *dpy = MI_DISPLAY(mi);
-  Window window = MI_WINDOW(mi);
-
-  if (!lc->glx_context)
-    return;
-
-  glDrawBuffer(GL_BACK);
-
-  glXMakeCurrent(dpy, window, *(lc->glx_context));
-  draw(mi);
-  glFinish();
-  glXSwapBuffers(dpy, window);
-
-  if (lc->type != LAMENT_LID_ZOOM)
-    {
-      rotate(&lc->rotx, &lc->dx, &lc->ddx, lc->d_max);
-      rotate(&lc->roty, &lc->dy, &lc->ddy, lc->d_max);
-      rotate(&lc->rotz, &lc->dz, &lc->ddz, lc->d_max);
-    }
-
-  if (lc->anim_pause)
-    lc->anim_pause--;
-  else
-    animate(mi);
-
-  if (++tick > 500)
-    {
-      tick = 0;
-      reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
-    }
-}
-
-#endif /* USE_GL */
diff --git a/hacks/glx/lament.man b/hacks/glx/lament.man
deleted file mode 100644 (file)
index 52cb6b4..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-.TH XScreenSaver 1 "25-Jul-98" "X Version 11"
-.SH NAME
-lament - animates the Lament Configuration
-.SH SYNOPSIS
-.B lament
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-texture] [\-no\-texture] [\-wireframe]
-.SH DESCRIPTION
-The \fIlament\fP program draws an animation of a particular puzzle box
-repeatedly solving itself.
-.SH OPTIONS
-.I lament
-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 \-texture
-Use texture maps.  This is the default.
-.TP 8
-.B \-no\-texture
-Do not use texture maps.  This is boring and wrong.
-.TP 8
-.B \-wireframe
-Only draw outlines.
-.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
-This hack is glacially slow on machines lacking hardware texture support.
-
-Occasionally opens doors, admitting theologians of the Order of the Gash.
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver (1)
-.SH COPYRIGHT
-Copyright \(co 1998 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 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>, 25-Jul-98.
diff --git a/hacks/glx/moebius.c b/hacks/glx/moebius.c
deleted file mode 100644 (file)
index 66560fc..0000000
+++ /dev/null
@@ -1,709 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* moebius --- Moebius Strip II, an Escher-like GL scene with ants. */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)moebius.c    4.08 97/01/04 xlockmore";
-
-#endif
-
-#undef DEBUG_LISTS
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The RotateAroundU() routine was adapted from the book
- *    "Computer Graphics Principles and Practice 
- *     Foley - vanDam - Feiner - Hughes
- *     Second Edition" Pag. 227, exercise 5.15.
- * 
- * This mode shows some interesting scenes that are impossible OR very
- * wierd to build in the real universe. Much of the scenes are inspirated
- * on Mauritz Cornelis Escher's works which derivated the mode's name.
- * M.C. Escher (1898-1972) was a dutch artist and many people prefer to
- * say he was a mathematician.
- *
- * Thanks goes to Brian Paul for making it possible and inexpensive to use 
- * OpenGL at home.
- *
- * Since I'm not a native English speaker, my apologies for any grammatical
- * mistake.
- *
- * My e-mail address is
- * m-vianna@usa.net
- *
- * Marcelo F. Vianna (Jun-01-1997)
- *
- * Revision History:
- * 01-Jan-98: Mode separated from escher and renamed
- * 08-Jun-97: New scene implemented: "Impossible Cage" based in a M.C. Escher's
- *            painting with the same name (quite similar). The first GL mode
- *            to use texture mapping.
- *            The "Impossible Cage" scene doesn't use DEPTH BUFFER, the 
- *            wood planks are drawn consistently using GL_CULL_FACE, and
- *            the painter's algorithm is used to sort the planks.
- *            Marcelo F. Vianna.
- * 07-Jun-97: Speed ups in Moebius Strip using GL_CULL_FACE.
- *            Marcelo F. Vianna.
- * 03-Jun-97: Initial Release (Only one scene: "Moebius Strip")
- *            The Moebius Strip scene was inspirated in a M.C. Escher's
- *            painting named Moebius Strip II in wich ants walk across a
- *            Moebius Strip path, sometimes meeting each other and sometimes
- *            being in "opposite faces" (note that the moebius strip has
- *            only one face and one edge).
- *            Marcelo F. Vianna.
- *
- */
-
-/*-
- * Texture mapping is only available on RGBA contexts, Mono and color index
- * visuals DO NOT support texture mapping in OpenGL.
- *
- * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture
- * mapping shuld work on PseudoColor, DirectColor, TrueColor using Mesa. Mono
- * is not officially supported for both OpenGL and Mesa, but seems to not crash
- * Mesa.
- *
- * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know).
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS                     "Moebius"
-# define HACK_INIT                     init_moebius
-# define HACK_DRAW                     draw_moebius
-# define moebius_opts                  xlockmore_opts
-# define DEFAULTS                      "*cycles:               1       \n"                     \
-                                                       "*delay:                1000    \n"                     \
-                                                       "*wireframe:    False   \n"
-# include "xlockmore.h"                /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"            /* from the xlockmore distribution */
-
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-
-#include <GL/glu.h>
-#include "e_textures.h"
-
-#define DEF_SOLIDMOEBIUS  "False"
-#define DEF_NOANTS  "False"
-
-static int  solidmoebius;
-static int  noants;
-
-static XrmOptionDescRec opts[] =
-{
-  {"-solidmoebius", ".moebius.solidmoebius", XrmoptionNoArg, (caddr_t) "on"},
- {"+solidmoebius", ".moebius.solidmoebius", XrmoptionNoArg, (caddr_t) "off"},
-       {"-noants", ".moebius.noants", XrmoptionNoArg, (caddr_t) "on"},
-       {"+noants", ".moebius.noants", XrmoptionNoArg, (caddr_t) "off"}
-};
-static argtype vars[] =
-{
-       {(caddr_t *) & solidmoebius, "solidmoebius", "Solidmoebius", DEF_SOLIDMOEBIUS, t_Bool},
-       {(caddr_t *) & noants, "noants", "Noants", DEF_NOANTS, t_Bool}
-};
-static OptionStruct desc[] =
-{
-       {"-/+solidmoebius", "select between a SOLID or a NET Moebius Strip"},
-       {"-/+noants", "turn on/off walking ants"}
-};
-
-ModeSpecOpt moebius_opts =
-{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   moebius_description =
-{"moebius", "init_moebius", "draw_moebius", "release_moebius",
- "draw_moebius", "change_moebius", NULL, &moebius_opts,
- 1000, 1, 1, 1, 4, 1.0, "",
- "Shows Moebius Strip II, an Escher-like GL scene with ants", 0, NULL};
-
-#endif
-
-#define Scale4Window               0.3
-#define Scale4Iconic               0.4
-
-#define sqr(A)                     ((A)*(A))
-
-#ifndef Pi
-#define Pi                         M_PI
-#endif
-
-/*************************************************************************/
-
-typedef struct {
-       GLint       WindH, WindW;
-       GLfloat     step;
-       GLfloat     ant_position;
-       int         AreObjectsDefined[2];
-       GLXContext *glx_context;
-} moebiusstruct;
-
-static float front_shininess[] =
-{60.0};
-static float front_specular[] =
-{0.7, 0.7, 0.7, 1.0};
-static float ambient[] =
-{0.0, 0.0, 0.0, 1.0};
-static float diffuse[] =
-{1.0, 1.0, 1.0, 1.0};
-static float position0[] =
-{1.0, 1.0, 1.0, 0.0};
-static float position1[] =
-{-1.0, -1.0, 1.0, 0.0};
-static float lmodel_ambient[] =
-{0.5, 0.5, 0.5, 1.0};
-static float lmodel_twoside[] =
-{GL_TRUE};
-
-static float MaterialRed[] =
-{0.7, 0.0, 0.0, 1.0};
-static float MaterialGreen[] =
-{0.1, 0.5, 0.2, 1.0};
-static float MaterialBlue[] =
-{0.0, 0.0, 0.7, 1.0};
-static float MaterialCyan[] =
-{0.2, 0.5, 0.7, 1.0};
-static float MaterialYellow[] =
-{0.7, 0.7, 0.0, 1.0};
-static float MaterialMagenta[] =
-{0.6, 0.2, 0.5, 1.0};
-static float MaterialWhite[] =
-{0.7, 0.7, 0.7, 1.0};
-static float MaterialGray[] =
-{0.2, 0.2, 0.2, 1.0};
-static float MaterialGray5[] =
-{0.5, 0.5, 0.5, 1.0};
-static float MaterialGray6[] =
-{0.6, 0.6, 0.6, 1.0};
-static float MaterialGray8[] =
-{0.8, 0.8, 0.8, 1.0};
-
-static moebiusstruct *moebius = NULL;
-static GLuint objects;
-
-#define NUM_SCENES      2
-
-#define ObjMoebiusStrip 0
-#define ObjAntBody      1
-
-static void
-mySphere(float radius)
-{
-       GLUquadricObj *quadObj;
-
-       quadObj = gluNewQuadric();
-       gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
-       gluSphere(quadObj, radius, 16, 16);
-       gluDeleteQuadric(quadObj);
-}
-
-static void
-myCone(float radius)
-{
-       GLUquadricObj *quadObj;
-
-       quadObj = gluNewQuadric();
-       gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
-       gluCylinder(quadObj, radius, 0, radius * 3, 8, 1);
-       gluDeleteQuadric(quadObj);
-}
-
-static void
-draw_moebius_ant(moebiusstruct * mp, float *Material, int mono)
-{
-       static float ant_step = 0;
-       float       cos1 = cos(ant_step);
-       float       cos2 = cos(ant_step + 2 * Pi / 3);
-       float       cos3 = cos(ant_step + 4 * Pi / 3);
-       float       sin1 = sin(ant_step);
-       float       sin2 = sin(ant_step + 2 * Pi / 3);
-       float       sin3 = sin(ant_step + 4 * Pi / 3);
-
-       if (mono)
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray5);
-       else
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Material);
-       if (!mp->AreObjectsDefined[ObjAntBody]) {
-               glNewList(objects + ObjAntBody, GL_COMPILE_AND_EXECUTE);
-               glEnable(GL_CULL_FACE);
-               glPushMatrix();
-               glScalef(1, 1.3, 1);
-               mySphere(0.18);
-               glScalef(1, 1 / 1.3, 1);
-               glTranslatef(0.00, 0.30, 0.00);
-               mySphere(0.2);
-
-               glTranslatef(-0.05, 0.17, 0.05);
-               glRotatef(-90, 1, 0, 0);
-               glRotatef(-25, 0, 1, 0);
-               myCone(0.05);
-               glTranslatef(0.00, 0.10, 0.00);
-               myCone(0.05);
-               glRotatef(25, 0, 1, 0);
-               glRotatef(90, 1, 0, 0);
-
-               glScalef(1, 1.3, 1);
-               glTranslatef(0.15, -0.65, 0.05);
-               mySphere(0.25);
-               glScalef(1, 1 / 1.3, 1);
-               glPopMatrix();
-               glDisable(GL_CULL_FACE);
-               glEndList();
-               mp->AreObjectsDefined[ObjAntBody] = 1;
-#ifdef DEBUG_LISTS
-               (void) printf("Ant drawn SLOWLY\n");
-#endif
-       } else {
-               glCallList(objects + ObjAntBody);
-#ifdef DEBUG_LISTS
-               (void) printf("Ant drawn quickly\n");
-#endif
-       }
-
-       glDisable(GL_LIGHTING);
-       /* ANTENNAS */
-       glBegin(GL_LINES);
-       if (mono)
-               glColor3fv(MaterialGray5);
-       else
-               glColor3fv(Material);
-       glVertex3f(0.00, 0.30, 0.00);
-       glColor3fv(MaterialGray);
-       glVertex3f(0.40, 0.70, 0.40);
-       if (mono)
-               glColor3fv(MaterialGray5);
-       else
-               glColor3fv(Material);
-       glVertex3f(0.00, 0.30, 0.00);
-       glColor3fv(MaterialGray);
-       glVertex3f(0.40, 0.70, -0.40);
-       glEnd();
-       glBegin(GL_POINTS);
-       if (mono)
-               glColor3fv(MaterialGray6);
-       else
-               glColor3fv(MaterialRed);
-       glVertex3f(0.40, 0.70, 0.40);
-       glVertex3f(0.40, 0.70, -0.40);
-       glEnd();
-
-       /* LEFT-FRONT ARM */
-       glBegin(GL_LINE_STRIP);
-       if (mono)
-               glColor3fv(MaterialGray5);
-       else
-               glColor3fv(Material);
-       glVertex3f(0.00, 0.05, 0.18);
-       glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25);
-       glColor3fv(MaterialGray);
-       glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
-       glEnd();
-
-       /* LEFT-CENTER ARM */
-       glBegin(GL_LINE_STRIP);
-       if (mono)
-               glColor3fv(MaterialGray5);
-       else
-               glColor3fv(Material);
-       glVertex3f(0.00, 0.00, 0.18);
-       glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25);
-       glColor3fv(MaterialGray);
-       glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
-       glEnd();
-
-       /* LEFT-BACK ARM */
-       glBegin(GL_LINE_STRIP);
-       if (mono)
-               glColor3fv(MaterialGray5);
-       else
-               glColor3fv(Material);
-       glVertex3f(0.00, -0.05, 0.18);
-       glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25);
-       glColor3fv(MaterialGray);
-       glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
-       glEnd();
-
-       /* RIGHT-FRONT ARM */
-       glBegin(GL_LINE_STRIP);
-       if (mono)
-               glColor3fv(MaterialGray5);
-       else
-               glColor3fv(Material);
-       glVertex3f(0.00, 0.05, -0.18);
-       glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25);
-       glColor3fv(MaterialGray);
-       glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
-       glEnd();
-
-       /* RIGHT-CENTER ARM */
-       glBegin(GL_LINE_STRIP);
-       if (mono)
-               glColor3fv(MaterialGray5);
-       else
-               glColor3fv(Material);
-       glVertex3f(0.00, 0.00, -0.18);
-       glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25);
-       glColor3fv(MaterialGray);
-       glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
-       glEnd();
-
-       /* RIGHT-BACK ARM */
-       glBegin(GL_LINE_STRIP);
-       if (mono)
-               glColor3fv(MaterialGray5);
-       else
-               glColor3fv(Material);
-       glVertex3f(0.00, -0.05, -0.18);
-       glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25);
-       glColor3fv(MaterialGray);
-       glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
-       glEnd();
-
-       glBegin(GL_POINTS);
-       if (mono)
-               glColor3fv(MaterialGray8);
-       else
-               glColor3fv(MaterialMagenta);
-       glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
-       glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
-       glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
-       glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
-       glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
-       glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
-       glEnd();
-
-       glEnable(GL_LIGHTING);
-
-       ant_step += 0.3;
-}
-
-static void
-RotateAaroundU(float Ax, float Ay, float Az,
-              float Ux, float Uy, float Uz,
-              float *Cx, float *Cy, float *Cz,
-              float Theta)
-{
-       float       cosO = cos(Theta);
-       float       sinO = sin(Theta);
-       float       one_cosO = 1 - cosO;
-       float       Ux2 = sqr(Ux);
-       float       Uy2 = sqr(Uy);
-       float       Uz2 = sqr(Uz);
-       float       UxUy = Ux * Uy;
-       float       UxUz = Ux * Uz;
-       float       UyUz = Uy * Uz;
-
-       *Cx = (Ux2 + cosO * (1 - Ux2)) * Ax + (UxUy * one_cosO - Uz * sinO) * Ay + (UxUz * one_cosO + Uy * sinO) * Az;
-       *Cy = (UxUy * one_cosO + Uz * sinO) * Ax + (Uy2 + cosO * (1 - Uy2)) * Ay + (UyUz * one_cosO - Ux * sinO) * Az;
-       *Cz = (UxUz * one_cosO - Uy * sinO) * Ax + (UyUz * one_cosO + Ux * sinO) * Ay + (Uz2 + cosO * (1 - Uz2)) * Az;
-}
-
-#define MoebiusDivisions 40
-#define MoebiusTransversals 4
-static void
-draw_moebius_strip(ModeInfo * mi)
-{
-       GLfloat     Phi, Theta;
-       GLfloat     cPhi, sPhi;
-       moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
-       int         i, j;
-       int         mono = MI_IS_MONO(mi);
-
-       float       Cx, Cy, Cz;
-
-       if (!mp->AreObjectsDefined[ObjMoebiusStrip]) {
-               glNewList(objects + ObjMoebiusStrip, GL_COMPILE_AND_EXECUTE);
-
-               if (solidmoebius) {
-                       glBegin(GL_QUAD_STRIP);
-                       Phi = 0;
-                       i = 0;
-                       while (i < (MoebiusDivisions * 2 + 1)) {
-                               Theta = Phi / 2;
-                               cPhi = cos(Phi);
-                               sPhi = sin(Phi);
-
-                               i++;
-                               if (mono)
-                                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite);
-                               else if (i % 2)
-                                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed);
-                               else
-                                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
-
-                               RotateAaroundU(cPhi, sPhi, 0, -sPhi, cPhi, 0, &Cx, &Cy, &Cz, Theta);
-                               glNormal3f(Cx, Cy, Cz);
-                               RotateAaroundU(0, 0, 1, -sPhi, cPhi, 0, &Cx, &Cy, &Cz, Theta);
-                               glVertex3f(cPhi * 3 + Cx, sPhi * 3 + Cy, +Cz);
-                               glVertex3f(cPhi * 3 - Cx, sPhi * 3 - Cy, -Cz);
-
-                               Phi += Pi / MoebiusDivisions;
-                       }
-                       glEnd();
-               } else {
-                       for (j = -MoebiusTransversals; j < MoebiusTransversals; j++) {
-                               glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-                               glBegin(GL_QUAD_STRIP);
-                               Phi = 0;
-                               i = 0;
-                               while (i < (MoebiusDivisions * 2 + 1)) {
-                                       Theta = Phi / 2;
-                                       cPhi = cos(Phi);
-                                       sPhi = sin(Phi);
-
-                                       RotateAaroundU(cPhi, sPhi, 0, -sPhi, cPhi, 0, &Cx, &Cy, &Cz, Theta);
-                                       glNormal3f(Cx, Cy, Cz);
-                                       RotateAaroundU(0, 0, 1, -sPhi, cPhi, 0, &Cx, &Cy, &Cz, Theta);
-                                       j++;
-                                       if (j == MoebiusTransversals || mono)
-                                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite);
-                                       else if (i % 2)
-                                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed);
-                                       else
-                                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
-                                       glVertex3f(cPhi * 3 + Cx / MoebiusTransversals * j, sPhi * 3 + Cy / MoebiusTransversals * j, +Cz / MoebiusTransversals * j);
-                                       j--;
-                                       if (j == -MoebiusTransversals || mono)
-                                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite);
-                                       else if (i % 2)
-                                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed);
-                                       else
-                                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
-                                       glVertex3f(cPhi * 3 + Cx / MoebiusTransversals * j, sPhi * 3 + Cy / MoebiusTransversals * j, +Cz / MoebiusTransversals * j);
-
-                                       Phi += Pi / MoebiusDivisions;
-                                       i++;
-                               }
-                               glEnd();
-                       }
-                       glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-               }
-
-               glEndList();
-               mp->AreObjectsDefined[ObjMoebiusStrip] = 1;
-#ifdef DEBUG_LISTS
-               (void) printf("Strip drawn SLOWLY\n");
-#endif
-       } else {
-               glCallList(objects + ObjMoebiusStrip);
-#ifdef DEBUG_LISTS
-               (void) printf("Strip drawn quickly\n");
-#endif
-       }
-
-       if (!noants) {
-               /* DRAW BLUE ANT */
-               glPushMatrix();
-               glRotatef(mp->ant_position + 180, 0, 0, 1);
-               glTranslatef(3, 0, 0);
-               glRotatef(mp->ant_position / 2 + 90, 0, 1, 0);
-               glTranslatef(0.28, 0, -0.45);
-               draw_moebius_ant(mp, MaterialYellow, mono);
-               glPopMatrix();
-
-               /* DRAW YELLOW ANT */
-               glPushMatrix();
-               glRotatef(mp->ant_position, 0, 0, 1);
-               glTranslatef(3, 0, 0);
-               glRotatef(mp->ant_position / 2, 0, 1, 0);
-               glTranslatef(0.28, 0, -0.45);
-               draw_moebius_ant(mp, MaterialBlue, mono);
-               glPopMatrix();
-
-               /* DRAW GREEN ANT */
-               glPushMatrix();
-               glRotatef(-mp->ant_position, 0, 0, 1);
-               glTranslatef(3, 0, 0);
-               glRotatef(-mp->ant_position / 2, 0, 1, 0);
-               glTranslatef(0.28, 0, 0.45);
-               glRotatef(180, 1, 0, 0);
-               draw_moebius_ant(mp, MaterialGreen, mono);
-               glPopMatrix();
-
-               /* DRAW CYAN ANT */
-               glPushMatrix();
-               glRotatef(-mp->ant_position + 180, 0, 0, 1);
-               glTranslatef(3, 0, 0);
-               glRotatef(-mp->ant_position / 2 + 90, 0, 1, 0);
-               glTranslatef(0.28, 0, 0.45);
-               glRotatef(180, 1, 0, 0);
-               draw_moebius_ant(mp, MaterialCyan, mono);
-               glPopMatrix();
-       }
-       mp->ant_position += 1;
-}
-#undef MoebiusDivisions
-#undef MoebiusTransversals
-
-static void
-reshape(ModeInfo * mi, int width, int height)
-{
-       moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
-
-       glViewport(0, 0, mp->WindW = (GLint) width, mp->WindH = (GLint) height);
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0);
-       glMatrixMode(GL_MODELVIEW);
-       if (width >= 1024) {
-               glLineWidth(3);
-               glPointSize(3);
-       } else if (width >= 512) {
-               glLineWidth(2);
-               glPointSize(2);
-       } else {
-               glLineWidth(1);
-               glPointSize(1);
-       }
-       mp->AreObjectsDefined[ObjMoebiusStrip] = 0;
-       mp->AreObjectsDefined[ObjAntBody] = 0;
-}
-
-static void
-pinit(void)
-{
-       glClearDepth(1.0);
-       glClearColor(0.0, 0.0, 0.0, 1.0);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT0, GL_POSITION, position0);
-       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT1, GL_POSITION, position1);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_NORMALIZE);
-       glFrontFace(GL_CCW);
-       glCullFace(GL_BACK);
-
-       /* moebius */
-       glShadeModel(GL_SMOOTH);
-       glEnable(GL_DEPTH_TEST);
-       glDisable(GL_TEXTURE_2D);
-       glDisable(GL_CULL_FACE);
-
-       glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-       gluBuild2DMipmaps(GL_TEXTURE_2D, 3, WoodTextureWidth, WoodTextureHeight,
-                         GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData);
-       glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-}
-
-void
-init_moebius(ModeInfo * mi)
-{
-       int         screen = MI_SCREEN(mi);
-       moebiusstruct *mp;
-
-       if (moebius == NULL) {
-               if ((moebius = (moebiusstruct *) calloc(MI_NUM_SCREENS(mi),
-                                           sizeof (moebiusstruct))) == NULL)
-                       return;
-       }
-       mp = &moebius[screen];
-       mp->step = NRAND(90);
-       mp->ant_position = NRAND(90);
-
-       if ((mp->glx_context = init_GL(mi)) != NULL) {
-
-               reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
-               glDrawBuffer(GL_BACK);
-               if (!glIsList(objects))
-                       objects = glGenLists(3);
-               pinit();
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-void
-draw_moebius(ModeInfo * mi)
-{
-       moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
-
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       if (!mp->glx_context)
-               return;
-
-       glXMakeCurrent(display, window, *(mp->glx_context));
-
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       glPushMatrix();
-
-       glTranslatef(0.0, 0.0, -10.0);
-
-       if (!MI_IS_ICONIC(mi)) {
-               glScalef(Scale4Window * mp->WindH / mp->WindW, Scale4Window, Scale4Window);
-       } else {
-               glScalef(Scale4Iconic * mp->WindH / mp->WindW, Scale4Iconic, Scale4Iconic);
-       }
-
-       /* moebius */
-       glRotatef(mp->step * 100, 1, 0, 0);
-       glRotatef(mp->step * 95, 0, 1, 0);
-       glRotatef(mp->step * 90, 0, 0, 1);
-       draw_moebius_strip(mi);
-
-       glPopMatrix();
-
-       glFlush();
-
-       glXSwapBuffers(display, window);
-
-       mp->step += 0.025;
-}
-
-void
-change_moebius(ModeInfo * mi)
-{
-       moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
-
-       if (!mp->glx_context)
-               return;
-
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
-       pinit();
-}
-
-void
-release_moebius(ModeInfo * mi)
-{
-       if (moebius != NULL) {
-               (void) free((void *) moebius);
-               moebius = NULL;
-       }
-       if (glIsList(objects)) {
-               glDeleteLists(objects, 3);
-       }
-       FreeAllGL(mi);
-}
-
-#endif
diff --git a/hacks/glx/morph3d.c b/hacks/glx/morph3d.c
deleted file mode 100644 (file)
index d210016..0000000
+++ /dev/null
@@ -1,888 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* morph3d --- Shows 3D morphing objects */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)morph3d.c    4.07 97/11/24 xlockmore";
-
-#endif
-
-#undef DEBUG_CULL_FACE
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The original code for this mode was written by Marcelo Fernandes Vianna 
- * (me...) and was inspired on a WindowsNT(R)'s screen saver (Flower Box).
- * It was written from scratch and it was not based on any other source code. 
- * 
- * Porting it to xlock (the final objective of this code since the moment I 
- * decided to create it) was possible by comparing the original Mesa's gear 
- * demo with it's ported version to xlock, so thanks for Danny Sung (look at
- * gear.c) for his indirect help.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * If you are interested in the original version of this program (not a xlock
- * mode, please refer to the Mesa package (ftp iris.ssec.wisc.edu on /pub/Mesa)
- *
- * Since I'm not a native English speaker, my apologies for any grammatical
- * mistake.
- *
- * My e-mail address is
- * m-vianna@usa.net
- *
- * Marcelo F. Vianna (Feb-13-1997)
- *
- * Revision History:
- * 27-Jul-97: Speed ups by Marcelo F. Vianna.
- * 08-May-97: Speed ups by Marcelo F. Vianna.
- *
- */
-
-/*-
- * PURIFY 3.0a on SunOS4 reports an unitialized memory read on each of
- * the glCallList() functions below when using MesaGL 2.1.  This has
- * been fixed in MesaGL 2.2 and later releases.
- */
-
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS             "Morph3d"
-# define HACK_INIT             init_morph3d
-# define HACK_DRAW             draw_morph3d
-# define morph3d_opts          xlockmore_opts
-# define DEFAULTS              "*delay: 1000 \n" \
-                               "*count: 0 \n"
-# include "xlockmore.h"                /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"            /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-ModeSpecOpt morph3d_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   morph3d_description =
-{"morph3d", "init_morph3d", "draw_morph3d", "release_morph3d",
- "draw_morph3d", "change_morph3d", NULL, &morph3d_opts,
- 1000, 0, 1, 1, 4, 1.0, "",
- "Shows GL morphing polyhedra", 0, NULL};
-
-#endif
-
-#define Scale4Window               0.3
-#define Scale4Iconic               1.0
-
-#define VectMul(X1,Y1,Z1,X2,Y2,Z2) (Y1)*(Z2)-(Z1)*(Y2),(Z1)*(X2)-(X1)*(Z2),(X1)*(Y2)-(Y1)*(X2)
-#define sqr(A)                     ((A)*(A))
-
-/* Increasing this values produces better image quality, the price is speed. */
-#define tetradivisions             23
-#define cubedivisions              20
-#define octadivisions              21
-#define dodecadivisions            10
-#define icodivisions               15
-
-#define tetraangle                 109.47122063449069174
-#define cubeangle                  90.000000000000000000
-#define octaangle                  109.47122063449069174
-#define dodecaangle                63.434948822922009981
-#define icoangle                   41.810314895778596167
-
-#ifndef Pi
-#define Pi                         M_PI
-#endif
-#define SQRT2                      1.4142135623730951455
-#define SQRT3                      1.7320508075688771932
-#define SQRT5                      2.2360679774997898051
-#define SQRT6                      2.4494897427831778813
-#define SQRT15                     3.8729833462074170214
-#define cossec36_2                 0.8506508083520399322
-#define cos72                      0.3090169943749474241
-#define sin72                      0.9510565162951535721
-#define cos36                      0.8090169943749474241
-#define sin36                      0.5877852522924731292
-
-/*************************************************************************/
-
-typedef struct {
-       GLint       WindH, WindW;
-       GLfloat     step;
-       GLfloat     seno;
-       int         object;
-       int         edgedivisions;
-       int         VisibleSpikes;
-       void        (*draw_object) (ModeInfo * mi);
-       float       Magnitude;
-       float      *MaterialColor[20];
-       GLXContext *glx_context;
-} morph3dstruct;
-
-static float front_shininess[] =
-{60.0};
-static float front_specular[] =
-{0.7, 0.7, 0.7, 1.0};
-static float ambient[] =
-{0.0, 0.0, 0.0, 1.0};
-static float diffuse[] =
-{1.0, 1.0, 1.0, 1.0};
-static float position0[] =
-{1.0, 1.0, 1.0, 0.0};
-static float position1[] =
-{-1.0, -1.0, 1.0, 0.0};
-static float lmodel_ambient[] =
-{0.5, 0.5, 0.5, 1.0};
-static float lmodel_twoside[] =
-{GL_TRUE};
-
-static float MaterialRed[] =
-{0.7, 0.0, 0.0, 1.0};
-static float MaterialGreen[] =
-{0.1, 0.5, 0.2, 1.0};
-static float MaterialBlue[] =
-{0.0, 0.0, 0.7, 1.0};
-static float MaterialCyan[] =
-{0.2, 0.5, 0.7, 1.0};
-static float MaterialYellow[] =
-{0.7, 0.7, 0.0, 1.0};
-static float MaterialMagenta[] =
-{0.6, 0.2, 0.5, 1.0};
-static float MaterialWhite[] =
-{0.7, 0.7, 0.7, 1.0};
-static float MaterialGray[] =
-{0.5, 0.5, 0.5, 1.0};
-
-static morph3dstruct *morph3d = NULL;
-
-#define TRIANGLE(Edge, Amp, Divisions, Z, VS)                                                                    \
-{                                                                                                                \
-  GLfloat   Xf,Yf,Xa,Yb,Xf2,Yf2,Yf_2,Yb2,Yb_2;                                                                   \
-  GLfloat   Factor=0.0,Factor1,Factor2;                                                                          \
-  GLfloat   VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ;                                               \
-  GLfloat   Ax,Ay;                                                                                               \
-  int       Ri,Ti;                                                                                               \
-  GLfloat   Vr=(Edge)*SQRT3/3;                                                                                   \
-  GLfloat   AmpVr2=(Amp)/sqr(Vr);                                                                                \
-  GLfloat   Zf=(Edge)*(Z);                                                                                       \
-                                                                                                                 \
-  Ax=(Edge)*(+0.5/(Divisions)), Ay=(Edge)*(-SQRT3/(2*Divisions));                                                \
-                                                                                                                 \
-  Yf=Vr+Ay; Yb=Yf+0.001;                                                                                         \
-  for (Ri=1; Ri<=(Divisions); Ri++) {                                                                            \
-    glBegin(GL_TRIANGLE_STRIP);                                                                                  \
-    Xf=(float)Ri*Ax; Xa=Xf+0.001;                                                                                \
-    Yf2=sqr(Yf); Yf_2=sqr(Yf-Ay);                                                                                \
-    Yb2=sqr(Yb); Yb_2=sqr(Yb-Ay);                                                                                \
-    for (Ti=0; Ti<Ri; Ti++) {                                                                                    \
-      Factor=1-(((Xf2=sqr(Xf))+Yf2)*AmpVr2);                                                                     \
-      Factor1=1-((sqr(Xa)+Yf2)*AmpVr2);                                                                          \
-      Factor2=1-((Xf2+Yb2)*AmpVr2);                                                                              \
-      VertX=Factor*Xf;        VertY=Factor*Yf;        VertZ=Factor*Zf;                                           \
-      NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ;                                    \
-      NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ;                                    \
-      glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ));                                             \
-      glVertex3f(VertX, VertY, VertZ);                                                                           \
-                                                                                                                 \
-      Xf-=Ax; Yf-=Ay; Xa-=Ax; Yb-=Ay;                                                                            \
-                                                                                                                 \
-      Factor=1-(((Xf2=sqr(Xf))+Yf_2)*AmpVr2);                                                                    \
-      Factor1=1-((sqr(Xa)+Yf_2)*AmpVr2);                                                                         \
-      Factor2=1-((Xf2+Yb_2)*AmpVr2);                                                                             \
-      VertX=Factor*Xf;        VertY=Factor*Yf;        VertZ=Factor*Zf;                                           \
-      NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ;                                    \
-      NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ;                                    \
-      glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ));                                             \
-      glVertex3f(VertX, VertY, VertZ);                                                                           \
-                                                                                                                 \
-      Xf-=Ax; Yf+=Ay; Xa-=Ax; Yb+=Ay;                                                                            \
-    }                                                                                                            \
-    Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2);                                                             \
-    Factor1=1-((sqr(Xa)+Yf2)*AmpVr2);                                                                            \
-    Factor2=1-((Xf2+sqr(Yb))*AmpVr2);                                                                            \
-    VertX=Factor*Xf;        VertY=Factor*Yf;        VertZ=Factor*Zf;                                             \
-    NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ;                                      \
-    NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ;                                      \
-    glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ));                                               \
-    glVertex3f(VertX, VertY, VertZ);                                                                             \
-    Yf+=Ay; Yb+=Ay;                                                                                              \
-    glEnd();                                                                                                     \
-  }                                                                                                              \
-  VS=(Factor<0);                                                                                                 \
-}
-
-#define SQUARE(Edge, Amp, Divisions, Z, VS)                                                                      \
-{                                                                                                                \
-  int       Xi,Yi;                                                                                               \
-  GLfloat   Xf,Yf,Y,Xf2,Yf2,Y2,Xa,Xa2,Yb;                                                                        \
-  GLfloat   Factor=0.0,Factor1,Factor2;                                                                          \
-  GLfloat   VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ;                                               \
-  GLfloat   Zf=(Edge)*(Z);                                                                                       \
-  GLfloat   AmpVr2=(Amp)/sqr((Edge)*SQRT2/2);                                                                    \
-                                                                                                                 \
-  for (Yi=0; Yi<(Divisions); Yi++) {                                                                             \
-    Yf=-((Edge)/2.0) + ((float)Yi)/(Divisions)*(Edge);                                                           \
-    Yf2=sqr(Yf);                                                                                                 \
-    Y=Yf+1.0/(Divisions)*(Edge);                                                                                 \
-    Y2=sqr(Y);                                                                                                   \
-    glBegin(GL_QUAD_STRIP);                                                                                      \
-    for (Xi=0; Xi<=(Divisions); Xi++) {                                                                          \
-      Xf=-((Edge)/2.0) + ((float)Xi)/(Divisions)*(Edge);                                                         \
-      Xf2=sqr(Xf);                                                                                               \
-                                                                                                                 \
-      Xa=Xf+0.001; Yb=Y+0.001;                                                                                   \
-      Factor=1-((Xf2+Y2)*AmpVr2);                                                                                \
-      Factor1=1-(((Xa2=sqr(Xa))+Y2)*AmpVr2);                                                                     \
-      Factor2=1-((Xf2+sqr(Yb))*AmpVr2);                                                                          \
-      VertX=Factor*Xf;        VertY=Factor*Y;         VertZ=Factor*Zf;                                           \
-      NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Y-VertY;  NeiAZ=Factor1*Zf-VertZ;                                    \
-      NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ;                                    \
-      glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ));                                             \
-      glVertex3f(VertX, VertY, VertZ);                                                                           \
-                                                                                                                 \
-      Yb=Yf+0.001;                                                                                               \
-      Factor=1-((Xf2+Yf2)*AmpVr2);                                                                               \
-      Factor1=1-((Xa2+Yf2)*AmpVr2);                                                                              \
-      Factor2=1-((Xf2+sqr(Yb))*AmpVr2);                                                                          \
-      VertX=Factor*Xf;        VertY=Factor*Yf;        VertZ=Factor*Zf;                                           \
-      NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ;                                    \
-      NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ;                                    \
-      glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ));                                             \
-      glVertex3f(VertX, VertY, VertZ);                                                                           \
-    }                                                                                                            \
-    glEnd();                                                                                                     \
-  }                                                                                                              \
-  VS=(Factor<0);                                                                                                 \
-}
-
-#define PENTAGON(Edge, Amp, Divisions, Z, VS)                                                                    \
-{                                                                                                                \
-  int       Ri,Ti,Fi;                                                                                            \
-  GLfloat   Xf,Yf,Xa,Yb,Xf2,Yf2;                                                                                 \
-  GLfloat   Factor=0.0,Factor1,Factor2;                                                                          \
-  GLfloat   VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ;                                               \
-  GLfloat   Zf=(Edge)*(Z);                                                                                       \
-  GLfloat   AmpVr2=(Amp)/sqr((Edge)*cossec36_2);                                                                 \
-                                                                                                                 \
-  static    GLfloat x[6],y[6];                                                                                   \
-  static    int arrayninit=1;                                                                                    \
-                                                                                                                 \
-  if (arrayninit) {                                                                                              \
-    for(Fi=0;Fi<6;Fi++) {                                                                                        \
-      x[Fi]=-cos( Fi*2*Pi/5 + Pi/10 )/(Divisions)*cossec36_2*(Edge);                                             \
-      y[Fi]=sin( Fi*2*Pi/5 + Pi/10 )/(Divisions)*cossec36_2*(Edge);                                              \
-    }                                                                                                            \
-    arrayninit=0;                                                                                                \
-  }                                                                                                              \
-                                                                                                                 \
-  for (Ri=1; Ri<=(Divisions); Ri++) {                                                                            \
-    for (Fi=0; Fi<5; Fi++) {                                                                                     \
-      glBegin(GL_TRIANGLE_STRIP);                                                                                \
-      for (Ti=0; Ti<Ri; Ti++) {                                                                                  \
-        Xf=(float)(Ri-Ti)*x[Fi] + (float)Ti*x[Fi+1];                                                             \
-        Yf=(float)(Ri-Ti)*y[Fi] + (float)Ti*y[Fi+1];                                                             \
-        Xa=Xf+0.001; Yb=Yf+0.001;                                                                                \
-       Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2);                                                         \
-       Factor1=1-((sqr(Xa)+Yf2)*AmpVr2);                                                                        \
-       Factor2=1-((Xf2+sqr(Yb))*AmpVr2);                                                                        \
-        VertX=Factor*Xf;        VertY=Factor*Yf;        VertZ=Factor*Zf;                                         \
-        NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ;                                  \
-        NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ;                                  \
-        glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ));                                           \
-       glVertex3f(VertX, VertY, VertZ);                                                                         \
-                                                                                                                 \
-        Xf-=x[Fi]; Yf-=y[Fi]; Xa-=x[Fi]; Yb-=y[Fi];                                                              \
-                                                                                                                 \
-       Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2);                                                         \
-       Factor1=1-((sqr(Xa)+Yf2)*AmpVr2);                                                                        \
-       Factor2=1-((Xf2+sqr(Yb))*AmpVr2);                                                                        \
-        VertX=Factor*Xf;        VertY=Factor*Yf;        VertZ=Factor*Zf;                                         \
-        NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ;                                  \
-        NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ;                                  \
-        glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ));                                           \
-       glVertex3f(VertX, VertY, VertZ);                                                                         \
-                                                                                                                 \
-      }                                                                                                          \
-      Xf=(float)Ri*x[Fi+1];                                                                                      \
-      Yf=(float)Ri*y[Fi+1];                                                                                      \
-      Xa=Xf+0.001; Yb=Yf+0.001;                                                                                  \
-      Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2);                                                           \
-      Factor1=1-((sqr(Xa)+Yf2)*AmpVr2);                                                                          \
-      Factor2=1-((Xf2+sqr(Yb))*AmpVr2);                                                                          \
-      VertX=Factor*Xf;        VertY=Factor*Yf;        VertZ=Factor*Zf;                                           \
-      NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ;                                    \
-      NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ;                                    \
-      glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ));                                             \
-      glVertex3f(VertX, VertY, VertZ);                                                                           \
-      glEnd();                                                                                                   \
-    }                                                                                                            \
-  }                                                                                                              \
-  VS=(Factor<0);                                                                                             \
-}
-
-static void
-draw_tetra(ModeInfo * mi)
-{
-       GLuint      list;
-
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]);
-
-       list = glGenLists(1);
-       glNewList(list, GL_COMPILE_AND_EXECUTE);
-       TRIANGLE(2, mp->seno, mp->edgedivisions, 0.5 / SQRT6, mp->VisibleSpikes);
-       glEndList();
-
-       glPushMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-tetraangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + tetraangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + tetraangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]);
-       glCallList(list);
-
-       glDeleteLists(list, 1);
-}
-
-static void
-draw_cube(ModeInfo * mi)
-{
-       GLuint      list;
-
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]);
-
-       list = glGenLists(1);
-       glNewList(list, GL_COMPILE_AND_EXECUTE);
-       SQUARE(2, mp->seno, mp->edgedivisions, 0.5, mp->VisibleSpikes)
-               glEndList();
-
-       glRotatef(cubeangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]);
-       glCallList(list);
-       glRotatef(cubeangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]);
-       glCallList(list);
-       glRotatef(cubeangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]);
-       glCallList(list);
-       glRotatef(cubeangle, 0, 1, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]);
-       glCallList(list);
-       glRotatef(2 * cubeangle, 0, 1, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]);
-       glCallList(list);
-
-       glDeleteLists(list, 1);
-}
-
-static void
-draw_octa(ModeInfo * mi)
-{
-       GLuint      list;
-
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]);
-
-       list = glGenLists(1);
-       glNewList(list, GL_COMPILE_AND_EXECUTE);
-       TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes);
-       glEndList();
-
-       glPushMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-180 + octaangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-octaangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-octaangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]);
-       glCallList(list);
-       glPushMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-180 + octaangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-octaangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[6]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-octaangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[7]);
-       glCallList(list);
-
-       glDeleteLists(list, 1);
-}
-
-static void
-draw_dodeca(ModeInfo * mi)
-{
-       GLuint      list;
-
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-#define TAU ((SQRT5+1)/2)
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]);
-
-       list = glGenLists(1);
-       glNewList(list, GL_COMPILE_AND_EXECUTE);
-       PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes);
-       glEndList();
-
-       glPushMatrix();
-       glRotatef(180, 0, 0, 1);
-       glPushMatrix();
-       glRotatef(-dodecaangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(-dodecaangle, cos72, sin72, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(-dodecaangle, cos72, -sin72, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(dodecaangle, cos36, -sin36, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(dodecaangle, cos36, sin36, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[6]);
-       glCallList(list);
-       glRotatef(180, 0, 0, 1);
-       glPushMatrix();
-       glRotatef(-dodecaangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[7]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(-dodecaangle, cos72, sin72, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[8]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(-dodecaangle, cos72, -sin72, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[9]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(dodecaangle, cos36, -sin36, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[10]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(dodecaangle, cos36, sin36, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[11]);
-       glCallList(list);
-
-       glDeleteLists(list, 1);
-}
-
-static void
-draw_icosa(ModeInfo * mi)
-{
-       GLuint      list;
-
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]);
-
-       list = glGenLists(1);
-       glNewList(list, GL_COMPILE_AND_EXECUTE);
-       TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes);
-       glEndList();
-
-       glPushMatrix();
-
-       glPushMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-icoangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]);
-       glCallList(list);
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]);
-       glCallList(list);
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-icoangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[6]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[7]);
-       glCallList(list);
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[8]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-icoangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[9]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[10]);
-       glCallList(list);
-       glPushMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-icoangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[11]);
-       glCallList(list);
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[12]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[13]);
-       glCallList(list);
-       glPopMatrix();
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[14]);
-       glCallList(list);
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[15]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-icoangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[16]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[17]);
-       glCallList(list);
-       glPushMatrix();
-       glRotatef(180, 0, 1, 0);
-       glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[18]);
-       glCallList(list);
-       glPopMatrix();
-       glRotatef(180, 0, 0, 1);
-       glRotatef(-icoangle, 1, 0, 0);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[19]);
-       glCallList(list);
-
-       glDeleteLists(list, 1);
-}
-
-static void
-reshape(ModeInfo * mi, int width, int height)
-{
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-       glViewport(0, 0, mp->WindW = (GLint) width, mp->WindH = (GLint) height);
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0);
-       glMatrixMode(GL_MODELVIEW);
-}
-
-static void
-pinit(ModeInfo * mi)
-{
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-       glClearDepth(1.0);
-       glClearColor(0.0, 0.0, 0.0, 1.0);
-       glColor3f(1.0, 1.0, 1.0);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT0, GL_POSITION, position0);
-       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT1, GL_POSITION, position1);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_DEPTH_TEST);
-       glEnable(GL_NORMALIZE);
-
-       glShadeModel(GL_SMOOTH);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-
-       switch (mp->object) {
-               case 2:
-                       mp->draw_object = draw_cube;
-                       mp->MaterialColor[0] = MaterialRed;
-                       mp->MaterialColor[1] = MaterialGreen;
-                       mp->MaterialColor[2] = MaterialCyan;
-                       mp->MaterialColor[3] = MaterialMagenta;
-                       mp->MaterialColor[4] = MaterialYellow;
-                       mp->MaterialColor[5] = MaterialBlue;
-                       mp->edgedivisions = cubedivisions;
-                       mp->Magnitude = 2.0;
-                       break;
-               case 3:
-                       mp->draw_object = draw_octa;
-                       mp->MaterialColor[0] = MaterialRed;
-                       mp->MaterialColor[1] = MaterialGreen;
-                       mp->MaterialColor[2] = MaterialBlue;
-                       mp->MaterialColor[3] = MaterialWhite;
-                       mp->MaterialColor[4] = MaterialCyan;
-                       mp->MaterialColor[5] = MaterialMagenta;
-                       mp->MaterialColor[6] = MaterialGray;
-                       mp->MaterialColor[7] = MaterialYellow;
-                       mp->edgedivisions = octadivisions;
-                       mp->Magnitude = 2.5;
-                       break;
-               case 4:
-                       mp->draw_object = draw_dodeca;
-                       mp->MaterialColor[0] = MaterialRed;
-                       mp->MaterialColor[1] = MaterialGreen;
-                       mp->MaterialColor[2] = MaterialCyan;
-                       mp->MaterialColor[3] = MaterialBlue;
-                       mp->MaterialColor[4] = MaterialMagenta;
-                       mp->MaterialColor[5] = MaterialYellow;
-                       mp->MaterialColor[6] = MaterialGreen;
-                       mp->MaterialColor[7] = MaterialCyan;
-                       mp->MaterialColor[8] = MaterialRed;
-                       mp->MaterialColor[9] = MaterialMagenta;
-                       mp->MaterialColor[10] = MaterialBlue;
-                       mp->MaterialColor[11] = MaterialYellow;
-                       mp->edgedivisions = dodecadivisions;
-                       mp->Magnitude = 2.0;
-                       break;
-               case 5:
-                       mp->draw_object = draw_icosa;
-                       mp->MaterialColor[0] = MaterialRed;
-                       mp->MaterialColor[1] = MaterialGreen;
-                       mp->MaterialColor[2] = MaterialBlue;
-                       mp->MaterialColor[3] = MaterialCyan;
-                       mp->MaterialColor[4] = MaterialYellow;
-                       mp->MaterialColor[5] = MaterialMagenta;
-                       mp->MaterialColor[6] = MaterialRed;
-                       mp->MaterialColor[7] = MaterialGreen;
-                       mp->MaterialColor[8] = MaterialBlue;
-                       mp->MaterialColor[9] = MaterialWhite;
-                       mp->MaterialColor[10] = MaterialCyan;
-                       mp->MaterialColor[11] = MaterialYellow;
-                       mp->MaterialColor[12] = MaterialMagenta;
-                       mp->MaterialColor[13] = MaterialRed;
-                       mp->MaterialColor[14] = MaterialGreen;
-                       mp->MaterialColor[15] = MaterialBlue;
-                       mp->MaterialColor[16] = MaterialCyan;
-                       mp->MaterialColor[17] = MaterialYellow;
-                       mp->MaterialColor[18] = MaterialMagenta;
-                       mp->MaterialColor[19] = MaterialGray;
-                       mp->edgedivisions = icodivisions;
-                       mp->Magnitude = 2.5;
-                       break;
-               default:
-                       mp->draw_object = draw_tetra;
-                       mp->MaterialColor[0] = MaterialRed;
-                       mp->MaterialColor[1] = MaterialGreen;
-                       mp->MaterialColor[2] = MaterialBlue;
-                       mp->MaterialColor[3] = MaterialWhite;
-                       mp->edgedivisions = tetradivisions;
-                       mp->Magnitude = 2.5;
-                       break;
-       }
-       if (MI_IS_MONO(mi)) {
-               int         loop;
-
-               for (loop = 0; loop < 20; loop++)
-                       mp->MaterialColor[loop] = MaterialGray;
-       }
-}
-
-void
-init_morph3d(ModeInfo * mi)
-{
-       int         screen = MI_SCREEN(mi);
-       morph3dstruct *mp;
-
-       if (morph3d == NULL) {
-               if ((morph3d = (morph3dstruct *) calloc(MI_NUM_SCREENS(mi),
-                                           sizeof (morph3dstruct))) == NULL)
-                       return;
-       }
-       mp = &morph3d[screen];
-       mp->step = NRAND(90);
-       mp->VisibleSpikes = 1;
-
-       if ((mp->glx_context = init_GL(mi)) != NULL) {
-
-               reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
-               mp->object = MI_COUNT(mi);
-               if (mp->object <= 0 || mp->object > 5)
-                       mp->object = NRAND(5) + 1;
-               pinit(mi);
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-void
-draw_morph3d(ModeInfo * mi)
-{
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       if (!mp->glx_context)
-               return;
-
-       glDrawBuffer(GL_BACK);
-       glXMakeCurrent(display, window, *(mp->glx_context));
-
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       glPushMatrix();
-
-       glTranslatef(0.0, 0.0, -10.0);
-
-       if (!MI_IS_ICONIC(mi)) {
-               glScalef(Scale4Window * mp->WindH / mp->WindW, Scale4Window, Scale4Window);
-               glTranslatef(2.5 * mp->WindW / mp->WindH * sin(mp->step * 1.11), 2.5 * cos(mp->step * 1.25 * 1.11), 0);
-       } else {
-               glScalef(Scale4Iconic * mp->WindH / mp->WindW, Scale4Iconic, Scale4Iconic);
-       }
-
-       glRotatef(mp->step * 100, 1, 0, 0);
-       glRotatef(mp->step * 95, 0, 1, 0);
-       glRotatef(mp->step * 90, 0, 0, 1);
-
-       mp->seno = (sin(mp->step) + 1.0 / 3.0) * (4.0 / 5.0) * mp->Magnitude;
-
-       if (mp->VisibleSpikes) {
-#ifdef DEBUG_CULL_FACE
-               int         loop;
-
-               for (loop = 0; loop < 20; loop++)
-                       mp->MaterialColor[loop] = MaterialGray;
-#endif
-               glDisable(GL_CULL_FACE);
-       } else {
-#ifdef DEBUG_CULL_FACE
-               int         loop;
-
-               for (loop = 0; loop < 20; loop++)
-                       mp->MaterialColor[loop] = MaterialWhite;
-#endif
-               glEnable(GL_CULL_FACE);
-       }
-
-       mp->draw_object(mi);
-
-       glPopMatrix();
-
-       glFlush();
-
-       glXSwapBuffers(display, window);
-
-       mp->step += 0.05;
-}
-
-void
-change_morph3d(ModeInfo * mi)
-{
-       morph3dstruct *mp = &morph3d[MI_SCREEN(mi)];
-
-       if (!mp->glx_context)
-               return;
-
-       mp->object = (mp->object) % 5 + 1;
-       pinit(mi);
-}
-
-void
-release_morph3d(ModeInfo * mi)
-{
-       if (morph3d != NULL) {
-               (void) free((void *) morph3d);
-               morph3d = NULL;
-       }
-       FreeAllGL(mi);
-}
-
-#endif
diff --git a/hacks/glx/pipeobjs.c b/hacks/glx/pipeobjs.c
deleted file mode 100644 (file)
index e89f700..0000000
+++ /dev/null
@@ -1,3267 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)pipeobjs.c   4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Points, polygons, and normal vectors to render objects for pipes.
- *
- * Generated by lw2ogl.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include "buildlwo.h"
-
-static GLfloat BigValve_PNTS[] =
-{
-       (GLfloat) 0.756788, (GLfloat) 0.614672, (GLfloat) - 0.000000,
-       (GLfloat) 0.779498, (GLfloat) 0.599497, (GLfloat) - 0.000000,
-       (GLfloat) 0.794672, (GLfloat) 0.576788, (GLfloat) - 0.000000,
-       (GLfloat) 0.800000, (GLfloat) 0.550000, (GLfloat) - 0.000000,
-       (GLfloat) 0.794672, (GLfloat) 0.523212, (GLfloat) - 0.000000,
-       (GLfloat) 0.779498, (GLfloat) 0.500503, (GLfloat) - 0.000000,
-       (GLfloat) 0.756788, (GLfloat) 0.485328, (GLfloat) - 0.000000,
-       (GLfloat) 0.730000, (GLfloat) 0.480000, (GLfloat) - 0.000000,
-       (GLfloat) 0.703212, (GLfloat) 0.485328, (GLfloat) - 0.000000,
-       (GLfloat) 0.680503, (GLfloat) 0.500503, (GLfloat) - 0.000000,
-       (GLfloat) 0.665328, (GLfloat) 0.523212, (GLfloat) - 0.000000,
-       (GLfloat) 0.660000, (GLfloat) 0.550000, (GLfloat) - 0.000000,
-       (GLfloat) 0.665328, (GLfloat) 0.576788, (GLfloat) - 0.000000,
-       (GLfloat) 0.680503, (GLfloat) 0.599497, (GLfloat) - 0.000000,
-       (GLfloat) 0.703212, (GLfloat) 0.614672, (GLfloat) - 0.000000,
-       (GLfloat) 0.730000, (GLfloat) 0.620000, (GLfloat) - 0.000000,
-       (GLfloat) 0.756788, (GLfloat) 0.602861, (GLfloat) 0.119916,
-       (GLfloat) 0.779498, (GLfloat) 0.587978, (GLfloat) 0.116956,
-       (GLfloat) 0.794672, (GLfloat) 0.565705, (GLfloat) 0.112526,
-       (GLfloat) 0.800000, (GLfloat) 0.539432, (GLfloat) 0.107300,
-       (GLfloat) 0.794672, (GLfloat) 0.513159, (GLfloat) 0.102074,
-       (GLfloat) 0.779498, (GLfloat) 0.490886, (GLfloat) 0.097643,
-       (GLfloat) 0.756788, (GLfloat) 0.476003, (GLfloat) 0.094683,
-       (GLfloat) 0.730000, (GLfloat) 0.470777, (GLfloat) 0.093643,
-       (GLfloat) 0.703212, (GLfloat) 0.476003, (GLfloat) 0.094683,
-       (GLfloat) 0.680503, (GLfloat) 0.490886, (GLfloat) 0.097643,
-       (GLfloat) 0.665328, (GLfloat) 0.513159, (GLfloat) 0.102074,
-       (GLfloat) 0.660000, (GLfloat) 0.539432, (GLfloat) 0.107300,
-       (GLfloat) 0.665328, (GLfloat) 0.565705, (GLfloat) 0.112526,
-       (GLfloat) 0.680503, (GLfloat) 0.587978, (GLfloat) 0.116956,
-       (GLfloat) 0.703212, (GLfloat) 0.602861, (GLfloat) 0.119916,
-       (GLfloat) 0.730000, (GLfloat) 0.608087, (GLfloat) 0.120956,
-       (GLfloat) 0.756788, (GLfloat) 0.567882, (GLfloat) 0.235225,
-       (GLfloat) 0.779498, (GLfloat) 0.553863, (GLfloat) 0.229418,
-       (GLfloat) 0.794672, (GLfloat) 0.532882, (GLfloat) 0.220727,
-       (GLfloat) 0.800000, (GLfloat) 0.508134, (GLfloat) 0.210476,
-       (GLfloat) 0.794672, (GLfloat) 0.483385, (GLfloat) 0.200225,
-       (GLfloat) 0.779498, (GLfloat) 0.462404, (GLfloat) 0.191534,
-       (GLfloat) 0.756788, (GLfloat) 0.448385, (GLfloat) 0.185727,
-       (GLfloat) 0.730000, (GLfloat) 0.443462, (GLfloat) 0.183688,
-       (GLfloat) 0.703212, (GLfloat) 0.448385, (GLfloat) 0.185727,
-       (GLfloat) 0.680503, (GLfloat) 0.462404, (GLfloat) 0.191534,
-       (GLfloat) 0.665328, (GLfloat) 0.483385, (GLfloat) 0.200225,
-       (GLfloat) 0.660000, (GLfloat) 0.508134, (GLfloat) 0.210476,
-       (GLfloat) 0.665328, (GLfloat) 0.532882, (GLfloat) 0.220727,
-       (GLfloat) 0.680503, (GLfloat) 0.553863, (GLfloat) 0.229418,
-       (GLfloat) 0.703212, (GLfloat) 0.567882, (GLfloat) 0.235225,
-       (GLfloat) 0.730000, (GLfloat) 0.572805, (GLfloat) 0.237264,
-       (GLfloat) 0.756788, (GLfloat) 0.511081, (GLfloat) 0.341493,
-       (GLfloat) 0.779498, (GLfloat) 0.498464, (GLfloat) 0.333063,
-       (GLfloat) 0.794672, (GLfloat) 0.479582, (GLfloat) 0.320446,
-       (GLfloat) 0.800000, (GLfloat) 0.457308, (GLfloat) 0.305564,
-       (GLfloat) 0.794672, (GLfloat) 0.435035, (GLfloat) 0.290681,
-       (GLfloat) 0.779498, (GLfloat) 0.416153, (GLfloat) 0.278064,
-       (GLfloat) 0.756788, (GLfloat) 0.403536, (GLfloat) 0.269634,
-       (GLfloat) 0.730000, (GLfloat) 0.399105, (GLfloat) 0.266674,
-       (GLfloat) 0.703212, (GLfloat) 0.403536, (GLfloat) 0.269634,
-       (GLfloat) 0.680503, (GLfloat) 0.416153, (GLfloat) 0.278064,
-       (GLfloat) 0.665328, (GLfloat) 0.435035, (GLfloat) 0.290681,
-       (GLfloat) 0.660000, (GLfloat) 0.457308, (GLfloat) 0.305564,
-       (GLfloat) 0.665328, (GLfloat) 0.479582, (GLfloat) 0.320446,
-       (GLfloat) 0.680503, (GLfloat) 0.498464, (GLfloat) 0.333063,
-       (GLfloat) 0.703212, (GLfloat) 0.511081, (GLfloat) 0.341493,
-       (GLfloat) 0.730000, (GLfloat) 0.515511, (GLfloat) 0.344454,
-       (GLfloat) 0.756788, (GLfloat) 0.434638, (GLfloat) 0.434638,
-       (GLfloat) 0.779498, (GLfloat) 0.423909, (GLfloat) 0.423909,
-       (GLfloat) 0.794672, (GLfloat) 0.407851, (GLfloat) 0.407851,
-       (GLfloat) 0.800000, (GLfloat) 0.388909, (GLfloat) 0.388909,
-       (GLfloat) 0.794672, (GLfloat) 0.369967, (GLfloat) 0.369967,
-       (GLfloat) 0.779498, (GLfloat) 0.353909, (GLfloat) 0.353909,
-       (GLfloat) 0.756788, (GLfloat) 0.343179, (GLfloat) 0.343179,
-       (GLfloat) 0.730000, (GLfloat) 0.339411, (GLfloat) 0.339411,
-       (GLfloat) 0.703212, (GLfloat) 0.343179, (GLfloat) 0.343179,
-       (GLfloat) 0.680503, (GLfloat) 0.353909, (GLfloat) 0.353909,
-       (GLfloat) 0.665328, (GLfloat) 0.369967, (GLfloat) 0.369967,
-       (GLfloat) 0.660000, (GLfloat) 0.388909, (GLfloat) 0.388909,
-       (GLfloat) 0.665328, (GLfloat) 0.407851, (GLfloat) 0.407851,
-       (GLfloat) 0.680503, (GLfloat) 0.423909, (GLfloat) 0.423909,
-       (GLfloat) 0.703212, (GLfloat) 0.434638, (GLfloat) 0.434638,
-       (GLfloat) 0.730000, (GLfloat) 0.438406, (GLfloat) 0.438406,
-       (GLfloat) 0.756788, (GLfloat) 0.341493, (GLfloat) 0.511081,
-       (GLfloat) 0.779498, (GLfloat) 0.333063, (GLfloat) 0.498464,
-       (GLfloat) 0.794672, (GLfloat) 0.320446, (GLfloat) 0.479582,
-       (GLfloat) 0.800000, (GLfloat) 0.305564, (GLfloat) 0.457308,
-       (GLfloat) 0.794672, (GLfloat) 0.290681, (GLfloat) 0.435035,
-       (GLfloat) 0.779498, (GLfloat) 0.278064, (GLfloat) 0.416153,
-       (GLfloat) 0.756788, (GLfloat) 0.269634, (GLfloat) 0.403536,
-       (GLfloat) 0.730000, (GLfloat) 0.266674, (GLfloat) 0.399105,
-       (GLfloat) 0.703212, (GLfloat) 0.269634, (GLfloat) 0.403536,
-       (GLfloat) 0.680503, (GLfloat) 0.278064, (GLfloat) 0.416153,
-       (GLfloat) 0.665328, (GLfloat) 0.290681, (GLfloat) 0.435035,
-       (GLfloat) 0.660000, (GLfloat) 0.305564, (GLfloat) 0.457308,
-       (GLfloat) 0.665328, (GLfloat) 0.320446, (GLfloat) 0.479582,
-       (GLfloat) 0.680503, (GLfloat) 0.333063, (GLfloat) 0.498464,
-       (GLfloat) 0.703212, (GLfloat) 0.341493, (GLfloat) 0.511081,
-       (GLfloat) 0.730000, (GLfloat) 0.344454, (GLfloat) 0.515511,
-       (GLfloat) 0.756788, (GLfloat) 0.235225, (GLfloat) 0.567882,
-       (GLfloat) 0.779498, (GLfloat) 0.229418, (GLfloat) 0.553863,
-       (GLfloat) 0.794672, (GLfloat) 0.220727, (GLfloat) 0.532882,
-       (GLfloat) 0.800000, (GLfloat) 0.210476, (GLfloat) 0.508134,
-       (GLfloat) 0.794672, (GLfloat) 0.200225, (GLfloat) 0.483385,
-       (GLfloat) 0.779498, (GLfloat) 0.191534, (GLfloat) 0.462404,
-       (GLfloat) 0.756788, (GLfloat) 0.185727, (GLfloat) 0.448385,
-       (GLfloat) 0.730000, (GLfloat) 0.183688, (GLfloat) 0.443462,
-       (GLfloat) 0.703212, (GLfloat) 0.185727, (GLfloat) 0.448385,
-       (GLfloat) 0.680503, (GLfloat) 0.191534, (GLfloat) 0.462404,
-       (GLfloat) 0.665328, (GLfloat) 0.200225, (GLfloat) 0.483385,
-       (GLfloat) 0.660000, (GLfloat) 0.210476, (GLfloat) 0.508134,
-       (GLfloat) 0.665328, (GLfloat) 0.220727, (GLfloat) 0.532882,
-       (GLfloat) 0.680503, (GLfloat) 0.229418, (GLfloat) 0.553863,
-       (GLfloat) 0.703212, (GLfloat) 0.235225, (GLfloat) 0.567882,
-       (GLfloat) 0.730000, (GLfloat) 0.237264, (GLfloat) 0.572805,
-       (GLfloat) 0.756788, (GLfloat) 0.119916, (GLfloat) 0.602861,
-       (GLfloat) 0.779498, (GLfloat) 0.116956, (GLfloat) 0.587978,
-       (GLfloat) 0.794672, (GLfloat) 0.112526, (GLfloat) 0.565705,
-       (GLfloat) 0.800000, (GLfloat) 0.107300, (GLfloat) 0.539432,
-       (GLfloat) 0.794672, (GLfloat) 0.102074, (GLfloat) 0.513159,
-       (GLfloat) 0.779498, (GLfloat) 0.097643, (GLfloat) 0.490886,
-       (GLfloat) 0.756788, (GLfloat) 0.094683, (GLfloat) 0.476003,
-       (GLfloat) 0.730000, (GLfloat) 0.093643, (GLfloat) 0.470777,
-       (GLfloat) 0.703212, (GLfloat) 0.094683, (GLfloat) 0.476003,
-       (GLfloat) 0.680503, (GLfloat) 0.097643, (GLfloat) 0.490886,
-       (GLfloat) 0.665328, (GLfloat) 0.102074, (GLfloat) 0.513159,
-       (GLfloat) 0.660000, (GLfloat) 0.107300, (GLfloat) 0.539432,
-       (GLfloat) 0.665328, (GLfloat) 0.112526, (GLfloat) 0.565705,
-       (GLfloat) 0.680503, (GLfloat) 0.116956, (GLfloat) 0.587978,
-       (GLfloat) 0.703212, (GLfloat) 0.119916, (GLfloat) 0.602861,
-       (GLfloat) 0.730000, (GLfloat) 0.120956, (GLfloat) 0.608087,
-       (GLfloat) 0.756788, (GLfloat) 0.000000, (GLfloat) 0.614672,
-       (GLfloat) 0.779498, (GLfloat) 0.000000, (GLfloat) 0.599497,
-       (GLfloat) 0.794672, (GLfloat) 0.000000, (GLfloat) 0.576788,
-       (GLfloat) 0.800000, (GLfloat) 0.000000, (GLfloat) 0.550000,
-       (GLfloat) 0.794672, (GLfloat) 0.000000, (GLfloat) 0.523212,
-       (GLfloat) 0.779498, (GLfloat) 0.000000, (GLfloat) 0.500503,
-       (GLfloat) 0.756788, (GLfloat) 0.000000, (GLfloat) 0.485328,
-       (GLfloat) 0.730000, (GLfloat) 0.000000, (GLfloat) 0.480000,
-       (GLfloat) 0.703212, (GLfloat) 0.000000, (GLfloat) 0.485328,
-       (GLfloat) 0.680503, (GLfloat) 0.000000, (GLfloat) 0.500503,
-       (GLfloat) 0.665328, (GLfloat) 0.000000, (GLfloat) 0.523212,
-       (GLfloat) 0.660000, (GLfloat) 0.000000, (GLfloat) 0.550000,
-       (GLfloat) 0.665328, (GLfloat) 0.000000, (GLfloat) 0.576788,
-       (GLfloat) 0.680503, (GLfloat) 0.000000, (GLfloat) 0.599497,
-       (GLfloat) 0.703212, (GLfloat) 0.000000, (GLfloat) 0.614672,
-       (GLfloat) 0.730000, (GLfloat) 0.000000, (GLfloat) 0.620000,
-       (GLfloat) 0.756788, (GLfloat) - 0.119916, (GLfloat) 0.602861,
-       (GLfloat) 0.779498, (GLfloat) - 0.116956, (GLfloat) 0.587978,
-       (GLfloat) 0.794672, (GLfloat) - 0.112526, (GLfloat) 0.565705,
-       (GLfloat) 0.800000, (GLfloat) - 0.107300, (GLfloat) 0.539432,
-       (GLfloat) 0.794672, (GLfloat) - 0.102074, (GLfloat) 0.513159,
-       (GLfloat) 0.779498, (GLfloat) - 0.097643, (GLfloat) 0.490886,
-       (GLfloat) 0.756788, (GLfloat) - 0.094683, (GLfloat) 0.476003,
-       (GLfloat) 0.730000, (GLfloat) - 0.093643, (GLfloat) 0.470777,
-       (GLfloat) 0.703212, (GLfloat) - 0.094683, (GLfloat) 0.476003,
-       (GLfloat) 0.680503, (GLfloat) - 0.097643, (GLfloat) 0.490886,
-       (GLfloat) 0.665328, (GLfloat) - 0.102074, (GLfloat) 0.513159,
-       (GLfloat) 0.660000, (GLfloat) - 0.107300, (GLfloat) 0.539432,
-       (GLfloat) 0.665328, (GLfloat) - 0.112526, (GLfloat) 0.565705,
-       (GLfloat) 0.680503, (GLfloat) - 0.116956, (GLfloat) 0.587978,
-       (GLfloat) 0.703212, (GLfloat) - 0.119916, (GLfloat) 0.602861,
-       (GLfloat) 0.730000, (GLfloat) - 0.120956, (GLfloat) 0.608087,
-       (GLfloat) 0.756788, (GLfloat) - 0.235225, (GLfloat) 0.567882,
-       (GLfloat) 0.779498, (GLfloat) - 0.229418, (GLfloat) 0.553863,
-       (GLfloat) 0.794672, (GLfloat) - 0.220727, (GLfloat) 0.532882,
-       (GLfloat) 0.800000, (GLfloat) - 0.210476, (GLfloat) 0.508134,
-       (GLfloat) 0.794672, (GLfloat) - 0.200225, (GLfloat) 0.483385,
-       (GLfloat) 0.779498, (GLfloat) - 0.191534, (GLfloat) 0.462404,
-       (GLfloat) 0.756788, (GLfloat) - 0.185727, (GLfloat) 0.448385,
-       (GLfloat) 0.730000, (GLfloat) - 0.183688, (GLfloat) 0.443462,
-       (GLfloat) 0.703212, (GLfloat) - 0.185727, (GLfloat) 0.448385,
-       (GLfloat) 0.680503, (GLfloat) - 0.191534, (GLfloat) 0.462404,
-       (GLfloat) 0.665328, (GLfloat) - 0.200225, (GLfloat) 0.483385,
-       (GLfloat) 0.660000, (GLfloat) - 0.210476, (GLfloat) 0.508134,
-       (GLfloat) 0.665328, (GLfloat) - 0.220727, (GLfloat) 0.532882,
-       (GLfloat) 0.680503, (GLfloat) - 0.229418, (GLfloat) 0.553863,
-       (GLfloat) 0.703212, (GLfloat) - 0.235225, (GLfloat) 0.567882,
-       (GLfloat) 0.730000, (GLfloat) - 0.237264, (GLfloat) 0.572805,
-       (GLfloat) 0.756788, (GLfloat) - 0.341493, (GLfloat) 0.511081,
-       (GLfloat) 0.779498, (GLfloat) - 0.333063, (GLfloat) 0.498464,
-       (GLfloat) 0.794672, (GLfloat) - 0.320446, (GLfloat) 0.479582,
-       (GLfloat) 0.800000, (GLfloat) - 0.305564, (GLfloat) 0.457308,
-       (GLfloat) 0.794672, (GLfloat) - 0.290681, (GLfloat) 0.435035,
-       (GLfloat) 0.779498, (GLfloat) - 0.278064, (GLfloat) 0.416153,
-       (GLfloat) 0.756788, (GLfloat) - 0.269634, (GLfloat) 0.403536,
-       (GLfloat) 0.730000, (GLfloat) - 0.266674, (GLfloat) 0.399105,
-       (GLfloat) 0.703212, (GLfloat) - 0.269634, (GLfloat) 0.403536,
-       (GLfloat) 0.680503, (GLfloat) - 0.278064, (GLfloat) 0.416153,
-       (GLfloat) 0.665328, (GLfloat) - 0.290681, (GLfloat) 0.435035,
-       (GLfloat) 0.660000, (GLfloat) - 0.305564, (GLfloat) 0.457308,
-       (GLfloat) 0.665328, (GLfloat) - 0.320446, (GLfloat) 0.479582,
-       (GLfloat) 0.680503, (GLfloat) - 0.333063, (GLfloat) 0.498464,
-       (GLfloat) 0.703212, (GLfloat) - 0.341493, (GLfloat) 0.511081,
-       (GLfloat) 0.730000, (GLfloat) - 0.344454, (GLfloat) 0.515511,
-       (GLfloat) 0.756788, (GLfloat) - 0.434638, (GLfloat) 0.434638,
-       (GLfloat) 0.779498, (GLfloat) - 0.423909, (GLfloat) 0.423909,
-       (GLfloat) 0.794672, (GLfloat) - 0.407851, (GLfloat) 0.407851,
-       (GLfloat) 0.800000, (GLfloat) - 0.388909, (GLfloat) 0.388909,
-       (GLfloat) 0.794672, (GLfloat) - 0.369967, (GLfloat) 0.369967,
-       (GLfloat) 0.779498, (GLfloat) - 0.353909, (GLfloat) 0.353909,
-       (GLfloat) 0.756788, (GLfloat) - 0.343179, (GLfloat) 0.343179,
-       (GLfloat) 0.730000, (GLfloat) - 0.339411, (GLfloat) 0.339411,
-       (GLfloat) 0.703212, (GLfloat) - 0.343179, (GLfloat) 0.343179,
-       (GLfloat) 0.680503, (GLfloat) - 0.353909, (GLfloat) 0.353909,
-       (GLfloat) 0.665328, (GLfloat) - 0.369967, (GLfloat) 0.369967,
-       (GLfloat) 0.660000, (GLfloat) - 0.388909, (GLfloat) 0.388909,
-       (GLfloat) 0.665328, (GLfloat) - 0.407851, (GLfloat) 0.407851,
-       (GLfloat) 0.680503, (GLfloat) - 0.423909, (GLfloat) 0.423909,
-       (GLfloat) 0.703212, (GLfloat) - 0.434638, (GLfloat) 0.434638,
-       (GLfloat) 0.730000, (GLfloat) - 0.438406, (GLfloat) 0.438406,
-       (GLfloat) 0.756788, (GLfloat) - 0.511081, (GLfloat) 0.341493,
-       (GLfloat) 0.779498, (GLfloat) - 0.498464, (GLfloat) 0.333063,
-       (GLfloat) 0.794672, (GLfloat) - 0.479582, (GLfloat) 0.320446,
-       (GLfloat) 0.800000, (GLfloat) - 0.457308, (GLfloat) 0.305564,
-       (GLfloat) 0.794672, (GLfloat) - 0.435035, (GLfloat) 0.290681,
-       (GLfloat) 0.779498, (GLfloat) - 0.416153, (GLfloat) 0.278064,
-       (GLfloat) 0.756788, (GLfloat) - 0.403536, (GLfloat) 0.269634,
-       (GLfloat) 0.730000, (GLfloat) - 0.399105, (GLfloat) 0.266674,
-       (GLfloat) 0.703212, (GLfloat) - 0.403536, (GLfloat) 0.269634,
-       (GLfloat) 0.680503, (GLfloat) - 0.416153, (GLfloat) 0.278064,
-       (GLfloat) 0.665328, (GLfloat) - 0.435035, (GLfloat) 0.290681,
-       (GLfloat) 0.660000, (GLfloat) - 0.457308, (GLfloat) 0.305564,
-       (GLfloat) 0.665328, (GLfloat) - 0.479582, (GLfloat) 0.320446,
-       (GLfloat) 0.680503, (GLfloat) - 0.498464, (GLfloat) 0.333063,
-       (GLfloat) 0.703212, (GLfloat) - 0.511081, (GLfloat) 0.341493,
-       (GLfloat) 0.730000, (GLfloat) - 0.515511, (GLfloat) 0.344454,
-       (GLfloat) 0.756788, (GLfloat) - 0.567882, (GLfloat) 0.235225,
-       (GLfloat) 0.779498, (GLfloat) - 0.553863, (GLfloat) 0.229418,
-       (GLfloat) 0.794672, (GLfloat) - 0.532882, (GLfloat) 0.220727,
-       (GLfloat) 0.800000, (GLfloat) - 0.508134, (GLfloat) 0.210476,
-       (GLfloat) 0.794672, (GLfloat) - 0.483385, (GLfloat) 0.200225,
-       (GLfloat) 0.779498, (GLfloat) - 0.462404, (GLfloat) 0.191534,
-       (GLfloat) 0.756788, (GLfloat) - 0.448385, (GLfloat) 0.185727,
-       (GLfloat) 0.730000, (GLfloat) - 0.443462, (GLfloat) 0.183688,
-       (GLfloat) 0.703212, (GLfloat) - 0.448385, (GLfloat) 0.185727,
-       (GLfloat) 0.680503, (GLfloat) - 0.462404, (GLfloat) 0.191534,
-       (GLfloat) 0.665328, (GLfloat) - 0.483385, (GLfloat) 0.200225,
-       (GLfloat) 0.660000, (GLfloat) - 0.508134, (GLfloat) 0.210476,
-       (GLfloat) 0.665328, (GLfloat) - 0.532882, (GLfloat) 0.220727,
-       (GLfloat) 0.680503, (GLfloat) - 0.553863, (GLfloat) 0.229418,
-       (GLfloat) 0.703212, (GLfloat) - 0.567882, (GLfloat) 0.235225,
-       (GLfloat) 0.730000, (GLfloat) - 0.572805, (GLfloat) 0.237264,
-       (GLfloat) 0.756788, (GLfloat) - 0.602861, (GLfloat) 0.119916,
-       (GLfloat) 0.779498, (GLfloat) - 0.587978, (GLfloat) 0.116956,
-       (GLfloat) 0.794672, (GLfloat) - 0.565705, (GLfloat) 0.112526,
-       (GLfloat) 0.800000, (GLfloat) - 0.539432, (GLfloat) 0.107300,
-       (GLfloat) 0.794672, (GLfloat) - 0.513159, (GLfloat) 0.102074,
-       (GLfloat) 0.779498, (GLfloat) - 0.490886, (GLfloat) 0.097643,
-       (GLfloat) 0.756788, (GLfloat) - 0.476003, (GLfloat) 0.094683,
-       (GLfloat) 0.730000, (GLfloat) - 0.470777, (GLfloat) 0.093643,
-       (GLfloat) 0.703212, (GLfloat) - 0.476003, (GLfloat) 0.094683,
-       (GLfloat) 0.680503, (GLfloat) - 0.490886, (GLfloat) 0.097643,
-       (GLfloat) 0.665328, (GLfloat) - 0.513159, (GLfloat) 0.102074,
-       (GLfloat) 0.660000, (GLfloat) - 0.539432, (GLfloat) 0.107300,
-       (GLfloat) 0.665328, (GLfloat) - 0.565705, (GLfloat) 0.112526,
-       (GLfloat) 0.680503, (GLfloat) - 0.587978, (GLfloat) 0.116956,
-       (GLfloat) 0.703212, (GLfloat) - 0.602861, (GLfloat) 0.119916,
-       (GLfloat) 0.730000, (GLfloat) - 0.608087, (GLfloat) 0.120956,
-       (GLfloat) 0.756788, (GLfloat) - 0.614672, (GLfloat) 0.000000,
-       (GLfloat) 0.779498, (GLfloat) - 0.599497, (GLfloat) 0.000000,
-       (GLfloat) 0.794672, (GLfloat) - 0.576788, (GLfloat) 0.000000,
-       (GLfloat) 0.800000, (GLfloat) - 0.550000, (GLfloat) 0.000000,
-       (GLfloat) 0.794672, (GLfloat) - 0.523212, (GLfloat) 0.000000,
-       (GLfloat) 0.779498, (GLfloat) - 0.500503, (GLfloat) 0.000000,
-       (GLfloat) 0.756788, (GLfloat) - 0.485328, (GLfloat) 0.000000,
-       (GLfloat) 0.730000, (GLfloat) - 0.480000, (GLfloat) 0.000000,
-       (GLfloat) 0.703212, (GLfloat) - 0.485328, (GLfloat) 0.000000,
-       (GLfloat) 0.680503, (GLfloat) - 0.500503, (GLfloat) 0.000000,
-       (GLfloat) 0.665328, (GLfloat) - 0.523212, (GLfloat) 0.000000,
-       (GLfloat) 0.660000, (GLfloat) - 0.550000, (GLfloat) 0.000000,
-       (GLfloat) 0.665328, (GLfloat) - 0.576788, (GLfloat) 0.000000,
-       (GLfloat) 0.680503, (GLfloat) - 0.599497, (GLfloat) 0.000000,
-       (GLfloat) 0.703212, (GLfloat) - 0.614672, (GLfloat) 0.000000,
-       (GLfloat) 0.730000, (GLfloat) - 0.620000, (GLfloat) 0.000000,
-       (GLfloat) 0.756788, (GLfloat) - 0.602861, (GLfloat) - 0.119916,
-       (GLfloat) 0.779498, (GLfloat) - 0.587978, (GLfloat) - 0.116956,
-       (GLfloat) 0.794672, (GLfloat) - 0.565705, (GLfloat) - 0.112526,
-       (GLfloat) 0.800000, (GLfloat) - 0.539432, (GLfloat) - 0.107300,
-       (GLfloat) 0.794672, (GLfloat) - 0.513159, (GLfloat) - 0.102074,
-       (GLfloat) 0.779498, (GLfloat) - 0.490886, (GLfloat) - 0.097643,
-       (GLfloat) 0.756788, (GLfloat) - 0.476003, (GLfloat) - 0.094683,
-       (GLfloat) 0.730000, (GLfloat) - 0.470777, (GLfloat) - 0.093643,
-       (GLfloat) 0.703212, (GLfloat) - 0.476003, (GLfloat) - 0.094683,
-       (GLfloat) 0.680503, (GLfloat) - 0.490886, (GLfloat) - 0.097643,
-       (GLfloat) 0.665328, (GLfloat) - 0.513159, (GLfloat) - 0.102074,
-       (GLfloat) 0.660000, (GLfloat) - 0.539432, (GLfloat) - 0.107300,
-       (GLfloat) 0.665328, (GLfloat) - 0.565705, (GLfloat) - 0.112526,
-       (GLfloat) 0.680503, (GLfloat) - 0.587978, (GLfloat) - 0.116956,
-       (GLfloat) 0.703212, (GLfloat) - 0.602861, (GLfloat) - 0.119916,
-       (GLfloat) 0.730000, (GLfloat) - 0.608087, (GLfloat) - 0.120956,
-       (GLfloat) 0.756788, (GLfloat) - 0.567882, (GLfloat) - 0.235225,
-       (GLfloat) 0.779498, (GLfloat) - 0.553863, (GLfloat) - 0.229418,
-       (GLfloat) 0.794672, (GLfloat) - 0.532882, (GLfloat) - 0.220727,
-       (GLfloat) 0.800000, (GLfloat) - 0.508134, (GLfloat) - 0.210476,
-       (GLfloat) 0.794672, (GLfloat) - 0.483385, (GLfloat) - 0.200225,
-       (GLfloat) 0.779498, (GLfloat) - 0.462404, (GLfloat) - 0.191534,
-       (GLfloat) 0.756788, (GLfloat) - 0.448385, (GLfloat) - 0.185727,
-       (GLfloat) 0.730000, (GLfloat) - 0.443462, (GLfloat) - 0.183688,
-       (GLfloat) 0.703212, (GLfloat) - 0.448385, (GLfloat) - 0.185727,
-       (GLfloat) 0.680503, (GLfloat) - 0.462404, (GLfloat) - 0.191534,
-       (GLfloat) 0.665328, (GLfloat) - 0.483385, (GLfloat) - 0.200225,
-       (GLfloat) 0.660000, (GLfloat) - 0.508134, (GLfloat) - 0.210476,
-       (GLfloat) 0.665328, (GLfloat) - 0.532882, (GLfloat) - 0.220727,
-       (GLfloat) 0.680503, (GLfloat) - 0.553863, (GLfloat) - 0.229418,
-       (GLfloat) 0.703212, (GLfloat) - 0.567882, (GLfloat) - 0.235225,
-       (GLfloat) 0.730000, (GLfloat) - 0.572805, (GLfloat) - 0.237264,
-       (GLfloat) 0.756788, (GLfloat) - 0.511081, (GLfloat) - 0.341493,
-       (GLfloat) 0.779498, (GLfloat) - 0.498464, (GLfloat) - 0.333063,
-       (GLfloat) 0.794672, (GLfloat) - 0.479582, (GLfloat) - 0.320446,
-       (GLfloat) 0.800000, (GLfloat) - 0.457308, (GLfloat) - 0.305564,
-       (GLfloat) 0.794672, (GLfloat) - 0.435035, (GLfloat) - 0.290681,
-       (GLfloat) 0.779498, (GLfloat) - 0.416153, (GLfloat) - 0.278064,
-       (GLfloat) 0.756788, (GLfloat) - 0.403536, (GLfloat) - 0.269634,
-       (GLfloat) 0.730000, (GLfloat) - 0.399105, (GLfloat) - 0.266674,
-       (GLfloat) 0.703212, (GLfloat) - 0.403536, (GLfloat) - 0.269634,
-       (GLfloat) 0.680503, (GLfloat) - 0.416153, (GLfloat) - 0.278064,
-       (GLfloat) 0.665328, (GLfloat) - 0.435035, (GLfloat) - 0.290681,
-       (GLfloat) 0.660000, (GLfloat) - 0.457308, (GLfloat) - 0.305564,
-       (GLfloat) 0.665328, (GLfloat) - 0.479582, (GLfloat) - 0.320446,
-       (GLfloat) 0.680503, (GLfloat) - 0.498464, (GLfloat) - 0.333063,
-       (GLfloat) 0.703212, (GLfloat) - 0.511081, (GLfloat) - 0.341493,
-       (GLfloat) 0.730000, (GLfloat) - 0.515511, (GLfloat) - 0.344454,
-       (GLfloat) 0.756788, (GLfloat) - 0.434638, (GLfloat) - 0.434638,
-       (GLfloat) 0.779498, (GLfloat) - 0.423909, (GLfloat) - 0.423909,
-       (GLfloat) 0.794672, (GLfloat) - 0.407851, (GLfloat) - 0.407851,
-       (GLfloat) 0.800000, (GLfloat) - 0.388909, (GLfloat) - 0.388909,
-       (GLfloat) 0.794672, (GLfloat) - 0.369967, (GLfloat) - 0.369967,
-       (GLfloat) 0.779498, (GLfloat) - 0.353909, (GLfloat) - 0.353909,
-       (GLfloat) 0.756788, (GLfloat) - 0.343179, (GLfloat) - 0.343179,
-       (GLfloat) 0.730000, (GLfloat) - 0.339411, (GLfloat) - 0.339411,
-       (GLfloat) 0.703212, (GLfloat) - 0.343179, (GLfloat) - 0.343179,
-       (GLfloat) 0.680503, (GLfloat) - 0.353909, (GLfloat) - 0.353909,
-       (GLfloat) 0.665328, (GLfloat) - 0.369967, (GLfloat) - 0.369967,
-       (GLfloat) 0.660000, (GLfloat) - 0.388909, (GLfloat) - 0.388909,
-       (GLfloat) 0.665328, (GLfloat) - 0.407851, (GLfloat) - 0.407851,
-       (GLfloat) 0.680503, (GLfloat) - 0.423909, (GLfloat) - 0.423909,
-       (GLfloat) 0.703212, (GLfloat) - 0.434638, (GLfloat) - 0.434638,
-       (GLfloat) 0.730000, (GLfloat) - 0.438406, (GLfloat) - 0.438406,
-       (GLfloat) 0.756788, (GLfloat) - 0.341493, (GLfloat) - 0.511081,
-       (GLfloat) 0.779498, (GLfloat) - 0.333063, (GLfloat) - 0.498464,
-       (GLfloat) 0.794672, (GLfloat) - 0.320446, (GLfloat) - 0.479582,
-       (GLfloat) 0.800000, (GLfloat) - 0.305564, (GLfloat) - 0.457308,
-       (GLfloat) 0.794672, (GLfloat) - 0.290681, (GLfloat) - 0.435035,
-       (GLfloat) 0.779498, (GLfloat) - 0.278064, (GLfloat) - 0.416153,
-       (GLfloat) 0.756788, (GLfloat) - 0.269634, (GLfloat) - 0.403536,
-       (GLfloat) 0.730000, (GLfloat) - 0.266674, (GLfloat) - 0.399105,
-       (GLfloat) 0.703212, (GLfloat) - 0.269634, (GLfloat) - 0.403536,
-       (GLfloat) 0.680503, (GLfloat) - 0.278064, (GLfloat) - 0.416153,
-       (GLfloat) 0.665328, (GLfloat) - 0.290681, (GLfloat) - 0.435035,
-       (GLfloat) 0.660000, (GLfloat) - 0.305564, (GLfloat) - 0.457308,
-       (GLfloat) 0.665328, (GLfloat) - 0.320446, (GLfloat) - 0.479582,
-       (GLfloat) 0.680503, (GLfloat) - 0.333063, (GLfloat) - 0.498464,
-       (GLfloat) 0.703212, (GLfloat) - 0.341493, (GLfloat) - 0.511081,
-       (GLfloat) 0.730000, (GLfloat) - 0.344454, (GLfloat) - 0.515511,
-       (GLfloat) 0.756788, (GLfloat) - 0.235225, (GLfloat) - 0.567882,
-       (GLfloat) 0.779498, (GLfloat) - 0.229418, (GLfloat) - 0.553863,
-       (GLfloat) 0.794672, (GLfloat) - 0.220727, (GLfloat) - 0.532882,
-       (GLfloat) 0.800000, (GLfloat) - 0.210476, (GLfloat) - 0.508134,
-       (GLfloat) 0.794672, (GLfloat) - 0.200225, (GLfloat) - 0.483385,
-       (GLfloat) 0.779498, (GLfloat) - 0.191534, (GLfloat) - 0.462404,
-       (GLfloat) 0.756788, (GLfloat) - 0.185727, (GLfloat) - 0.448385,
-       (GLfloat) 0.730000, (GLfloat) - 0.183688, (GLfloat) - 0.443462,
-       (GLfloat) 0.703212, (GLfloat) - 0.185727, (GLfloat) - 0.448385,
-       (GLfloat) 0.680503, (GLfloat) - 0.191534, (GLfloat) - 0.462404,
-       (GLfloat) 0.665328, (GLfloat) - 0.200225, (GLfloat) - 0.483385,
-       (GLfloat) 0.660000, (GLfloat) - 0.210476, (GLfloat) - 0.508134,
-       (GLfloat) 0.665328, (GLfloat) - 0.220727, (GLfloat) - 0.532882,
-       (GLfloat) 0.680503, (GLfloat) - 0.229418, (GLfloat) - 0.553863,
-       (GLfloat) 0.703212, (GLfloat) - 0.235225, (GLfloat) - 0.567882,
-       (GLfloat) 0.730000, (GLfloat) - 0.237264, (GLfloat) - 0.572805,
-       (GLfloat) 0.756788, (GLfloat) - 0.119916, (GLfloat) - 0.602861,
-       (GLfloat) 0.779498, (GLfloat) - 0.116956, (GLfloat) - 0.587978,
-       (GLfloat) 0.794672, (GLfloat) - 0.112526, (GLfloat) - 0.565705,
-       (GLfloat) 0.800000, (GLfloat) - 0.107300, (GLfloat) - 0.539432,
-       (GLfloat) 0.794672, (GLfloat) - 0.102074, (GLfloat) - 0.513159,
-       (GLfloat) 0.779498, (GLfloat) - 0.097643, (GLfloat) - 0.490885,
-       (GLfloat) 0.756788, (GLfloat) - 0.094683, (GLfloat) - 0.476003,
-       (GLfloat) 0.730000, (GLfloat) - 0.093643, (GLfloat) - 0.470777,
-       (GLfloat) 0.703212, (GLfloat) - 0.094683, (GLfloat) - 0.476003,
-       (GLfloat) 0.680503, (GLfloat) - 0.097643, (GLfloat) - 0.490885,
-       (GLfloat) 0.665328, (GLfloat) - 0.102074, (GLfloat) - 0.513159,
-       (GLfloat) 0.660000, (GLfloat) - 0.107300, (GLfloat) - 0.539432,
-       (GLfloat) 0.665328, (GLfloat) - 0.112526, (GLfloat) - 0.565705,
-       (GLfloat) 0.680503, (GLfloat) - 0.116956, (GLfloat) - 0.587978,
-       (GLfloat) 0.703212, (GLfloat) - 0.119916, (GLfloat) - 0.602861,
-       (GLfloat) 0.730000, (GLfloat) - 0.120956, (GLfloat) - 0.608087,
-       (GLfloat) 0.756788, (GLfloat) - 0.000000, (GLfloat) - 0.614672,
-       (GLfloat) 0.779498, (GLfloat) - 0.000000, (GLfloat) - 0.599497,
-       (GLfloat) 0.794672, (GLfloat) - 0.000000, (GLfloat) - 0.576788,
-       (GLfloat) 0.800000, (GLfloat) - 0.000000, (GLfloat) - 0.550000,
-       (GLfloat) 0.794672, (GLfloat) - 0.000000, (GLfloat) - 0.523212,
-       (GLfloat) 0.779498, (GLfloat) - 0.000000, (GLfloat) - 0.500503,
-       (GLfloat) 0.756788, (GLfloat) - 0.000000, (GLfloat) - 0.485328,
-       (GLfloat) 0.730000, (GLfloat) - 0.000000, (GLfloat) - 0.480000,
-       (GLfloat) 0.703212, (GLfloat) - 0.000000, (GLfloat) - 0.485328,
-       (GLfloat) 0.680503, (GLfloat) - 0.000000, (GLfloat) - 0.500503,
-       (GLfloat) 0.665328, (GLfloat) - 0.000000, (GLfloat) - 0.523212,
-       (GLfloat) 0.660000, (GLfloat) - 0.000000, (GLfloat) - 0.550000,
-       (GLfloat) 0.665328, (GLfloat) - 0.000000, (GLfloat) - 0.576788,
-       (GLfloat) 0.680503, (GLfloat) - 0.000000, (GLfloat) - 0.599497,
-       (GLfloat) 0.703212, (GLfloat) - 0.000000, (GLfloat) - 0.614672,
-       (GLfloat) 0.730000, (GLfloat) - 0.000000, (GLfloat) - 0.620000,
-       (GLfloat) 0.756788, (GLfloat) 0.119916, (GLfloat) - 0.602861,
-       (GLfloat) 0.779498, (GLfloat) 0.116956, (GLfloat) - 0.587978,
-       (GLfloat) 0.794672, (GLfloat) 0.112526, (GLfloat) - 0.565705,
-       (GLfloat) 0.800000, (GLfloat) 0.107300, (GLfloat) - 0.539432,
-       (GLfloat) 0.794672, (GLfloat) 0.102074, (GLfloat) - 0.513159,
-       (GLfloat) 0.779498, (GLfloat) 0.097643, (GLfloat) - 0.490886,
-       (GLfloat) 0.756788, (GLfloat) 0.094683, (GLfloat) - 0.476003,
-       (GLfloat) 0.730000, (GLfloat) 0.093643, (GLfloat) - 0.470777,
-       (GLfloat) 0.703212, (GLfloat) 0.094683, (GLfloat) - 0.476003,
-       (GLfloat) 0.680503, (GLfloat) 0.097643, (GLfloat) - 0.490886,
-       (GLfloat) 0.665328, (GLfloat) 0.102074, (GLfloat) - 0.513159,
-       (GLfloat) 0.660000, (GLfloat) 0.107300, (GLfloat) - 0.539432,
-       (GLfloat) 0.665328, (GLfloat) 0.112526, (GLfloat) - 0.565705,
-       (GLfloat) 0.680503, (GLfloat) 0.116956, (GLfloat) - 0.587978,
-       (GLfloat) 0.703212, (GLfloat) 0.119916, (GLfloat) - 0.602861,
-       (GLfloat) 0.730000, (GLfloat) 0.120956, (GLfloat) - 0.608087,
-       (GLfloat) 0.756788, (GLfloat) 0.235225, (GLfloat) - 0.567882,
-       (GLfloat) 0.779498, (GLfloat) 0.229418, (GLfloat) - 0.553863,
-       (GLfloat) 0.794672, (GLfloat) 0.220727, (GLfloat) - 0.532882,
-       (GLfloat) 0.800000, (GLfloat) 0.210476, (GLfloat) - 0.508134,
-       (GLfloat) 0.794672, (GLfloat) 0.200225, (GLfloat) - 0.483385,
-       (GLfloat) 0.779498, (GLfloat) 0.191534, (GLfloat) - 0.462404,
-       (GLfloat) 0.756788, (GLfloat) 0.185727, (GLfloat) - 0.448385,
-       (GLfloat) 0.730000, (GLfloat) 0.183688, (GLfloat) - 0.443462,
-       (GLfloat) 0.703212, (GLfloat) 0.185727, (GLfloat) - 0.448385,
-       (GLfloat) 0.680503, (GLfloat) 0.191534, (GLfloat) - 0.462404,
-       (GLfloat) 0.665328, (GLfloat) 0.200225, (GLfloat) - 0.483385,
-       (GLfloat) 0.660000, (GLfloat) 0.210476, (GLfloat) - 0.508134,
-       (GLfloat) 0.665328, (GLfloat) 0.220727, (GLfloat) - 0.532882,
-       (GLfloat) 0.680503, (GLfloat) 0.229418, (GLfloat) - 0.553863,
-       (GLfloat) 0.703212, (GLfloat) 0.235225, (GLfloat) - 0.567882,
-       (GLfloat) 0.730000, (GLfloat) 0.237264, (GLfloat) - 0.572805,
-       (GLfloat) 0.756788, (GLfloat) 0.341493, (GLfloat) - 0.511081,
-       (GLfloat) 0.779498, (GLfloat) 0.333063, (GLfloat) - 0.498464,
-       (GLfloat) 0.794672, (GLfloat) 0.320446, (GLfloat) - 0.479582,
-       (GLfloat) 0.800000, (GLfloat) 0.305564, (GLfloat) - 0.457308,
-       (GLfloat) 0.794672, (GLfloat) 0.290681, (GLfloat) - 0.435035,
-       (GLfloat) 0.779498, (GLfloat) 0.278064, (GLfloat) - 0.416153,
-       (GLfloat) 0.756788, (GLfloat) 0.269634, (GLfloat) - 0.403536,
-       (GLfloat) 0.730000, (GLfloat) 0.266674, (GLfloat) - 0.399105,
-       (GLfloat) 0.703212, (GLfloat) 0.269634, (GLfloat) - 0.403536,
-       (GLfloat) 0.680503, (GLfloat) 0.278064, (GLfloat) - 0.416153,
-       (GLfloat) 0.665328, (GLfloat) 0.290681, (GLfloat) - 0.435035,
-       (GLfloat) 0.660000, (GLfloat) 0.305564, (GLfloat) - 0.457308,
-       (GLfloat) 0.665328, (GLfloat) 0.320446, (GLfloat) - 0.479582,
-       (GLfloat) 0.680503, (GLfloat) 0.333063, (GLfloat) - 0.498464,
-       (GLfloat) 0.703212, (GLfloat) 0.341493, (GLfloat) - 0.511081,
-       (GLfloat) 0.730000, (GLfloat) 0.344454, (GLfloat) - 0.515511,
-       (GLfloat) 0.756788, (GLfloat) 0.434638, (GLfloat) - 0.434638,
-       (GLfloat) 0.779498, (GLfloat) 0.423909, (GLfloat) - 0.423909,
-       (GLfloat) 0.794672, (GLfloat) 0.407851, (GLfloat) - 0.407851,
-       (GLfloat) 0.800000, (GLfloat) 0.388909, (GLfloat) - 0.388909,
-       (GLfloat) 0.794672, (GLfloat) 0.369967, (GLfloat) - 0.369967,
-       (GLfloat) 0.779498, (GLfloat) 0.353909, (GLfloat) - 0.353909,
-       (GLfloat) 0.756788, (GLfloat) 0.343179, (GLfloat) - 0.343179,
-       (GLfloat) 0.730000, (GLfloat) 0.339411, (GLfloat) - 0.339411,
-       (GLfloat) 0.703212, (GLfloat) 0.343179, (GLfloat) - 0.343179,
-       (GLfloat) 0.680503, (GLfloat) 0.353909, (GLfloat) - 0.353909,
-       (GLfloat) 0.665328, (GLfloat) 0.369967, (GLfloat) - 0.369967,
-       (GLfloat) 0.660000, (GLfloat) 0.388909, (GLfloat) - 0.388909,
-       (GLfloat) 0.665328, (GLfloat) 0.407851, (GLfloat) - 0.407851,
-       (GLfloat) 0.680503, (GLfloat) 0.423909, (GLfloat) - 0.423909,
-       (GLfloat) 0.703212, (GLfloat) 0.434638, (GLfloat) - 0.434638,
-       (GLfloat) 0.730000, (GLfloat) 0.438406, (GLfloat) - 0.438406,
-       (GLfloat) 0.756788, (GLfloat) 0.511081, (GLfloat) - 0.341493,
-       (GLfloat) 0.779498, (GLfloat) 0.498464, (GLfloat) - 0.333063,
-       (GLfloat) 0.794672, (GLfloat) 0.479582, (GLfloat) - 0.320446,
-       (GLfloat) 0.800000, (GLfloat) 0.457308, (GLfloat) - 0.305564,
-       (GLfloat) 0.794672, (GLfloat) 0.435035, (GLfloat) - 0.290681,
-       (GLfloat) 0.779498, (GLfloat) 0.416153, (GLfloat) - 0.278064,
-       (GLfloat) 0.756788, (GLfloat) 0.403536, (GLfloat) - 0.269634,
-       (GLfloat) 0.730000, (GLfloat) 0.399105, (GLfloat) - 0.266674,
-       (GLfloat) 0.703212, (GLfloat) 0.403536, (GLfloat) - 0.269634,
-       (GLfloat) 0.680503, (GLfloat) 0.416153, (GLfloat) - 0.278064,
-       (GLfloat) 0.665328, (GLfloat) 0.435035, (GLfloat) - 0.290681,
-       (GLfloat) 0.660000, (GLfloat) 0.457308, (GLfloat) - 0.305564,
-       (GLfloat) 0.665328, (GLfloat) 0.479582, (GLfloat) - 0.320446,
-       (GLfloat) 0.680503, (GLfloat) 0.498464, (GLfloat) - 0.333063,
-       (GLfloat) 0.703212, (GLfloat) 0.511081, (GLfloat) - 0.341493,
-       (GLfloat) 0.730000, (GLfloat) 0.515511, (GLfloat) - 0.344454,
-       (GLfloat) 0.756788, (GLfloat) 0.567882, (GLfloat) - 0.235225,
-       (GLfloat) 0.779498, (GLfloat) 0.553863, (GLfloat) - 0.229418,
-       (GLfloat) 0.794672, (GLfloat) 0.532882, (GLfloat) - 0.220727,
-       (GLfloat) 0.800000, (GLfloat) 0.508134, (GLfloat) - 0.210476,
-       (GLfloat) 0.794672, (GLfloat) 0.483385, (GLfloat) - 0.200225,
-       (GLfloat) 0.779498, (GLfloat) 0.462404, (GLfloat) - 0.191534,
-       (GLfloat) 0.756788, (GLfloat) 0.448385, (GLfloat) - 0.185727,
-       (GLfloat) 0.730000, (GLfloat) 0.443462, (GLfloat) - 0.183688,
-       (GLfloat) 0.703212, (GLfloat) 0.448385, (GLfloat) - 0.185727,
-       (GLfloat) 0.680503, (GLfloat) 0.462404, (GLfloat) - 0.191534,
-       (GLfloat) 0.665328, (GLfloat) 0.483385, (GLfloat) - 0.200225,
-       (GLfloat) 0.660000, (GLfloat) 0.508134, (GLfloat) - 0.210476,
-       (GLfloat) 0.665328, (GLfloat) 0.532882, (GLfloat) - 0.220727,
-       (GLfloat) 0.680503, (GLfloat) 0.553863, (GLfloat) - 0.229418,
-       (GLfloat) 0.703212, (GLfloat) 0.567882, (GLfloat) - 0.235225,
-       (GLfloat) 0.730000, (GLfloat) 0.572805, (GLfloat) - 0.237264,
-       (GLfloat) 0.756788, (GLfloat) 0.602861, (GLfloat) - 0.119916,
-       (GLfloat) 0.779498, (GLfloat) 0.587978, (GLfloat) - 0.116956,
-       (GLfloat) 0.794672, (GLfloat) 0.565705, (GLfloat) - 0.112526,
-       (GLfloat) 0.800000, (GLfloat) 0.539432, (GLfloat) - 0.107300,
-       (GLfloat) 0.794672, (GLfloat) 0.513159, (GLfloat) - 0.102074,
-       (GLfloat) 0.779498, (GLfloat) 0.490885, (GLfloat) - 0.097643,
-       (GLfloat) 0.756788, (GLfloat) 0.476003, (GLfloat) - 0.094683,
-       (GLfloat) 0.730000, (GLfloat) 0.470777, (GLfloat) - 0.093643,
-       (GLfloat) 0.703212, (GLfloat) 0.476003, (GLfloat) - 0.094683,
-       (GLfloat) 0.680503, (GLfloat) 0.490885, (GLfloat) - 0.097643,
-       (GLfloat) 0.665328, (GLfloat) 0.513159, (GLfloat) - 0.102074,
-       (GLfloat) 0.660000, (GLfloat) 0.539432, (GLfloat) - 0.107300,
-       (GLfloat) 0.665328, (GLfloat) 0.565705, (GLfloat) - 0.112526,
-       (GLfloat) 0.680503, (GLfloat) 0.587978, (GLfloat) - 0.116956,
-       (GLfloat) 0.703212, (GLfloat) 0.602861, (GLfloat) - 0.119916,
-       (GLfloat) 0.730000, (GLfloat) 0.608087, (GLfloat) - 0.120956,
-       (GLfloat) 0.420000, (GLfloat) - 0.000000, (GLfloat) - 0.200000,
-       (GLfloat) 0.420000, (GLfloat) 0.051764, (GLfloat) - 0.193185,
-       (GLfloat) 0.420000, (GLfloat) 0.100000, (GLfloat) - 0.173205,
-       (GLfloat) 0.420000, (GLfloat) 0.141421, (GLfloat) - 0.141421,
-       (GLfloat) 0.420000, (GLfloat) 0.173205, (GLfloat) - 0.100000,
-       (GLfloat) 0.420000, (GLfloat) 0.193185, (GLfloat) - 0.051764,
-       (GLfloat) 0.420000, (GLfloat) 0.200000, (GLfloat) - 0.000000,
-       (GLfloat) 0.420000, (GLfloat) 0.193185, (GLfloat) 0.051764,
-       (GLfloat) 0.420000, (GLfloat) 0.173205, (GLfloat) 0.100000,
-       (GLfloat) 0.420000, (GLfloat) 0.141421, (GLfloat) 0.141421,
-       (GLfloat) 0.420000, (GLfloat) 0.100000, (GLfloat) 0.173205,
-       (GLfloat) 0.420000, (GLfloat) 0.051764, (GLfloat) 0.193185,
-       (GLfloat) 0.420000, (GLfloat) 0.000000, (GLfloat) 0.200000,
-       (GLfloat) 0.420000, (GLfloat) - 0.051764, (GLfloat) 0.193185,
-       (GLfloat) 0.420000, (GLfloat) - 0.100000, (GLfloat) 0.173205,
-       (GLfloat) 0.420000, (GLfloat) - 0.141421, (GLfloat) 0.141421,
-       (GLfloat) 0.420000, (GLfloat) - 0.173205, (GLfloat) 0.100000,
-       (GLfloat) 0.420000, (GLfloat) - 0.193185, (GLfloat) 0.051764,
-       (GLfloat) 0.420000, (GLfloat) - 0.200000, (GLfloat) 0.000000,
-       (GLfloat) 0.420000, (GLfloat) - 0.193185, (GLfloat) - 0.051764,
-       (GLfloat) 0.420000, (GLfloat) - 0.173205, (GLfloat) - 0.100000,
-       (GLfloat) 0.420000, (GLfloat) - 0.141421, (GLfloat) - 0.141421,
-       (GLfloat) 0.420000, (GLfloat) - 0.100000, (GLfloat) - 0.173205,
-       (GLfloat) 0.420000, (GLfloat) - 0.051764, (GLfloat) - 0.193185,
-       (GLfloat) 0.540000, (GLfloat) - 0.000000, (GLfloat) - 0.200000,
-       (GLfloat) 0.540000, (GLfloat) 0.051764, (GLfloat) - 0.193185,
-       (GLfloat) 0.540000, (GLfloat) 0.100000, (GLfloat) - 0.173205,
-       (GLfloat) 0.540000, (GLfloat) 0.141421, (GLfloat) - 0.141421,
-       (GLfloat) 0.540000, (GLfloat) 0.173205, (GLfloat) - 0.100000,
-       (GLfloat) 0.540000, (GLfloat) 0.193185, (GLfloat) - 0.051764,
-       (GLfloat) 0.540000, (GLfloat) 0.200000, (GLfloat) - 0.000000,
-       (GLfloat) 0.540000, (GLfloat) 0.193185, (GLfloat) 0.051764,
-       (GLfloat) 0.540000, (GLfloat) 0.173205, (GLfloat) 0.100000,
-       (GLfloat) 0.540000, (GLfloat) 0.141421, (GLfloat) 0.141421,
-       (GLfloat) 0.540000, (GLfloat) 0.100000, (GLfloat) 0.173205,
-       (GLfloat) 0.540000, (GLfloat) 0.051764, (GLfloat) 0.193185,
-       (GLfloat) 0.540000, (GLfloat) 0.000000, (GLfloat) 0.200000,
-       (GLfloat) 0.540000, (GLfloat) - 0.051764, (GLfloat) 0.193185,
-       (GLfloat) 0.540000, (GLfloat) - 0.100000, (GLfloat) 0.173205,
-       (GLfloat) 0.540000, (GLfloat) - 0.141421, (GLfloat) 0.141421,
-       (GLfloat) 0.540000, (GLfloat) - 0.173205, (GLfloat) 0.100000,
-       (GLfloat) 0.540000, (GLfloat) - 0.193185, (GLfloat) 0.051764,
-       (GLfloat) 0.540000, (GLfloat) - 0.200000, (GLfloat) 0.000000,
-       (GLfloat) 0.540000, (GLfloat) - 0.193185, (GLfloat) - 0.051764,
-       (GLfloat) 0.540000, (GLfloat) - 0.173205, (GLfloat) - 0.100000,
-       (GLfloat) 0.540000, (GLfloat) - 0.141421, (GLfloat) - 0.141421,
-       (GLfloat) 0.540000, (GLfloat) - 0.100000, (GLfloat) - 0.173205,
-       (GLfloat) 0.540000, (GLfloat) - 0.051764, (GLfloat) - 0.193185,
-       (GLfloat) 0.790000, (GLfloat) 0.060000, (GLfloat) - 0.000000,
-       (GLfloat) 0.785433, (GLfloat) 0.060000, (GLfloat) - 0.022961,
-       (GLfloat) 0.772426, (GLfloat) 0.060000, (GLfloat) - 0.042426,
-       (GLfloat) 0.752961, (GLfloat) 0.060000, (GLfloat) - 0.055433,
-       (GLfloat) 0.730000, (GLfloat) 0.060000, (GLfloat) - 0.060000,
-       (GLfloat) 0.707039, (GLfloat) 0.060000, (GLfloat) - 0.055433,
-       (GLfloat) 0.687574, (GLfloat) 0.060000, (GLfloat) - 0.042426,
-       (GLfloat) 0.674567, (GLfloat) 0.060000, (GLfloat) - 0.022961,
-       (GLfloat) 0.670000, (GLfloat) 0.060000, (GLfloat) - 0.000000,
-       (GLfloat) 0.674567, (GLfloat) 0.060000, (GLfloat) 0.022961,
-       (GLfloat) 0.687574, (GLfloat) 0.060000, (GLfloat) 0.042426,
-       (GLfloat) 0.707039, (GLfloat) 0.060000, (GLfloat) 0.055433,
-       (GLfloat) 0.730000, (GLfloat) 0.060000, (GLfloat) 0.060000,
-       (GLfloat) 0.752961, (GLfloat) 0.060000, (GLfloat) 0.055433,
-       (GLfloat) 0.772426, (GLfloat) 0.060000, (GLfloat) 0.042426,
-       (GLfloat) 0.785433, (GLfloat) 0.060000, (GLfloat) 0.022961,
-       (GLfloat) 0.790000, (GLfloat) 0.550000, (GLfloat) - 0.000000,
-       (GLfloat) 0.785433, (GLfloat) 0.550000, (GLfloat) - 0.022961,
-       (GLfloat) 0.772426, (GLfloat) 0.550000, (GLfloat) - 0.042426,
-       (GLfloat) 0.752961, (GLfloat) 0.550000, (GLfloat) - 0.055433,
-       (GLfloat) 0.730000, (GLfloat) 0.550000, (GLfloat) - 0.060000,
-       (GLfloat) 0.707039, (GLfloat) 0.550000, (GLfloat) - 0.055433,
-       (GLfloat) 0.687574, (GLfloat) 0.550000, (GLfloat) - 0.042426,
-       (GLfloat) 0.674567, (GLfloat) 0.550000, (GLfloat) - 0.022961,
-       (GLfloat) 0.670000, (GLfloat) 0.550000, (GLfloat) - 0.000000,
-       (GLfloat) 0.674567, (GLfloat) 0.550000, (GLfloat) 0.022961,
-       (GLfloat) 0.687574, (GLfloat) 0.550000, (GLfloat) 0.042426,
-       (GLfloat) 0.707039, (GLfloat) 0.550000, (GLfloat) 0.055433,
-       (GLfloat) 0.730000, (GLfloat) 0.550000, (GLfloat) 0.060000,
-       (GLfloat) 0.752961, (GLfloat) 0.550000, (GLfloat) 0.055433,
-       (GLfloat) 0.772426, (GLfloat) 0.550000, (GLfloat) 0.042426,
-       (GLfloat) 0.785433, (GLfloat) 0.550000, (GLfloat) 0.022961,
-       (GLfloat) 0.790000, (GLfloat) 0.000000, (GLfloat) 0.060000,
-       (GLfloat) 0.785433, (GLfloat) 0.022961, (GLfloat) 0.060000,
-       (GLfloat) 0.772426, (GLfloat) 0.042426, (GLfloat) 0.060000,
-       (GLfloat) 0.752961, (GLfloat) 0.055433, (GLfloat) 0.060000,
-       (GLfloat) 0.707039, (GLfloat) 0.055433, (GLfloat) 0.060000,
-       (GLfloat) 0.687574, (GLfloat) 0.042426, (GLfloat) 0.060000,
-       (GLfloat) 0.674567, (GLfloat) 0.022961, (GLfloat) 0.060000,
-       (GLfloat) 0.670000, (GLfloat) 0.000000, (GLfloat) 0.060000,
-       (GLfloat) 0.674567, (GLfloat) - 0.022961, (GLfloat) 0.060000,
-       (GLfloat) 0.687574, (GLfloat) - 0.042426, (GLfloat) 0.060000,
-       (GLfloat) 0.707039, (GLfloat) - 0.055433, (GLfloat) 0.060000,
-       (GLfloat) 0.730000, (GLfloat) - 0.060000, (GLfloat) 0.060000,
-       (GLfloat) 0.752961, (GLfloat) - 0.055433, (GLfloat) 0.060000,
-       (GLfloat) 0.772426, (GLfloat) - 0.042426, (GLfloat) 0.060000,
-       (GLfloat) 0.785433, (GLfloat) - 0.022961, (GLfloat) 0.060000,
-       (GLfloat) 0.790000, (GLfloat) 0.000000, (GLfloat) 0.550000,
-       (GLfloat) 0.785433, (GLfloat) 0.022961, (GLfloat) 0.550000,
-       (GLfloat) 0.772426, (GLfloat) 0.042426, (GLfloat) 0.550000,
-       (GLfloat) 0.752961, (GLfloat) 0.055433, (GLfloat) 0.550000,
-       (GLfloat) 0.730000, (GLfloat) 0.060000, (GLfloat) 0.550000,
-       (GLfloat) 0.707039, (GLfloat) 0.055433, (GLfloat) 0.550000,
-       (GLfloat) 0.687574, (GLfloat) 0.042426, (GLfloat) 0.550000,
-       (GLfloat) 0.674567, (GLfloat) 0.022961, (GLfloat) 0.550000,
-       (GLfloat) 0.670000, (GLfloat) 0.000000, (GLfloat) 0.550000,
-       (GLfloat) 0.674567, (GLfloat) - 0.022961, (GLfloat) 0.550000,
-       (GLfloat) 0.687574, (GLfloat) - 0.042426, (GLfloat) 0.550000,
-       (GLfloat) 0.707039, (GLfloat) - 0.055433, (GLfloat) 0.550000,
-       (GLfloat) 0.730000, (GLfloat) - 0.060000, (GLfloat) 0.550000,
-       (GLfloat) 0.752961, (GLfloat) - 0.055433, (GLfloat) 0.550000,
-       (GLfloat) 0.772426, (GLfloat) - 0.042426, (GLfloat) 0.550000,
-       (GLfloat) 0.785433, (GLfloat) - 0.022961, (GLfloat) 0.550000,
-       (GLfloat) 0.790000, (GLfloat) - 0.060000, (GLfloat) 0.000000,
-       (GLfloat) 0.785433, (GLfloat) - 0.060000, (GLfloat) 0.022961,
-       (GLfloat) 0.772426, (GLfloat) - 0.060000, (GLfloat) 0.042426,
-       (GLfloat) 0.752961, (GLfloat) - 0.060000, (GLfloat) 0.055433,
-       (GLfloat) 0.707039, (GLfloat) - 0.060000, (GLfloat) 0.055433,
-       (GLfloat) 0.687574, (GLfloat) - 0.060000, (GLfloat) 0.042426,
-       (GLfloat) 0.674567, (GLfloat) - 0.060000, (GLfloat) 0.022961,
-       (GLfloat) 0.670000, (GLfloat) - 0.060000, (GLfloat) 0.000000,
-       (GLfloat) 0.674567, (GLfloat) - 0.060000, (GLfloat) - 0.022961,
-       (GLfloat) 0.687574, (GLfloat) - 0.060000, (GLfloat) - 0.042426,
-       (GLfloat) 0.707039, (GLfloat) - 0.060000, (GLfloat) - 0.055433,
-       (GLfloat) 0.730000, (GLfloat) - 0.060000, (GLfloat) - 0.060000,
-       (GLfloat) 0.752961, (GLfloat) - 0.060000, (GLfloat) - 0.055433,
-       (GLfloat) 0.772426, (GLfloat) - 0.060000, (GLfloat) - 0.042426,
-       (GLfloat) 0.785433, (GLfloat) - 0.060000, (GLfloat) - 0.022961,
-       (GLfloat) 0.790000, (GLfloat) - 0.550000, (GLfloat) 0.000000,
-       (GLfloat) 0.785433, (GLfloat) - 0.550000, (GLfloat) 0.022961,
-       (GLfloat) 0.772426, (GLfloat) - 0.550000, (GLfloat) 0.042426,
-       (GLfloat) 0.752961, (GLfloat) - 0.550000, (GLfloat) 0.055433,
-       (GLfloat) 0.730000, (GLfloat) - 0.550000, (GLfloat) 0.060000,
-       (GLfloat) 0.707039, (GLfloat) - 0.550000, (GLfloat) 0.055433,
-       (GLfloat) 0.687574, (GLfloat) - 0.550000, (GLfloat) 0.042426,
-       (GLfloat) 0.674567, (GLfloat) - 0.550000, (GLfloat) 0.022961,
-       (GLfloat) 0.670000, (GLfloat) - 0.550000, (GLfloat) 0.000000,
-       (GLfloat) 0.674567, (GLfloat) - 0.550000, (GLfloat) - 0.022961,
-       (GLfloat) 0.687574, (GLfloat) - 0.550000, (GLfloat) - 0.042426,
-       (GLfloat) 0.707039, (GLfloat) - 0.550000, (GLfloat) - 0.055433,
-       (GLfloat) 0.730000, (GLfloat) - 0.550000, (GLfloat) - 0.060000,
-       (GLfloat) 0.752961, (GLfloat) - 0.550000, (GLfloat) - 0.055433,
-       (GLfloat) 0.772426, (GLfloat) - 0.550000, (GLfloat) - 0.042426,
-       (GLfloat) 0.785433, (GLfloat) - 0.550000, (GLfloat) - 0.022961,
-       (GLfloat) 0.790000, (GLfloat) - 0.000000, (GLfloat) - 0.060000,
-       (GLfloat) 0.785433, (GLfloat) - 0.022961, (GLfloat) - 0.060000,
-       (GLfloat) 0.772426, (GLfloat) - 0.042426, (GLfloat) - 0.060000,
-       (GLfloat) 0.752961, (GLfloat) - 0.055433, (GLfloat) - 0.060000,
-       (GLfloat) 0.707039, (GLfloat) - 0.055433, (GLfloat) - 0.060000,
-       (GLfloat) 0.687574, (GLfloat) - 0.042426, (GLfloat) - 0.060000,
-       (GLfloat) 0.674567, (GLfloat) - 0.022961, (GLfloat) - 0.060000,
-       (GLfloat) 0.670000, (GLfloat) - 0.000000, (GLfloat) - 0.060000,
-       (GLfloat) 0.674567, (GLfloat) 0.022961, (GLfloat) - 0.060000,
-       (GLfloat) 0.687574, (GLfloat) 0.042426, (GLfloat) - 0.060000,
-       (GLfloat) 0.707039, (GLfloat) 0.055433, (GLfloat) - 0.060000,
-       (GLfloat) 0.752961, (GLfloat) 0.055433, (GLfloat) - 0.060000,
-       (GLfloat) 0.772426, (GLfloat) 0.042426, (GLfloat) - 0.060000,
-       (GLfloat) 0.785433, (GLfloat) 0.022961, (GLfloat) - 0.060000,
-       (GLfloat) 0.790000, (GLfloat) - 0.000000, (GLfloat) - 0.550000,
-       (GLfloat) 0.785433, (GLfloat) - 0.022961, (GLfloat) - 0.550000,
-       (GLfloat) 0.772426, (GLfloat) - 0.042426, (GLfloat) - 0.550000,
-       (GLfloat) 0.752961, (GLfloat) - 0.055433, (GLfloat) - 0.550000,
-       (GLfloat) 0.730000, (GLfloat) - 0.060000, (GLfloat) - 0.550000,
-       (GLfloat) 0.707039, (GLfloat) - 0.055433, (GLfloat) - 0.550000,
-       (GLfloat) 0.687574, (GLfloat) - 0.042426, (GLfloat) - 0.550000,
-       (GLfloat) 0.674567, (GLfloat) - 0.022961, (GLfloat) - 0.550000,
-       (GLfloat) 0.670000, (GLfloat) - 0.000000, (GLfloat) - 0.550000,
-       (GLfloat) 0.674567, (GLfloat) 0.022961, (GLfloat) - 0.550000,
-       (GLfloat) 0.687574, (GLfloat) 0.042426, (GLfloat) - 0.550000,
-       (GLfloat) 0.707039, (GLfloat) 0.055433, (GLfloat) - 0.550000,
-       (GLfloat) 0.730000, (GLfloat) 0.060000, (GLfloat) - 0.550000,
-       (GLfloat) 0.752961, (GLfloat) 0.055433, (GLfloat) - 0.550000,
-       (GLfloat) 0.772426, (GLfloat) 0.042426, (GLfloat) - 0.550000,
-       (GLfloat) 0.785433, (GLfloat) 0.022961, (GLfloat) - 0.550000,
-       (GLfloat) 0.540000, (GLfloat) 0.000000, (GLfloat) - 0.100000,
-       (GLfloat) 0.540000, (GLfloat) 0.038268, (GLfloat) - 0.092388,
-       (GLfloat) 0.540000, (GLfloat) 0.070711, (GLfloat) - 0.070711,
-       (GLfloat) 0.540000, (GLfloat) 0.092388, (GLfloat) - 0.038268,
-       (GLfloat) 0.540000, (GLfloat) 0.100000, (GLfloat) - 0.000000,
-       (GLfloat) 0.540000, (GLfloat) 0.092388, (GLfloat) 0.038268,
-       (GLfloat) 0.540000, (GLfloat) 0.070711, (GLfloat) 0.070711,
-       (GLfloat) 0.540000, (GLfloat) 0.038268, (GLfloat) 0.092388,
-       (GLfloat) 0.540000, (GLfloat) 0.000000, (GLfloat) 0.100000,
-       (GLfloat) 0.540000, (GLfloat) - 0.038268, (GLfloat) 0.092388,
-       (GLfloat) 0.540000, (GLfloat) - 0.070711, (GLfloat) 0.070711,
-       (GLfloat) 0.540000, (GLfloat) - 0.092388, (GLfloat) 0.038268,
-       (GLfloat) 0.540000, (GLfloat) - 0.100000, (GLfloat) 0.000000,
-       (GLfloat) 0.540000, (GLfloat) - 0.092388, (GLfloat) - 0.038268,
-       (GLfloat) 0.540000, (GLfloat) - 0.070711, (GLfloat) - 0.070711,
-       (GLfloat) 0.540000, (GLfloat) - 0.038268, (GLfloat) - 0.092388,
-       (GLfloat) 0.800000, (GLfloat) 0.000000, (GLfloat) - 0.100000,
-       (GLfloat) 0.800000, (GLfloat) 0.038268, (GLfloat) - 0.092388,
-       (GLfloat) 0.800000, (GLfloat) 0.070711, (GLfloat) - 0.070711,
-       (GLfloat) 0.800000, (GLfloat) 0.092388, (GLfloat) - 0.038268,
-       (GLfloat) 0.800000, (GLfloat) 0.100000, (GLfloat) - 0.000000,
-       (GLfloat) 0.800000, (GLfloat) 0.092388, (GLfloat) 0.038268,
-       (GLfloat) 0.800000, (GLfloat) 0.070711, (GLfloat) 0.070711,
-       (GLfloat) 0.800000, (GLfloat) 0.038268, (GLfloat) 0.092388,
-       (GLfloat) 0.800000, (GLfloat) 0.000000, (GLfloat) 0.100000,
-       (GLfloat) 0.800000, (GLfloat) - 0.038268, (GLfloat) 0.092388,
-       (GLfloat) 0.800000, (GLfloat) - 0.070711, (GLfloat) 0.070711,
-       (GLfloat) 0.800000, (GLfloat) - 0.092388, (GLfloat) 0.038268,
-       (GLfloat) 0.800000, (GLfloat) - 0.100000, (GLfloat) 0.000000,
-       (GLfloat) 0.800000, (GLfloat) - 0.092388, (GLfloat) - 0.038268,
-       (GLfloat) 0.800000, (GLfloat) - 0.070711, (GLfloat) - 0.070711,
-       (GLfloat) 0.800000, (GLfloat) - 0.038268, (GLfloat) - 0.092388,
-};
-
-static GLfloat BigValve_normals[] =
-{
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.195090, (GLfloat) - 0.980785,
-       (GLfloat) - 0.000000, (GLfloat) 0.555570, (GLfloat) - 0.831470,
-       (GLfloat) - 0.000000, (GLfloat) 0.831470, (GLfloat) - 0.555570,
-       (GLfloat) - 0.000000, (GLfloat) 0.980785, (GLfloat) - 0.195090,
-       (GLfloat) - 0.000000, (GLfloat) 0.980785, (GLfloat) 0.195090,
-       (GLfloat) - 0.000000, (GLfloat) 0.831470, (GLfloat) 0.555570,
-       (GLfloat) - 0.000000, (GLfloat) 0.555570, (GLfloat) 0.831470,
-       (GLfloat) - 0.000000, (GLfloat) 0.195090, (GLfloat) 0.980785,
-       (GLfloat) - 0.000000, (GLfloat) - 0.195090, (GLfloat) 0.980785,
-       (GLfloat) - 0.000000, (GLfloat) - 0.555570, (GLfloat) 0.831470,
-       (GLfloat) - 0.000000, (GLfloat) - 0.831470, (GLfloat) 0.555570,
-       (GLfloat) - 0.000000, (GLfloat) - 0.980785, (GLfloat) 0.195090,
-       (GLfloat) 0.000000, (GLfloat) - 0.980785, (GLfloat) - 0.195090,
-       (GLfloat) 0.000000, (GLfloat) - 0.831470, (GLfloat) - 0.555570,
-       (GLfloat) 0.000000, (GLfloat) - 0.555570, (GLfloat) - 0.831470,
-       (GLfloat) 0.000000, (GLfloat) - 0.195090, (GLfloat) - 0.980785,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.980785, (GLfloat) - 0.195092, (GLfloat) - 0.000000,
-       (GLfloat) 0.831470, (GLfloat) - 0.555569, (GLfloat) - 0.000000,
-       (GLfloat) 0.555569, (GLfloat) - 0.831470, (GLfloat) - 0.000000,
-       (GLfloat) 0.195091, (GLfloat) - 0.980785, (GLfloat) - 0.000000,
-       (GLfloat) - 0.195090, (GLfloat) - 0.980785, (GLfloat) - 0.000000,
-       (GLfloat) - 0.555570, (GLfloat) - 0.831469, (GLfloat) - 0.000000,
-       (GLfloat) - 0.831469, (GLfloat) - 0.555571, (GLfloat) - 0.000000,
-       (GLfloat) - 0.980785, (GLfloat) - 0.195089, (GLfloat) 0.000000,
-       (GLfloat) - 0.980785, (GLfloat) 0.195089, (GLfloat) - 0.000000,
-       (GLfloat) - 0.831469, (GLfloat) 0.555571, (GLfloat) - 0.000000,
-       (GLfloat) - 0.555570, (GLfloat) 0.831469, (GLfloat) - 0.000000,
-       (GLfloat) - 0.195090, (GLfloat) 0.980785, (GLfloat) - 0.000000,
-       (GLfloat) 0.195091, (GLfloat) 0.980785, (GLfloat) 0.000000,
-       (GLfloat) 0.555569, (GLfloat) 0.831470, (GLfloat) 0.000000,
-       (GLfloat) 0.831470, (GLfloat) 0.555569, (GLfloat) 0.000000,
-       (GLfloat) 0.980785, (GLfloat) 0.195092, (GLfloat) - 0.000000,
-       (GLfloat) 0.980785, (GLfloat) 0.000000, (GLfloat) 0.195092,
-       (GLfloat) 0.831470, (GLfloat) 0.000000, (GLfloat) 0.555569,
-       (GLfloat) 0.555569, (GLfloat) 0.000000, (GLfloat) 0.831470,
-       (GLfloat) 0.195091, (GLfloat) 0.000000, (GLfloat) 0.980785,
-       (GLfloat) - 0.195090, (GLfloat) 0.000000, (GLfloat) 0.980785,
-       (GLfloat) - 0.555570, (GLfloat) 0.000000, (GLfloat) 0.831469,
-       (GLfloat) - 0.831469, (GLfloat) 0.000000, (GLfloat) 0.555571,
-       (GLfloat) - 0.980785, (GLfloat) 0.000000, (GLfloat) 0.195089,
-       (GLfloat) - 0.980785, (GLfloat) - 0.000000, (GLfloat) - 0.195089,
-       (GLfloat) - 0.831469, (GLfloat) - 0.000000, (GLfloat) - 0.555571,
-       (GLfloat) - 0.555570, (GLfloat) - 0.000000, (GLfloat) - 0.831469,
-       (GLfloat) - 0.195090, (GLfloat) - 0.000000, (GLfloat) - 0.980785,
-       (GLfloat) 0.195091, (GLfloat) 0.000000, (GLfloat) - 0.980785,
-       (GLfloat) 0.555569, (GLfloat) 0.000000, (GLfloat) - 0.831470,
-       (GLfloat) 0.831470, (GLfloat) 0.000000, (GLfloat) - 0.555569,
-       (GLfloat) 0.980785, (GLfloat) - 0.000000, (GLfloat) - 0.195092,
-       (GLfloat) 0.980785, (GLfloat) 0.195092, (GLfloat) - 0.000000,
-       (GLfloat) 0.831470, (GLfloat) 0.555569, (GLfloat) - 0.000000,
-       (GLfloat) 0.555569, (GLfloat) 0.831470, (GLfloat) - 0.000000,
-       (GLfloat) 0.195091, (GLfloat) 0.980785, (GLfloat) - 0.000000,
-       (GLfloat) - 0.195090, (GLfloat) 0.980785, (GLfloat) - 0.000000,
-       (GLfloat) - 0.555570, (GLfloat) 0.831469, (GLfloat) - 0.000000,
-       (GLfloat) - 0.831469, (GLfloat) 0.555571, (GLfloat) - 0.000000,
-       (GLfloat) - 0.980785, (GLfloat) 0.195089, (GLfloat) - 0.000000,
-       (GLfloat) - 0.980785, (GLfloat) - 0.195089, (GLfloat) 0.000000,
-       (GLfloat) - 0.831469, (GLfloat) - 0.555571, (GLfloat) 0.000000,
-       (GLfloat) - 0.555570, (GLfloat) - 0.831469, (GLfloat) 0.000000,
-       (GLfloat) - 0.195090, (GLfloat) - 0.980785, (GLfloat) 0.000000,
-       (GLfloat) 0.195091, (GLfloat) - 0.980785, (GLfloat) - 0.000000,
-       (GLfloat) 0.555569, (GLfloat) - 0.831470, (GLfloat) - 0.000000,
-       (GLfloat) 0.831470, (GLfloat) - 0.555569, (GLfloat) - 0.000000,
-       (GLfloat) 0.980785, (GLfloat) - 0.195092, (GLfloat) 0.000000,
-       (GLfloat) 0.980785, (GLfloat) 0.000000, (GLfloat) - 0.195092,
-       (GLfloat) 0.831470, (GLfloat) 0.000000, (GLfloat) - 0.555569,
-       (GLfloat) 0.555569, (GLfloat) 0.000000, (GLfloat) - 0.831470,
-       (GLfloat) 0.195091, (GLfloat) 0.000000, (GLfloat) - 0.980785,
-       (GLfloat) - 0.195090, (GLfloat) 0.000000, (GLfloat) - 0.980785,
-       (GLfloat) - 0.555570, (GLfloat) 0.000000, (GLfloat) - 0.831469,
-       (GLfloat) - 0.831469, (GLfloat) 0.000000, (GLfloat) - 0.555571,
-       (GLfloat) - 0.980785, (GLfloat) 0.000000, (GLfloat) - 0.195089,
-       (GLfloat) - 0.980785, (GLfloat) 0.000000, (GLfloat) 0.195089,
-       (GLfloat) - 0.831469, (GLfloat) 0.000000, (GLfloat) 0.555571,
-       (GLfloat) - 0.555570, (GLfloat) 0.000000, (GLfloat) 0.831469,
-       (GLfloat) - 0.195090, (GLfloat) 0.000000, (GLfloat) 0.980785,
-       (GLfloat) 0.195091, (GLfloat) - 0.000000, (GLfloat) 0.980785,
-       (GLfloat) 0.555569, (GLfloat) - 0.000000, (GLfloat) 0.831470,
-       (GLfloat) 0.831470, (GLfloat) - 0.000000, (GLfloat) 0.555569,
-       (GLfloat) 0.980785, (GLfloat) - 0.000000, (GLfloat) 0.195092,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.130526, (GLfloat) - 0.991445,
-       (GLfloat) - 0.000000, (GLfloat) 0.382684, (GLfloat) - 0.923880,
-       (GLfloat) - 0.000000, (GLfloat) 0.608761, (GLfloat) - 0.793353,
-       (GLfloat) - 0.000000, (GLfloat) 0.793353, (GLfloat) - 0.608761,
-       (GLfloat) - 0.000000, (GLfloat) 0.923880, (GLfloat) - 0.382684,
-       (GLfloat) - 0.000000, (GLfloat) 0.991445, (GLfloat) - 0.130526,
-       (GLfloat) - 0.000000, (GLfloat) 0.991445, (GLfloat) 0.130526,
-       (GLfloat) - 0.000000, (GLfloat) 0.923880, (GLfloat) 0.382684,
-       (GLfloat) - 0.000000, (GLfloat) 0.793353, (GLfloat) 0.608761,
-       (GLfloat) - 0.000000, (GLfloat) 0.608761, (GLfloat) 0.793353,
-       (GLfloat) - 0.000000, (GLfloat) 0.382684, (GLfloat) 0.923880,
-       (GLfloat) - 0.000000, (GLfloat) 0.130526, (GLfloat) 0.991445,
-       (GLfloat) - 0.000000, (GLfloat) - 0.130526, (GLfloat) 0.991445,
-       (GLfloat) - 0.000000, (GLfloat) - 0.382684, (GLfloat) 0.923880,
-       (GLfloat) - 0.000000, (GLfloat) - 0.608761, (GLfloat) 0.793353,
-       (GLfloat) - 0.000000, (GLfloat) - 0.793353, (GLfloat) 0.608761,
-       (GLfloat) - 0.000000, (GLfloat) - 0.923880, (GLfloat) 0.382684,
-       (GLfloat) - 0.000000, (GLfloat) - 0.991445, (GLfloat) 0.130526,
-       (GLfloat) 0.000000, (GLfloat) - 0.991445, (GLfloat) - 0.130526,
-       (GLfloat) 0.000000, (GLfloat) - 0.923880, (GLfloat) - 0.382684,
-       (GLfloat) 0.000000, (GLfloat) - 0.793353, (GLfloat) - 0.608761,
-       (GLfloat) 0.000000, (GLfloat) - 0.608761, (GLfloat) - 0.793353,
-       (GLfloat) 0.000000, (GLfloat) - 0.382684, (GLfloat) - 0.923880,
-       (GLfloat) 0.000000, (GLfloat) - 0.130526, (GLfloat) - 0.991445,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.194185, (GLfloat) 0.976241, (GLfloat) 0.096151,
-       (GLfloat) - 0.194185, (GLfloat) 0.976241, (GLfloat) 0.096151,
-       (GLfloat) - 0.553718, (GLfloat) 0.828695, (GLfloat) 0.081619,
-       (GLfloat) - 0.830228, (GLfloat) 0.554740, (GLfloat) 0.054637,
-       (GLfloat) - 0.980604, (GLfloat) 0.195054, (GLfloat) 0.019211,
-       (GLfloat) - 0.980605, (GLfloat) - 0.195053, (GLfloat) - 0.019211,
-       (GLfloat) - 0.830227, (GLfloat) - 0.554741, (GLfloat) - 0.054637,
-       (GLfloat) - 0.553717, (GLfloat) - 0.828695, (GLfloat) - 0.081619,
-       (GLfloat) - 0.194187, (GLfloat) - 0.976241, (GLfloat) - 0.096151,
-       (GLfloat) 0.194188, (GLfloat) - 0.976241, (GLfloat) - 0.096151,
-       (GLfloat) 0.553716, (GLfloat) - 0.828696, (GLfloat) - 0.081619,
-       (GLfloat) 0.830227, (GLfloat) - 0.554741, (GLfloat) - 0.054637,
-       (GLfloat) 0.980604, (GLfloat) - 0.195053, (GLfloat) - 0.019211,
-       (GLfloat) 0.980604, (GLfloat) 0.195054, (GLfloat) 0.019211,
-       (GLfloat) 0.830228, (GLfloat) 0.554740, (GLfloat) 0.054637,
-       (GLfloat) 0.553717, (GLfloat) 0.828695, (GLfloat) 0.081619,
-       (GLfloat) 0.194186, (GLfloat) 0.938725, (GLfloat) 0.284759,
-       (GLfloat) - 0.194185, (GLfloat) 0.938725, (GLfloat) 0.284759,
-       (GLfloat) - 0.553717, (GLfloat) 0.796849, (GLfloat) 0.241721,
-       (GLfloat) - 0.830228, (GLfloat) 0.533421, (GLfloat) 0.161812,
-       (GLfloat) - 0.980604, (GLfloat) 0.187558, (GLfloat) 0.056895,
-       (GLfloat) - 0.980604, (GLfloat) - 0.187558, (GLfloat) - 0.056895,
-       (GLfloat) - 0.830227, (GLfloat) - 0.533422, (GLfloat) - 0.161812,
-       (GLfloat) - 0.553717, (GLfloat) - 0.796849, (GLfloat) - 0.241722,
-       (GLfloat) - 0.194186, (GLfloat) - 0.938725, (GLfloat) - 0.284759,
-       (GLfloat) 0.194187, (GLfloat) - 0.938724, (GLfloat) - 0.284759,
-       (GLfloat) 0.553716, (GLfloat) - 0.796849, (GLfloat) - 0.241722,
-       (GLfloat) 0.830227, (GLfloat) - 0.533422, (GLfloat) - 0.161812,
-       (GLfloat) 0.980604, (GLfloat) - 0.187558, (GLfloat) - 0.056895,
-       (GLfloat) 0.980604, (GLfloat) 0.187558, (GLfloat) 0.056895,
-       (GLfloat) 0.830228, (GLfloat) 0.533421, (GLfloat) 0.161811,
-       (GLfloat) 0.553716, (GLfloat) 0.796850, (GLfloat) 0.241722,
-       (GLfloat) 0.194186, (GLfloat) 0.865134, (GLfloat) 0.462423,
-       (GLfloat) - 0.194185, (GLfloat) 0.865134, (GLfloat) 0.462424,
-       (GLfloat) - 0.553717, (GLfloat) 0.734380, (GLfloat) 0.392534,
-       (GLfloat) - 0.830228, (GLfloat) 0.491604, (GLfloat) 0.262768,
-       (GLfloat) - 0.980604, (GLfloat) 0.172854, (GLfloat) 0.092393,
-       (GLfloat) - 0.980604, (GLfloat) - 0.172854, (GLfloat) - 0.092393,
-       (GLfloat) - 0.830227, (GLfloat) - 0.491605, (GLfloat) - 0.262768,
-       (GLfloat) - 0.553717, (GLfloat) - 0.734380, (GLfloat) - 0.392534,
-       (GLfloat) - 0.194187, (GLfloat) - 0.865134, (GLfloat) - 0.462424,
-       (GLfloat) 0.194187, (GLfloat) - 0.865134, (GLfloat) - 0.462423,
-       (GLfloat) 0.553716, (GLfloat) - 0.734381, (GLfloat) - 0.392534,
-       (GLfloat) 0.830227, (GLfloat) - 0.491605, (GLfloat) - 0.262768,
-       (GLfloat) 0.980604, (GLfloat) - 0.172854, (GLfloat) - 0.092393,
-       (GLfloat) 0.980604, (GLfloat) 0.172854, (GLfloat) 0.092393,
-       (GLfloat) 0.830228, (GLfloat) 0.491604, (GLfloat) 0.262768,
-       (GLfloat) 0.553716, (GLfloat) 0.734381, (GLfloat) 0.392535,
-       (GLfloat) 0.194186, (GLfloat) 0.758296, (GLfloat) 0.622317,
-       (GLfloat) - 0.194186, (GLfloat) 0.758296, (GLfloat) 0.622318,
-       (GLfloat) - 0.553717, (GLfloat) 0.643690, (GLfloat) 0.528263,
-       (GLfloat) - 0.830228, (GLfloat) 0.430895, (GLfloat) 0.353626,
-       (GLfloat) - 0.980604, (GLfloat) 0.151508, (GLfloat) 0.124340,
-       (GLfloat) - 0.980604, (GLfloat) - 0.151508, (GLfloat) - 0.124339,
-       (GLfloat) - 0.830227, (GLfloat) - 0.430895, (GLfloat) - 0.353627,
-       (GLfloat) - 0.553717, (GLfloat) - 0.643690, (GLfloat) - 0.528263,
-       (GLfloat) - 0.194186, (GLfloat) - 0.758296, (GLfloat) - 0.622317,
-       (GLfloat) 0.194186, (GLfloat) - 0.758296, (GLfloat) - 0.622318,
-       (GLfloat) 0.553716, (GLfloat) - 0.643690, (GLfloat) - 0.528263,
-       (GLfloat) 0.830227, (GLfloat) - 0.430895, (GLfloat) - 0.353627,
-       (GLfloat) 0.980604, (GLfloat) - 0.151508, (GLfloat) - 0.124339,
-       (GLfloat) 0.980604, (GLfloat) 0.151508, (GLfloat) 0.124340,
-       (GLfloat) 0.830228, (GLfloat) 0.430895, (GLfloat) 0.353626,
-       (GLfloat) 0.553716, (GLfloat) 0.643690, (GLfloat) 0.528263,
-       (GLfloat) 0.194186, (GLfloat) 0.622317, (GLfloat) 0.758296,
-       (GLfloat) - 0.194185, (GLfloat) 0.622318, (GLfloat) 0.758296,
-       (GLfloat) - 0.553717, (GLfloat) 0.528263, (GLfloat) 0.643690,
-       (GLfloat) - 0.830228, (GLfloat) 0.353626, (GLfloat) 0.430895,
-       (GLfloat) - 0.980604, (GLfloat) 0.124339, (GLfloat) 0.151508,
-       (GLfloat) - 0.980604, (GLfloat) - 0.124339, (GLfloat) - 0.151508,
-       (GLfloat) - 0.830227, (GLfloat) - 0.353627, (GLfloat) - 0.430895,
-       (GLfloat) - 0.553717, (GLfloat) - 0.528262, (GLfloat) - 0.643689,
-       (GLfloat) - 0.194187, (GLfloat) - 0.622317, (GLfloat) - 0.758296,
-       (GLfloat) 0.194187, (GLfloat) - 0.622317, (GLfloat) - 0.758296,
-       (GLfloat) 0.553716, (GLfloat) - 0.528263, (GLfloat) - 0.643690,
-       (GLfloat) 0.830227, (GLfloat) - 0.353627, (GLfloat) - 0.430895,
-       (GLfloat) 0.980604, (GLfloat) - 0.124339, (GLfloat) - 0.151508,
-       (GLfloat) 0.980604, (GLfloat) 0.124340, (GLfloat) 0.151508,
-       (GLfloat) 0.830228, (GLfloat) 0.353626, (GLfloat) 0.430895,
-       (GLfloat) 0.553716, (GLfloat) 0.528263, (GLfloat) 0.643690,
-       (GLfloat) 0.194186, (GLfloat) 0.462423, (GLfloat) 0.865134,
-       (GLfloat) - 0.194185, (GLfloat) 0.462424, (GLfloat) 0.865134,
-       (GLfloat) - 0.553717, (GLfloat) 0.392534, (GLfloat) 0.734380,
-       (GLfloat) - 0.830228, (GLfloat) 0.262768, (GLfloat) 0.491604,
-       (GLfloat) - 0.980604, (GLfloat) 0.092393, (GLfloat) 0.172855,
-       (GLfloat) - 0.980604, (GLfloat) - 0.092392, (GLfloat) - 0.172854,
-       (GLfloat) - 0.830227, (GLfloat) - 0.262768, (GLfloat) - 0.491605,
-       (GLfloat) - 0.553717, (GLfloat) - 0.392534, (GLfloat) - 0.734380,
-       (GLfloat) - 0.194186, (GLfloat) - 0.462424, (GLfloat) - 0.865134,
-       (GLfloat) 0.194187, (GLfloat) - 0.462423, (GLfloat) - 0.865134,
-       (GLfloat) 0.553716, (GLfloat) - 0.392535, (GLfloat) - 0.734381,
-       (GLfloat) 0.830227, (GLfloat) - 0.262768, (GLfloat) - 0.491605,
-       (GLfloat) 0.980604, (GLfloat) - 0.092392, (GLfloat) - 0.172854,
-       (GLfloat) 0.980604, (GLfloat) 0.092393, (GLfloat) 0.172855,
-       (GLfloat) 0.830228, (GLfloat) 0.262768, (GLfloat) 0.491604,
-       (GLfloat) 0.553716, (GLfloat) 0.392535, (GLfloat) 0.734381,
-       (GLfloat) 0.194185, (GLfloat) 0.284759, (GLfloat) 0.938725,
-       (GLfloat) - 0.194185, (GLfloat) 0.284759, (GLfloat) 0.938725,
-       (GLfloat) - 0.553718, (GLfloat) 0.241721, (GLfloat) 0.796848,
-       (GLfloat) - 0.830228, (GLfloat) 0.161812, (GLfloat) 0.533422,
-       (GLfloat) - 0.980604, (GLfloat) 0.056895, (GLfloat) 0.187558,
-       (GLfloat) - 0.980604, (GLfloat) - 0.056895, (GLfloat) - 0.187558,
-       (GLfloat) - 0.830227, (GLfloat) - 0.161812, (GLfloat) - 0.533423,
-       (GLfloat) - 0.553717, (GLfloat) - 0.241722, (GLfloat) - 0.796849,
-       (GLfloat) - 0.194187, (GLfloat) - 0.284759, (GLfloat) - 0.938725,
-       (GLfloat) 0.194188, (GLfloat) - 0.284759, (GLfloat) - 0.938724,
-       (GLfloat) 0.553716, (GLfloat) - 0.241722, (GLfloat) - 0.796849,
-       (GLfloat) 0.830227, (GLfloat) - 0.161812, (GLfloat) - 0.533423,
-       (GLfloat) 0.980604, (GLfloat) - 0.056895, (GLfloat) - 0.187557,
-       (GLfloat) 0.980604, (GLfloat) 0.056895, (GLfloat) 0.187558,
-       (GLfloat) 0.830228, (GLfloat) 0.161812, (GLfloat) 0.533422,
-       (GLfloat) 0.553717, (GLfloat) 0.241722, (GLfloat) 0.796849,
-       (GLfloat) 0.194186, (GLfloat) 0.096151, (GLfloat) 0.976241,
-       (GLfloat) - 0.194186, (GLfloat) 0.096151, (GLfloat) 0.976241,
-       (GLfloat) - 0.553717, (GLfloat) 0.081619, (GLfloat) 0.828695,
-       (GLfloat) - 0.830228, (GLfloat) 0.054637, (GLfloat) 0.554740,
-       (GLfloat) - 0.980604, (GLfloat) 0.019211, (GLfloat) 0.195054,
-       (GLfloat) - 0.980604, (GLfloat) - 0.019211, (GLfloat) - 0.195054,
-       (GLfloat) - 0.830227, (GLfloat) - 0.054637, (GLfloat) - 0.554741,
-       (GLfloat) - 0.553717, (GLfloat) - 0.081619, (GLfloat) - 0.828695,
-       (GLfloat) - 0.194187, (GLfloat) - 0.096151, (GLfloat) - 0.976241,
-       (GLfloat) 0.194187, (GLfloat) - 0.096151, (GLfloat) - 0.976241,
-       (GLfloat) 0.553716, (GLfloat) - 0.081619, (GLfloat) - 0.828696,
-       (GLfloat) 0.830227, (GLfloat) - 0.054637, (GLfloat) - 0.554741,
-       (GLfloat) 0.980604, (GLfloat) - 0.019211, (GLfloat) - 0.195054,
-       (GLfloat) 0.980604, (GLfloat) 0.019211, (GLfloat) 0.195054,
-       (GLfloat) 0.830228, (GLfloat) 0.054637, (GLfloat) 0.554740,
-       (GLfloat) 0.553716, (GLfloat) 0.081619, (GLfloat) 0.828696,
-       (GLfloat) 0.194185, (GLfloat) - 0.096151, (GLfloat) 0.976241,
-       (GLfloat) - 0.194185, (GLfloat) - 0.096151, (GLfloat) 0.976241,
-       (GLfloat) - 0.553718, (GLfloat) - 0.081619, (GLfloat) 0.828695,
-       (GLfloat) - 0.830228, (GLfloat) - 0.054637, (GLfloat) 0.554740,
-       (GLfloat) - 0.980604, (GLfloat) - 0.019211, (GLfloat) 0.195054,
-       (GLfloat) - 0.980605, (GLfloat) 0.019211, (GLfloat) - 0.195053,
-       (GLfloat) - 0.830227, (GLfloat) 0.054637, (GLfloat) - 0.554741,
-       (GLfloat) - 0.553717, (GLfloat) 0.081619, (GLfloat) - 0.828695,
-       (GLfloat) - 0.194187, (GLfloat) 0.096151, (GLfloat) - 0.976241,
-       (GLfloat) 0.194188, (GLfloat) 0.096151, (GLfloat) - 0.976241,
-       (GLfloat) 0.553716, (GLfloat) 0.081619, (GLfloat) - 0.828696,
-       (GLfloat) 0.830227, (GLfloat) 0.054637, (GLfloat) - 0.554741,
-       (GLfloat) 0.980604, (GLfloat) 0.019211, (GLfloat) - 0.195053,
-       (GLfloat) 0.980604, (GLfloat) - 0.019211, (GLfloat) 0.195054,
-       (GLfloat) 0.830228, (GLfloat) - 0.054637, (GLfloat) 0.554740,
-       (GLfloat) 0.553717, (GLfloat) - 0.081619, (GLfloat) 0.828695,
-       (GLfloat) 0.194186, (GLfloat) - 0.284759, (GLfloat) 0.938725,
-       (GLfloat) - 0.194185, (GLfloat) - 0.284759, (GLfloat) 0.938725,
-       (GLfloat) - 0.553717, (GLfloat) - 0.241721, (GLfloat) 0.796849,
-       (GLfloat) - 0.830228, (GLfloat) - 0.161812, (GLfloat) 0.533421,
-       (GLfloat) - 0.980604, (GLfloat) - 0.056895, (GLfloat) 0.187558,
-       (GLfloat) - 0.980604, (GLfloat) 0.056895, (GLfloat) - 0.187558,
-       (GLfloat) - 0.830227, (GLfloat) 0.161812, (GLfloat) - 0.533422,
-       (GLfloat) - 0.553717, (GLfloat) 0.241722, (GLfloat) - 0.796849,
-       (GLfloat) - 0.194186, (GLfloat) 0.284759, (GLfloat) - 0.938725,
-       (GLfloat) 0.194187, (GLfloat) 0.284759, (GLfloat) - 0.938724,
-       (GLfloat) 0.553716, (GLfloat) 0.241722, (GLfloat) - 0.796849,
-       (GLfloat) 0.830227, (GLfloat) 0.161812, (GLfloat) - 0.533422,
-       (GLfloat) 0.980604, (GLfloat) 0.056895, (GLfloat) - 0.187558,
-       (GLfloat) 0.980604, (GLfloat) - 0.056895, (GLfloat) 0.187558,
-       (GLfloat) 0.830228, (GLfloat) - 0.161811, (GLfloat) 0.533421,
-       (GLfloat) 0.553716, (GLfloat) - 0.241722, (GLfloat) 0.796850,
-       (GLfloat) 0.194186, (GLfloat) - 0.462423, (GLfloat) 0.865134,
-       (GLfloat) - 0.194185, (GLfloat) - 0.462424, (GLfloat) 0.865134,
-       (GLfloat) - 0.553717, (GLfloat) - 0.392534, (GLfloat) 0.734380,
-       (GLfloat) - 0.830228, (GLfloat) - 0.262768, (GLfloat) 0.491604,
-       (GLfloat) - 0.980604, (GLfloat) - 0.092393, (GLfloat) 0.172854,
-       (GLfloat) - 0.980604, (GLfloat) 0.092393, (GLfloat) - 0.172854,
-       (GLfloat) - 0.830227, (GLfloat) 0.262768, (GLfloat) - 0.491605,
-       (GLfloat) - 0.553717, (GLfloat) 0.392534, (GLfloat) - 0.734380,
-       (GLfloat) - 0.194187, (GLfloat) 0.462424, (GLfloat) - 0.865134,
-       (GLfloat) 0.194187, (GLfloat) 0.462423, (GLfloat) - 0.865134,
-       (GLfloat) 0.553716, (GLfloat) 0.392534, (GLfloat) - 0.734381,
-       (GLfloat) 0.830227, (GLfloat) 0.262768, (GLfloat) - 0.491605,
-       (GLfloat) 0.980604, (GLfloat) 0.092393, (GLfloat) - 0.172854,
-       (GLfloat) 0.980604, (GLfloat) - 0.092393, (GLfloat) 0.172854,
-       (GLfloat) 0.830228, (GLfloat) - 0.262768, (GLfloat) 0.491604,
-       (GLfloat) 0.553716, (GLfloat) - 0.392535, (GLfloat) 0.734381,
-       (GLfloat) 0.194186, (GLfloat) - 0.622317, (GLfloat) 0.758296,
-       (GLfloat) - 0.194186, (GLfloat) - 0.622318, (GLfloat) 0.758296,
-       (GLfloat) - 0.553717, (GLfloat) - 0.528263, (GLfloat) 0.643690,
-       (GLfloat) - 0.830228, (GLfloat) - 0.353626, (GLfloat) 0.430895,
-       (GLfloat) - 0.980604, (GLfloat) - 0.124340, (GLfloat) 0.151508,
-       (GLfloat) - 0.980604, (GLfloat) 0.124339, (GLfloat) - 0.151508,
-       (GLfloat) - 0.830227, (GLfloat) 0.353627, (GLfloat) - 0.430895,
-       (GLfloat) - 0.553717, (GLfloat) 0.528263, (GLfloat) - 0.643690,
-       (GLfloat) - 0.194186, (GLfloat) 0.622317, (GLfloat) - 0.758296,
-       (GLfloat) 0.194186, (GLfloat) 0.622318, (GLfloat) - 0.758296,
-       (GLfloat) 0.553716, (GLfloat) 0.528263, (GLfloat) - 0.643690,
-       (GLfloat) 0.830227, (GLfloat) 0.353627, (GLfloat) - 0.430895,
-       (GLfloat) 0.980604, (GLfloat) 0.124339, (GLfloat) - 0.151508,
-       (GLfloat) 0.980604, (GLfloat) - 0.124340, (GLfloat) 0.151508,
-       (GLfloat) 0.830228, (GLfloat) - 0.353626, (GLfloat) 0.430895,
-       (GLfloat) 0.553716, (GLfloat) - 0.528263, (GLfloat) 0.643690,
-       (GLfloat) 0.194186, (GLfloat) - 0.758296, (GLfloat) 0.622317,
-       (GLfloat) - 0.194185, (GLfloat) - 0.758296, (GLfloat) 0.622318,
-       (GLfloat) - 0.553717, (GLfloat) - 0.643690, (GLfloat) 0.528263,
-       (GLfloat) - 0.830228, (GLfloat) - 0.430895, (GLfloat) 0.353626,
-       (GLfloat) - 0.980604, (GLfloat) - 0.151508, (GLfloat) 0.124339,
-       (GLfloat) - 0.980604, (GLfloat) 0.151508, (GLfloat) - 0.124339,
-       (GLfloat) - 0.830227, (GLfloat) 0.430895, (GLfloat) - 0.353627,
-       (GLfloat) - 0.553717, (GLfloat) 0.643689, (GLfloat) - 0.528262,
-       (GLfloat) - 0.194187, (GLfloat) 0.758296, (GLfloat) - 0.622317,
-       (GLfloat) 0.194187, (GLfloat) 0.758296, (GLfloat) - 0.622317,
-       (GLfloat) 0.553716, (GLfloat) 0.643690, (GLfloat) - 0.528263,
-       (GLfloat) 0.830227, (GLfloat) 0.430895, (GLfloat) - 0.353627,
-       (GLfloat) 0.980604, (GLfloat) 0.151508, (GLfloat) - 0.124339,
-       (GLfloat) 0.980604, (GLfloat) - 0.151508, (GLfloat) 0.124340,
-       (GLfloat) 0.830228, (GLfloat) - 0.430895, (GLfloat) 0.353626,
-       (GLfloat) 0.553716, (GLfloat) - 0.643690, (GLfloat) 0.528263,
-       (GLfloat) 0.194186, (GLfloat) - 0.865134, (GLfloat) 0.462423,
-       (GLfloat) - 0.194185, (GLfloat) - 0.865134, (GLfloat) 0.462424,
-       (GLfloat) - 0.553717, (GLfloat) - 0.734380, (GLfloat) 0.392534,
-       (GLfloat) - 0.830228, (GLfloat) - 0.491604, (GLfloat) 0.262768,
-       (GLfloat) - 0.980604, (GLfloat) - 0.172855, (GLfloat) 0.092393,
-       (GLfloat) - 0.980604, (GLfloat) 0.172854, (GLfloat) - 0.092393,
-       (GLfloat) - 0.830227, (GLfloat) 0.491605, (GLfloat) - 0.262768,
-       (GLfloat) - 0.553717, (GLfloat) 0.734380, (GLfloat) - 0.392534,
-       (GLfloat) - 0.194186, (GLfloat) 0.865134, (GLfloat) - 0.462424,
-       (GLfloat) 0.194187, (GLfloat) 0.865134, (GLfloat) - 0.462423,
-       (GLfloat) 0.553716, (GLfloat) 0.734381, (GLfloat) - 0.392535,
-       (GLfloat) 0.830228, (GLfloat) 0.491605, (GLfloat) - 0.262768,
-       (GLfloat) 0.980604, (GLfloat) 0.172854, (GLfloat) - 0.092393,
-       (GLfloat) 0.980604, (GLfloat) - 0.172855, (GLfloat) 0.092393,
-       (GLfloat) 0.830228, (GLfloat) - 0.491604, (GLfloat) 0.262768,
-       (GLfloat) 0.553716, (GLfloat) - 0.734381, (GLfloat) 0.392535,
-       (GLfloat) 0.194185, (GLfloat) - 0.938725, (GLfloat) 0.284759,
-       (GLfloat) - 0.194185, (GLfloat) - 0.938725, (GLfloat) 0.284759,
-       (GLfloat) - 0.553718, (GLfloat) - 0.796848, (GLfloat) 0.241721,
-       (GLfloat) - 0.830228, (GLfloat) - 0.533422, (GLfloat) 0.161812,
-       (GLfloat) - 0.980604, (GLfloat) - 0.187558, (GLfloat) 0.056895,
-       (GLfloat) - 0.980605, (GLfloat) 0.187557, (GLfloat) - 0.056895,
-       (GLfloat) - 0.830227, (GLfloat) 0.533423, (GLfloat) - 0.161812,
-       (GLfloat) - 0.553717, (GLfloat) 0.796849, (GLfloat) - 0.241722,
-       (GLfloat) - 0.194187, (GLfloat) 0.938725, (GLfloat) - 0.284759,
-       (GLfloat) 0.194188, (GLfloat) 0.938724, (GLfloat) - 0.284759,
-       (GLfloat) 0.553716, (GLfloat) 0.796849, (GLfloat) - 0.241722,
-       (GLfloat) 0.830227, (GLfloat) 0.533423, (GLfloat) - 0.161812,
-       (GLfloat) 0.980604, (GLfloat) 0.187557, (GLfloat) - 0.056895,
-       (GLfloat) 0.980604, (GLfloat) - 0.187558, (GLfloat) 0.056895,
-       (GLfloat) 0.830228, (GLfloat) - 0.533422, (GLfloat) 0.161812,
-       (GLfloat) 0.553717, (GLfloat) - 0.796849, (GLfloat) 0.241722,
-       (GLfloat) 0.194186, (GLfloat) - 0.976241, (GLfloat) 0.096151,
-       (GLfloat) - 0.194186, (GLfloat) - 0.976241, (GLfloat) 0.096151,
-       (GLfloat) - 0.553717, (GLfloat) - 0.828695, (GLfloat) 0.081619,
-       (GLfloat) - 0.830228, (GLfloat) - 0.554740, (GLfloat) 0.054637,
-       (GLfloat) - 0.980604, (GLfloat) - 0.195054, (GLfloat) 0.019211,
-       (GLfloat) - 0.980604, (GLfloat) 0.195054, (GLfloat) - 0.019211,
-       (GLfloat) - 0.830227, (GLfloat) 0.554741, (GLfloat) - 0.054637,
-       (GLfloat) - 0.553717, (GLfloat) 0.828695, (GLfloat) - 0.081619,
-       (GLfloat) - 0.194187, (GLfloat) 0.976241, (GLfloat) - 0.096151,
-       (GLfloat) 0.194187, (GLfloat) 0.976241, (GLfloat) - 0.096151,
-       (GLfloat) 0.553716, (GLfloat) 0.828696, (GLfloat) - 0.081619,
-       (GLfloat) 0.830227, (GLfloat) 0.554741, (GLfloat) - 0.054637,
-       (GLfloat) 0.980604, (GLfloat) 0.195054, (GLfloat) - 0.019211,
-       (GLfloat) 0.980604, (GLfloat) - 0.195054, (GLfloat) 0.019211,
-       (GLfloat) 0.830228, (GLfloat) - 0.554740, (GLfloat) 0.054637,
-       (GLfloat) 0.553716, (GLfloat) - 0.828696, (GLfloat) 0.081619,
-       (GLfloat) 0.194185, (GLfloat) - 0.976241, (GLfloat) - 0.096151,
-       (GLfloat) - 0.194185, (GLfloat) - 0.976241, (GLfloat) - 0.096151,
-       (GLfloat) - 0.553718, (GLfloat) - 0.828695, (GLfloat) - 0.081619,
-       (GLfloat) - 0.830228, (GLfloat) - 0.554740, (GLfloat) - 0.054637,
-       (GLfloat) - 0.980604, (GLfloat) - 0.195054, (GLfloat) - 0.019211,
-       (GLfloat) - 0.980605, (GLfloat) 0.195053, (GLfloat) 0.019211,
-       (GLfloat) - 0.830227, (GLfloat) 0.554741, (GLfloat) 0.054637,
-       (GLfloat) - 0.553717, (GLfloat) 0.828695, (GLfloat) 0.081619,
-       (GLfloat) - 0.194187, (GLfloat) 0.976241, (GLfloat) 0.096151,
-       (GLfloat) 0.194188, (GLfloat) 0.976241, (GLfloat) 0.096151,
-       (GLfloat) 0.553716, (GLfloat) 0.828696, (GLfloat) 0.081619,
-       (GLfloat) 0.830227, (GLfloat) 0.554741, (GLfloat) 0.054637,
-       (GLfloat) 0.980604, (GLfloat) 0.195053, (GLfloat) 0.019211,
-       (GLfloat) 0.980604, (GLfloat) - 0.195054, (GLfloat) - 0.019211,
-       (GLfloat) 0.830228, (GLfloat) - 0.554740, (GLfloat) - 0.054637,
-       (GLfloat) 0.553717, (GLfloat) - 0.828695, (GLfloat) - 0.081619,
-       (GLfloat) 0.194186, (GLfloat) - 0.938725, (GLfloat) - 0.284759,
-       (GLfloat) - 0.194185, (GLfloat) - 0.938725, (GLfloat) - 0.284759,
-       (GLfloat) - 0.553717, (GLfloat) - 0.796849, (GLfloat) - 0.241721,
-       (GLfloat) - 0.830228, (GLfloat) - 0.533421, (GLfloat) - 0.161812,
-       (GLfloat) - 0.980604, (GLfloat) - 0.187558, (GLfloat) - 0.056895,
-       (GLfloat) - 0.980604, (GLfloat) 0.187558, (GLfloat) 0.056895,
-       (GLfloat) - 0.830227, (GLfloat) 0.533422, (GLfloat) 0.161812,
-       (GLfloat) - 0.553717, (GLfloat) 0.796849, (GLfloat) 0.241722,
-       (GLfloat) - 0.194186, (GLfloat) 0.938725, (GLfloat) 0.284759,
-       (GLfloat) 0.194187, (GLfloat) 0.938724, (GLfloat) 0.284759,
-       (GLfloat) 0.553716, (GLfloat) 0.796849, (GLfloat) 0.241722,
-       (GLfloat) 0.830227, (GLfloat) 0.533422, (GLfloat) 0.161812,
-       (GLfloat) 0.980604, (GLfloat) 0.187558, (GLfloat) 0.056895,
-       (GLfloat) 0.980604, (GLfloat) - 0.187558, (GLfloat) - 0.056895,
-       (GLfloat) 0.830228, (GLfloat) - 0.533421, (GLfloat) - 0.161811,
-       (GLfloat) 0.553716, (GLfloat) - 0.796850, (GLfloat) - 0.241722,
-       (GLfloat) 0.194186, (GLfloat) - 0.865134, (GLfloat) - 0.462423,
-       (GLfloat) - 0.194185, (GLfloat) - 0.865134, (GLfloat) - 0.462424,
-       (GLfloat) - 0.553717, (GLfloat) - 0.734380, (GLfloat) - 0.392534,
-       (GLfloat) - 0.830228, (GLfloat) - 0.491604, (GLfloat) - 0.262768,
-       (GLfloat) - 0.980604, (GLfloat) - 0.172854, (GLfloat) - 0.092393,
-       (GLfloat) - 0.980604, (GLfloat) 0.172854, (GLfloat) 0.092393,
-       (GLfloat) - 0.830227, (GLfloat) 0.491605, (GLfloat) 0.262768,
-       (GLfloat) - 0.553717, (GLfloat) 0.734380, (GLfloat) 0.392534,
-       (GLfloat) - 0.194187, (GLfloat) 0.865134, (GLfloat) 0.462424,
-       (GLfloat) 0.194187, (GLfloat) 0.865134, (GLfloat) 0.462423,
-       (GLfloat) 0.553716, (GLfloat) 0.734381, (GLfloat) 0.392534,
-       (GLfloat) 0.830227, (GLfloat) 0.491605, (GLfloat) 0.262768,
-       (GLfloat) 0.980604, (GLfloat) 0.172854, (GLfloat) 0.092393,
-       (GLfloat) 0.980604, (GLfloat) - 0.172854, (GLfloat) - 0.092393,
-       (GLfloat) 0.830228, (GLfloat) - 0.491604, (GLfloat) - 0.262768,
-       (GLfloat) 0.553716, (GLfloat) - 0.734381, (GLfloat) - 0.392535,
-       (GLfloat) 0.194186, (GLfloat) - 0.758296, (GLfloat) - 0.622317,
-       (GLfloat) - 0.194186, (GLfloat) - 0.758296, (GLfloat) - 0.622318,
-       (GLfloat) - 0.553717, (GLfloat) - 0.643690, (GLfloat) - 0.528263,
-       (GLfloat) - 0.830228, (GLfloat) - 0.430895, (GLfloat) - 0.353626,
-       (GLfloat) - 0.980604, (GLfloat) - 0.151508, (GLfloat) - 0.124340,
-       (GLfloat) - 0.980604, (GLfloat) 0.151508, (GLfloat) 0.124339,
-       (GLfloat) - 0.830227, (GLfloat) 0.430895, (GLfloat) 0.353627,
-       (GLfloat) - 0.553717, (GLfloat) 0.643690, (GLfloat) 0.528263,
-       (GLfloat) - 0.194186, (GLfloat) 0.758296, (GLfloat) 0.622317,
-       (GLfloat) 0.194186, (GLfloat) 0.758296, (GLfloat) 0.622318,
-       (GLfloat) 0.553716, (GLfloat) 0.643690, (GLfloat) 0.528263,
-       (GLfloat) 0.830227, (GLfloat) 0.430895, (GLfloat) 0.353627,
-       (GLfloat) 0.980604, (GLfloat) 0.151508, (GLfloat) 0.124339,
-       (GLfloat) 0.980604, (GLfloat) - 0.151508, (GLfloat) - 0.124340,
-       (GLfloat) 0.830228, (GLfloat) - 0.430895, (GLfloat) - 0.353626,
-       (GLfloat) 0.553716, (GLfloat) - 0.643690, (GLfloat) - 0.528263,
-       (GLfloat) 0.194186, (GLfloat) - 0.622317, (GLfloat) - 0.758296,
-       (GLfloat) - 0.194185, (GLfloat) - 0.622318, (GLfloat) - 0.758296,
-       (GLfloat) - 0.553717, (GLfloat) - 0.528263, (GLfloat) - 0.643690,
-       (GLfloat) - 0.830228, (GLfloat) - 0.353626, (GLfloat) - 0.430895,
-       (GLfloat) - 0.980604, (GLfloat) - 0.124339, (GLfloat) - 0.151508,
-       (GLfloat) - 0.980604, (GLfloat) 0.124339, (GLfloat) 0.151508,
-       (GLfloat) - 0.830227, (GLfloat) 0.353627, (GLfloat) 0.430895,
-       (GLfloat) - 0.553717, (GLfloat) 0.528262, (GLfloat) 0.643689,
-       (GLfloat) - 0.194187, (GLfloat) 0.622317, (GLfloat) 0.758296,
-       (GLfloat) 0.194187, (GLfloat) 0.622317, (GLfloat) 0.758296,
-       (GLfloat) 0.553716, (GLfloat) 0.528263, (GLfloat) 0.643690,
-       (GLfloat) 0.830227, (GLfloat) 0.353627, (GLfloat) 0.430895,
-       (GLfloat) 0.980604, (GLfloat) 0.124339, (GLfloat) 0.151508,
-       (GLfloat) 0.980604, (GLfloat) - 0.124340, (GLfloat) - 0.151508,
-       (GLfloat) 0.830228, (GLfloat) - 0.353626, (GLfloat) - 0.430895,
-       (GLfloat) 0.553716, (GLfloat) - 0.528263, (GLfloat) - 0.643690,
-       (GLfloat) 0.194186, (GLfloat) - 0.462423, (GLfloat) - 0.865134,
-       (GLfloat) - 0.194185, (GLfloat) - 0.462424, (GLfloat) - 0.865134,
-       (GLfloat) - 0.553717, (GLfloat) - 0.392534, (GLfloat) - 0.734380,
-       (GLfloat) - 0.830228, (GLfloat) - 0.262768, (GLfloat) - 0.491604,
-       (GLfloat) - 0.980604, (GLfloat) - 0.092393, (GLfloat) - 0.172855,
-       (GLfloat) - 0.980604, (GLfloat) 0.092393, (GLfloat) 0.172854,
-       (GLfloat) - 0.830227, (GLfloat) 0.262768, (GLfloat) 0.491605,
-       (GLfloat) - 0.553717, (GLfloat) 0.392534, (GLfloat) 0.734380,
-       (GLfloat) - 0.194186, (GLfloat) 0.462424, (GLfloat) 0.865134,
-       (GLfloat) 0.194187, (GLfloat) 0.462423, (GLfloat) 0.865134,
-       (GLfloat) 0.553716, (GLfloat) 0.392535, (GLfloat) 0.734381,
-       (GLfloat) 0.830228, (GLfloat) 0.262768, (GLfloat) 0.491605,
-       (GLfloat) 0.980604, (GLfloat) 0.092393, (GLfloat) 0.172854,
-       (GLfloat) 0.980604, (GLfloat) - 0.092393, (GLfloat) - 0.172855,
-       (GLfloat) 0.830228, (GLfloat) - 0.262768, (GLfloat) - 0.491604,
-       (GLfloat) 0.553716, (GLfloat) - 0.392535, (GLfloat) - 0.734381,
-       (GLfloat) 0.194185, (GLfloat) - 0.284759, (GLfloat) - 0.938725,
-       (GLfloat) - 0.194185, (GLfloat) - 0.284759, (GLfloat) - 0.938725,
-       (GLfloat) - 0.553718, (GLfloat) - 0.241721, (GLfloat) - 0.796848,
-       (GLfloat) - 0.830228, (GLfloat) - 0.161812, (GLfloat) - 0.533422,
-       (GLfloat) - 0.980604, (GLfloat) - 0.056895, (GLfloat) - 0.187558,
-       (GLfloat) - 0.980605, (GLfloat) 0.056895, (GLfloat) 0.187557,
-       (GLfloat) - 0.830227, (GLfloat) 0.161812, (GLfloat) 0.533422,
-       (GLfloat) - 0.553716, (GLfloat) 0.241722, (GLfloat) 0.796849,
-       (GLfloat) - 0.194187, (GLfloat) 0.284759, (GLfloat) 0.938725,
-       (GLfloat) 0.194188, (GLfloat) 0.284759, (GLfloat) 0.938724,
-       (GLfloat) 0.553716, (GLfloat) 0.241722, (GLfloat) 0.796850,
-       (GLfloat) 0.830227, (GLfloat) 0.161812, (GLfloat) 0.533423,
-       (GLfloat) 0.980604, (GLfloat) 0.056895, (GLfloat) 0.187557,
-       (GLfloat) 0.980604, (GLfloat) - 0.056895, (GLfloat) - 0.187558,
-       (GLfloat) 0.830228, (GLfloat) - 0.161812, (GLfloat) - 0.533422,
-       (GLfloat) 0.553717, (GLfloat) - 0.241722, (GLfloat) - 0.796849,
-       (GLfloat) 0.194186, (GLfloat) - 0.096151, (GLfloat) - 0.976241,
-       (GLfloat) - 0.194186, (GLfloat) - 0.096151, (GLfloat) - 0.976241,
-       (GLfloat) - 0.553717, (GLfloat) - 0.081619, (GLfloat) - 0.828695,
-       (GLfloat) - 0.830228, (GLfloat) - 0.054637, (GLfloat) - 0.554740,
-       (GLfloat) - 0.980604, (GLfloat) - 0.019211, (GLfloat) - 0.195054,
-       (GLfloat) - 0.980604, (GLfloat) 0.019211, (GLfloat) 0.195054,
-       (GLfloat) - 0.830227, (GLfloat) 0.054637, (GLfloat) 0.554741,
-       (GLfloat) - 0.553717, (GLfloat) 0.081619, (GLfloat) 0.828695,
-       (GLfloat) - 0.194187, (GLfloat) 0.096151, (GLfloat) 0.976241,
-       (GLfloat) 0.194187, (GLfloat) 0.096151, (GLfloat) 0.976241,
-       (GLfloat) 0.553716, (GLfloat) 0.081620, (GLfloat) 0.828696,
-       (GLfloat) 0.830227, (GLfloat) 0.054637, (GLfloat) 0.554741,
-       (GLfloat) 0.980604, (GLfloat) 0.019211, (GLfloat) 0.195054,
-       (GLfloat) 0.980604, (GLfloat) - 0.019211, (GLfloat) - 0.195054,
-       (GLfloat) 0.830228, (GLfloat) - 0.054637, (GLfloat) - 0.554740,
-       (GLfloat) 0.553716, (GLfloat) - 0.081619, (GLfloat) - 0.828696,
-       (GLfloat) 0.194185, (GLfloat) 0.096151, (GLfloat) - 0.976241,
-       (GLfloat) - 0.194185, (GLfloat) 0.096151, (GLfloat) - 0.976241,
-       (GLfloat) - 0.553718, (GLfloat) 0.081619, (GLfloat) - 0.828695,
-       (GLfloat) - 0.830228, (GLfloat) 0.054637, (GLfloat) - 0.554740,
-       (GLfloat) - 0.980604, (GLfloat) 0.019211, (GLfloat) - 0.195054,
-       (GLfloat) - 0.980605, (GLfloat) - 0.019211, (GLfloat) 0.195053,
-       (GLfloat) - 0.830227, (GLfloat) - 0.054637, (GLfloat) 0.554741,
-       (GLfloat) - 0.553717, (GLfloat) - 0.081619, (GLfloat) 0.828695,
-       (GLfloat) - 0.194187, (GLfloat) - 0.096151, (GLfloat) 0.976241,
-       (GLfloat) 0.194188, (GLfloat) - 0.096151, (GLfloat) 0.976241,
-       (GLfloat) 0.553716, (GLfloat) - 0.081619, (GLfloat) 0.828696,
-       (GLfloat) 0.830227, (GLfloat) - 0.054637, (GLfloat) 0.554741,
-       (GLfloat) 0.980604, (GLfloat) - 0.019211, (GLfloat) 0.195053,
-       (GLfloat) 0.980604, (GLfloat) 0.019211, (GLfloat) - 0.195054,
-       (GLfloat) 0.830228, (GLfloat) 0.054637, (GLfloat) - 0.554740,
-       (GLfloat) 0.553717, (GLfloat) 0.081619, (GLfloat) - 0.828695,
-       (GLfloat) 0.194186, (GLfloat) 0.284759, (GLfloat) - 0.938725,
-       (GLfloat) - 0.194185, (GLfloat) 0.284759, (GLfloat) - 0.938725,
-       (GLfloat) - 0.553717, (GLfloat) 0.241721, (GLfloat) - 0.796849,
-       (GLfloat) - 0.830228, (GLfloat) 0.161812, (GLfloat) - 0.533421,
-       (GLfloat) - 0.980604, (GLfloat) 0.056895, (GLfloat) - 0.187558,
-       (GLfloat) - 0.980604, (GLfloat) - 0.056895, (GLfloat) 0.187558,
-       (GLfloat) - 0.830227, (GLfloat) - 0.161812, (GLfloat) 0.533422,
-       (GLfloat) - 0.553717, (GLfloat) - 0.241722, (GLfloat) 0.796849,
-       (GLfloat) - 0.194186, (GLfloat) - 0.284759, (GLfloat) 0.938725,
-       (GLfloat) 0.194187, (GLfloat) - 0.284759, (GLfloat) 0.938724,
-       (GLfloat) 0.553716, (GLfloat) - 0.241722, (GLfloat) 0.796849,
-       (GLfloat) 0.830227, (GLfloat) - 0.161812, (GLfloat) 0.533422,
-       (GLfloat) 0.980604, (GLfloat) - 0.056895, (GLfloat) 0.187558,
-       (GLfloat) 0.980604, (GLfloat) 0.056895, (GLfloat) - 0.187558,
-       (GLfloat) 0.830228, (GLfloat) 0.161811, (GLfloat) - 0.533421,
-       (GLfloat) 0.553716, (GLfloat) 0.241722, (GLfloat) - 0.796850,
-       (GLfloat) 0.194186, (GLfloat) 0.462423, (GLfloat) - 0.865134,
-       (GLfloat) - 0.194185, (GLfloat) 0.462424, (GLfloat) - 0.865134,
-       (GLfloat) - 0.553717, (GLfloat) 0.392534, (GLfloat) - 0.734380,
-       (GLfloat) - 0.830228, (GLfloat) 0.262768, (GLfloat) - 0.491604,
-       (GLfloat) - 0.980604, (GLfloat) 0.092393, (GLfloat) - 0.172854,
-       (GLfloat) - 0.980604, (GLfloat) - 0.092393, (GLfloat) 0.172854,
-       (GLfloat) - 0.830227, (GLfloat) - 0.262768, (GLfloat) 0.491605,
-       (GLfloat) - 0.553717, (GLfloat) - 0.392534, (GLfloat) 0.734380,
-       (GLfloat) - 0.194187, (GLfloat) - 0.462424, (GLfloat) 0.865134,
-       (GLfloat) 0.194187, (GLfloat) - 0.462423, (GLfloat) 0.865134,
-       (GLfloat) 0.553716, (GLfloat) - 0.392534, (GLfloat) 0.734381,
-       (GLfloat) 0.830227, (GLfloat) - 0.262768, (GLfloat) 0.491605,
-       (GLfloat) 0.980604, (GLfloat) - 0.092393, (GLfloat) 0.172854,
-       (GLfloat) 0.980604, (GLfloat) 0.092393, (GLfloat) - 0.172854,
-       (GLfloat) 0.830228, (GLfloat) 0.262768, (GLfloat) - 0.491604,
-       (GLfloat) 0.553716, (GLfloat) 0.392535, (GLfloat) - 0.734381,
-       (GLfloat) 0.194186, (GLfloat) 0.622317, (GLfloat) - 0.758296,
-       (GLfloat) - 0.194186, (GLfloat) 0.622318, (GLfloat) - 0.758296,
-       (GLfloat) - 0.553717, (GLfloat) 0.528263, (GLfloat) - 0.643690,
-       (GLfloat) - 0.830228, (GLfloat) 0.353626, (GLfloat) - 0.430895,
-       (GLfloat) - 0.980604, (GLfloat) 0.124340, (GLfloat) - 0.151508,
-       (GLfloat) - 0.980604, (GLfloat) - 0.124339, (GLfloat) 0.151508,
-       (GLfloat) - 0.830227, (GLfloat) - 0.353627, (GLfloat) 0.430895,
-       (GLfloat) - 0.553717, (GLfloat) - 0.528263, (GLfloat) 0.643690,
-       (GLfloat) - 0.194186, (GLfloat) - 0.622317, (GLfloat) 0.758296,
-       (GLfloat) 0.194186, (GLfloat) - 0.622318, (GLfloat) 0.758296,
-       (GLfloat) 0.553716, (GLfloat) - 0.528263, (GLfloat) 0.643690,
-       (GLfloat) 0.830227, (GLfloat) - 0.353627, (GLfloat) 0.430895,
-       (GLfloat) 0.980604, (GLfloat) - 0.124339, (GLfloat) 0.151508,
-       (GLfloat) 0.980604, (GLfloat) 0.124340, (GLfloat) - 0.151508,
-       (GLfloat) 0.830228, (GLfloat) 0.353626, (GLfloat) - 0.430895,
-       (GLfloat) 0.553716, (GLfloat) 0.528263, (GLfloat) - 0.643690,
-       (GLfloat) 0.194186, (GLfloat) 0.758296, (GLfloat) - 0.622317,
-       (GLfloat) - 0.194185, (GLfloat) 0.758296, (GLfloat) - 0.622318,
-       (GLfloat) - 0.553717, (GLfloat) 0.643690, (GLfloat) - 0.528263,
-       (GLfloat) - 0.830228, (GLfloat) 0.430895, (GLfloat) - 0.353626,
-       (GLfloat) - 0.980604, (GLfloat) 0.151508, (GLfloat) - 0.124339,
-       (GLfloat) - 0.980604, (GLfloat) - 0.151508, (GLfloat) 0.124339,
-       (GLfloat) - 0.830227, (GLfloat) - 0.430895, (GLfloat) 0.353627,
-       (GLfloat) - 0.553717, (GLfloat) - 0.643689, (GLfloat) 0.528262,
-       (GLfloat) - 0.194187, (GLfloat) - 0.758296, (GLfloat) 0.622317,
-       (GLfloat) 0.194187, (GLfloat) - 0.758296, (GLfloat) 0.622317,
-       (GLfloat) 0.553716, (GLfloat) - 0.643690, (GLfloat) 0.528263,
-       (GLfloat) 0.830227, (GLfloat) - 0.430895, (GLfloat) 0.353627,
-       (GLfloat) 0.980604, (GLfloat) - 0.151508, (GLfloat) 0.124339,
-       (GLfloat) 0.980604, (GLfloat) 0.151508, (GLfloat) - 0.124340,
-       (GLfloat) 0.830228, (GLfloat) 0.430895, (GLfloat) - 0.353626,
-       (GLfloat) 0.553716, (GLfloat) 0.643690, (GLfloat) - 0.528263,
-       (GLfloat) 0.194186, (GLfloat) 0.865134, (GLfloat) - 0.462423,
-       (GLfloat) - 0.194185, (GLfloat) 0.865134, (GLfloat) - 0.462424,
-       (GLfloat) - 0.553717, (GLfloat) 0.734380, (GLfloat) - 0.392534,
-       (GLfloat) - 0.830228, (GLfloat) 0.491604, (GLfloat) - 0.262768,
-       (GLfloat) - 0.980604, (GLfloat) 0.172855, (GLfloat) - 0.092393,
-       (GLfloat) - 0.980604, (GLfloat) - 0.172854, (GLfloat) 0.092393,
-       (GLfloat) - 0.830227, (GLfloat) - 0.491605, (GLfloat) 0.262768,
-       (GLfloat) - 0.553717, (GLfloat) - 0.734380, (GLfloat) 0.392534,
-       (GLfloat) - 0.194186, (GLfloat) - 0.865134, (GLfloat) 0.462424,
-       (GLfloat) 0.194187, (GLfloat) - 0.865134, (GLfloat) 0.462423,
-       (GLfloat) 0.553716, (GLfloat) - 0.734381, (GLfloat) 0.392535,
-       (GLfloat) 0.830228, (GLfloat) - 0.491605, (GLfloat) 0.262768,
-       (GLfloat) 0.980604, (GLfloat) - 0.172854, (GLfloat) 0.092393,
-       (GLfloat) 0.980604, (GLfloat) 0.172855, (GLfloat) - 0.092393,
-       (GLfloat) 0.830228, (GLfloat) 0.491604, (GLfloat) - 0.262768,
-       (GLfloat) 0.553716, (GLfloat) 0.734381, (GLfloat) - 0.392535,
-       (GLfloat) 0.194185, (GLfloat) 0.938725, (GLfloat) - 0.284759,
-       (GLfloat) - 0.194185, (GLfloat) 0.938725, (GLfloat) - 0.284759,
-       (GLfloat) - 0.553718, (GLfloat) 0.796848, (GLfloat) - 0.241721,
-       (GLfloat) - 0.830228, (GLfloat) 0.533422, (GLfloat) - 0.161812,
-       (GLfloat) - 0.980604, (GLfloat) 0.187558, (GLfloat) - 0.056895,
-       (GLfloat) - 0.980605, (GLfloat) - 0.187557, (GLfloat) 0.056895,
-       (GLfloat) - 0.830227, (GLfloat) - 0.533422, (GLfloat) 0.161812,
-       (GLfloat) - 0.553716, (GLfloat) - 0.796849, (GLfloat) 0.241722,
-       (GLfloat) - 0.194187, (GLfloat) - 0.938725, (GLfloat) 0.284759,
-       (GLfloat) 0.194188, (GLfloat) - 0.938724, (GLfloat) 0.284759,
-       (GLfloat) 0.553716, (GLfloat) - 0.796850, (GLfloat) 0.241722,
-       (GLfloat) 0.830227, (GLfloat) - 0.533423, (GLfloat) 0.161812,
-       (GLfloat) 0.980604, (GLfloat) - 0.187557, (GLfloat) 0.056895,
-       (GLfloat) 0.980604, (GLfloat) 0.187558, (GLfloat) - 0.056895,
-       (GLfloat) 0.830228, (GLfloat) 0.533422, (GLfloat) - 0.161812,
-       (GLfloat) 0.553717, (GLfloat) 0.796849, (GLfloat) - 0.241722,
-       (GLfloat) 0.194186, (GLfloat) 0.976241, (GLfloat) - 0.096151,
-       (GLfloat) - 0.194186, (GLfloat) 0.976241, (GLfloat) - 0.096151,
-       (GLfloat) - 0.553717, (GLfloat) 0.828695, (GLfloat) - 0.081619,
-       (GLfloat) - 0.830228, (GLfloat) 0.554740, (GLfloat) - 0.054637,
-       (GLfloat) - 0.980604, (GLfloat) 0.195054, (GLfloat) - 0.019211,
-       (GLfloat) - 0.980604, (GLfloat) - 0.195054, (GLfloat) 0.019211,
-       (GLfloat) - 0.830227, (GLfloat) - 0.554741, (GLfloat) 0.054637,
-       (GLfloat) - 0.553717, (GLfloat) - 0.828695, (GLfloat) 0.081619,
-       (GLfloat) - 0.194187, (GLfloat) - 0.976241, (GLfloat) 0.096151,
-       (GLfloat) 0.194187, (GLfloat) - 0.976241, (GLfloat) 0.096151,
-       (GLfloat) 0.553716, (GLfloat) - 0.828696, (GLfloat) 0.081620,
-       (GLfloat) 0.830227, (GLfloat) - 0.554741, (GLfloat) 0.054637,
-       (GLfloat) 0.980604, (GLfloat) - 0.195054, (GLfloat) 0.019211,
-       (GLfloat) 0.980604, (GLfloat) 0.195054, (GLfloat) - 0.019211,
-       (GLfloat) 0.830228, (GLfloat) 0.554740, (GLfloat) - 0.054637,
-       (GLfloat) 0.553716, (GLfloat) 0.828696, (GLfloat) - 0.081619,
-};
-
-static unsigned short int BigValve_POLS[] =
-{
-       16, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 1, 4, 700,
-       701, 685, 684, 1, 4, 701, 702, 686, 685, 1, 4, 702, 703, 687, 686, 1, 4, 703, 704, 688,
-       687, 1, 4, 704, 705, 689, 688, 1, 4, 705, 706, 690, 689, 1, 4, 706, 707, 691, 690, 1,
-       4, 707, 708, 692, 691, 1, 4, 708, 709, 693, 692, 1, 4, 709, 710, 694, 693, 1, 4, 710,
-       711, 695, 694, 1, 4, 711, 712, 696, 695, 1, 4, 712, 713, 697, 696, 1, 4, 713, 714, 698,
-       697, 1, 4, 714, 715, 699, 698, 1, 4, 715, 700, 684, 699, 1, 16, 700, 715, 714, 713, 712,
-       711, 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, 1, 4, 668, 669, 655, 654, 1, 4, 669,
-       670, 656, 655, 1, 4, 670, 671, 657, 656, 1, 4, 671, 672, 634, 657, 1, 4, 672, 673, 658,
-       634, 1, 4, 673, 674, 659, 658, 1, 4, 674, 675, 660, 659, 1, 4, 675, 676, 661, 660, 1,
-       4, 676, 677, 662, 661, 1, 4, 677, 678, 663, 662, 1, 4, 678, 679, 664, 663, 1, 4, 679,
-       680, 564, 664, 1, 4, 680, 681, 665, 564, 1, 4, 681, 682, 666, 665, 1, 4, 682, 683, 667,
-       666, 1, 4, 683, 668, 654, 667, 1, 4, 638, 639, 624, 623, 1, 4, 639, 640, 625, 624, 1,
-       4, 640, 641, 626, 625, 1, 4, 641, 642, 603, 626, 1, 4, 642, 643, 627, 603, 1, 4, 643,
-       644, 628, 627, 1, 4, 644, 645, 629, 628, 1, 4, 645, 646, 630, 629, 1, 4, 646, 647, 631,
-       630, 1, 4, 647, 648, 632, 631, 1, 4, 648, 649, 633, 632, 1, 4, 649, 650, 634, 633, 1,
-       4, 650, 651, 635, 634, 1, 4, 651, 652, 636, 635, 1, 4, 652, 653, 637, 636, 1, 4, 653,
-       638, 623, 637, 1, 4, 607, 608, 593, 592, 1, 4, 608, 609, 594, 593, 1, 4, 609, 610, 595,
-       594, 1, 4, 610, 611, 572, 595, 1, 4, 611, 612, 596, 572, 1, 4, 612, 613, 597, 596, 1,
-       4, 613, 614, 598, 597, 1, 4, 614, 615, 599, 598, 1, 4, 615, 616, 600, 599, 1, 4, 616,
-       617, 601, 600, 1, 4, 617, 618, 602, 601, 1, 4, 618, 619, 603, 602, 1, 4, 619, 620, 604,
-       603, 1, 4, 620, 621, 605, 604, 1, 4, 621, 622, 606, 605, 1, 4, 622, 607, 592, 606, 1,
-       4, 576, 577, 561, 560, 1, 4, 577, 578, 562, 561, 1, 4, 578, 579, 563, 562, 1, 4, 579,
-       580, 564, 563, 1, 4, 580, 581, 565, 564, 1, 4, 581, 582, 566, 565, 1, 4, 582, 583, 567,
-       566, 1, 4, 583, 584, 568, 567, 1, 4, 584, 585, 569, 568, 1, 4, 585, 586, 570, 569, 1,
-       4, 586, 587, 571, 570, 1, 4, 587, 588, 572, 571, 1, 4, 588, 589, 573, 572, 1, 4, 589,
-       590, 574, 573, 1, 4, 590, 591, 575, 574, 1, 4, 591, 576, 560, 575, 1, 24, 512, 513, 514,
-       515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
-       535, 1, 4, 536, 537, 513, 512, 1, 4, 537, 538, 514, 513, 1, 4, 538, 539, 515, 514, 1,
-       4, 539, 540, 516, 515, 1, 4, 540, 541, 517, 516, 1, 4, 541, 542, 518, 517, 1, 4, 542,
-       543, 519, 518, 1, 4, 543, 544, 520, 519, 1, 4, 544, 545, 521, 520, 1, 4, 545, 546, 522,
-       521, 1, 4, 546, 547, 523, 522, 1, 4, 547, 548, 524, 523, 1, 4, 548, 549, 525, 524, 1,
-       4, 549, 550, 526, 525, 1, 4, 550, 551, 527, 526, 1, 4, 551, 552, 528, 527, 1, 4, 552,
-       553, 529, 528, 1, 4, 553, 554, 530, 529, 1, 4, 554, 555, 531, 530, 1, 4, 555, 556, 532,
-       531, 1, 4, 556, 557, 533, 532, 1, 4, 557, 558, 534, 533, 1, 4, 558, 559, 535, 534, 1,
-       4, 559, 536, 512, 535, 1, 24, 536, 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548,
-       547, 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, 1, 4, 16, 31, 15, 0, 1, 4, 31,
-    30, 14, 15, 1, 4, 30, 29, 13, 14, 1, 4, 29, 28, 12, 13, 1, 4, 28, 27, 11,
-       12, 1, 4, 27, 26, 10, 11, 1, 4, 26, 25, 9, 10, 1, 4, 25, 24, 8, 9, 1,
-       4, 24, 23, 7, 8, 1, 4, 23, 22, 6, 7, 1, 4, 22, 21, 5, 6, 1, 4, 21,
-       20, 4, 5, 1, 4, 20, 19, 3, 4, 1, 4, 19, 18, 2, 3, 1, 4, 18, 17, 1,
-       2, 1, 4, 17, 16, 0, 1, 1, 4, 32, 47, 31, 16, 1, 4, 47, 46, 30, 31, 1,
-     4, 46, 45, 29, 30, 1, 4, 45, 44, 28, 29, 1, 4, 44, 43, 27, 28, 1, 4, 43,
-    42, 26, 27, 1, 4, 42, 41, 25, 26, 1, 4, 41, 40, 24, 25, 1, 4, 40, 39, 23,
-     24, 1, 4, 39, 38, 22, 23, 1, 4, 38, 37, 21, 22, 1, 4, 37, 36, 20, 21, 1,
-     4, 36, 35, 19, 20, 1, 4, 35, 34, 18, 19, 1, 4, 34, 33, 17, 18, 1, 4, 33,
-    32, 16, 17, 1, 4, 48, 63, 47, 32, 1, 4, 63, 62, 46, 47, 1, 4, 62, 61, 45,
-     46, 1, 4, 61, 60, 44, 45, 1, 4, 60, 59, 43, 44, 1, 4, 59, 58, 42, 43, 1,
-     4, 58, 57, 41, 42, 1, 4, 57, 56, 40, 41, 1, 4, 56, 55, 39, 40, 1, 4, 55,
-    54, 38, 39, 1, 4, 54, 53, 37, 38, 1, 4, 53, 52, 36, 37, 1, 4, 52, 51, 35,
-     36, 1, 4, 51, 50, 34, 35, 1, 4, 50, 49, 33, 34, 1, 4, 49, 48, 32, 33, 1,
-     4, 64, 79, 63, 48, 1, 4, 79, 78, 62, 63, 1, 4, 78, 77, 61, 62, 1, 4, 77,
-    76, 60, 61, 1, 4, 76, 75, 59, 60, 1, 4, 75, 74, 58, 59, 1, 4, 74, 73, 57,
-     58, 1, 4, 73, 72, 56, 57, 1, 4, 72, 71, 55, 56, 1, 4, 71, 70, 54, 55, 1,
-     4, 70, 69, 53, 54, 1, 4, 69, 68, 52, 53, 1, 4, 68, 67, 51, 52, 1, 4, 67,
-    66, 50, 51, 1, 4, 66, 65, 49, 50, 1, 4, 65, 64, 48, 49, 1, 4, 80, 95, 79,
-     64, 1, 4, 95, 94, 78, 79, 1, 4, 94, 93, 77, 78, 1, 4, 93, 92, 76, 77, 1,
-     4, 92, 91, 75, 76, 1, 4, 91, 90, 74, 75, 1, 4, 90, 89, 73, 74, 1, 4, 89,
-    88, 72, 73, 1, 4, 88, 87, 71, 72, 1, 4, 87, 86, 70, 71, 1, 4, 86, 85, 69,
-     70, 1, 4, 85, 84, 68, 69, 1, 4, 84, 83, 67, 68, 1, 4, 83, 82, 66, 67, 1,
-   4, 82, 81, 65, 66, 1, 4, 81, 80, 64, 65, 1, 4, 96, 111, 95, 80, 1, 4, 111,
-       110, 94, 95, 1, 4, 110, 109, 93, 94, 1, 4, 109, 108, 92, 93, 1, 4, 108, 107, 91,
-92, 1, 4, 107, 106, 90, 91, 1, 4, 106, 105, 89, 90, 1, 4, 105, 104, 88, 89, 1,
-       4, 104, 103, 87, 88, 1, 4, 103, 102, 86, 87, 1, 4, 102, 101, 85, 86, 1, 4, 101,
-  100, 84, 85, 1, 4, 100, 99, 83, 84, 1, 4, 99, 98, 82, 83, 1, 4, 98, 97, 81,
-       82, 1, 4, 97, 96, 80, 81, 1, 4, 112, 127, 111, 96, 1, 4, 127, 126, 110, 111, 1,
-       4, 126, 125, 109, 110, 1, 4, 125, 124, 108, 109, 1, 4, 124, 123, 107, 108, 1, 4, 123,
-       122, 106, 107, 1, 4, 122, 121, 105, 106, 1, 4, 121, 120, 104, 105, 1, 4, 120, 119, 103,
-       104, 1, 4, 119, 118, 102, 103, 1, 4, 118, 117, 101, 102, 1, 4, 117, 116, 100, 101, 1,
-       4, 116, 115, 99, 100, 1, 4, 115, 114, 98, 99, 1, 4, 114, 113, 97, 98, 1, 4, 113,
-       112, 96, 97, 1, 4, 128, 143, 127, 112, 1, 4, 143, 142, 126, 127, 1, 4, 142, 141, 125,
-       126, 1, 4, 141, 140, 124, 125, 1, 4, 140, 139, 123, 124, 1, 4, 139, 138, 122, 123, 1,
-       4, 138, 137, 121, 122, 1, 4, 137, 136, 120, 121, 1, 4, 136, 135, 119, 120, 1, 4, 135,
-       134, 118, 119, 1, 4, 134, 133, 117, 118, 1, 4, 133, 132, 116, 117, 1, 4, 132, 131, 115,
-       116, 1, 4, 131, 130, 114, 115, 1, 4, 130, 129, 113, 114, 1, 4, 129, 128, 112, 113, 1,
-       4, 144, 159, 143, 128, 1, 4, 159, 158, 142, 143, 1, 4, 158, 157, 141, 142, 1, 4, 157,
-       156, 140, 141, 1, 4, 156, 155, 139, 140, 1, 4, 155, 154, 138, 139, 1, 4, 154, 153, 137,
-       138, 1, 4, 153, 152, 136, 137, 1, 4, 152, 151, 135, 136, 1, 4, 151, 150, 134, 135, 1,
-       4, 150, 149, 133, 134, 1, 4, 149, 148, 132, 133, 1, 4, 148, 147, 131, 132, 1, 4, 147,
-       146, 130, 131, 1, 4, 146, 145, 129, 130, 1, 4, 145, 144, 128, 129, 1, 4, 160, 175, 159,
-       144, 1, 4, 175, 174, 158, 159, 1, 4, 174, 173, 157, 158, 1, 4, 173, 172, 156, 157, 1,
-       4, 172, 171, 155, 156, 1, 4, 171, 170, 154, 155, 1, 4, 170, 169, 153, 154, 1, 4, 169,
-       168, 152, 153, 1, 4, 168, 167, 151, 152, 1, 4, 167, 166, 150, 151, 1, 4, 166, 165, 149,
-       150, 1, 4, 165, 164, 148, 149, 1, 4, 164, 163, 147, 148, 1, 4, 163, 162, 146, 147, 1,
-       4, 162, 161, 145, 146, 1, 4, 161, 160, 144, 145, 1, 4, 176, 191, 175, 160, 1, 4, 191,
-       190, 174, 175, 1, 4, 190, 189, 173, 174, 1, 4, 189, 188, 172, 173, 1, 4, 188, 187, 171,
-       172, 1, 4, 187, 186, 170, 171, 1, 4, 186, 185, 169, 170, 1, 4, 185, 184, 168, 169, 1,
-       4, 184, 183, 167, 168, 1, 4, 183, 182, 166, 167, 1, 4, 182, 181, 165, 166, 1, 4, 181,
-       180, 164, 165, 1, 4, 180, 179, 163, 164, 1, 4, 179, 178, 162, 163, 1, 4, 178, 177, 161,
-       162, 1, 4, 177, 176, 160, 161, 1, 4, 192, 207, 191, 176, 1, 4, 207, 206, 190, 191, 1,
-       4, 206, 205, 189, 190, 1, 4, 205, 204, 188, 189, 1, 4, 204, 203, 187, 188, 1, 4, 203,
-       202, 186, 187, 1, 4, 202, 201, 185, 186, 1, 4, 201, 200, 184, 185, 1, 4, 200, 199, 183,
-       184, 1, 4, 199, 198, 182, 183, 1, 4, 198, 197, 181, 182, 1, 4, 197, 196, 180, 181, 1,
-       4, 196, 195, 179, 180, 1, 4, 195, 194, 178, 179, 1, 4, 194, 193, 177, 178, 1, 4, 193,
-       192, 176, 177, 1, 4, 208, 223, 207, 192, 1, 4, 223, 222, 206, 207, 1, 4, 222, 221, 205,
-       206, 1, 4, 221, 220, 204, 205, 1, 4, 220, 219, 203, 204, 1, 4, 219, 218, 202, 203, 1,
-       4, 218, 217, 201, 202, 1, 4, 217, 216, 200, 201, 1, 4, 216, 215, 199, 200, 1, 4, 215,
-       214, 198, 199, 1, 4, 214, 213, 197, 198, 1, 4, 213, 212, 196, 197, 1, 4, 212, 211, 195,
-       196, 1, 4, 211, 210, 194, 195, 1, 4, 210, 209, 193, 194, 1, 4, 209, 208, 192, 193, 1,
-       4, 224, 239, 223, 208, 1, 4, 239, 238, 222, 223, 1, 4, 238, 237, 221, 222, 1, 4, 237,
-       236, 220, 221, 1, 4, 236, 235, 219, 220, 1, 4, 235, 234, 218, 219, 1, 4, 234, 233, 217,
-       218, 1, 4, 233, 232, 216, 217, 1, 4, 232, 231, 215, 216, 1, 4, 231, 230, 214, 215, 1,
-       4, 230, 229, 213, 214, 1, 4, 229, 228, 212, 213, 1, 4, 228, 227, 211, 212, 1, 4, 227,
-       226, 210, 211, 1, 4, 226, 225, 209, 210, 1, 4, 225, 224, 208, 209, 1, 4, 240, 255, 239,
-       224, 1, 4, 255, 254, 238, 239, 1, 4, 254, 253, 237, 238, 1, 4, 253, 252, 236, 237, 1,
-       4, 252, 251, 235, 236, 1, 4, 251, 250, 234, 235, 1, 4, 250, 249, 233, 234, 1, 4, 249,
-       248, 232, 233, 1, 4, 248, 247, 231, 232, 1, 4, 247, 246, 230, 231, 1, 4, 246, 245, 229,
-       230, 1, 4, 245, 244, 228, 229, 1, 4, 244, 243, 227, 228, 1, 4, 243, 242, 226, 227, 1,
-       4, 242, 241, 225, 226, 1, 4, 241, 240, 224, 225, 1, 4, 256, 271, 255, 240, 1, 4, 271,
-       270, 254, 255, 1, 4, 270, 269, 253, 254, 1, 4, 269, 268, 252, 253, 1, 4, 268, 267, 251,
-       252, 1, 4, 267, 266, 250, 251, 1, 4, 266, 265, 249, 250, 1, 4, 265, 264, 248, 249, 1,
-       4, 264, 263, 247, 248, 1, 4, 263, 262, 246, 247, 1, 4, 262, 261, 245, 246, 1, 4, 261,
-       260, 244, 245, 1, 4, 260, 259, 243, 244, 1, 4, 259, 258, 242, 243, 1, 4, 258, 257, 241,
-       242, 1, 4, 257, 256, 240, 241, 1, 4, 272, 287, 271, 256, 1, 4, 287, 286, 270, 271, 1,
-       4, 286, 285, 269, 270, 1, 4, 285, 284, 268, 269, 1, 4, 284, 283, 267, 268, 1, 4, 283,
-       282, 266, 267, 1, 4, 282, 281, 265, 266, 1, 4, 281, 280, 264, 265, 1, 4, 280, 279, 263,
-       264, 1, 4, 279, 278, 262, 263, 1, 4, 278, 277, 261, 262, 1, 4, 277, 276, 260, 261, 1,
-       4, 276, 275, 259, 260, 1, 4, 275, 274, 258, 259, 1, 4, 274, 273, 257, 258, 1, 4, 273,
-       272, 256, 257, 1, 4, 288, 303, 287, 272, 1, 4, 303, 302, 286, 287, 1, 4, 302, 301, 285,
-       286, 1, 4, 301, 300, 284, 285, 1, 4, 300, 299, 283, 284, 1, 4, 299, 298, 282, 283, 1,
-       4, 298, 297, 281, 282, 1, 4, 297, 296, 280, 281, 1, 4, 296, 295, 279, 280, 1, 4, 295,
-       294, 278, 279, 1, 4, 294, 293, 277, 278, 1, 4, 293, 292, 276, 277, 1, 4, 292, 291, 275,
-       276, 1, 4, 291, 290, 274, 275, 1, 4, 290, 289, 273, 274, 1, 4, 289, 288, 272, 273, 1,
-       4, 304, 319, 303, 288, 1, 4, 319, 318, 302, 303, 1, 4, 318, 317, 301, 302, 1, 4, 317,
-       316, 300, 301, 1, 4, 316, 315, 299, 300, 1, 4, 315, 314, 298, 299, 1, 4, 314, 313, 297,
-       298, 1, 4, 313, 312, 296, 297, 1, 4, 312, 311, 295, 296, 1, 4, 311, 310, 294, 295, 1,
-       4, 310, 309, 293, 294, 1, 4, 309, 308, 292, 293, 1, 4, 308, 307, 291, 292, 1, 4, 307,
-       306, 290, 291, 1, 4, 306, 305, 289, 290, 1, 4, 305, 304, 288, 289, 1, 4, 320, 335, 319,
-       304, 1, 4, 335, 334, 318, 319, 1, 4, 334, 333, 317, 318, 1, 4, 333, 332, 316, 317, 1,
-       4, 332, 331, 315, 316, 1, 4, 331, 330, 314, 315, 1, 4, 330, 329, 313, 314, 1, 4, 329,
-       328, 312, 313, 1, 4, 328, 327, 311, 312, 1, 4, 327, 326, 310, 311, 1, 4, 326, 325, 309,
-       310, 1, 4, 325, 324, 308, 309, 1, 4, 324, 323, 307, 308, 1, 4, 323, 322, 306, 307, 1,
-       4, 322, 321, 305, 306, 1, 4, 321, 320, 304, 305, 1, 4, 336, 351, 335, 320, 1, 4, 351,
-       350, 334, 335, 1, 4, 350, 349, 333, 334, 1, 4, 349, 348, 332, 333, 1, 4, 348, 347, 331,
-       332, 1, 4, 347, 346, 330, 331, 1, 4, 346, 345, 329, 330, 1, 4, 345, 344, 328, 329, 1,
-       4, 344, 343, 327, 328, 1, 4, 343, 342, 326, 327, 1, 4, 342, 341, 325, 326, 1, 4, 341,
-       340, 324, 325, 1, 4, 340, 339, 323, 324, 1, 4, 339, 338, 322, 323, 1, 4, 338, 337, 321,
-       322, 1, 4, 337, 336, 320, 321, 1, 4, 352, 367, 351, 336, 1, 4, 367, 366, 350, 351, 1,
-       4, 366, 365, 349, 350, 1, 4, 365, 364, 348, 349, 1, 4, 364, 363, 347, 348, 1, 4, 363,
-       362, 346, 347, 1, 4, 362, 361, 345, 346, 1, 4, 361, 360, 344, 345, 1, 4, 360, 359, 343,
-       344, 1, 4, 359, 358, 342, 343, 1, 4, 358, 357, 341, 342, 1, 4, 357, 356, 340, 341, 1,
-       4, 356, 355, 339, 340, 1, 4, 355, 354, 338, 339, 1, 4, 354, 353, 337, 338, 1, 4, 353,
-       352, 336, 337, 1, 4, 368, 383, 367, 352, 1, 4, 383, 382, 366, 367, 1, 4, 382, 381, 365,
-       366, 1, 4, 381, 380, 364, 365, 1, 4, 380, 379, 363, 364, 1, 4, 379, 378, 362, 363, 1,
-       4, 378, 377, 361, 362, 1, 4, 377, 376, 360, 361, 1, 4, 376, 375, 359, 360, 1, 4, 375,
-       374, 358, 359, 1, 4, 374, 373, 357, 358, 1, 4, 373, 372, 356, 357, 1, 4, 372, 371, 355,
-       356, 1, 4, 371, 370, 354, 355, 1, 4, 370, 369, 353, 354, 1, 4, 369, 368, 352, 353, 1,
-       4, 384, 399, 383, 368, 1, 4, 399, 398, 382, 383, 1, 4, 398, 397, 381, 382, 1, 4, 397,
-       396, 380, 381, 1, 4, 396, 395, 379, 380, 1, 4, 395, 394, 378, 379, 1, 4, 394, 393, 377,
-       378, 1, 4, 393, 392, 376, 377, 1, 4, 392, 391, 375, 376, 1, 4, 391, 390, 374, 375, 1,
-       4, 390, 389, 373, 374, 1, 4, 389, 388, 372, 373, 1, 4, 388, 387, 371, 372, 1, 4, 387,
-       386, 370, 371, 1, 4, 386, 385, 369, 370, 1, 4, 385, 384, 368, 369, 1, 4, 400, 415, 399,
-       384, 1, 4, 415, 414, 398, 399, 1, 4, 414, 413, 397, 398, 1, 4, 413, 412, 396, 397, 1,
-       4, 412, 411, 395, 396, 1, 4, 411, 410, 394, 395, 1, 4, 410, 409, 393, 394, 1, 4, 409,
-       408, 392, 393, 1, 4, 408, 407, 391, 392, 1, 4, 407, 406, 390, 391, 1, 4, 406, 405, 389,
-       390, 1, 4, 405, 404, 388, 389, 1, 4, 404, 403, 387, 388, 1, 4, 403, 402, 386, 387, 1,
-       4, 402, 401, 385, 386, 1, 4, 401, 400, 384, 385, 1, 4, 416, 431, 415, 400, 1, 4, 431,
-       430, 414, 415, 1, 4, 430, 429, 413, 414, 1, 4, 429, 428, 412, 413, 1, 4, 428, 427, 411,
-       412, 1, 4, 427, 426, 410, 411, 1, 4, 426, 425, 409, 410, 1, 4, 425, 424, 408, 409, 1,
-       4, 424, 423, 407, 408, 1, 4, 423, 422, 406, 407, 1, 4, 422, 421, 405, 406, 1, 4, 421,
-       420, 404, 405, 1, 4, 420, 419, 403, 404, 1, 4, 419, 418, 402, 403, 1, 4, 418, 417, 401,
-       402, 1, 4, 417, 416, 400, 401, 1, 4, 432, 447, 431, 416, 1, 4, 447, 446, 430, 431, 1,
-       4, 446, 445, 429, 430, 1, 4, 445, 444, 428, 429, 1, 4, 444, 443, 427, 428, 1, 4, 443,
-       442, 426, 427, 1, 4, 442, 441, 425, 426, 1, 4, 441, 440, 424, 425, 1, 4, 440, 439, 423,
-       424, 1, 4, 439, 438, 422, 423, 1, 4, 438, 437, 421, 422, 1, 4, 437, 436, 420, 421, 1,
-       4, 436, 435, 419, 420, 1, 4, 435, 434, 418, 419, 1, 4, 434, 433, 417, 418, 1, 4, 433,
-       432, 416, 417, 1, 4, 448, 463, 447, 432, 1, 4, 463, 462, 446, 447, 1, 4, 462, 461, 445,
-       446, 1, 4, 461, 460, 444, 445, 1, 4, 460, 459, 443, 444, 1, 4, 459, 458, 442, 443, 1,
-       4, 458, 457, 441, 442, 1, 4, 457, 456, 440, 441, 1, 4, 456, 455, 439, 440, 1, 4, 455,
-       454, 438, 439, 1, 4, 454, 453, 437, 438, 1, 4, 453, 452, 436, 437, 1, 4, 452, 451, 435,
-       436, 1, 4, 451, 450, 434, 435, 1, 4, 450, 449, 433, 434, 1, 4, 449, 448, 432, 433, 1,
-       4, 464, 479, 463, 448, 1, 4, 479, 478, 462, 463, 1, 4, 478, 477, 461, 462, 1, 4, 477,
-       476, 460, 461, 1, 4, 476, 475, 459, 460, 1, 4, 475, 474, 458, 459, 1, 4, 474, 473, 457,
-       458, 1, 4, 473, 472, 456, 457, 1, 4, 472, 471, 455, 456, 1, 4, 471, 470, 454, 455, 1,
-       4, 470, 469, 453, 454, 1, 4, 469, 468, 452, 453, 1, 4, 468, 467, 451, 452, 1, 4, 467,
-       466, 450, 451, 1, 4, 466, 465, 449, 450, 1, 4, 465, 464, 448, 449, 1, 4, 480, 495, 479,
-       464, 1, 4, 495, 494, 478, 479, 1, 4, 494, 493, 477, 478, 1, 4, 493, 492, 476, 477, 1,
-       4, 492, 491, 475, 476, 1, 4, 491, 490, 474, 475, 1, 4, 490, 489, 473, 474, 1, 4, 489,
-       488, 472, 473, 1, 4, 488, 487, 471, 472, 1, 4, 487, 486, 470, 471, 1, 4, 486, 485, 469,
-       470, 1, 4, 485, 484, 468, 469, 1, 4, 484, 483, 467, 468, 1, 4, 483, 482, 466, 467, 1,
-       4, 482, 481, 465, 466, 1, 4, 481, 480, 464, 465, 1, 4, 496, 511, 495, 480, 1, 4, 511,
-       510, 494, 495, 1, 4, 510, 509, 493, 494, 1, 4, 509, 508, 492, 493, 1, 4, 508, 507, 491,
-       492, 1, 4, 507, 506, 490, 491, 1, 4, 506, 505, 489, 490, 1, 4, 505, 504, 488, 489, 1,
-       4, 504, 503, 487, 488, 1, 4, 503, 502, 486, 487, 1, 4, 502, 501, 485, 486, 1, 4, 501,
-       500, 484, 485, 1, 4, 500, 499, 483, 484, 1, 4, 499, 498, 482, 483, 1, 4, 498, 497, 481,
-       482, 1, 4, 497, 496, 480, 481, 1, 4, 0, 15, 511, 496, 1, 4, 15, 14, 510, 511, 1,
-4, 14, 13, 509, 510, 1, 4, 13, 12, 508, 509, 1, 4, 12, 11, 507, 508, 1, 4, 11,
-  10, 506, 507, 1, 4, 10, 9, 505, 506, 1, 4, 9, 8, 504, 505, 1, 4, 8, 7, 503,
-    504, 1, 4, 7, 6, 502, 503, 1, 4, 6, 5, 501, 502, 1, 4, 5, 4, 500, 501, 1,
-      4, 4, 3, 499, 500, 1, 4, 3, 2, 498, 499, 1, 4, 2, 1, 497, 498, 1, 4, 1,
-       0, 496, 497, 1,
-       0
-};
-
-struct lwo  LWO_BigValve =
-{
-       716,                    /* number of points */
-       BigValve_PNTS, BigValve_normals, BigValve_POLS, 0L
-};
-
-static GLfloat Bolts3D_PNTS[] =
-{
-       (GLfloat) - 0.160704, (GLfloat) 0.399000, (GLfloat) 0.600000,
-       (GLfloat) - 0.160704, (GLfloat) 0.399000, (GLfloat) - 0.500000,
-       (GLfloat) - 0.400000, (GLfloat) 0.160257, (GLfloat) 0.600000,
-       (GLfloat) - 0.400000, (GLfloat) 0.160257, (GLfloat) - 0.500000,
-       (GLfloat) - 0.400000, (GLfloat) - 0.170369, (GLfloat) 0.600000,
-       (GLfloat) - 0.400000, (GLfloat) - 0.170369, (GLfloat) - 0.500000,
-       (GLfloat) - 0.153738, (GLfloat) - 0.400000, (GLfloat) 0.600000,
-       (GLfloat) - 0.153738, (GLfloat) - 0.400000, (GLfloat) - 0.500000,
-       (GLfloat) 0.176887, (GLfloat) - 0.400000, (GLfloat) 0.600000,
-       (GLfloat) 0.176887, (GLfloat) - 0.400000, (GLfloat) - 0.500000,
-       (GLfloat) 0.400000, (GLfloat) - 0.163403, (GLfloat) 0.600000,
-       (GLfloat) 0.400000, (GLfloat) - 0.163403, (GLfloat) - 0.500000,
-       (GLfloat) 0.400000, (GLfloat) 0.167223, (GLfloat) 0.600000,
-       (GLfloat) 0.400000, (GLfloat) 0.167223, (GLfloat) - 0.500000,
-       (GLfloat) 0.169922, (GLfloat) 0.399000, (GLfloat) 0.600000,
-       (GLfloat) 0.169922, (GLfloat) 0.399000, (GLfloat) - 0.500000,
-       (GLfloat) - 0.160704, (GLfloat) 0.399000, (GLfloat) 0.500000,
-       (GLfloat) - 0.160704, (GLfloat) 0.399000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.400000, (GLfloat) 0.160257, (GLfloat) - 0.600000,
-       (GLfloat) - 0.400000, (GLfloat) 0.160257, (GLfloat) 0.500000,
-       (GLfloat) - 0.400000, (GLfloat) - 0.170369, (GLfloat) - 0.600000,
-       (GLfloat) - 0.400000, (GLfloat) - 0.170369, (GLfloat) 0.500000,
-       (GLfloat) - 0.153738, (GLfloat) - 0.400000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.153738, (GLfloat) - 0.400000, (GLfloat) 0.500000,
-       (GLfloat) 0.176887, (GLfloat) - 0.400000, (GLfloat) 0.500000,
-       (GLfloat) 0.176887, (GLfloat) - 0.400000, (GLfloat) - 0.600000,
-       (GLfloat) 0.400000, (GLfloat) - 0.163403, (GLfloat) 0.500000,
-       (GLfloat) 0.400000, (GLfloat) - 0.163403, (GLfloat) - 0.600000,
-       (GLfloat) 0.400000, (GLfloat) 0.167223, (GLfloat) - 0.600000,
-       (GLfloat) 0.400000, (GLfloat) 0.167223, (GLfloat) 0.500000,
-       (GLfloat) 0.169922, (GLfloat) 0.399000, (GLfloat) - 0.600000,
-       (GLfloat) 0.169922, (GLfloat) 0.399000, (GLfloat) 0.500000,
-};
-
-static GLfloat Bolts3D_normals[] =
-{
-       (GLfloat) 0.000000, (GLfloat) 1.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.709703, (GLfloat) 0.704502, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.727535, (GLfloat) - 0.686070, (GLfloat) - 0.000000,
-       (GLfloat) 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.681980, (GLfloat) - 0.731370, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.706289, (GLfloat) 0.707924, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 1.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.709703, (GLfloat) 0.704502, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.727535, (GLfloat) - 0.686070, (GLfloat) - 0.000000,
-       (GLfloat) 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.681980, (GLfloat) - 0.731370, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.706289, (GLfloat) 0.707924, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-};
-
-static unsigned short int Bolts3D_POLS[] =
-{
-      4, 16, 31, 14, 0, 1, 4, 31, 29, 12, 14, 1, 4, 29, 26, 10, 12, 1, 4, 26,
-       24, 8, 10, 1, 4, 24, 23, 6, 8, 1, 4, 23, 21, 4, 6, 1, 4, 21, 19, 2,
-       4, 1, 4, 19, 16, 0, 2, 1, 8, 14, 12, 10, 8, 6, 4, 2, 0, 1, 4, 17,
-      30, 15, 1, 1, 4, 30, 28, 13, 15, 1, 4, 28, 27, 11, 13, 1, 4, 27, 25, 9,
-       11, 1, 4, 25, 22, 7, 9, 1, 4, 22, 20, 5, 7, 1, 4, 20, 18, 3, 5, 1,
-       4, 18, 17, 1, 3, 1, 8, 30, 17, 18, 20, 22, 25, 27, 28, 1,
-       0
-};
-
-struct lwo  LWO_Bolts3D =
-{
-       32,                     /* number of points */
-       Bolts3D_PNTS, Bolts3D_normals, Bolts3D_POLS, 0L
-};
-
-static GLfloat GuageConnector_PNTS[] =
-{
-       (GLfloat) 0.200000, (GLfloat) 0.400000, (GLfloat) - 0.000000,
-       (GLfloat) 0.200000, (GLfloat) 0.800000, (GLfloat) - 0.000000,
-       (GLfloat) 0.193185, (GLfloat) 0.400000, (GLfloat) - 0.051764,
-       (GLfloat) 0.193185, (GLfloat) 0.800000, (GLfloat) - 0.051764,
-       (GLfloat) 0.173205, (GLfloat) 0.400000, (GLfloat) - 0.100000,
-       (GLfloat) 0.173205, (GLfloat) 0.800000, (GLfloat) - 0.100000,
-       (GLfloat) 0.141421, (GLfloat) 0.800000, (GLfloat) - 0.141421,
-       (GLfloat) 0.141421, (GLfloat) 0.400000, (GLfloat) - 0.141421,
-       (GLfloat) 0.100000, (GLfloat) 0.400000, (GLfloat) - 0.173205,
-       (GLfloat) 0.100000, (GLfloat) 0.800000, (GLfloat) - 0.173205,
-       (GLfloat) 0.051764, (GLfloat) 0.800000, (GLfloat) - 0.193185,
-       (GLfloat) 0.051764, (GLfloat) 0.400000, (GLfloat) - 0.193185,
-       (GLfloat) 0.000000, (GLfloat) 0.800000, (GLfloat) - 0.200000,
-       (GLfloat) 0.000000, (GLfloat) 0.400000, (GLfloat) - 0.200000,
-       (GLfloat) - 0.051764, (GLfloat) 0.800000, (GLfloat) - 0.193185,
-       (GLfloat) - 0.051764, (GLfloat) 0.400000, (GLfloat) - 0.193185,
-       (GLfloat) - 0.100000, (GLfloat) 0.800000, (GLfloat) - 0.173205,
-       (GLfloat) - 0.100000, (GLfloat) 0.400000, (GLfloat) - 0.173205,
-       (GLfloat) - 0.141421, (GLfloat) 0.400000, (GLfloat) - 0.141421,
-       (GLfloat) - 0.141421, (GLfloat) 0.800000, (GLfloat) - 0.141421,
-       (GLfloat) - 0.173205, (GLfloat) 0.800000, (GLfloat) - 0.100000,
-       (GLfloat) - 0.173205, (GLfloat) 0.400000, (GLfloat) - 0.100000,
-       (GLfloat) - 0.193185, (GLfloat) 0.400000, (GLfloat) - 0.051764,
-       (GLfloat) - 0.193185, (GLfloat) 0.800000, (GLfloat) - 0.051764,
-       (GLfloat) - 0.200000, (GLfloat) 0.400000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.200000, (GLfloat) 0.800000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.193185, (GLfloat) 0.400000, (GLfloat) 0.051764,
-       (GLfloat) - 0.193185, (GLfloat) 0.800000, (GLfloat) 0.051764,
-       (GLfloat) - 0.173205, (GLfloat) 0.400000, (GLfloat) 0.100000,
-       (GLfloat) - 0.173205, (GLfloat) 0.800000, (GLfloat) 0.100000,
-       (GLfloat) - 0.141421, (GLfloat) 0.800000, (GLfloat) 0.141421,
-       (GLfloat) - 0.141421, (GLfloat) 0.400000, (GLfloat) 0.141421,
-       (GLfloat) - 0.100000, (GLfloat) 0.800000, (GLfloat) 0.173205,
-       (GLfloat) - 0.100000, (GLfloat) 0.400000, (GLfloat) 0.173205,
-       (GLfloat) - 0.051764, (GLfloat) 0.800000, (GLfloat) 0.193185,
-       (GLfloat) - 0.051764, (GLfloat) 0.400000, (GLfloat) 0.193185,
-       (GLfloat) - 0.000000, (GLfloat) 0.800000, (GLfloat) 0.200000,
-       (GLfloat) - 0.000000, (GLfloat) 0.400000, (GLfloat) 0.200000,
-       (GLfloat) 0.051764, (GLfloat) 0.800000, (GLfloat) 0.193185,
-       (GLfloat) 0.051764, (GLfloat) 0.400000, (GLfloat) 0.193185,
-       (GLfloat) 0.100000, (GLfloat) 0.400000, (GLfloat) 0.173205,
-       (GLfloat) 0.100000, (GLfloat) 0.800000, (GLfloat) 0.173205,
-       (GLfloat) 0.141421, (GLfloat) 0.400000, (GLfloat) 0.141421,
-       (GLfloat) 0.141421, (GLfloat) 0.800000, (GLfloat) 0.141421,
-       (GLfloat) 0.173205, (GLfloat) 0.800000, (GLfloat) 0.100000,
-       (GLfloat) 0.173205, (GLfloat) 0.400000, (GLfloat) 0.100000,
-       (GLfloat) 0.193185, (GLfloat) 0.400000, (GLfloat) 0.051764,
-       (GLfloat) 0.193185, (GLfloat) 0.800000, (GLfloat) 0.051764,
-       (GLfloat) 0.200000, (GLfloat) 0.550000, (GLfloat) - 0.000000,
-       (GLfloat) 0.193185, (GLfloat) 0.550000, (GLfloat) - 0.051764,
-       (GLfloat) 0.173205, (GLfloat) 0.550000, (GLfloat) - 0.100000,
-       (GLfloat) 0.141421, (GLfloat) 0.550000, (GLfloat) - 0.141421,
-       (GLfloat) 0.100000, (GLfloat) 0.550000, (GLfloat) - 0.173205,
-       (GLfloat) 0.051764, (GLfloat) 0.550000, (GLfloat) - 0.193185,
-       (GLfloat) 0.000000, (GLfloat) 0.550000, (GLfloat) - 0.200000,
-       (GLfloat) - 0.051764, (GLfloat) 0.550000, (GLfloat) - 0.193185,
-       (GLfloat) - 0.100000, (GLfloat) 0.550000, (GLfloat) - 0.173205,
-       (GLfloat) - 0.141421, (GLfloat) 0.550000, (GLfloat) - 0.141421,
-       (GLfloat) - 0.173205, (GLfloat) 0.550000, (GLfloat) - 0.100000,
-       (GLfloat) - 0.193185, (GLfloat) 0.550000, (GLfloat) - 0.051764,
-       (GLfloat) - 0.200000, (GLfloat) 0.550000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.193185, (GLfloat) 0.550000, (GLfloat) 0.051764,
-       (GLfloat) - 0.173205, (GLfloat) 0.550000, (GLfloat) 0.100000,
-       (GLfloat) - 0.141421, (GLfloat) 0.550000, (GLfloat) 0.141421,
-       (GLfloat) - 0.100000, (GLfloat) 0.550000, (GLfloat) 0.173205,
-       (GLfloat) - 0.051764, (GLfloat) 0.550000, (GLfloat) 0.193185,
-       (GLfloat) - 0.000000, (GLfloat) 0.550000, (GLfloat) 0.200000,
-       (GLfloat) 0.051764, (GLfloat) 0.550000, (GLfloat) 0.193185,
-       (GLfloat) 0.100000, (GLfloat) 0.550000, (GLfloat) 0.173205,
-       (GLfloat) 0.141421, (GLfloat) 0.550000, (GLfloat) 0.141421,
-       (GLfloat) 0.173205, (GLfloat) 0.550000, (GLfloat) 0.100000,
-       (GLfloat) 0.193185, (GLfloat) 0.550000, (GLfloat) 0.051764,
-       (GLfloat) 0.150000, (GLfloat) 0.550000, (GLfloat) - 0.000000,
-       (GLfloat) 0.144889, (GLfloat) 0.550000, (GLfloat) - 0.038823,
-       (GLfloat) 0.129904, (GLfloat) 0.550000, (GLfloat) - 0.075000,
-       (GLfloat) 0.106066, (GLfloat) 0.550000, (GLfloat) - 0.106066,
-       (GLfloat) 0.075000, (GLfloat) 0.550000, (GLfloat) - 0.129904,
-       (GLfloat) 0.038823, (GLfloat) 0.550000, (GLfloat) - 0.144889,
-       (GLfloat) 0.000000, (GLfloat) 0.550000, (GLfloat) - 0.150000,
-       (GLfloat) - 0.038823, (GLfloat) 0.550000, (GLfloat) - 0.144889,
-       (GLfloat) - 0.075000, (GLfloat) 0.550000, (GLfloat) - 0.129904,
-       (GLfloat) - 0.106066, (GLfloat) 0.550000, (GLfloat) - 0.106066,
-       (GLfloat) - 0.129904, (GLfloat) 0.550000, (GLfloat) - 0.075000,
-       (GLfloat) - 0.144889, (GLfloat) 0.550000, (GLfloat) - 0.038823,
-       (GLfloat) - 0.150000, (GLfloat) 0.550000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.144889, (GLfloat) 0.550000, (GLfloat) 0.038823,
-       (GLfloat) - 0.129904, (GLfloat) 0.550000, (GLfloat) 0.075000,
-       (GLfloat) - 0.106066, (GLfloat) 0.550000, (GLfloat) 0.106066,
-       (GLfloat) - 0.075000, (GLfloat) 0.550000, (GLfloat) 0.129904,
-       (GLfloat) - 0.038823, (GLfloat) 0.550000, (GLfloat) 0.144889,
-       (GLfloat) - 0.000000, (GLfloat) 0.550000, (GLfloat) 0.150000,
-       (GLfloat) 0.038823, (GLfloat) 0.550000, (GLfloat) 0.144889,
-       (GLfloat) 0.075000, (GLfloat) 0.550000, (GLfloat) 0.129904,
-       (GLfloat) 0.106066, (GLfloat) 0.550000, (GLfloat) 0.106066,
-       (GLfloat) 0.129904, (GLfloat) 0.550000, (GLfloat) 0.075000,
-       (GLfloat) 0.144889, (GLfloat) 0.550000, (GLfloat) 0.038823,
-       (GLfloat) 0.150000, (GLfloat) 0.800000, (GLfloat) - 0.000000,
-       (GLfloat) 0.144889, (GLfloat) 0.800000, (GLfloat) - 0.038823,
-       (GLfloat) 0.129904, (GLfloat) 0.800000, (GLfloat) - 0.075000,
-       (GLfloat) 0.106066, (GLfloat) 0.800000, (GLfloat) - 0.106066,
-       (GLfloat) 0.075000, (GLfloat) 0.800000, (GLfloat) - 0.129904,
-       (GLfloat) 0.038823, (GLfloat) 0.800000, (GLfloat) - 0.144889,
-       (GLfloat) 0.000000, (GLfloat) 0.800000, (GLfloat) - 0.150000,
-       (GLfloat) - 0.038823, (GLfloat) 0.800000, (GLfloat) - 0.144889,
-       (GLfloat) - 0.075000, (GLfloat) 0.800000, (GLfloat) - 0.129904,
-       (GLfloat) - 0.106066, (GLfloat) 0.800000, (GLfloat) - 0.106066,
-       (GLfloat) - 0.129904, (GLfloat) 0.800000, (GLfloat) - 0.075000,
-       (GLfloat) - 0.144889, (GLfloat) 0.800000, (GLfloat) - 0.038823,
-       (GLfloat) - 0.150000, (GLfloat) 0.800000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.144889, (GLfloat) 0.800000, (GLfloat) 0.038823,
-       (GLfloat) - 0.129904, (GLfloat) 0.800000, (GLfloat) 0.075000,
-       (GLfloat) - 0.106066, (GLfloat) 0.800000, (GLfloat) 0.106066,
-       (GLfloat) - 0.075000, (GLfloat) 0.800000, (GLfloat) 0.129904,
-       (GLfloat) - 0.038823, (GLfloat) 0.800000, (GLfloat) 0.144889,
-       (GLfloat) - 0.000000, (GLfloat) 0.800000, (GLfloat) 0.150000,
-       (GLfloat) 0.038823, (GLfloat) 0.800000, (GLfloat) 0.144889,
-       (GLfloat) 0.075000, (GLfloat) 0.800000, (GLfloat) 0.129904,
-       (GLfloat) 0.106066, (GLfloat) 0.800000, (GLfloat) 0.106066,
-       (GLfloat) 0.129904, (GLfloat) 0.800000, (GLfloat) 0.075000,
-       (GLfloat) 0.144889, (GLfloat) 0.800000, (GLfloat) 0.038823,
-       (GLfloat) 0.200000, (GLfloat) 0.875988, (GLfloat) - 0.000000,
-       (GLfloat) 0.193185, (GLfloat) 0.872346, (GLfloat) - 0.051764,
-       (GLfloat) 0.191342, (GLfloat) 0.871360, (GLfloat) - 0.056214,
-       (GLfloat) 0.173205, (GLfloat) 0.865859, (GLfloat) - 0.100000,
-       (GLfloat) 0.141421, (GLfloat) 0.856217, (GLfloat) - 0.141421,
-       (GLfloat) 0.100000, (GLfloat) 0.843652, (GLfloat) - 0.173205,
-       (GLfloat) 0.097545, (GLfloat) 0.842907, (GLfloat) - 0.174222,
-       (GLfloat) 0.051764, (GLfloat) 0.838398, (GLfloat) - 0.193185,
-       (GLfloat) 0.000000, (GLfloat) 0.833300, (GLfloat) - 0.200000,
-       (GLfloat) - 0.051764, (GLfloat) 0.838398, (GLfloat) - 0.193185,
-       (GLfloat) - 0.097545, (GLfloat) 0.842907, (GLfloat) - 0.174222,
-       (GLfloat) - 0.100000, (GLfloat) 0.843652, (GLfloat) - 0.173205,
-       (GLfloat) - 0.141421, (GLfloat) 0.856217, (GLfloat) - 0.141421,
-       (GLfloat) - 0.173205, (GLfloat) 0.865859, (GLfloat) - 0.100000,
-       (GLfloat) - 0.191342, (GLfloat) 0.871360, (GLfloat) - 0.056214,
-       (GLfloat) - 0.193185, (GLfloat) 0.872346, (GLfloat) - 0.051764,
-       (GLfloat) - 0.200000, (GLfloat) 0.875988, (GLfloat) - 0.000000,
-       (GLfloat) - 0.193185, (GLfloat) 0.872346, (GLfloat) 0.051764,
-       (GLfloat) - 0.173205, (GLfloat) 0.865859, (GLfloat) 0.100000,
-       (GLfloat) - 0.191342, (GLfloat) 0.871360, (GLfloat) 0.056214,
-       (GLfloat) - 0.141421, (GLfloat) 0.856217, (GLfloat) 0.141421,
-       (GLfloat) - 0.100000, (GLfloat) 0.843652, (GLfloat) 0.173205,
-       (GLfloat) - 0.051764, (GLfloat) 0.838398, (GLfloat) 0.193185,
-       (GLfloat) - 0.097545, (GLfloat) 0.842907, (GLfloat) 0.174222,
-       (GLfloat) - 0.000000, (GLfloat) 0.833300, (GLfloat) 0.200000,
-       (GLfloat) 0.051764, (GLfloat) 0.838398, (GLfloat) 0.193185,
-       (GLfloat) 0.100000, (GLfloat) 0.843652, (GLfloat) 0.173205,
-       (GLfloat) 0.097545, (GLfloat) 0.842907, (GLfloat) 0.174222,
-       (GLfloat) 0.141421, (GLfloat) 0.856217, (GLfloat) 0.141421,
-       (GLfloat) 0.173205, (GLfloat) 0.865859, (GLfloat) 0.100000,
-       (GLfloat) 0.193185, (GLfloat) 0.872346, (GLfloat) 0.051764,
-       (GLfloat) 0.191342, (GLfloat) 0.871360, (GLfloat) 0.056214,
-};
-
-static GLfloat GuageConnector_normals[] =
-{
-       (GLfloat) 0.991445, (GLfloat) 0.000000, (GLfloat) - 0.130526,
-       (GLfloat) 0.923880, (GLfloat) 0.000000, (GLfloat) - 0.382683,
-       (GLfloat) 0.793353, (GLfloat) 0.000000, (GLfloat) - 0.608761,
-       (GLfloat) 0.608761, (GLfloat) 0.000000, (GLfloat) - 0.793353,
-       (GLfloat) 0.382683, (GLfloat) 0.000000, (GLfloat) - 0.923880,
-       (GLfloat) 0.130526, (GLfloat) 0.000000, (GLfloat) - 0.991445,
-       (GLfloat) - 0.130526, (GLfloat) - 0.000000, (GLfloat) - 0.991445,
-       (GLfloat) - 0.382683, (GLfloat) - 0.000000, (GLfloat) - 0.923880,
-       (GLfloat) - 0.608761, (GLfloat) - 0.000000, (GLfloat) - 0.793353,
-       (GLfloat) - 0.793353, (GLfloat) - 0.000000, (GLfloat) - 0.608761,
-       (GLfloat) - 0.923880, (GLfloat) - 0.000000, (GLfloat) - 0.382683,
-       (GLfloat) - 0.991445, (GLfloat) - 0.000000, (GLfloat) - 0.130526,
-       (GLfloat) - 0.991445, (GLfloat) 0.000000, (GLfloat) 0.130526,
-       (GLfloat) - 0.923880, (GLfloat) 0.000000, (GLfloat) 0.382683,
-       (GLfloat) - 0.793353, (GLfloat) 0.000000, (GLfloat) 0.608761,
-       (GLfloat) - 0.608761, (GLfloat) 0.000000, (GLfloat) 0.793353,
-       (GLfloat) - 0.382683, (GLfloat) 0.000000, (GLfloat) 0.923880,
-       (GLfloat) - 0.130526, (GLfloat) 0.000000, (GLfloat) 0.991445,
-       (GLfloat) 0.130526, (GLfloat) 0.000000, (GLfloat) 0.991445,
-       (GLfloat) 0.382683, (GLfloat) 0.000000, (GLfloat) 0.923880,
-       (GLfloat) 0.608761, (GLfloat) 0.000000, (GLfloat) 0.793353,
-       (GLfloat) 0.793353, (GLfloat) 0.000000, (GLfloat) 0.608761,
-       (GLfloat) 0.923880, (GLfloat) 0.000000, (GLfloat) 0.382683,
-       (GLfloat) 0.991445, (GLfloat) 0.000000, (GLfloat) 0.130526,
-       (GLfloat) 0.991445, (GLfloat) 0.000000, (GLfloat) - 0.130526,
-       (GLfloat) 0.923880, (GLfloat) 0.000000, (GLfloat) - 0.382684,
-       (GLfloat) 0.793353, (GLfloat) 0.000000, (GLfloat) - 0.608761,
-       (GLfloat) 0.608761, (GLfloat) 0.000000, (GLfloat) - 0.793353,
-       (GLfloat) 0.382684, (GLfloat) 0.000000, (GLfloat) - 0.923880,
-       (GLfloat) 0.130526, (GLfloat) 0.000000, (GLfloat) - 0.991445,
-       (GLfloat) - 0.130526, (GLfloat) 0.000000, (GLfloat) - 0.991445,
-       (GLfloat) - 0.382684, (GLfloat) 0.000000, (GLfloat) - 0.923880,
-       (GLfloat) - 0.608761, (GLfloat) 0.000000, (GLfloat) - 0.793353,
-       (GLfloat) - 0.793353, (GLfloat) 0.000000, (GLfloat) - 0.608761,
-       (GLfloat) - 0.923880, (GLfloat) 0.000000, (GLfloat) - 0.382684,
-       (GLfloat) - 0.991445, (GLfloat) 0.000000, (GLfloat) - 0.130526,
-       (GLfloat) - 0.991445, (GLfloat) 0.000000, (GLfloat) 0.130526,
-       (GLfloat) - 0.923880, (GLfloat) 0.000000, (GLfloat) 0.382684,
-       (GLfloat) - 0.793353, (GLfloat) 0.000000, (GLfloat) 0.608761,
-       (GLfloat) - 0.608761, (GLfloat) 0.000000, (GLfloat) 0.793353,
-       (GLfloat) - 0.382684, (GLfloat) 0.000000, (GLfloat) 0.923880,
-       (GLfloat) - 0.130526, (GLfloat) 0.000000, (GLfloat) 0.991445,
-       (GLfloat) 0.130526, (GLfloat) - 0.000000, (GLfloat) 0.991445,
-       (GLfloat) 0.382684, (GLfloat) - 0.000000, (GLfloat) 0.923880,
-       (GLfloat) 0.608761, (GLfloat) - 0.000000, (GLfloat) 0.793353,
-       (GLfloat) 0.793353, (GLfloat) - 0.000000, (GLfloat) 0.608761,
-       (GLfloat) 0.923880, (GLfloat) - 0.000000, (GLfloat) 0.382684,
-       (GLfloat) 0.991445, (GLfloat) - 0.000000, (GLfloat) 0.130526,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.991445, (GLfloat) 0.000000, (GLfloat) - 0.130526,
-       (GLfloat) 0.923880, (GLfloat) 0.000000, (GLfloat) - 0.382684,
-       (GLfloat) 0.793353, (GLfloat) 0.000000, (GLfloat) - 0.608761,
-       (GLfloat) 0.608761, (GLfloat) 0.000000, (GLfloat) - 0.793353,
-       (GLfloat) 0.382684, (GLfloat) 0.000000, (GLfloat) - 0.923880,
-       (GLfloat) 0.130526, (GLfloat) 0.000000, (GLfloat) - 0.991445,
-       (GLfloat) - 0.130526, (GLfloat) 0.000000, (GLfloat) - 0.991445,
-       (GLfloat) - 0.382684, (GLfloat) 0.000000, (GLfloat) - 0.923880,
-       (GLfloat) - 0.608761, (GLfloat) 0.000000, (GLfloat) - 0.793353,
-       (GLfloat) - 0.793353, (GLfloat) 0.000000, (GLfloat) - 0.608761,
-       (GLfloat) - 0.923880, (GLfloat) 0.000000, (GLfloat) - 0.382684,
-       (GLfloat) - 0.991445, (GLfloat) 0.000000, (GLfloat) - 0.130526,
-       (GLfloat) - 0.991445, (GLfloat) 0.000000, (GLfloat) 0.130526,
-       (GLfloat) - 0.923880, (GLfloat) 0.000000, (GLfloat) 0.382684,
-       (GLfloat) - 0.793353, (GLfloat) 0.000000, (GLfloat) 0.608761,
-       (GLfloat) - 0.608761, (GLfloat) 0.000000, (GLfloat) 0.793353,
-       (GLfloat) - 0.382684, (GLfloat) 0.000000, (GLfloat) 0.923880,
-       (GLfloat) - 0.130526, (GLfloat) 0.000000, (GLfloat) 0.991445,
-       (GLfloat) 0.130526, (GLfloat) - 0.000000, (GLfloat) 0.991445,
-       (GLfloat) 0.382684, (GLfloat) - 0.000000, (GLfloat) 0.923880,
-       (GLfloat) 0.608761, (GLfloat) - 0.000000, (GLfloat) 0.793353,
-       (GLfloat) 0.793353, (GLfloat) - 0.000000, (GLfloat) 0.608761,
-       (GLfloat) 0.923880, (GLfloat) - 0.000000, (GLfloat) 0.382684,
-       (GLfloat) 0.991445, (GLfloat) - 0.000000, (GLfloat) 0.130526,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-};
-
-static unsigned short int GuageConnector_POLS[] =
-{
-    4, 1, 120, 121, 3, 1, 5, 3, 121, 122, 123, 5, 1, 4, 5, 123, 124, 6, 1, 4,
-6, 124, 125, 9, 1, 5, 9, 125, 126, 127, 10, 1, 4, 10, 127, 128, 12, 1, 4, 14,
-       12, 128, 129, 1, 5, 16, 14, 129, 130, 131, 1, 4, 19, 16, 131, 132, 1, 4, 20, 19,
-       132, 133, 1, 5, 23, 20, 133, 134, 135, 1, 4, 25, 23, 135, 136, 1, 4, 25, 136, 137,
-       27, 1, 5, 27, 137, 139, 138, 29, 1, 4, 29, 138, 140, 30, 1, 4, 30, 140, 141, 32,
-       1, 5, 32, 141, 143, 142, 34, 1, 4, 34, 142, 144, 36, 1, 4, 38, 36, 144, 145, 1,
-       5, 41, 38, 145, 147, 146, 1, 4, 43, 41, 146, 148, 1, 4, 44, 43, 148, 149, 1, 5,
-47, 44, 149, 151, 150, 1, 4, 1, 47, 150, 120, 1, 4, 96, 97, 73, 72, 1, 4, 97,
- 98, 74, 73, 1, 4, 98, 99, 75, 74, 1, 4, 99, 100, 76, 75, 1, 4, 100, 101, 77,
-76, 1, 4, 101, 102, 78, 77, 1, 4, 102, 103, 79, 78, 1, 4, 103, 104, 80, 79, 1,
-       4, 104, 105, 81, 80, 1, 4, 105, 106, 82, 81, 1, 4, 106, 107, 83, 82, 1, 4, 107,
-       108, 84, 83, 1, 4, 108, 109, 85, 84, 1, 4, 109, 110, 86, 85, 1, 4, 110, 111, 87,
-86, 1, 4, 111, 112, 88, 87, 1, 4, 112, 113, 89, 88, 1, 4, 113, 114, 90, 89, 1,
-       4, 114, 115, 91, 90, 1, 4, 115, 116, 92, 91, 1, 4, 116, 117, 93, 92, 1, 4, 117,
-  118, 94, 93, 1, 4, 118, 119, 95, 94, 1, 4, 119, 96, 72, 95, 1, 24, 1, 3, 5,
-6, 9, 10, 12, 14, 16, 19, 20, 23, 25, 27, 29, 30, 32, 34, 36, 38, 41, 43, 44,
-       47, 1, 4, 48, 49, 2, 0, 1, 4, 49, 50, 4, 2, 1, 4, 50, 51, 7, 4, 1,
-       4, 51, 52, 8, 7, 1, 4, 52, 53, 11, 8, 1, 4, 53, 54, 13, 11, 1, 4, 54,
-    55, 15, 13, 1, 4, 55, 56, 17, 15, 1, 4, 56, 57, 18, 17, 1, 4, 57, 58, 21,
-     18, 1, 4, 58, 59, 22, 21, 1, 4, 59, 60, 24, 22, 1, 4, 60, 61, 26, 24, 1,
-     4, 61, 62, 28, 26, 1, 4, 62, 63, 31, 28, 1, 4, 63, 64, 33, 31, 1, 4, 64,
-    65, 35, 33, 1, 4, 65, 66, 37, 35, 1, 4, 66, 67, 39, 37, 1, 4, 67, 68, 40,
-     39, 1, 4, 68, 69, 42, 40, 1, 4, 69, 70, 45, 42, 1, 4, 70, 71, 46, 45, 1,
- 4, 71, 48, 0, 46, 1, 24, 48, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60,
-       59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 1,
-       0
-};
-
-struct lwo  LWO_GuageConnector =
-{
-       152,                    /* number of points */
-       GuageConnector_PNTS, GuageConnector_normals, GuageConnector_POLS, 0L
-};
-
-static GLfloat GuageDial_PNTS[] =
-{
-       (GLfloat) 0.000000, (GLfloat) 0.050000, (GLfloat) 0.300000,
-       (GLfloat) 0.019134, (GLfloat) 0.046194, (GLfloat) 0.300000,
-       (GLfloat) 0.035355, (GLfloat) 0.035355, (GLfloat) 0.300000,
-       (GLfloat) 0.046194, (GLfloat) 0.019134, (GLfloat) 0.300000,
-       (GLfloat) 0.050000, (GLfloat) - 0.000000, (GLfloat) 0.300000,
-       (GLfloat) 0.046194, (GLfloat) - 0.019134, (GLfloat) 0.300000,
-       (GLfloat) 0.035355, (GLfloat) - 0.035400, (GLfloat) 0.275000,
-       (GLfloat) 0.035355, (GLfloat) - 0.035400, (GLfloat) 0.300000,
-       (GLfloat) 0.019134, (GLfloat) - 0.046200, (GLfloat) 0.300000,
-       (GLfloat) 0.000000, (GLfloat) - 0.050000, (GLfloat) 0.300000,
-       (GLfloat) - 0.019134, (GLfloat) - 0.046200, (GLfloat) 0.300000,
-       (GLfloat) - 0.035355, (GLfloat) - 0.035400, (GLfloat) 0.275000,
-       (GLfloat) - 0.035355, (GLfloat) - 0.035400, (GLfloat) 0.300000,
-       (GLfloat) - 0.046194, (GLfloat) - 0.019134, (GLfloat) 0.300000,
-       (GLfloat) - 0.050000, (GLfloat) - 0.000000, (GLfloat) 0.300000,
-       (GLfloat) - 0.046194, (GLfloat) 0.019134, (GLfloat) 0.300000,
-       (GLfloat) - 0.035355, (GLfloat) 0.035355, (GLfloat) 0.300000,
-       (GLfloat) - 0.019134, (GLfloat) 0.046194, (GLfloat) 0.300000,
-       (GLfloat) 0.000000, (GLfloat) 0.050000, (GLfloat) 0.200000,
-       (GLfloat) 0.019134, (GLfloat) 0.046194, (GLfloat) 0.200000,
-       (GLfloat) 0.035355, (GLfloat) 0.035355, (GLfloat) 0.200000,
-       (GLfloat) 0.046194, (GLfloat) 0.019134, (GLfloat) 0.200000,
-       (GLfloat) 0.050000, (GLfloat) - 0.000000, (GLfloat) 0.200000,
-       (GLfloat) 0.046194, (GLfloat) - 0.019134, (GLfloat) 0.200000,
-       (GLfloat) 0.035355, (GLfloat) - 0.035355, (GLfloat) 0.200000,
-       (GLfloat) 0.019134, (GLfloat) - 0.046194, (GLfloat) 0.200000,
-       (GLfloat) 0.000000, (GLfloat) - 0.050000, (GLfloat) 0.200000,
-       (GLfloat) - 0.019134, (GLfloat) - 0.046194, (GLfloat) 0.200000,
-       (GLfloat) - 0.035355, (GLfloat) - 0.035355, (GLfloat) 0.200000,
-       (GLfloat) - 0.046194, (GLfloat) - 0.019134, (GLfloat) 0.200000,
-       (GLfloat) - 0.050000, (GLfloat) - 0.000000, (GLfloat) 0.200000,
-       (GLfloat) - 0.046194, (GLfloat) 0.019134, (GLfloat) 0.200000,
-       (GLfloat) - 0.035355, (GLfloat) 0.035355, (GLfloat) 0.200000,
-       (GLfloat) - 0.019134, (GLfloat) 0.046194, (GLfloat) 0.200000,
-       (GLfloat) 0.000000, (GLfloat) - 0.373300, (GLfloat) 0.275000,
-};
-
-static GLfloat GuageDial_normals[] =
-{
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.195089, (GLfloat) 0.980786, (GLfloat) 0.000000,
-       (GLfloat) 0.555570, (GLfloat) 0.831470, (GLfloat) 0.000000,
-       (GLfloat) 0.831470, (GLfloat) 0.555570, (GLfloat) 0.000000,
-       (GLfloat) 0.980785, (GLfloat) 0.195090, (GLfloat) 0.000000,
-       (GLfloat) 0.980785, (GLfloat) - 0.195090, (GLfloat) - 0.000000,
-       (GLfloat) 0.831470, (GLfloat) - 0.555570, (GLfloat) - 0.000248,
-       (GLfloat) 0.555570, (GLfloat) - 0.831470, (GLfloat) - 0.000051,
-       (GLfloat) 0.195089, (GLfloat) - 0.980786, (GLfloat) - 0.000000,
-       (GLfloat) - 0.195089, (GLfloat) - 0.980786, (GLfloat) - 0.000060,
-       (GLfloat) - 0.555570, (GLfloat) - 0.831470, (GLfloat) - 0.000371,
-       (GLfloat) - 0.831470, (GLfloat) - 0.555570, (GLfloat) - 0.000000,
-       (GLfloat) - 0.980785, (GLfloat) - 0.195090, (GLfloat) - 0.000000,
-       (GLfloat) - 0.980785, (GLfloat) 0.195090, (GLfloat) - 0.000000,
-       (GLfloat) - 0.831470, (GLfloat) 0.555570, (GLfloat) - 0.000000,
-       (GLfloat) - 0.555570, (GLfloat) 0.831470, (GLfloat) - 0.000000,
-       (GLfloat) - 0.195089, (GLfloat) 0.980786, (GLfloat) - 0.000000,
-};
-
-static unsigned short int GuageDial_POLS[] =
-{
-       3, 11, 6, 34, 1, 16, 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15,
-       16, 17, 1, 4, 18, 19, 1, 0, 1, 4, 19, 20, 2, 1, 1, 4, 20, 21, 3, 2,
-       1, 4, 21, 22, 4, 3, 1, 4, 22, 23, 5, 4, 1, 4, 23, 24, 7, 5, 1, 4,
-       24, 25, 8, 7, 1, 4, 25, 26, 9, 8, 1, 4, 26, 27, 10, 9, 1, 4, 27, 28,
-    12, 10, 1, 4, 28, 29, 13, 12, 1, 4, 29, 30, 14, 13, 1, 4, 30, 31, 15, 14,
-       1, 4, 31, 32, 16, 15, 1, 4, 32, 33, 17, 16, 1, 4, 33, 18, 0, 17, 1,
-       0
-};
-
-struct lwo  LWO_GuageDial =
-{
-       35,                     /* number of points */
-       GuageDial_PNTS, GuageDial_normals, GuageDial_POLS, 0L
-};
-
-static GLfloat GuageFace_PNTS[] =
-{
-       (GLfloat) 0.000000, (GLfloat) 1.783300, (GLfloat) 0.200000,
-       (GLfloat) - 0.087791, (GLfloat) 1.774653, (GLfloat) 0.200000,
-       (GLfloat) - 0.172208, (GLfloat) 1.749046, (GLfloat) 0.200000,
-       (GLfloat) - 0.250007, (GLfloat) 1.707461, (GLfloat) 0.200000,
-       (GLfloat) - 0.318198, (GLfloat) 1.651498, (GLfloat) 0.200000,
-       (GLfloat) - 0.374161, (GLfloat) 1.583307, (GLfloat) 0.200000,
-       (GLfloat) - 0.415746, (GLfloat) 1.505508, (GLfloat) 0.200000,
-       (GLfloat) - 0.441353, (GLfloat) 1.421091, (GLfloat) 0.200000,
-       (GLfloat) - 0.450000, (GLfloat) 1.333300, (GLfloat) 0.200000,
-       (GLfloat) - 0.441353, (GLfloat) 1.245509, (GLfloat) 0.200000,
-       (GLfloat) - 0.415746, (GLfloat) 1.161092, (GLfloat) 0.200000,
-       (GLfloat) - 0.374161, (GLfloat) 1.083293, (GLfloat) 0.200000,
-       (GLfloat) - 0.318198, (GLfloat) 1.015102, (GLfloat) 0.200000,
-       (GLfloat) - 0.250007, (GLfloat) 0.959139, (GLfloat) 0.200000,
-       (GLfloat) - 0.172208, (GLfloat) 0.917554, (GLfloat) 0.200000,
-       (GLfloat) - 0.087791, (GLfloat) 0.891947, (GLfloat) 0.200000,
-       (GLfloat) 0.000000, (GLfloat) 0.883300, (GLfloat) 0.200000,
-       (GLfloat) 0.087791, (GLfloat) 0.891947, (GLfloat) 0.200000,
-       (GLfloat) 0.172208, (GLfloat) 0.917554, (GLfloat) 0.200000,
-       (GLfloat) 0.250007, (GLfloat) 0.959139, (GLfloat) 0.200000,
-       (GLfloat) 0.318198, (GLfloat) 1.015102, (GLfloat) 0.200000,
-       (GLfloat) 0.374161, (GLfloat) 1.083293, (GLfloat) 0.200000,
-       (GLfloat) 0.415746, (GLfloat) 1.161092, (GLfloat) 0.200000,
-       (GLfloat) 0.441353, (GLfloat) 1.245509, (GLfloat) 0.200000,
-       (GLfloat) 0.450000, (GLfloat) 1.333300, (GLfloat) 0.200000,
-       (GLfloat) 0.441353, (GLfloat) 1.421091, (GLfloat) 0.200000,
-       (GLfloat) 0.415746, (GLfloat) 1.505508, (GLfloat) 0.200000,
-       (GLfloat) 0.374161, (GLfloat) 1.583307, (GLfloat) 0.200000,
-       (GLfloat) 0.318198, (GLfloat) 1.651498, (GLfloat) 0.200000,
-       (GLfloat) 0.250007, (GLfloat) 1.707461, (GLfloat) 0.200000,
-       (GLfloat) 0.172208, (GLfloat) 1.749046, (GLfloat) 0.200000,
-       (GLfloat) 0.087791, (GLfloat) 1.774653, (GLfloat) 0.200000,
-};
-
-static GLfloat GuageFace_normals[] =
-{
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-};
-
-static unsigned short int GuageFace_POLS[] =
-{
-32, 0, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14,
-       13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1,
-       0
-};
-
-struct lwo  LWO_GuageFace =
-{
-       32,                     /* number of points */
-       GuageFace_PNTS, GuageFace_normals, GuageFace_POLS, 0L
-};
-
-static GLfloat GuageHead_PNTS[] =
-{
-       (GLfloat) 0.000000, (GLfloat) 1.833300, (GLfloat) 0.333330,
-       (GLfloat) 0.097545, (GLfloat) 1.823693, (GLfloat) 0.333330,
-       (GLfloat) 0.191342, (GLfloat) 1.795240, (GLfloat) 0.333330,
-       (GLfloat) 0.277785, (GLfloat) 1.749035, (GLfloat) 0.333330,
-       (GLfloat) 0.353553, (GLfloat) 1.686853, (GLfloat) 0.333330,
-       (GLfloat) 0.415735, (GLfloat) 1.611085, (GLfloat) 0.333330,
-       (GLfloat) 0.461940, (GLfloat) 1.524642, (GLfloat) 0.333330,
-       (GLfloat) 0.490393, (GLfloat) 1.430845, (GLfloat) 0.333330,
-       (GLfloat) 0.500000, (GLfloat) 1.333300, (GLfloat) 0.333330,
-       (GLfloat) 0.490393, (GLfloat) 1.235755, (GLfloat) 0.333330,
-       (GLfloat) 0.461940, (GLfloat) 1.141958, (GLfloat) 0.333330,
-       (GLfloat) 0.415735, (GLfloat) 1.055515, (GLfloat) 0.333330,
-       (GLfloat) 0.353553, (GLfloat) 0.979747, (GLfloat) 0.333330,
-       (GLfloat) 0.277785, (GLfloat) 0.917565, (GLfloat) 0.333330,
-       (GLfloat) 0.191342, (GLfloat) 0.871360, (GLfloat) 0.333330,
-       (GLfloat) 0.097545, (GLfloat) 0.842907, (GLfloat) 0.333330,
-       (GLfloat) 0.000000, (GLfloat) 0.833300, (GLfloat) 0.333330,
-       (GLfloat) - 0.097545, (GLfloat) 0.842907, (GLfloat) 0.333330,
-       (GLfloat) - 0.191342, (GLfloat) 0.871360, (GLfloat) 0.333330,
-       (GLfloat) - 0.277785, (GLfloat) 0.917565, (GLfloat) 0.333330,
-       (GLfloat) - 0.353553, (GLfloat) 0.979747, (GLfloat) 0.333330,
-       (GLfloat) - 0.415735, (GLfloat) 1.055515, (GLfloat) 0.333330,
-       (GLfloat) - 0.461940, (GLfloat) 1.141958, (GLfloat) 0.333330,
-       (GLfloat) - 0.490393, (GLfloat) 1.235755, (GLfloat) 0.333330,
-       (GLfloat) - 0.500000, (GLfloat) 1.333300, (GLfloat) 0.333330,
-       (GLfloat) - 0.490393, (GLfloat) 1.430845, (GLfloat) 0.333330,
-       (GLfloat) - 0.461940, (GLfloat) 1.524642, (GLfloat) 0.333330,
-       (GLfloat) - 0.415735, (GLfloat) 1.611085, (GLfloat) 0.333330,
-       (GLfloat) - 0.353553, (GLfloat) 1.686853, (GLfloat) 0.333330,
-       (GLfloat) - 0.277785, (GLfloat) 1.749035, (GLfloat) 0.333330,
-       (GLfloat) - 0.191342, (GLfloat) 1.795240, (GLfloat) 0.333330,
-       (GLfloat) - 0.097545, (GLfloat) 1.823693, (GLfloat) 0.333330,
-       (GLfloat) 0.000000, (GLfloat) 1.833300, (GLfloat) - 0.333330,
-       (GLfloat) 0.097545, (GLfloat) 1.823693, (GLfloat) - 0.333330,
-       (GLfloat) 0.191342, (GLfloat) 1.795240, (GLfloat) - 0.333330,
-       (GLfloat) 0.277785, (GLfloat) 1.749035, (GLfloat) - 0.333330,
-       (GLfloat) 0.353553, (GLfloat) 1.686853, (GLfloat) - 0.333330,
-       (GLfloat) 0.415735, (GLfloat) 1.611085, (GLfloat) - 0.333330,
-       (GLfloat) 0.461940, (GLfloat) 1.524642, (GLfloat) - 0.333330,
-       (GLfloat) 0.490393, (GLfloat) 1.430845, (GLfloat) - 0.333330,
-       (GLfloat) 0.500000, (GLfloat) 1.333300, (GLfloat) - 0.333330,
-       (GLfloat) 0.490393, (GLfloat) 1.235755, (GLfloat) - 0.333330,
-       (GLfloat) 0.461940, (GLfloat) 1.141958, (GLfloat) - 0.333330,
-       (GLfloat) 0.415735, (GLfloat) 1.055515, (GLfloat) - 0.333330,
-       (GLfloat) 0.353553, (GLfloat) 0.979747, (GLfloat) - 0.333330,
-       (GLfloat) 0.277785, (GLfloat) 0.917565, (GLfloat) - 0.333330,
-       (GLfloat) 0.191342, (GLfloat) 0.871360, (GLfloat) - 0.333330,
-       (GLfloat) 0.097545, (GLfloat) 0.842907, (GLfloat) - 0.333330,
-       (GLfloat) 0.000000, (GLfloat) 0.833300, (GLfloat) - 0.333330,
-       (GLfloat) - 0.097545, (GLfloat) 0.842907, (GLfloat) - 0.333330,
-       (GLfloat) - 0.191342, (GLfloat) 0.871360, (GLfloat) - 0.333330,
-       (GLfloat) - 0.277785, (GLfloat) 0.917565, (GLfloat) - 0.333330,
-       (GLfloat) - 0.353553, (GLfloat) 0.979747, (GLfloat) - 0.333330,
-       (GLfloat) - 0.415735, (GLfloat) 1.055515, (GLfloat) - 0.333330,
-       (GLfloat) - 0.461940, (GLfloat) 1.141958, (GLfloat) - 0.333330,
-       (GLfloat) - 0.490393, (GLfloat) 1.235755, (GLfloat) - 0.333330,
-       (GLfloat) - 0.500000, (GLfloat) 1.333300, (GLfloat) - 0.333330,
-       (GLfloat) - 0.490393, (GLfloat) 1.430845, (GLfloat) - 0.333330,
-       (GLfloat) - 0.461940, (GLfloat) 1.524642, (GLfloat) - 0.333330,
-       (GLfloat) - 0.415735, (GLfloat) 1.611085, (GLfloat) - 0.333330,
-       (GLfloat) - 0.353553, (GLfloat) 1.686853, (GLfloat) - 0.333330,
-       (GLfloat) - 0.277785, (GLfloat) 1.749035, (GLfloat) - 0.333330,
-       (GLfloat) - 0.191342, (GLfloat) 1.795240, (GLfloat) - 0.333330,
-       (GLfloat) - 0.097545, (GLfloat) 1.823693, (GLfloat) - 0.333330,
-       (GLfloat) 0.087791, (GLfloat) 1.774653, (GLfloat) 0.333330,
-       (GLfloat) 0.000000, (GLfloat) 1.783300, (GLfloat) 0.333330,
-       (GLfloat) 0.172208, (GLfloat) 1.749046, (GLfloat) 0.333330,
-       (GLfloat) 0.250007, (GLfloat) 1.707461, (GLfloat) 0.333330,
-       (GLfloat) 0.318198, (GLfloat) 1.651498, (GLfloat) 0.333330,
-       (GLfloat) 0.374161, (GLfloat) 1.583307, (GLfloat) 0.333330,
-       (GLfloat) 0.415746, (GLfloat) 1.505508, (GLfloat) 0.333330,
-       (GLfloat) 0.441353, (GLfloat) 1.421091, (GLfloat) 0.333330,
-       (GLfloat) 0.450000, (GLfloat) 1.333300, (GLfloat) 0.333330,
-       (GLfloat) 0.441353, (GLfloat) 1.245509, (GLfloat) 0.333330,
-       (GLfloat) 0.415746, (GLfloat) 1.161092, (GLfloat) 0.333330,
-       (GLfloat) 0.374161, (GLfloat) 1.083293, (GLfloat) 0.333330,
-       (GLfloat) 0.318198, (GLfloat) 1.015102, (GLfloat) 0.333330,
-       (GLfloat) 0.250007, (GLfloat) 0.959139, (GLfloat) 0.333330,
-       (GLfloat) 0.172208, (GLfloat) 0.917554, (GLfloat) 0.333330,
-       (GLfloat) 0.087791, (GLfloat) 0.891947, (GLfloat) 0.333330,
-       (GLfloat) 0.000000, (GLfloat) 0.883300, (GLfloat) 0.333330,
-       (GLfloat) - 0.087791, (GLfloat) 0.891947, (GLfloat) 0.333330,
-       (GLfloat) - 0.172208, (GLfloat) 0.917554, (GLfloat) 0.333330,
-       (GLfloat) - 0.250007, (GLfloat) 0.959139, (GLfloat) 0.333330,
-       (GLfloat) - 0.318198, (GLfloat) 1.015102, (GLfloat) 0.333330,
-       (GLfloat) - 0.374161, (GLfloat) 1.083293, (GLfloat) 0.333330,
-       (GLfloat) - 0.415746, (GLfloat) 1.161092, (GLfloat) 0.333330,
-       (GLfloat) - 0.441353, (GLfloat) 1.245509, (GLfloat) 0.333330,
-       (GLfloat) - 0.450000, (GLfloat) 1.333300, (GLfloat) 0.333330,
-       (GLfloat) - 0.441353, (GLfloat) 1.421091, (GLfloat) 0.333330,
-       (GLfloat) - 0.415746, (GLfloat) 1.505508, (GLfloat) 0.333330,
-       (GLfloat) - 0.374161, (GLfloat) 1.583307, (GLfloat) 0.333330,
-       (GLfloat) - 0.318198, (GLfloat) 1.651498, (GLfloat) 0.333330,
-       (GLfloat) - 0.250007, (GLfloat) 1.707461, (GLfloat) 0.333330,
-       (GLfloat) - 0.172208, (GLfloat) 1.749046, (GLfloat) 0.333330,
-       (GLfloat) - 0.087791, (GLfloat) 1.774653, (GLfloat) 0.333330,
-       (GLfloat) 0.000000, (GLfloat) 1.783300, (GLfloat) 0.200000,
-       (GLfloat) - 0.087791, (GLfloat) 1.774653, (GLfloat) 0.200000,
-       (GLfloat) - 0.172208, (GLfloat) 1.749046, (GLfloat) 0.200000,
-       (GLfloat) - 0.250007, (GLfloat) 1.707461, (GLfloat) 0.200000,
-       (GLfloat) - 0.318198, (GLfloat) 1.651498, (GLfloat) 0.200000,
-       (GLfloat) - 0.374161, (GLfloat) 1.583307, (GLfloat) 0.200000,
-       (GLfloat) - 0.415746, (GLfloat) 1.505508, (GLfloat) 0.200000,
-       (GLfloat) - 0.441353, (GLfloat) 1.421091, (GLfloat) 0.200000,
-       (GLfloat) - 0.450000, (GLfloat) 1.333300, (GLfloat) 0.200000,
-       (GLfloat) - 0.441353, (GLfloat) 1.245509, (GLfloat) 0.200000,
-       (GLfloat) - 0.415746, (GLfloat) 1.161092, (GLfloat) 0.200000,
-       (GLfloat) - 0.374161, (GLfloat) 1.083293, (GLfloat) 0.200000,
-       (GLfloat) - 0.318198, (GLfloat) 1.015102, (GLfloat) 0.200000,
-       (GLfloat) - 0.250007, (GLfloat) 0.959139, (GLfloat) 0.200000,
-       (GLfloat) - 0.172208, (GLfloat) 0.917554, (GLfloat) 0.200000,
-       (GLfloat) - 0.087791, (GLfloat) 0.891947, (GLfloat) 0.200000,
-       (GLfloat) 0.000000, (GLfloat) 0.883300, (GLfloat) 0.200000,
-       (GLfloat) 0.087791, (GLfloat) 0.891947, (GLfloat) 0.200000,
-       (GLfloat) 0.172208, (GLfloat) 0.917554, (GLfloat) 0.200000,
-       (GLfloat) 0.250007, (GLfloat) 0.959139, (GLfloat) 0.200000,
-       (GLfloat) 0.318198, (GLfloat) 1.015102, (GLfloat) 0.200000,
-       (GLfloat) 0.374161, (GLfloat) 1.083293, (GLfloat) 0.200000,
-       (GLfloat) 0.415746, (GLfloat) 1.161092, (GLfloat) 0.200000,
-       (GLfloat) 0.441353, (GLfloat) 1.245509, (GLfloat) 0.200000,
-       (GLfloat) 0.450000, (GLfloat) 1.333300, (GLfloat) 0.200000,
-       (GLfloat) 0.441353, (GLfloat) 1.421091, (GLfloat) 0.200000,
-       (GLfloat) 0.415746, (GLfloat) 1.505508, (GLfloat) 0.200000,
-       (GLfloat) 0.374161, (GLfloat) 1.583307, (GLfloat) 0.200000,
-       (GLfloat) 0.318198, (GLfloat) 1.651498, (GLfloat) 0.200000,
-       (GLfloat) 0.250007, (GLfloat) 1.707461, (GLfloat) 0.200000,
-       (GLfloat) 0.172208, (GLfloat) 1.749046, (GLfloat) 0.200000,
-       (GLfloat) 0.087791, (GLfloat) 1.774653, (GLfloat) 0.200000,
-};
-
-static GLfloat GuageHead_normals[] =
-{
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.098017, (GLfloat) - 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) 0.290285, (GLfloat) - 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) 0.471397, (GLfloat) - 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) 0.634393, (GLfloat) - 0.773010, (GLfloat) - 0.000000,
-       (GLfloat) 0.773011, (GLfloat) - 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) 0.881921, (GLfloat) - 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) 0.956940, (GLfloat) - 0.290284, (GLfloat) - 0.000000,
-       (GLfloat) 0.995185, (GLfloat) - 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) 0.995185, (GLfloat) 0.098017, (GLfloat) 0.000000,
-       (GLfloat) 0.956940, (GLfloat) 0.290284, (GLfloat) 0.000000,
-       (GLfloat) 0.881921, (GLfloat) 0.471397, (GLfloat) 0.000000,
-       (GLfloat) 0.773011, (GLfloat) 0.634393, (GLfloat) 0.000000,
-       (GLfloat) 0.634393, (GLfloat) 0.773011, (GLfloat) 0.000000,
-       (GLfloat) 0.471397, (GLfloat) 0.881921, (GLfloat) 0.000000,
-       (GLfloat) 0.290285, (GLfloat) 0.956940, (GLfloat) 0.000000,
-       (GLfloat) 0.098017, (GLfloat) 0.995185, (GLfloat) 0.000000,
-       (GLfloat) - 0.098017, (GLfloat) 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) - 0.290285, (GLfloat) 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) - 0.471397, (GLfloat) 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) - 0.634393, (GLfloat) 0.773011, (GLfloat) - 0.000000,
-       (GLfloat) - 0.773011, (GLfloat) 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) - 0.881921, (GLfloat) 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) - 0.956940, (GLfloat) 0.290284, (GLfloat) - 0.000000,
-       (GLfloat) - 0.995185, (GLfloat) 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) - 0.995185, (GLfloat) - 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) - 0.956940, (GLfloat) - 0.290284, (GLfloat) - 0.000000,
-       (GLfloat) - 0.881921, (GLfloat) - 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) - 0.773011, (GLfloat) - 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) - 0.634393, (GLfloat) - 0.773010, (GLfloat) - 0.000000,
-       (GLfloat) - 0.471397, (GLfloat) - 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) - 0.290285, (GLfloat) - 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) - 0.098017, (GLfloat) - 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) 0.098017, (GLfloat) 0.995185, (GLfloat) 0.000000,
-       (GLfloat) 0.290285, (GLfloat) 0.956940, (GLfloat) 0.000000,
-       (GLfloat) 0.471397, (GLfloat) 0.881921, (GLfloat) 0.000000,
-       (GLfloat) 0.634393, (GLfloat) 0.773011, (GLfloat) 0.000000,
-       (GLfloat) 0.773011, (GLfloat) 0.634393, (GLfloat) 0.000000,
-       (GLfloat) 0.881921, (GLfloat) 0.471397, (GLfloat) 0.000000,
-       (GLfloat) 0.956940, (GLfloat) 0.290284, (GLfloat) 0.000000,
-       (GLfloat) 0.995185, (GLfloat) 0.098017, (GLfloat) 0.000000,
-       (GLfloat) 0.995185, (GLfloat) - 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) 0.956940, (GLfloat) - 0.290284, (GLfloat) - 0.000000,
-       (GLfloat) 0.881921, (GLfloat) - 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) 0.773011, (GLfloat) - 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) 0.634393, (GLfloat) - 0.773010, (GLfloat) - 0.000000,
-       (GLfloat) 0.471396, (GLfloat) - 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) 0.290285, (GLfloat) - 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) 0.098017, (GLfloat) - 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) - 0.098017, (GLfloat) - 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) - 0.290285, (GLfloat) - 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) - 0.471396, (GLfloat) - 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) - 0.634393, (GLfloat) - 0.773010, (GLfloat) - 0.000000,
-       (GLfloat) - 0.773011, (GLfloat) - 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) - 0.881921, (GLfloat) - 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) - 0.956940, (GLfloat) - 0.290284, (GLfloat) - 0.000000,
-       (GLfloat) - 0.995185, (GLfloat) - 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) - 0.995185, (GLfloat) 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) - 0.956940, (GLfloat) 0.290284, (GLfloat) - 0.000000,
-       (GLfloat) - 0.881921, (GLfloat) 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) - 0.773011, (GLfloat) 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) - 0.634393, (GLfloat) 0.773011, (GLfloat) - 0.000000,
-       (GLfloat) - 0.471397, (GLfloat) 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) - 0.290285, (GLfloat) 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) - 0.098017, (GLfloat) 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-};
-
-static unsigned short int GuageHead_POLS[] =
-{
-       3, 67, 3, 4, 1, 3, 68, 67, 4, 1, 3, 68, 4, 5, 1, 3, 69, 68, 5, 1,
-       3, 70, 69, 5, 1, 3, 70, 5, 6, 1, 3, 70, 6, 7, 1, 3, 71, 70, 7, 1,
-       3, 71, 7, 8, 1, 3, 72, 71, 8, 1, 3, 73, 72, 8, 1, 3, 73, 8, 9, 1,
-       3, 74, 73, 9, 1, 3, 74, 9, 10, 1, 3, 74, 10, 11, 1, 3, 75, 74, 11, 1,
-      3, 76, 75, 11, 1, 3, 76, 11, 12, 1, 3, 76, 12, 13, 1, 3, 77, 76, 13, 1,
-      3, 78, 77, 13, 1, 3, 78, 13, 14, 1, 3, 78, 14, 15, 1, 3, 79, 78, 15, 1,
-      3, 79, 15, 16, 1, 3, 80, 79, 16, 1, 3, 81, 80, 16, 1, 3, 81, 16, 17, 1,
-      3, 82, 81, 17, 1, 3, 82, 17, 18, 1, 3, 82, 18, 19, 1, 3, 83, 82, 19, 1,
-      3, 84, 83, 19, 1, 3, 84, 19, 20, 1, 3, 84, 20, 21, 1, 3, 85, 84, 21, 1,
-      3, 86, 85, 21, 1, 3, 86, 21, 22, 1, 3, 86, 22, 23, 1, 3, 87, 86, 23, 1,
-      3, 87, 23, 24, 1, 3, 88, 87, 24, 1, 3, 89, 88, 24, 1, 3, 89, 24, 25, 1,
-      3, 90, 89, 25, 1, 3, 90, 25, 26, 1, 3, 90, 26, 27, 1, 3, 91, 90, 27, 1,
-      3, 92, 91, 27, 1, 3, 92, 27, 28, 1, 3, 93, 92, 28, 1, 3, 93, 28, 29, 1,
-       3, 2, 3, 67, 1, 3, 2, 67, 66, 1, 3, 1, 2, 66, 1, 3, 1, 66, 64, 1,
-       3, 1, 64, 65, 1, 3, 0, 1, 65, 1, 3, 31, 0, 65, 1, 3, 31, 65, 95, 1,
-      3, 31, 95, 94, 1, 3, 30, 31, 94, 1, 3, 30, 94, 93, 1, 3, 93, 29, 30, 1,
-     4, 96, 97, 95, 65, 1, 4, 97, 98, 94, 95, 1, 4, 98, 99, 93, 94, 1, 4, 99,
-       100, 92, 93, 1, 4, 100, 101, 91, 92, 1, 4, 101, 102, 90, 91, 1, 4, 102, 103, 89,
-90, 1, 4, 103, 104, 88, 89, 1, 4, 104, 105, 87, 88, 1, 4, 105, 106, 86, 87, 1,
-       4, 106, 107, 85, 86, 1, 4, 107, 108, 84, 85, 1, 4, 108, 109, 83, 84, 1, 4, 109,
-       110, 82, 83, 1, 4, 110, 111, 81, 82, 1, 4, 111, 112, 80, 81, 1, 4, 112, 113, 79,
-80, 1, 4, 113, 114, 78, 79, 1, 4, 114, 115, 77, 78, 1, 4, 115, 116, 76, 77, 1,
-       4, 116, 117, 75, 76, 1, 4, 117, 118, 74, 75, 1, 4, 118, 119, 73, 74, 1, 4, 119,
-       120, 72, 73, 1, 4, 120, 121, 71, 72, 1, 4, 121, 122, 70, 71, 1, 4, 122, 123, 69,
-70, 1, 4, 123, 124, 68, 69, 1, 4, 124, 125, 67, 68, 1, 4, 125, 126, 66, 67, 1,
-    4, 126, 127, 64, 66, 1, 4, 127, 96, 65, 64, 1, 4, 32, 33, 1, 0, 1, 4, 33,
-       34, 2, 1, 1, 4, 34, 35, 3, 2, 1, 4, 35, 36, 4, 3, 1, 4, 36, 37, 5,
-       4, 1, 4, 37, 38, 6, 5, 1, 4, 38, 39, 7, 6, 1, 4, 39, 40, 8, 7, 1,
-       4, 40, 41, 9, 8, 1, 4, 41, 42, 10, 9, 1, 4, 42, 43, 11, 10, 1, 4, 43,
-    44, 12, 11, 1, 4, 44, 45, 13, 12, 1, 4, 45, 46, 14, 13, 1, 4, 46, 47, 15,
-     14, 1, 4, 47, 48, 16, 15, 1, 4, 48, 49, 17, 16, 1, 4, 49, 50, 18, 17, 1,
-     4, 50, 51, 19, 18, 1, 4, 51, 52, 20, 19, 1, 4, 52, 53, 21, 20, 1, 4, 53,
-    54, 22, 21, 1, 4, 54, 55, 23, 22, 1, 4, 55, 56, 24, 23, 1, 4, 56, 57, 25,
-     24, 1, 4, 57, 58, 26, 25, 1, 4, 58, 59, 27, 26, 1, 4, 59, 60, 28, 27, 1,
-     4, 60, 61, 29, 28, 1, 4, 61, 62, 30, 29, 1, 4, 62, 63, 31, 30, 1, 4, 63,
-32, 0, 31, 1, 32, 32, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,
-       49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 1,
-       0
-};
-
-struct lwo  LWO_GuageHead =
-{
-       128,                    /* number of points */
-       GuageHead_PNTS, GuageHead_normals, GuageHead_POLS, 0L
-};
-
-static GLfloat PipeBetweenBolts_PNTS[] =
-{
-       (GLfloat) 0.000000, (GLfloat) 0.500000, (GLfloat) 0.500000,
-       (GLfloat) 0.129410, (GLfloat) 0.482963, (GLfloat) 0.500000,
-       (GLfloat) 0.250000, (GLfloat) 0.433013, (GLfloat) 0.500000,
-       (GLfloat) 0.353553, (GLfloat) 0.353553, (GLfloat) 0.500000,
-       (GLfloat) 0.433013, (GLfloat) 0.250000, (GLfloat) 0.500000,
-       (GLfloat) 0.482963, (GLfloat) 0.129410, (GLfloat) 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.500000,
-       (GLfloat) 0.482963, (GLfloat) - 0.129410, (GLfloat) 0.500000,
-       (GLfloat) 0.433013, (GLfloat) - 0.250000, (GLfloat) 0.500000,
-       (GLfloat) 0.353553, (GLfloat) - 0.353553, (GLfloat) 0.500000,
-       (GLfloat) 0.250000, (GLfloat) - 0.433013, (GLfloat) 0.500000,
-       (GLfloat) 0.129410, (GLfloat) - 0.482963, (GLfloat) 0.500000,
-       (GLfloat) 0.000000, (GLfloat) - 0.500000, (GLfloat) 0.500000,
-       (GLfloat) - 0.129410, (GLfloat) - 0.482963, (GLfloat) 0.500000,
-       (GLfloat) - 0.250000, (GLfloat) - 0.433013, (GLfloat) 0.500000,
-       (GLfloat) - 0.353553, (GLfloat) - 0.353553, (GLfloat) 0.500000,
-       (GLfloat) - 0.433013, (GLfloat) - 0.250000, (GLfloat) 0.500000,
-       (GLfloat) - 0.482963, (GLfloat) - 0.129410, (GLfloat) 0.500000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) 0.500000,
-       (GLfloat) - 0.482963, (GLfloat) 0.129410, (GLfloat) 0.500000,
-       (GLfloat) - 0.433013, (GLfloat) 0.250000, (GLfloat) 0.500000,
-       (GLfloat) - 0.353553, (GLfloat) 0.353553, (GLfloat) 0.500000,
-       (GLfloat) - 0.250000, (GLfloat) 0.433013, (GLfloat) 0.500000,
-       (GLfloat) - 0.129410, (GLfloat) 0.482963, (GLfloat) 0.500000,
-       (GLfloat) 0.000000, (GLfloat) 0.500000, (GLfloat) - 0.500000,
-       (GLfloat) 0.129410, (GLfloat) 0.482963, (GLfloat) - 0.500000,
-       (GLfloat) 0.250000, (GLfloat) 0.433013, (GLfloat) - 0.500000,
-       (GLfloat) 0.353553, (GLfloat) 0.353553, (GLfloat) - 0.500000,
-       (GLfloat) 0.433013, (GLfloat) 0.250000, (GLfloat) - 0.500000,
-       (GLfloat) 0.482963, (GLfloat) 0.129410, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.500000,
-       (GLfloat) 0.482963, (GLfloat) - 0.129410, (GLfloat) - 0.500000,
-       (GLfloat) 0.433013, (GLfloat) - 0.250000, (GLfloat) - 0.500000,
-       (GLfloat) 0.353553, (GLfloat) - 0.353553, (GLfloat) - 0.500000,
-       (GLfloat) 0.250000, (GLfloat) - 0.433013, (GLfloat) - 0.500000,
-       (GLfloat) 0.129410, (GLfloat) - 0.482963, (GLfloat) - 0.500000,
-       (GLfloat) 0.000000, (GLfloat) - 0.500000, (GLfloat) - 0.500000,
-       (GLfloat) - 0.129410, (GLfloat) - 0.482963, (GLfloat) - 0.500000,
-       (GLfloat) - 0.250000, (GLfloat) - 0.433013, (GLfloat) - 0.500000,
-       (GLfloat) - 0.353553, (GLfloat) - 0.353553, (GLfloat) - 0.500000,
-       (GLfloat) - 0.433013, (GLfloat) - 0.250000, (GLfloat) - 0.500000,
-       (GLfloat) - 0.482963, (GLfloat) - 0.129410, (GLfloat) - 0.500000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.500000,
-       (GLfloat) - 0.482963, (GLfloat) 0.129410, (GLfloat) - 0.500000,
-       (GLfloat) - 0.433013, (GLfloat) 0.250000, (GLfloat) - 0.500000,
-       (GLfloat) - 0.353553, (GLfloat) 0.353553, (GLfloat) - 0.500000,
-       (GLfloat) - 0.250000, (GLfloat) 0.433013, (GLfloat) - 0.500000,
-       (GLfloat) - 0.129410, (GLfloat) 0.482963, (GLfloat) - 0.500000,
-};
-
-static GLfloat PipeBetweenBolts_normals[] =
-{
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.130526, (GLfloat) 0.991445, (GLfloat) 0.000000,
-       (GLfloat) 0.382683, (GLfloat) 0.923880, (GLfloat) 0.000000,
-       (GLfloat) 0.608761, (GLfloat) 0.793353, (GLfloat) 0.000000,
-       (GLfloat) 0.793353, (GLfloat) 0.608761, (GLfloat) 0.000000,
-       (GLfloat) 0.923880, (GLfloat) 0.382683, (GLfloat) 0.000000,
-       (GLfloat) 0.991445, (GLfloat) 0.130526, (GLfloat) 0.000000,
-       (GLfloat) 0.991445, (GLfloat) - 0.130526, (GLfloat) - 0.000000,
-       (GLfloat) 0.923880, (GLfloat) - 0.382683, (GLfloat) - 0.000000,
-       (GLfloat) 0.793353, (GLfloat) - 0.608761, (GLfloat) - 0.000000,
-       (GLfloat) 0.608761, (GLfloat) - 0.793353, (GLfloat) - 0.000000,
-       (GLfloat) 0.382683, (GLfloat) - 0.923880, (GLfloat) - 0.000000,
-       (GLfloat) 0.130526, (GLfloat) - 0.991445, (GLfloat) - 0.000000,
-       (GLfloat) - 0.130526, (GLfloat) - 0.991445, (GLfloat) - 0.000000,
-       (GLfloat) - 0.382683, (GLfloat) - 0.923880, (GLfloat) - 0.000000,
-       (GLfloat) - 0.608761, (GLfloat) - 0.793353, (GLfloat) - 0.000000,
-       (GLfloat) - 0.793353, (GLfloat) - 0.608761, (GLfloat) - 0.000000,
-       (GLfloat) - 0.923880, (GLfloat) - 0.382683, (GLfloat) - 0.000000,
-       (GLfloat) - 0.991445, (GLfloat) - 0.130526, (GLfloat) - 0.000000,
-       (GLfloat) - 0.991445, (GLfloat) 0.130526, (GLfloat) - 0.000000,
-       (GLfloat) - 0.923880, (GLfloat) 0.382683, (GLfloat) - 0.000000,
-       (GLfloat) - 0.793353, (GLfloat) 0.608761, (GLfloat) - 0.000000,
-       (GLfloat) - 0.608761, (GLfloat) 0.793353, (GLfloat) - 0.000000,
-       (GLfloat) - 0.382683, (GLfloat) 0.923880, (GLfloat) - 0.000000,
-       (GLfloat) - 0.130526, (GLfloat) 0.991445, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-};
-
-static unsigned short int PipeBetweenBolts_POLS[] =
-{
-       24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
-       19, 20, 21, 22, 23, 1, 4, 24, 25, 1, 0, 1, 4, 25, 26, 2, 1, 1, 4, 26,
-       27, 3, 2, 1, 4, 27, 28, 4, 3, 1, 4, 28, 29, 5, 4, 1, 4, 29, 30, 6,
-       5, 1, 4, 30, 31, 7, 6, 1, 4, 31, 32, 8, 7, 1, 4, 32, 33, 9, 8, 1,
-      4, 33, 34, 10, 9, 1, 4, 34, 35, 11, 10, 1, 4, 35, 36, 12, 11, 1, 4, 36,
-    37, 13, 12, 1, 4, 37, 38, 14, 13, 1, 4, 38, 39, 15, 14, 1, 4, 39, 40, 16,
-     15, 1, 4, 40, 41, 17, 16, 1, 4, 41, 42, 18, 17, 1, 4, 42, 43, 19, 18, 1,
-     4, 43, 44, 20, 19, 1, 4, 44, 45, 21, 20, 1, 4, 45, 46, 22, 21, 1, 4, 46,
-  47, 23, 22, 1, 4, 47, 24, 0, 23, 1, 24, 24, 47, 46, 45, 44, 43, 42, 41, 40,
-       39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 1,
-       0
-};
-
-struct lwo  LWO_PipeBetweenBolts =
-{
-       48,                     /* number of points */
-   PipeBetweenBolts_PNTS, PipeBetweenBolts_normals, PipeBetweenBolts_POLS, 0L
-};
-
-static GLfloat ElbowBolts_PNTS[] =
-{
-       (GLfloat) 0.273122, (GLfloat) - 0.600000, (GLfloat) - 0.403061,
-       (GLfloat) 0.273122, (GLfloat) 0.403061, (GLfloat) - 0.600000,
-       (GLfloat) 0.273122, (GLfloat) 0.333061, (GLfloat) - 0.600000,
-       (GLfloat) 0.273122, (GLfloat) - 0.600000, (GLfloat) - 0.333061,
-       (GLfloat) 0.212500, (GLfloat) 0.298061, (GLfloat) - 0.600000,
-       (GLfloat) 0.212500, (GLfloat) - 0.600000, (GLfloat) - 0.298061,
-       (GLfloat) 0.151878, (GLfloat) 0.333061, (GLfloat) - 0.600000,
-       (GLfloat) 0.151878, (GLfloat) - 0.600000, (GLfloat) - 0.333061,
-       (GLfloat) 0.151878, (GLfloat) 0.403061, (GLfloat) - 0.600000,
-       (GLfloat) 0.151878, (GLfloat) - 0.600000, (GLfloat) - 0.403061,
-       (GLfloat) 0.212500, (GLfloat) - 0.600000, (GLfloat) - 0.438061,
-       (GLfloat) 0.212500, (GLfloat) 0.438061, (GLfloat) - 0.600000,
-       (GLfloat) 0.273122, (GLfloat) - 0.660000, (GLfloat) - 0.403061,
-       (GLfloat) 0.273122, (GLfloat) 0.403061, (GLfloat) - 0.660000,
-       (GLfloat) 0.273122, (GLfloat) - 0.660000, (GLfloat) - 0.333061,
-       (GLfloat) 0.273122, (GLfloat) 0.333061, (GLfloat) - 0.660000,
-       (GLfloat) 0.212500, (GLfloat) 0.298061, (GLfloat) - 0.660000,
-       (GLfloat) 0.212500, (GLfloat) - 0.660000, (GLfloat) - 0.298061,
-       (GLfloat) 0.151878, (GLfloat) - 0.660000, (GLfloat) - 0.333061,
-       (GLfloat) 0.151878, (GLfloat) 0.333061, (GLfloat) - 0.660000,
-       (GLfloat) 0.151878, (GLfloat) 0.403061, (GLfloat) - 0.660000,
-       (GLfloat) 0.151878, (GLfloat) - 0.660000, (GLfloat) - 0.403061,
-       (GLfloat) 0.212500, (GLfloat) - 0.660000, (GLfloat) - 0.438061,
-       (GLfloat) 0.212500, (GLfloat) 0.438061, (GLfloat) - 0.660000,
-       (GLfloat) 0.273122, (GLfloat) 0.403061, (GLfloat) - 0.460000,
-       (GLfloat) 0.273122, (GLfloat) - 0.460000, (GLfloat) - 0.403061,
-       (GLfloat) 0.273122, (GLfloat) 0.333061, (GLfloat) - 0.460000,
-       (GLfloat) 0.273122, (GLfloat) - 0.460000, (GLfloat) - 0.333061,
-       (GLfloat) 0.212500, (GLfloat) 0.298061, (GLfloat) - 0.460000,
-       (GLfloat) 0.212500, (GLfloat) - 0.460000, (GLfloat) - 0.298061,
-       (GLfloat) 0.151878, (GLfloat) 0.333061, (GLfloat) - 0.460000,
-       (GLfloat) 0.151878, (GLfloat) - 0.460000, (GLfloat) - 0.333061,
-       (GLfloat) 0.151878, (GLfloat) 0.403061, (GLfloat) - 0.460000,
-       (GLfloat) 0.151878, (GLfloat) - 0.460000, (GLfloat) - 0.403061,
-       (GLfloat) 0.212500, (GLfloat) - 0.460000, (GLfloat) - 0.438061,
-       (GLfloat) 0.212500, (GLfloat) 0.438061, (GLfloat) - 0.460000,
-       (GLfloat) 0.273122, (GLfloat) 0.403061, (GLfloat) - 0.520000,
-       (GLfloat) 0.273122, (GLfloat) - 0.520000, (GLfloat) - 0.403061,
-       (GLfloat) 0.273122, (GLfloat) - 0.520000, (GLfloat) - 0.333061,
-       (GLfloat) 0.273122, (GLfloat) 0.333061, (GLfloat) - 0.520000,
-       (GLfloat) 0.212500, (GLfloat) 0.298061, (GLfloat) - 0.520000,
-       (GLfloat) 0.212500, (GLfloat) - 0.520000, (GLfloat) - 0.298061,
-       (GLfloat) 0.151878, (GLfloat) 0.333061, (GLfloat) - 0.520000,
-       (GLfloat) 0.151878, (GLfloat) - 0.520000, (GLfloat) - 0.333061,
-       (GLfloat) 0.151878, (GLfloat) 0.403061, (GLfloat) - 0.520000,
-       (GLfloat) 0.151878, (GLfloat) - 0.520000, (GLfloat) - 0.403061,
-       (GLfloat) 0.212500, (GLfloat) - 0.520000, (GLfloat) - 0.438061,
-       (GLfloat) 0.212500, (GLfloat) 0.438061, (GLfloat) - 0.520000,
-       (GLfloat) 0.485622, (GLfloat) - 0.035000, (GLfloat) - 0.460000,
-       (GLfloat) 0.485622, (GLfloat) - 0.460000, (GLfloat) 0.035000,
-       (GLfloat) 0.425000, (GLfloat) - 0.070000, (GLfloat) - 0.460000,
-       (GLfloat) 0.425000, (GLfloat) - 0.460000, (GLfloat) 0.070000,
-       (GLfloat) 0.364378, (GLfloat) - 0.460000, (GLfloat) 0.035000,
-       (GLfloat) 0.364378, (GLfloat) - 0.035000, (GLfloat) - 0.460000,
-       (GLfloat) 0.364378, (GLfloat) 0.035000, (GLfloat) - 0.460000,
-       (GLfloat) 0.364378, (GLfloat) - 0.460000, (GLfloat) - 0.035000,
-       (GLfloat) 0.425000, (GLfloat) 0.070000, (GLfloat) - 0.460000,
-       (GLfloat) 0.425000, (GLfloat) - 0.460000, (GLfloat) - 0.070000,
-       (GLfloat) 0.485622, (GLfloat) 0.035000, (GLfloat) - 0.460000,
-       (GLfloat) 0.485622, (GLfloat) - 0.460000, (GLfloat) - 0.035000,
-       (GLfloat) 0.485622, (GLfloat) - 0.520000, (GLfloat) 0.035000,
-       (GLfloat) 0.485622, (GLfloat) - 0.035000, (GLfloat) - 0.520000,
-       (GLfloat) 0.425000, (GLfloat) - 0.070000, (GLfloat) - 0.520000,
-       (GLfloat) 0.425000, (GLfloat) - 0.520000, (GLfloat) 0.070000,
-       (GLfloat) 0.364378, (GLfloat) - 0.035000, (GLfloat) - 0.520000,
-       (GLfloat) 0.364378, (GLfloat) - 0.520000, (GLfloat) 0.035000,
-       (GLfloat) 0.364378, (GLfloat) - 0.520000, (GLfloat) - 0.035000,
-       (GLfloat) 0.364378, (GLfloat) 0.035000, (GLfloat) - 0.520000,
-       (GLfloat) 0.425000, (GLfloat) 0.070000, (GLfloat) - 0.520000,
-       (GLfloat) 0.425000, (GLfloat) - 0.520000, (GLfloat) - 0.070000,
-       (GLfloat) 0.485622, (GLfloat) 0.035000, (GLfloat) - 0.520000,
-       (GLfloat) 0.485622, (GLfloat) - 0.520000, (GLfloat) - 0.035000,
-       (GLfloat) 0.485622, (GLfloat) - 0.035000, (GLfloat) - 0.600000,
-       (GLfloat) 0.485622, (GLfloat) - 0.600000, (GLfloat) 0.035000,
-       (GLfloat) 0.425000, (GLfloat) - 0.600000, (GLfloat) 0.070000,
-       (GLfloat) 0.425000, (GLfloat) - 0.070000, (GLfloat) - 0.600000,
-       (GLfloat) 0.364378, (GLfloat) - 0.600000, (GLfloat) 0.035000,
-       (GLfloat) 0.364378, (GLfloat) - 0.035000, (GLfloat) - 0.600000,
-       (GLfloat) 0.364378, (GLfloat) 0.035000, (GLfloat) - 0.600000,
-       (GLfloat) 0.364378, (GLfloat) - 0.600000, (GLfloat) - 0.035000,
-       (GLfloat) 0.425000, (GLfloat) 0.070000, (GLfloat) - 0.600000,
-       (GLfloat) 0.425000, (GLfloat) - 0.600000, (GLfloat) - 0.070000,
-       (GLfloat) 0.485622, (GLfloat) - 0.600000, (GLfloat) - 0.035000,
-       (GLfloat) 0.485622, (GLfloat) 0.035000, (GLfloat) - 0.600000,
-       (GLfloat) 0.485622, (GLfloat) - 0.660000, (GLfloat) 0.035000,
-       (GLfloat) 0.485622, (GLfloat) - 0.035000, (GLfloat) - 0.660000,
-       (GLfloat) 0.425000, (GLfloat) - 0.660000, (GLfloat) 0.070000,
-       (GLfloat) 0.425000, (GLfloat) - 0.070000, (GLfloat) - 0.660000,
-       (GLfloat) 0.364378, (GLfloat) - 0.035000, (GLfloat) - 0.660000,
-       (GLfloat) 0.364378, (GLfloat) - 0.660000, (GLfloat) 0.035000,
-       (GLfloat) 0.364378, (GLfloat) - 0.660000, (GLfloat) - 0.035000,
-       (GLfloat) 0.364378, (GLfloat) 0.035000, (GLfloat) - 0.660000,
-       (GLfloat) 0.425000, (GLfloat) 0.070000, (GLfloat) - 0.660000,
-       (GLfloat) 0.425000, (GLfloat) - 0.660000, (GLfloat) - 0.070000,
-       (GLfloat) 0.485622, (GLfloat) - 0.660000, (GLfloat) - 0.035000,
-       (GLfloat) 0.485622, (GLfloat) 0.035000, (GLfloat) - 0.660000,
-       (GLfloat) 0.212500, (GLfloat) - 0.438061, (GLfloat) - 0.460000,
-       (GLfloat) 0.212500, (GLfloat) - 0.460000, (GLfloat) 0.438061,
-       (GLfloat) 0.151878, (GLfloat) - 0.403061, (GLfloat) - 0.460000,
-       (GLfloat) 0.151878, (GLfloat) - 0.460000, (GLfloat) 0.403061,
-       (GLfloat) 0.151878, (GLfloat) - 0.460000, (GLfloat) 0.333061,
-       (GLfloat) 0.151878, (GLfloat) - 0.333061, (GLfloat) - 0.460000,
-       (GLfloat) 0.212500, (GLfloat) - 0.460000, (GLfloat) 0.298061,
-       (GLfloat) 0.212500, (GLfloat) - 0.298061, (GLfloat) - 0.460000,
-       (GLfloat) 0.273122, (GLfloat) - 0.460000, (GLfloat) 0.333061,
-       (GLfloat) 0.273122, (GLfloat) - 0.333061, (GLfloat) - 0.460000,
-       (GLfloat) 0.273122, (GLfloat) - 0.403061, (GLfloat) - 0.460000,
-       (GLfloat) 0.273122, (GLfloat) - 0.460000, (GLfloat) 0.403061,
-       (GLfloat) 0.212500, (GLfloat) - 0.520000, (GLfloat) 0.438061,
-       (GLfloat) 0.212500, (GLfloat) - 0.438061, (GLfloat) - 0.520000,
-       (GLfloat) 0.151878, (GLfloat) - 0.403061, (GLfloat) - 0.520000,
-       (GLfloat) 0.151878, (GLfloat) - 0.520000, (GLfloat) 0.403061,
-       (GLfloat) 0.151878, (GLfloat) - 0.333061, (GLfloat) - 0.520000,
-       (GLfloat) 0.151878, (GLfloat) - 0.520000, (GLfloat) 0.333061,
-       (GLfloat) 0.212500, (GLfloat) - 0.298061, (GLfloat) - 0.520000,
-       (GLfloat) 0.212500, (GLfloat) - 0.520000, (GLfloat) 0.298061,
-       (GLfloat) 0.273122, (GLfloat) - 0.333061, (GLfloat) - 0.520000,
-       (GLfloat) 0.273122, (GLfloat) - 0.520000, (GLfloat) 0.333061,
-       (GLfloat) 0.273122, (GLfloat) - 0.403061, (GLfloat) - 0.520000,
-       (GLfloat) 0.273122, (GLfloat) - 0.520000, (GLfloat) 0.403061,
-       (GLfloat) 0.212500, (GLfloat) - 0.438061, (GLfloat) - 0.600000,
-       (GLfloat) 0.212500, (GLfloat) - 0.600000, (GLfloat) 0.438061,
-       (GLfloat) 0.151878, (GLfloat) - 0.403061, (GLfloat) - 0.600000,
-       (GLfloat) 0.151878, (GLfloat) - 0.600000, (GLfloat) 0.403061,
-       (GLfloat) 0.151878, (GLfloat) - 0.600000, (GLfloat) 0.333061,
-       (GLfloat) 0.151878, (GLfloat) - 0.333061, (GLfloat) - 0.600000,
-       (GLfloat) 0.212500, (GLfloat) - 0.298061, (GLfloat) - 0.600000,
-       (GLfloat) 0.212500, (GLfloat) - 0.600000, (GLfloat) 0.298061,
-       (GLfloat) 0.273122, (GLfloat) - 0.333061, (GLfloat) - 0.600000,
-       (GLfloat) 0.273122, (GLfloat) - 0.600000, (GLfloat) 0.333061,
-       (GLfloat) 0.273122, (GLfloat) - 0.600000, (GLfloat) 0.403061,
-       (GLfloat) 0.273122, (GLfloat) - 0.403061, (GLfloat) - 0.600000,
-       (GLfloat) 0.212500, (GLfloat) - 0.660000, (GLfloat) 0.438061,
-       (GLfloat) 0.212500, (GLfloat) - 0.438061, (GLfloat) - 0.660000,
-       (GLfloat) 0.151878, (GLfloat) - 0.403061, (GLfloat) - 0.660000,
-       (GLfloat) 0.151878, (GLfloat) - 0.660000, (GLfloat) 0.403061,
-       (GLfloat) 0.151878, (GLfloat) - 0.333061, (GLfloat) - 0.660000,
-       (GLfloat) 0.151878, (GLfloat) - 0.660000, (GLfloat) 0.333061,
-       (GLfloat) 0.212500, (GLfloat) - 0.660000, (GLfloat) 0.298061,
-       (GLfloat) 0.212500, (GLfloat) - 0.298061, (GLfloat) - 0.660000,
-       (GLfloat) 0.273122, (GLfloat) - 0.660000, (GLfloat) 0.333061,
-       (GLfloat) 0.273122, (GLfloat) - 0.333061, (GLfloat) - 0.660000,
-       (GLfloat) 0.273122, (GLfloat) - 0.660000, (GLfloat) 0.403061,
-       (GLfloat) 0.273122, (GLfloat) - 0.403061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.460000, (GLfloat) 0.403061,
-       (GLfloat) - 0.273122, (GLfloat) - 0.403061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.460000, (GLfloat) 0.333061,
-       (GLfloat) - 0.273122, (GLfloat) - 0.333061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.298061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.460000, (GLfloat) 0.298061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.333061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.460000, (GLfloat) 0.333061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.403061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.460000, (GLfloat) 0.403061,
-       (GLfloat) - 0.212500, (GLfloat) - 0.460000, (GLfloat) 0.438061,
-       (GLfloat) - 0.212500, (GLfloat) - 0.438061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.520000, (GLfloat) 0.403061,
-       (GLfloat) - 0.273122, (GLfloat) - 0.403061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.333061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.520000, (GLfloat) 0.333061,
-       (GLfloat) - 0.212500, (GLfloat) - 0.520000, (GLfloat) 0.298061,
-       (GLfloat) - 0.212500, (GLfloat) - 0.298061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.333061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.520000, (GLfloat) 0.333061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.520000, (GLfloat) 0.403061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.403061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.520000, (GLfloat) 0.438061,
-       (GLfloat) - 0.212500, (GLfloat) - 0.438061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.600000, (GLfloat) 0.403061,
-       (GLfloat) - 0.273122, (GLfloat) - 0.403061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.600000, (GLfloat) 0.333061,
-       (GLfloat) - 0.273122, (GLfloat) - 0.333061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.600000, (GLfloat) 0.298061,
-       (GLfloat) - 0.212500, (GLfloat) - 0.298061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.333061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.600000, (GLfloat) 0.333061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.600000, (GLfloat) 0.403061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.403061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.438061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.600000, (GLfloat) 0.438061,
-       (GLfloat) - 0.273122, (GLfloat) - 0.660000, (GLfloat) 0.403061,
-       (GLfloat) - 0.273122, (GLfloat) - 0.403061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.333061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.660000, (GLfloat) 0.333061,
-       (GLfloat) - 0.212500, (GLfloat) - 0.298061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.660000, (GLfloat) 0.298061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.660000, (GLfloat) 0.333061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.333061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.660000, (GLfloat) 0.403061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.403061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.438061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.660000, (GLfloat) 0.438061,
-       (GLfloat) - 0.485622, (GLfloat) - 0.460000, (GLfloat) - 0.035000,
-       (GLfloat) - 0.485622, (GLfloat) 0.035000, (GLfloat) - 0.460000,
-       (GLfloat) - 0.425000, (GLfloat) 0.070000, (GLfloat) - 0.460000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.460000, (GLfloat) - 0.070000,
-       (GLfloat) - 0.364378, (GLfloat) 0.035000, (GLfloat) - 0.460000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.460000, (GLfloat) - 0.035000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.460000, (GLfloat) 0.035000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.035000, (GLfloat) - 0.460000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.460000, (GLfloat) 0.070000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.070000, (GLfloat) - 0.460000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.035000, (GLfloat) - 0.460000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.460000, (GLfloat) 0.035000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.520000, (GLfloat) - 0.035000,
-       (GLfloat) - 0.485622, (GLfloat) 0.035000, (GLfloat) - 0.520000,
-       (GLfloat) - 0.425000, (GLfloat) 0.070000, (GLfloat) - 0.520000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.520000, (GLfloat) - 0.070000,
-       (GLfloat) - 0.364378, (GLfloat) 0.035000, (GLfloat) - 0.520000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.520000, (GLfloat) - 0.035000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.035000, (GLfloat) - 0.520000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.520000, (GLfloat) 0.035000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.520000, (GLfloat) 0.070000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.070000, (GLfloat) - 0.520000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.035000, (GLfloat) - 0.520000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.520000, (GLfloat) 0.035000,
-       (GLfloat) - 0.485622, (GLfloat) 0.035000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.600000, (GLfloat) - 0.035000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.600000, (GLfloat) - 0.070000,
-       (GLfloat) - 0.425000, (GLfloat) 0.070000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.600000, (GLfloat) - 0.035000,
-       (GLfloat) - 0.364378, (GLfloat) 0.035000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.600000, (GLfloat) 0.035000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.035000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.600000, (GLfloat) 0.070000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.070000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.600000, (GLfloat) 0.035000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.035000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.660000, (GLfloat) - 0.035000,
-       (GLfloat) - 0.485622, (GLfloat) 0.035000, (GLfloat) - 0.660000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.660000, (GLfloat) - 0.070000,
-       (GLfloat) - 0.425000, (GLfloat) 0.070000, (GLfloat) - 0.660000,
-       (GLfloat) - 0.364378, (GLfloat) 0.035000, (GLfloat) - 0.660000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.660000, (GLfloat) - 0.035000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.660000, (GLfloat) 0.035000,
-       (GLfloat) - 0.364378, (GLfloat) - 0.035000, (GLfloat) - 0.660000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.070000, (GLfloat) - 0.660000,
-       (GLfloat) - 0.425000, (GLfloat) - 0.660000, (GLfloat) 0.070000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.660000, (GLfloat) 0.035000,
-       (GLfloat) - 0.485622, (GLfloat) - 0.035000, (GLfloat) - 0.660000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.460000, (GLfloat) - 0.438061,
-       (GLfloat) - 0.212500, (GLfloat) 0.438061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.151878, (GLfloat) 0.403061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.460000, (GLfloat) - 0.403061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.460000, (GLfloat) - 0.333061,
-       (GLfloat) - 0.151878, (GLfloat) 0.333061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.212500, (GLfloat) 0.298061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.460000, (GLfloat) - 0.298061,
-       (GLfloat) - 0.273122, (GLfloat) 0.333061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.460000, (GLfloat) - 0.333061,
-       (GLfloat) - 0.273122, (GLfloat) - 0.460000, (GLfloat) - 0.403061,
-       (GLfloat) - 0.273122, (GLfloat) 0.403061, (GLfloat) - 0.460000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.520000, (GLfloat) - 0.438061,
-       (GLfloat) - 0.212500, (GLfloat) 0.438061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.151878, (GLfloat) 0.403061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.520000, (GLfloat) - 0.403061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.520000, (GLfloat) - 0.333061,
-       (GLfloat) - 0.151878, (GLfloat) 0.333061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.212500, (GLfloat) 0.298061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.520000, (GLfloat) - 0.298061,
-       (GLfloat) - 0.273122, (GLfloat) 0.333061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.520000, (GLfloat) - 0.333061,
-       (GLfloat) - 0.273122, (GLfloat) 0.403061, (GLfloat) - 0.520000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.520000, (GLfloat) - 0.403061,
-       (GLfloat) - 0.212500, (GLfloat) 0.438061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.600000, (GLfloat) - 0.438061,
-       (GLfloat) - 0.151878, (GLfloat) - 0.600000, (GLfloat) - 0.403061,
-       (GLfloat) - 0.151878, (GLfloat) 0.403061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.151878, (GLfloat) 0.333061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.600000, (GLfloat) - 0.333061,
-       (GLfloat) - 0.212500, (GLfloat) - 0.600000, (GLfloat) - 0.298061,
-       (GLfloat) - 0.212500, (GLfloat) 0.298061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.600000, (GLfloat) - 0.333061,
-       (GLfloat) - 0.273122, (GLfloat) 0.333061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.600000, (GLfloat) - 0.403061,
-       (GLfloat) - 0.273122, (GLfloat) 0.403061, (GLfloat) - 0.600000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.660000, (GLfloat) - 0.438061,
-       (GLfloat) - 0.212500, (GLfloat) 0.438061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.660000, (GLfloat) - 0.403061,
-       (GLfloat) - 0.151878, (GLfloat) 0.403061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.151878, (GLfloat) - 0.660000, (GLfloat) - 0.333061,
-       (GLfloat) - 0.151878, (GLfloat) 0.333061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.212500, (GLfloat) - 0.660000, (GLfloat) - 0.298061,
-       (GLfloat) - 0.212500, (GLfloat) 0.298061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.660000, (GLfloat) - 0.333061,
-       (GLfloat) - 0.273122, (GLfloat) 0.333061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.273122, (GLfloat) 0.403061, (GLfloat) - 0.660000,
-       (GLfloat) - 0.273122, (GLfloat) - 0.660000, (GLfloat) - 0.403061,
-};
-
-static GLfloat ElbowBolts_normals[] =
-{
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866026, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.499999, (GLfloat) 0.866026, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866026, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866026, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866026, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866026, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) - 0.499999, (GLfloat) - 0.866026, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866026, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866026, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) - 0.866026, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.866025, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.866025, (GLfloat) 0.000000,
-       (GLfloat) 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866026,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.499999, (GLfloat) 0.000000, (GLfloat) - 0.866026,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866026,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866026,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866026,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866026,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.499999, (GLfloat) 0.000000, (GLfloat) 0.866026,
-       (GLfloat) - 1.000000, (GLfloat) - 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866026,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866026,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) 0.000000,
-       (GLfloat) 1.000000, (GLfloat) 0.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866026,
-       (GLfloat) - 0.500000, (GLfloat) 0.000000, (GLfloat) 0.866025,
-       (GLfloat) - 1.000000, (GLfloat) 0.000000, (GLfloat) 0.000000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.866025,
-       (GLfloat) 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-};
-
-static unsigned short int ElbowBolts_POLS[] =
-{
-       6, 241, 242, 245, 246, 248, 251, 1, 4, 253, 254, 242, 241, 1, 4, 254, 257, 245, 242, 1,
-       4, 257, 258, 246, 245, 1, 4, 258, 260, 248, 246, 1, 4, 260, 262, 251, 248, 1, 4, 262,
-       253, 241, 251, 1, 6, 253, 262, 260, 258, 257, 254, 1, 6, 264, 267, 268, 271, 273, 275, 1,
-       4, 277, 279, 267, 264, 1, 4, 279, 281, 268, 267, 1, 4, 281, 283, 271, 268, 1, 4, 283,
-       285, 273, 271, 1, 4, 285, 286, 275, 273, 1, 4, 286, 277, 264, 275, 1, 6, 277, 286, 285,
-       283, 281, 279, 1, 6, 193, 194, 196, 199, 201, 202, 1, 4, 205, 206, 194, 193, 1, 4, 206,
-       208, 196, 194, 1, 4, 208, 210, 199, 196, 1, 4, 210, 213, 201, 199, 1, 4, 213, 214, 202,
-       201, 1, 4, 214, 205, 193, 202, 1, 6, 205, 214, 213, 210, 208, 206, 1, 6, 216, 219, 221,
-       223, 225, 227, 1, 4, 229, 231, 219, 216, 1, 4, 231, 232, 221, 219, 1, 4, 232, 235, 223,
-       221, 1, 4, 235, 236, 225, 223, 1, 4, 236, 239, 227, 225, 1, 4, 239, 229, 216, 227, 1,
-       6, 229, 239, 236, 235, 232, 231, 1, 6, 145, 147, 148, 150, 152, 155, 1, 4, 157, 158, 147,
-       145, 1, 4, 158, 161, 148, 147, 1, 4, 161, 162, 150, 148, 1, 4, 162, 165, 152, 150, 1,
-       4, 165, 167, 155, 152, 1, 4, 167, 157, 145, 155, 1, 6, 157, 167, 165, 162, 161, 158, 1,
-       6, 169, 171, 173, 174, 177, 178, 1, 4, 181, 182, 171, 169, 1, 4, 182, 184, 173, 171, 1,
-       4, 184, 187, 174, 173, 1, 4, 187, 189, 177, 174, 1, 4, 189, 190, 178, 177, 1, 4, 190,
-       181, 169, 178, 1, 6, 181, 190, 189, 187, 184, 182, 1, 6, 96, 98, 101, 103, 105, 106, 1,
-       4, 109, 110, 98, 96, 1, 4, 110, 112, 101, 98, 1, 4, 112, 114, 103, 101, 1, 4, 114,
-       116, 105, 103, 1, 4, 116, 118, 106, 105, 1, 4, 118, 109, 96, 106, 1, 6, 109, 118, 116,
-       114, 112, 110, 1, 6, 120, 122, 125, 126, 128, 131, 1, 4, 133, 134, 122, 120, 1, 4, 134,
-       136, 125, 122, 1, 4, 136, 139, 126, 125, 1, 4, 139, 141, 128, 126, 1, 4, 141, 143, 131,
-       128, 1, 4, 143, 133, 120, 131, 1, 6, 133, 143, 141, 139, 136, 134, 1, 6, 48, 50, 53,
-    54, 56, 58, 1, 4, 61, 62, 50, 48, 1, 4, 62, 64, 53, 50, 1, 4, 64, 67, 54,
-     53, 1, 4, 67, 68, 56, 54, 1, 4, 68, 70, 58, 56, 1, 4, 70, 61, 48, 58, 1,
-   6, 61, 70, 68, 67, 64, 62, 1, 6, 72, 75, 77, 78, 80, 83, 1, 4, 85, 87, 75,
-     72, 1, 4, 87, 88, 77, 75, 1, 4, 88, 91, 78, 77, 1, 4, 91, 92, 80, 78, 1,
-    4, 92, 95, 83, 80, 1, 4, 95, 85, 72, 83, 1, 6, 85, 95, 92, 91, 88, 87, 1,
-    6, 24, 26, 28, 30, 32, 35, 1, 4, 36, 39, 26, 24, 1, 4, 39, 40, 28, 26, 1,
-     4, 40, 42, 30, 28, 1, 4, 42, 44, 32, 30, 1, 4, 44, 47, 35, 32, 1, 4, 47,
-       36, 24, 35, 1, 6, 36, 47, 44, 42, 40, 39, 1, 6, 1, 2, 4, 6, 8, 11, 1,
-       4, 13, 15, 2, 1, 1, 4, 15, 16, 4, 2, 1, 4, 16, 19, 6, 4, 1, 4, 19,
-       20, 8, 6, 1, 4, 20, 23, 11, 8, 1, 4, 23, 13, 1, 11, 1, 6, 13, 23, 20,
-       19, 16, 15, 1, 6, 240, 243, 244, 247, 249, 250, 1, 4, 252, 255, 243, 240, 1, 4, 255,
-       256, 244, 243, 1, 4, 256, 259, 247, 244, 1, 4, 259, 261, 249, 247, 1, 4, 261, 263, 250,
-       249, 1, 4, 263, 252, 240, 250, 1, 6, 252, 263, 261, 259, 256, 255, 1, 6, 265, 266, 269,
-       270, 272, 274, 1, 4, 276, 278, 266, 265, 1, 4, 278, 280, 269, 266, 1, 4, 280, 282, 270,
-       269, 1, 4, 282, 284, 272, 270, 1, 4, 284, 287, 274, 272, 1, 4, 287, 276, 265, 274, 1,
-       6, 276, 287, 284, 282, 280, 278, 1, 6, 192, 195, 197, 198, 200, 203, 1, 4, 204, 207, 195,
-       192, 1, 4, 207, 209, 197, 195, 1, 4, 209, 211, 198, 197, 1, 4, 211, 212, 200, 198, 1,
-       4, 212, 215, 203, 200, 1, 4, 215, 204, 192, 203, 1, 6, 204, 215, 212, 211, 209, 207, 1,
-       6, 217, 218, 220, 222, 224, 226, 1, 4, 228, 230, 218, 217, 1, 4, 230, 233, 220, 218, 1,
-       4, 233, 234, 222, 220, 1, 4, 234, 237, 224, 222, 1, 4, 237, 238, 226, 224, 1, 4, 238,
-       228, 217, 226, 1, 6, 228, 238, 237, 234, 233, 230, 1, 6, 144, 146, 149, 151, 153, 154, 1,
-       4, 156, 159, 146, 144, 1, 4, 159, 160, 149, 146, 1, 4, 160, 163, 151, 149, 1, 4, 163,
-       164, 153, 151, 1, 4, 164, 166, 154, 153, 1, 4, 166, 156, 144, 154, 1, 6, 156, 166, 164,
-       163, 160, 159, 1, 6, 168, 170, 172, 175, 176, 179, 1, 4, 180, 183, 170, 168, 1, 4, 183,
-       185, 172, 170, 1, 4, 185, 186, 175, 172, 1, 4, 186, 188, 176, 175, 1, 4, 188, 191, 179,
-       176, 1, 4, 191, 180, 168, 179, 1, 6, 180, 191, 188, 186, 185, 183, 1, 6, 97, 99, 100,
-       102, 104, 107, 1, 4, 108, 111, 99, 97, 1, 4, 111, 113, 100, 99, 1, 4, 113, 115, 102,
-       100, 1, 4, 115, 117, 104, 102, 1, 4, 117, 119, 107, 104, 1, 4, 119, 108, 97, 107, 1,
-       6, 108, 119, 117, 115, 113, 111, 1, 6, 121, 123, 124, 127, 129, 130, 1, 4, 132, 135, 123,
-       121, 1, 4, 135, 137, 124, 123, 1, 4, 137, 138, 127, 124, 1, 4, 138, 140, 129, 127, 1,
-       4, 140, 142, 130, 129, 1, 4, 142, 132, 121, 130, 1, 6, 132, 142, 140, 138, 137, 135, 1,
-    6, 49, 51, 52, 55, 57, 59, 1, 4, 60, 63, 51, 49, 1, 4, 63, 65, 52, 51, 1,
-     4, 65, 66, 55, 52, 1, 4, 66, 69, 57, 55, 1, 4, 69, 71, 59, 57, 1, 4, 71,
-   60, 49, 59, 1, 6, 60, 71, 69, 66, 65, 63, 1, 6, 73, 74, 76, 79, 81, 82, 1,
-     4, 84, 86, 74, 73, 1, 4, 86, 89, 76, 74, 1, 4, 89, 90, 79, 76, 1, 4, 90,
-    93, 81, 79, 1, 4, 93, 94, 82, 81, 1, 4, 94, 84, 73, 82, 1, 6, 84, 94, 93,
-    90, 89, 86, 1, 6, 25, 27, 29, 31, 33, 34, 1, 4, 37, 38, 27, 25, 1, 4, 38,
-    41, 29, 27, 1, 4, 41, 43, 31, 29, 1, 4, 43, 45, 33, 31, 1, 4, 45, 46, 34,
-       33, 1, 4, 46, 37, 25, 34, 1, 6, 37, 46, 45, 43, 41, 38, 1, 6, 0, 3, 5,
-       7, 9, 10, 1, 4, 12, 14, 3, 0, 1, 4, 14, 17, 5, 3, 1, 4, 17, 18, 7,
-       5, 1, 4, 18, 21, 9, 7, 1, 4, 21, 22, 10, 9, 1, 4, 22, 12, 0, 10, 1,
-       6, 12, 22, 21, 18, 17, 14, 1,
-       0
-};
-
-struct lwo  LWO_ElbowBolts =
-{
-       288,                    /* number of points */
-       ElbowBolts_PNTS, ElbowBolts_normals, ElbowBolts_POLS, 0L
-};
-
-static GLfloat ElbowCoins_PNTS[] =
-{
-       (GLfloat) 0.000000, (GLfloat) - 0.520000, (GLfloat) - 0.500000,
-       (GLfloat) 0.097545, (GLfloat) - 0.520000, (GLfloat) - 0.490393,
-       (GLfloat) 0.191342, (GLfloat) - 0.520000, (GLfloat) - 0.461940,
-       (GLfloat) 0.277785, (GLfloat) - 0.520000, (GLfloat) - 0.415735,
-       (GLfloat) 0.353553, (GLfloat) - 0.520000, (GLfloat) - 0.353553,
-       (GLfloat) 0.415735, (GLfloat) - 0.520000, (GLfloat) - 0.277785,
-       (GLfloat) 0.461940, (GLfloat) - 0.520000, (GLfloat) - 0.191342,
-       (GLfloat) 0.490393, (GLfloat) - 0.520000, (GLfloat) - 0.097545,
-       (GLfloat) 0.500000, (GLfloat) - 0.520000, (GLfloat) - 0.000000,
-       (GLfloat) 0.490393, (GLfloat) - 0.520000, (GLfloat) 0.097545,
-       (GLfloat) 0.461940, (GLfloat) - 0.520000, (GLfloat) 0.191342,
-       (GLfloat) 0.415735, (GLfloat) - 0.520000, (GLfloat) 0.277785,
-       (GLfloat) 0.353553, (GLfloat) - 0.520000, (GLfloat) 0.353553,
-       (GLfloat) 0.277785, (GLfloat) - 0.520000, (GLfloat) 0.415735,
-       (GLfloat) 0.191342, (GLfloat) - 0.520000, (GLfloat) 0.461940,
-       (GLfloat) 0.097545, (GLfloat) - 0.520000, (GLfloat) 0.490393,
-       (GLfloat) 0.000000, (GLfloat) - 0.520000, (GLfloat) 0.500000,
-       (GLfloat) - 0.097545, (GLfloat) - 0.520000, (GLfloat) 0.490393,
-       (GLfloat) - 0.191342, (GLfloat) - 0.520000, (GLfloat) 0.461940,
-       (GLfloat) - 0.277785, (GLfloat) - 0.520000, (GLfloat) 0.415735,
-       (GLfloat) - 0.353553, (GLfloat) - 0.520000, (GLfloat) 0.353553,
-       (GLfloat) - 0.415735, (GLfloat) - 0.520000, (GLfloat) 0.277785,
-       (GLfloat) - 0.461940, (GLfloat) - 0.520000, (GLfloat) 0.191342,
-       (GLfloat) - 0.490393, (GLfloat) - 0.520000, (GLfloat) 0.097545,
-       (GLfloat) - 0.500000, (GLfloat) - 0.520000, (GLfloat) 0.000000,
-       (GLfloat) - 0.490393, (GLfloat) - 0.520000, (GLfloat) - 0.097545,
-       (GLfloat) - 0.461940, (GLfloat) - 0.520000, (GLfloat) - 0.191342,
-       (GLfloat) - 0.415735, (GLfloat) - 0.520000, (GLfloat) - 0.277785,
-       (GLfloat) - 0.353553, (GLfloat) - 0.520000, (GLfloat) - 0.353553,
-       (GLfloat) - 0.277785, (GLfloat) - 0.520000, (GLfloat) - 0.415735,
-       (GLfloat) - 0.191342, (GLfloat) - 0.520000, (GLfloat) - 0.461940,
-       (GLfloat) - 0.097545, (GLfloat) - 0.520000, (GLfloat) - 0.490393,
-       (GLfloat) 0.000000, (GLfloat) - 0.600000, (GLfloat) - 0.500000,
-       (GLfloat) 0.097545, (GLfloat) - 0.600000, (GLfloat) - 0.490393,
-       (GLfloat) 0.191342, (GLfloat) - 0.600000, (GLfloat) - 0.461940,
-       (GLfloat) 0.277785, (GLfloat) - 0.600000, (GLfloat) - 0.415735,
-       (GLfloat) 0.353553, (GLfloat) - 0.600000, (GLfloat) - 0.353553,
-       (GLfloat) 0.415735, (GLfloat) - 0.600000, (GLfloat) - 0.277785,
-       (GLfloat) 0.461940, (GLfloat) - 0.600000, (GLfloat) - 0.191342,
-       (GLfloat) 0.490393, (GLfloat) - 0.600000, (GLfloat) - 0.097545,
-       (GLfloat) 0.500000, (GLfloat) - 0.600000, (GLfloat) - 0.000000,
-       (GLfloat) 0.490393, (GLfloat) - 0.600000, (GLfloat) 0.097545,
-       (GLfloat) 0.461940, (GLfloat) - 0.600000, (GLfloat) 0.191342,
-       (GLfloat) 0.415735, (GLfloat) - 0.600000, (GLfloat) 0.277785,
-       (GLfloat) 0.353553, (GLfloat) - 0.600000, (GLfloat) 0.353553,
-       (GLfloat) 0.277785, (GLfloat) - 0.600000, (GLfloat) 0.415735,
-       (GLfloat) 0.191342, (GLfloat) - 0.600000, (GLfloat) 0.461940,
-       (GLfloat) 0.097545, (GLfloat) - 0.600000, (GLfloat) 0.490393,
-       (GLfloat) 0.000000, (GLfloat) - 0.600000, (GLfloat) 0.500000,
-       (GLfloat) - 0.097545, (GLfloat) - 0.600000, (GLfloat) 0.490393,
-       (GLfloat) - 0.191342, (GLfloat) - 0.600000, (GLfloat) 0.461940,
-       (GLfloat) - 0.277785, (GLfloat) - 0.600000, (GLfloat) 0.415735,
-       (GLfloat) - 0.353553, (GLfloat) - 0.600000, (GLfloat) 0.353553,
-       (GLfloat) - 0.415735, (GLfloat) - 0.600000, (GLfloat) 0.277785,
-       (GLfloat) - 0.461940, (GLfloat) - 0.600000, (GLfloat) 0.191342,
-       (GLfloat) - 0.490393, (GLfloat) - 0.600000, (GLfloat) 0.097545,
-       (GLfloat) - 0.500000, (GLfloat) - 0.600000, (GLfloat) 0.000000,
-       (GLfloat) - 0.490393, (GLfloat) - 0.600000, (GLfloat) - 0.097545,
-       (GLfloat) - 0.461940, (GLfloat) - 0.600000, (GLfloat) - 0.191342,
-       (GLfloat) - 0.415735, (GLfloat) - 0.600000, (GLfloat) - 0.277785,
-       (GLfloat) - 0.353553, (GLfloat) - 0.600000, (GLfloat) - 0.353553,
-       (GLfloat) - 0.277785, (GLfloat) - 0.600000, (GLfloat) - 0.415735,
-       (GLfloat) - 0.191342, (GLfloat) - 0.600000, (GLfloat) - 0.461940,
-       (GLfloat) - 0.097545, (GLfloat) - 0.600000, (GLfloat) - 0.490393,
-       (GLfloat) 0.000000, (GLfloat) 0.500000, (GLfloat) - 0.520000,
-       (GLfloat) 0.097545, (GLfloat) 0.490393, (GLfloat) - 0.520000,
-       (GLfloat) 0.191342, (GLfloat) 0.461940, (GLfloat) - 0.520000,
-       (GLfloat) 0.277785, (GLfloat) 0.415735, (GLfloat) - 0.520000,
-       (GLfloat) 0.353553, (GLfloat) 0.353553, (GLfloat) - 0.520000,
-       (GLfloat) 0.415735, (GLfloat) 0.277785, (GLfloat) - 0.520000,
-       (GLfloat) 0.461940, (GLfloat) 0.191342, (GLfloat) - 0.520000,
-       (GLfloat) 0.490393, (GLfloat) 0.097545, (GLfloat) - 0.520000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.520000,
-       (GLfloat) 0.490393, (GLfloat) - 0.097545, (GLfloat) - 0.520000,
-       (GLfloat) 0.461940, (GLfloat) - 0.191342, (GLfloat) - 0.520000,
-       (GLfloat) 0.415735, (GLfloat) - 0.277785, (GLfloat) - 0.520000,
-       (GLfloat) 0.353553, (GLfloat) - 0.353553, (GLfloat) - 0.520000,
-       (GLfloat) 0.277785, (GLfloat) - 0.415735, (GLfloat) - 0.520000,
-       (GLfloat) 0.191342, (GLfloat) - 0.461940, (GLfloat) - 0.520000,
-       (GLfloat) 0.097545, (GLfloat) - 0.490393, (GLfloat) - 0.520000,
-       (GLfloat) 0.000000, (GLfloat) - 0.500000, (GLfloat) - 0.520000,
-       (GLfloat) - 0.097545, (GLfloat) - 0.490393, (GLfloat) - 0.520000,
-       (GLfloat) - 0.191342, (GLfloat) - 0.461940, (GLfloat) - 0.520000,
-       (GLfloat) - 0.277785, (GLfloat) - 0.415735, (GLfloat) - 0.520000,
-       (GLfloat) - 0.353553, (GLfloat) - 0.353553, (GLfloat) - 0.520000,
-       (GLfloat) - 0.415735, (GLfloat) - 0.277785, (GLfloat) - 0.520000,
-       (GLfloat) - 0.461940, (GLfloat) - 0.191342, (GLfloat) - 0.520000,
-       (GLfloat) - 0.490393, (GLfloat) - 0.097545, (GLfloat) - 0.520000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.520000,
-       (GLfloat) - 0.490393, (GLfloat) 0.097545, (GLfloat) - 0.520000,
-       (GLfloat) - 0.461940, (GLfloat) 0.191342, (GLfloat) - 0.520000,
-       (GLfloat) - 0.415735, (GLfloat) 0.277785, (GLfloat) - 0.520000,
-       (GLfloat) - 0.353553, (GLfloat) 0.353553, (GLfloat) - 0.520000,
-       (GLfloat) - 0.277785, (GLfloat) 0.415735, (GLfloat) - 0.520000,
-       (GLfloat) - 0.191342, (GLfloat) 0.461940, (GLfloat) - 0.520000,
-       (GLfloat) - 0.097545, (GLfloat) 0.490393, (GLfloat) - 0.520000,
-       (GLfloat) 0.000000, (GLfloat) 0.500000, (GLfloat) - 0.600000,
-       (GLfloat) 0.097545, (GLfloat) 0.490393, (GLfloat) - 0.600000,
-       (GLfloat) 0.191342, (GLfloat) 0.461940, (GLfloat) - 0.600000,
-       (GLfloat) 0.277785, (GLfloat) 0.415735, (GLfloat) - 0.600000,
-       (GLfloat) 0.353553, (GLfloat) 0.353553, (GLfloat) - 0.600000,
-       (GLfloat) 0.415735, (GLfloat) 0.277785, (GLfloat) - 0.600000,
-       (GLfloat) 0.461940, (GLfloat) 0.191342, (GLfloat) - 0.600000,
-       (GLfloat) 0.490393, (GLfloat) 0.097545, (GLfloat) - 0.600000,
-       (GLfloat) 0.500000, (GLfloat) 0.000000, (GLfloat) - 0.600000,
-       (GLfloat) 0.490393, (GLfloat) - 0.097545, (GLfloat) - 0.600000,
-       (GLfloat) 0.461940, (GLfloat) - 0.191342, (GLfloat) - 0.600000,
-       (GLfloat) 0.415735, (GLfloat) - 0.277785, (GLfloat) - 0.600000,
-       (GLfloat) 0.353553, (GLfloat) - 0.353553, (GLfloat) - 0.600000,
-       (GLfloat) 0.277785, (GLfloat) - 0.415735, (GLfloat) - 0.600000,
-       (GLfloat) 0.191342, (GLfloat) - 0.461940, (GLfloat) - 0.600000,
-       (GLfloat) 0.097545, (GLfloat) - 0.490393, (GLfloat) - 0.600000,
-       (GLfloat) 0.000000, (GLfloat) - 0.500000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.097545, (GLfloat) - 0.490393, (GLfloat) - 0.600000,
-       (GLfloat) - 0.191342, (GLfloat) - 0.461940, (GLfloat) - 0.600000,
-       (GLfloat) - 0.277785, (GLfloat) - 0.415735, (GLfloat) - 0.600000,
-       (GLfloat) - 0.353553, (GLfloat) - 0.353553, (GLfloat) - 0.600000,
-       (GLfloat) - 0.415735, (GLfloat) - 0.277785, (GLfloat) - 0.600000,
-       (GLfloat) - 0.461940, (GLfloat) - 0.191342, (GLfloat) - 0.600000,
-       (GLfloat) - 0.490393, (GLfloat) - 0.097545, (GLfloat) - 0.600000,
-       (GLfloat) - 0.500000, (GLfloat) - 0.000000, (GLfloat) - 0.600000,
-       (GLfloat) - 0.490393, (GLfloat) 0.097545, (GLfloat) - 0.600000,
-       (GLfloat) - 0.461940, (GLfloat) 0.191342, (GLfloat) - 0.600000,
-       (GLfloat) - 0.415735, (GLfloat) 0.277785, (GLfloat) - 0.600000,
-       (GLfloat) - 0.353553, (GLfloat) 0.353553, (GLfloat) - 0.600000,
-       (GLfloat) - 0.277785, (GLfloat) 0.415735, (GLfloat) - 0.600000,
-       (GLfloat) - 0.191342, (GLfloat) 0.461940, (GLfloat) - 0.600000,
-       (GLfloat) - 0.097545, (GLfloat) 0.490393, (GLfloat) - 0.600000,
-};
-
-static GLfloat ElbowCoins_normals[] =
-{
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) 1.000000,
-       (GLfloat) 0.098017, (GLfloat) 0.995185, (GLfloat) 0.000000,
-       (GLfloat) 0.290285, (GLfloat) 0.956940, (GLfloat) 0.000000,
-       (GLfloat) 0.471397, (GLfloat) 0.881921, (GLfloat) 0.000000,
-       (GLfloat) 0.634393, (GLfloat) 0.773010, (GLfloat) 0.000000,
-       (GLfloat) 0.773010, (GLfloat) 0.634393, (GLfloat) 0.000000,
-       (GLfloat) 0.881921, (GLfloat) 0.471397, (GLfloat) 0.000000,
-       (GLfloat) 0.956940, (GLfloat) 0.290285, (GLfloat) 0.000000,
-       (GLfloat) 0.995185, (GLfloat) 0.098017, (GLfloat) 0.000000,
-       (GLfloat) 0.995185, (GLfloat) - 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) 0.956940, (GLfloat) - 0.290285, (GLfloat) - 0.000000,
-       (GLfloat) 0.881921, (GLfloat) - 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) 0.773010, (GLfloat) - 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) 0.634393, (GLfloat) - 0.773010, (GLfloat) - 0.000000,
-       (GLfloat) 0.471397, (GLfloat) - 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) 0.290285, (GLfloat) - 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) 0.098017, (GLfloat) - 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) - 0.098017, (GLfloat) - 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) - 0.290285, (GLfloat) - 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) - 0.471397, (GLfloat) - 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) - 0.634393, (GLfloat) - 0.773010, (GLfloat) - 0.000000,
-       (GLfloat) - 0.773010, (GLfloat) - 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) - 0.881921, (GLfloat) - 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) - 0.956940, (GLfloat) - 0.290285, (GLfloat) - 0.000000,
-       (GLfloat) - 0.995185, (GLfloat) - 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) - 0.995185, (GLfloat) 0.098017, (GLfloat) - 0.000000,
-       (GLfloat) - 0.956940, (GLfloat) 0.290285, (GLfloat) - 0.000000,
-       (GLfloat) - 0.881921, (GLfloat) 0.471397, (GLfloat) - 0.000000,
-       (GLfloat) - 0.773010, (GLfloat) 0.634393, (GLfloat) - 0.000000,
-       (GLfloat) - 0.634393, (GLfloat) 0.773010, (GLfloat) - 0.000000,
-       (GLfloat) - 0.471397, (GLfloat) 0.881921, (GLfloat) - 0.000000,
-       (GLfloat) - 0.290285, (GLfloat) 0.956940, (GLfloat) - 0.000000,
-       (GLfloat) - 0.098017, (GLfloat) 0.995185, (GLfloat) - 0.000000,
-       (GLfloat) - 0.000000, (GLfloat) 0.000000, (GLfloat) - 1.000000,
-       (GLfloat) - 0.000000, (GLfloat) 1.000000, (GLfloat) - 0.000000,
-       (GLfloat) 0.098017, (GLfloat) 0.000000, (GLfloat) - 0.995185,
-       (GLfloat) 0.290285, (GLfloat) 0.000000, (GLfloat) - 0.956940,
-       (GLfloat) 0.471397, (GLfloat) 0.000000, (GLfloat) - 0.881921,
-       (GLfloat) 0.634393, (GLfloat) 0.000000, (GLfloat) - 0.773010,
-       (GLfloat) 0.773010, (GLfloat) 0.000000, (GLfloat) - 0.634393,
-       (GLfloat) 0.881921, (GLfloat) 0.000000, (GLfloat) - 0.471397,
-       (GLfloat) 0.956940, (GLfloat) 0.000000, (GLfloat) - 0.290285,
-       (GLfloat) 0.995185, (GLfloat) 0.000000, (GLfloat) - 0.098017,
-       (GLfloat) 0.995185, (GLfloat) 0.000000, (GLfloat) 0.098017,
-       (GLfloat) 0.956940, (GLfloat) 0.000000, (GLfloat) 0.290285,
-       (GLfloat) 0.881921, (GLfloat) 0.000000, (GLfloat) 0.471397,
-       (GLfloat) 0.773010, (GLfloat) 0.000000, (GLfloat) 0.634393,
-       (GLfloat) 0.634393, (GLfloat) 0.000000, (GLfloat) 0.773010,
-       (GLfloat) 0.471397, (GLfloat) 0.000000, (GLfloat) 0.881921,
-       (GLfloat) 0.290285, (GLfloat) 0.000000, (GLfloat) 0.956940,
-       (GLfloat) 0.098017, (GLfloat) 0.000000, (GLfloat) 0.995185,
-       (GLfloat) - 0.098017, (GLfloat) 0.000000, (GLfloat) 0.995185,
-       (GLfloat) - 0.290285, (GLfloat) 0.000000, (GLfloat) 0.956940,
-       (GLfloat) - 0.471397, (GLfloat) 0.000000, (GLfloat) 0.881921,
-       (GLfloat) - 0.634393, (GLfloat) 0.000000, (GLfloat) 0.773010,
-       (GLfloat) - 0.773010, (GLfloat) 0.000000, (GLfloat) 0.634393,
-       (GLfloat) - 0.881921, (GLfloat) 0.000000, (GLfloat) 0.471397,
-       (GLfloat) - 0.956940, (GLfloat) 0.000000, (GLfloat) 0.290285,
-       (GLfloat) - 0.995185, (GLfloat) - 0.000000, (GLfloat) 0.098017,
-       (GLfloat) - 0.995185, (GLfloat) - 0.000000, (GLfloat) - 0.098017,
-       (GLfloat) - 0.956940, (GLfloat) - 0.000000, (GLfloat) - 0.290285,
-       (GLfloat) - 0.881921, (GLfloat) - 0.000000, (GLfloat) - 0.471397,
-       (GLfloat) - 0.773010, (GLfloat) - 0.000000, (GLfloat) - 0.634393,
-       (GLfloat) - 0.634393, (GLfloat) - 0.000000, (GLfloat) - 0.773010,
-       (GLfloat) - 0.471397, (GLfloat) - 0.000000, (GLfloat) - 0.881921,
-       (GLfloat) - 0.290285, (GLfloat) - 0.000000, (GLfloat) - 0.956940,
-       (GLfloat) - 0.098017, (GLfloat) - 0.000000, (GLfloat) - 0.995185,
-       (GLfloat) - 0.000000, (GLfloat) - 1.000000, (GLfloat) - 0.000000,
-};
-
-static unsigned short int ElbowCoins_POLS[] =
-{
-       32, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 1, 4, 96, 97, 65, 64, 1,
-   4, 97, 98, 66, 65, 1, 4, 98, 99, 67, 66, 1, 4, 99, 100, 68, 67, 1, 4, 100,
-       101, 69, 68, 1, 4, 101, 102, 70, 69, 1, 4, 102, 103, 71, 70, 1, 4, 103, 104, 72,
-71, 1, 4, 104, 105, 73, 72, 1, 4, 105, 106, 74, 73, 1, 4, 106, 107, 75, 74, 1,
-       4, 107, 108, 76, 75, 1, 4, 108, 109, 77, 76, 1, 4, 109, 110, 78, 77, 1, 4, 110,
-       111, 79, 78, 1, 4, 111, 112, 80, 79, 1, 4, 112, 113, 81, 80, 1, 4, 113, 114, 82,
-81, 1, 4, 114, 115, 83, 82, 1, 4, 115, 116, 84, 83, 1, 4, 116, 117, 85, 84, 1,
-       4, 117, 118, 86, 85, 1, 4, 118, 119, 87, 86, 1, 4, 119, 120, 88, 87, 1, 4, 120,
-       121, 89, 88, 1, 4, 121, 122, 90, 89, 1, 4, 122, 123, 91, 90, 1, 4, 123, 124, 92,
-91, 1, 4, 124, 125, 93, 92, 1, 4, 125, 126, 94, 93, 1, 4, 126, 127, 95, 94, 1,
-       4, 127, 96, 64, 95, 1, 32, 96, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116,
-       115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 1,
-       32, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
-   19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 1, 4, 32, 33, 1, 0, 1,
-       4, 33, 34, 2, 1, 1, 4, 34, 35, 3, 2, 1, 4, 35, 36, 4, 3, 1, 4, 36,
-       37, 5, 4, 1, 4, 37, 38, 6, 5, 1, 4, 38, 39, 7, 6, 1, 4, 39, 40, 8,
-       7, 1, 4, 40, 41, 9, 8, 1, 4, 41, 42, 10, 9, 1, 4, 42, 43, 11, 10, 1,
-     4, 43, 44, 12, 11, 1, 4, 44, 45, 13, 12, 1, 4, 45, 46, 14, 13, 1, 4, 46,
-    47, 15, 14, 1, 4, 47, 48, 16, 15, 1, 4, 48, 49, 17, 16, 1, 4, 49, 50, 18,
-     17, 1, 4, 50, 51, 19, 18, 1, 4, 51, 52, 20, 19, 1, 4, 52, 53, 21, 20, 1,
-     4, 53, 54, 22, 21, 1, 4, 54, 55, 23, 22, 1, 4, 55, 56, 24, 23, 1, 4, 56,
-    57, 25, 24, 1, 4, 57, 58, 26, 25, 1, 4, 58, 59, 27, 26, 1, 4, 59, 60, 28,
-     27, 1, 4, 60, 61, 29, 28, 1, 4, 61, 62, 30, 29, 1, 4, 62, 63, 31, 30, 1,
- 4, 63, 32, 0, 31, 1, 32, 32, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52,
-51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 1,
-       0
-};
-
-struct lwo  LWO_ElbowCoins =
-{
-       128,                    /* number of points */
-       ElbowCoins_PNTS, ElbowCoins_normals, ElbowCoins_POLS, 0L
-};
-
-#endif /* USE_GL */
-
-/* End of pipeobjs.c */
diff --git a/hacks/glx/pipes.c b/hacks/glx/pipes.c
deleted file mode 100644 (file)
index 926b7e3..0000000
+++ /dev/null
@@ -1,1035 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* pipes --- 3D selfbuiding pipe system */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)pipes.c      4.07 97/11/24 xlockmore";
-
-#endif
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * This program was inspired on a WindowsNT(R)'s screen saver. It was written 
- * from scratch and it was not based on any other source code.
- *
- * ==========================================================================
- * The routine myElbow is derivated from the doughnut routine from the MesaGL
- * library (more especifically the Mesaaux library) written by Brian Paul.
- * ==========================================================================
- *
- * Thanks goes to Brian Paul for making it possible and inexpensive to use
- * OpenGL at home.
- *
- * Since I'm not a native English speaker, my apologies for any grammatical
- * mistake.
- *
- * My e-mail address is
- * m-vianna@usa.net
- * Marcelo F. Vianna (Apr-09-1997)
- *
- * Revision History:
- * 29-Apr-97: Factory equipment by Ed Mackey.  Productive day today, eh?
- * 29-Apr-97: Less tight turns Jeff Epler <jepler@inetnebr.com>
- * 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna
- */
-
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Pipes"
-# define HACK_INIT                                     init_pipes
-# define HACK_DRAW                                     draw_pipes
-# define pipes_opts                                    xlockmore_opts
-# define DEFAULTS      "*delay:                100     \n"                     \
-                                       "*count:                2       \n"                     \
-                                       "*cycles:               5       \n"                     \
-                                       "*size:                 500     \n"                     \
-                                       "*fisheye:              True    \n"                     \
-                                       "*tightturns:   False   \n"                     \
-                                       "*rotatepipes:  True    \n"
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-#include <GL/glu.h>
-#include "buildlwo.h"
-
-#define DEF_FACTORY     "2"
-#define DEF_FISHEYE     "True"
-#define DEF_TIGHTTURNS  "False"
-#define DEF_ROTATEPIPES "True"
-#define NofSysTypes     3
-
-static int  factory;
-static Bool fisheye, tightturns, rotatepipes;
-
-static XrmOptionDescRec opts[] =
-{
-       {"-factory", ".pipes.factory", XrmoptionSepArg, (caddr_t) NULL},
-       {"-fisheye", ".pipes.fisheye", XrmoptionNoArg, (caddr_t) "on"},
-       {"+fisheye", ".pipes.fisheye", XrmoptionNoArg, (caddr_t) "off"},
-       {"-tightturns", ".pipes.tightturns", XrmoptionNoArg, (caddr_t) "on"},
-       {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, (caddr_t) "off"},
-      {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "on"},
-      {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "off"}
-};
-static argtype vars[] =
-{
-       {(caddr_t *) & factory, "factory", "Factory", DEF_FACTORY, t_Int},
-       {(caddr_t *) & fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool},
-       {(caddr_t *) & tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool},
-       {(caddr_t *) & rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool}
-};
-static OptionStruct desc[] =
-{
-       {"-factory num", "how much extra equipment in pipes (0 for none)"},
-       {"-/+fisheye", "turn on/off zoomed-in view of pipes"},
-       {"-/+tightturns", "turn on/off tight turns"},
-       {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"}
-};
-
-ModeSpecOpt pipes_opts =
-{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   pipes_description =
-{"pipes", "init_pipes", "draw_pipes", "release_pipes",
-#if defined( MESA ) && defined( SLOW )
- "draw_pipes",
-#else
- "change_pipes",
-#endif
- "change_pipes", NULL, &pipes_opts,
- 1000, 2, 5, 500, 4, 1.0, "",
- "Shows a selfbuilding pipe system", 0, NULL};
-
-#endif
-
-#define Scale4Window               0.1
-#define Scale4Iconic               0.07
-
-#define one_third                  0.3333333333333333333
-
-#define dirNone -1
-#define dirUP 0
-#define dirDOWN 1
-#define dirLEFT 2
-#define dirRIGHT 3
-#define dirNEAR 4
-#define dirFAR 5
-
-#define HCELLS 33
-#define VCELLS 25
-#define DEFINEDCOLORS 7
-#define elbowradius 0.5
-
-/*************************************************************************/
-
-typedef struct {
-#if defined( MESA ) && defined( SLOW )
-       int         flip;
-#endif
-       GLint       WindH, WindW;
-       int         Cells[HCELLS][VCELLS][HCELLS];
-       int         usedcolors[DEFINEDCOLORS];
-       int         directions[6];
-       int         ndirections;
-       int         nowdir, olddir;
-       int         system_number;
-       int         counter;
-       int         PX, PY, PZ;
-       int         number_of_systems;
-       int         system_type;
-       int         system_length;
-       int         turncounter;
-       Window      window;
-       float      *system_color;
-       GLfloat     initial_rotation;
-       GLuint      valve, bolts, betweenbolts, elbowbolts, elbowcoins;
-       GLuint      guagehead, guageface, guagedial, guageconnector;
-       GLXContext *glx_context;
-} pipesstruct;
-
-extern struct lwo LWO_BigValve, LWO_PipeBetweenBolts, LWO_Bolts3D;
-extern struct lwo LWO_GuageHead, LWO_GuageFace, LWO_GuageDial, LWO_GuageConnector;
-extern struct lwo LWO_ElbowBolts, LWO_ElbowCoins;
-
-static float front_shininess[] =
-{60.0};
-static float front_specular[] =
-{0.7, 0.7, 0.7, 1.0};
-static float ambient0[] =
-{0.4, 0.4, 0.4, 1.0};
-static float diffuse0[] =
-{1.0, 1.0, 1.0, 1.0};
-static float ambient1[] =
-{0.2, 0.2, 0.2, 1.0};
-static float diffuse1[] =
-{0.5, 0.5, 0.5, 1.0};
-static float position0[] =
-{1.0, 1.0, 1.0, 0.0};
-static float position1[] =
-{-1.0, -1.0, 1.0, 0.0};
-static float lmodel_ambient[] =
-{0.5, 0.5, 0.5, 1.0};
-static float lmodel_twoside[] =
-{GL_TRUE};
-
-static float MaterialRed[] =
-{0.7, 0.0, 0.0, 1.0};
-static float MaterialGreen[] =
-{0.1, 0.5, 0.2, 1.0};
-static float MaterialBlue[] =
-{0.0, 0.0, 0.7, 1.0};
-static float MaterialCyan[] =
-{0.2, 0.5, 0.7, 1.0};
-static float MaterialYellow[] =
-{0.7, 0.7, 0.0, 1.0};
-static float MaterialMagenta[] =
-{0.6, 0.2, 0.5, 1.0};
-static float MaterialWhite[] =
-{0.7, 0.7, 0.7, 1.0};
-static float MaterialGray[] =
-{0.2, 0.2, 0.2, 1.0};
-
-static pipesstruct *pipes = NULL;
-
-
-static void
-MakeTube(int direction)
-{
-       float       an;
-       float       SINan_3, COSan_3;
-
-       /*dirUP    = 00000000 */
-       /*dirDOWN  = 00000001 */
-       /*dirLEFT  = 00000010 */
-       /*dirRIGHT = 00000011 */
-       /*dirNEAR  = 00000100 */
-       /*dirFAR   = 00000101 */
-
-       if (!(direction & 4)) {
-               glRotatef(90.0, (direction & 2) ? 0.0 : 1.0,
-                         (direction & 2) ? 1.0 : 0.0, 0.0);
-       }
-       glBegin(GL_QUAD_STRIP);
-       for (an = 0.0; an <= 2.0 * M_PI; an += M_PI / 12.0) {
-               glNormal3f((COSan_3 = cos(an) / 3.0), (SINan_3 = sin(an) / 3.0), 0.0);
-               glVertex3f(COSan_3, SINan_3, one_third);
-               glVertex3f(COSan_3, SINan_3, -one_third);
-       }
-       glEnd();
-}
-
-static void
-mySphere(float radius)
-{
-       GLUquadricObj *quadObj;
-
-       quadObj = gluNewQuadric();
-       gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
-       gluSphere(quadObj, radius, 16, 16);
-       gluDeleteQuadric(quadObj);
-}
-
-static void
-myElbow(ModeInfo * mi, int bolted)
-{
-#define nsides 25
-#define rings 25
-#define r one_third
-#define R one_third
-
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
-       int         i, j;
-       GLfloat     p0[3], p1[3], p2[3], p3[3];
-       GLfloat     n0[3], n1[3], n2[3], n3[3];
-       GLfloat     COSphi, COSphi1, COStheta, COStheta1;
-       GLfloat     _SINtheta, _SINtheta1;
-
-       for (i = 0; i <= rings / 4; i++) {
-               GLfloat     theta, theta1;
-
-               theta = (GLfloat) i *2.0 * M_PI / rings;
-
-               theta1 = (GLfloat) (i + 1) * 2.0 * M_PI / rings;
-               for (j = 0; j < nsides; j++) {
-                       GLfloat     phi, phi1;
-
-                       phi = (GLfloat) j *2.0 * M_PI / nsides;
-
-                       phi1 = (GLfloat) (j + 1) * 2.0 * M_PI / nsides;
-
-                       p0[0] = (COStheta = cos(theta)) * (R + r * (COSphi = cos(phi)));
-                       p0[1] = (_SINtheta = -sin(theta)) * (R + r * COSphi);
-
-                       p1[0] = (COStheta1 = cos(theta1)) * (R + r * COSphi);
-                       p1[1] = (_SINtheta1 = -sin(theta1)) * (R + r * COSphi);
-
-                       p2[0] = COStheta1 * (R + r * (COSphi1 = cos(phi1)));
-                       p2[1] = _SINtheta1 * (R + r * COSphi1);
-
-                       p3[0] = COStheta * (R + r * COSphi1);
-                       p3[1] = _SINtheta * (R + r * COSphi1);
-
-                       n0[0] = COStheta * COSphi;
-                       n0[1] = _SINtheta * COSphi;
-
-                       n1[0] = COStheta1 * COSphi;
-                       n1[1] = _SINtheta1 * COSphi;
-
-                       n2[0] = COStheta1 * COSphi1;
-                       n2[1] = _SINtheta1 * COSphi1;
-
-                       n3[0] = COStheta * COSphi1;
-                       n3[1] = _SINtheta * COSphi1;
-
-                       p0[2] = p1[2] = r * (n0[2] = n1[2] = sin(phi));
-                       p2[2] = p3[2] = r * (n2[2] = n3[2] = sin(phi1));
-
-                       glBegin(GL_QUADS);
-                       glNormal3fv(n3);
-                       glVertex3fv(p3);
-                       glNormal3fv(n2);
-                       glVertex3fv(p2);
-                       glNormal3fv(n1);
-                       glVertex3fv(p1);
-                       glNormal3fv(n0);
-                       glVertex3fv(p0);
-                       glEnd();
-               }
-       }
-
-       if (factory > 0 && bolted) {
-               /* Bolt the elbow onto the pipe system */
-               glFrontFace(GL_CW);
-               glPushMatrix();
-               glRotatef(90.0, 0.0, 0.0, -1.0);
-               glRotatef(90.0, 0.0, 1.0, 0.0);
-               glTranslatef(0.0, one_third, one_third);
-               glCallList(pp->elbowcoins);
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
-               glCallList(pp->elbowbolts);
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
-               glPopMatrix();
-               glFrontFace(GL_CCW);
-       }
-#undef r
-#undef R
-#undef nsides
-#undef rings
-}
-
-static void
-FindNeighbors(ModeInfo * mi)
-{
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
-       pp->ndirections = 0;
-       pp->directions[dirUP] = (!pp->Cells[pp->PX][pp->PY + 1][pp->PZ]) ? 1 : 0;
-       pp->ndirections += pp->directions[dirUP];
-       pp->directions[dirDOWN] = (!pp->Cells[pp->PX][pp->PY - 1][pp->PZ]) ? 1 : 0;
-       pp->ndirections += pp->directions[dirDOWN];
-       pp->directions[dirLEFT] = (!pp->Cells[pp->PX - 1][pp->PY][pp->PZ]) ? 1 : 0;
-       pp->ndirections += pp->directions[dirLEFT];
-       pp->directions[dirRIGHT] = (!pp->Cells[pp->PX + 1][pp->PY][pp->PZ]) ? 1 : 0;
-       pp->ndirections += pp->directions[dirRIGHT];
-       pp->directions[dirFAR] = (!pp->Cells[pp->PX][pp->PY][pp->PZ - 1]) ? 1 : 0;
-       pp->ndirections += pp->directions[dirFAR];
-       pp->directions[dirNEAR] = (!pp->Cells[pp->PX][pp->PY][pp->PZ + 1]) ? 1 : 0;
-       pp->ndirections += pp->directions[dirNEAR];
-}
-
-static int
-SelectNeighbor(ModeInfo * mi)
-{
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-       int         dirlist[6];
-       int         i, j;
-
-       for (i = 0, j = 0; i < 6; i++) {
-               if (pp->directions[i]) {
-                       dirlist[j] = i;
-                       j++;
-               }
-       }
-
-       return dirlist[NRAND(pp->ndirections)];
-}
-
-static void
-MakeValve(ModeInfo * mi, int newdir)
-{
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
-       /* There is a glPopMatrix() right after this subroutine returns. */
-       switch (newdir) {
-               case dirUP:
-               case dirDOWN:
-                       glRotatef(90.0, 1.0, 0.0, 0.0);
-                       glRotatef(NRAND(3) * 90.0, 0.0, 0.0, 1.0);
-                       break;
-               case dirLEFT:
-               case dirRIGHT:
-                       glRotatef(90.0, 0.0, -1.0, 0.0);
-                       glRotatef((NRAND(3) * 90.0) - 90.0, 0.0, 0.0, 1.0);
-                       break;
-               case dirNEAR:
-               case dirFAR:
-                       glRotatef(NRAND(4) * 90.0, 0.0, 0.0, 1.0);
-                       break;
-       }
-       glFrontFace(GL_CW);
-       glCallList(pp->betweenbolts);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
-       glCallList(pp->bolts);
-       if (!MI_IS_MONO(mi)) {
-               if (pp->system_color == MaterialRed) {
-                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, NRAND(2) ? MaterialYellow : MaterialBlue);
-               } else if (pp->system_color == MaterialBlue) {
-                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, NRAND(2) ? MaterialRed : MaterialYellow);
-               } else if (pp->system_color == MaterialYellow) {
-                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, NRAND(2) ? MaterialBlue : MaterialRed);
-               } else {
-                       switch ((NRAND(3))) {
-                               case 0:
-                                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed);
-                                       break;
-                               case 1:
-                                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialBlue);
-                                       break;
-                               case 2:
-                                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialYellow);
-                       }
-               }
-       }
-       glRotatef((GLfloat) (NRAND(90)), 1.0, 0.0, 0.0);
-       glCallList(pp->valve);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
-       glFrontFace(GL_CCW);
-}
-
-static int
-MakeGuage(ModeInfo * mi, int newdir)
-{
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
-       /* Can't have a guage on a vertical pipe. */
-       if ((newdir == dirUP) || (newdir == dirDOWN))
-               return (0);
-
-       /* Is there space above this pipe for a guage? */
-       if (!pp->directions[dirUP])
-               return (0);
-
-       /* Yes!  Mark the space as used. */
-       pp->Cells[pp->PX][pp->PY + 1][pp->PZ] = 1;
-
-       glFrontFace(GL_CW);
-       glPushMatrix();
-       if ((newdir == dirLEFT) || (newdir == dirRIGHT))
-               glRotatef(90.0, 0.0, 1.0, 0.0);
-       glCallList(pp->betweenbolts);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
-       glCallList(pp->bolts);
-       glPopMatrix();
-
-       glCallList(pp->guageconnector);
-       glPushMatrix();
-       glTranslatef(0.0, 1.33333, 0.0);
-       /* Do not change the above to 1 + ONE_THIRD, because */
-       /* the object really is centered on 1.3333300000. */
-       glRotatef(NRAND(270) + 45.0, 0.0, 0.0, -1.0);
-       /* Random rotation for the dial.  I love it. */
-       glCallList(pp->guagedial);
-       glPopMatrix();
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
-       glCallList(pp->guagehead);
-
-       /* GuageFace is drawn last, in case of low-res depth buffers. */
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite);
-       glCallList(pp->guageface);
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
-       glFrontFace(GL_CCW);
-
-       return (1);
-}
-
-static void
-MakeShape(ModeInfo * mi, int newdir)
-{
-       switch (NRAND(2)) {
-               case 1:
-                       if (!MakeGuage(mi, newdir))
-                               MakeTube(newdir);
-                       break;
-               default:
-                       MakeValve(mi, newdir);
-                       break;
-       }
-}
-
-static void
-reshape(ModeInfo * mi, int width, int height)
-{
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
-       glViewport(0, 0, pp->WindW = (GLint) width, pp->WindH = (GLint) height);
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       /*glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); */
-       gluPerspective(65.0, (GLfloat) width / (GLfloat) height, 0.1, 20.0);
-       glMatrixMode(GL_MODELVIEW);
-}
-
-static void
-pinit(ModeInfo * mi, int zera)
-{
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-       int         X, Y, Z;
-
-       glClearDepth(1.0);
-       glClearColor(0.0, 0.0, 0.0, 1.0);
-       glColor3f(1.0, 1.0, 1.0);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);
-       glLightfv(GL_LIGHT0, GL_POSITION, position0);
-       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1);
-       glLightfv(GL_LIGHT1, GL_POSITION, position1);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_DEPTH_TEST);
-       glEnable(GL_NORMALIZE);
-       glEnable(GL_CULL_FACE);
-
-       glShadeModel(GL_SMOOTH);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-
-       if (zera) {
-               pp->system_number = 1;
-               glDrawBuffer(GL_FRONT_AND_BACK);
-               glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-               (void) memset(pp->Cells, 0, sizeof (pp->Cells));
-               for (X = 0; X < HCELLS; X++) {
-                       for (Y = 0; Y < VCELLS; Y++) {
-                               pp->Cells[X][Y][0] = 1;
-                               pp->Cells[X][Y][HCELLS - 1] = 1;
-                               pp->Cells[0][Y][X] = 1;
-                               pp->Cells[HCELLS - 1][Y][X] = 1;
-                       }
-               }
-               for (X = 0; X < HCELLS; X++) {
-                       for (Z = 0; Z < HCELLS; Z++) {
-                               pp->Cells[X][0][Z] = 1;
-                               pp->Cells[X][VCELLS - 1][Z] = 1;
-                       }
-               }
-               (void) memset(pp->usedcolors, 0, sizeof (pp->usedcolors));
-               if ((pp->initial_rotation += 10.0) > 45.0) {
-                       pp->initial_rotation -= 90.0;
-               }
-       }
-       pp->counter = 0;
-       pp->turncounter = 0;
-
-       if (!MI_IS_MONO(mi)) {
-               int         collist[DEFINEDCOLORS];
-               int         i, j, lower = 1000;
-
-               /* Avoid repeating colors on the same screen unless necessary */
-               for (i = 0; i < DEFINEDCOLORS; i++) {
-                       if (lower > pp->usedcolors[i])
-                               lower = pp->usedcolors[i];
-               }
-               for (i = 0, j = 0; i < DEFINEDCOLORS; i++) {
-                       if (pp->usedcolors[i] == lower) {
-                               collist[j] = i;
-                               j++;
-                       }
-               }
-               i = collist[NRAND(j)];
-               pp->usedcolors[i]++;
-               switch (i) {
-                       case 0:
-                               pp->system_color = MaterialRed;
-                               break;
-                       case 1:
-                               pp->system_color = MaterialGreen;
-                               break;
-                       case 2:
-                               pp->system_color = MaterialBlue;
-                               break;
-                       case 3:
-                               pp->system_color = MaterialCyan;
-                               break;
-                       case 4:
-                               pp->system_color = MaterialYellow;
-                               break;
-                       case 5:
-                               pp->system_color = MaterialMagenta;
-                               break;
-                       case 6:
-                               pp->system_color = MaterialWhite;
-                               break;
-               }
-       } else {
-               pp->system_color = MaterialGray;
-       }
-
-       do {
-               pp->PX = NRAND((HCELLS - 1)) + 1;
-               pp->PY = NRAND((VCELLS - 1)) + 1;
-               pp->PZ = NRAND((HCELLS - 1)) + 1;
-       } while (pp->Cells[pp->PX][pp->PY][pp->PZ] ||
-                (pp->Cells[pp->PX + 1][pp->PY][pp->PZ] && pp->Cells[pp->PX - 1][pp->PY][pp->PZ] &&
-                 pp->Cells[pp->PX][pp->PY + 1][pp->PZ] && pp->Cells[pp->PX][pp->PY - 1][pp->PZ] &&
-                 pp->Cells[pp->PX][pp->PY][pp->PZ + 1] && pp->Cells[pp->PX][pp->PY][pp->PZ - 1]));
-       pp->Cells[pp->PX][pp->PY][pp->PZ] = 1;
-       pp->olddir = dirNone;
-
-       FindNeighbors(mi);
-
-       pp->nowdir = SelectNeighbor(mi);
-}
-
-void
-init_pipes(ModeInfo * mi)
-{
-       int         screen = MI_SCREEN(mi);
-       pipesstruct *pp;
-
-       if (pipes == NULL) {
-               if ((pipes = (pipesstruct *) calloc(MI_NUM_SCREENS(mi),
-                                             sizeof (pipesstruct))) == NULL)
-                       return;
-       }
-       pp = &pipes[screen];
-
-       pp->window = MI_WINDOW(mi);
-       if ((pp->glx_context = init_GL(mi)) != NULL) {
-
-               reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
-               if (rotatepipes)
-                 pp->initial_rotation = NRAND(180); /* jwz */
-               else
-                 pp->initial_rotation = -10.0;
-               pinit(mi, 1);
-
-               if (factory > 0) {
-                       pp->valve = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_BigValve);
-                       pp->bolts = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_Bolts3D);
-                       pp->betweenbolts = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_PipeBetweenBolts);
-
-                       pp->elbowbolts = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_ElbowBolts);
-                       pp->elbowcoins = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_ElbowCoins);
-
-                       pp->guagehead = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_GuageHead);
-                       pp->guageface = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_GuageFace);
-                       pp->guagedial = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_GuageDial);
-                       pp->guageconnector = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_GuageConnector);
-               }
-               /* else they are all 0, thanks to calloc(). */
-
-               if (MI_COUNT(mi) < 1 || MI_COUNT(mi) > NofSysTypes + 1) {
-                       pp->system_type = NRAND(NofSysTypes) + 1;
-               } else {
-                       pp->system_type = MI_COUNT(mi);
-               }
-
-               if (MI_CYCLES(mi) > 0 && MI_CYCLES(mi) < 11) {
-                       pp->number_of_systems = MI_CYCLES(mi);
-               } else {
-                       pp->number_of_systems = 5;
-               }
-
-               if (MI_SIZE(mi) < 10) {
-                       pp->system_length = 10;
-               } else if (MI_SIZE(mi) > 1000) {
-                       pp->system_length = 1000;
-               } else {
-                       pp->system_length = MI_SIZE(mi);
-               }
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-void
-draw_pipes(ModeInfo * mi)
-{
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       int         newdir;
-       int         OPX, OPY, OPZ;
-
-       if (!pp->glx_context)
-               return;
-
-       glXMakeCurrent(display, window, *(pp->glx_context));
-
-#if defined( MESA ) && defined( SLOW )
-       glDrawBuffer(GL_BACK);
-#else
-       glDrawBuffer(GL_FRONT);
-#endif
-       glPushMatrix();
-
-       glTranslatef(0.0, 0.0, fisheye ? -3.8 : -4.8);
-       if (rotatepipes)
-               glRotatef(pp->initial_rotation, 0.0, 1.0, 0.0);
-
-       if (!MI_IS_ICONIC(mi)) {
-               /* Width/height ratio handled by gluPerspective() now. */
-               glScalef(Scale4Window, Scale4Window, Scale4Window);
-       } else {
-               glScalef(Scale4Iconic, Scale4Iconic, Scale4Iconic);
-       }
-
-       FindNeighbors(mi);
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
-
-       /* If it's the begining of a system, draw a sphere */
-       if (pp->olddir == dirNone) {
-               glPushMatrix();
-               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0);
-               mySphere(0.6);
-               glPopMatrix();
-       }
-       /* Check for stop conditions */
-       if (pp->ndirections == 0 || pp->counter > pp->system_length) {
-               glPushMatrix();
-               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0);
-               /* Finish the system with another sphere */
-               mySphere(0.6);
-#if defined( MESA ) && defined( SLOW )
-               glXSwapBuffers(display, window);
-#endif
-               glPopMatrix();
-
-               /* If the maximum number of system was drawn, restart (clearing the screen), */
-               /* else start a new system. */
-               if (++pp->system_number > pp->number_of_systems) {
-                       (void) sleep(1);
-                       pinit(mi, 1);
-               } else {
-                       pinit(mi, 0);
-               }
-
-               glPopMatrix();
-               return;
-       }
-       pp->counter++;
-       pp->turncounter++;
-
-       /* Do will the direction change? if so, determine the new one */
-       newdir = pp->nowdir;
-       if (!pp->directions[newdir]) {  /* cannot proceed in the current direction */
-               newdir = SelectNeighbor(mi);
-       } else {
-               if (tightturns) {
-                       /* random change (20% chance) */
-                       if ((pp->counter > 1) && (NRAND(100) < 20)) {
-                               newdir = SelectNeighbor(mi);
-                       }
-               } else {
-                       /* Chance to turn increases after each length of pipe drawn */
-                       if ((pp->counter > 1) && NRAND(50) < NRAND(pp->turncounter + 1)) {
-                               newdir = SelectNeighbor(mi);
-                               pp->turncounter = 0;
-                       }
-               }
-       }
-
-       /* Has the direction changed? */
-       if (newdir == pp->nowdir) {
-               /* If not, draw the cell's center pipe */
-               glPushMatrix();
-               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0);
-               /* Chance of factory shape here, if enabled. */
-               if ((pp->counter > 1) && (NRAND(100) < factory)) {
-                       MakeShape(mi, newdir);
-               } else {
-                       MakeTube(newdir);
-               }
-               glPopMatrix();
-       } else {
-               /* If so, draw the cell's center elbow/sphere */
-               int         sysT = pp->system_type;
-
-               if (sysT == NofSysTypes + 1) {
-                       sysT = ((pp->system_number - 1) % NofSysTypes) + 1;
-               }
-               glPushMatrix();
-
-               switch (sysT) {
-                       case 1:
-                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0);
-                               mySphere(elbowradius);
-                               break;
-                       case 2:
-                       case 3:
-                               switch (pp->nowdir) {
-                                       case dirUP:
-                                               switch (newdir) {
-                                                       case dirLEFT:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0);
-                                                               glRotatef(180.0, 1.0, 0.0, 0.0);
-                                                               break;
-                                                       case dirRIGHT:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0);
-                                                               glRotatef(180.0, 1.0, 0.0, 0.0);
-                                                               glRotatef(180.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirFAR:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0 - (one_third));
-                                                               glRotatef(90.0, 0.0, 1.0, 0.0);
-                                                               glRotatef(180.0, 0.0, 0.0, 1.0);
-                                                               break;
-                                                       case dirNEAR:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0 + (one_third));
-                                                               glRotatef(90.0, 0.0, 1.0, 0.0);
-                                                               glRotatef(180.0, 1.0, 0.0, 0.0);
-                                                               break;
-                                               }
-                                               break;
-                                       case dirDOWN:
-                                               switch (newdir) {
-                                                       case dirLEFT:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0);
-                                                               break;
-                                                       case dirRIGHT:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0);
-                                                               glRotatef(180.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirFAR:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0 - (one_third));
-                                                               glRotatef(270.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirNEAR:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0 + (one_third));
-                                                               glRotatef(90.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                               }
-                                               break;
-                                       case dirLEFT:
-                                               switch (newdir) {
-                                                       case dirUP:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0);
-                                                               glRotatef(180.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirDOWN:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0);
-                                                               glRotatef(180.0, 1.0, 0.0, 0.0);
-                                                               glRotatef(180.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirFAR:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 - (one_third));
-                                                               glRotatef(270.0, 1.0, 0.0, 0.0);
-                                                               glRotatef(180.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirNEAR:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 + (one_third));
-                                                               glRotatef(270.0, 1.0, 0.0, 0.0);
-                                                               glRotatef(180.0, 0.0, 0.0, 1.0);
-                                                               break;
-                                               }
-                                               break;
-                                       case dirRIGHT:
-                                               switch (newdir) {
-                                                       case dirUP:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0);
-                                                               break;
-                                                       case dirDOWN:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0);
-                                                               glRotatef(180.0, 1.0, 0.0, 0.0);
-                                                               break;
-                                                       case dirFAR:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 - (one_third));
-                                                               glRotatef(270.0, 1.0, 0.0, 0.0);
-                                                               break;
-                                                       case dirNEAR:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 + (one_third));
-                                                               glRotatef(90.0, 1.0, 0.0, 0.0);
-                                                               break;
-                                               }
-                                               break;
-                                       case dirNEAR:
-                                               switch (newdir) {
-                                                       case dirLEFT:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 - (one_third));
-                                                               glRotatef(270.0, 1.0, 0.0, 0.0);
-                                                               break;
-                                                       case dirRIGHT:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 - (one_third));
-                                                               glRotatef(270.0, 1.0, 0.0, 0.0);
-                                                               glRotatef(180.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirUP:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0 - (one_third));
-                                                               glRotatef(270.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirDOWN:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0 - (one_third));
-                                                               glRotatef(90.0, 0.0, 1.0, 0.0);
-                                                               glRotatef(180.0, 0.0, 0.0, 1.0);
-                                                               break;
-                                               }
-                                               break;
-                                       case dirFAR:
-                                               switch (newdir) {
-                                                       case dirUP:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0 + (one_third));
-                                                               glRotatef(90.0, 0.0, 1.0, 0.0);
-                                                               break;
-                                                       case dirDOWN:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0 + (one_third));
-                                                               glRotatef(90.0, 0.0, 1.0, 0.0);
-                                                               glRotatef(180.0, 1.0, 0.0, 0.0);
-                                                               break;
-                                                       case dirLEFT:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 + (one_third));
-                                                               glRotatef(90.0, 1.0, 0.0, 0.0);
-                                                               break;
-                                                       case dirRIGHT:
-                                                               glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 + (one_third));
-                                                               glRotatef(270.0, 1.0, 0.0, 0.0);
-                                                               glRotatef(180.0, 0.0, 0.0, 1.0);
-                                                               break;
-                                               }
-                                               break;
-                               }
-                               myElbow(mi, (sysT == 2));
-                               break;
-               }
-               glPopMatrix();
-       }
-
-       OPX = pp->PX;
-       OPY = pp->PY;
-       OPZ = pp->PZ;
-       pp->olddir = pp->nowdir;
-       pp->nowdir = newdir;
-       switch (pp->nowdir) {
-               case dirUP:
-                       pp->PY++;
-                       break;
-               case dirDOWN:
-                       pp->PY--;
-                       break;
-               case dirLEFT:
-                       pp->PX--;
-                       break;
-               case dirRIGHT:
-                       pp->PX++;
-                       break;
-               case dirNEAR:
-                       pp->PZ++;
-                       break;
-               case dirFAR:
-                       pp->PZ--;
-                       break;
-       }
-       pp->Cells[pp->PX][pp->PY][pp->PZ] = 1;
-
-       /* Cells'face pipe */
-       glTranslatef(((pp->PX + OPX) / 2.0 - 16) / 3.0 * 4.0, ((pp->PY + OPY) / 2.0 - 12) / 3.0 * 4.0, ((pp->PZ + OPZ) / 2.0 - 16) / 3.0 * 4.0);
-       MakeTube(newdir);
-
-       glPopMatrix();
-
-       glFlush();
-
-#if defined( MESA ) && defined( SLOW )
-       pp->flip = !pp->flip;
-       if (pp->flip)
-               glXSwapBuffers(display, window);
-#endif
-}
-
-void
-change_pipes(ModeInfo * mi)
-{
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
-       if (!pp->glx_context)
-               return;
-
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
-       pinit(mi, 1);
-}
-
-void
-release_pipes(ModeInfo * mi)
-{
-       if (pipes != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       pipesstruct *pp = &pipes[screen];
-
-                       if (pp->glx_context) {
-
-                               /* Display lists MUST be freed while their glXContext is current. */
-                               glXMakeCurrent(MI_DISPLAY(mi), pp->window, *(pp->glx_context));
-
-                               if (pp->valve)
-                                       glDeleteLists(pp->valve, 1);
-                               if (pp->bolts)
-                                       glDeleteLists(pp->bolts, 1);
-                               if (pp->betweenbolts)
-                                       glDeleteLists(pp->betweenbolts, 1);
-
-                               if (pp->elbowbolts)
-                                       glDeleteLists(pp->elbowbolts, 1);
-                               if (pp->elbowcoins)
-                                       glDeleteLists(pp->elbowcoins, 1);
-
-                               if (pp->guagehead)
-                                       glDeleteLists(pp->guagehead, 1);
-                               if (pp->guageface)
-                                       glDeleteLists(pp->guageface, 1);
-                               if (pp->guagedial)
-                                       glDeleteLists(pp->guagedial, 1);
-                               if (pp->guageconnector)
-                                       glDeleteLists(pp->guageconnector, 1);
-                       }
-               }
-
-               (void) free((void *) pipes);
-               pipes = NULL;
-       }
-       FreeAllGL(mi);
-}
-
-#endif
diff --git a/hacks/glx/pulsar.c b/hacks/glx/pulsar.c
deleted file mode 100644 (file)
index 8c70a7e..0000000
+++ /dev/null
@@ -1,834 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* pulsar --- pulsar module for xscreensaver */
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
-
- * Revision History:
- * 4-Apr-1999:  dek@cgl.ucsf.edu  Created module "pulsar"
- * 27-Apr-1999:  dek@cgl.ucsf.edu  Submitted module "pulsar"
- * 4-May-1999:  jwz@jwz.org  Added module "pulsar"
- * 4-May-1999:  dek@cgl.ucsf.edu  Submitted module "pulsar" updates
- *
- * Notes:
- * The pulsar screensaver draws a number of rotating, pulsing rectangles
- * on your screen.  Depending on the options you choose, you can set a number
- * of interesting OpenGL parameters, including alpha blending, depth testing, fog,
- * lighting, texturing, mipmapping, bilinear filtering, and line antialiasing.  
- * Additionally, there is a "frames per second" meter which gives an estimate of
- * the speed of your graphics card.  
- *
- * Example command-line switches:
- * Only draw a single quad, and don't fill it (boring but fast)
- * pulsar -wire -quads 1 -fps
- *
- * Only try this with hardware graphics acceleration (PPro 200 w/ a Voodoo 2 runs great)
- * pulsar -quads 10 -texture -mipmap -texture_quality -light -fog -fps
- *                                                                 
- */
-
-#include <math.h> 
-#include <stdio.h>
-#include <stdlib.h>
-
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS                                             "Screensaver"
-# define HACK_INIT                                             init_screensaver
-# define HACK_DRAW                                             draw_screensaver
-# define screensaver_opts                              xlockmore_opts
-#define        DEFAULTS                        "*light:                        False   \n" \
-                                        "*wire:                                False   \n" \
-                                        "*quads:                       5       \n" \
-                                        "*blend:                       True    \n" \
-                                        "*fog:                         False   \n" \
-                                        "*antialias:           False   \n" \
-                                        "*texture:                     False   \n" \
-                                        "*texture_quality:     False   \n" \
-                                        "*mipmap:                      False   \n" \
-                                        "*fps:                         False   \n" \
-                                        "*doDepth:                     False   \n" \
-                                                                               "*image:                        BUILTIN \n"
-
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL /* whole file */
-
-#ifdef HAVE_XPM
-# include <X11/xpm.h>
-# ifndef PIXEL_ALREADY_TYPEDEFED
-# define PIXEL_ALREADY_TYPEDEFED /* Sigh, Xmu/Drawing.h needs this... */
-# endif
-#endif
-
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/Drawing.h>
-#else  /* VMS */
-#  include <Xmu/Drawing.h>
-# endif /* VMS */
-#endif
-
-
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-#include <string.h>
-#include <malloc.h>
-#include <stdio.h>
-
-/* Functions for loading and storing textures */
-
-#define checkImageWidth 64
-#define checkImageHeight 64
-
-/* Functions for handling the frames per second timer */
-#include "GL/glx.h"
-
-#ifndef SAMPLE_FRAMES
-#define SAMPLE_FRAMES 10
-#endif
-
-#undef countof
-#define countof(x) (sizeof((x))/sizeof((*x)))
-
-#define WIDTH 800
-#define HEIGHT 600
-
-#define NUM_QUADS 5
-#define DEF_NUM_QUADS  "5"
-#define DEF_LIGHT              "False"
-#define DEF_WIRE               "False"
-#define DEF_BLEND      "True"
-#define DEF_FOG                "False"
-#define DEF_ANTIALIAS   "False"
-#define DEF_TEXTURE    "False"
-#define DEF_TEXTURE_QUALITY   "False"
-#define DEF_MIPMAP     "False"
-#define DEF_FPS                "False"
-#define DEF_DO_DEPTH   "False"
-#define DEF_IMAGE      "BUILTIN"
-
-static int num_quads;
-static int do_light;
-static int do_wire;
-static int do_blend;
-static int do_fog;
-static int do_antialias;
-static int do_texture;
-static int do_texture_quality;
-static int do_mipmap;
-static int do_fps;
-static int do_depth;
-static char *which_image;
-
-
-static XrmOptionDescRec opts[] = {
-  {"-quads",   ".pulsar.quads",   XrmoptionSepArg, (caddr_t) NULL },
-  {"-light",   ".pulsar.light",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+light",   ".pulsar.light",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-wire",   ".pulsar.wire",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+wire",   ".pulsar.wire",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-blend",   ".pulsar.blend",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+blend",   ".pulsar.blend",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-fog",   ".pulsar.fog",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+fog",   ".pulsar.fog",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-antialias",   ".pulsar.antialias",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+antialias",   ".pulsar.antialias",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture",   ".pulsar.texture",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture",   ".pulsar.texture",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture_quality",   ".pulsar.texture_quality",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture_quality",   ".pulsar.texture_quality",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-mipmap",   ".pulsar.mipmap",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+mipmap",   ".pulsar.mipmap",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-fps",   ".pulsar.fps",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+fps",   ".pulsar.fps",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-do_depth",   ".pulsar.doDepth",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+do_depth",   ".pulsar.doDepth",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-image",   ".pulsar.image",  XrmoptionSepArg, (caddr_t) NULL },
-};
-
-
-static argtype vars[] = {
-  {(caddr_t *) &num_quads, "quads", "Quads", DEF_NUM_QUADS, t_Int},
-  {(caddr_t *) &do_light,    "light",   "Light",   DEF_LIGHT,   t_Bool},
-  {(caddr_t *) &do_wire,    "wire",   "Wire",   DEF_WIRE,   t_Bool},
-  {(caddr_t *) &do_blend,    "blend",   "Blend",   DEF_BLEND,   t_Bool},
-  {(caddr_t *) &do_fog,    "fog",   "Fog",   DEF_FOG,   t_Bool},
-  {(caddr_t *) &do_antialias,    "antialias",   "Antialias",   DEF_ANTIALIAS,   t_Bool},
-  {(caddr_t *) &do_texture,    "texture",   "Texture",   DEF_TEXTURE,   t_Bool},
-  {(caddr_t *) &do_texture_quality,    "texture_quality",   "Texture_quality",   DEF_TEXTURE_QUALITY,   t_Bool},
-  {(caddr_t *) &do_mipmap,    "mipmap",   "Mipmap",   DEF_MIPMAP,   t_Bool},
-  {(caddr_t *) &do_fps,    "fps",   "fps",   DEF_FPS,   t_Bool},
-  {(caddr_t *) &do_depth,    "doDepth",   "DoDepth",   DEF_DO_DEPTH,   t_Bool},
-  {(caddr_t *) &which_image, "image",   "Image",   DEF_IMAGE,   t_String},
-};
-
-
-static OptionStruct desc[] =
-{
-       {"-quads num", "how many quads to draw"},
-       {"-/+ light", "whether to do enable lighting (slower)"},
-       {"-/+ wire", "whether to do use wireframe instead of filled (faster)"},
-       {"-/+ blend", "whether to do enable blending (slower)"},
-       {"-/+ fog", "whether to do enable fog (?)"},
-       {"-/+ antialias", "whether to do enable antialiased lines (slower)"},
-       {"-/+ texture", "whether to do enable texturing (much slower)"},
-       {"-/+ texture_quality", "whether to do enable linear/mipmap filtering (much much slower)"},
-       {"-/+ mipmap", "whether to do enable mipmaps (much slower)"},
-       {"-/+ fps", "whether to do enable frames per second meter (?)"},
-       {"-/+ depth", "whether to do enable depth buffer checking (slower)"},
-       {"-image <filename>", "texture image to load (PPM, PPM4, TIFF(?), XPM(?))"},
-};
-
-ModeSpecOpt screensaver_opts = {countof(opts), opts, countof(vars), vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   screensaver_description =
-{"screensaver", "init_screensaver", "draw_screensaver", "release_screensaver",
- "draw_screensaver", "init_screensaver", NULL, &screensaver_opts,
- 1000, 1, 2, 1, 4, 1.0, "",
- "OpenGL screensaver", 0, NULL};
-#endif
-
-
-/* structure for holding the screensaver data */
-typedef struct {
-  int screen_width, screen_height;
-  GLXContext *glx_context;
-  Window window;
-  XColor fg, bg;
-} screensaverstruct;
-
-static screensaverstruct *Screensaver = NULL;
-
-struct quad
-{
-  GLfloat tx, ty, tz;
-  GLfloat rx, ry, rz;
-
-  GLfloat dtx, dty, dtz;
-  GLfloat drx, dry, drz;
-
-};
-
-int global_width=WIDTH, global_height=HEIGHT;
-
-
-static GLint base;
-static int FrameCounter = 0;
-static double oldtime=-1., newtime=-1.;
-static char FPSstring[1024]="FPS: NONE"; 
-
-static float x_pos=0, y_pos=0;
-
-#define FONT "-*-courier-medium-r-normal-*-240-*"
-GLint quad_list;
-
-static float scale_x=1, scale_y=1, scale_z=1;
-static int frame = 0;
-
-static GLenum errCode;
-static const GLubyte *errString;
-
-struct quad *quads;
-
-int checkError(int line, char *file)
-{
-  if((errCode = glGetError()) != GL_NO_ERROR) {
-    errString = (char *)gluErrorString(errCode);
-    fprintf(stderr, "OpenGL error: %s detected at line %d in file %s\n", errString, line, file);
-    exit(1);
-  }
-  return 0;
-}
-
-
-void FPS_Setup(void)
-{
-  Display *Dpy;
-  XFontStruct *fontInfo;
-  Font id;
-  int first=0, last=255;
-
-  Dpy = XOpenDisplay(NULL);
-  fontInfo = XLoadQueryFont(Dpy, FONT);
-  if (fontInfo == NULL)
-    {
-      fprintf(stderr, "Failed to load font %s\n", FONT);
-      exit(1);
-    }
-
-  id = fontInfo->fid;
-  first = fontInfo->min_char_or_byte2;
-  last = fontInfo->max_char_or_byte2;
-  
-  base = glGenLists((GLuint) last+1);
-  if (base == 0) {
-    fprintf (stderr, "out of display lists\n");
-    exit(1);
-  }
-  glXUseXFont(id, first, last-first+1, base+first);
-
-}
-
-void PrintString(float x, float y, char *string)
-{
-  int len, i;
-
-  /* save the current state */
-  /* note: could be expensive! */
-  glPushAttrib(GL_ALL_ATTRIB_BITS);
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity();
-  gluOrtho2D(0, global_width, 0, global_height);
-  glMatrixMode(GL_MODELVIEW);
-  glLoadIdentity();
-
-  /* disable lighting and texturing when drawing bitmaps! */
-  glDisable(GL_TEXTURE_2D);
-  glDisable(GL_LIGHTING);
-  glDisable(GL_BLEND);
-
-  /* draw a black background */
-
-  /* draw the text */
-  glColor3f(1,1,1);
-  glRasterPos2f( x, y);
-  len = (int) strlen(string);
-  for (i = 0; i < len; i++) {
-       if (glIsList(base+string[i]))
-         glCallList(base+string[i]);
-       else
-         fprintf(stderr, "%d+string[%d] is not a display list!\n", base, i);
-  }
-
-  /* clean up after our state changes */
-  glPopAttrib();
-}
-
-double gettime(void)
-{
-  struct timeval now;
-#ifdef GETTIMEOFDAY_TWO_ARGS
-  struct timezone tzp;
-  gettimeofday(&now, &tzp);
-#else
-  gettimeofday(&now);
-#endif
-  return (double) (now.tv_sec + (((double) now.tv_usec) * 0.000001));
-}
-
-void DoFPS(void)
-{
-  /* every SAMPLE_FRAMES frames, get the time and use it to get the 
-     frames per second */
-  if (!(FrameCounter % SAMPLE_FRAMES)) {
-    oldtime = newtime;
-    newtime = gettime();
-    sprintf(FPSstring, "FPS: %.02f", SAMPLE_FRAMES/(newtime-oldtime));
-  }
-
-  PrintString(x_pos,y_pos,FPSstring);
-
-  FrameCounter++;
-}
-
-GLubyte *Generate_Image(int *width, int *height, int *format)
-{
-  GLubyte *result;
-  int i, j, c;
-  int counter=0;
-
-  *width = checkImageWidth;
-  *height = checkImageHeight;
-  result = (GLubyte *)malloc(4 * *width * *height);
-
-  counter = 0;
-  for (i = 0; i < checkImageWidth; i++) {
-    for (j = 0; j < checkImageHeight; j++) {
-      c = (((((i&0x8)==0))^(((j&0x8))==0)))*255;
-      result[counter++] = (GLubyte) c;
-      result[counter++] = (GLubyte) c;
-      result[counter++] = (GLubyte) c;
-      result[counter++] = (GLubyte) 255;
-    }
-  }
-
-  *format = GL_RGBA;
-  return result;
-}
-
-
-
-#ifdef TIFF
-#include <tiffio>
-/* Load a TIFF texture: requires libtiff */
-uint32 *LoadTIFF(char *filename, int *width, int *height, int *format)
-{
-  TIFF *tif;
-  char emsg[1024];
-  uint32 *raster;
-  TIFFRGBAImage img;
-  tsize_t npixels;
-
-  tif = TIFFOpen(filename, "r");
-  if (tif == NULL) {
-    fprintf(stderr, "Problem showing %s\n", filename);
-    return Generate_Image(&width, &height, &format);
-  }
-  if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) {
-    npixels = (tsize_t) (img.width * img.height);
-    raster = (uint32 *) _TIFFmalloc(npixels * (tsize_t) sizeof(uint32));
-    if (raster != NULL) {
-      if (TIFFRGBAImageGet(&img, raster, img.width, img.height) == 0) {
-        TIFFError(filename, emsg);
-       return Generate_Image(&width, &height, &format);
-      }
-    }
-    TIFFRGBAImageEnd(&img);
-  } else {
-    TIFFError(filename, emsg);
-    return Generate_Image(&width, &height, &format);
-  }
-
-  *width = img.width;
-  *height = img.height;
-  *format = GL_RGBA;
-
-  TIFFClose(tif);
-  return raster;
-}
-#endif
-
-/* Load a modified version of PPM format with an extra byte for alpha */
-GLubyte *LoadPPM4(const char *filename, int *width, int *height, int *format)
-{
-  char buff[1024];
-  GLubyte *data;
-  int sizeX, sizeY;
-  FILE *fp;
-  int maxval;
-
-  fp = fopen(filename, "rb");
-  if (!fp)
-    {
-      fprintf(stderr, "Unable to open file '%s'\n", filename);
-      return  Generate_Image(width, height, format);
-    }
-
-  if (!fgets(buff, sizeof(buff), fp))
-    {
-      perror("Unable to read header filename\n");
-      return  Generate_Image(width, height, format);
-    }
-
-  if (buff[0] != '6' || buff[1] != 'P')
-    {
-      fprintf(stderr, "Invalid image format (must be `6P')\n");
-      return  Generate_Image(width, height, format);
-    }
-
-  do
-    {
-      fgets(buff, sizeof(buff), fp);
-    }
-  while (buff[0] == '#');
-    
-  if (sscanf(buff, "%d %d", &sizeX, &sizeY) != 2)
-    {
-      fprintf(stderr, "Error loading image `%s'\n", filename);
-      return  Generate_Image(width, height, format);
-    }
-
-  if (fscanf(fp, "%d", &maxval) != 1)
-    {
-      fprintf(stderr, "Error loading image `%s'\n", filename);
-      return  Generate_Image(width, height, format);
-    }
-
-  while (fgetc(fp) != '\n')
-    ;
-
-  data = (GLubyte *)malloc(4 * sizeX * sizeY);
-  if (data == NULL)
-    {
-      fprintf(stderr, "Unable to allocate memory\n");
-         exit(1);
-    }
-
-  if (fread(data, 4 * sizeX, sizeY, fp) != sizeY)
-    {
-      fprintf(stderr, "Error loading image `%s'\n", filename);
-      return  Generate_Image(width, height, format);
-    }
-
-  fclose(fp);
-
-  *width = sizeX;
-  *height = sizeY;
-  *format = GL_RGBA;
-  return data;
-}
-
-/* Load a plain PPM image */
-GLubyte *LoadPPM(const char *filename, int *width, int *height, int *format)
-{
-  char buff[1024];
-  GLubyte *data;
-  GLint sizeX, sizeY;
-  FILE *fp;
-  int maxval;
-
-  fp = fopen(filename, "rb");
-  if (!fp)
-    {
-      fprintf(stderr, "Unable to open file '%s'\n", filename);
-      return  Generate_Image(width, height, format);
-      exit(1);
-    }
-  if (!fgets(buff, sizeof(buff), fp))
-    {
-      perror(filename);
-      return  Generate_Image(width, height, format);
-    }
-
-  if (buff[0] != 'P' || buff[1] != '6')
-    {
-      fprintf(stderr, "Invalid image format (must be `P6')\n");
-      return  Generate_Image(width, height, format);
-    }
-
-  do
-    {
-      fgets(buff, sizeof(buff), fp);
-    }
-  while (buff[0] == '#');
-    
-  if (sscanf(buff, "%d %d", &sizeX, &sizeY) != 2)
-    {
-      fprintf(stderr, "Error loading image `%s'\n", filename);
-      return  Generate_Image(width, height, format);
-    }
-
-  if (fscanf(fp, "%d", &maxval) != 1)
-    {
-      fprintf(stderr, "Error loading image `%s'\n", filename);
-      return  Generate_Image(width, height, format);
-    }
-
-  while (fgetc(fp) != '\n')
-    ;
-
-  data = (GLubyte *)malloc(3 * sizeX * sizeY);
-  if (data == NULL)
-    {
-      fprintf(stderr, "Unable to allocate memory\n");
-         exit(1);
-    }
-
-  if (fread(data, 3 * sizeX, sizeY, fp) != sizeY)
-    {
-      fprintf(stderr, "Error loading image `%s'\n", filename);
-      return  Generate_Image(width, height, format);
-    }
-
-  fclose(fp);
-
-  *width = sizeX;
-  *height = sizeY;
-  *format = GL_RGB;
-  return data;
-}
-
-/* Create a texture in OpenGL.  First an image is loaded 
-   and stored in a raster buffer, then it's  */
-void Create_Texture(char *filename)
-{
-  int height, width;
-  GLubyte *image;
-  GLint a;
-  int format;
-
-  if ( !strncmp(filename, "BUILTIN", 7))
-    image = Generate_Image(&width, &height, &format);
-  else if ( !strncmp((filename+strlen(filename)-3), "ppm", 3))
-    image = LoadPPM(filename, &width, &height, &format);
-  else if ( !strncmp((filename+strlen(filename)-4), "ppm4", 4))
-    image = LoadPPM4(filename, &width, &height, &format);
-#ifdef TIFF
-  else if ( !strncmp((filename+strlen(filename)-4), "tiff", 4))
-    image = (GLubyte *)LoadTIFF(filename, &width, &height, &format);
-#endif
-  else {
-    fprintf(stderr, "Unknown file format extension: '%s'\n", filename);
-    image = Generate_Image(&width, &height, &format);
-  }
-
-  /* GL_MODULATE or GL_DECAL depending on what you want */
-  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-  glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-  /* perhaps we can edge a bit more speed at the expense of quality */
-  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
-
-  if (do_texture_quality) {
-       /* with texture_quality, the min and mag filters look *much* nice but are *much* slower */
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
-  }
-  else {
-       /* default is to do it quick and dirty */
-       /* if you have mipmaps turned on, but not texture quality, nothing will happen! */
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-  }
-
-  /* mipmaps make the image look much nicer */
-  if (do_mipmap)
-       a=gluBuild2DMipmaps(GL_TEXTURE_2D, format, width, height, format, GL_UNSIGNED_BYTE, image);
-  else 
-       glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0,
-                                format, GL_UNSIGNED_BYTE, image);
-
-  free(image);
-}
-
-void resetProjection(void) {
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity();
-  glFrustum(-1, 1, -1, 1, 1, 100); 
-  glMatrixMode(GL_MODELVIEW);
-  glLoadIdentity();
-}
-
-
-void GenerateQuad(void)
-{
-  int i;
-
-  quad_list = glGenLists(1);
-  glNewList(quad_list,GL_COMPILE);
-  glBegin(GL_QUADS);
-  glColor4f(1,0,0,.4); glNormal3f(0,0,1);  glTexCoord2f(0,0); glVertex2f(-1, -1);
-  glColor4f(0,1,0,.4); glNormal3f(0,0,1);  glTexCoord2f(0,1); glVertex2f(-1,  1);
-  glColor4f(0,0,1,.4); glNormal3f(0,0,1);  glTexCoord2f(1,1); glVertex2f( 1,  1);
-  glColor4f(1,1,1,1); glNormal3f(0,0,1);  glTexCoord2f(1,0); glVertex2f( 1,  -1);
-  glEnd();
-  glEndList();
-
-
-  quads = (struct quad *) malloc(sizeof(struct quad) * num_quads);
-  for (i=0; i < num_quads; i++)
-    {
-      quads[i].rx = 0.;
-      quads[i].ry = 0.;
-      quads[i].rz = 0.;
-      quads[i].tx = 0.;
-      quads[i].ty = 0.;
-      quads[i].tz = -10;
-
-      quads[i].drx = drand48() * 5.;
-      quads[i].dry = drand48() * 5.;
-      quads[i].drz = 0;
-    }
-}
-
-void initializeGL(GLsizei width, GLsizei height) 
-{
-  GLfloat fogColor[4] = { 0.1, 0.1, 0.1, 0.1 };
-
-  global_width=width;
-  global_height=height;
-
-  glViewport( 0, 0, width, height ); 
-  resetProjection();
-
-  if (do_depth)
-       glEnable(GL_DEPTH_TEST);
-
-  if (do_fps)
-       FPS_Setup();
-
-  if (do_antialias) {
-       do_blend = 1;
-       glEnable(GL_LINE_SMOOTH);
-  }
-
-  if (do_blend) {
-       glEnable(GL_BLEND);
-       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  }
-
-
-  if (do_light) {
-       glShadeModel(GL_SMOOTH);
-       glEnable(GL_COLOR_MATERIAL);
-       glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
-  }
-
-  if (do_wire)
-       glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-  else 
-       glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-
-  if (do_fog) {
-       glEnable(GL_FOG);
-       glFogi(GL_FOG_MODE, GL_LINEAR);
-       glFogfv(GL_FOG_COLOR, fogColor);
-       glFogf(GL_FOG_DENSITY, 0.35);
-/*     glHint(GL_FOG_HINT, GL_FASTEST); */
-       glFogf(GL_FOG_START, 50.0);
-       glFogf(GL_FOG_END, 100.0);
-  }
-       
-
-  if (do_texture)
-         Create_Texture(which_image); 
-
-  GenerateQuad();
-}
-void drawQuads(void) {
-  int i;
-  for (i=0; i < num_quads; i++)
-    {
-      glPushMatrix();
-      glTranslatef(quads[i].tx,0,0);
-      glTranslatef(0,quads[i].ty,0);
-      glTranslatef(0,0,quads[i].tz);
-      glRotatef(quads[i].rx, 1,0,0);
-      glRotatef(quads[i].ry, 0,1,0);
-      glRotatef(quads[i].rz, 0,0,1);
-      glCallList(quad_list);
-      glPopMatrix();
-
-      quads[i].rx += quads[i].drx;
-      quads[i].ry += quads[i].dry;
-      quads[i].rz += quads[i].drz;
-
-    }
-}
-
-GLvoid drawScene(GLvoid) 
-{
-
-  checkError(__LINE__, __FILE__);
-  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-  /* we have to do this here because the FPS meter turns these 3 features off!! */
-  {
-       if (do_light) {
-         glEnable(GL_LIGHTING);
-         glEnable(GL_LIGHT0);
-       }
-       
-       if (do_texture) {
-         glEnable(GL_TEXTURE_2D);
-       }
-       
-       if (do_blend) {
-         glEnable(GL_BLEND);
-         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-       }
-  }
-
-  resetProjection();
-
-  /* use XYZ scaling factors to change the size of the pulsar */
-  glScalef(scale_x, scale_y, scale_z);
-  drawQuads();
-
-  /* update the scaling factors- cyclic */
-  scale_x = cos(frame/360.)*10.;
-  scale_y = sin(frame/360.)*10.;
-  scale_z = 1;
-
-  /* increment frame-counter */
-  frame++;
-
-  if (do_fps)
-       DoFPS();
-  checkError(__LINE__, __FILE__);
-}
-
-
-void draw_screensaver(ModeInfo * mi)
-{
-  screensaverstruct *gp = &Screensaver[MI_SCREEN(mi)];
-  Display    *display = MI_DISPLAY(mi);
-  Window      window = MI_WINDOW(mi);
-
-  if (!gp->glx_context)
-       return;
-
-  glXMakeCurrent(display, window, *(gp->glx_context));
-  drawScene();
-  glXSwapBuffers(display, window);
-}
-
-/* Standard reshape function */
-static void
-reshape(int width, int height)
-{
-  glViewport( 0, 0, global_width, global_height );
-  resetProjection();
-}
-
-void
-init_screensaver(ModeInfo * mi)
-{
-  int screen = MI_SCREEN(mi);
-
-  screensaverstruct *gp;
-
-  if (Screensaver == NULL) {
-       if ((Screensaver = (screensaverstruct *) calloc(MI_NUM_SCREENS(mi), sizeof (screensaverstruct))) == NULL)
-         return;
-  }
-  gp = &Screensaver[screen];
-
-  gp->window = MI_WINDOW(mi);
-  if ((gp->glx_context = init_GL(mi)) != NULL) {
-       reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
-       initializeGL(MI_WIDTH(mi), MI_HEIGHT(mi));
-  } else {
-       MI_CLEARWINDOW(mi);
-  }
-}
-
-
-/* all sorts of nice cleanup code should go here! */
-void release_screensaver(ModeInfo * mi)
-{
-  int screen;
-  if (Screensaver != NULL) {
-       for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-/*       screensaverstruct *gp = &Screensaver[screen];*/
-       }
-       (void) free((void *) Screensaver);
-       Screensaver = NULL;
-  }
-  free(quads);
-  FreeAllGL(mi);
-}
-#endif
-
diff --git a/hacks/glx/rubik.c b/hacks/glx/rubik.c
deleted file mode 100644 (file)
index 3c651a6..0000000
+++ /dev/null
@@ -1,1863 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* rubik --- Shows a auto-solving Rubik's cube */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)rubik.c      4.07 97/11/24 xlockmore";
-
-#endif
-
-#undef DEBUG_LISTS
-#undef LMN
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * This mode shows an auto-solving rubik's cube "puzzle". If somebody
- * intends to make a game or something based on this code, please let me
- * know first, my e-mail address is provided in this comment. Marcelo.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * Since I'm not a native English speaker, my apologies for any grammatical
- * mistake.
- *
- * My e-mail address is
- * m-vianna@usa.net
- *
- * Marcelo F. Vianna (Jul-31-1997)
- *
- * Revision History:
- * 26-Sep-98: Added some more movement (the cube do not stays in the screen
- *            center anymore. Also fixed the scale problem imediatelly after
- *            shuffling when the puzzle is solved.
- * 08-Aug-97: Now has some internals from xrubik by David Bagley
- *            This should make it easier to add features.
- * 02-Aug-97: Now behaves more like puzzle.c: first show the cube being
- *            shuffled and then being solved. A mode specific option was added:
- *            "+/-hideshuffling" to provide the original behavior (in which
- *            only the solution is shown).
- *            The color labels corners are now rounded.
- *            Optimized the cubit() routine using glLists.
- * 01-Aug-97: Shuffling now avoids movements that undoes the previous movement
- *            and three consecutive identical moves (which is pretty stupid).
- *            improved the "cycles" option in replacement of David's hack,
- *            now rp->anglestep is a GLfloat, so this option selects the
- *            "exact" number of frames that a rotation (movement) takes to
- *            complete.
- * 30-Jul-97: Initial release, there is no algorithm to solve the puzzle,
- *            instead, it randomly shuffle the cube and then make the
- *            movements in the reverse order.
- *            The mode was written in 1 day (I got sick and had the day off).
- *            There was not much to do since I could not leave home... :)
- *
- */
-
-/*-
- * Color labels mapping:
- * =====================
- *
- *                       +------------+
- *                       |0-->        |
- *                       ||           |
- *                       |v           |
- *                       |   TOP(0)   |
- *                       |            |
- *                       |            |
- *                       |           8|
- *           +-----------+------------+-----------+
- *           |0-->       |0-->        |0-->       |
- *           ||          ||           ||          |
- *           |v          |v           |v          |
- *           |  LEFT(1)  |  FRONT(2)  |  RIGHT(3) |
- *           |           |            |           |
- *           |           |            |           |
- *           |          8|           8|          8|
- *           +-----------+------------+-----------+
- *                       |0-->        |
- *                       ||           |
- *                       |v           |
- *                       |  BOTTOM(4) |  rp->faces[N][X+AVSIZE*Y]=
- *                       |            |         rp->cubeLoc[N][X+AVSIZE*Y]=
- *                       |            | 
- *                       |           8|         +---+---+---+
- *                       +------------+         |   |   |   |
- *                       |0-->        |         | 0 | 1 | 2 |
- *                       ||           |         |---+---+---+
- *                       |v           |         |  xxxxx(N) |
- *                       |   BACK(5)  |         | 3 | 4 | 5 |
- *                       |            |         +---+---+---+
- *                       |            |         |   |   |  |
- *                       |           8|         | 6 | 7 | 8 |
- *                       +------------+         +---+---+---+
- *
- *  Map to 3d
- *  FRONT  => X, Y
- *  BACK   => X, Y
- *  LEFT   => Z, Y
- *  RIGHT  => Z, Y
- *  TOP    => X, Z
- *  BOTTOM => X, Z
- */
-
-/*-
- * PURIFY 3.0a on SunOS4 reports an unitialized memory read on each of
- * the glCallList() functions below when using MesaGL 2.1.  This has
- * been fixed in MesaGL 2.2 and later releases.
- */
-
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS     "Rubik"
-# define HACK_INIT     init_rubik
-# define HACK_DRAW     draw_rubik
-# define rubik_opts    xlockmore_opts
-# define DEFAULTS      "*delay: 40000 \n"              \
-                                       "*count: -30 \n"                \
-                                       "*cycles: 5 \n"                 \
-                                       "*size:  -6 \n"
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-# include "vis.h"
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-#define DEF_HIDESHUFFLING     "False"
-
-static Bool hideshuffling;
-
-static XrmOptionDescRec opts[] =
-{
-  {"-hideshuffling", ".rubik.hideshuffling", XrmoptionNoArg, (caddr_t) "on"},
-  {"+hideshuffling", ".rubik.hideshuffling", XrmoptionNoArg, (caddr_t) "off"}
-};
-
-static argtype vars[] =
-{
-       {(caddr_t *) & hideshuffling, "hideshuffling", "Hideshuffling", DEF_HIDESHUFFLING, t_Bool}
-};
-
-static OptionStruct desc[] =
-{
-       {"-/+hideshuffling", "turn on/off hidden shuffle phase"}
-};
-
-ModeSpecOpt rubik_opts =
-{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   rubik_description =
-{"rubik", "init_rubik", "draw_rubik", "release_rubik",
- "draw_rubik", "change_rubik", NULL, &rubik_opts,
- 10000, -30, 5, -6, 4, 1.0, "",
- "Shows an auto-solving Rubik's Cube", 0, NULL};
-
-#endif
-
-#define VectMul(X1,Y1,Z1,X2,Y2,Z2) (Y1)*(Z2)-(Z1)*(Y2),(Z1)*(X2)-(X1)*(Z2),(X1)*(Y2)-(Y1)*(X2)
-#define sqr(A)                     ((A)*(A))
-
-#ifndef Pi
-#define Pi                         M_PI
-#endif
-
-
-#define ACTION_SOLVE    1
-#define ACTION_SHUFFLE  0
-
-#define DELAY_AFTER_SHUFFLING  5
-#define DELAY_AFTER_SOLVING   20
-
-/*************************************************************************/
-
-#define MINSIZE 2
-#ifdef LMN                     /* LxMxN not completed yet... */
-#define MAXSIZEX (rp->sizex)
-#define MAXSIZEY (rp->sizey)
-#define MAXSIZEZ (rp->sizez)
-#define AVSIZE (rp->avsize)
-#define MAXSIZE (rp->maxsize)
-#define AVSIZESQ (rp->avsizeSq)
-#define MAXSIZESQ (rp->maxsizeSq)
-#else
-#define MAXSIZEX (rp->size)
-#define MAXSIZEY (rp->size)
-#define MAXSIZEZ (rp->size)
-#define AVSIZE (rp->size)
-#define MAXSIZE (rp->size)
-#define AVSIZESQ (rp->sizeSq)
-#define MAXSIZESQ (rp->sizeSq)
-#endif
-#define MAXSIZEXY (MAXSIZEX*MAXSIZEY)
-#define MAXSIZEZY (MAXSIZEZ*MAXSIZEY)
-#define MAXSIZEXZ (MAXSIZEX*MAXSIZEZ)
-#define LASTX (MAXSIZEX-1)
-#define LASTY (MAXSIZEY-1)
-#define LASTZ (MAXSIZEZ-1)
-/* These are not likely to change but... */
-#define FIRSTX 0
-#define FIRSTY 0
-#define FIRSTZ 0
-
-#define Scale4Window               (0.9/AVSIZE)
-#define Scale4Iconic               (2.1/AVSIZE)
-
-#define MAXORIENT 4            /* Number of orientations of a square */
-#define MAXFACES 6             /* Number of faces */
-
-/* Directions relative to the face of a cubie */
-#define TOP 0
-#define RIGHT 1
-#define BOTTOM 2
-#define LEFT 3
-#define CW (MAXORIENT+1)
-#define CCW (2*MAXORIENT-1)
-
-#define TOP_FACE 0
-#define LEFT_FACE 1
-#define FRONT_FACE 2
-#define RIGHT_FACE 3
-#define BOTTOM_FACE 4
-#define BACK_FACE 5
-#define NO_FACE (MAXFACES)
-#define NO_ROTATION (2*MAXORIENT)
-#define NO_DEPTH MAXSIZE
-
-#define REVX(a) (MAXSIZEX - a - 1)
-#define REVY(a) (MAXSIZEY - a - 1)
-#define REVZ(a) (MAXSIZEZ - a - 1)
-
-typedef struct _RubikLoc {
-       int         face;
-       int         rotation;   /* Not used yet */
-} RubikLoc;
-
-typedef struct _RubikRowNext {
-       int         face, direction, sideFace;
-} RubikRowNext;
-
-typedef struct _RubikMove {
-       int         face, direction;
-       int         position;
-} RubikMove;
-
-typedef struct _RubikSlice {
-       int         face, rotation;
-       int         depth;
-} RubikSlice;
-
-/*-
- * Pick a face and a direction on face the next face and orientation
- * is then known.
- */
-static RubikLoc slideNextRow[MAXFACES][MAXORIENT] =
-{
-       {
-               {5, TOP},
-               {3, RIGHT},
-               {2, TOP},
-               {1, LEFT}},
-       {
-               {0, RIGHT},
-               {2, TOP},
-               {4, LEFT},
-               {5, BOTTOM}},
-       {
-               {0, TOP},
-               {3, TOP},
-               {4, TOP},
-               {1, TOP}},
-       {
-               {0, LEFT},
-               {5, BOTTOM},
-               {4, RIGHT},
-               {2, TOP}},
-       {
-               {2, TOP},
-               {3, LEFT},
-               {5, TOP},
-               {1, RIGHT}},
-       {
-               {4, TOP},
-               {3, BOTTOM},
-               {0, TOP},
-               {1, BOTTOM}}
-};
-
-/*-
- * Examine cubie 0 on each face, its 4 movements (well only 2 since the
- * other 2 will be opposites) and translate it into slice movements).
- * Beware.. using this for NxNxN makes some assumptions that referenced
- * cubes are along the diagonal top-left to bottom-right.
- * CW = DEEP Depth CCW == SHALLOW Depth with reference to faces 0, 1, and 2
- */
-static RubikLoc rotateSlice[MAXFACES][MAXORIENT / 2] =
-{
-       {
-               {1, CCW},
-               {2, CW},
-       },
-       {
-               {2, CW},
-               {0, CCW},
-       },
-       {
-               {1, CCW},
-               {0, CCW},
-       },
-       {
-               {2, CCW},
-               {0, CCW},
-       },
-       {
-               {1, CCW},
-               {2, CCW},
-       },
-       {
-               {1, CCW},
-               {0, CW},
-       }
-};
-
-/*-
- * Rotate face clockwise by a number of orients, then the top of the
- * face then points to this face
- */
-static int  rowToRotate[MAXFACES][MAXORIENT] =
-{
-       {3, 2, 1, 5},
-       {2, 4, 5, 0},
-       {3, 4, 1, 0},
-       {5, 4, 2, 0},
-       {3, 5, 1, 2},
-       {3, 0, 1, 4}
-};
-
-/* 
- * This translates a clockwise move to something more manageable
- */
-static RubikRowNext rotateToRow[MAXFACES] =    /*CW to min face */
-{
-       {1, LEFT, TOP},
-       {0, BOTTOM, LEFT},
-       {0, RIGHT, BOTTOM},
-       {0, TOP, RIGHT},
-       {1, RIGHT, BOTTOM},
-       {0, LEFT, TOP}
-};
-
-typedef struct {
-       GLint       WindH, WindW;
-       GLfloat     step;
-       RubikMove  *moves;
-       int         storedmoves;
-       int         shufflingmoves;
-#ifdef LMN                     /* Under construction */
-       int         sizex, sizey, sizez;
-       int         avsize, maxsize;
-       int         avsizeSq, maxsizeSq;
-#else
-       int         size, sizeSq;
-#endif
-       int         action;
-       int         done;
-       GLfloat     anglestep;
-       RubikLoc   *cubeLoc[MAXFACES];
-       RubikLoc   *rowLoc[MAXORIENT];
-       RubikMove   movement;
-       GLfloat     rotatestep;
-       GLfloat     PX, PY, VX, VY;
-       GLXContext *glx_context;
-       int         AreObjectsDefined[1];
-} rubikstruct;
-
-static float front_shininess[] =
-{60.0};
-static float front_specular[] =
-{0.7, 0.7, 0.7, 1.0};
-static float ambient[] =
-{0.0, 0.0, 0.0, 1.0};
-static float diffuse[] =
-{1.0, 1.0, 1.0, 1.0};
-static float position0[] =
-{1.0, 1.0, 1.0, 0.0};
-static float position1[] =
-{-1.0, -1.0, 1.0, 0.0};
-static float lmodel_ambient[] =
-{0.5, 0.5, 0.5, 1.0};
-static float lmodel_twoside[] =
-{GL_TRUE};
-
-static float MaterialRed[] =
-{0.5, 0.0, 0.0, 1.0};
-static float MaterialGreen[] =
-{0.0, 0.5, 0.0, 1.0};
-static float MaterialBlue[] =
-{0.0, 0.0, 0.5, 1.0};
-static float MaterialYellow[] =
-{0.7, 0.7, 0.0, 1.0};
-static float MaterialOrange[] =
-{0.9, 0.45, 0.36, 1.0};
-
-#if 0
-static float MaterialMagenta[] =
-{0.7, 0.0, 0.7, 1.0};
-static float MaterialCyan[] =
-{0.0, 0.7, 0.7, 1.0};
-
-#endif
-static float MaterialWhite[] =
-{0.8, 0.8, 0.8, 1.0};
-static float MaterialGray[] =
-{0.2, 0.2, 0.2, 1.0};
-static float MaterialGray3[] =
-{0.3, 0.3, 0.3, 1.0};
-static float MaterialGray4[] =
-{0.4, 0.4, 0.4, 1.0};
-static float MaterialGray5[] =
-{0.5, 0.5, 0.5, 1.0};
-static float MaterialGray6[] =
-{0.6, 0.6, 0.6, 1.0};
-static float MaterialGray7[] =
-{0.7, 0.7, 0.7, 1.0};
-
-static rubikstruct *rubik = NULL;
-static GLuint objects;
-
-#define ObjCubit        0
-
-static void
-pickcolor(int C, int mono)
-{
-       switch (C) {
-               case TOP_FACE:
-                       if (mono)
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray3);
-                       else
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed);
-                       break;
-               case LEFT_FACE:
-                       if (mono)
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6);
-                       else
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialYellow);
-                       break;
-               case FRONT_FACE:
-                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite);
-                       break;
-               case RIGHT_FACE:
-                       if (mono)
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray4);
-                       else
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGreen);
-                       break;
-               case BOTTOM_FACE:
-                       if (mono)
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray7);
-                       else
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialOrange);
-                       break;
-               case BACK_FACE:
-                       if (mono)
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray5);
-                       else
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialBlue);
-                       break;
-#if 0
-                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialCyan);
-                       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialMagenta);
-#endif
-       }
-}
-
-
-static void
-draw_cubit(ModeInfo * mi,
-          int back, int front, int left, int right, int bottom, int top)
-{
-       rubikstruct *rp = &rubik[MI_SCREEN(mi)];
-       int         mono = MI_IS_MONO(mi);
-
-       if (!rp->AreObjectsDefined[ObjCubit]) {
-               glNewList(objects + ObjCubit, GL_COMPILE_AND_EXECUTE);
-               glBegin(GL_QUADS);
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
-               glNormal3f(0.00, 0.00, 1.00);
-               glVertex3f(-0.45, -0.45, 0.50);
-               glVertex3f(0.45, -0.45, 0.50);
-               glVertex3f(0.45, 0.45, 0.50);
-               glVertex3f(-0.45, 0.45, 0.50);
-               glNormal3f(0.00, 0.00, -1.00);
-               glVertex3f(-0.45, 0.45, -0.50);
-               glVertex3f(0.45, 0.45, -0.50);
-               glVertex3f(0.45, -0.45, -0.50);
-               glVertex3f(-0.45, -0.45, -0.50);
-               glNormal3f(-1.00, 0.00, 0.00);
-               glVertex3f(-0.50, -0.45, 0.45);
-               glVertex3f(-0.50, 0.45, 0.45);
-               glVertex3f(-0.50, 0.45, -0.45);
-               glVertex3f(-0.50, -0.45, -0.45);
-               glNormal3f(1.00, 0.00, 0.00);
-               glVertex3f(0.50, -0.45, -0.45);
-               glVertex3f(0.50, 0.45, -0.45);
-               glVertex3f(0.50, 0.45, 0.45);
-               glVertex3f(0.50, -0.45, 0.45);
-               glNormal3f(0.00, -1.00, 0.00);
-               glVertex3f(0.45, -0.50, -0.45);
-               glVertex3f(0.45, -0.50, 0.45);
-               glVertex3f(-0.45, -0.50, 0.45);
-               glVertex3f(-0.45, -0.50, -0.45);
-               glNormal3f(0.00, 1.00, 0.00);
-               glVertex3f(-0.45, 0.50, -0.45);
-               glVertex3f(-0.45, 0.50, 0.45);
-               glVertex3f(0.45, 0.50, 0.45);
-               glVertex3f(0.45, 0.50, -0.45);
-               glNormal3f(-1.00, -1.00, 0.00);
-               glVertex3f(-0.45, -0.50, -0.45);
-               glVertex3f(-0.45, -0.50, 0.45);
-               glVertex3f(-0.50, -0.45, 0.45);
-               glVertex3f(-0.50, -0.45, -0.45);
-               glNormal3f(1.00, 1.00, 0.00);
-               glVertex3f(0.45, 0.50, -0.45);
-               glVertex3f(0.45, 0.50, 0.45);
-               glVertex3f(0.50, 0.45, 0.45);
-               glVertex3f(0.50, 0.45, -0.45);
-               glNormal3f(-1.00, 1.00, 0.00);
-               glVertex3f(-0.50, 0.45, -0.45);
-               glVertex3f(-0.50, 0.45, 0.45);
-               glVertex3f(-0.45, 0.50, 0.45);
-               glVertex3f(-0.45, 0.50, -0.45);
-               glNormal3f(1.00, -1.00, 0.00);
-               glVertex3f(0.50, -0.45, -0.45);
-               glVertex3f(0.50, -0.45, 0.45);
-               glVertex3f(0.45, -0.50, 0.45);
-               glVertex3f(0.45, -0.50, -0.45);
-               glNormal3f(0.00, -1.00, -1.00);
-               glVertex3f(-0.45, -0.45, -0.50);
-               glVertex3f(0.45, -0.45, -0.50);
-               glVertex3f(0.45, -0.50, -0.45);
-               glVertex3f(-0.45, -0.50, -0.45);
-               glNormal3f(0.00, 1.00, 1.00);
-               glVertex3f(-0.45, 0.45, 0.50);
-               glVertex3f(0.45, 0.45, 0.50);
-               glVertex3f(0.45, 0.50, 0.45);
-               glVertex3f(-0.45, 0.50, 0.45);
-               glNormal3f(0.00, -1.00, 1.00);
-               glVertex3f(-0.45, -0.50, 0.45);
-               glVertex3f(0.45, -0.50, 0.45);
-               glVertex3f(0.45, -0.45, 0.50);
-               glVertex3f(-0.45, -0.45, 0.50);
-               glNormal3f(0.00, 1.00, -1.00);
-               glVertex3f(-0.45, 0.50, -0.45);
-               glVertex3f(0.45, 0.50, -0.45);
-               glVertex3f(0.45, 0.45, -0.50);
-               glVertex3f(-0.45, 0.45, -0.50);
-               glNormal3f(-1.00, 0.00, -1.00);
-               glVertex3f(-0.50, -0.45, -0.45);
-               glVertex3f(-0.50, 0.45, -0.45);
-               glVertex3f(-0.45, 0.45, -0.50);
-               glVertex3f(-0.45, -0.45, -0.50);
-               glNormal3f(1.00, 0.00, 1.00);
-               glVertex3f(0.50, -0.45, 0.45);
-               glVertex3f(0.50, 0.45, 0.45);
-               glVertex3f(0.45, 0.45, 0.50);
-               glVertex3f(0.45, -0.45, 0.50);
-               glNormal3f(1.00, 0.00, -1.00);
-               glVertex3f(0.45, -0.45, -0.50);
-               glVertex3f(0.45, 0.45, -0.50);
-               glVertex3f(0.50, 0.45, -0.45);
-               glVertex3f(0.50, -0.45, -0.45);
-               glNormal3f(-1.00, 0.00, 1.00);
-               glVertex3f(-0.45, -0.45, 0.50);
-               glVertex3f(-0.45, 0.45, 0.50);
-               glVertex3f(-0.50, 0.45, 0.45);
-               glVertex3f(-0.50, -0.45, 0.45);
-               glEnd();
-               glBegin(GL_TRIANGLES);
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
-               glNormal3f(1.00, 1.00, 1.00);
-               glVertex3f(0.45, 0.45, 0.50);
-               glVertex3f(0.50, 0.45, 0.45);
-               glVertex3f(0.45, 0.50, 0.45);
-               glNormal3f(-1.00, -1.00, -1.00);
-               glVertex3f(-0.45, -0.50, -0.45);
-               glVertex3f(-0.50, -0.45, -0.45);
-               glVertex3f(-0.45, -0.45, -0.50);
-               glNormal3f(-1.00, 1.00, 1.00);
-               glVertex3f(-0.45, 0.45, 0.50);
-               glVertex3f(-0.45, 0.50, 0.45);
-               glVertex3f(-0.50, 0.45, 0.45);
-               glNormal3f(1.00, -1.00, -1.00);
-               glVertex3f(0.50, -0.45, -0.45);
-               glVertex3f(0.45, -0.50, -0.45);
-               glVertex3f(0.45, -0.45, -0.50);
-               glNormal3f(1.00, -1.00, 1.00);
-               glVertex3f(0.45, -0.45, 0.50);
-               glVertex3f(0.45, -0.50, 0.45);
-               glVertex3f(0.50, -0.45, 0.45);
-               glNormal3f(-1.00, 1.00, -1.00);
-               glVertex3f(-0.50, 0.45, -0.45);
-               glVertex3f(-0.45, 0.50, -0.45);
-               glVertex3f(-0.45, 0.45, -0.50);
-               glNormal3f(-1.00, -1.00, 1.00);
-               glVertex3f(-0.45, -0.45, 0.50);
-               glVertex3f(-0.50, -0.45, 0.45);
-               glVertex3f(-0.45, -0.50, 0.45);
-               glNormal3f(1.00, 1.00, -1.00);
-               glVertex3f(0.50, 0.45, -0.45);
-               glVertex3f(0.45, 0.45, -0.50);
-               glVertex3f(0.45, 0.50, -0.45);
-               glEnd();
-               glEndList();
-               rp->AreObjectsDefined[ObjCubit] = 1;
-#ifdef DEBUG_LISTS
-               (void) printf("Cubit drawn SLOWLY\n");
-#endif
-       } else {
-               glCallList(objects + ObjCubit);
-#ifdef DEBUG_LISTS
-               (void) printf("Cubit drawn quickly\n");
-#endif
-       }
-
-       if (back != NO_FACE) {
-               glBegin(GL_POLYGON);
-               pickcolor(back, mono);
-               glNormal3f(0.00, 0.00, -1.00);
-               glVertex3f(-0.35, 0.40, -0.51);
-               glVertex3f(0.35, 0.40, -0.51);
-               glVertex3f(0.40, 0.35, -0.51);
-               glVertex3f(0.40, -0.35, -0.51);
-               glVertex3f(0.35, -0.40, -0.51);
-               glVertex3f(-0.35, -0.40, -0.51);
-               glVertex3f(-0.40, -0.35, -0.51);
-               glVertex3f(-0.40, 0.35, -0.51);
-               glEnd();
-       }
-       if (front != NO_FACE) {
-               glBegin(GL_POLYGON);
-               pickcolor(front, mono);
-               glNormal3f(0.00, 0.00, 1.00);
-               glVertex3f(-0.35, -0.40, 0.51);
-               glVertex3f(0.35, -0.40, 0.51);
-               glVertex3f(0.40, -0.35, 0.51);
-               glVertex3f(0.40, 0.35, 0.51);
-               glVertex3f(0.35, 0.40, 0.51);
-               glVertex3f(-0.35, 0.40, 0.51);
-               glVertex3f(-0.40, 0.35, 0.51);
-               glVertex3f(-0.40, -0.35, 0.51);
-               glEnd();
-       }
-       if (left != NO_FACE) {
-               glBegin(GL_POLYGON);
-               pickcolor(left, mono);
-               glNormal3f(-1.00, 0.00, 0.00);
-               glVertex3f(-0.51, -0.35, 0.40);
-               glVertex3f(-0.51, 0.35, 0.40);
-               glVertex3f(-0.51, 0.40, 0.35);
-               glVertex3f(-0.51, 0.40, -0.35);
-               glVertex3f(-0.51, 0.35, -0.40);
-               glVertex3f(-0.51, -0.35, -0.40);
-               glVertex3f(-0.51, -0.40, -0.35);
-               glVertex3f(-0.51, -0.40, 0.35);
-               glEnd();
-       }
-       if (right != NO_FACE) {
-               glBegin(GL_POLYGON);
-               pickcolor(right, mono);
-               glNormal3f(1.00, 0.00, 0.00);
-               glVertex3f(0.51, -0.35, -0.40);
-               glVertex3f(0.51, 0.35, -0.40);
-               glVertex3f(0.51, 0.40, -0.35);
-               glVertex3f(0.51, 0.40, 0.35);
-               glVertex3f(0.51, 0.35, 0.40);
-               glVertex3f(0.51, -0.35, 0.40);
-               glVertex3f(0.51, -0.40, 0.35);
-               glVertex3f(0.51, -0.40, -0.35);
-               glEnd();
-       }
-       if (bottom != NO_FACE) {
-               glBegin(GL_POLYGON);
-               pickcolor(bottom, mono);
-               glNormal3f(0.00, -1.00, 0.00);
-               glVertex3f(0.40, -0.51, -0.35);
-               glVertex3f(0.40, -0.51, 0.35);
-               glVertex3f(0.35, -0.51, 0.40);
-               glVertex3f(-0.35, -0.51, 0.40);
-               glVertex3f(-0.40, -0.51, 0.35);
-               glVertex3f(-0.40, -0.51, -0.35);
-               glVertex3f(-0.35, -0.51, -0.40);
-               glVertex3f(0.35, -0.51, -0.40);
-               glEnd();
-       }
-       if (top != NO_FACE) {
-               glBegin(GL_POLYGON);
-               pickcolor(top, mono);
-               glNormal3f(0.00, 1.00, 0.00);
-               glVertex3f(-0.40, 0.51, -0.35);
-               glVertex3f(-0.40, 0.51, 0.35);
-               glVertex3f(-0.35, 0.51, 0.40);
-               glVertex3f(0.35, 0.51, 0.40);
-               glVertex3f(0.40, 0.51, 0.35);
-               glVertex3f(0.40, 0.51, -0.35);
-               glVertex3f(0.35, 0.51, -0.40);
-               glVertex3f(-0.35, 0.51, -0.40);
-               glEnd();
-       }
-}
-
-
-static      RubikSlice
-convertMove(rubikstruct * rp, RubikMove move)
-{
-       RubikSlice  slice;
-       RubikLoc    plane;
-
-       plane = rotateSlice[(int) move.face][move.direction % 2];
-       slice.face = plane.face;
-       slice.rotation = plane.rotation;
-       if (slice.rotation == CW)       /* I just know this to be true... */
-               slice.depth = AVSIZESQ - 1 - move.position;
-       else
-               slice.depth = move.position;
-       slice.depth = slice.depth / AVSIZE;
-       /* If slice.depth = 0 then face 0, face 1, or face 2 moves */
-       if (move.direction / 2)
-               slice.rotation = (plane.rotation == CW) ? CCW : CW;
-       return slice;
-}
-
-/* Assume for the moment that the size is at least 2 */
-static void
-draw_cube(ModeInfo * mi)
-{
-#define S1 1
-#define SX ((GLint)S1*(MAXSIZEX-1))
-#define SY ((GLint)S1*(MAXSIZEY-1))
-#define SZ ((GLint)S1*(MAXSIZEZ-1))
-#define HALFX (((GLfloat)MAXSIZEX-1.0)/2.0)
-#define HALFY (((GLfloat)MAXSIZEY-1.0)/2.0)
-#define HALFZ (((GLfloat)MAXSIZEZ-1.0)/2.0)
-#define MIDX(a) (((GLfloat)(2*a-MAXSIZEX+1))/2.0)
-#define MIDY(a) (((GLfloat)(2*a-MAXSIZEY+1))/2.0)
-#define MIDZ(a) (((GLfloat)(2*a-MAXSIZEZ+1))/2.0)
-       rubikstruct *rp = &rubik[MI_SCREEN(mi)];
-       RubikSlice  slice;
-       GLfloat     rotatestep;
-       int         i, j, k;
-
-       if (rp->movement.face == NO_FACE) {
-               slice.face = NO_FACE;
-               slice.rotation = NO_ROTATION;
-               slice.depth = NO_DEPTH;
-       } else {
-               slice = convertMove(rp, rp->movement);
-       }
-       rotatestep = (slice.rotation == CCW) ? rp->rotatestep : -rp->rotatestep;
-
-/*-
- * The glRotatef() routine transforms the coordinate system for every future
- * vertex specification (this is not so simple, but by now comprehending this
- * is sufficient). So if you want to rotate the inner slice, you can draw
- * one slice, rotate the anglestep for the centerslice, draw the inner slice,
- * rotate reversely and draw the other slice.
- * There is a sequence for drawing cubies for each axis being moved...
- */
-       switch (slice.face) {
-               case NO_FACE:
-               case TOP_FACE:  /* BOTTOM_FACE too */
-                       glPushMatrix();
-                       if (slice.depth == MAXSIZEY - 1)
-                               glRotatef(rotatestep, 0, HALFY, 0);
-
-                       glTranslatef(-HALFX, -HALFY, -HALFZ);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                  rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * LASTZ].face, NO_FACE);
-                       for (k = 1; k < MAXSIZEZ - 1; k++) {
-                               glTranslatef(0, 0, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * LASTY].face, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                       }
-                       glTranslatef(0, 0, S1);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * LASTY].face,
-                                  rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                       for (i = 1; i < MAXSIZEX - 1; i++) {
-                               glTranslatef(S1, 0, -SZ);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][i + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * LASTZ].face, NO_FACE);
-                               for (k = 1; k < MAXSIZEZ - 1; k++) {
-                                       glTranslatef(0, 0, S1);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                               }
-                               glTranslatef(0, 0, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * LASTY].face,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                       }
-                       glTranslatef(1, 0, -SZ);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * LASTY].face,
-                                  rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * LASTZ].face, NO_FACE);
-                       for (k = 1; k < MAXSIZEZ - 1; k++) {
-                               glTranslatef(0, 0, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * LASTY].face,
-                                          rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                       }
-                       glTranslatef(0, 0, S1);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * LASTY].face,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face,
-                                  rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                       glPopMatrix();
-                       for (j = 1; j < MAXSIZEY - 1; j++) {
-                               glPushMatrix();
-                               if (slice.depth == REVY(j))
-                                       glRotatef(rotatestep, 0, HALFY, 0);
-                               glTranslatef(-HALFX, MIDY(j), -HALFZ);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * j].face, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                          NO_FACE, NO_FACE);
-                               for (k = 1; k < MAXSIZEZ - 1; k++) {
-                                       glTranslatef(0, 0, S1);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(0, 0, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * REVY(j)].face,
-                                          rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                          NO_FACE, NO_FACE);
-                               for (i = 1; i < MAXSIZEX - 1; i++) {
-                                       glTranslatef(1, 0, -SZ);
-                                       draw_cubit(mi,
-                                                  rp->cubeLoc[BACK_FACE][i + MAXSIZEX * j].face, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                                       /* Center */
-                                       glTranslatef(0, 0, SZ);
-                                       draw_cubit(mi,
-                                                  NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * REVY(j)].face,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(S1, 0, -SZ);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * j].face, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face,
-                                          NO_FACE, NO_FACE);
-                               for (k = 1; k < MAXSIZEZ - 1; k++) {
-                                       glTranslatef(0, 0, S1);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * REVY(j)].face,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(0, 0, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * REVY(j)].face,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face,
-                                          NO_FACE, NO_FACE);
-                               glPopMatrix();
-                       }
-                       if (slice.depth == 0)
-                               glRotatef(rotatestep, 0, HALFY, 0);
-
-                       glTranslatef(-HALFX, HALFY, -HALFZ);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face);
-                       for (k = 1; k < MAXSIZEZ - 1; k++) {
-                               glTranslatef(0, 0, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * k].face);
-                       }
-                       glTranslatef(0, 0, S1);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * FIRSTY].face,
-                                  rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * LASTZ].face);
-                       for (i = 1; i < MAXSIZEX - 1; i++) {
-                               glTranslatef(S1, 0, -SZ);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][i + MAXSIZEX * LASTY].face, NO_FACE,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * FIRSTZ].face);
-                               for (k = 1; k < MAXSIZEZ - 1; k++) {
-                                       glTranslatef(0, 0, S1);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * k].face);
-                               }
-                               glTranslatef(0, 0, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * FIRSTY].face,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * LASTZ].face);
-                       }
-                       glTranslatef(S1, 0, -SZ);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * LASTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * FIRSTZ].face);
-                       for (k = 1; k < MAXSIZEZ - 1; k++) {
-                               glTranslatef(0, 0, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * FIRSTY].face,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * k].face);
-                       }
-                       glTranslatef(0, 0, S1);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * LASTZ].face);
-                       break;
-               case LEFT_FACE: /* RIGHT_FACE too */
-                       /* rotatestep is negative because the RIGHT face is the default here */
-                       glPushMatrix();
-                       if (slice.depth == 0)
-                               glRotatef(-rotatestep, HALFX, 0, 0);
-
-                       glTranslatef(-HALFX, -HALFY, -HALFZ);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                  rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * LASTZ].face, NO_FACE);
-                       for (j = 1; j < MAXSIZEY - 1; j++) {
-                               glTranslatef(0, S1, 0);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * j].face, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                          NO_FACE, NO_FACE);
-                       }
-                       glTranslatef(0, S1, 0);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face);
-                       for (k = 1; k < MAXSIZEZ - 1; k++) {
-                               glTranslatef(0, -SY, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * LASTY].face, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                               for (j = 1; j < MAXSIZEY - 1; j++) {
-                                       glTranslatef(0, S1, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(0, S1, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * k].face);
-                       }
-                       glTranslatef(0, -SY, S1);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * LASTY].face,
-                                  rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                       for (j = 1; j < MAXSIZEY - 1; j++) {
-                               glTranslatef(0, S1, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * REVY(j)].face,
-                                          rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                          NO_FACE, NO_FACE);
-                       }
-                       glTranslatef(0, S1, 0);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * FIRSTY].face,
-                                  rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * LASTZ].face);
-                       glPopMatrix();
-                       for (i = 1; i < MAXSIZEX - 1; i++) {
-                               glPushMatrix();
-                               if (slice.depth == i)
-                                       glRotatef(-rotatestep, HALFX, 0, 0);
-                               glTranslatef(MIDX(i), -HALFY, -HALFZ);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][i + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * LASTZ].face, NO_FACE);
-                               for (j = 1; j < MAXSIZEY - 1; j++) {
-                                       glTranslatef(0, S1, 0);
-                                       draw_cubit(mi,
-                                                  rp->cubeLoc[BACK_FACE][i + MAXSIZEX * j].face, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(0, S1, 0);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][i + MAXSIZEX * LASTY].face, NO_FACE,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * FIRSTZ].face);
-                               for (k = 1; k < MAXSIZEZ - 1; k++) {
-                                       glTranslatef(0, -SY, S1);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                                       /* Center */
-                                       glTranslatef(0, SY, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * k].face);
-                               }
-                               glTranslatef(0, -SY, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * LASTY].face,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                               for (j = 1; j < MAXSIZEY - 1; j++) {
-                                       glTranslatef(0, S1, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * REVY(j)].face,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(0, S1, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * FIRSTY].face,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * LASTZ].face);
-                               glPopMatrix();
-                       }
-                       if (slice.depth == MAXSIZEX - 1)
-                               glRotatef(-rotatestep, HALFX, 0, 0);
-                       glTranslatef(HALFX, -HALFY, -HALFZ);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * LASTY].face,
-                                  rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * LASTZ].face, NO_FACE);
-                       for (j = 1; j < MAXSIZEY - 1; j++) {
-                               glTranslatef(0, S1, 0);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * j].face, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face,
-                                          NO_FACE, NO_FACE);
-                       }
-                       glTranslatef(0, S1, 0);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * LASTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * FIRSTZ].face);
-                       for (k = 1; k < MAXSIZEZ - 1; k++) {
-                               glTranslatef(0, -SY, S1);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * LASTY].face,
-                                          rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                               for (j = 1; j < MAXSIZEY - 1; j++) {
-                                       glTranslatef(0, S1, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * REVY(j)].face,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(0, S1, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * FIRSTY].face,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * k].face);
-                       }
-                       glTranslatef(0, -SY, S1);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * LASTY].face,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face,
-                                  rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                       for (j = 1; j < MAXSIZEY - 1; j++) {
-                               glTranslatef(0, S1, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * REVY(j)].face,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face,
-                                          NO_FACE, NO_FACE);
-                       }
-                       glTranslatef(0, S1, 0);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * LASTZ].face);
-                       break;
-               case FRONT_FACE:        /* BACK_FACE too */
-                       glPushMatrix();
-                       if (slice.depth == MAXSIZEZ - 1)
-                               glRotatef(rotatestep, 0, 0, HALFZ);
-
-                       glTranslatef(-HALFX, -HALFY, -HALFZ);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                  rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * LASTZ].face, NO_FACE);
-                       for (i = 1; i < MAXSIZEX - 1; i++) {
-                               glTranslatef(S1, 0, 0);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][i + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * LASTZ].face, NO_FACE);
-                       }
-                       glTranslatef(S1, 0, 0);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * LASTY].face,
-                                  rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * LASTZ].face, NO_FACE);
-                       for (j = 1; j < MAXSIZEY - 1; j++) {
-                               glTranslatef(-SX, S1, 0);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * j].face, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                          NO_FACE, NO_FACE);
-                               for (i = 1; i < MAXSIZEX - 1; i++) {
-                                       glTranslatef(S1, 0, 0);
-                                       draw_cubit(mi,
-                                                  rp->cubeLoc[BACK_FACE][i + MAXSIZEX * j].face, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(S1, 0, 0);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * j].face, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face,
-                                          NO_FACE, NO_FACE);
-                       }
-                       glTranslatef(-SX, S1, 0);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face);
-                       for (i = 1; i < MAXSIZEX - 1; i++) {
-                               glTranslatef(S1, 0, 0);
-                               draw_cubit(mi,
-                                          rp->cubeLoc[BACK_FACE][i + MAXSIZEX * LASTY].face, NO_FACE,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * FIRSTZ].face);
-                       }
-                       glTranslatef(S1, 0, 0);
-                       draw_cubit(mi,
-                                  rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * LASTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * FIRSTZ].face);
-                       glPopMatrix();
-                       for (k = 1; k < MAXSIZEZ - 1; k++) {
-                               glPushMatrix();
-                               if (slice.depth == REVZ(k))
-                                       glRotatef(rotatestep, 0, 0, HALFZ);
-                               glTranslatef(-HALFX, -HALFY, MIDZ(k));
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * LASTY].face, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                               for (i = 1; i < MAXSIZEX - 1; i++) {
-                                       glTranslatef(S1, 0, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                               }
-                               glTranslatef(S1, 0, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * LASTY].face,
-                                          rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * REVZ(k)].face, NO_FACE);
-                               for (j = 1; j < MAXSIZEY - 1; j++) {
-                                       glTranslatef(-SX, S1, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                                       /* Center */
-                                       glTranslatef(SX, 0, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * REVY(j)].face,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(-SX, S1, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * k].face);
-                               for (i = 1; i < MAXSIZEX - 1; i++) {
-                                       glTranslatef(S1, 0, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * k].face);
-                               }
-                               glTranslatef(S1, 0, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * FIRSTY].face,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * k].face);
-                               glPopMatrix();
-                       }
-                       if (slice.depth == 0)
-                               glRotatef(rotatestep, 0, 0, HALFZ);
-                       glTranslatef(-HALFX, -HALFY, HALFZ);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * LASTY].face,
-                                  rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * LASTY].face, NO_FACE,
-                                  rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                       for (i = 1; i < MAXSIZEX - 1; i++) {
-                               glTranslatef(S1, 0, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * LASTY].face,
-                                          NO_FACE, NO_FACE,
-                                          rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                       }
-                       glTranslatef(S1, 0, 0);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * LASTY].face,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face,
-                                  rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * FIRSTZ].face, NO_FACE);
-                       for (j = 1; j < MAXSIZEY - 1; j++) {
-                               glTranslatef(-SX, S1, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * REVY(j)].face,
-                                          rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, NO_FACE,
-                                          NO_FACE, NO_FACE);
-                               for (i = 1; i < MAXSIZEX - 1; i++) {
-                                       glTranslatef(S1, 0, 0);
-                                       draw_cubit(mi,
-                                                  NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * REVY(j)].face,
-                                                  NO_FACE, NO_FACE,
-                                                  NO_FACE, NO_FACE);
-                               }
-                               glTranslatef(S1, 0, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * REVY(j)].face,
-                                          NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face,
-                                          NO_FACE, NO_FACE);
-                       }
-                       glTranslatef(-SX, S1, 0);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * FIRSTY].face,
-                                  rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, NO_FACE,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * LASTZ].face);
-                       for (i = 1; i < MAXSIZEX - 1; i++) {
-                               glTranslatef(S1, 0, 0);
-                               draw_cubit(mi,
-                                          NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * FIRSTY].face,
-                                          NO_FACE, NO_FACE,
-                                          NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * LASTZ].face);
-                       }
-                       glTranslatef(S1, 0, 0);
-                       draw_cubit(mi,
-                                  NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face,
-                                  NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * LASTZ].face);
-                       break;
-       }
-#undef S1
-}
-
-/* From David Bagley's xrubik.  Used by permission. ;)  */
-static void
-readRC(rubikstruct * rp, int face, int dir, int h, int orient, int size)
-{
-       int         g;
-
-       if (dir == TOP || dir == BOTTOM)
-               for (g = 0; g < size; g++)
-                       rp->rowLoc[orient][g] =
-                               rp->cubeLoc[face][g * size + h];
-       else                    /* dir == RIGHT || dir == LEFT */
-               for (g = 0; g < size; g++)
-                       rp->rowLoc[orient][g] =
-                               rp->cubeLoc[face][h * size + g];
-}
-
-static void
-rotateRC(rubikstruct * rp, int rotate, int orient, int size)
-{
-       int         g;
-
-       for (g = 0; g < size; g++)
-               rp->rowLoc[orient][g].rotation =
-                       (rp->rowLoc[orient][g].rotation + rotate) % MAXORIENT;
-}
-
-static void
-reverseRC(rubikstruct * rp, int orient, int size)
-{
-       int         g;
-       RubikLoc    temp;
-
-       for (g = 0; g < size / 2; g++) {
-               temp = rp->rowLoc[orient][size - 1 - g];
-               rp->rowLoc[orient][size - 1 - g] = rp->rowLoc[orient][g];
-               rp->rowLoc[orient][g] = temp;
-       }
-}
-
-static void
-writeRC(rubikstruct * rp, int face, int dir, int h, int orient, int size)
-{
-       int         g, position;
-
-       if (dir == TOP || dir == BOTTOM) {
-               for (g = 0; g < size; g++) {
-                       position = g * size + h;
-                       rp->cubeLoc[face][position] = rp->rowLoc[orient][g];
-                       /* DrawSquare(face, position); */
-               }
-       } else {                /* dir == RIGHT || dir == LEFT */
-               for (g = 0; g < size; g++) {
-                       position = h * size + g;
-                       rp->cubeLoc[face][position] = rp->rowLoc[orient][g];
-                       /* DrawSquare(face, position); */
-               }
-       }
-}
-
-static void
-rotateFace(rubikstruct * rp, int face, int direction)
-{
-       int         position, i, j;
-       RubikLoc   *faceLoc = NULL;
-
-       if ((faceLoc = (RubikLoc *) malloc(AVSIZESQ * sizeof (RubikLoc))) == NULL)
-               (void) fprintf(stderr,
-                "Could not allocate memory for rubik face position info\n");
-       /* Read Face */
-       for (position = 0; position < AVSIZESQ; position++)
-               faceLoc[position] = rp->cubeLoc[face][position];
-       /* Write Face */
-       for (position = 0; position < AVSIZESQ; position++) {
-               i = position % AVSIZE;
-               j = position / AVSIZE;
-               rp->cubeLoc[face][position] = (direction == CW) ?
-                       faceLoc[(AVSIZE - i - 1) * AVSIZE + j] :
-                       faceLoc[i * AVSIZE + AVSIZE - j - 1];
-               rp->cubeLoc[face][position].rotation =
-                       (rp->cubeLoc[face][position].rotation + direction - MAXORIENT) %
-                       MAXORIENT;
-               /* DrawSquare(face, position); */
-       }
-       if (faceLoc != NULL)
-               (void) free((void *) faceLoc);
-}
-
-static void
-moveRubik(rubikstruct * rp, int face, int direction, int position)
-{
-       int         newFace, newDirection, rotate, reverse = False;
-       int         h, k, newH = 0;
-       int         i, j;
-
-       if (direction == CW || direction == CCW) {
-               direction = (direction == CCW) ?
-                       (rotateToRow[face].direction + 2) % MAXORIENT :
-                       rotateToRow[face].direction;
-               i = j = (rotateToRow[face].sideFace == RIGHT ||
-                     rotateToRow[face].sideFace == BOTTOM) ? AVSIZE - 1 : 0;
-               face = rotateToRow[face].face;
-               position = j * AVSIZE + i;
-       }
-       i = position % AVSIZE;
-       j = position / AVSIZE;
-       h = (direction == TOP || direction == BOTTOM) ? i : j;
-       /* rotate sides CW or CCW */
-       if (h == AVSIZE - 1) {
-               newDirection = (direction == TOP || direction == BOTTOM) ?
-                       TOP : RIGHT;
-               if (direction == TOP || direction == RIGHT)
-                       rotateFace(rp, rowToRotate[face][newDirection], CW);
-               else            /* direction == BOTTOM || direction == LEFT */
-                       rotateFace(rp, rowToRotate[face][newDirection], CCW);
-       }
-       if (h == 0) {
-               newDirection = (direction == TOP || direction == BOTTOM) ?
-                       BOTTOM : LEFT;
-               if (direction == TOP || direction == RIGHT)
-                       rotateFace(rp, rowToRotate[face][newDirection], CCW);
-               else            /* direction == BOTTOM  || direction == LEFT */
-                       rotateFace(rp, rowToRotate[face][newDirection], CW);
-       }
-       /* Slide rows */
-       readRC(rp, face, direction, h, 0, AVSIZE);
-       for (k = 1; k <= MAXORIENT; k++) {
-               newFace = slideNextRow[face][direction].face;
-               rotate = slideNextRow[face][direction].rotation;
-               newDirection = (rotate + direction) % MAXORIENT;
-               switch (rotate) {
-                       case TOP:
-                               newH = h;
-                               reverse = False;
-                               break;
-                       case RIGHT:
-                               if (newDirection == TOP || newDirection == BOTTOM) {
-                                       newH = AVSIZE - 1 - h;
-                                       reverse = False;
-                               } else {        /* newDirection == RIGHT || newDirection == LEFT */
-                                       newH = h;
-                                       reverse = True;
-                               }
-                               break;
-                       case BOTTOM:
-                               newH = AVSIZE - 1 - h;
-                               reverse = True;
-                               break;
-                       case LEFT:
-                               if (newDirection == TOP || newDirection == BOTTOM) {
-                                       newH = h;
-                                       reverse = True;
-                               } else {        /* newDirection == RIGHT || newDirection == LEFT */
-                                       newH = AVSIZE - 1 - h;
-                                       reverse = False;
-                               }
-                               break;
-                       default:
-                               (void) printf("moveRubik: rotate %d\n", rotate);
-               }
-               if (k != MAXORIENT)
-                       readRC(rp, newFace, newDirection, newH, k, AVSIZE);
-               rotateRC(rp, rotate, k - 1, AVSIZE);
-               if (reverse == True)
-                       reverseRC(rp, k - 1, AVSIZE);
-               writeRC(rp, newFace, newDirection, newH, k - 1, AVSIZE);
-               face = newFace;
-               direction = newDirection;
-               h = newH;
-       }
-}
-
-#ifdef DEBUG
-void
-printCube(rubikstruct * rp)
-{
-       int         face, position;
-
-       for (face = 0; face < MAXFACES; face++) {
-               for (position = 0; position < AVSIZESQ; position++) {
-                       (void) printf("%d %d  ", rp->cubeLoc[face][position].face,
-                                     rp->cubeLoc[face][position].rotation);
-                       if (!((position + 1) % AVSIZE))
-                               (void) printf("\n");
-               }
-               (void) printf("\n");
-       }
-       (void) printf("\n");
-}
-
-#endif
-
-static void
-evalmovement(ModeInfo * mi, RubikMove movement)
-{
-       rubikstruct *rp = &rubik[MI_SCREEN(mi)];
-
-#ifdef DEBUG
-       printCube(rp);
-#endif
-       if (movement.face < 0 || movement.face >= MAXFACES)
-               return;
-
-       moveRubik(rp, movement.face, movement.direction, movement.position);
-
-}
-
-static      Bool
-compare_moves(rubikstruct * rp, RubikMove move1, RubikMove move2, Bool opp)
-{
-       RubikSlice  slice1, slice2;
-
-       slice1 = convertMove(rp, move1);
-       slice2 = convertMove(rp, move2);
-       if (slice1.face == slice2.face &&
-           slice1.depth == slice2.depth) {
-               if (slice1.rotation == slice2.rotation) {       /* CW or CCW */
-                       if (!opp)
-                               return True;
-               } else {
-                       if (opp)
-                               return True;
-               }
-       }
-       return False;
-}
-
-static void
-shuffle(ModeInfo * mi)
-{
-       rubikstruct *rp = &rubik[MI_SCREEN(mi)];
-       int         i, face, position;
-       RubikMove   move;
-
-       AVSIZE = MI_SIZE(mi);
-       if (AVSIZE < -MINSIZE)
-               AVSIZE = NRAND(-AVSIZE - MINSIZE + 1) + MINSIZE;
-       else if (AVSIZE < MINSIZE)
-               AVSIZE = MINSIZE;
-       /* Let me waste a little space for the moment */
-       /* Future cube to be LxMxN and not just NxNxN, but not done yet */
-       AVSIZESQ = AVSIZE * AVSIZE;
-#ifdef LMN
-       MAXSIZEX = AVSIZE;
-       MAXSIZEY = AVSIZE;
-       MAXSIZEZ = AVSIZE;
-       MAXSIZE = AVSIZE;
-       MAXSIZESQ = AVSIZESQ;
-#endif
-
-       for (face = 0; face < MAXFACES; face++) {
-               if (rp->cubeLoc[face] != NULL)
-                       (void) free((void *) rp->cubeLoc[face]);
-               if ((rp->cubeLoc[face] =
-                 (RubikLoc *) malloc(AVSIZESQ * sizeof (RubikLoc))) == NULL)
-                       (void) fprintf(stderr,
-                                      "Could not allocate memory for rubik cube position info\n");
-               for (position = 0; position < AVSIZESQ; position++) {
-                       rp->cubeLoc[face][position].face = face;
-                       rp->cubeLoc[face][position].rotation = TOP;
-               }
-       }
-       for (i = 0; i < MAXORIENT; i++) {
-               if (rp->rowLoc[i] != NULL)
-                       (void) free((void *) rp->rowLoc[i]);
-               if ((rp->rowLoc[i] =
-                    (RubikLoc *) malloc(AVSIZE * sizeof (RubikLoc))) == NULL)
-                       (void) fprintf(stderr,
-                                      "Could not allocate memory for rubik row position info\n");
-       }
-       rp->storedmoves = MI_COUNT(mi);
-       if (rp->storedmoves < 0) {
-               if (rp->moves != NULL)
-                       (void) free((void *) rp->moves);
-               rp->moves = NULL;
-               rp->storedmoves = NRAND(-rp->storedmoves) + 1;
-       }
-       if ((rp->storedmoves) && (rp->moves == NULL))
-               if ((rp->moves =
-                    (RubikMove *) calloc(rp->storedmoves + 1, sizeof (RubikMove))) == NULL)
-                       (void) fprintf(stderr,
-                       "Could not allocate memory for rubik move buffer\n");
-
-       if (MI_CYCLES(mi) <= 1) {
-               rp->anglestep = 90.0;
-       } else {
-               rp->anglestep = 90.0 / (GLfloat) (MI_CYCLES(mi));
-       }
-
-       for (i = 0; i < rp->storedmoves; i++) {
-               int         condition;
-
-               do {
-                       move.face = NRAND(6);
-                       move.direction = NRAND(4);      /* Exclude CW and CCW, its ok */
-                       /*
-                        * Randomize position along diagonal, each plane gets an equal chance.
-                        * This trick will only work for NxNxN cubes
-                        * draw_cube DEPENDS on that they are chosen this way.
-                        */
-                       move.position = NRAND(AVSIZE) * (AVSIZE + 1);
-
-
-                       condition = 1;
-
-                       if (i > 0)      /* avoid immediate undoing moves */
-                               if (compare_moves(rp, move, rp->moves[i - 1], True))
-                                       condition = 0;
-                       if (i > 1)      /* avoid 3 consecutive identical moves */
-                               if (compare_moves(rp, move, rp->moves[i - 1], False) &&
-                                   compare_moves(rp, move, rp->moves[i - 2], False))
-                                       condition = 0;
-                       /*
-                          * Still some silly moves being made....
-                        */
-               } while (!condition);
-               if (hideshuffling)
-                       evalmovement(mi, move);
-               rp->moves[i] = move;
-       }
-       rp->VX = 0.05;
-       if (NRAND(100) < 50)
-               rp->VX *= -1;
-       rp->VY = 0.05;
-       if (NRAND(100) < 50)
-               rp->VY *= -1;
-       rp->movement.face = NO_FACE;
-       rp->rotatestep = 0;
-       rp->action = hideshuffling ? ACTION_SOLVE : ACTION_SHUFFLE;
-       rp->shufflingmoves = 0;
-       rp->done = 0;
-}
-
-static void
-reshape(ModeInfo * mi, int width, int height)
-{
-       rubikstruct *rp = &rubik[MI_SCREEN(mi)];
-
-       glViewport(0, 0, rp->WindW = (GLint) width, rp->WindH = (GLint) height);
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0);
-       glMatrixMode(GL_MODELVIEW);
-
-       rp->AreObjectsDefined[ObjCubit] = 0;
-}
-
-static void
-pinit(ModeInfo * mi)
-{
-       glClearDepth(1.0);
-       glClearColor(0.0, 0.0, 0.0, 1.0);
-       glColor3f(1.0, 1.0, 1.0);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT0, GL_POSITION, position0);
-       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT1, GL_POSITION, position1);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_DEPTH_TEST);
-       glEnable(GL_NORMALIZE);
-       glEnable(GL_CULL_FACE);
-
-       glShadeModel(GL_FLAT);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-
-       shuffle(mi);
-}
-
-void
-init_rubik(ModeInfo * mi)
-{
-       int         screen = MI_SCREEN(mi);
-       rubikstruct *rp;
-
-       if (rubik == NULL) {
-               if ((rubik = (rubikstruct *) calloc(MI_NUM_SCREENS(mi),
-                                             sizeof (rubikstruct))) == NULL)
-                       return;
-       }
-       rp = &rubik[screen];
-       rp->step = NRAND(90);
-
-       rp->PX = ((float) LRAND() / (float) RAND_MAX) * 2 - 1;
-       rp->PY = ((float) LRAND() / (float) RAND_MAX) * 2 - 1;
-
-       if ((rp->glx_context = init_GL(mi)) != NULL) {
-
-               reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
-               objects = glGenLists(1);
-               pinit(mi);
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-void
-draw_rubik(ModeInfo * mi)
-{
-       int         bounced = 0;
-
-       rubikstruct *rp = &rubik[MI_SCREEN(mi)];
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       MI_IS_DRAWN(mi) = True;
-
-       if (!rp->glx_context)
-               return;
-
-       glDrawBuffer(GL_BACK);
-       glXMakeCurrent(display, window, *(rp->glx_context));
-
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       glPushMatrix();
-
-       glTranslatef(0.0, 0.0, -10.0);
-
-       rp->PX += rp->VX;
-       rp->PY += rp->VY;
-
-       if (rp->PY < -1) {
-               rp->PY += (-1) - (rp->PY);
-               rp->VY = -rp->VY;
-               bounced = 1;
-       }
-       if (rp->PY > 1) {
-               rp->PY -= (rp->PY) - 1;
-               rp->VY = -rp->VY;
-               bounced = 1;
-       }
-       if (rp->PX < -1) {
-               rp->PX += (-1) - (rp->PX);
-               rp->VX = -rp->VX;
-               bounced = 1;
-       }
-       if (rp->PX > 1) {
-               rp->PX -= (rp->PX) - 1;
-               rp->VX = -rp->VX;
-               bounced = 1;
-       }
-       if (bounced) {
-               rp->VX += ((float) LRAND() / (float) RAND_MAX) * 0.02 - 0.01;
-               rp->VX += ((float) LRAND() / (float) RAND_MAX) * 0.02 - 0.01;
-               if (rp->VX > 0.06)
-                       rp->VX = 0.06;
-               if (rp->VY > 0.06)
-                       rp->VY = 0.06;
-               if (rp->VX < -0.06)
-                       rp->VX = -0.06;
-               if (rp->VY < -0.06)
-                       rp->VY = -0.06;
-       }
-       if (!MI_IS_ICONIC(mi)) {
-               glTranslatef(rp->PX, rp->PY, 0);
-               glScalef(Scale4Window * rp->WindH / rp->WindW, Scale4Window, Scale4Window);
-       } else {
-               glScalef(Scale4Iconic * rp->WindH / rp->WindW, Scale4Iconic, Scale4Iconic);
-       }
-
-       glRotatef(rp->step * 100, 1, 0, 0);
-       glRotatef(rp->step * 95, 0, 1, 0);
-       glRotatef(rp->step * 90, 0, 0, 1);
-
-       draw_cube(mi);
-       glXSwapBuffers(display, window);
-
-       if (rp->action == ACTION_SHUFFLE) {
-               if (rp->done) {
-                       if (++rp->rotatestep > DELAY_AFTER_SHUFFLING) {
-                               rp->movement.face = NO_FACE;
-                               rp->rotatestep = 0;
-                               rp->action = ACTION_SOLVE;
-                               rp->done = 0;
-                       }
-               } else {
-                       if (rp->movement.face == NO_FACE) {
-                               if (rp->shufflingmoves < rp->storedmoves) {
-                                       rp->rotatestep = 0;
-                                       rp->movement = rp->moves[rp->shufflingmoves];
-                               } else {
-                                       rp->rotatestep = 0;
-                                       rp->done = 1;
-                               }
-                       } else {
-                               rp->rotatestep += rp->anglestep;
-                               if (rp->rotatestep > 90) {
-                                       evalmovement(mi, rp->movement);
-                                       rp->shufflingmoves++;
-                                       rp->movement.face = NO_FACE;
-                               }
-                       }
-               }
-       } else {
-               if (rp->done) {
-                       if (++rp->rotatestep > DELAY_AFTER_SOLVING)
-                               shuffle(mi);
-               } else {
-                       if (rp->movement.face == NO_FACE) {
-                               if (rp->storedmoves > 0) {
-                                       rp->rotatestep = 0;
-                                       rp->movement = rp->moves[rp->storedmoves - 1];
-                                       rp->movement.direction = (rp->movement.direction + (MAXORIENT / 2)) %
-                                               MAXORIENT;
-                               } else {
-                                       rp->rotatestep = 0;
-                                       rp->done = 1;
-                               }
-                       } else {
-                               rp->rotatestep += rp->anglestep;
-                               if (rp->rotatestep > 90) {
-                                       evalmovement(mi, rp->movement);
-                                       rp->storedmoves--;
-                                       rp->movement.face = NO_FACE;
-                               }
-                       }
-               }
-       }
-
-       glPopMatrix();
-
-       glFlush();
-
-       rp->step += 0.05;
-}
-
-void
-change_rubik(ModeInfo * mi)
-{
-       rubikstruct *rp = &rubik[MI_SCREEN(mi)];
-
-       if (!rp->glx_context)
-               return;
-       pinit(mi);
-}
-
-void
-release_rubik(ModeInfo * mi)
-{
-       if (rubik != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       rubikstruct *rp = &rubik[screen];
-                       int         i;
-
-                       for (i = 0; i < MAXFACES; i++)
-                               if (rp->cubeLoc[i] != NULL)
-                                       (void) free((void *) rp->cubeLoc[i]);
-                       for (i = 0; i < MAXORIENT; i++)
-                               if (rp->rowLoc[i] != NULL)
-                                       (void) free((void *) rp->rowLoc[i]);
-                       if (rp->moves != NULL)
-                               (void) free((void *) rp->moves);
-               }
-               (void) free((void *) rubik);
-               rubik = NULL;
-       }
-       FreeAllGL(mi);
-}
-
-#endif
diff --git a/hacks/glx/s1_1.c b/hacks/glx/s1_1.c
deleted file mode 100644 (file)
index 61dd91f..0000000
+++ /dev/null
@@ -1,1057 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)s1_1.c       4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Points, polygons, and normal vectors to render "s1_1" in 3D.
- *
- * Generated by lw2ogl.  Link this with your program but do
- * not edit by hand.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include "buildlwo.h"
-
-static GLfloat s1_1_PNTS[] =
-{
-       (GLfloat) 0.332422, (GLfloat) 0.132531, (GLfloat) - 0.332422,
-       (GLfloat) 0.332422, (GLfloat) 0.132531, (GLfloat) - 0.667578,
-       (GLfloat) 0.667578, (GLfloat) 0.132531, (GLfloat) - 0.332422,
-       (GLfloat) 0.667578, (GLfloat) 0.132531, (GLfloat) - 0.667578,
-       (GLfloat) 0.638667, (GLfloat) 0.007537, (GLfloat) - 0.638667,
-       (GLfloat) 0.361333, (GLfloat) 0.007537, (GLfloat) - 0.638667,
-       (GLfloat) 0.361333, (GLfloat) 0.007537, (GLfloat) - 0.361333,
-       (GLfloat) 0.638667, (GLfloat) 0.007537, (GLfloat) - 0.361333,
-       (GLfloat) 0.653656, (GLfloat) 0.494688, (GLfloat) - 0.653656,
-       (GLfloat) 0.346344, (GLfloat) 0.494688, (GLfloat) - 0.653656,
-       (GLfloat) 0.346344, (GLfloat) 0.494688, (GLfloat) - 0.346344,
-       (GLfloat) 0.653656, (GLfloat) 0.494688, (GLfloat) - 0.346344,
-       (GLfloat) 0.667578, (GLfloat) 0.838781, (GLfloat) - 0.667578,
-       (GLfloat) 0.667578, (GLfloat) 0.838781, (GLfloat) - 0.332422,
-       (GLfloat) 0.638667, (GLfloat) 0.958463, (GLfloat) - 0.361333,
-       (GLfloat) 0.638667, (GLfloat) 0.958463, (GLfloat) - 0.638667,
-       (GLfloat) 0.332422, (GLfloat) 0.838781, (GLfloat) - 0.332422,
-       (GLfloat) 0.361333, (GLfloat) 0.958463, (GLfloat) - 0.361333,
-       (GLfloat) 0.332422, (GLfloat) 0.838781, (GLfloat) - 0.667578,
-       (GLfloat) 0.361333, (GLfloat) 0.958463, (GLfloat) - 0.638667,
-       (GLfloat) 0.738539, (GLfloat) 0.926712, (GLfloat) - 0.500000,
-       (GLfloat) 0.714805, (GLfloat) 0.686547, (GLfloat) - 0.500000,
-       (GLfloat) 0.728516, (GLfloat) 0.838781, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.926712, (GLfloat) - 0.261461,
-       (GLfloat) 0.674539, (GLfloat) 0.926104, (GLfloat) - 0.325461,
-       (GLfloat) 0.500000, (GLfloat) 0.976924, (GLfloat) - 0.500000,
-       (GLfloat) 0.677562, (GLfloat) 0.965162, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.926712, (GLfloat) - 0.738539,
-       (GLfloat) 0.674539, (GLfloat) 0.926104, (GLfloat) - 0.674539,
-       (GLfloat) 0.500000, (GLfloat) 0.686547, (GLfloat) - 0.285195,
-       (GLfloat) 0.500000, (GLfloat) 0.838781, (GLfloat) - 0.271484,
-       (GLfloat) 0.261461, (GLfloat) 0.926712, (GLfloat) - 0.500000,
-       (GLfloat) 0.325461, (GLfloat) 0.926104, (GLfloat) - 0.325461,
-       (GLfloat) 0.500000, (GLfloat) 0.965162, (GLfloat) - 0.322437,
-       (GLfloat) 0.285195, (GLfloat) 0.686547, (GLfloat) - 0.500000,
-       (GLfloat) 0.271484, (GLfloat) 0.838781, (GLfloat) - 0.500000,
-       (GLfloat) 0.325461, (GLfloat) 0.926104, (GLfloat) - 0.674539,
-       (GLfloat) 0.322437, (GLfloat) 0.965162, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.686547, (GLfloat) - 0.714805,
-       (GLfloat) 0.500000, (GLfloat) 0.838781, (GLfloat) - 0.728516,
-       (GLfloat) 0.500000, (GLfloat) 0.965162, (GLfloat) - 0.677562,
-       (GLfloat) 0.657523, (GLfloat) 0.686547, (GLfloat) - 0.657523,
-       (GLfloat) 0.714805, (GLfloat) 0.295922, (GLfloat) - 0.500000,
-       (GLfloat) 0.709531, (GLfloat) 0.494688, (GLfloat) - 0.500000,
-       (GLfloat) 0.657523, (GLfloat) 0.686547, (GLfloat) - 0.342477,
-       (GLfloat) 0.342477, (GLfloat) 0.686547, (GLfloat) - 0.657523,
-       (GLfloat) 0.500000, (GLfloat) 0.295922, (GLfloat) - 0.714805,
-       (GLfloat) 0.500000, (GLfloat) 0.494688, (GLfloat) - 0.709531,
-       (GLfloat) 0.500000, (GLfloat) 0.295922, (GLfloat) - 0.285195,
-       (GLfloat) 0.500000, (GLfloat) 0.494688, (GLfloat) - 0.290469,
-       (GLfloat) 0.342477, (GLfloat) 0.686547, (GLfloat) - 0.342477,
-       (GLfloat) 0.285195, (GLfloat) 0.295922, (GLfloat) - 0.500000,
-       (GLfloat) 0.290469, (GLfloat) 0.494688, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.039819, (GLfloat) - 0.738539,
-       (GLfloat) 0.500000, (GLfloat) 0.132531, (GLfloat) - 0.728516,
-       (GLfloat) 0.657523, (GLfloat) 0.295922, (GLfloat) - 0.657523,
-       (GLfloat) 0.342477, (GLfloat) 0.295922, (GLfloat) - 0.657523,
-       (GLfloat) 0.342477, (GLfloat) 0.295922, (GLfloat) - 0.342477,
-       (GLfloat) 0.261461, (GLfloat) 0.039819, (GLfloat) - 0.500000,
-       (GLfloat) 0.271484, (GLfloat) 0.132531, (GLfloat) - 0.500000,
-       (GLfloat) 0.657523, (GLfloat) 0.295922, (GLfloat) - 0.342477,
-       (GLfloat) 0.500000, (GLfloat) 0.039819, (GLfloat) - 0.261461,
-       (GLfloat) 0.500000, (GLfloat) 0.132531, (GLfloat) - 0.271484,
-       (GLfloat) 0.738539, (GLfloat) 0.039819, (GLfloat) - 0.500000,
-       (GLfloat) 0.728516, (GLfloat) 0.132531, (GLfloat) - 0.500000,
-       (GLfloat) 0.674539, (GLfloat) 0.040427, (GLfloat) - 0.674539,
-       (GLfloat) 0.500000, (GLfloat) - 0.010924, (GLfloat) - 0.500000,
-       (GLfloat) 0.677562, (GLfloat) 0.000839, (GLfloat) - 0.500000,
-       (GLfloat) 0.674539, (GLfloat) 0.040427, (GLfloat) - 0.325461,
-       (GLfloat) 0.325461, (GLfloat) 0.040427, (GLfloat) - 0.674539,
-       (GLfloat) 0.500000, (GLfloat) 0.000839, (GLfloat) - 0.677562,
-       (GLfloat) 0.325461, (GLfloat) 0.040427, (GLfloat) - 0.325461,
-       (GLfloat) 0.322437, (GLfloat) 0.000839, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.000839, (GLfloat) - 0.322437,
-       (GLfloat) 0.721812, (GLfloat) 0.890313, (GLfloat) - 0.595062,
-       (GLfloat) 0.706063, (GLfloat) 0.769563, (GLfloat) - 0.588313,
-       (GLfloat) 0.713281, (GLfloat) 0.838781, (GLfloat) - 0.591406,
-       (GLfloat) 0.721812, (GLfloat) 0.890313, (GLfloat) - 0.404938,
-       (GLfloat) 0.737656, (GLfloat) 0.890313, (GLfloat) - 0.500000,
-       (GLfloat) 0.706000, (GLfloat) 0.949319, (GLfloat) - 0.587500,
-       (GLfloat) 0.722453, (GLfloat) 0.926408, (GLfloat) - 0.595141,
-       (GLfloat) 0.595062, (GLfloat) 0.890313, (GLfloat) - 0.721812,
-       (GLfloat) 0.674281, (GLfloat) 0.890313, (GLfloat) - 0.674281,
-       (GLfloat) 0.595062, (GLfloat) 0.890313, (GLfloat) - 0.278187,
-       (GLfloat) 0.674281, (GLfloat) 0.890313, (GLfloat) - 0.325719,
-       (GLfloat) 0.706000, (GLfloat) 0.949319, (GLfloat) - 0.412500,
-       (GLfloat) 0.722453, (GLfloat) 0.926408, (GLfloat) - 0.404859,
-       (GLfloat) 0.706063, (GLfloat) 0.769563, (GLfloat) - 0.411687,
-       (GLfloat) 0.713281, (GLfloat) 0.838781, (GLfloat) - 0.408594,
-       (GLfloat) 0.590500, (GLfloat) 0.971195, (GLfloat) - 0.409500,
-       (GLfloat) 0.664625, (GLfloat) 0.962948, (GLfloat) - 0.417500,
-       (GLfloat) 0.721500, (GLfloat) 0.950535, (GLfloat) - 0.500000,
-       (GLfloat) 0.587500, (GLfloat) 0.949319, (GLfloat) - 0.294000,
-       (GLfloat) 0.660875, (GLfloat) 0.948104, (GLfloat) - 0.339125,
-       (GLfloat) 0.587500, (GLfloat) 0.949319, (GLfloat) - 0.706000,
-       (GLfloat) 0.660875, (GLfloat) 0.948104, (GLfloat) - 0.660875,
-       (GLfloat) 0.590500, (GLfloat) 0.971195, (GLfloat) - 0.590500,
-       (GLfloat) 0.664625, (GLfloat) 0.962948, (GLfloat) - 0.582500,
-       (GLfloat) 0.588313, (GLfloat) 0.769563, (GLfloat) - 0.293938,
-       (GLfloat) 0.591406, (GLfloat) 0.838781, (GLfloat) - 0.286719,
-       (GLfloat) 0.404938, (GLfloat) 0.890313, (GLfloat) - 0.278187,
-       (GLfloat) 0.500000, (GLfloat) 0.890313, (GLfloat) - 0.262344,
-       (GLfloat) 0.595141, (GLfloat) 0.926408, (GLfloat) - 0.277547,
-       (GLfloat) 0.278187, (GLfloat) 0.890313, (GLfloat) - 0.404938,
-       (GLfloat) 0.325719, (GLfloat) 0.890313, (GLfloat) - 0.325719,
-       (GLfloat) 0.412500, (GLfloat) 0.949319, (GLfloat) - 0.294000,
-       (GLfloat) 0.404859, (GLfloat) 0.926408, (GLfloat) - 0.277547,
-       (GLfloat) 0.411687, (GLfloat) 0.769563, (GLfloat) - 0.293938,
-       (GLfloat) 0.408594, (GLfloat) 0.838781, (GLfloat) - 0.286719,
-       (GLfloat) 0.409500, (GLfloat) 0.971195, (GLfloat) - 0.409500,
-       (GLfloat) 0.417500, (GLfloat) 0.962948, (GLfloat) - 0.335375,
-       (GLfloat) 0.500000, (GLfloat) 0.950535, (GLfloat) - 0.278500,
-       (GLfloat) 0.294000, (GLfloat) 0.949319, (GLfloat) - 0.412500,
-       (GLfloat) 0.339125, (GLfloat) 0.948104, (GLfloat) - 0.339125,
-       (GLfloat) 0.582500, (GLfloat) 0.962948, (GLfloat) - 0.335375,
-       (GLfloat) 0.293938, (GLfloat) 0.769563, (GLfloat) - 0.411687,
-       (GLfloat) 0.286719, (GLfloat) 0.838781, (GLfloat) - 0.408594,
-       (GLfloat) 0.278187, (GLfloat) 0.890313, (GLfloat) - 0.595062,
-       (GLfloat) 0.262344, (GLfloat) 0.890313, (GLfloat) - 0.500000,
-       (GLfloat) 0.277547, (GLfloat) 0.926408, (GLfloat) - 0.404859,
-       (GLfloat) 0.404938, (GLfloat) 0.890313, (GLfloat) - 0.721812,
-       (GLfloat) 0.325719, (GLfloat) 0.890313, (GLfloat) - 0.674281,
-       (GLfloat) 0.294000, (GLfloat) 0.949319, (GLfloat) - 0.587500,
-       (GLfloat) 0.277547, (GLfloat) 0.926408, (GLfloat) - 0.595141,
-       (GLfloat) 0.293938, (GLfloat) 0.769563, (GLfloat) - 0.588313,
-       (GLfloat) 0.286719, (GLfloat) 0.838781, (GLfloat) - 0.591406,
-       (GLfloat) 0.409500, (GLfloat) 0.971195, (GLfloat) - 0.590500,
-       (GLfloat) 0.335375, (GLfloat) 0.962948, (GLfloat) - 0.582500,
-       (GLfloat) 0.278500, (GLfloat) 0.950535, (GLfloat) - 0.500000,
-       (GLfloat) 0.412500, (GLfloat) 0.949319, (GLfloat) - 0.706000,
-       (GLfloat) 0.339125, (GLfloat) 0.948104, (GLfloat) - 0.660875,
-       (GLfloat) 0.335375, (GLfloat) 0.962948, (GLfloat) - 0.417500,
-       (GLfloat) 0.411687, (GLfloat) 0.769563, (GLfloat) - 0.706063,
-       (GLfloat) 0.408594, (GLfloat) 0.838781, (GLfloat) - 0.713281,
-       (GLfloat) 0.500000, (GLfloat) 0.890313, (GLfloat) - 0.737656,
-       (GLfloat) 0.404859, (GLfloat) 0.926408, (GLfloat) - 0.722453,
-       (GLfloat) 0.595141, (GLfloat) 0.926408, (GLfloat) - 0.722453,
-       (GLfloat) 0.588313, (GLfloat) 0.769563, (GLfloat) - 0.706063,
-       (GLfloat) 0.591406, (GLfloat) 0.838781, (GLfloat) - 0.713281,
-       (GLfloat) 0.582500, (GLfloat) 0.962948, (GLfloat) - 0.664625,
-       (GLfloat) 0.500000, (GLfloat) 0.950535, (GLfloat) - 0.721500,
-       (GLfloat) 0.417500, (GLfloat) 0.962948, (GLfloat) - 0.664625,
-       (GLfloat) 0.500000, (GLfloat) 0.973972, (GLfloat) - 0.402250,
-       (GLfloat) 0.597750, (GLfloat) 0.973972, (GLfloat) - 0.500000,
-       (GLfloat) 0.402250, (GLfloat) 0.973972, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.973972, (GLfloat) - 0.597750,
-       (GLfloat) 0.661906, (GLfloat) 0.769563, (GLfloat) - 0.661906,
-       (GLfloat) 0.696875, (GLfloat) 0.593625, (GLfloat) - 0.584375,
-       (GLfloat) 0.700484, (GLfloat) 0.686547, (GLfloat) - 0.585922,
-       (GLfloat) 0.720781, (GLfloat) 0.769563, (GLfloat) - 0.500000,
-       (GLfloat) 0.696875, (GLfloat) 0.393625, (GLfloat) - 0.584375,
-       (GLfloat) 0.695563, (GLfloat) 0.494688, (GLfloat) - 0.583813,
-       (GLfloat) 0.696875, (GLfloat) 0.593625, (GLfloat) - 0.415625,
-       (GLfloat) 0.710938, (GLfloat) 0.593625, (GLfloat) - 0.500000,
-       (GLfloat) 0.584375, (GLfloat) 0.593625, (GLfloat) - 0.696875,
-       (GLfloat) 0.654688, (GLfloat) 0.593625, (GLfloat) - 0.654688,
-       (GLfloat) 0.584375, (GLfloat) 0.593625, (GLfloat) - 0.303125,
-       (GLfloat) 0.654688, (GLfloat) 0.593625, (GLfloat) - 0.345313,
-       (GLfloat) 0.700484, (GLfloat) 0.686547, (GLfloat) - 0.414078,
-       (GLfloat) 0.696875, (GLfloat) 0.393625, (GLfloat) - 0.415625,
-       (GLfloat) 0.695563, (GLfloat) 0.494688, (GLfloat) - 0.416187,
-       (GLfloat) 0.661906, (GLfloat) 0.769563, (GLfloat) - 0.338094,
-       (GLfloat) 0.338094, (GLfloat) 0.769563, (GLfloat) - 0.661906,
-       (GLfloat) 0.415625, (GLfloat) 0.593625, (GLfloat) - 0.696875,
-       (GLfloat) 0.414078, (GLfloat) 0.686547, (GLfloat) - 0.700484,
-       (GLfloat) 0.500000, (GLfloat) 0.769563, (GLfloat) - 0.720781,
-       (GLfloat) 0.415625, (GLfloat) 0.393625, (GLfloat) - 0.696875,
-       (GLfloat) 0.416187, (GLfloat) 0.494688, (GLfloat) - 0.695563,
-       (GLfloat) 0.500000, (GLfloat) 0.593625, (GLfloat) - 0.710938,
-       (GLfloat) 0.303125, (GLfloat) 0.593625, (GLfloat) - 0.584375,
-       (GLfloat) 0.345313, (GLfloat) 0.593625, (GLfloat) - 0.654688,
-       (GLfloat) 0.585922, (GLfloat) 0.686547, (GLfloat) - 0.700484,
-       (GLfloat) 0.584375, (GLfloat) 0.393625, (GLfloat) - 0.696875,
-       (GLfloat) 0.583813, (GLfloat) 0.494688, (GLfloat) - 0.695563,
-       (GLfloat) 0.500000, (GLfloat) 0.769563, (GLfloat) - 0.279219,
-       (GLfloat) 0.415625, (GLfloat) 0.593625, (GLfloat) - 0.303125,
-       (GLfloat) 0.414078, (GLfloat) 0.686547, (GLfloat) - 0.299516,
-       (GLfloat) 0.338094, (GLfloat) 0.769563, (GLfloat) - 0.338094,
-       (GLfloat) 0.585922, (GLfloat) 0.686547, (GLfloat) - 0.299516,
-       (GLfloat) 0.584375, (GLfloat) 0.393625, (GLfloat) - 0.303125,
-       (GLfloat) 0.583813, (GLfloat) 0.494688, (GLfloat) - 0.304437,
-       (GLfloat) 0.500000, (GLfloat) 0.593625, (GLfloat) - 0.289063,
-       (GLfloat) 0.303125, (GLfloat) 0.593625, (GLfloat) - 0.415625,
-       (GLfloat) 0.345313, (GLfloat) 0.593625, (GLfloat) - 0.345313,
-       (GLfloat) 0.415625, (GLfloat) 0.393625, (GLfloat) - 0.303125,
-       (GLfloat) 0.416187, (GLfloat) 0.494688, (GLfloat) - 0.304437,
-       (GLfloat) 0.279219, (GLfloat) 0.769563, (GLfloat) - 0.500000,
-       (GLfloat) 0.299516, (GLfloat) 0.686547, (GLfloat) - 0.585922,
-       (GLfloat) 0.299516, (GLfloat) 0.686547, (GLfloat) - 0.414078,
-       (GLfloat) 0.303125, (GLfloat) 0.393625, (GLfloat) - 0.415625,
-       (GLfloat) 0.304437, (GLfloat) 0.494688, (GLfloat) - 0.416187,
-       (GLfloat) 0.289063, (GLfloat) 0.593625, (GLfloat) - 0.500000,
-       (GLfloat) 0.303125, (GLfloat) 0.393625, (GLfloat) - 0.584375,
-       (GLfloat) 0.304437, (GLfloat) 0.494688, (GLfloat) - 0.583813,
-       (GLfloat) 0.411687, (GLfloat) 0.207062, (GLfloat) - 0.706063,
-       (GLfloat) 0.404938, (GLfloat) 0.077813, (GLfloat) - 0.721812,
-       (GLfloat) 0.408594, (GLfloat) 0.132531, (GLfloat) - 0.713281,
-       (GLfloat) 0.588313, (GLfloat) 0.207062, (GLfloat) - 0.706063,
-       (GLfloat) 0.500000, (GLfloat) 0.207062, (GLfloat) - 0.720781,
-       (GLfloat) 0.414078, (GLfloat) 0.295922, (GLfloat) - 0.700484,
-       (GLfloat) 0.293938, (GLfloat) 0.207062, (GLfloat) - 0.588313,
-       (GLfloat) 0.338094, (GLfloat) 0.207062, (GLfloat) - 0.661906,
-       (GLfloat) 0.706063, (GLfloat) 0.207062, (GLfloat) - 0.588313,
-       (GLfloat) 0.661906, (GLfloat) 0.207062, (GLfloat) - 0.661906,
-       (GLfloat) 0.585922, (GLfloat) 0.295922, (GLfloat) - 0.700484,
-       (GLfloat) 0.595062, (GLfloat) 0.077813, (GLfloat) - 0.721812,
-       (GLfloat) 0.591406, (GLfloat) 0.132531, (GLfloat) - 0.713281,
-       (GLfloat) 0.500000, (GLfloat) 0.393625, (GLfloat) - 0.710938,
-       (GLfloat) 0.654688, (GLfloat) 0.393625, (GLfloat) - 0.654688,
-       (GLfloat) 0.345313, (GLfloat) 0.393625, (GLfloat) - 0.654688,
-       (GLfloat) 0.299516, (GLfloat) 0.295922, (GLfloat) - 0.585922,
-       (GLfloat) 0.293938, (GLfloat) 0.207062, (GLfloat) - 0.411687,
-       (GLfloat) 0.279219, (GLfloat) 0.207062, (GLfloat) - 0.500000,
-       (GLfloat) 0.278187, (GLfloat) 0.077813, (GLfloat) - 0.595062,
-       (GLfloat) 0.286719, (GLfloat) 0.132531, (GLfloat) - 0.591406,
-       (GLfloat) 0.289063, (GLfloat) 0.393625, (GLfloat) - 0.500000,
-       (GLfloat) 0.345313, (GLfloat) 0.393625, (GLfloat) - 0.345313,
-       (GLfloat) 0.299516, (GLfloat) 0.295922, (GLfloat) - 0.414078,
-       (GLfloat) 0.278187, (GLfloat) 0.077813, (GLfloat) - 0.404938,
-       (GLfloat) 0.286719, (GLfloat) 0.132531, (GLfloat) - 0.408594,
-       (GLfloat) 0.411687, (GLfloat) 0.207062, (GLfloat) - 0.293938,
-       (GLfloat) 0.338094, (GLfloat) 0.207062, (GLfloat) - 0.338094,
-       (GLfloat) 0.414078, (GLfloat) 0.295922, (GLfloat) - 0.299516,
-       (GLfloat) 0.588313, (GLfloat) 0.207062, (GLfloat) - 0.293938,
-       (GLfloat) 0.500000, (GLfloat) 0.207062, (GLfloat) - 0.279219,
-       (GLfloat) 0.404938, (GLfloat) 0.077813, (GLfloat) - 0.278187,
-       (GLfloat) 0.408594, (GLfloat) 0.132531, (GLfloat) - 0.286719,
-       (GLfloat) 0.500000, (GLfloat) 0.393625, (GLfloat) - 0.289063,
-       (GLfloat) 0.654688, (GLfloat) 0.393625, (GLfloat) - 0.345313,
-       (GLfloat) 0.585922, (GLfloat) 0.295922, (GLfloat) - 0.299516,
-       (GLfloat) 0.595062, (GLfloat) 0.077813, (GLfloat) - 0.278187,
-       (GLfloat) 0.591406, (GLfloat) 0.132531, (GLfloat) - 0.286719,
-       (GLfloat) 0.706063, (GLfloat) 0.207062, (GLfloat) - 0.411687,
-       (GLfloat) 0.661906, (GLfloat) 0.207062, (GLfloat) - 0.338094,
-       (GLfloat) 0.700484, (GLfloat) 0.295922, (GLfloat) - 0.414078,
-       (GLfloat) 0.720781, (GLfloat) 0.207062, (GLfloat) - 0.500000,
-       (GLfloat) 0.721812, (GLfloat) 0.077813, (GLfloat) - 0.404938,
-       (GLfloat) 0.713281, (GLfloat) 0.132531, (GLfloat) - 0.408594,
-       (GLfloat) 0.710938, (GLfloat) 0.393625, (GLfloat) - 0.500000,
-       (GLfloat) 0.700484, (GLfloat) 0.295922, (GLfloat) - 0.585922,
-       (GLfloat) 0.721812, (GLfloat) 0.077813, (GLfloat) - 0.595062,
-       (GLfloat) 0.713281, (GLfloat) 0.132531, (GLfloat) - 0.591406,
-       (GLfloat) 0.737656, (GLfloat) 0.077813, (GLfloat) - 0.500000,
-       (GLfloat) 0.706000, (GLfloat) 0.016681, (GLfloat) - 0.412500,
-       (GLfloat) 0.722453, (GLfloat) 0.040123, (GLfloat) - 0.404859,
-       (GLfloat) 0.674281, (GLfloat) 0.077813, (GLfloat) - 0.325719,
-       (GLfloat) 0.674281, (GLfloat) 0.077813, (GLfloat) - 0.674281,
-       (GLfloat) 0.706000, (GLfloat) 0.016681, (GLfloat) - 0.587500,
-       (GLfloat) 0.722453, (GLfloat) 0.040123, (GLfloat) - 0.595141,
-       (GLfloat) 0.590500, (GLfloat) - 0.005194, (GLfloat) - 0.590500,
-       (GLfloat) 0.664625, (GLfloat) 0.003052, (GLfloat) - 0.582500,
-       (GLfloat) 0.721500, (GLfloat) 0.015465, (GLfloat) - 0.500000,
-       (GLfloat) 0.587500, (GLfloat) 0.016681, (GLfloat) - 0.706000,
-       (GLfloat) 0.660875, (GLfloat) 0.017896, (GLfloat) - 0.660875,
-       (GLfloat) 0.587500, (GLfloat) 0.016681, (GLfloat) - 0.294000,
-       (GLfloat) 0.660875, (GLfloat) 0.017896, (GLfloat) - 0.339125,
-       (GLfloat) 0.590500, (GLfloat) - 0.005194, (GLfloat) - 0.409500,
-       (GLfloat) 0.664625, (GLfloat) 0.003052, (GLfloat) - 0.417500,
-       (GLfloat) 0.500000, (GLfloat) 0.077813, (GLfloat) - 0.737656,
-       (GLfloat) 0.595141, (GLfloat) 0.040123, (GLfloat) - 0.722453,
-       (GLfloat) 0.325719, (GLfloat) 0.077813, (GLfloat) - 0.674281,
-       (GLfloat) 0.412500, (GLfloat) 0.016681, (GLfloat) - 0.706000,
-       (GLfloat) 0.404859, (GLfloat) 0.040123, (GLfloat) - 0.722453,
-       (GLfloat) 0.409500, (GLfloat) - 0.005194, (GLfloat) - 0.590500,
-       (GLfloat) 0.417500, (GLfloat) 0.003052, (GLfloat) - 0.664625,
-       (GLfloat) 0.500000, (GLfloat) 0.015465, (GLfloat) - 0.721500,
-       (GLfloat) 0.294000, (GLfloat) 0.016681, (GLfloat) - 0.587500,
-       (GLfloat) 0.339125, (GLfloat) 0.017896, (GLfloat) - 0.660875,
-       (GLfloat) 0.582500, (GLfloat) 0.003052, (GLfloat) - 0.664625,
-       (GLfloat) 0.262344, (GLfloat) 0.077813, (GLfloat) - 0.500000,
-       (GLfloat) 0.277547, (GLfloat) 0.040123, (GLfloat) - 0.595141,
-       (GLfloat) 0.325719, (GLfloat) 0.077813, (GLfloat) - 0.325719,
-       (GLfloat) 0.294000, (GLfloat) 0.016681, (GLfloat) - 0.412500,
-       (GLfloat) 0.277547, (GLfloat) 0.040123, (GLfloat) - 0.404859,
-       (GLfloat) 0.409500, (GLfloat) - 0.005194, (GLfloat) - 0.409500,
-       (GLfloat) 0.335375, (GLfloat) 0.003052, (GLfloat) - 0.417500,
-       (GLfloat) 0.278500, (GLfloat) 0.015465, (GLfloat) - 0.500000,
-       (GLfloat) 0.412500, (GLfloat) 0.016681, (GLfloat) - 0.294000,
-       (GLfloat) 0.339125, (GLfloat) 0.017896, (GLfloat) - 0.339125,
-       (GLfloat) 0.335375, (GLfloat) 0.003052, (GLfloat) - 0.582500,
-       (GLfloat) 0.500000, (GLfloat) 0.077813, (GLfloat) - 0.262344,
-       (GLfloat) 0.404859, (GLfloat) 0.040123, (GLfloat) - 0.277547,
-       (GLfloat) 0.595141, (GLfloat) 0.040123, (GLfloat) - 0.277547,
-       (GLfloat) 0.582500, (GLfloat) 0.003052, (GLfloat) - 0.335375,
-       (GLfloat) 0.500000, (GLfloat) 0.015465, (GLfloat) - 0.278500,
-       (GLfloat) 0.417500, (GLfloat) 0.003052, (GLfloat) - 0.335375,
-       (GLfloat) 0.500000, (GLfloat) - 0.007972, (GLfloat) - 0.597750,
-       (GLfloat) 0.597750, (GLfloat) - 0.007972, (GLfloat) - 0.500000,
-       (GLfloat) 0.402250, (GLfloat) - 0.007972, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) - 0.007972, (GLfloat) - 0.402250,
-};
-
-static GLfloat s1_1_normals[] =
-{
-       (GLfloat) 0.844155, (GLfloat) - 0.175691, (GLfloat) - 0.506493,
-       (GLfloat) 0.844155, (GLfloat) - 0.175690, (GLfloat) - 0.506493,
-       (GLfloat) 0.971634, (GLfloat) - 0.172349, (GLfloat) - 0.161939,
-       (GLfloat) 0.971634, (GLfloat) - 0.172348, (GLfloat) - 0.161939,
-       (GLfloat) 0.985737, (GLfloat) - 0.023907, (GLfloat) - 0.166587,
-       (GLfloat) 0.986237, (GLfloat) - 0.017860, (GLfloat) - 0.164373,
-       (GLfloat) 0.856157, (GLfloat) - 0.009890, (GLfloat) - 0.516621,
-       (GLfloat) 0.857379, (GLfloat) - 0.016331, (GLfloat) - 0.514427,
-       (GLfloat) 0.844155, (GLfloat) - 0.175690, (GLfloat) 0.506493,
-       (GLfloat) 0.844155, (GLfloat) - 0.175690, (GLfloat) 0.506493,
-       (GLfloat) 0.856157, (GLfloat) - 0.009889, (GLfloat) 0.516621,
-       (GLfloat) 0.857379, (GLfloat) - 0.016331, (GLfloat) 0.514427,
-       (GLfloat) 0.985737, (GLfloat) - 0.023907, (GLfloat) 0.166587,
-       (GLfloat) 0.986237, (GLfloat) - 0.017860, (GLfloat) 0.164373,
-       (GLfloat) 0.971634, (GLfloat) - 0.172348, (GLfloat) 0.161939,
-       (GLfloat) 0.971634, (GLfloat) - 0.172348, (GLfloat) 0.161939,
-       (GLfloat) 0.283621, (GLfloat) 0.936578, (GLfloat) 0.205866,
-       (GLfloat) 0.264056, (GLfloat) 0.947923, (GLfloat) 0.178092,
-       (GLfloat) 0.315105, (GLfloat) 0.946548, (GLfloat) 0.068965,
-       (GLfloat) 0.304029, (GLfloat) 0.949849, (GLfloat) 0.073162,
-       (GLfloat) 0.783125, (GLfloat) 0.607180, (GLfloat) 0.134346,
-       (GLfloat) 0.804111, (GLfloat) 0.575131, (GLfloat) 0.150431,
-       (GLfloat) 0.650208, (GLfloat) 0.649088, (GLfloat) 0.394860,
-       (GLfloat) 0.665312, (GLfloat) 0.617634, (GLfloat) 0.419391,
-       (GLfloat) 0.264056, (GLfloat) 0.947923, (GLfloat) - 0.178092,
-       (GLfloat) 0.283621, (GLfloat) 0.936578, (GLfloat) - 0.205866,
-       (GLfloat) 0.650207, (GLfloat) 0.649089, (GLfloat) - 0.394860,
-       (GLfloat) 0.665311, (GLfloat) 0.617634, (GLfloat) - 0.419391,
-       (GLfloat) 0.804111, (GLfloat) 0.575131, (GLfloat) - 0.150431,
-       (GLfloat) 0.783125, (GLfloat) 0.607180, (GLfloat) - 0.134346,
-       (GLfloat) 0.304029, (GLfloat) 0.949849, (GLfloat) - 0.073162,
-       (GLfloat) 0.315105, (GLfloat) 0.946548, (GLfloat) - 0.068965,
-       (GLfloat) 0.506493, (GLfloat) - 0.175691, (GLfloat) 0.844155,
-       (GLfloat) 0.506493, (GLfloat) - 0.175691, (GLfloat) 0.844155,
-       (GLfloat) 0.161939, (GLfloat) - 0.172349, (GLfloat) 0.971633,
-       (GLfloat) 0.161939, (GLfloat) - 0.172349, (GLfloat) 0.971633,
-       (GLfloat) 0.166587, (GLfloat) - 0.023907, (GLfloat) 0.985737,
-       (GLfloat) 0.164373, (GLfloat) - 0.017860, (GLfloat) 0.986237,
-       (GLfloat) 0.516622, (GLfloat) - 0.009888, (GLfloat) 0.856157,
-       (GLfloat) 0.514427, (GLfloat) - 0.016331, (GLfloat) 0.857379,
-       (GLfloat) - 0.506493, (GLfloat) - 0.175691, (GLfloat) 0.844155,
-       (GLfloat) - 0.506493, (GLfloat) - 0.175691, (GLfloat) 0.844155,
-       (GLfloat) - 0.516622, (GLfloat) - 0.009887, (GLfloat) 0.856157,
-       (GLfloat) - 0.514427, (GLfloat) - 0.016331, (GLfloat) 0.857379,
-       (GLfloat) - 0.166587, (GLfloat) - 0.023907, (GLfloat) 0.985737,
-       (GLfloat) - 0.164373, (GLfloat) - 0.017860, (GLfloat) 0.986237,
-       (GLfloat) - 0.161939, (GLfloat) - 0.172349, (GLfloat) 0.971633,
-       (GLfloat) - 0.161939, (GLfloat) - 0.172349, (GLfloat) 0.971633,
-       (GLfloat) - 0.205866, (GLfloat) 0.936578, (GLfloat) 0.283621,
-       (GLfloat) - 0.178092, (GLfloat) 0.947923, (GLfloat) 0.264055,
-       (GLfloat) - 0.068965, (GLfloat) 0.946548, (GLfloat) 0.315105,
-       (GLfloat) - 0.073162, (GLfloat) 0.949849, (GLfloat) 0.304029,
-       (GLfloat) - 0.134346, (GLfloat) 0.607180, (GLfloat) 0.783125,
-       (GLfloat) - 0.150431, (GLfloat) 0.575131, (GLfloat) 0.804111,
-       (GLfloat) - 0.394861, (GLfloat) 0.649087, (GLfloat) 0.650209,
-       (GLfloat) - 0.419390, (GLfloat) 0.617634, (GLfloat) 0.665312,
-       (GLfloat) 0.178092, (GLfloat) 0.947923, (GLfloat) 0.264056,
-       (GLfloat) 0.205866, (GLfloat) 0.936578, (GLfloat) 0.283621,
-       (GLfloat) 0.394861, (GLfloat) 0.649087, (GLfloat) 0.650208,
-       (GLfloat) 0.419390, (GLfloat) 0.617634, (GLfloat) 0.665312,
-       (GLfloat) 0.150431, (GLfloat) 0.575131, (GLfloat) 0.804111,
-       (GLfloat) 0.134346, (GLfloat) 0.607180, (GLfloat) 0.783125,
-       (GLfloat) 0.073162, (GLfloat) 0.949849, (GLfloat) 0.304029,
-       (GLfloat) 0.068965, (GLfloat) 0.946548, (GLfloat) 0.315105,
-       (GLfloat) - 0.844155, (GLfloat) - 0.175691, (GLfloat) 0.506493,
-       (GLfloat) - 0.844155, (GLfloat) - 0.175691, (GLfloat) 0.506493,
-       (GLfloat) - 0.971633, (GLfloat) - 0.172349, (GLfloat) 0.161939,
-       (GLfloat) - 0.971633, (GLfloat) - 0.172349, (GLfloat) 0.161939,
-       (GLfloat) - 0.985737, (GLfloat) - 0.023907, (GLfloat) 0.166587,
-       (GLfloat) - 0.986237, (GLfloat) - 0.017860, (GLfloat) 0.164373,
-       (GLfloat) - 0.856157, (GLfloat) - 0.009887, (GLfloat) 0.516622,
-       (GLfloat) - 0.857379, (GLfloat) - 0.016331, (GLfloat) 0.514427,
-       (GLfloat) - 0.844155, (GLfloat) - 0.175691, (GLfloat) - 0.506493,
-       (GLfloat) - 0.844155, (GLfloat) - 0.175691, (GLfloat) - 0.506493,
-       (GLfloat) - 0.856157, (GLfloat) - 0.009888, (GLfloat) - 0.516622,
-       (GLfloat) - 0.857379, (GLfloat) - 0.016331, (GLfloat) - 0.514427,
-       (GLfloat) - 0.985737, (GLfloat) - 0.023907, (GLfloat) - 0.166587,
-       (GLfloat) - 0.986237, (GLfloat) - 0.017860, (GLfloat) - 0.164373,
-       (GLfloat) - 0.971633, (GLfloat) - 0.172349, (GLfloat) - 0.161939,
-       (GLfloat) - 0.971633, (GLfloat) - 0.172349, (GLfloat) - 0.161939,
-       (GLfloat) - 0.283621, (GLfloat) 0.936578, (GLfloat) - 0.205866,
-       (GLfloat) - 0.264056, (GLfloat) 0.947923, (GLfloat) - 0.178092,
-       (GLfloat) - 0.315105, (GLfloat) 0.946548, (GLfloat) - 0.068965,
-       (GLfloat) - 0.304029, (GLfloat) 0.949849, (GLfloat) - 0.073162,
-       (GLfloat) - 0.783125, (GLfloat) 0.607180, (GLfloat) - 0.134346,
-       (GLfloat) - 0.804111, (GLfloat) 0.575131, (GLfloat) - 0.150431,
-       (GLfloat) - 0.650208, (GLfloat) 0.649087, (GLfloat) - 0.394861,
-       (GLfloat) - 0.665312, (GLfloat) 0.617634, (GLfloat) - 0.419390,
-       (GLfloat) - 0.264055, (GLfloat) 0.947923, (GLfloat) 0.178092,
-       (GLfloat) - 0.283621, (GLfloat) 0.936578, (GLfloat) 0.205866,
-       (GLfloat) - 0.650209, (GLfloat) 0.649087, (GLfloat) 0.394861,
-       (GLfloat) - 0.665312, (GLfloat) 0.617634, (GLfloat) 0.419390,
-       (GLfloat) - 0.804111, (GLfloat) 0.575131, (GLfloat) 0.150431,
-       (GLfloat) - 0.783125, (GLfloat) 0.607180, (GLfloat) 0.134346,
-       (GLfloat) - 0.304029, (GLfloat) 0.949849, (GLfloat) 0.073162,
-       (GLfloat) - 0.315105, (GLfloat) 0.946548, (GLfloat) 0.068965,
-       (GLfloat) - 0.506493, (GLfloat) - 0.175690, (GLfloat) - 0.844155,
-       (GLfloat) - 0.506493, (GLfloat) - 0.175690, (GLfloat) - 0.844155,
-       (GLfloat) - 0.161939, (GLfloat) - 0.172348, (GLfloat) - 0.971634,
-       (GLfloat) - 0.161939, (GLfloat) - 0.172348, (GLfloat) - 0.971634,
-       (GLfloat) - 0.166587, (GLfloat) - 0.023907, (GLfloat) - 0.985737,
-       (GLfloat) - 0.164373, (GLfloat) - 0.017860, (GLfloat) - 0.986237,
-       (GLfloat) - 0.516621, (GLfloat) - 0.009889, (GLfloat) - 0.856157,
-       (GLfloat) - 0.514427, (GLfloat) - 0.016331, (GLfloat) - 0.857379,
-       (GLfloat) 0.506493, (GLfloat) - 0.175690, (GLfloat) - 0.844155,
-       (GLfloat) 0.506493, (GLfloat) - 0.175691, (GLfloat) - 0.844155,
-       (GLfloat) 0.516621, (GLfloat) - 0.009890, (GLfloat) - 0.856157,
-       (GLfloat) 0.514427, (GLfloat) - 0.016331, (GLfloat) - 0.857379,
-       (GLfloat) 0.166587, (GLfloat) - 0.023907, (GLfloat) - 0.985737,
-       (GLfloat) 0.164373, (GLfloat) - 0.017860, (GLfloat) - 0.986237,
-       (GLfloat) 0.161939, (GLfloat) - 0.172349, (GLfloat) - 0.971634,
-       (GLfloat) 0.161939, (GLfloat) - 0.172348, (GLfloat) - 0.971634,
-       (GLfloat) 0.205866, (GLfloat) 0.936578, (GLfloat) - 0.283621,
-       (GLfloat) 0.178092, (GLfloat) 0.947923, (GLfloat) - 0.264056,
-       (GLfloat) 0.068965, (GLfloat) 0.946548, (GLfloat) - 0.315105,
-       (GLfloat) 0.073162, (GLfloat) 0.949849, (GLfloat) - 0.304029,
-       (GLfloat) 0.134346, (GLfloat) 0.607180, (GLfloat) - 0.783125,
-       (GLfloat) 0.150431, (GLfloat) 0.575131, (GLfloat) - 0.804111,
-       (GLfloat) 0.394860, (GLfloat) 0.649089, (GLfloat) - 0.650207,
-       (GLfloat) 0.419391, (GLfloat) 0.617634, (GLfloat) - 0.665311,
-       (GLfloat) - 0.178092, (GLfloat) 0.947923, (GLfloat) - 0.264056,
-       (GLfloat) - 0.205866, (GLfloat) 0.936578, (GLfloat) - 0.283621,
-       (GLfloat) - 0.394860, (GLfloat) 0.649088, (GLfloat) - 0.650208,
-       (GLfloat) - 0.419391, (GLfloat) 0.617634, (GLfloat) - 0.665312,
-       (GLfloat) - 0.150431, (GLfloat) 0.575131, (GLfloat) - 0.804111,
-       (GLfloat) - 0.134346, (GLfloat) 0.607180, (GLfloat) - 0.783125,
-       (GLfloat) - 0.073162, (GLfloat) 0.949849, (GLfloat) - 0.304029,
-       (GLfloat) - 0.068965, (GLfloat) 0.946548, (GLfloat) - 0.315105,
-       (GLfloat) 0.135802, (GLfloat) 0.982944, (GLfloat) 0.124011,
-       (GLfloat) 0.124011, (GLfloat) 0.982944, (GLfloat) 0.135802,
-       (GLfloat) 0.043834, (GLfloat) 0.993006, (GLfloat) 0.109621,
-       (GLfloat) 0.039656, (GLfloat) 0.992607, (GLfloat) 0.114709,
-       (GLfloat) 0.030163, (GLfloat) 0.998998, (GLfloat) 0.033079,
-       (GLfloat) 0.033079, (GLfloat) 0.998998, (GLfloat) 0.030163,
-       (GLfloat) 0.109621, (GLfloat) 0.993006, (GLfloat) 0.043834,
-       (GLfloat) 0.114709, (GLfloat) 0.992607, (GLfloat) 0.039656,
-       (GLfloat) - 0.124011, (GLfloat) 0.982944, (GLfloat) 0.135803,
-       (GLfloat) - 0.135803, (GLfloat) 0.982944, (GLfloat) 0.124011,
-       (GLfloat) - 0.109621, (GLfloat) 0.993006, (GLfloat) 0.043834,
-       (GLfloat) - 0.114709, (GLfloat) 0.992607, (GLfloat) 0.039656,
-       (GLfloat) - 0.033079, (GLfloat) 0.998998, (GLfloat) 0.030163,
-       (GLfloat) - 0.030163, (GLfloat) 0.998998, (GLfloat) 0.033079,
-       (GLfloat) - 0.043834, (GLfloat) 0.993006, (GLfloat) 0.109621,
-       (GLfloat) - 0.039656, (GLfloat) 0.992607, (GLfloat) 0.114709,
-       (GLfloat) - 0.135802, (GLfloat) 0.982944, (GLfloat) - 0.124011,
-       (GLfloat) - 0.124011, (GLfloat) 0.982944, (GLfloat) - 0.135802,
-       (GLfloat) - 0.043834, (GLfloat) 0.993006, (GLfloat) - 0.109621,
-       (GLfloat) - 0.039656, (GLfloat) 0.992607, (GLfloat) - 0.114709,
-       (GLfloat) - 0.030163, (GLfloat) 0.998998, (GLfloat) - 0.033079,
-       (GLfloat) - 0.033079, (GLfloat) 0.998998, (GLfloat) - 0.030163,
-       (GLfloat) - 0.109621, (GLfloat) 0.993006, (GLfloat) - 0.043834,
-       (GLfloat) - 0.114709, (GLfloat) 0.992607, (GLfloat) - 0.039656,
-       (GLfloat) 0.124011, (GLfloat) 0.982944, (GLfloat) - 0.135802,
-       (GLfloat) 0.135802, (GLfloat) 0.982944, (GLfloat) - 0.124011,
-       (GLfloat) 0.109621, (GLfloat) 0.993006, (GLfloat) - 0.043834,
-       (GLfloat) 0.114709, (GLfloat) 0.992607, (GLfloat) - 0.039656,
-       (GLfloat) 0.033079, (GLfloat) 0.998998, (GLfloat) - 0.030163,
-       (GLfloat) 0.030163, (GLfloat) 0.998998, (GLfloat) - 0.033079,
-       (GLfloat) 0.043834, (GLfloat) 0.993006, (GLfloat) - 0.109621,
-       (GLfloat) 0.039656, (GLfloat) 0.992607, (GLfloat) - 0.114709,
-       (GLfloat) 0.852125, (GLfloat) - 0.111720, (GLfloat) - 0.511275,
-       (GLfloat) 0.852125, (GLfloat) - 0.111718, (GLfloat) - 0.511276,
-       (GLfloat) 0.855252, (GLfloat) - 0.072245, (GLfloat) - 0.513151,
-       (GLfloat) 0.855252, (GLfloat) - 0.072244, (GLfloat) - 0.513152,
-       (GLfloat) 0.983916, (GLfloat) - 0.070836, (GLfloat) - 0.163986,
-       (GLfloat) 0.983916, (GLfloat) - 0.070836, (GLfloat) - 0.163986,
-       (GLfloat) 0.980457, (GLfloat) - 0.109554, (GLfloat) - 0.163409,
-       (GLfloat) 0.980457, (GLfloat) - 0.109553, (GLfloat) - 0.163410,
-       (GLfloat) 0.857405, (GLfloat) - 0.014299, (GLfloat) - 0.514444,
-       (GLfloat) 0.857405, (GLfloat) - 0.014300, (GLfloat) - 0.514443,
-       (GLfloat) 0.986297, (GLfloat) - 0.014019, (GLfloat) - 0.164382,
-       (GLfloat) 0.986297, (GLfloat) - 0.014019, (GLfloat) - 0.164382,
-       (GLfloat) 0.985564, (GLfloat) - 0.041017, (GLfloat) - 0.164261,
-       (GLfloat) 0.985564, (GLfloat) - 0.041017, (GLfloat) - 0.164260,
-       (GLfloat) 0.856742, (GLfloat) - 0.041836, (GLfloat) - 0.514045,
-       (GLfloat) 0.856742, (GLfloat) - 0.041836, (GLfloat) - 0.514045,
-       (GLfloat) 0.857405, (GLfloat) - 0.014299, (GLfloat) 0.514443,
-       (GLfloat) 0.857405, (GLfloat) - 0.014299, (GLfloat) 0.514444,
-       (GLfloat) 0.856742, (GLfloat) - 0.041836, (GLfloat) 0.514045,
-       (GLfloat) 0.856742, (GLfloat) - 0.041836, (GLfloat) 0.514045,
-       (GLfloat) 0.985564, (GLfloat) - 0.041017, (GLfloat) 0.164260,
-       (GLfloat) 0.985564, (GLfloat) - 0.041017, (GLfloat) 0.164261,
-       (GLfloat) 0.986297, (GLfloat) - 0.014019, (GLfloat) 0.164382,
-       (GLfloat) 0.986297, (GLfloat) - 0.014019, (GLfloat) 0.164382,
-       (GLfloat) 0.852125, (GLfloat) - 0.111719, (GLfloat) 0.511275,
-       (GLfloat) 0.852125, (GLfloat) - 0.111718, (GLfloat) 0.511276,
-       (GLfloat) 0.980457, (GLfloat) - 0.109553, (GLfloat) 0.163410,
-       (GLfloat) 0.980457, (GLfloat) - 0.109554, (GLfloat) 0.163409,
-       (GLfloat) 0.983916, (GLfloat) - 0.070836, (GLfloat) 0.163986,
-       (GLfloat) 0.983916, (GLfloat) - 0.070836, (GLfloat) 0.163986,
-       (GLfloat) 0.855252, (GLfloat) - 0.072244, (GLfloat) 0.513152,
-       (GLfloat) 0.855252, (GLfloat) - 0.072245, (GLfloat) 0.513151,
-       (GLfloat) - 0.511275, (GLfloat) - 0.111719, (GLfloat) - 0.852125,
-       (GLfloat) - 0.511276, (GLfloat) - 0.111718, (GLfloat) - 0.852125,
-       (GLfloat) - 0.513151, (GLfloat) - 0.072245, (GLfloat) - 0.855252,
-       (GLfloat) - 0.513152, (GLfloat) - 0.072244, (GLfloat) - 0.855252,
-       (GLfloat) - 0.163986, (GLfloat) - 0.070836, (GLfloat) - 0.983916,
-       (GLfloat) - 0.163986, (GLfloat) - 0.070836, (GLfloat) - 0.983916,
-       (GLfloat) - 0.163409, (GLfloat) - 0.109554, (GLfloat) - 0.980457,
-       (GLfloat) - 0.163410, (GLfloat) - 0.109553, (GLfloat) - 0.980457,
-       (GLfloat) - 0.514444, (GLfloat) - 0.014299, (GLfloat) - 0.857405,
-       (GLfloat) - 0.514443, (GLfloat) - 0.014299, (GLfloat) - 0.857405,
-       (GLfloat) - 0.164382, (GLfloat) - 0.014019, (GLfloat) - 0.986297,
-       (GLfloat) - 0.164382, (GLfloat) - 0.014019, (GLfloat) - 0.986297,
-       (GLfloat) - 0.164261, (GLfloat) - 0.041017, (GLfloat) - 0.985564,
-       (GLfloat) - 0.164260, (GLfloat) - 0.041017, (GLfloat) - 0.985564,
-       (GLfloat) - 0.514045, (GLfloat) - 0.041836, (GLfloat) - 0.856742,
-       (GLfloat) - 0.514045, (GLfloat) - 0.041836, (GLfloat) - 0.856742,
-       (GLfloat) 0.514443, (GLfloat) - 0.014300, (GLfloat) - 0.857405,
-       (GLfloat) 0.514444, (GLfloat) - 0.014299, (GLfloat) - 0.857405,
-       (GLfloat) 0.514045, (GLfloat) - 0.041836, (GLfloat) - 0.856742,
-       (GLfloat) 0.514045, (GLfloat) - 0.041836, (GLfloat) - 0.856742,
-       (GLfloat) 0.164260, (GLfloat) - 0.041017, (GLfloat) - 0.985564,
-       (GLfloat) 0.164261, (GLfloat) - 0.041017, (GLfloat) - 0.985564,
-       (GLfloat) 0.164382, (GLfloat) - 0.014019, (GLfloat) - 0.986297,
-       (GLfloat) 0.164382, (GLfloat) - 0.014019, (GLfloat) - 0.986297,
-       (GLfloat) 0.511275, (GLfloat) - 0.111720, (GLfloat) - 0.852125,
-       (GLfloat) 0.511276, (GLfloat) - 0.111718, (GLfloat) - 0.852125,
-       (GLfloat) 0.163410, (GLfloat) - 0.109553, (GLfloat) - 0.980457,
-       (GLfloat) 0.163409, (GLfloat) - 0.109554, (GLfloat) - 0.980457,
-       (GLfloat) 0.163986, (GLfloat) - 0.070836, (GLfloat) - 0.983916,
-       (GLfloat) 0.163986, (GLfloat) - 0.070836, (GLfloat) - 0.983916,
-       (GLfloat) 0.513152, (GLfloat) - 0.072244, (GLfloat) - 0.855252,
-       (GLfloat) 0.513151, (GLfloat) - 0.072245, (GLfloat) - 0.855252,
-       (GLfloat) - 0.511275, (GLfloat) - 0.111719, (GLfloat) 0.852125,
-       (GLfloat) - 0.511275, (GLfloat) - 0.111719, (GLfloat) 0.852125,
-       (GLfloat) - 0.163410, (GLfloat) - 0.109554, (GLfloat) 0.980457,
-       (GLfloat) - 0.163409, (GLfloat) - 0.109555, (GLfloat) 0.980457,
-       (GLfloat) - 0.163986, (GLfloat) - 0.070835, (GLfloat) 0.983916,
-       (GLfloat) - 0.163986, (GLfloat) - 0.070835, (GLfloat) 0.983916,
-       (GLfloat) - 0.513151, (GLfloat) - 0.072244, (GLfloat) 0.855252,
-       (GLfloat) - 0.513151, (GLfloat) - 0.072245, (GLfloat) 0.855252,
-       (GLfloat) 0.511275, (GLfloat) - 0.111719, (GLfloat) 0.852125,
-       (GLfloat) 0.511275, (GLfloat) - 0.111719, (GLfloat) 0.852125,
-       (GLfloat) 0.513151, (GLfloat) - 0.072245, (GLfloat) 0.855252,
-       (GLfloat) 0.513151, (GLfloat) - 0.072244, (GLfloat) 0.855252,
-       (GLfloat) 0.163986, (GLfloat) - 0.070835, (GLfloat) 0.983916,
-       (GLfloat) 0.163986, (GLfloat) - 0.070835, (GLfloat) 0.983916,
-       (GLfloat) 0.163409, (GLfloat) - 0.109555, (GLfloat) 0.980457,
-       (GLfloat) 0.163410, (GLfloat) - 0.109554, (GLfloat) 0.980457,
-       (GLfloat) 0.514444, (GLfloat) - 0.014299, (GLfloat) 0.857405,
-       (GLfloat) 0.514443, (GLfloat) - 0.014299, (GLfloat) 0.857405,
-       (GLfloat) 0.164383, (GLfloat) - 0.014019, (GLfloat) 0.986297,
-       (GLfloat) 0.164383, (GLfloat) - 0.014019, (GLfloat) 0.986297,
-       (GLfloat) 0.164261, (GLfloat) - 0.041017, (GLfloat) 0.985564,
-       (GLfloat) 0.164261, (GLfloat) - 0.041017, (GLfloat) 0.985564,
-       (GLfloat) 0.514045, (GLfloat) - 0.041836, (GLfloat) 0.856742,
-       (GLfloat) 0.514045, (GLfloat) - 0.041836, (GLfloat) 0.856742,
-       (GLfloat) - 0.514443, (GLfloat) - 0.014299, (GLfloat) 0.857405,
-       (GLfloat) - 0.514443, (GLfloat) - 0.014299, (GLfloat) 0.857405,
-       (GLfloat) - 0.514045, (GLfloat) - 0.041836, (GLfloat) 0.856742,
-       (GLfloat) - 0.514045, (GLfloat) - 0.041836, (GLfloat) 0.856742,
-       (GLfloat) - 0.164261, (GLfloat) - 0.041017, (GLfloat) 0.985564,
-       (GLfloat) - 0.164261, (GLfloat) - 0.041017, (GLfloat) 0.985564,
-       (GLfloat) - 0.164383, (GLfloat) - 0.014019, (GLfloat) 0.986297,
-       (GLfloat) - 0.164383, (GLfloat) - 0.014019, (GLfloat) 0.986297,
-       (GLfloat) - 0.852125, (GLfloat) - 0.111719, (GLfloat) - 0.511275,
-       (GLfloat) - 0.852125, (GLfloat) - 0.111719, (GLfloat) - 0.511275,
-       (GLfloat) - 0.980457, (GLfloat) - 0.109554, (GLfloat) - 0.163410,
-       (GLfloat) - 0.980457, (GLfloat) - 0.109555, (GLfloat) - 0.163409,
-       (GLfloat) - 0.983916, (GLfloat) - 0.070835, (GLfloat) - 0.163986,
-       (GLfloat) - 0.983916, (GLfloat) - 0.070835, (GLfloat) - 0.163986,
-       (GLfloat) - 0.855252, (GLfloat) - 0.072244, (GLfloat) - 0.513151,
-       (GLfloat) - 0.855252, (GLfloat) - 0.072245, (GLfloat) - 0.513151,
-       (GLfloat) - 0.852125, (GLfloat) - 0.111719, (GLfloat) 0.511275,
-       (GLfloat) - 0.852125, (GLfloat) - 0.111719, (GLfloat) 0.511275,
-       (GLfloat) - 0.855252, (GLfloat) - 0.072245, (GLfloat) 0.513151,
-       (GLfloat) - 0.855252, (GLfloat) - 0.072244, (GLfloat) 0.513151,
-       (GLfloat) - 0.983916, (GLfloat) - 0.070835, (GLfloat) 0.163986,
-       (GLfloat) - 0.983916, (GLfloat) - 0.070835, (GLfloat) 0.163986,
-       (GLfloat) - 0.980457, (GLfloat) - 0.109555, (GLfloat) 0.163409,
-       (GLfloat) - 0.980457, (GLfloat) - 0.109554, (GLfloat) 0.163410,
-       (GLfloat) - 0.857405, (GLfloat) - 0.014299, (GLfloat) 0.514443,
-       (GLfloat) - 0.857405, (GLfloat) - 0.014299, (GLfloat) 0.514443,
-       (GLfloat) - 0.986297, (GLfloat) - 0.014019, (GLfloat) 0.164383,
-       (GLfloat) - 0.986297, (GLfloat) - 0.014019, (GLfloat) 0.164383,
-       (GLfloat) - 0.985564, (GLfloat) - 0.041017, (GLfloat) 0.164261,
-       (GLfloat) - 0.985564, (GLfloat) - 0.041017, (GLfloat) 0.164261,
-       (GLfloat) - 0.856742, (GLfloat) - 0.041836, (GLfloat) 0.514045,
-       (GLfloat) - 0.856742, (GLfloat) - 0.041836, (GLfloat) 0.514045,
-       (GLfloat) - 0.857405, (GLfloat) - 0.014299, (GLfloat) - 0.514443,
-       (GLfloat) - 0.857405, (GLfloat) - 0.014299, (GLfloat) - 0.514444,
-       (GLfloat) - 0.856742, (GLfloat) - 0.041836, (GLfloat) - 0.514045,
-       (GLfloat) - 0.856742, (GLfloat) - 0.041836, (GLfloat) - 0.514045,
-       (GLfloat) - 0.985564, (GLfloat) - 0.041017, (GLfloat) - 0.164261,
-       (GLfloat) - 0.985564, (GLfloat) - 0.041017, (GLfloat) - 0.164261,
-       (GLfloat) - 0.986297, (GLfloat) - 0.014019, (GLfloat) - 0.164383,
-       (GLfloat) - 0.986297, (GLfloat) - 0.014019, (GLfloat) - 0.164383,
-       (GLfloat) - 0.511714, (GLfloat) 0.103845, (GLfloat) - 0.852857,
-       (GLfloat) - 0.511715, (GLfloat) 0.103844, (GLfloat) - 0.852857,
-       (GLfloat) - 0.163545, (GLfloat) 0.101829, (GLfloat) - 0.981267,
-       (GLfloat) - 0.163544, (GLfloat) 0.101829, (GLfloat) - 0.981267,
-       (GLfloat) - 0.164038, (GLfloat) 0.066199, (GLfloat) - 0.984230,
-       (GLfloat) - 0.164039, (GLfloat) 0.066198, (GLfloat) - 0.984230,
-       (GLfloat) - 0.513322, (GLfloat) 0.067516, (GLfloat) - 0.855536,
-       (GLfloat) - 0.513322, (GLfloat) 0.067517, (GLfloat) - 0.855536,
-       (GLfloat) 0.511714, (GLfloat) 0.103845, (GLfloat) - 0.852857,
-       (GLfloat) 0.511715, (GLfloat) 0.103844, (GLfloat) - 0.852857,
-       (GLfloat) 0.513322, (GLfloat) 0.067517, (GLfloat) - 0.855536,
-       (GLfloat) 0.513322, (GLfloat) 0.067516, (GLfloat) - 0.855536,
-       (GLfloat) 0.164038, (GLfloat) 0.066199, (GLfloat) - 0.984230,
-       (GLfloat) 0.164039, (GLfloat) 0.066198, (GLfloat) - 0.984230,
-       (GLfloat) 0.163544, (GLfloat) 0.101829, (GLfloat) - 0.981267,
-       (GLfloat) 0.163545, (GLfloat) 0.101829, (GLfloat) - 0.981267,
-       (GLfloat) 0.514446, (GLfloat) 0.013998, (GLfloat) - 0.857409,
-       (GLfloat) 0.514445, (GLfloat) 0.013999, (GLfloat) - 0.857409,
-       (GLfloat) 0.164383, (GLfloat) 0.013724, (GLfloat) - 0.986301,
-       (GLfloat) 0.164383, (GLfloat) 0.013724, (GLfloat) - 0.986301,
-       (GLfloat) 0.164274, (GLfloat) 0.039013, (GLfloat) - 0.985643,
-       (GLfloat) 0.164273, (GLfloat) 0.039013, (GLfloat) - 0.985643,
-       (GLfloat) 0.514088, (GLfloat) 0.039792, (GLfloat) - 0.856814,
-       (GLfloat) 0.514088, (GLfloat) 0.039792, (GLfloat) - 0.856814,
-       (GLfloat) - 0.514445, (GLfloat) 0.013999, (GLfloat) - 0.857409,
-       (GLfloat) - 0.514446, (GLfloat) 0.013998, (GLfloat) - 0.857409,
-       (GLfloat) - 0.514088, (GLfloat) 0.039792, (GLfloat) - 0.856814,
-       (GLfloat) - 0.514088, (GLfloat) 0.039792, (GLfloat) - 0.856814,
-       (GLfloat) - 0.164273, (GLfloat) 0.039013, (GLfloat) - 0.985643,
-       (GLfloat) - 0.164274, (GLfloat) 0.039013, (GLfloat) - 0.985643,
-       (GLfloat) - 0.164383, (GLfloat) 0.013724, (GLfloat) - 0.986301,
-       (GLfloat) - 0.164383, (GLfloat) 0.013724, (GLfloat) - 0.986301,
-       (GLfloat) - 0.852857, (GLfloat) 0.103845, (GLfloat) - 0.511714,
-       (GLfloat) - 0.852857, (GLfloat) 0.103845, (GLfloat) - 0.511714,
-       (GLfloat) - 0.855536, (GLfloat) 0.067516, (GLfloat) - 0.513322,
-       (GLfloat) - 0.855536, (GLfloat) 0.067516, (GLfloat) - 0.513322,
-       (GLfloat) - 0.984230, (GLfloat) 0.066198, (GLfloat) - 0.164038,
-       (GLfloat) - 0.984230, (GLfloat) 0.066198, (GLfloat) - 0.164039,
-       (GLfloat) - 0.981266, (GLfloat) 0.101830, (GLfloat) - 0.163544,
-       (GLfloat) - 0.981266, (GLfloat) 0.101829, (GLfloat) - 0.163545,
-       (GLfloat) - 0.857409, (GLfloat) 0.013998, (GLfloat) - 0.514446,
-       (GLfloat) - 0.857409, (GLfloat) 0.013999, (GLfloat) - 0.514445,
-       (GLfloat) - 0.986301, (GLfloat) 0.013724, (GLfloat) - 0.164383,
-       (GLfloat) - 0.986301, (GLfloat) 0.013724, (GLfloat) - 0.164383,
-       (GLfloat) - 0.985643, (GLfloat) 0.039013, (GLfloat) - 0.164274,
-       (GLfloat) - 0.985643, (GLfloat) 0.039013, (GLfloat) - 0.164274,
-       (GLfloat) - 0.856814, (GLfloat) 0.039792, (GLfloat) - 0.514088,
-       (GLfloat) - 0.856814, (GLfloat) 0.039792, (GLfloat) - 0.514088,
-       (GLfloat) - 0.857409, (GLfloat) 0.013999, (GLfloat) 0.514445,
-       (GLfloat) - 0.857409, (GLfloat) 0.013998, (GLfloat) 0.514446,
-       (GLfloat) - 0.856814, (GLfloat) 0.039792, (GLfloat) 0.514088,
-       (GLfloat) - 0.856814, (GLfloat) 0.039792, (GLfloat) 0.514088,
-       (GLfloat) - 0.985643, (GLfloat) 0.039013, (GLfloat) 0.164274,
-       (GLfloat) - 0.985643, (GLfloat) 0.039013, (GLfloat) 0.164274,
-       (GLfloat) - 0.986301, (GLfloat) 0.013724, (GLfloat) 0.164383,
-       (GLfloat) - 0.986301, (GLfloat) 0.013724, (GLfloat) 0.164383,
-       (GLfloat) - 0.852857, (GLfloat) 0.103845, (GLfloat) 0.511714,
-       (GLfloat) - 0.852857, (GLfloat) 0.103845, (GLfloat) 0.511714,
-       (GLfloat) - 0.981266, (GLfloat) 0.101829, (GLfloat) 0.163545,
-       (GLfloat) - 0.981266, (GLfloat) 0.101830, (GLfloat) 0.163544,
-       (GLfloat) - 0.984230, (GLfloat) 0.066198, (GLfloat) 0.164038,
-       (GLfloat) - 0.984230, (GLfloat) 0.066198, (GLfloat) 0.164039,
-       (GLfloat) - 0.855536, (GLfloat) 0.067516, (GLfloat) 0.513322,
-       (GLfloat) - 0.855536, (GLfloat) 0.067516, (GLfloat) 0.513322,
-       (GLfloat) - 0.511714, (GLfloat) 0.103845, (GLfloat) 0.852857,
-       (GLfloat) - 0.511714, (GLfloat) 0.103845, (GLfloat) 0.852857,
-       (GLfloat) - 0.513322, (GLfloat) 0.067516, (GLfloat) 0.855536,
-       (GLfloat) - 0.513322, (GLfloat) 0.067516, (GLfloat) 0.855536,
-       (GLfloat) - 0.164038, (GLfloat) 0.066198, (GLfloat) 0.984230,
-       (GLfloat) - 0.164039, (GLfloat) 0.066198, (GLfloat) 0.984230,
-       (GLfloat) - 0.163544, (GLfloat) 0.101830, (GLfloat) 0.981266,
-       (GLfloat) - 0.163545, (GLfloat) 0.101829, (GLfloat) 0.981266,
-       (GLfloat) - 0.514446, (GLfloat) 0.013998, (GLfloat) 0.857409,
-       (GLfloat) - 0.514445, (GLfloat) 0.013999, (GLfloat) 0.857409,
-       (GLfloat) - 0.164383, (GLfloat) 0.013724, (GLfloat) 0.986301,
-       (GLfloat) - 0.164383, (GLfloat) 0.013724, (GLfloat) 0.986301,
-       (GLfloat) - 0.164274, (GLfloat) 0.039013, (GLfloat) 0.985643,
-       (GLfloat) - 0.164274, (GLfloat) 0.039013, (GLfloat) 0.985643,
-       (GLfloat) - 0.514088, (GLfloat) 0.039792, (GLfloat) 0.856814,
-       (GLfloat) - 0.514088, (GLfloat) 0.039792, (GLfloat) 0.856814,
-       (GLfloat) 0.514445, (GLfloat) 0.013999, (GLfloat) 0.857409,
-       (GLfloat) 0.514446, (GLfloat) 0.013998, (GLfloat) 0.857409,
-       (GLfloat) 0.514088, (GLfloat) 0.039792, (GLfloat) 0.856814,
-       (GLfloat) 0.514088, (GLfloat) 0.039792, (GLfloat) 0.856814,
-       (GLfloat) 0.164274, (GLfloat) 0.039013, (GLfloat) 0.985643,
-       (GLfloat) 0.164274, (GLfloat) 0.039013, (GLfloat) 0.985643,
-       (GLfloat) 0.164383, (GLfloat) 0.013724, (GLfloat) 0.986301,
-       (GLfloat) 0.164383, (GLfloat) 0.013724, (GLfloat) 0.986301,
-       (GLfloat) 0.511714, (GLfloat) 0.103845, (GLfloat) 0.852857,
-       (GLfloat) 0.511714, (GLfloat) 0.103845, (GLfloat) 0.852857,
-       (GLfloat) 0.163545, (GLfloat) 0.101829, (GLfloat) 0.981266,
-       (GLfloat) 0.163544, (GLfloat) 0.101830, (GLfloat) 0.981266,
-       (GLfloat) 0.164038, (GLfloat) 0.066198, (GLfloat) 0.984230,
-       (GLfloat) 0.164039, (GLfloat) 0.066198, (GLfloat) 0.984230,
-       (GLfloat) 0.513322, (GLfloat) 0.067516, (GLfloat) 0.855536,
-       (GLfloat) 0.513322, (GLfloat) 0.067516, (GLfloat) 0.855536,
-       (GLfloat) 0.852857, (GLfloat) 0.103845, (GLfloat) 0.511714,
-       (GLfloat) 0.852857, (GLfloat) 0.103844, (GLfloat) 0.511715,
-       (GLfloat) 0.855536, (GLfloat) 0.067517, (GLfloat) 0.513322,
-       (GLfloat) 0.855536, (GLfloat) 0.067516, (GLfloat) 0.513322,
-       (GLfloat) 0.984230, (GLfloat) 0.066199, (GLfloat) 0.164038,
-       (GLfloat) 0.984230, (GLfloat) 0.066198, (GLfloat) 0.164039,
-       (GLfloat) 0.981267, (GLfloat) 0.101829, (GLfloat) 0.163544,
-       (GLfloat) 0.981267, (GLfloat) 0.101829, (GLfloat) 0.163545,
-       (GLfloat) 0.857409, (GLfloat) 0.013998, (GLfloat) 0.514446,
-       (GLfloat) 0.857409, (GLfloat) 0.013999, (GLfloat) 0.514445,
-       (GLfloat) 0.986301, (GLfloat) 0.013724, (GLfloat) 0.164383,
-       (GLfloat) 0.986301, (GLfloat) 0.013724, (GLfloat) 0.164383,
-       (GLfloat) 0.985643, (GLfloat) 0.039013, (GLfloat) 0.164274,
-       (GLfloat) 0.985643, (GLfloat) 0.039013, (GLfloat) 0.164273,
-       (GLfloat) 0.856814, (GLfloat) 0.039792, (GLfloat) 0.514088,
-       (GLfloat) 0.856814, (GLfloat) 0.039792, (GLfloat) 0.514088,
-       (GLfloat) 0.857409, (GLfloat) 0.013999, (GLfloat) - 0.514445,
-       (GLfloat) 0.857409, (GLfloat) 0.013998, (GLfloat) - 0.514446,
-       (GLfloat) 0.856814, (GLfloat) 0.039792, (GLfloat) - 0.514088,
-       (GLfloat) 0.856814, (GLfloat) 0.039792, (GLfloat) - 0.514088,
-       (GLfloat) 0.985643, (GLfloat) 0.039013, (GLfloat) - 0.164273,
-       (GLfloat) 0.985643, (GLfloat) 0.039013, (GLfloat) - 0.164274,
-       (GLfloat) 0.986301, (GLfloat) 0.013724, (GLfloat) - 0.164383,
-       (GLfloat) 0.986301, (GLfloat) 0.013724, (GLfloat) - 0.164383,
-       (GLfloat) 0.852857, (GLfloat) 0.103845, (GLfloat) - 0.511714,
-       (GLfloat) 0.852857, (GLfloat) 0.103844, (GLfloat) - 0.511715,
-       (GLfloat) 0.981267, (GLfloat) 0.101829, (GLfloat) - 0.163545,
-       (GLfloat) 0.981267, (GLfloat) 0.101829, (GLfloat) - 0.163544,
-       (GLfloat) 0.984230, (GLfloat) 0.066199, (GLfloat) - 0.164038,
-       (GLfloat) 0.984230, (GLfloat) 0.066198, (GLfloat) - 0.164039,
-       (GLfloat) 0.855536, (GLfloat) 0.067516, (GLfloat) - 0.513322,
-       (GLfloat) 0.855536, (GLfloat) 0.067517, (GLfloat) - 0.513322,
-       (GLfloat) 0.845633, (GLfloat) 0.165745, (GLfloat) 0.507379,
-       (GLfloat) 0.845633, (GLfloat) 0.165745, (GLfloat) 0.507379,
-       (GLfloat) 0.973270, (GLfloat) 0.162582, (GLfloat) 0.162211,
-       (GLfloat) 0.973270, (GLfloat) 0.162582, (GLfloat) 0.162212,
-       (GLfloat) 0.985759, (GLfloat) 0.022905, (GLfloat) 0.166594,
-       (GLfloat) 0.986250, (GLfloat) 0.017105, (GLfloat) 0.164375,
-       (GLfloat) 0.856160, (GLfloat) 0.009467, (GLfloat) 0.516625,
-       (GLfloat) 0.857388, (GLfloat) 0.015640, (GLfloat) 0.514433,
-       (GLfloat) 0.845633, (GLfloat) 0.165745, (GLfloat) - 0.507380,
-       (GLfloat) 0.845633, (GLfloat) 0.165745, (GLfloat) - 0.507379,
-       (GLfloat) 0.856160, (GLfloat) 0.009468, (GLfloat) - 0.516624,
-       (GLfloat) 0.857388, (GLfloat) 0.015640, (GLfloat) - 0.514433,
-       (GLfloat) 0.985759, (GLfloat) 0.022905, (GLfloat) - 0.166594,
-       (GLfloat) 0.986250, (GLfloat) 0.017105, (GLfloat) - 0.164375,
-       (GLfloat) 0.973270, (GLfloat) 0.162582, (GLfloat) - 0.162211,
-       (GLfloat) 0.973270, (GLfloat) 0.162582, (GLfloat) - 0.162212,
-       (GLfloat) 0.283621, (GLfloat) - 0.936578, (GLfloat) - 0.205866,
-       (GLfloat) 0.264056, (GLfloat) - 0.947923, (GLfloat) - 0.178092,
-       (GLfloat) 0.315105, (GLfloat) - 0.946548, (GLfloat) - 0.068965,
-       (GLfloat) 0.304029, (GLfloat) - 0.949849, (GLfloat) - 0.073162,
-       (GLfloat) 0.789686, (GLfloat) - 0.598377, (GLfloat) - 0.135427,
-       (GLfloat) 0.809934, (GLfloat) - 0.566659, (GLfloat) - 0.151344,
-       (GLfloat) 0.656717, (GLfloat) - 0.640092, (GLfloat) - 0.398754,
-       (GLfloat) 0.671170, (GLfloat) - 0.608876, (GLfloat) - 0.422849,
-       (GLfloat) 0.264055, (GLfloat) - 0.947923, (GLfloat) 0.178092,
-       (GLfloat) 0.283621, (GLfloat) - 0.936578, (GLfloat) 0.205866,
-       (GLfloat) 0.656718, (GLfloat) - 0.640092, (GLfloat) 0.398754,
-       (GLfloat) 0.671170, (GLfloat) - 0.608876, (GLfloat) 0.422849,
-       (GLfloat) 0.809934, (GLfloat) - 0.566659, (GLfloat) 0.151344,
-       (GLfloat) 0.789686, (GLfloat) - 0.598377, (GLfloat) 0.135427,
-       (GLfloat) 0.304029, (GLfloat) - 0.949849, (GLfloat) 0.073162,
-       (GLfloat) 0.315105, (GLfloat) - 0.946548, (GLfloat) 0.068965,
-       (GLfloat) 0.507379, (GLfloat) 0.165745, (GLfloat) - 0.845633,
-       (GLfloat) 0.507380, (GLfloat) 0.165745, (GLfloat) - 0.845633,
-       (GLfloat) 0.162211, (GLfloat) 0.162582, (GLfloat) - 0.973270,
-       (GLfloat) 0.162212, (GLfloat) 0.162582, (GLfloat) - 0.973270,
-       (GLfloat) 0.166594, (GLfloat) 0.022905, (GLfloat) - 0.985759,
-       (GLfloat) 0.164375, (GLfloat) 0.017105, (GLfloat) - 0.986250,
-       (GLfloat) 0.516624, (GLfloat) 0.009468, (GLfloat) - 0.856160,
-       (GLfloat) 0.514433, (GLfloat) 0.015640, (GLfloat) - 0.857388,
-       (GLfloat) - 0.507379, (GLfloat) 0.165745, (GLfloat) - 0.845633,
-       (GLfloat) - 0.507379, (GLfloat) 0.165745, (GLfloat) - 0.845633,
-       (GLfloat) - 0.516625, (GLfloat) 0.009467, (GLfloat) - 0.856160,
-       (GLfloat) - 0.514433, (GLfloat) 0.015640, (GLfloat) - 0.857388,
-       (GLfloat) - 0.166594, (GLfloat) 0.022905, (GLfloat) - 0.985759,
-       (GLfloat) - 0.164375, (GLfloat) 0.017105, (GLfloat) - 0.986250,
-       (GLfloat) - 0.162211, (GLfloat) 0.162582, (GLfloat) - 0.973270,
-       (GLfloat) - 0.162212, (GLfloat) 0.162582, (GLfloat) - 0.973270,
-       (GLfloat) - 0.205866, (GLfloat) - 0.936578, (GLfloat) - 0.283621,
-       (GLfloat) - 0.178092, (GLfloat) - 0.947923, (GLfloat) - 0.264055,
-       (GLfloat) - 0.068965, (GLfloat) - 0.946548, (GLfloat) - 0.315105,
-       (GLfloat) - 0.073162, (GLfloat) - 0.949849, (GLfloat) - 0.304029,
-       (GLfloat) - 0.135427, (GLfloat) - 0.598377, (GLfloat) - 0.789686,
-       (GLfloat) - 0.151344, (GLfloat) - 0.566659, (GLfloat) - 0.809934,
-       (GLfloat) - 0.398754, (GLfloat) - 0.640092, (GLfloat) - 0.656718,
-       (GLfloat) - 0.422849, (GLfloat) - 0.608876, (GLfloat) - 0.671170,
-       (GLfloat) 0.178092, (GLfloat) - 0.947923, (GLfloat) - 0.264056,
-       (GLfloat) 0.205866, (GLfloat) - 0.936578, (GLfloat) - 0.283621,
-       (GLfloat) 0.398754, (GLfloat) - 0.640092, (GLfloat) - 0.656717,
-       (GLfloat) 0.422849, (GLfloat) - 0.608876, (GLfloat) - 0.671170,
-       (GLfloat) 0.151344, (GLfloat) - 0.566659, (GLfloat) - 0.809934,
-       (GLfloat) 0.135427, (GLfloat) - 0.598377, (GLfloat) - 0.789686,
-       (GLfloat) 0.073162, (GLfloat) - 0.949849, (GLfloat) - 0.304029,
-       (GLfloat) 0.068965, (GLfloat) - 0.946548, (GLfloat) - 0.315105,
-       (GLfloat) - 0.845633, (GLfloat) 0.165746, (GLfloat) - 0.507379,
-       (GLfloat) - 0.845632, (GLfloat) 0.165746, (GLfloat) - 0.507380,
-       (GLfloat) - 0.973270, (GLfloat) 0.162582, (GLfloat) - 0.162211,
-       (GLfloat) - 0.973270, (GLfloat) 0.162582, (GLfloat) - 0.162212,
-       (GLfloat) - 0.985759, (GLfloat) 0.022905, (GLfloat) - 0.166594,
-       (GLfloat) - 0.986250, (GLfloat) 0.017105, (GLfloat) - 0.164375,
-       (GLfloat) - 0.856160, (GLfloat) 0.009467, (GLfloat) - 0.516625,
-       (GLfloat) - 0.857388, (GLfloat) 0.015640, (GLfloat) - 0.514433,
-       (GLfloat) - 0.845633, (GLfloat) 0.165746, (GLfloat) 0.507379,
-       (GLfloat) - 0.845632, (GLfloat) 0.165746, (GLfloat) 0.507380,
-       (GLfloat) - 0.856159, (GLfloat) 0.009466, (GLfloat) 0.516625,
-       (GLfloat) - 0.857388, (GLfloat) 0.015640, (GLfloat) 0.514433,
-       (GLfloat) - 0.985759, (GLfloat) 0.022905, (GLfloat) 0.166594,
-       (GLfloat) - 0.986250, (GLfloat) 0.017105, (GLfloat) 0.164375,
-       (GLfloat) - 0.973270, (GLfloat) 0.162582, (GLfloat) 0.162211,
-       (GLfloat) - 0.973270, (GLfloat) 0.162582, (GLfloat) 0.162212,
-       (GLfloat) - 0.283620, (GLfloat) - 0.936578, (GLfloat) 0.205866,
-       (GLfloat) - 0.264055, (GLfloat) - 0.947923, (GLfloat) 0.178091,
-       (GLfloat) - 0.315105, (GLfloat) - 0.946548, (GLfloat) 0.068965,
-       (GLfloat) - 0.304029, (GLfloat) - 0.949849, (GLfloat) 0.073162,
-       (GLfloat) - 0.789686, (GLfloat) - 0.598377, (GLfloat) 0.135427,
-       (GLfloat) - 0.809934, (GLfloat) - 0.566659, (GLfloat) 0.151344,
-       (GLfloat) - 0.656718, (GLfloat) - 0.640090, (GLfloat) 0.398755,
-       (GLfloat) - 0.671170, (GLfloat) - 0.608876, (GLfloat) 0.422848,
-       (GLfloat) - 0.264055, (GLfloat) - 0.947923, (GLfloat) - 0.178092,
-       (GLfloat) - 0.283620, (GLfloat) - 0.936578, (GLfloat) - 0.205866,
-       (GLfloat) - 0.656718, (GLfloat) - 0.640091, (GLfloat) - 0.398755,
-       (GLfloat) - 0.671170, (GLfloat) - 0.608876, (GLfloat) - 0.422848,
-       (GLfloat) - 0.809934, (GLfloat) - 0.566659, (GLfloat) - 0.151344,
-       (GLfloat) - 0.789686, (GLfloat) - 0.598377, (GLfloat) - 0.135427,
-       (GLfloat) - 0.304029, (GLfloat) - 0.949849, (GLfloat) - 0.073163,
-       (GLfloat) - 0.315105, (GLfloat) - 0.946548, (GLfloat) - 0.068965,
-       (GLfloat) - 0.507380, (GLfloat) 0.165746, (GLfloat) 0.845632,
-       (GLfloat) - 0.507379, (GLfloat) 0.165746, (GLfloat) 0.845633,
-       (GLfloat) - 0.162211, (GLfloat) 0.162582, (GLfloat) 0.973270,
-       (GLfloat) - 0.162212, (GLfloat) 0.162582, (GLfloat) 0.973270,
-       (GLfloat) - 0.166594, (GLfloat) 0.022905, (GLfloat) 0.985759,
-       (GLfloat) - 0.164375, (GLfloat) 0.017105, (GLfloat) 0.986250,
-       (GLfloat) - 0.516625, (GLfloat) 0.009466, (GLfloat) 0.856159,
-       (GLfloat) - 0.514433, (GLfloat) 0.015640, (GLfloat) 0.857388,
-       (GLfloat) 0.507380, (GLfloat) 0.165746, (GLfloat) 0.845632,
-       (GLfloat) 0.507379, (GLfloat) 0.165746, (GLfloat) 0.845633,
-       (GLfloat) 0.516625, (GLfloat) 0.009467, (GLfloat) 0.856160,
-       (GLfloat) 0.514433, (GLfloat) 0.015640, (GLfloat) 0.857388,
-       (GLfloat) 0.166594, (GLfloat) 0.022905, (GLfloat) 0.985759,
-       (GLfloat) 0.164375, (GLfloat) 0.017105, (GLfloat) 0.986250,
-       (GLfloat) 0.162211, (GLfloat) 0.162582, (GLfloat) 0.973270,
-       (GLfloat) 0.162212, (GLfloat) 0.162582, (GLfloat) 0.973270,
-       (GLfloat) 0.205866, (GLfloat) - 0.936578, (GLfloat) 0.283620,
-       (GLfloat) 0.178092, (GLfloat) - 0.947923, (GLfloat) 0.264055,
-       (GLfloat) 0.068965, (GLfloat) - 0.946548, (GLfloat) 0.315105,
-       (GLfloat) 0.073163, (GLfloat) - 0.949849, (GLfloat) 0.304029,
-       (GLfloat) 0.135427, (GLfloat) - 0.598377, (GLfloat) 0.789686,
-       (GLfloat) 0.151344, (GLfloat) - 0.566659, (GLfloat) 0.809934,
-       (GLfloat) 0.398755, (GLfloat) - 0.640091, (GLfloat) 0.656718,
-       (GLfloat) 0.422848, (GLfloat) - 0.608876, (GLfloat) 0.671170,
-       (GLfloat) - 0.178091, (GLfloat) - 0.947923, (GLfloat) 0.264055,
-       (GLfloat) - 0.205866, (GLfloat) - 0.936578, (GLfloat) 0.283620,
-       (GLfloat) - 0.398755, (GLfloat) - 0.640090, (GLfloat) 0.656718,
-       (GLfloat) - 0.422848, (GLfloat) - 0.608876, (GLfloat) 0.671170,
-       (GLfloat) - 0.151344, (GLfloat) - 0.566659, (GLfloat) 0.809934,
-       (GLfloat) - 0.135427, (GLfloat) - 0.598377, (GLfloat) 0.789686,
-       (GLfloat) - 0.073162, (GLfloat) - 0.949849, (GLfloat) 0.304029,
-       (GLfloat) - 0.068965, (GLfloat) - 0.946548, (GLfloat) 0.315105,
-       (GLfloat) 0.135802, (GLfloat) - 0.982944, (GLfloat) - 0.124011,
-       (GLfloat) 0.124011, (GLfloat) - 0.982944, (GLfloat) - 0.135802,
-       (GLfloat) 0.043834, (GLfloat) - 0.993006, (GLfloat) - 0.109621,
-       (GLfloat) 0.039656, (GLfloat) - 0.992607, (GLfloat) - 0.114709,
-       (GLfloat) 0.030163, (GLfloat) - 0.998998, (GLfloat) - 0.033079,
-       (GLfloat) 0.033079, (GLfloat) - 0.998998, (GLfloat) - 0.030163,
-       (GLfloat) 0.109621, (GLfloat) - 0.993006, (GLfloat) - 0.043834,
-       (GLfloat) 0.114709, (GLfloat) - 0.992607, (GLfloat) - 0.039656,
-       (GLfloat) - 0.124011, (GLfloat) - 0.982944, (GLfloat) - 0.135802,
-       (GLfloat) - 0.135802, (GLfloat) - 0.982944, (GLfloat) - 0.124011,
-       (GLfloat) - 0.109621, (GLfloat) - 0.993006, (GLfloat) - 0.043834,
-       (GLfloat) - 0.114709, (GLfloat) - 0.992607, (GLfloat) - 0.039656,
-       (GLfloat) - 0.033079, (GLfloat) - 0.998998, (GLfloat) - 0.030163,
-       (GLfloat) - 0.030163, (GLfloat) - 0.998998, (GLfloat) - 0.033079,
-       (GLfloat) - 0.043834, (GLfloat) - 0.993006, (GLfloat) - 0.109621,
-       (GLfloat) - 0.039656, (GLfloat) - 0.992607, (GLfloat) - 0.114709,
-       (GLfloat) - 0.135802, (GLfloat) - 0.982944, (GLfloat) 0.124011,
-       (GLfloat) - 0.124011, (GLfloat) - 0.982944, (GLfloat) 0.135802,
-       (GLfloat) - 0.043834, (GLfloat) - 0.993006, (GLfloat) 0.109621,
-       (GLfloat) - 0.039656, (GLfloat) - 0.992607, (GLfloat) 0.114709,
-       (GLfloat) - 0.030163, (GLfloat) - 0.998998, (GLfloat) 0.033079,
-       (GLfloat) - 0.033079, (GLfloat) - 0.998998, (GLfloat) 0.030163,
-       (GLfloat) - 0.109621, (GLfloat) - 0.993006, (GLfloat) 0.043834,
-       (GLfloat) - 0.114709, (GLfloat) - 0.992607, (GLfloat) 0.039656,
-       (GLfloat) 0.124011, (GLfloat) - 0.982944, (GLfloat) 0.135802,
-       (GLfloat) 0.135802, (GLfloat) - 0.982944, (GLfloat) 0.124011,
-       (GLfloat) 0.109621, (GLfloat) - 0.993006, (GLfloat) 0.043834,
-       (GLfloat) 0.114709, (GLfloat) - 0.992607, (GLfloat) 0.039656,
-       (GLfloat) 0.033079, (GLfloat) - 0.998998, (GLfloat) 0.030163,
-       (GLfloat) 0.030163, (GLfloat) - 0.998998, (GLfloat) 0.033079,
-       (GLfloat) 0.043834, (GLfloat) - 0.993006, (GLfloat) 0.109621,
-       (GLfloat) 0.039656, (GLfloat) - 0.992607, (GLfloat) 0.114709,
-};
-
-static unsigned short int s1_1_POLS[] =
-{
-      3, 12, 76, 74, 1, 3, 12, 74, 82, 1, 3, 76, 22, 78, 1, 3, 78, 74, 76, 1,
-      3, 78, 20, 80, 1, 3, 80, 74, 78, 1, 3, 80, 28, 82, 1, 3, 82, 74, 80, 1,
-      3, 13, 84, 77, 1, 3, 13, 77, 88, 1, 3, 84, 24, 86, 1, 3, 86, 77, 84, 1,
-      3, 86, 20, 78, 1, 3, 78, 77, 86, 1, 3, 78, 22, 88, 1, 3, 88, 77, 78, 1,
-      3, 14, 90, 85, 1, 3, 14, 85, 93, 1, 3, 26, 91, 85, 1, 3, 26, 85, 90, 1,
-      3, 20, 86, 85, 1, 3, 20, 85, 91, 1, 3, 86, 24, 93, 1, 3, 93, 85, 86, 1,
-      3, 15, 95, 79, 1, 3, 15, 79, 97, 1, 3, 95, 28, 80, 1, 3, 80, 79, 95, 1,
-      3, 20, 91, 79, 1, 3, 20, 79, 80, 1, 3, 26, 97, 79, 1, 3, 26, 79, 91, 1,
-    3, 13, 99, 83, 1, 3, 13, 83, 84, 1, 3, 99, 30, 101, 1, 3, 101, 83, 99, 1,
-3, 101, 23, 102, 1, 3, 102, 83, 101, 1, 3, 102, 24, 84, 1, 3, 84, 83, 102, 1,
-       3, 16, 104, 100, 1, 3, 16, 100, 108, 1, 3, 104, 32, 106, 1, 3, 106, 100, 104, 1,
-       3, 106, 23, 101, 1, 3, 101, 100, 106, 1, 3, 101, 30, 108, 1, 3, 108, 100, 101, 1,
-       3, 17, 110, 105, 1, 3, 17, 105, 113, 1, 3, 33, 111, 105, 1, 3, 33, 105, 110, 1,
-       3, 23, 106, 105, 1, 3, 23, 105, 111, 1, 3, 106, 32, 113, 1, 3, 113, 105, 106, 1,
-   3, 14, 93, 92, 1, 3, 14, 92, 114, 1, 3, 93, 24, 102, 1, 3, 102, 92, 93, 1,
-  3, 23, 111, 92, 1, 3, 23, 92, 102, 1, 3, 33, 114, 92, 1, 3, 33, 92, 111, 1,
-       3, 16, 116, 103, 1, 3, 16, 103, 104, 1, 3, 116, 35, 118, 1, 3, 118, 103, 116, 1,
-       3, 118, 31, 119, 1, 3, 119, 103, 118, 1, 3, 119, 32, 104, 1, 3, 104, 103, 119, 1,
-       3, 18, 121, 117, 1, 3, 18, 117, 125, 1, 3, 121, 36, 123, 1, 3, 123, 117, 121, 1,
-       3, 123, 31, 118, 1, 3, 118, 117, 123, 1, 3, 118, 35, 125, 1, 3, 125, 117, 118, 1,
-       3, 19, 127, 122, 1, 3, 19, 122, 130, 1, 3, 37, 128, 122, 1, 3, 37, 122, 127, 1,
-       3, 31, 123, 122, 1, 3, 31, 122, 128, 1, 3, 123, 36, 130, 1, 3, 130, 122, 123, 1,
-       3, 17, 113, 112, 1, 3, 17, 112, 131, 1, 3, 113, 32, 119, 1, 3, 119, 112, 113, 1,
-       3, 31, 128, 112, 1, 3, 31, 112, 119, 1, 3, 37, 131, 112, 1, 3, 37, 112, 128, 1,
-       3, 18, 133, 120, 1, 3, 18, 120, 121, 1, 3, 133, 39, 134, 1, 3, 134, 120, 133, 1,
-       3, 134, 27, 135, 1, 3, 135, 120, 134, 1, 3, 135, 36, 121, 1, 3, 121, 120, 135, 1,
-   3, 12, 82, 81, 1, 3, 12, 81, 138, 1, 3, 82, 28, 136, 1, 3, 136, 81, 82, 1,
-       3, 136, 27, 134, 1, 3, 134, 81, 136, 1, 3, 134, 39, 138, 1, 3, 138, 81, 134, 1,
-   3, 15, 139, 94, 1, 3, 15, 94, 95, 1, 3, 40, 140, 94, 1, 3, 40, 94, 139, 1,
-  3, 27, 136, 94, 1, 3, 27, 94, 140, 1, 3, 136, 28, 95, 1, 3, 95, 94, 136, 1,
-       3, 19, 130, 129, 1, 3, 19, 129, 141, 1, 3, 130, 36, 135, 1, 3, 135, 129, 130, 1,
-       3, 27, 140, 129, 1, 3, 27, 129, 135, 1, 3, 40, 141, 129, 1, 3, 40, 129, 140, 1,
- 3, 14, 114, 89, 1, 3, 14, 89, 90, 1, 3, 114, 33, 142, 1, 3, 142, 89, 114, 1,
-  3, 25, 143, 89, 1, 3, 25, 89, 142, 1, 3, 143, 26, 90, 1, 3, 90, 89, 143, 1,
-       3, 17, 131, 109, 1, 3, 17, 109, 110, 1, 3, 131, 37, 144, 1, 3, 144, 109, 131, 1,
-       3, 25, 142, 109, 1, 3, 25, 109, 144, 1, 3, 142, 33, 110, 1, 3, 110, 109, 142, 1,
-       3, 19, 141, 126, 1, 3, 19, 126, 127, 1, 3, 141, 40, 145, 1, 3, 145, 126, 141, 1,
-       3, 25, 144, 126, 1, 3, 25, 126, 145, 1, 3, 144, 37, 127, 1, 3, 127, 126, 144, 1,
-   3, 15, 97, 96, 1, 3, 15, 96, 139, 1, 3, 97, 26, 143, 1, 3, 143, 96, 97, 1,
-3, 25, 145, 96, 1, 3, 25, 96, 143, 1, 3, 145, 40, 139, 1, 3, 139, 96, 145, 1,
-  3, 76, 12, 146, 1, 3, 146, 75, 76, 1, 3, 41, 148, 75, 1, 3, 41, 75, 146, 1,
- 3, 148, 21, 149, 1, 3, 149, 75, 148, 1, 3, 22, 76, 75, 1, 3, 22, 75, 149, 1,
-3, 8, 151, 147, 1, 3, 8, 147, 155, 1, 3, 151, 43, 153, 1, 3, 153, 147, 151, 1,
-       3, 21, 148, 147, 1, 3, 21, 147, 153, 1, 3, 148, 41, 155, 1, 3, 155, 147, 148, 1,
-       3, 11, 157, 152, 1, 3, 11, 152, 160, 1, 3, 157, 44, 158, 1, 3, 158, 152, 157, 1,
-       3, 21, 153, 152, 1, 3, 21, 152, 158, 1, 3, 153, 43, 160, 1, 3, 160, 152, 153, 1,
-   3, 161, 13, 88, 1, 3, 88, 87, 161, 1, 3, 22, 149, 87, 1, 3, 22, 87, 88, 1,
-3, 149, 21, 158, 1, 3, 158, 87, 149, 1, 3, 44, 161, 87, 1, 3, 44, 87, 158, 1,
-       3, 133, 18, 162, 1, 3, 162, 132, 133, 1, 3, 45, 164, 132, 1, 3, 45, 132, 162, 1,
-       3, 164, 38, 165, 1, 3, 165, 132, 164, 1, 3, 39, 133, 132, 1, 3, 39, 132, 165, 1,
-3, 9, 167, 163, 1, 3, 9, 163, 170, 1, 3, 167, 47, 168, 1, 3, 168, 163, 167, 1,
-       3, 38, 164, 163, 1, 3, 38, 163, 168, 1, 3, 164, 45, 170, 1, 3, 170, 163, 164, 1,
-3, 8, 155, 154, 1, 3, 8, 154, 173, 1, 3, 155, 41, 171, 1, 3, 171, 154, 155, 1,
-       3, 38, 168, 154, 1, 3, 38, 154, 171, 1, 3, 168, 47, 173, 1, 3, 173, 154, 168, 1,
-       3, 146, 12, 138, 1, 3, 138, 137, 146, 1, 3, 39, 165, 137, 1, 3, 39, 137, 138, 1,
-       3, 165, 38, 171, 1, 3, 171, 137, 165, 1, 3, 41, 146, 137, 1, 3, 41, 137, 171, 1,
-       3, 177, 16, 108, 1, 3, 108, 107, 177, 1, 3, 30, 174, 107, 1, 3, 30, 107, 108, 1,
-       3, 174, 29, 176, 1, 3, 176, 107, 174, 1, 3, 50, 177, 107, 1, 3, 50, 107, 176, 1,
-  3, 99, 13, 161, 1, 3, 161, 98, 99, 1, 3, 44, 178, 98, 1, 3, 44, 98, 161, 1,
- 3, 178, 29, 174, 1, 3, 174, 98, 178, 1, 3, 30, 99, 98, 1, 3, 30, 98, 174, 1,
-       3, 11, 180, 156, 1, 3, 11, 156, 157, 1, 3, 180, 49, 181, 1, 3, 181, 156, 180, 1,
-       3, 29, 178, 156, 1, 3, 29, 156, 181, 1, 3, 178, 44, 157, 1, 3, 157, 156, 178, 1,
-       3, 10, 183, 175, 1, 3, 10, 175, 185, 1, 3, 183, 50, 176, 1, 3, 176, 175, 183, 1,
-       3, 29, 181, 175, 1, 3, 29, 175, 176, 1, 3, 181, 49, 185, 1, 3, 185, 175, 181, 1,
-       3, 162, 18, 125, 1, 3, 125, 124, 162, 1, 3, 35, 186, 124, 1, 3, 35, 124, 125, 1,
-       3, 186, 34, 187, 1, 3, 187, 124, 186, 1, 3, 45, 162, 124, 1, 3, 45, 124, 187, 1,
-       3, 116, 16, 177, 1, 3, 177, 115, 116, 1, 3, 50, 188, 115, 1, 3, 50, 115, 177, 1,
-       3, 188, 34, 186, 1, 3, 186, 115, 188, 1, 3, 35, 116, 115, 1, 3, 35, 115, 186, 1,
-       3, 10, 190, 182, 1, 3, 10, 182, 183, 1, 3, 190, 52, 191, 1, 3, 191, 182, 190, 1,
-       3, 34, 188, 182, 1, 3, 34, 182, 191, 1, 3, 188, 50, 183, 1, 3, 183, 182, 188, 1,
-3, 9, 170, 169, 1, 3, 9, 169, 193, 1, 3, 170, 45, 187, 1, 3, 187, 169, 170, 1,
-       3, 34, 191, 169, 1, 3, 34, 169, 187, 1, 3, 191, 52, 193, 1, 3, 193, 169, 191, 1,
-       3, 201, 1, 196, 1, 3, 196, 194, 201, 1, 3, 54, 198, 194, 1, 3, 54, 194, 196, 1,
-       3, 198, 46, 199, 1, 3, 199, 194, 198, 1, 3, 56, 201, 194, 1, 3, 56, 194, 199, 1,
-       3, 206, 3, 203, 1, 3, 203, 197, 206, 1, 3, 55, 204, 197, 1, 3, 55, 197, 203, 1,
-       3, 204, 46, 198, 1, 3, 198, 197, 204, 1, 3, 54, 206, 197, 1, 3, 54, 197, 198, 1,
-3, 8, 173, 172, 1, 3, 8, 172, 208, 1, 3, 173, 47, 207, 1, 3, 207, 172, 173, 1,
-       3, 46, 204, 172, 1, 3, 46, 172, 207, 1, 3, 204, 55, 208, 1, 3, 208, 172, 204, 1,
-3, 9, 209, 166, 1, 3, 9, 166, 167, 1, 3, 209, 56, 199, 1, 3, 199, 166, 209, 1,
-       3, 46, 207, 166, 1, 3, 46, 166, 199, 1, 3, 207, 47, 167, 1, 3, 167, 166, 207, 1,
-       3, 214, 1, 201, 1, 3, 201, 200, 214, 1, 3, 56, 210, 200, 1, 3, 56, 200, 201, 1,
-       3, 210, 51, 212, 1, 3, 212, 200, 210, 1, 3, 59, 214, 200, 1, 3, 59, 200, 212, 1,
-3, 9, 193, 192, 1, 3, 9, 192, 209, 1, 3, 193, 52, 215, 1, 3, 215, 192, 193, 1,
-       3, 51, 210, 192, 1, 3, 51, 192, 215, 1, 3, 210, 56, 209, 1, 3, 209, 192, 210, 1,
-       3, 10, 216, 189, 1, 3, 10, 189, 190, 1, 3, 216, 57, 217, 1, 3, 217, 189, 216, 1,
-       3, 51, 215, 189, 1, 3, 51, 189, 217, 1, 3, 215, 52, 190, 1, 3, 190, 189, 215, 1,
-       3, 221, 0, 219, 1, 3, 219, 211, 221, 1, 3, 59, 212, 211, 1, 3, 59, 211, 219, 1,
-       3, 212, 51, 217, 1, 3, 217, 211, 212, 1, 3, 57, 221, 211, 1, 3, 57, 211, 217, 1,
-       3, 226, 0, 221, 1, 3, 221, 220, 226, 1, 3, 57, 222, 220, 1, 3, 57, 220, 221, 1,
-       3, 222, 48, 224, 1, 3, 224, 220, 222, 1, 3, 62, 226, 220, 1, 3, 62, 220, 224, 1,
-       3, 10, 185, 184, 1, 3, 10, 184, 216, 1, 3, 185, 49, 227, 1, 3, 227, 184, 185, 1,
-       3, 48, 222, 184, 1, 3, 48, 184, 227, 1, 3, 222, 57, 216, 1, 3, 216, 184, 222, 1,
-       3, 11, 228, 179, 1, 3, 11, 179, 180, 1, 3, 228, 60, 229, 1, 3, 229, 179, 228, 1,
-       3, 48, 227, 179, 1, 3, 48, 179, 229, 1, 3, 227, 49, 180, 1, 3, 180, 179, 227, 1,
-       3, 233, 2, 231, 1, 3, 231, 223, 233, 1, 3, 62, 224, 223, 1, 3, 62, 223, 231, 1,
-       3, 224, 48, 229, 1, 3, 229, 223, 224, 1, 3, 60, 233, 223, 1, 3, 60, 223, 229, 1,
-       3, 237, 2, 233, 1, 3, 233, 232, 237, 1, 3, 60, 234, 232, 1, 3, 60, 232, 233, 1,
-       3, 234, 42, 235, 1, 3, 235, 232, 234, 1, 3, 64, 237, 232, 1, 3, 64, 232, 235, 1,
-       3, 11, 160, 159, 1, 3, 11, 159, 228, 1, 3, 160, 43, 238, 1, 3, 238, 159, 160, 1,
-       3, 42, 234, 159, 1, 3, 42, 159, 238, 1, 3, 234, 60, 228, 1, 3, 228, 159, 234, 1,
-3, 8, 208, 150, 1, 3, 8, 150, 151, 1, 3, 208, 55, 239, 1, 3, 239, 150, 208, 1,
-       3, 42, 238, 150, 1, 3, 42, 150, 239, 1, 3, 238, 43, 151, 1, 3, 151, 150, 238, 1,
-       3, 203, 3, 241, 1, 3, 241, 202, 203, 1, 3, 64, 235, 202, 1, 3, 64, 202, 241, 1,
-       3, 235, 42, 239, 1, 3, 239, 202, 235, 1, 3, 55, 203, 202, 1, 3, 55, 202, 239, 1,
-3, 2, 237, 236, 1, 3, 2, 236, 245, 1, 3, 237, 64, 242, 1, 3, 242, 236, 237, 1,
-       3, 242, 63, 244, 1, 3, 244, 236, 242, 1, 3, 244, 68, 245, 1, 3, 245, 236, 244, 1,
-3, 3, 246, 240, 1, 3, 3, 240, 241, 1, 3, 246, 65, 248, 1, 3, 248, 240, 246, 1,
-       3, 248, 63, 242, 1, 3, 242, 240, 248, 1, 3, 242, 64, 241, 1, 3, 241, 240, 242, 1,
-3, 4, 250, 247, 1, 3, 4, 247, 253, 1, 3, 67, 251, 247, 1, 3, 67, 247, 250, 1,
-       3, 63, 248, 247, 1, 3, 63, 247, 251, 1, 3, 248, 65, 253, 1, 3, 253, 247, 248, 1,
-3, 7, 255, 243, 1, 3, 7, 243, 257, 1, 3, 255, 68, 244, 1, 3, 244, 243, 255, 1,
-       3, 63, 251, 243, 1, 3, 63, 243, 244, 1, 3, 67, 257, 243, 1, 3, 67, 243, 251, 1,
-3, 3, 206, 205, 1, 3, 3, 205, 246, 1, 3, 206, 54, 258, 1, 3, 258, 205, 206, 1,
-       3, 258, 53, 259, 1, 3, 259, 205, 258, 1, 3, 259, 65, 246, 1, 3, 246, 205, 259, 1,
-3, 1, 260, 195, 1, 3, 1, 195, 196, 1, 3, 260, 69, 262, 1, 3, 262, 195, 260, 1,
-       3, 262, 53, 258, 1, 3, 258, 195, 262, 1, 3, 258, 54, 196, 1, 3, 196, 195, 258, 1,
-3, 5, 264, 261, 1, 3, 5, 261, 267, 1, 3, 70, 265, 261, 1, 3, 70, 261, 264, 1,
-       3, 53, 262, 261, 1, 3, 53, 261, 265, 1, 3, 262, 69, 267, 1, 3, 267, 261, 262, 1,
-3, 4, 253, 252, 1, 3, 4, 252, 268, 1, 3, 253, 65, 259, 1, 3, 259, 252, 253, 1,
-       3, 53, 265, 252, 1, 3, 53, 252, 259, 1, 3, 70, 268, 252, 1, 3, 70, 252, 265, 1,
-3, 1, 214, 213, 1, 3, 1, 213, 260, 1, 3, 214, 59, 269, 1, 3, 269, 213, 214, 1,
-       3, 269, 58, 270, 1, 3, 270, 213, 269, 1, 3, 270, 69, 260, 1, 3, 260, 213, 270, 1,
-3, 0, 271, 218, 1, 3, 0, 218, 219, 1, 3, 271, 71, 273, 1, 3, 273, 218, 271, 1,
-       3, 273, 58, 269, 1, 3, 269, 218, 273, 1, 3, 269, 59, 219, 1, 3, 219, 218, 269, 1,
-3, 6, 275, 272, 1, 3, 6, 272, 278, 1, 3, 72, 276, 272, 1, 3, 72, 272, 275, 1,
-       3, 58, 273, 272, 1, 3, 58, 272, 276, 1, 3, 273, 71, 278, 1, 3, 278, 272, 273, 1,
-3, 5, 267, 266, 1, 3, 5, 266, 279, 1, 3, 267, 69, 270, 1, 3, 270, 266, 267, 1,
-       3, 58, 276, 266, 1, 3, 58, 266, 270, 1, 3, 72, 279, 266, 1, 3, 72, 266, 276, 1,
-3, 0, 226, 225, 1, 3, 0, 225, 271, 1, 3, 226, 62, 280, 1, 3, 280, 225, 226, 1,
-       3, 280, 61, 281, 1, 3, 281, 225, 280, 1, 3, 281, 71, 271, 1, 3, 271, 225, 281, 1,
-3, 2, 245, 230, 1, 3, 2, 230, 231, 1, 3, 245, 68, 282, 1, 3, 282, 230, 245, 1,
-       3, 282, 61, 280, 1, 3, 280, 230, 282, 1, 3, 280, 62, 231, 1, 3, 231, 230, 280, 1,
-3, 7, 283, 254, 1, 3, 7, 254, 255, 1, 3, 73, 284, 254, 1, 3, 73, 254, 283, 1,
-       3, 61, 282, 254, 1, 3, 61, 254, 284, 1, 3, 282, 68, 255, 1, 3, 255, 254, 282, 1,
-3, 6, 278, 277, 1, 3, 6, 277, 285, 1, 3, 278, 71, 281, 1, 3, 281, 277, 278, 1,
-       3, 61, 284, 277, 1, 3, 61, 277, 281, 1, 3, 73, 285, 277, 1, 3, 73, 277, 284, 1,
-3, 4, 268, 249, 1, 3, 4, 249, 250, 1, 3, 268, 70, 286, 1, 3, 286, 249, 268, 1,
-       3, 66, 287, 249, 1, 3, 66, 249, 286, 1, 3, 287, 67, 250, 1, 3, 250, 249, 287, 1,
-3, 5, 279, 263, 1, 3, 5, 263, 264, 1, 3, 279, 72, 288, 1, 3, 288, 263, 279, 1,
-       3, 66, 286, 263, 1, 3, 66, 263, 288, 1, 3, 286, 70, 264, 1, 3, 264, 263, 286, 1,
-3, 6, 285, 274, 1, 3, 6, 274, 275, 1, 3, 285, 73, 289, 1, 3, 289, 274, 285, 1,
-       3, 66, 288, 274, 1, 3, 66, 274, 289, 1, 3, 288, 72, 275, 1, 3, 275, 274, 288, 1,
-3, 7, 257, 256, 1, 3, 7, 256, 283, 1, 3, 257, 67, 287, 1, 3, 287, 256, 257, 1,
-       3, 66, 289, 256, 1, 3, 66, 256, 287, 1, 3, 289, 73, 283, 1, 3, 283, 256, 289, 1,
-
-       0
-};
-
-struct lwo  LWO_s1_1 =
-{
-       290,                    /* number of points */
-       s1_1_PNTS, s1_1_normals, s1_1_POLS, 0L
-};
-
-#endif /* USE_GL */
-
-/* End of s1_1.c */
diff --git a/hacks/glx/s1_2.c b/hacks/glx/s1_2.c
deleted file mode 100644 (file)
index bb7a35b..0000000
+++ /dev/null
@@ -1,1057 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)s1_2.c       4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Points, polygons, and normal vectors to render "s1_2" in 3D.
- *
- * Generated by lw2ogl.  Link this with your program but do
- * not edit by hand.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include "buildlwo.h"
-
-static GLfloat s1_2_PNTS[] =
-{
-       (GLfloat) 0.316229, (GLfloat) 0.114342, (GLfloat) - 0.309219,
-       (GLfloat) 0.316229, (GLfloat) 0.114342, (GLfloat) - 0.690781,
-       (GLfloat) 0.697100, (GLfloat) 0.103031, (GLfloat) - 0.309219,
-       (GLfloat) 0.697100, (GLfloat) 0.103031, (GLfloat) - 0.690781,
-       (GLfloat) 0.638667, (GLfloat) 0.007537, (GLfloat) - 0.638667,
-       (GLfloat) 0.361333, (GLfloat) 0.007537, (GLfloat) - 0.638667,
-       (GLfloat) 0.361333, (GLfloat) 0.007537, (GLfloat) - 0.361333,
-       (GLfloat) 0.638667, (GLfloat) 0.007537, (GLfloat) - 0.361333,
-       (GLfloat) 0.813840, (GLfloat) 0.310563, (GLfloat) - 0.755750,
-       (GLfloat) 0.308193, (GLfloat) 0.377118, (GLfloat) - 0.755750,
-       (GLfloat) 0.308193, (GLfloat) 0.377118, (GLfloat) - 0.244250,
-       (GLfloat) 0.813840, (GLfloat) 0.310563, (GLfloat) - 0.244250,
-       (GLfloat) 0.865458, (GLfloat) 0.513412, (GLfloat) - 0.690781,
-       (GLfloat) 0.865458, (GLfloat) 0.513412, (GLfloat) - 0.309219,
-       (GLfloat) 0.858509, (GLfloat) 0.615264, (GLfloat) - 0.361333,
-       (GLfloat) 0.858509, (GLfloat) 0.615264, (GLfloat) - 0.638667,
-       (GLfloat) 0.500319, (GLfloat) 0.618731, (GLfloat) - 0.309219,
-       (GLfloat) 0.596285, (GLfloat) 0.705555, (GLfloat) - 0.361333,
-       (GLfloat) 0.500319, (GLfloat) 0.618731, (GLfloat) - 0.690781,
-       (GLfloat) 0.596285, (GLfloat) 0.705555, (GLfloat) - 0.638667,
-       (GLfloat) 0.945338, (GLfloat) 0.554869, (GLfloat) - 0.500000,
-       (GLfloat) 0.927845, (GLfloat) 0.404808, (GLfloat) - 0.500000,
-       (GLfloat) 0.931847, (GLfloat) 0.494263, (GLfloat) - 0.500000,
-       (GLfloat) 0.716506, (GLfloat) 0.632271, (GLfloat) - 0.258297,
-       (GLfloat) 0.883750, (GLfloat) 0.575062, (GLfloat) - 0.323141,
-       (GLfloat) 0.733407, (GLfloat) 0.677865, (GLfloat) - 0.500000,
-       (GLfloat) 0.897467, (GLfloat) 0.608935, (GLfloat) - 0.500000,
-       (GLfloat) 0.716506, (GLfloat) 0.632271, (GLfloat) - 0.741703,
-       (GLfloat) 0.883750, (GLfloat) 0.575062, (GLfloat) - 0.676859,
-       (GLfloat) 0.622584, (GLfloat) 0.465571, (GLfloat) - 0.187109,
-       (GLfloat) 0.682889, (GLfloat) 0.566071, (GLfloat) - 0.239844,
-       (GLfloat) 0.487673, (GLfloat) 0.709673, (GLfloat) - 0.500000,
-       (GLfloat) 0.548866, (GLfloat) 0.688331, (GLfloat) - 0.323141,
-       (GLfloat) 0.729578, (GLfloat) 0.666743, (GLfloat) - 0.322437,
-       (GLfloat) 0.317323, (GLfloat) 0.526334, (GLfloat) - 0.500000,
-       (GLfloat) 0.433930, (GLfloat) 0.637880, (GLfloat) - 0.500000,
-       (GLfloat) 0.548866, (GLfloat) 0.688331, (GLfloat) - 0.676859,
-       (GLfloat) 0.561689, (GLfloat) 0.724552, (GLfloat) - 0.500000,
-       (GLfloat) 0.622584, (GLfloat) 0.465571, (GLfloat) - 0.812891,
-       (GLfloat) 0.682889, (GLfloat) 0.566071, (GLfloat) - 0.760156,
-       (GLfloat) 0.729578, (GLfloat) 0.666743, (GLfloat) - 0.677562,
-       (GLfloat) 0.846442, (GLfloat) 0.421012, (GLfloat) - 0.729453,
-       (GLfloat) 0.835067, (GLfloat) 0.192357, (GLfloat) - 0.500000,
-       (GLfloat) 0.905776, (GLfloat) 0.298462, (GLfloat) - 0.500000,
-       (GLfloat) 0.846442, (GLfloat) 0.421012, (GLfloat) - 0.270547,
-       (GLfloat) 0.398726, (GLfloat) 0.510130, (GLfloat) - 0.729453,
-       (GLfloat) 0.523830, (GLfloat) 0.217409, (GLfloat) - 0.812891,
-       (GLfloat) 0.561017, (GLfloat) 0.343841, (GLfloat) - 0.848750,
-       (GLfloat) 0.523830, (GLfloat) 0.217409, (GLfloat) - 0.187109,
-       (GLfloat) 0.561017, (GLfloat) 0.343841, (GLfloat) - 0.151250,
-       (GLfloat) 0.398726, (GLfloat) 0.510130, (GLfloat) - 0.270547,
-       (GLfloat) 0.212593, (GLfloat) 0.242461, (GLfloat) - 0.500000,
-       (GLfloat) 0.216258, (GLfloat) 0.389219, (GLfloat) - 0.500000,
-       (GLfloat) 0.500666, (GLfloat) 0.037435, (GLfloat) - 0.741703,
-       (GLfloat) 0.506665, (GLfloat) 0.108686, (GLfloat) - 0.760156,
-       (GLfloat) 0.752070, (GLfloat) 0.199038, (GLfloat) - 0.729453,
-       (GLfloat) 0.295589, (GLfloat) 0.235781, (GLfloat) - 0.729453,
-       (GLfloat) 0.295589, (GLfloat) 0.235781, (GLfloat) - 0.270547,
-       (GLfloat) 0.259010, (GLfloat) 0.038206, (GLfloat) - 0.500000,
-       (GLfloat) 0.246980, (GLfloat) 0.116398, (GLfloat) - 0.500000,
-       (GLfloat) 0.752070, (GLfloat) 0.199038, (GLfloat) - 0.270547,
-       (GLfloat) 0.500666, (GLfloat) 0.037435, (GLfloat) - 0.258297,
-       (GLfloat) 0.506665, (GLfloat) 0.108686, (GLfloat) - 0.239844,
-       (GLfloat) 0.742322, (GLfloat) 0.036664, (GLfloat) - 0.500000,
-       (GLfloat) 0.766349, (GLfloat) 0.100974, (GLfloat) - 0.500000,
-       (GLfloat) 0.677491, (GLfloat) 0.037477, (GLfloat) - 0.676859,
-       (GLfloat) 0.500000, (GLfloat) - 0.010924, (GLfloat) - 0.500000,
-       (GLfloat) 0.677562, (GLfloat) 0.000839, (GLfloat) - 0.500000,
-       (GLfloat) 0.677491, (GLfloat) 0.037477, (GLfloat) - 0.323141,
-       (GLfloat) 0.323842, (GLfloat) 0.038608, (GLfloat) - 0.676859,
-       (GLfloat) 0.500000, (GLfloat) 0.000839, (GLfloat) - 0.677562,
-       (GLfloat) 0.323842, (GLfloat) 0.038608, (GLfloat) - 0.323141,
-       (GLfloat) 0.322437, (GLfloat) 0.000839, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) 0.000839, (GLfloat) - 0.322437,
-       (GLfloat) 0.925000, (GLfloat) 0.532253, (GLfloat) - 0.600125,
-       (GLfloat) 0.911045, (GLfloat) 0.457192, (GLfloat) - 0.613625,
-       (GLfloat) 0.915250, (GLfloat) 0.499050, (GLfloat) - 0.604062,
-       (GLfloat) 0.925000, (GLfloat) 0.532253, (GLfloat) - 0.399875,
-       (GLfloat) 0.940858, (GLfloat) 0.527164, (GLfloat) - 0.500000,
-       (GLfloat) 0.919197, (GLfloat) 0.584697, (GLfloat) - 0.587500,
-       (GLfloat) 0.929810, (GLfloat) 0.559801, (GLfloat) - 0.596406,
-       (GLfloat) 0.798138, (GLfloat) 0.572966, (GLfloat) - 0.733625,
-       (GLfloat) 0.877427, (GLfloat) 0.547520, (GLfloat) - 0.683563,
-       (GLfloat) 0.798138, (GLfloat) 0.572966, (GLfloat) - 0.266375,
-       (GLfloat) 0.877427, (GLfloat) 0.547520, (GLfloat) - 0.316437,
-       (GLfloat) 0.919197, (GLfloat) 0.584697, (GLfloat) - 0.412500,
-       (GLfloat) 0.929810, (GLfloat) 0.559801, (GLfloat) - 0.403594,
-       (GLfloat) 0.911045, (GLfloat) 0.457192, (GLfloat) - 0.386375,
-       (GLfloat) 0.915250, (GLfloat) 0.499050, (GLfloat) - 0.395938,
-       (GLfloat) 0.817112, (GLfloat) 0.642984, (GLfloat) - 0.409500,
-       (GLfloat) 0.884513, (GLfloat) 0.611054, (GLfloat) - 0.417500,
-       (GLfloat) 0.934249, (GLfloat) 0.580800, (GLfloat) - 0.500000,
-       (GLfloat) 0.807153, (GLfloat) 0.623277, (GLfloat) - 0.294000,
-       (GLfloat) 0.876135, (GLfloat) 0.598240, (GLfloat) - 0.339125,
-       (GLfloat) 0.807153, (GLfloat) 0.623277, (GLfloat) - 0.706000,
-       (GLfloat) 0.876135, (GLfloat) 0.598240, (GLfloat) - 0.660875,
-       (GLfloat) 0.817112, (GLfloat) 0.642984, (GLfloat) - 0.590500,
-       (GLfloat) 0.884513, (GLfloat) 0.611054, (GLfloat) - 0.582500,
-       (GLfloat) 0.764624, (GLfloat) 0.492766, (GLfloat) - 0.234875,
-       (GLfloat) 0.782472, (GLfloat) 0.537348, (GLfloat) - 0.257187,
-       (GLfloat) 0.607846, (GLfloat) 0.634036, (GLfloat) - 0.266375,
-       (GLfloat) 0.702992, (GLfloat) 0.603501, (GLfloat) - 0.249687,
-       (GLfloat) 0.807680, (GLfloat) 0.601112, (GLfloat) - 0.274594,
-       (GLfloat) 0.480984, (GLfloat) 0.674750, (GLfloat) - 0.399875,
-       (GLfloat) 0.528557, (GLfloat) 0.659482, (GLfloat) - 0.316437,
-       (GLfloat) 0.641688, (GLfloat) 0.680252, (GLfloat) - 0.294000,
-       (GLfloat) 0.625134, (GLfloat) 0.662855, (GLfloat) - 0.274594,
-       (GLfloat) 0.544994, (GLfloat) 0.546127, (GLfloat) - 0.234875,
-       (GLfloat) 0.583305, (GLfloat) 0.594795, (GLfloat) - 0.257187,
-       (GLfloat) 0.645973, (GLfloat) 0.701912, (GLfloat) - 0.409500,
-       (GLfloat) 0.650852, (GLfloat) 0.691510, (GLfloat) - 0.335375,
-       (GLfloat) 0.724816, (GLfloat) 0.652913, (GLfloat) - 0.278500,
-       (GLfloat) 0.529644, (GLfloat) 0.718831, (GLfloat) - 0.412500,
-       (GLfloat) 0.571915, (GLfloat) 0.702991, (GLfloat) - 0.339125,
-       (GLfloat) 0.806863, (GLfloat) 0.637791, (GLfloat) - 0.335375,
-       (GLfloat) 0.398573, (GLfloat) 0.581701, (GLfloat) - 0.386375,
-       (GLfloat) 0.450527, (GLfloat) 0.633092, (GLfloat) - 0.395938,
-       (GLfloat) 0.480984, (GLfloat) 0.674750, (GLfloat) - 0.600125,
-       (GLfloat) 0.465127, (GLfloat) 0.679839, (GLfloat) - 0.500000,
-       (GLfloat) 0.503003, (GLfloat) 0.704166, (GLfloat) - 0.403594,
-       (GLfloat) 0.607846, (GLfloat) 0.634036, (GLfloat) - 0.733625,
-       (GLfloat) 0.528557, (GLfloat) 0.659482, (GLfloat) - 0.683563,
-       (GLfloat) 0.529644, (GLfloat) 0.718831, (GLfloat) - 0.587500,
-       (GLfloat) 0.503003, (GLfloat) 0.704166, (GLfloat) - 0.596406,
-       (GLfloat) 0.398573, (GLfloat) 0.581701, (GLfloat) - 0.613625,
-       (GLfloat) 0.450527, (GLfloat) 0.633092, (GLfloat) - 0.604062,
-       (GLfloat) 0.645973, (GLfloat) 0.701912, (GLfloat) - 0.590500,
-       (GLfloat) 0.573201, (GLfloat) 0.718247, (GLfloat) - 0.582500,
-       (GLfloat) 0.515384, (GLfloat) 0.725027, (GLfloat) - 0.500000,
-       (GLfloat) 0.641688, (GLfloat) 0.680252, (GLfloat) - 0.706000,
-       (GLfloat) 0.571915, (GLfloat) 0.702991, (GLfloat) - 0.660875,
-       (GLfloat) 0.573201, (GLfloat) 0.718247, (GLfloat) - 0.417500,
-       (GLfloat) 0.544994, (GLfloat) 0.546127, (GLfloat) - 0.765125,
-       (GLfloat) 0.583305, (GLfloat) 0.594795, (GLfloat) - 0.742813,
-       (GLfloat) 0.702992, (GLfloat) 0.603501, (GLfloat) - 0.750313,
-       (GLfloat) 0.625134, (GLfloat) 0.662855, (GLfloat) - 0.725406,
-       (GLfloat) 0.807680, (GLfloat) 0.601112, (GLfloat) - 0.725406,
-       (GLfloat) 0.764624, (GLfloat) 0.492766, (GLfloat) - 0.765125,
-       (GLfloat) 0.782472, (GLfloat) 0.537348, (GLfloat) - 0.742813,
-       (GLfloat) 0.806863, (GLfloat) 0.637791, (GLfloat) - 0.664625,
-       (GLfloat) 0.724816, (GLfloat) 0.652913, (GLfloat) - 0.721500,
-       (GLfloat) 0.650852, (GLfloat) 0.691510, (GLfloat) - 0.664625,
-       (GLfloat) 0.732447, (GLfloat) 0.675074, (GLfloat) - 0.402250,
-       (GLfloat) 0.824871, (GLfloat) 0.643250, (GLfloat) - 0.500000,
-       (GLfloat) 0.640022, (GLfloat) 0.706898, (GLfloat) - 0.500000,
-       (GLfloat) 0.732447, (GLfloat) 0.675074, (GLfloat) - 0.597750,
-       (GLfloat) 0.856137, (GLfloat) 0.470533, (GLfloat) - 0.708313,
-       (GLfloat) 0.899707, (GLfloat) 0.356231, (GLfloat) - 0.635000,
-       (GLfloat) 0.907494, (GLfloat) 0.408859, (GLfloat) - 0.625156,
-       (GLfloat) 0.929348, (GLfloat) 0.452746, (GLfloat) - 0.500000,
-       (GLfloat) 0.851860, (GLfloat) 0.246808, (GLfloat) - 0.635000,
-       (GLfloat) 0.882792, (GLfloat) 0.301487, (GLfloat) - 0.639500,
-       (GLfloat) 0.899707, (GLfloat) 0.356231, (GLfloat) - 0.365000,
-       (GLfloat) 0.921826, (GLfloat) 0.352648, (GLfloat) - 0.500000,
-       (GLfloat) 0.722756, (GLfloat) 0.384892, (GLfloat) - 0.815000,
-       (GLfloat) 0.833350, (GLfloat) 0.366979, (GLfloat) - 0.747500,
-       (GLfloat) 0.722756, (GLfloat) 0.384892, (GLfloat) - 0.185000,
-       (GLfloat) 0.833350, (GLfloat) 0.366979, (GLfloat) - 0.252500,
-       (GLfloat) 0.907494, (GLfloat) 0.408859, (GLfloat) - 0.374844,
-       (GLfloat) 0.851860, (GLfloat) 0.246808, (GLfloat) - 0.365000,
-       (GLfloat) 0.882792, (GLfloat) 0.301487, (GLfloat) - 0.360500,
-       (GLfloat) 0.856137, (GLfloat) 0.470533, (GLfloat) - 0.291687,
-       (GLfloat) 0.453481, (GLfloat) 0.568361, (GLfloat) - 0.708313,
-       (GLfloat) 0.457330, (GLfloat) 0.427884, (GLfloat) - 0.815000,
-       (GLfloat) 0.500479, (GLfloat) 0.489876, (GLfloat) - 0.792031,
-       (GLfloat) 0.654809, (GLfloat) 0.519447, (GLfloat) - 0.784063,
-       (GLfloat) 0.405397, (GLfloat) 0.294044, (GLfloat) - 0.815000,
-       (GLfloat) 0.423113, (GLfloat) 0.361992, (GLfloat) - 0.825500,
-       (GLfloat) 0.590043, (GLfloat) 0.406388, (GLfloat) - 0.837500,
-       (GLfloat) 0.280379, (GLfloat) 0.456545, (GLfloat) - 0.635000,
-       (GLfloat) 0.346736, (GLfloat) 0.445797, (GLfloat) - 0.747500,
-       (GLfloat) 0.744688, (GLfloat) 0.441266, (GLfloat) - 0.792031,
-       (GLfloat) 0.673275, (GLfloat) 0.265703, (GLfloat) - 0.815000,
-       (GLfloat) 0.698920, (GLfloat) 0.325689, (GLfloat) - 0.825500,
-       (GLfloat) 0.654809, (GLfloat) 0.519447, (GLfloat) - 0.215937,
-       (GLfloat) 0.457330, (GLfloat) 0.427884, (GLfloat) - 0.185000,
-       (GLfloat) 0.500479, (GLfloat) 0.489876, (GLfloat) - 0.207969,
-       (GLfloat) 0.453481, (GLfloat) 0.568361, (GLfloat) - 0.291687,
-       (GLfloat) 0.744688, (GLfloat) 0.441266, (GLfloat) - 0.207969,
-       (GLfloat) 0.673275, (GLfloat) 0.265703, (GLfloat) - 0.185000,
-       (GLfloat) 0.698920, (GLfloat) 0.325689, (GLfloat) - 0.174500,
-       (GLfloat) 0.590043, (GLfloat) 0.406388, (GLfloat) - 0.162500,
-       (GLfloat) 0.280379, (GLfloat) 0.456545, (GLfloat) - 0.365000,
-       (GLfloat) 0.346736, (GLfloat) 0.445797, (GLfloat) - 0.252500,
-       (GLfloat) 0.405397, (GLfloat) 0.294044, (GLfloat) - 0.185000,
-       (GLfloat) 0.423113, (GLfloat) 0.361992, (GLfloat) - 0.174500,
-       (GLfloat) 0.380271, (GLfloat) 0.586148, (GLfloat) - 0.500000,
-       (GLfloat) 0.337674, (GLfloat) 0.522283, (GLfloat) - 0.625156,
-       (GLfloat) 0.337674, (GLfloat) 0.522283, (GLfloat) - 0.374844,
-       (GLfloat) 0.226812, (GLfloat) 0.312938, (GLfloat) - 0.365000,
-       (GLfloat) 0.239242, (GLfloat) 0.386194, (GLfloat) - 0.360500,
-       (GLfloat) 0.258260, (GLfloat) 0.460127, (GLfloat) - 0.500000,
-       (GLfloat) 0.226812, (GLfloat) 0.312938, (GLfloat) - 0.635000,
-       (GLfloat) 0.239242, (GLfloat) 0.386194, (GLfloat) - 0.639500,
-       (GLfloat) 0.400082, (GLfloat) 0.165542, (GLfloat) - 0.765125,
-       (GLfloat) 0.402616, (GLfloat) 0.069508, (GLfloat) - 0.733625,
-       (GLfloat) 0.402791, (GLfloat) 0.111771, (GLfloat) - 0.742813,
-       (GLfloat) 0.626577, (GLfloat) 0.153203, (GLfloat) - 0.765125,
-       (GLfloat) 0.513329, (GLfloat) 0.159372, (GLfloat) - 0.784063,
-       (GLfloat) 0.399335, (GLfloat) 0.227430, (GLfloat) - 0.792031,
-       (GLfloat) 0.249085, (GLfloat) 0.173768, (GLfloat) - 0.613625,
-       (GLfloat) 0.305709, (GLfloat) 0.170683, (GLfloat) - 0.708313,
-       (GLfloat) 0.777574, (GLfloat) 0.144976, (GLfloat) - 0.613625,
-       (GLfloat) 0.720950, (GLfloat) 0.148061, (GLfloat) - 0.708313,
-       (GLfloat) 0.648325, (GLfloat) 0.207388, (GLfloat) - 0.792031,
-       (GLfloat) 0.602715, (GLfloat) 0.067041, (GLfloat) - 0.733625,
-       (GLfloat) 0.610539, (GLfloat) 0.105601, (GLfloat) - 0.742813,
-       (GLfloat) 0.539336, (GLfloat) 0.279873, (GLfloat) - 0.837500,
-       (GLfloat) 0.784890, (GLfloat) 0.253894, (GLfloat) - 0.747500,
-       (GLfloat) 0.293781, (GLfloat) 0.305853, (GLfloat) - 0.747500,
-       (GLfloat) 0.233342, (GLfloat) 0.240791, (GLfloat) - 0.625156,
-       (GLfloat) 0.249085, (GLfloat) 0.173768, (GLfloat) - 0.386375,
-       (GLfloat) 0.230210, (GLfloat) 0.174796, (GLfloat) - 0.500000,
-       (GLfloat) 0.269217, (GLfloat) 0.071154, (GLfloat) - 0.600125,
-       (GLfloat) 0.264292, (GLfloat) 0.115884, (GLfloat) - 0.604062,
-       (GLfloat) 0.204489, (GLfloat) 0.315300, (GLfloat) - 0.500000,
-       (GLfloat) 0.293781, (GLfloat) 0.305853, (GLfloat) - 0.252500,
-       (GLfloat) 0.233342, (GLfloat) 0.240791, (GLfloat) - 0.374844,
-       (GLfloat) 0.269217, (GLfloat) 0.071154, (GLfloat) - 0.399875,
-       (GLfloat) 0.264292, (GLfloat) 0.115884, (GLfloat) - 0.395938,
-       (GLfloat) 0.400082, (GLfloat) 0.165542, (GLfloat) - 0.234875,
-       (GLfloat) 0.305709, (GLfloat) 0.170683, (GLfloat) - 0.291687,
-       (GLfloat) 0.399335, (GLfloat) 0.227430, (GLfloat) - 0.207969,
-       (GLfloat) 0.626577, (GLfloat) 0.153203, (GLfloat) - 0.234875,
-       (GLfloat) 0.513329, (GLfloat) 0.159372, (GLfloat) - 0.215937,
-       (GLfloat) 0.402616, (GLfloat) 0.069508, (GLfloat) - 0.266375,
-       (GLfloat) 0.402791, (GLfloat) 0.111771, (GLfloat) - 0.257187,
-       (GLfloat) 0.539336, (GLfloat) 0.279873, (GLfloat) - 0.162500,
-       (GLfloat) 0.784890, (GLfloat) 0.253894, (GLfloat) - 0.252500,
-       (GLfloat) 0.648325, (GLfloat) 0.207388, (GLfloat) - 0.207969,
-       (GLfloat) 0.602715, (GLfloat) 0.067041, (GLfloat) - 0.266375,
-       (GLfloat) 0.610539, (GLfloat) 0.105601, (GLfloat) - 0.257187,
-       (GLfloat) 0.777574, (GLfloat) 0.144976, (GLfloat) - 0.386375,
-       (GLfloat) 0.720950, (GLfloat) 0.148061, (GLfloat) - 0.291687,
-       (GLfloat) 0.814318, (GLfloat) 0.194027, (GLfloat) - 0.374844,
-       (GLfloat) 0.796449, (GLfloat) 0.143948, (GLfloat) - 0.500000,
-       (GLfloat) 0.736115, (GLfloat) 0.065395, (GLfloat) - 0.399875,
-       (GLfloat) 0.749037, (GLfloat) 0.101488, (GLfloat) - 0.395938,
-       (GLfloat) 0.874183, (GLfloat) 0.244447, (GLfloat) - 0.500000,
-       (GLfloat) 0.814318, (GLfloat) 0.194027, (GLfloat) - 0.625156,
-       (GLfloat) 0.736115, (GLfloat) 0.065395, (GLfloat) - 0.600125,
-       (GLfloat) 0.749037, (GLfloat) 0.101488, (GLfloat) - 0.604062,
-       (GLfloat) 0.752790, (GLfloat) 0.065190, (GLfloat) - 0.500000,
-       (GLfloat) 0.706000, (GLfloat) 0.016681, (GLfloat) - 0.412500,
-       (GLfloat) 0.726029, (GLfloat) 0.037019, (GLfloat) - 0.403594,
-       (GLfloat) 0.686090, (GLfloat) 0.066012, (GLfloat) - 0.316437,
-       (GLfloat) 0.686090, (GLfloat) 0.066012, (GLfloat) - 0.683563,
-       (GLfloat) 0.706000, (GLfloat) 0.016681, (GLfloat) - 0.587500,
-       (GLfloat) 0.726029, (GLfloat) 0.037019, (GLfloat) - 0.596406,
-       (GLfloat) 0.590500, (GLfloat) - 0.005194, (GLfloat) - 0.590500,
-       (GLfloat) 0.664625, (GLfloat) 0.003052, (GLfloat) - 0.582500,
-       (GLfloat) 0.721500, (GLfloat) 0.015465, (GLfloat) - 0.500000,
-       (GLfloat) 0.587500, (GLfloat) 0.016681, (GLfloat) - 0.706000,
-       (GLfloat) 0.660875, (GLfloat) 0.017896, (GLfloat) - 0.660875,
-       (GLfloat) 0.587500, (GLfloat) 0.016681, (GLfloat) - 0.294000,
-       (GLfloat) 0.660875, (GLfloat) 0.017896, (GLfloat) - 0.339125,
-       (GLfloat) 0.590500, (GLfloat) - 0.005194, (GLfloat) - 0.409500,
-       (GLfloat) 0.664625, (GLfloat) 0.003052, (GLfloat) - 0.417500,
-       (GLfloat) 0.502666, (GLfloat) 0.068274, (GLfloat) - 0.750313,
-       (GLfloat) 0.597054, (GLfloat) 0.037430, (GLfloat) - 0.725406,
-       (GLfloat) 0.319242, (GLfloat) 0.070537, (GLfloat) - 0.683563,
-       (GLfloat) 0.412500, (GLfloat) 0.016681, (GLfloat) - 0.706000,
-       (GLfloat) 0.404279, (GLfloat) 0.038047, (GLfloat) - 0.725406,
-       (GLfloat) 0.409500, (GLfloat) - 0.005194, (GLfloat) - 0.590500,
-       (GLfloat) 0.417500, (GLfloat) 0.003052, (GLfloat) - 0.664625,
-       (GLfloat) 0.500000, (GLfloat) 0.015465, (GLfloat) - 0.721500,
-       (GLfloat) 0.294000, (GLfloat) 0.016681, (GLfloat) - 0.587500,
-       (GLfloat) 0.339125, (GLfloat) 0.017896, (GLfloat) - 0.660875,
-       (GLfloat) 0.582500, (GLfloat) 0.003052, (GLfloat) - 0.664625,
-       (GLfloat) 0.252542, (GLfloat) 0.071359, (GLfloat) - 0.500000,
-       (GLfloat) 0.275304, (GLfloat) 0.038459, (GLfloat) - 0.596406,
-       (GLfloat) 0.319242, (GLfloat) 0.070537, (GLfloat) - 0.316437,
-       (GLfloat) 0.294000, (GLfloat) 0.016681, (GLfloat) - 0.412500,
-       (GLfloat) 0.275304, (GLfloat) 0.038459, (GLfloat) - 0.403594,
-       (GLfloat) 0.409500, (GLfloat) - 0.005194, (GLfloat) - 0.409500,
-       (GLfloat) 0.335375, (GLfloat) 0.003052, (GLfloat) - 0.417500,
-       (GLfloat) 0.278500, (GLfloat) 0.015465, (GLfloat) - 0.500000,
-       (GLfloat) 0.412500, (GLfloat) 0.016681, (GLfloat) - 0.294000,
-       (GLfloat) 0.339125, (GLfloat) 0.017896, (GLfloat) - 0.339125,
-       (GLfloat) 0.335375, (GLfloat) 0.003052, (GLfloat) - 0.582500,
-       (GLfloat) 0.502666, (GLfloat) 0.068274, (GLfloat) - 0.249687,
-       (GLfloat) 0.404279, (GLfloat) 0.038047, (GLfloat) - 0.274594,
-       (GLfloat) 0.597054, (GLfloat) 0.037430, (GLfloat) - 0.274594,
-       (GLfloat) 0.582500, (GLfloat) 0.003052, (GLfloat) - 0.335375,
-       (GLfloat) 0.500000, (GLfloat) 0.015465, (GLfloat) - 0.278500,
-       (GLfloat) 0.417500, (GLfloat) 0.003052, (GLfloat) - 0.335375,
-       (GLfloat) 0.500000, (GLfloat) - 0.007972, (GLfloat) - 0.597750,
-       (GLfloat) 0.597750, (GLfloat) - 0.007972, (GLfloat) - 0.500000,
-       (GLfloat) 0.402250, (GLfloat) - 0.007972, (GLfloat) - 0.500000,
-       (GLfloat) 0.500000, (GLfloat) - 0.007972, (GLfloat) - 0.402250,
-};
-
-static GLfloat s1_2_normals[] =
-{
-       (GLfloat) 0.838584, (GLfloat) - 0.185505, (GLfloat) - 0.512216,
-       (GLfloat) 0.838560, (GLfloat) - 0.185860, (GLfloat) - 0.512127,
-       (GLfloat) 0.951437, (GLfloat) - 0.260566, (GLfloat) - 0.163932,
-       (GLfloat) 0.951618, (GLfloat) - 0.260024, (GLfloat) - 0.163738,
-       (GLfloat) 0.973663, (GLfloat) - 0.157463, (GLfloat) - 0.164880,
-       (GLfloat) 0.975548, (GLfloat) - 0.148474, (GLfloat) - 0.162053,
-       (GLfloat) 0.859322, (GLfloat) - 0.074133, (GLfloat) - 0.506033,
-       (GLfloat) 0.859277, (GLfloat) - 0.081888, (GLfloat) - 0.504914,
-       (GLfloat) 0.838560, (GLfloat) - 0.185860, (GLfloat) 0.512127,
-       (GLfloat) 0.838584, (GLfloat) - 0.185505, (GLfloat) 0.512216,
-       (GLfloat) 0.859322, (GLfloat) - 0.074133, (GLfloat) 0.506034,
-       (GLfloat) 0.859277, (GLfloat) - 0.081888, (GLfloat) 0.504914,
-       (GLfloat) 0.973663, (GLfloat) - 0.157463, (GLfloat) 0.164880,
-       (GLfloat) 0.975548, (GLfloat) - 0.148474, (GLfloat) 0.162053,
-       (GLfloat) 0.951618, (GLfloat) - 0.260024, (GLfloat) 0.163738,
-       (GLfloat) 0.951437, (GLfloat) - 0.260566, (GLfloat) 0.163932,
-       (GLfloat) 0.573088, (GLfloat) 0.793214, (GLfloat) 0.205867,
-       (GLfloat) 0.558283, (GLfloat) 0.810311, (GLfloat) 0.178092,
-       (GLfloat) 0.606103, (GLfloat) 0.792390, (GLfloat) 0.068965,
-       (GLfloat) 0.596705, (GLfloat) 0.799118, (GLfloat) 0.073163,
-       (GLfloat) 0.896389, (GLfloat) 0.425982, (GLfloat) 0.122582,
-       (GLfloat) 0.910488, (GLfloat) 0.389376, (GLfloat) 0.139274,
-       (GLfloat) 0.787435, (GLfloat) 0.503715, (GLfloat) 0.355272,
-       (GLfloat) 0.794681, (GLfloat) 0.474299, (GLfloat) 0.378844,
-       (GLfloat) 0.558283, (GLfloat) 0.810311, (GLfloat) - 0.178092,
-       (GLfloat) 0.573088, (GLfloat) 0.793214, (GLfloat) - 0.205866,
-       (GLfloat) 0.787434, (GLfloat) 0.503716, (GLfloat) - 0.355272,
-       (GLfloat) 0.794681, (GLfloat) 0.474299, (GLfloat) - 0.378844,
-       (GLfloat) 0.910488, (GLfloat) 0.389376, (GLfloat) - 0.139274,
-       (GLfloat) 0.896389, (GLfloat) 0.425982, (GLfloat) - 0.122583,
-       (GLfloat) 0.596705, (GLfloat) 0.799118, (GLfloat) - 0.073163,
-       (GLfloat) 0.606103, (GLfloat) 0.792390, (GLfloat) - 0.068965,
-       (GLfloat) 0.528377, (GLfloat) - 0.013430, (GLfloat) 0.848903,
-       (GLfloat) 0.532136, (GLfloat) - 0.007543, (GLfloat) 0.846625,
-       (GLfloat) 0.209439, (GLfloat) 0.141946, (GLfloat) 0.967464,
-       (GLfloat) 0.218070, (GLfloat) 0.152719, (GLfloat) 0.963910,
-       (GLfloat) 0.237428, (GLfloat) 0.197257, (GLfloat) 0.951166,
-       (GLfloat) 0.225804, (GLfloat) 0.180417, (GLfloat) 0.957320,
-       (GLfloat) 0.549711, (GLfloat) 0.076255, (GLfloat) 0.831867,
-       (GLfloat) 0.550775, (GLfloat) 0.056452, (GLfloat) 0.832742,
-       (GLfloat) - 0.393177, (GLfloat) 0.417558, (GLfloat) 0.819181,
-       (GLfloat) - 0.379656, (GLfloat) 0.429289, (GLfloat) 0.819495,
-       (GLfloat) - 0.366688, (GLfloat) 0.451901, (GLfloat) 0.813219,
-       (GLfloat) - 0.369492, (GLfloat) 0.449132, (GLfloat) 0.813484,
-       (GLfloat) - 0.064014, (GLfloat) 0.313584, (GLfloat) 0.947400,
-       (GLfloat) - 0.066684, (GLfloat) 0.310439, (GLfloat) 0.948252,
-       (GLfloat) - 0.086424, (GLfloat) 0.278029, (GLfloat) 0.956677,
-       (GLfloat) - 0.074037, (GLfloat) 0.290647, (GLfloat) 0.953962,
-       (GLfloat) 0.110270, (GLfloat) 0.952576, (GLfloat) 0.283620,
-       (GLfloat) 0.140226, (GLfloat) 0.954260, (GLfloat) 0.264054,
-       (GLfloat) 0.237331, (GLfloat) 0.918949, (GLfloat) 0.314972,
-       (GLfloat) 0.245773, (GLfloat) 0.920155, (GLfloat) 0.304813,
-       (GLfloat) 0.105329, (GLfloat) 0.694128, (GLfloat) 0.712104,
-       (GLfloat) 0.087202, (GLfloat) 0.678641, (GLfloat) 0.729275,
-       (GLfloat) - 0.104644, (GLfloat) 0.803491, (GLfloat) 0.586048,
-       (GLfloat) - 0.129358, (GLfloat) 0.790652, (GLfloat) 0.598444,
-       (GLfloat) 0.490179, (GLfloat) 0.834739, (GLfloat) 0.250869,
-       (GLfloat) 0.486736, (GLfloat) 0.825366, (GLfloat) 0.286109,
-       (GLfloat) 0.575458, (GLfloat) 0.546427, (GLfloat) 0.608494,
-       (GLfloat) 0.582377, (GLfloat) 0.582433, (GLfloat) 0.567105,
-       (GLfloat) 0.347588, (GLfloat) 0.580631, (GLfloat) 0.736241,
-       (GLfloat) 0.339131, (GLfloat) 0.624243, (GLfloat) 0.703783,
-       (GLfloat) 0.378417, (GLfloat) 0.874281, (GLfloat) 0.304028,
-       (GLfloat) 0.373374, (GLfloat) 0.872526, (GLfloat) 0.315104,
-       (GLfloat) - 0.678225, (GLfloat) 0.555239, (GLfloat) 0.481373,
-       (GLfloat) - 0.681792, (GLfloat) 0.544639, (GLfloat) 0.488393,
-       (GLfloat) - 0.792737, (GLfloat) 0.589393, (GLfloat) 0.155511,
-       (GLfloat) - 0.790738, (GLfloat) 0.592627, (GLfloat) 0.153380,
-       (GLfloat) - 0.787611, (GLfloat) 0.595240, (GLfloat) 0.159243,
-       (GLfloat) - 0.781477, (GLfloat) 0.604504, (GLfloat) 0.154495,
-       (GLfloat) - 0.659940, (GLfloat) 0.576523, (GLfloat) 0.481768,
-       (GLfloat) - 0.666748, (GLfloat) 0.561105, (GLfloat) 0.490519,
-       (GLfloat) - 0.678225, (GLfloat) 0.555239, (GLfloat) - 0.481374,
-       (GLfloat) - 0.681792, (GLfloat) 0.544639, (GLfloat) - 0.488393,
-       (GLfloat) - 0.666748, (GLfloat) 0.561105, (GLfloat) - 0.490519,
-       (GLfloat) - 0.659940, (GLfloat) 0.576523, (GLfloat) - 0.481768,
-       (GLfloat) - 0.787611, (GLfloat) 0.595240, (GLfloat) - 0.159243,
-       (GLfloat) - 0.781477, (GLfloat) 0.604504, (GLfloat) - 0.154495,
-       (GLfloat) - 0.790738, (GLfloat) 0.592627, (GLfloat) - 0.153380,
-       (GLfloat) - 0.792737, (GLfloat) 0.589393, (GLfloat) - 0.155511,
-       (GLfloat) 0.036752, (GLfloat) 0.977890, (GLfloat) - 0.205867,
-       (GLfloat) 0.058945, (GLfloat) 0.982247, (GLfloat) - 0.178091,
-       (GLfloat) 0.010229, (GLfloat) 0.997567, (GLfloat) - 0.068965,
-       (GLfloat) 0.021776, (GLfloat) 0.997082, (GLfloat) - 0.073162,
-       (GLfloat) - 0.480804, (GLfloat) 0.867725, (GLfloat) - 0.126022,
-       (GLfloat) - 0.442857, (GLfloat) 0.886381, (GLfloat) - 0.134932,
-       (GLfloat) - 0.305505, (GLfloat) 0.879128, (GLfloat) - 0.365788,
-       (GLfloat) - 0.350437, (GLfloat) 0.860755, (GLfloat) - 0.369182,
-       (GLfloat) 0.058946, (GLfloat) 0.982247, (GLfloat) 0.178091,
-       (GLfloat) 0.036752, (GLfloat) 0.977890, (GLfloat) 0.205867,
-       (GLfloat) - 0.350437, (GLfloat) 0.860755, (GLfloat) 0.369182,
-       (GLfloat) - 0.305505, (GLfloat) 0.879128, (GLfloat) 0.365788,
-       (GLfloat) - 0.480804, (GLfloat) 0.867725, (GLfloat) 0.126022,
-       (GLfloat) - 0.442857, (GLfloat) 0.886381, (GLfloat) 0.134932,
-       (GLfloat) 0.021776, (GLfloat) 0.997082, (GLfloat) 0.073162,
-       (GLfloat) 0.010229, (GLfloat) 0.997567, (GLfloat) 0.068965,
-       (GLfloat) - 0.393178, (GLfloat) 0.417557, (GLfloat) - 0.819181,
-       (GLfloat) - 0.379655, (GLfloat) 0.429290, (GLfloat) - 0.819495,
-       (GLfloat) - 0.074037, (GLfloat) 0.290648, (GLfloat) - 0.953961,
-       (GLfloat) - 0.086424, (GLfloat) 0.278030, (GLfloat) - 0.956677,
-       (GLfloat) - 0.064013, (GLfloat) 0.313585, (GLfloat) - 0.947400,
-       (GLfloat) - 0.066684, (GLfloat) 0.310439, (GLfloat) - 0.948252,
-       (GLfloat) - 0.369492, (GLfloat) 0.449132, (GLfloat) - 0.813484,
-       (GLfloat) - 0.366688, (GLfloat) 0.451901, (GLfloat) - 0.813219,
-       (GLfloat) 0.532135, (GLfloat) - 0.007544, (GLfloat) - 0.846626,
-       (GLfloat) 0.528378, (GLfloat) - 0.013430, (GLfloat) - 0.848903,
-       (GLfloat) 0.550775, (GLfloat) 0.056452, (GLfloat) - 0.832742,
-       (GLfloat) 0.549711, (GLfloat) 0.076255, (GLfloat) - 0.831867,
-       (GLfloat) 0.225804, (GLfloat) 0.180419, (GLfloat) - 0.957320,
-       (GLfloat) 0.237428, (GLfloat) 0.197257, (GLfloat) - 0.951166,
-       (GLfloat) 0.209439, (GLfloat) 0.141946, (GLfloat) - 0.967464,
-       (GLfloat) 0.218070, (GLfloat) 0.152720, (GLfloat) - 0.963910,
-       (GLfloat) 0.490179, (GLfloat) 0.834739, (GLfloat) - 0.250870,
-       (GLfloat) 0.486736, (GLfloat) 0.825366, (GLfloat) - 0.286109,
-       (GLfloat) 0.373374, (GLfloat) 0.872526, (GLfloat) - 0.315104,
-       (GLfloat) 0.378417, (GLfloat) 0.874281, (GLfloat) - 0.304029,
-       (GLfloat) 0.339131, (GLfloat) 0.624243, (GLfloat) - 0.703783,
-       (GLfloat) 0.347588, (GLfloat) 0.580630, (GLfloat) - 0.736241,
-       (GLfloat) 0.582377, (GLfloat) 0.582434, (GLfloat) - 0.567105,
-       (GLfloat) 0.575458, (GLfloat) 0.546427, (GLfloat) - 0.608494,
-       (GLfloat) 0.140225, (GLfloat) 0.954260, (GLfloat) - 0.264055,
-       (GLfloat) 0.110270, (GLfloat) 0.952576, (GLfloat) - 0.283620,
-       (GLfloat) - 0.104644, (GLfloat) 0.803491, (GLfloat) - 0.586047,
-       (GLfloat) - 0.129358, (GLfloat) 0.790652, (GLfloat) - 0.598444,
-       (GLfloat) 0.087202, (GLfloat) 0.678640, (GLfloat) - 0.729276,
-       (GLfloat) 0.105329, (GLfloat) 0.694128, (GLfloat) - 0.712104,
-       (GLfloat) 0.237332, (GLfloat) 0.918949, (GLfloat) - 0.314972,
-       (GLfloat) 0.245773, (GLfloat) 0.920155, (GLfloat) - 0.304813,
-       (GLfloat) 0.448419, (GLfloat) 0.885179, (GLfloat) 0.124011,
-       (GLfloat) 0.437269, (GLfloat) 0.889018, (GLfloat) 0.135803,
-       (GLfloat) 0.364737, (GLfloat) 0.924635, (GLfloat) 0.109622,
-       (GLfloat) 0.360657, (GLfloat) 0.925618, (GLfloat) 0.114709,
-       (GLfloat) 0.353761, (GLfloat) 0.934751, (GLfloat) 0.033079,
-       (GLfloat) 0.356519, (GLfloat) 0.933801, (GLfloat) 0.030163,
-       (GLfloat) 0.426940, (GLfloat) 0.903217, (GLfloat) 0.043834,
-       (GLfloat) 0.431621, (GLfloat) 0.901183, (GLfloat) 0.039656,
-       (GLfloat) 0.202761, (GLfloat) 0.969766, (GLfloat) 0.135803,
-       (GLfloat) 0.191612, (GLfloat) 0.973605, (GLfloat) 0.124011,
-       (GLfloat) 0.219643, (GLfloat) 0.974595, (GLfloat) 0.043834,
-       (GLfloat) 0.214702, (GLfloat) 0.975874, (GLfloat) 0.039656,
-       (GLfloat) 0.293965, (GLfloat) 0.955340, (GLfloat) 0.030163,
-       (GLfloat) 0.296722, (GLfloat) 0.954391, (GLfloat) 0.033079,
-       (GLfloat) 0.281846, (GLfloat) 0.953177, (GLfloat) 0.109622,
-       (GLfloat) 0.285665, (GLfloat) 0.951439, (GLfloat) 0.114709,
-       (GLfloat) 0.191612, (GLfloat) 0.973605, (GLfloat) - 0.124011,
-       (GLfloat) 0.202761, (GLfloat) 0.969766, (GLfloat) - 0.135803,
-       (GLfloat) 0.281846, (GLfloat) 0.953177, (GLfloat) - 0.109622,
-       (GLfloat) 0.285665, (GLfloat) 0.951439, (GLfloat) - 0.114709,
-       (GLfloat) 0.296722, (GLfloat) 0.954391, (GLfloat) - 0.033079,
-       (GLfloat) 0.293965, (GLfloat) 0.955340, (GLfloat) - 0.030163,
-       (GLfloat) 0.219643, (GLfloat) 0.974595, (GLfloat) - 0.043834,
-       (GLfloat) 0.214702, (GLfloat) 0.975874, (GLfloat) - 0.039656,
-       (GLfloat) 0.437270, (GLfloat) 0.889018, (GLfloat) - 0.135802,
-       (GLfloat) 0.448419, (GLfloat) 0.885179, (GLfloat) - 0.124011,
-       (GLfloat) 0.426940, (GLfloat) 0.903217, (GLfloat) - 0.043834,
-       (GLfloat) 0.431621, (GLfloat) 0.901183, (GLfloat) - 0.039656,
-       (GLfloat) 0.356519, (GLfloat) 0.933801, (GLfloat) - 0.030163,
-       (GLfloat) 0.353761, (GLfloat) 0.934751, (GLfloat) - 0.033079,
-       (GLfloat) 0.364737, (GLfloat) 0.924635, (GLfloat) - 0.109622,
-       (GLfloat) 0.360657, (GLfloat) 0.925618, (GLfloat) - 0.114709,
-       (GLfloat) 0.865947, (GLfloat) 0.016137, (GLfloat) - 0.499875,
-       (GLfloat) 0.868761, (GLfloat) 0.025708, (GLfloat) - 0.494564,
-       (GLfloat) 0.864411, (GLfloat) 0.044558, (GLfloat) - 0.500808,
-       (GLfloat) 0.867101, (GLfloat) 0.054429, (GLfloat) - 0.495149,
-       (GLfloat) 0.986611, (GLfloat) - 0.030929, (GLfloat) - 0.160132,
-       (GLfloat) 0.986294, (GLfloat) - 0.033936, (GLfloat) - 0.161472,
-       (GLfloat) 0.985351, (GLfloat) - 0.059326, (GLfloat) - 0.159886,
-       (GLfloat) 0.984981, (GLfloat) - 0.062150, (GLfloat) - 0.161092,
-       (GLfloat) 0.832885, (GLfloat) - 0.213353, (GLfloat) - 0.510669,
-       (GLfloat) 0.832050, (GLfloat) - 0.215053, (GLfloat) - 0.511318,
-       (GLfloat) 0.946090, (GLfloat) - 0.280224, (GLfloat) - 0.162447,
-       (GLfloat) 0.946491, (GLfloat) - 0.279128, (GLfloat) - 0.161996,
-       (GLfloat) 0.980117, (GLfloat) - 0.113104, (GLfloat) - 0.163030,
-       (GLfloat) 0.979875, (GLfloat) - 0.114395, (GLfloat) - 0.163582,
-       (GLfloat) 0.859139, (GLfloat) - 0.037704, (GLfloat) - 0.510352,
-       (GLfloat) 0.860908, (GLfloat) - 0.032422, (GLfloat) - 0.507727,
-       (GLfloat) 0.832885, (GLfloat) - 0.213353, (GLfloat) 0.510669,
-       (GLfloat) 0.832049, (GLfloat) - 0.215054, (GLfloat) 0.511318,
-       (GLfloat) 0.860908, (GLfloat) - 0.032422, (GLfloat) 0.507727,
-       (GLfloat) 0.859138, (GLfloat) - 0.037705, (GLfloat) 0.510352,
-       (GLfloat) 0.980117, (GLfloat) - 0.113104, (GLfloat) 0.163030,
-       (GLfloat) 0.979875, (GLfloat) - 0.114395, (GLfloat) 0.163582,
-       (GLfloat) 0.946491, (GLfloat) - 0.279128, (GLfloat) 0.161996,
-       (GLfloat) 0.946090, (GLfloat) - 0.280224, (GLfloat) 0.162447,
-       (GLfloat) 0.868761, (GLfloat) 0.025708, (GLfloat) 0.494563,
-       (GLfloat) 0.865947, (GLfloat) 0.016137, (GLfloat) 0.499875,
-       (GLfloat) 0.985351, (GLfloat) - 0.059326, (GLfloat) 0.159886,
-       (GLfloat) 0.984981, (GLfloat) - 0.062149, (GLfloat) 0.161092,
-       (GLfloat) 0.986294, (GLfloat) - 0.033936, (GLfloat) 0.161472,
-       (GLfloat) 0.986611, (GLfloat) - 0.030929, (GLfloat) 0.160132,
-       (GLfloat) 0.864411, (GLfloat) 0.044558, (GLfloat) 0.500808,
-       (GLfloat) 0.867101, (GLfloat) 0.054428, (GLfloat) 0.495149,
-       (GLfloat) - 0.329624, (GLfloat) 0.568782, (GLfloat) - 0.753548,
-       (GLfloat) - 0.303532, (GLfloat) 0.584080, (GLfloat) - 0.752808,
-       (GLfloat) - 0.337233, (GLfloat) 0.584915, (GLfloat) - 0.737664,
-       (GLfloat) - 0.311968, (GLfloat) 0.599454, (GLfloat) - 0.737110,
-       (GLfloat) - 0.032356, (GLfloat) 0.486520, (GLfloat) - 0.873070,
-       (GLfloat) - 0.057628, (GLfloat) 0.467531, (GLfloat) - 0.882096,
-       (GLfloat) - 0.019804, (GLfloat) 0.465587, (GLfloat) - 0.884780,
-       (GLfloat) - 0.045819, (GLfloat) 0.445898, (GLfloat) - 0.893910,
-       (GLfloat) - 0.451403, (GLfloat) 0.351833, (GLfloat) - 0.820029,
-       (GLfloat) - 0.442643, (GLfloat) 0.360683, (GLfloat) - 0.820960,
-       (GLfloat) - 0.125959, (GLfloat) 0.231940, (GLfloat) - 0.964540,
-       (GLfloat) - 0.133424, (GLfloat) 0.223158, (GLfloat) - 0.965608,
-       (GLfloat) - 0.071940, (GLfloat) 0.416419, (GLfloat) - 0.906322,
-       (GLfloat) - 0.089763, (GLfloat) 0.400364, (GLfloat) - 0.911949,
-       (GLfloat) - 0.381140, (GLfloat) 0.522054, (GLfloat) - 0.763015,
-       (GLfloat) - 0.362693, (GLfloat) 0.535129, (GLfloat) - 0.762949,
-       (GLfloat) 0.514033, (GLfloat) - 0.052564, (GLfloat) - 0.856158,
-       (GLfloat) 0.512829, (GLfloat) - 0.054517, (GLfloat) - 0.856758,
-       (GLfloat) 0.539192, (GLfloat) 0.146366, (GLfloat) - 0.829367,
-       (GLfloat) 0.531981, (GLfloat) 0.133703, (GLfloat) - 0.836133,
-       (GLfloat) 0.204167, (GLfloat) 0.278037, (GLfloat) - 0.938622,
-       (GLfloat) 0.217587, (GLfloat) 0.294489, (GLfloat) - 0.930555,
-       (GLfloat) 0.177512, (GLfloat) 0.093824, (GLfloat) - 0.979636,
-       (GLfloat) 0.182065, (GLfloat) 0.100184, (GLfloat) - 0.978170,
-       (GLfloat) 0.561737, (GLfloat) 0.205535, (GLfloat) - 0.801378,
-       (GLfloat) 0.550517, (GLfloat) 0.186829, (GLfloat) - 0.813650,
-       (GLfloat) 0.237090, (GLfloat) 0.326380, (GLfloat) - 0.915022,
-       (GLfloat) 0.257400, (GLfloat) 0.348104, (GLfloat) - 0.901426,
-       (GLfloat) 0.225204, (GLfloat) 0.351522, (GLfloat) - 0.908689,
-       (GLfloat) 0.244915, (GLfloat) 0.372788, (GLfloat) - 0.895012,
-       (GLfloat) 0.553162, (GLfloat) 0.233132, (GLfloat) - 0.799789,
-       (GLfloat) 0.542289, (GLfloat) 0.214487, (GLfloat) - 0.812354,
-       (GLfloat) - 0.303532, (GLfloat) 0.584080, (GLfloat) 0.752808,
-       (GLfloat) - 0.329624, (GLfloat) 0.568782, (GLfloat) 0.753548,
-       (GLfloat) - 0.019804, (GLfloat) 0.465588, (GLfloat) 0.884780,
-       (GLfloat) - 0.045820, (GLfloat) 0.445898, (GLfloat) 0.893910,
-       (GLfloat) - 0.057628, (GLfloat) 0.467531, (GLfloat) 0.882096,
-       (GLfloat) - 0.032356, (GLfloat) 0.486520, (GLfloat) 0.873070,
-       (GLfloat) - 0.337233, (GLfloat) 0.584915, (GLfloat) 0.737664,
-       (GLfloat) - 0.311968, (GLfloat) 0.599453, (GLfloat) 0.737110,
-       (GLfloat) 0.561737, (GLfloat) 0.205535, (GLfloat) 0.801378,
-       (GLfloat) 0.550517, (GLfloat) 0.186829, (GLfloat) 0.813650,
-       (GLfloat) 0.542289, (GLfloat) 0.214487, (GLfloat) 0.812354,
-       (GLfloat) 0.553162, (GLfloat) 0.233132, (GLfloat) 0.799789,
-       (GLfloat) 0.225204, (GLfloat) 0.351522, (GLfloat) 0.908689,
-       (GLfloat) 0.244915, (GLfloat) 0.372788, (GLfloat) 0.895012,
-       (GLfloat) 0.257400, (GLfloat) 0.348104, (GLfloat) 0.901426,
-       (GLfloat) 0.237091, (GLfloat) 0.326380, (GLfloat) 0.915021,
-       (GLfloat) 0.512829, (GLfloat) - 0.054517, (GLfloat) 0.856758,
-       (GLfloat) 0.514033, (GLfloat) - 0.052564, (GLfloat) 0.856158,
-       (GLfloat) 0.177512, (GLfloat) 0.093824, (GLfloat) 0.979636,
-       (GLfloat) 0.182065, (GLfloat) 0.100184, (GLfloat) 0.978170,
-       (GLfloat) 0.217587, (GLfloat) 0.294488, (GLfloat) 0.930555,
-       (GLfloat) 0.204167, (GLfloat) 0.278037, (GLfloat) 0.938622,
-       (GLfloat) 0.539192, (GLfloat) 0.146365, (GLfloat) 0.829367,
-       (GLfloat) 0.531981, (GLfloat) 0.133703, (GLfloat) 0.836133,
-       (GLfloat) - 0.451403, (GLfloat) 0.351833, (GLfloat) 0.820029,
-       (GLfloat) - 0.442643, (GLfloat) 0.360683, (GLfloat) 0.820960,
-       (GLfloat) - 0.362693, (GLfloat) 0.535129, (GLfloat) 0.762949,
-       (GLfloat) - 0.381140, (GLfloat) 0.522054, (GLfloat) 0.763015,
-       (GLfloat) - 0.071940, (GLfloat) 0.416419, (GLfloat) 0.906322,
-       (GLfloat) - 0.089763, (GLfloat) 0.400364, (GLfloat) 0.911949,
-       (GLfloat) - 0.133424, (GLfloat) 0.223158, (GLfloat) 0.965608,
-       (GLfloat) - 0.125959, (GLfloat) 0.231940, (GLfloat) 0.964540,
-       (GLfloat) - 0.574082, (GLfloat) 0.688221, (GLfloat) - 0.443601,
-       (GLfloat) - 0.590248, (GLfloat) 0.678175, (GLfloat) - 0.437821,
-       (GLfloat) - 0.687359, (GLfloat) 0.712967, (GLfloat) - 0.138621,
-       (GLfloat) - 0.682813, (GLfloat) 0.716686, (GLfloat) - 0.141874,
-       (GLfloat) - 0.682597, (GLfloat) 0.718360, (GLfloat) - 0.134243,
-       (GLfloat) - 0.678253, (GLfloat) 0.721849, (GLfloat) - 0.137502,
-       (GLfloat) - 0.574037, (GLfloat) 0.696240, (GLfloat) - 0.430966,
-       (GLfloat) - 0.589571, (GLfloat) 0.686777, (GLfloat) - 0.425139,
-       (GLfloat) - 0.574082, (GLfloat) 0.688221, (GLfloat) 0.443601,
-       (GLfloat) - 0.590248, (GLfloat) 0.678175, (GLfloat) 0.437821,
-       (GLfloat) - 0.589571, (GLfloat) 0.686777, (GLfloat) 0.425139,
-       (GLfloat) - 0.574037, (GLfloat) 0.696240, (GLfloat) 0.430966,
-       (GLfloat) - 0.682597, (GLfloat) 0.718360, (GLfloat) 0.134243,
-       (GLfloat) - 0.678253, (GLfloat) 0.721849, (GLfloat) 0.137502,
-       (GLfloat) - 0.682813, (GLfloat) 0.716686, (GLfloat) 0.141874,
-       (GLfloat) - 0.687359, (GLfloat) 0.712967, (GLfloat) 0.138621,
-       (GLfloat) - 0.741041, (GLfloat) 0.473108, (GLfloat) 0.476473,
-       (GLfloat) - 0.742406, (GLfloat) 0.464975, (GLfloat) 0.482319,
-       (GLfloat) - 0.850293, (GLfloat) 0.503676, (GLfloat) 0.152681,
-       (GLfloat) - 0.849127, (GLfloat) 0.506180, (GLfloat) 0.150879,
-       (GLfloat) - 0.738717, (GLfloat) 0.659007, (GLfloat) 0.141447,
-       (GLfloat) - 0.736283, (GLfloat) 0.662408, (GLfloat) 0.138214,
-       (GLfloat) - 0.631960, (GLfloat) 0.635245, (GLfloat) 0.443948,
-       (GLfloat) - 0.643540, (GLfloat) 0.626686, (GLfloat) 0.439455,
-       (GLfloat) - 0.741041, (GLfloat) 0.473108, (GLfloat) - 0.476473,
-       (GLfloat) - 0.742406, (GLfloat) 0.464975, (GLfloat) - 0.482319,
-       (GLfloat) - 0.631960, (GLfloat) 0.635245, (GLfloat) - 0.443948,
-       (GLfloat) - 0.643541, (GLfloat) 0.626686, (GLfloat) - 0.439455,
-       (GLfloat) - 0.738717, (GLfloat) 0.659007, (GLfloat) - 0.141447,
-       (GLfloat) - 0.736283, (GLfloat) 0.662408, (GLfloat) - 0.138214,
-       (GLfloat) - 0.849127, (GLfloat) 0.506180, (GLfloat) - 0.150879,
-       (GLfloat) - 0.850293, (GLfloat) 0.503676, (GLfloat) - 0.152681,
-       (GLfloat) - 0.489320, (GLfloat) - 0.355167, (GLfloat) - 0.796506,
-       (GLfloat) - 0.498398, (GLfloat) - 0.341072, (GLfloat) - 0.797038,
-       (GLfloat) - 0.172289, (GLfloat) - 0.401583, (GLfloat) - 0.899471,
-       (GLfloat) - 0.163102, (GLfloat) - 0.385135, (GLfloat) - 0.908333,
-       (GLfloat) - 0.182727, (GLfloat) - 0.410657, (GLfloat) - 0.893293,
-       (GLfloat) - 0.172422, (GLfloat) - 0.394484, (GLfloat) - 0.902581,
-       (GLfloat) - 0.506086, (GLfloat) - 0.336560, (GLfloat) - 0.794106,
-       (GLfloat) - 0.496896, (GLfloat) - 0.351037, (GLfloat) - 0.793642,
-       (GLfloat) 0.421643, (GLfloat) - 0.514114, (GLfloat) - 0.746930,
-       (GLfloat) 0.435781, (GLfloat) - 0.498195, (GLfloat) - 0.749598,
-       (GLfloat) 0.399104, (GLfloat) - 0.548391, (GLfloat) - 0.734836,
-       (GLfloat) 0.414969, (GLfloat) - 0.532774, (GLfloat) - 0.737532,
-       (GLfloat) 0.122126, (GLfloat) - 0.459168, (GLfloat) - 0.879915,
-       (GLfloat) 0.107835, (GLfloat) - 0.476533, (GLfloat) - 0.872518,
-       (GLfloat) 0.135473, (GLfloat) - 0.437168, (GLfloat) - 0.889118,
-       (GLfloat) 0.122726, (GLfloat) - 0.454818, (GLfloat) - 0.882088,
-       (GLfloat) 0.451859, (GLfloat) - 0.350279, (GLfloat) - 0.820444,
-       (GLfloat) 0.459996, (GLfloat) - 0.340221, (GLfloat) - 0.820154,
-       (GLfloat) 0.139327, (GLfloat) - 0.217141, (GLfloat) - 0.966146,
-       (GLfloat) 0.132987, (GLfloat) - 0.225779, (GLfloat) - 0.965059,
-       (GLfloat) 0.121571, (GLfloat) - 0.389814, (GLfloat) - 0.912834,
-       (GLfloat) 0.109716, (GLfloat) - 0.404550, (GLfloat) - 0.907910,
-       (GLfloat) 0.409974, (GLfloat) - 0.496912, (GLfloat) - 0.764852,
-       (GLfloat) 0.423414, (GLfloat) - 0.483036, (GLfloat) - 0.766418,
-       (GLfloat) - 0.517051, (GLfloat) 0.005478, (GLfloat) - 0.855937,
-       (GLfloat) - 0.518557, (GLfloat) 0.003075, (GLfloat) - 0.855038,
-       (GLfloat) - 0.515705, (GLfloat) - 0.236965, (GLfloat) - 0.823344,
-       (GLfloat) - 0.521517, (GLfloat) - 0.225403, (GLfloat) - 0.822930,
-       (GLfloat) - 0.189726, (GLfloat) - 0.318770, (GLfloat) - 0.928649,
-       (GLfloat) - 0.181223, (GLfloat) - 0.305795, (GLfloat) - 0.934691,
-       (GLfloat) - 0.179422, (GLfloat) - 0.111097, (GLfloat) - 0.977479,
-       (GLfloat) - 0.175584, (GLfloat) - 0.105473, (GLfloat) - 0.978798,
-       (GLfloat) - 0.822110, (GLfloat) - 0.303411, (GLfloat) - 0.481743,
-       (GLfloat) - 0.821692, (GLfloat) - 0.296307, (GLfloat) - 0.486851,
-       (GLfloat) - 0.829019, (GLfloat) - 0.285105, (GLfloat) - 0.481086,
-       (GLfloat) - 0.828324, (GLfloat) - 0.278227, (GLfloat) - 0.486280,
-       (GLfloat) - 0.955809, (GLfloat) - 0.248857, (GLfloat) - 0.156521,
-       (GLfloat) - 0.955462, (GLfloat) - 0.251102, (GLfloat) - 0.155051,
-       (GLfloat) - 0.949299, (GLfloat) - 0.272604, (GLfloat) - 0.156583,
-       (GLfloat) - 0.948870, (GLfloat) - 0.274919, (GLfloat) - 0.155132,
-       (GLfloat) - 0.850734, (GLfloat) 0.112614, (GLfloat) - 0.513391,
-       (GLfloat) - 0.850654, (GLfloat) 0.112793, (GLfloat) - 0.513484,
-       (GLfloat) - 0.974222, (GLfloat) 0.155109, (GLfloat) - 0.163808,
-       (GLfloat) - 0.974191, (GLfloat) 0.155230, (GLfloat) - 0.163874,
-       (GLfloat) - 0.980876, (GLfloat) - 0.109137, (GLfloat) - 0.161159,
-       (GLfloat) - 0.980855, (GLfloat) - 0.110647, (GLfloat) - 0.160255,
-       (GLfloat) - 0.853630, (GLfloat) - 0.150462, (GLfloat) - 0.498675,
-       (GLfloat) - 0.852599, (GLfloat) - 0.145646, (GLfloat) - 0.501859,
-       (GLfloat) - 0.850734, (GLfloat) 0.112614, (GLfloat) 0.513391,
-       (GLfloat) - 0.850654, (GLfloat) 0.112793, (GLfloat) 0.513484,
-       (GLfloat) - 0.852599, (GLfloat) - 0.145647, (GLfloat) 0.501859,
-       (GLfloat) - 0.853630, (GLfloat) - 0.150462, (GLfloat) 0.498676,
-       (GLfloat) - 0.980876, (GLfloat) - 0.109137, (GLfloat) 0.161159,
-       (GLfloat) - 0.980855, (GLfloat) - 0.110647, (GLfloat) 0.160255,
-       (GLfloat) - 0.974191, (GLfloat) 0.155230, (GLfloat) 0.163874,
-       (GLfloat) - 0.974222, (GLfloat) 0.155109, (GLfloat) 0.163808,
-       (GLfloat) - 0.821692, (GLfloat) - 0.296307, (GLfloat) 0.486851,
-       (GLfloat) - 0.822110, (GLfloat) - 0.303411, (GLfloat) 0.481743,
-       (GLfloat) - 0.949299, (GLfloat) - 0.272604, (GLfloat) 0.156583,
-       (GLfloat) - 0.948870, (GLfloat) - 0.274919, (GLfloat) 0.155132,
-       (GLfloat) - 0.955462, (GLfloat) - 0.251102, (GLfloat) 0.155051,
-       (GLfloat) - 0.955809, (GLfloat) - 0.248857, (GLfloat) 0.156520,
-       (GLfloat) - 0.829019, (GLfloat) - 0.285105, (GLfloat) 0.481086,
-       (GLfloat) - 0.828324, (GLfloat) - 0.278227, (GLfloat) 0.486280,
-       (GLfloat) - 0.498398, (GLfloat) - 0.341071, (GLfloat) 0.797038,
-       (GLfloat) - 0.489320, (GLfloat) - 0.355167, (GLfloat) 0.796507,
-       (GLfloat) - 0.506086, (GLfloat) - 0.336560, (GLfloat) 0.794106,
-       (GLfloat) - 0.496896, (GLfloat) - 0.351037, (GLfloat) 0.793642,
-       (GLfloat) - 0.182728, (GLfloat) - 0.410657, (GLfloat) 0.893293,
-       (GLfloat) - 0.172423, (GLfloat) - 0.394484, (GLfloat) 0.902581,
-       (GLfloat) - 0.163101, (GLfloat) - 0.385135, (GLfloat) 0.908333,
-       (GLfloat) - 0.172289, (GLfloat) - 0.401584, (GLfloat) 0.899470,
-       (GLfloat) - 0.518557, (GLfloat) 0.003076, (GLfloat) 0.855038,
-       (GLfloat) - 0.517051, (GLfloat) 0.005478, (GLfloat) 0.855937,
-       (GLfloat) - 0.179422, (GLfloat) - 0.111097, (GLfloat) 0.977479,
-       (GLfloat) - 0.175584, (GLfloat) - 0.105473, (GLfloat) 0.978798,
-       (GLfloat) - 0.181223, (GLfloat) - 0.305795, (GLfloat) 0.934691,
-       (GLfloat) - 0.189727, (GLfloat) - 0.318770, (GLfloat) 0.928649,
-       (GLfloat) - 0.521517, (GLfloat) - 0.225402, (GLfloat) 0.822930,
-       (GLfloat) - 0.515705, (GLfloat) - 0.236965, (GLfloat) 0.823344,
-       (GLfloat) 0.451859, (GLfloat) - 0.350279, (GLfloat) 0.820444,
-       (GLfloat) 0.459996, (GLfloat) - 0.340221, (GLfloat) 0.820154,
-       (GLfloat) 0.423414, (GLfloat) - 0.483036, (GLfloat) 0.766418,
-       (GLfloat) 0.409975, (GLfloat) - 0.496912, (GLfloat) 0.764853,
-       (GLfloat) 0.121571, (GLfloat) - 0.389814, (GLfloat) 0.912834,
-       (GLfloat) 0.109716, (GLfloat) - 0.404550, (GLfloat) 0.907911,
-       (GLfloat) 0.132987, (GLfloat) - 0.225779, (GLfloat) 0.965059,
-       (GLfloat) 0.139327, (GLfloat) - 0.217140, (GLfloat) 0.966146,
-       (GLfloat) 0.435780, (GLfloat) - 0.498195, (GLfloat) 0.749598,
-       (GLfloat) 0.421643, (GLfloat) - 0.514113, (GLfloat) 0.746930,
-       (GLfloat) 0.135473, (GLfloat) - 0.437169, (GLfloat) 0.889118,
-       (GLfloat) 0.122726, (GLfloat) - 0.454818, (GLfloat) 0.882088,
-       (GLfloat) 0.107835, (GLfloat) - 0.476534, (GLfloat) 0.872518,
-       (GLfloat) 0.122126, (GLfloat) - 0.459168, (GLfloat) 0.879915,
-       (GLfloat) 0.399104, (GLfloat) - 0.548391, (GLfloat) 0.734836,
-       (GLfloat) 0.414969, (GLfloat) - 0.532773, (GLfloat) 0.737532,
-       (GLfloat) 0.709825, (GLfloat) - 0.548164, (GLfloat) 0.442339,
-       (GLfloat) 0.706858, (GLfloat) - 0.559116, (GLfloat) 0.433291,
-       (GLfloat) 0.678133, (GLfloat) - 0.593660, (GLfloat) 0.433248,
-       (GLfloat) 0.674632, (GLfloat) - 0.604835, (GLfloat) 0.423140,
-       (GLfloat) 0.774649, (GLfloat) - 0.617973, (GLfloat) 0.134272,
-       (GLfloat) 0.777074, (GLfloat) - 0.614312, (GLfloat) 0.137026,
-       (GLfloat) 0.811265, (GLfloat) - 0.568214, (GLfloat) 0.137773,
-       (GLfloat) 0.813383, (GLfloat) - 0.564575, (GLfloat) 0.140223,
-       (GLfloat) 0.750611, (GLfloat) - 0.453426, (GLfloat) 0.480612,
-       (GLfloat) 0.748687, (GLfloat) - 0.462619, (GLfloat) 0.474817,
-       (GLfloat) 0.853444, (GLfloat) - 0.499176, (GLfloat) 0.149855,
-       (GLfloat) 0.854917, (GLfloat) - 0.496116, (GLfloat) 0.151614,
-       (GLfloat) 0.791852, (GLfloat) - 0.594634, (GLfloat) 0.139213,
-       (GLfloat) 0.794008, (GLfloat) - 0.591177, (GLfloat) 0.141637,
-       (GLfloat) 0.694144, (GLfloat) - 0.562907, (GLfloat) 0.448664,
-       (GLfloat) 0.690998, (GLfloat) - 0.573547, (GLfloat) 0.439961,
-       (GLfloat) 0.750611, (GLfloat) - 0.453426, (GLfloat) - 0.480612,
-       (GLfloat) 0.748687, (GLfloat) - 0.462620, (GLfloat) - 0.474817,
-       (GLfloat) 0.690999, (GLfloat) - 0.573546, (GLfloat) - 0.439961,
-       (GLfloat) 0.694144, (GLfloat) - 0.562907, (GLfloat) - 0.448664,
-       (GLfloat) 0.791852, (GLfloat) - 0.594634, (GLfloat) - 0.139213,
-       (GLfloat) 0.794008, (GLfloat) - 0.591177, (GLfloat) - 0.141637,
-       (GLfloat) 0.854917, (GLfloat) - 0.496116, (GLfloat) - 0.151614,
-       (GLfloat) 0.853444, (GLfloat) - 0.499176, (GLfloat) - 0.149855,
-       (GLfloat) 0.706858, (GLfloat) - 0.559116, (GLfloat) - 0.433291,
-       (GLfloat) 0.709825, (GLfloat) - 0.548164, (GLfloat) - 0.442339,
-       (GLfloat) 0.811265, (GLfloat) - 0.568214, (GLfloat) - 0.137773,
-       (GLfloat) 0.813383, (GLfloat) - 0.564575, (GLfloat) - 0.140223,
-       (GLfloat) 0.777074, (GLfloat) - 0.614312, (GLfloat) - 0.137026,
-       (GLfloat) 0.774649, (GLfloat) - 0.617973, (GLfloat) - 0.134272,
-       (GLfloat) 0.678133, (GLfloat) - 0.593660, (GLfloat) - 0.433248,
-       (GLfloat) 0.674631, (GLfloat) - 0.604835, (GLfloat) - 0.423139,
-       (GLfloat) 0.805725, (GLfloat) - 0.334902, (GLfloat) 0.488515,
-       (GLfloat) 0.805089, (GLfloat) - 0.341176, (GLfloat) 0.485212,
-       (GLfloat) 0.923877, (GLfloat) - 0.350079, (GLfloat) 0.154583,
-       (GLfloat) 0.924516, (GLfloat) - 0.347968, (GLfloat) 0.155526,
-       (GLfloat) 0.927012, (GLfloat) - 0.340158, (GLfloat) 0.157929,
-       (GLfloat) 0.924342, (GLfloat) - 0.348817, (GLfloat) 0.154657,
-       (GLfloat) 0.800744, (GLfloat) - 0.354688, (GLfloat) 0.482707,
-       (GLfloat) 0.801658, (GLfloat) - 0.348585, (GLfloat) 0.485626,
-       (GLfloat) 0.805725, (GLfloat) - 0.334902, (GLfloat) - 0.488516,
-       (GLfloat) 0.805089, (GLfloat) - 0.341176, (GLfloat) - 0.485212,
-       (GLfloat) 0.801658, (GLfloat) - 0.348585, (GLfloat) - 0.485626,
-       (GLfloat) 0.800744, (GLfloat) - 0.354688, (GLfloat) - 0.482707,
-       (GLfloat) 0.927012, (GLfloat) - 0.340158, (GLfloat) - 0.157929,
-       (GLfloat) 0.924342, (GLfloat) - 0.348818, (GLfloat) - 0.154657,
-       (GLfloat) 0.924516, (GLfloat) - 0.347968, (GLfloat) - 0.155526,
-       (GLfloat) 0.923877, (GLfloat) - 0.350079, (GLfloat) - 0.154583,
-       (GLfloat) 0.283621, (GLfloat) - 0.936578, (GLfloat) - 0.205866,
-       (GLfloat) 0.264056, (GLfloat) - 0.947923, (GLfloat) - 0.178092,
-       (GLfloat) 0.315105, (GLfloat) - 0.946548, (GLfloat) - 0.068965,
-       (GLfloat) 0.304029, (GLfloat) - 0.949849, (GLfloat) - 0.073162,
-       (GLfloat) 0.681274, (GLfloat) - 0.722487, (GLfloat) - 0.117805,
-       (GLfloat) 0.706887, (GLfloat) - 0.694350, (GLfloat) - 0.134864,
-       (GLfloat) 0.560017, (GLfloat) - 0.754527, (GLfloat) - 0.342154,
-       (GLfloat) 0.577334, (GLfloat) - 0.729313, (GLfloat) - 0.367135,
-       (GLfloat) 0.264055, (GLfloat) - 0.947923, (GLfloat) 0.178092,
-       (GLfloat) 0.283621, (GLfloat) - 0.936578, (GLfloat) 0.205866,
-       (GLfloat) 0.560017, (GLfloat) - 0.754527, (GLfloat) 0.342155,
-       (GLfloat) 0.577334, (GLfloat) - 0.729313, (GLfloat) 0.367135,
-       (GLfloat) 0.706888, (GLfloat) - 0.694350, (GLfloat) 0.134864,
-       (GLfloat) 0.681274, (GLfloat) - 0.722487, (GLfloat) 0.117805,
-       (GLfloat) 0.304029, (GLfloat) - 0.949849, (GLfloat) 0.073162,
-       (GLfloat) 0.315105, (GLfloat) - 0.946548, (GLfloat) 0.068965,
-       (GLfloat) 0.484153, (GLfloat) - 0.303994, (GLfloat) - 0.820478,
-       (GLfloat) 0.489225, (GLfloat) - 0.294821, (GLfloat) - 0.820816,
-       (GLfloat) 0.156385, (GLfloat) - 0.248336, (GLfloat) - 0.955967,
-       (GLfloat) 0.151648, (GLfloat) - 0.258100, (GLfloat) - 0.954142,
-       (GLfloat) 0.160268, (GLfloat) - 0.275037, (GLfloat) - 0.947981,
-       (GLfloat) 0.153877, (GLfloat) - 0.291476, (GLfloat) - 0.944120,
-       (GLfloat) 0.481923, (GLfloat) - 0.335378, (GLfloat) - 0.809489,
-       (GLfloat) 0.489881, (GLfloat) - 0.318876, (GLfloat) - 0.811378,
-       (GLfloat) - 0.511124, (GLfloat) - 0.173861, (GLfloat) - 0.841739,
-       (GLfloat) - 0.507919, (GLfloat) - 0.180984, (GLfloat) - 0.842177,
-       (GLfloat) - 0.502437, (GLfloat) - 0.243295, (GLfloat) - 0.829678,
-       (GLfloat) - 0.501146, (GLfloat) - 0.246358, (GLfloat) - 0.829554,
-       (GLfloat) - 0.162122, (GLfloat) - 0.255565, (GLfloat) - 0.953102,
-       (GLfloat) - 0.162682, (GLfloat) - 0.257426, (GLfloat) - 0.952505,
-       (GLfloat) - 0.167026, (GLfloat) - 0.217710, (GLfloat) - 0.961616,
-       (GLfloat) - 0.163395, (GLfloat) - 0.208930, (GLfloat) - 0.964184,
-       (GLfloat) - 0.205866, (GLfloat) - 0.936578, (GLfloat) - 0.283621,
-       (GLfloat) - 0.178092, (GLfloat) - 0.947923, (GLfloat) - 0.264055,
-       (GLfloat) - 0.068965, (GLfloat) - 0.946548, (GLfloat) - 0.315105,
-       (GLfloat) - 0.073162, (GLfloat) - 0.949849, (GLfloat) - 0.304029,
-       (GLfloat) - 0.124478, (GLfloat) - 0.692921, (GLfloat) - 0.710188,
-       (GLfloat) - 0.138779, (GLfloat) - 0.668059, (GLfloat) - 0.731052,
-       (GLfloat) - 0.361212, (GLfloat) - 0.721974, (GLfloat) - 0.590152,
-       (GLfloat) - 0.383785, (GLfloat) - 0.697396, (GLfloat) - 0.605267,
-       (GLfloat) 0.178092, (GLfloat) - 0.947923, (GLfloat) - 0.264056,
-       (GLfloat) 0.205866, (GLfloat) - 0.936578, (GLfloat) - 0.283621,
-       (GLfloat) 0.341480, (GLfloat) - 0.751054, (GLfloat) - 0.565075,
-       (GLfloat) 0.372366, (GLfloat) - 0.719604, (GLfloat) - 0.586101,
-       (GLfloat) 0.138114, (GLfloat) - 0.672674, (GLfloat) - 0.726935,
-       (GLfloat) 0.117913, (GLfloat) - 0.706722, (GLfloat) - 0.697597,
-       (GLfloat) 0.073162, (GLfloat) - 0.949849, (GLfloat) - 0.304029,
-       (GLfloat) 0.068965, (GLfloat) - 0.946548, (GLfloat) - 0.315105,
-       (GLfloat) - 0.850324, (GLfloat) - 0.141983, (GLfloat) - 0.506744,
-       (GLfloat) - 0.849870, (GLfloat) - 0.138328, (GLfloat) - 0.508515,
-       (GLfloat) - 0.979216, (GLfloat) - 0.120924, (GLfloat) - 0.162831,
-       (GLfloat) - 0.979161, (GLfloat) - 0.122085, (GLfloat) - 0.162295,
-       (GLfloat) - 0.968183, (GLfloat) - 0.188900, (GLfloat) - 0.164128,
-       (GLfloat) - 0.966893, (GLfloat) - 0.198288, (GLfloat) - 0.160620,
-       (GLfloat) - 0.836326, (GLfloat) - 0.225408, (GLfloat) - 0.499751,
-       (GLfloat) - 0.836389, (GLfloat) - 0.213159, (GLfloat) - 0.504991,
-       (GLfloat) - 0.850324, (GLfloat) - 0.141983, (GLfloat) 0.506744,
-       (GLfloat) - 0.849870, (GLfloat) - 0.138328, (GLfloat) 0.508515,
-       (GLfloat) - 0.836389, (GLfloat) - 0.213159, (GLfloat) 0.504991,
-       (GLfloat) - 0.836326, (GLfloat) - 0.225408, (GLfloat) 0.499751,
-       (GLfloat) - 0.968183, (GLfloat) - 0.188900, (GLfloat) 0.164128,
-       (GLfloat) - 0.966894, (GLfloat) - 0.198288, (GLfloat) 0.160620,
-       (GLfloat) - 0.979161, (GLfloat) - 0.122085, (GLfloat) 0.162295,
-       (GLfloat) - 0.979216, (GLfloat) - 0.120924, (GLfloat) 0.162831,
-       (GLfloat) - 0.283620, (GLfloat) - 0.936578, (GLfloat) 0.205866,
-       (GLfloat) - 0.264055, (GLfloat) - 0.947923, (GLfloat) 0.178091,
-       (GLfloat) - 0.315105, (GLfloat) - 0.946548, (GLfloat) 0.068965,
-       (GLfloat) - 0.304029, (GLfloat) - 0.949849, (GLfloat) 0.073162,
-       (GLfloat) - 0.727074, (GLfloat) - 0.675149, (GLfloat) 0.124651,
-       (GLfloat) - 0.751597, (GLfloat) - 0.644138, (GLfloat) 0.142086,
-       (GLfloat) - 0.595577, (GLfloat) - 0.717790, (GLfloat) 0.360647,
-       (GLfloat) - 0.614268, (GLfloat) - 0.686473, (GLfloat) 0.389139,
-       (GLfloat) - 0.264055, (GLfloat) - 0.947923, (GLfloat) - 0.178092,
-       (GLfloat) - 0.283620, (GLfloat) - 0.936578, (GLfloat) - 0.205866,
-       (GLfloat) - 0.595576, (GLfloat) - 0.717790, (GLfloat) - 0.360646,
-       (GLfloat) - 0.614268, (GLfloat) - 0.686473, (GLfloat) - 0.389139,
-       (GLfloat) - 0.751597, (GLfloat) - 0.644138, (GLfloat) - 0.142087,
-       (GLfloat) - 0.727074, (GLfloat) - 0.675149, (GLfloat) - 0.124651,
-       (GLfloat) - 0.304029, (GLfloat) - 0.949849, (GLfloat) - 0.073163,
-       (GLfloat) - 0.315105, (GLfloat) - 0.946548, (GLfloat) - 0.068965,
-       (GLfloat) - 0.511124, (GLfloat) - 0.173862, (GLfloat) 0.841739,
-       (GLfloat) - 0.507920, (GLfloat) - 0.180984, (GLfloat) 0.842177,
-       (GLfloat) - 0.167026, (GLfloat) - 0.217709, (GLfloat) 0.961616,
-       (GLfloat) - 0.163395, (GLfloat) - 0.208930, (GLfloat) 0.964184,
-       (GLfloat) - 0.162682, (GLfloat) - 0.257426, (GLfloat) 0.952505,
-       (GLfloat) - 0.162122, (GLfloat) - 0.255564, (GLfloat) 0.953102,
-       (GLfloat) - 0.501146, (GLfloat) - 0.246358, (GLfloat) 0.829554,
-       (GLfloat) - 0.502437, (GLfloat) - 0.243295, (GLfloat) 0.829677,
-       (GLfloat) 0.484153, (GLfloat) - 0.303994, (GLfloat) 0.820478,
-       (GLfloat) 0.489225, (GLfloat) - 0.294820, (GLfloat) 0.820816,
-       (GLfloat) 0.489881, (GLfloat) - 0.318876, (GLfloat) 0.811378,
-       (GLfloat) 0.481923, (GLfloat) - 0.335378, (GLfloat) 0.809489,
-       (GLfloat) 0.160269, (GLfloat) - 0.275036, (GLfloat) 0.947982,
-       (GLfloat) 0.153877, (GLfloat) - 0.291476, (GLfloat) 0.944120,
-       (GLfloat) 0.151647, (GLfloat) - 0.258100, (GLfloat) 0.954142,
-       (GLfloat) 0.156385, (GLfloat) - 0.248335, (GLfloat) 0.955967,
-       (GLfloat) 0.205866, (GLfloat) - 0.936578, (GLfloat) 0.283620,
-       (GLfloat) 0.178092, (GLfloat) - 0.947923, (GLfloat) 0.264055,
-       (GLfloat) 0.068965, (GLfloat) - 0.946548, (GLfloat) 0.315105,
-       (GLfloat) 0.073163, (GLfloat) - 0.949849, (GLfloat) 0.304029,
-       (GLfloat) 0.117913, (GLfloat) - 0.706722, (GLfloat) 0.697597,
-       (GLfloat) 0.138114, (GLfloat) - 0.672674, (GLfloat) 0.726935,
-       (GLfloat) 0.341480, (GLfloat) - 0.751053, (GLfloat) 0.565076,
-       (GLfloat) 0.372365, (GLfloat) - 0.719604, (GLfloat) 0.586101,
-       (GLfloat) - 0.178091, (GLfloat) - 0.947923, (GLfloat) 0.264055,
-       (GLfloat) - 0.205866, (GLfloat) - 0.936578, (GLfloat) 0.283620,
-       (GLfloat) - 0.361213, (GLfloat) - 0.721973, (GLfloat) 0.590152,
-       (GLfloat) - 0.383785, (GLfloat) - 0.697396, (GLfloat) 0.605267,
-       (GLfloat) - 0.138779, (GLfloat) - 0.668060, (GLfloat) 0.731052,
-       (GLfloat) - 0.124478, (GLfloat) - 0.692921, (GLfloat) 0.710188,
-       (GLfloat) - 0.073162, (GLfloat) - 0.949849, (GLfloat) 0.304029,
-       (GLfloat) - 0.068965, (GLfloat) - 0.946548, (GLfloat) 0.315105,
-       (GLfloat) 0.135802, (GLfloat) - 0.982944, (GLfloat) - 0.124011,
-       (GLfloat) 0.124011, (GLfloat) - 0.982944, (GLfloat) - 0.135802,
-       (GLfloat) 0.043834, (GLfloat) - 0.993006, (GLfloat) - 0.109621,
-       (GLfloat) 0.039656, (GLfloat) - 0.992607, (GLfloat) - 0.114709,
-       (GLfloat) 0.030163, (GLfloat) - 0.998998, (GLfloat) - 0.033079,
-       (GLfloat) 0.033079, (GLfloat) - 0.998998, (GLfloat) - 0.030163,
-       (GLfloat) 0.109621, (GLfloat) - 0.993006, (GLfloat) - 0.043834,
-       (GLfloat) 0.114709, (GLfloat) - 0.992607, (GLfloat) - 0.039656,
-       (GLfloat) - 0.124011, (GLfloat) - 0.982944, (GLfloat) - 0.135802,
-       (GLfloat) - 0.135802, (GLfloat) - 0.982944, (GLfloat) - 0.124011,
-       (GLfloat) - 0.109621, (GLfloat) - 0.993006, (GLfloat) - 0.043834,
-       (GLfloat) - 0.114709, (GLfloat) - 0.992607, (GLfloat) - 0.039656,
-       (GLfloat) - 0.033079, (GLfloat) - 0.998998, (GLfloat) - 0.030163,
-       (GLfloat) - 0.030163, (GLfloat) - 0.998998, (GLfloat) - 0.033079,
-       (GLfloat) - 0.043834, (GLfloat) - 0.993006, (GLfloat) - 0.109621,
-       (GLfloat) - 0.039656, (GLfloat) - 0.992607, (GLfloat) - 0.114709,
-       (GLfloat) - 0.135802, (GLfloat) - 0.982944, (GLfloat) 0.124011,
-       (GLfloat) - 0.124011, (GLfloat) - 0.982944, (GLfloat) 0.135802,
-       (GLfloat) - 0.043834, (GLfloat) - 0.993006, (GLfloat) 0.109621,
-       (GLfloat) - 0.039656, (GLfloat) - 0.992607, (GLfloat) 0.114709,
-       (GLfloat) - 0.030163, (GLfloat) - 0.998998, (GLfloat) 0.033079,
-       (GLfloat) - 0.033079, (GLfloat) - 0.998998, (GLfloat) 0.030163,
-       (GLfloat) - 0.109621, (GLfloat) - 0.993006, (GLfloat) 0.043834,
-       (GLfloat) - 0.114709, (GLfloat) - 0.992607, (GLfloat) 0.039656,
-       (GLfloat) 0.124011, (GLfloat) - 0.982944, (GLfloat) 0.135802,
-       (GLfloat) 0.135802, (GLfloat) - 0.982944, (GLfloat) 0.124011,
-       (GLfloat) 0.109621, (GLfloat) - 0.993006, (GLfloat) 0.043834,
-       (GLfloat) 0.114709, (GLfloat) - 0.992607, (GLfloat) 0.039656,
-       (GLfloat) 0.033079, (GLfloat) - 0.998998, (GLfloat) 0.030163,
-       (GLfloat) 0.030163, (GLfloat) - 0.998998, (GLfloat) 0.033079,
-       (GLfloat) 0.043834, (GLfloat) - 0.993006, (GLfloat) 0.109621,
-       (GLfloat) 0.039656, (GLfloat) - 0.992607, (GLfloat) 0.114709,
-};
-
-static unsigned short int s1_2_POLS[] =
-{
-      3, 12, 76, 74, 1, 3, 12, 74, 82, 1, 3, 22, 78, 74, 1, 3, 22, 74, 76, 1,
-      3, 78, 20, 80, 1, 3, 80, 74, 78, 1, 3, 80, 28, 82, 1, 3, 82, 74, 80, 1,
-      3, 13, 84, 77, 1, 3, 13, 77, 88, 1, 3, 84, 24, 86, 1, 3, 86, 77, 84, 1,
-      3, 86, 20, 78, 1, 3, 78, 77, 86, 1, 3, 22, 88, 77, 1, 3, 22, 77, 78, 1,
-      3, 14, 90, 85, 1, 3, 14, 85, 93, 1, 3, 26, 91, 85, 1, 3, 26, 85, 90, 1,
-      3, 20, 86, 85, 1, 3, 20, 85, 91, 1, 3, 86, 24, 93, 1, 3, 93, 85, 86, 1,
-      3, 15, 95, 79, 1, 3, 15, 79, 97, 1, 3, 95, 28, 80, 1, 3, 80, 79, 95, 1,
-      3, 20, 91, 79, 1, 3, 20, 79, 80, 1, 3, 26, 97, 79, 1, 3, 26, 79, 91, 1,
-    3, 13, 99, 83, 1, 3, 13, 83, 84, 1, 3, 99, 30, 101, 1, 3, 101, 83, 99, 1,
-   3, 23, 102, 83, 1, 3, 23, 83, 101, 1, 3, 24, 84, 83, 1, 3, 24, 83, 102, 1,
-       3, 108, 16, 104, 1, 3, 104, 100, 108, 1, 3, 32, 106, 100, 1, 3, 32, 100, 104, 1,
-       3, 106, 23, 101, 1, 3, 101, 100, 106, 1, 3, 30, 108, 100, 1, 3, 30, 100, 101, 1,
-       3, 17, 110, 105, 1, 3, 17, 105, 113, 1, 3, 110, 33, 111, 1, 3, 111, 105, 110, 1,
-       3, 23, 106, 105, 1, 3, 23, 105, 111, 1, 3, 106, 32, 113, 1, 3, 113, 105, 106, 1,
-   3, 114, 14, 93, 1, 3, 93, 92, 114, 1, 3, 24, 102, 92, 1, 3, 24, 92, 93, 1,
-  3, 23, 111, 92, 1, 3, 23, 92, 102, 1, 3, 33, 114, 92, 1, 3, 33, 92, 111, 1,
-       3, 104, 16, 116, 1, 3, 116, 103, 104, 1, 3, 35, 118, 103, 1, 3, 35, 103, 116, 1,
-       3, 118, 31, 119, 1, 3, 119, 103, 118, 1, 3, 32, 104, 103, 1, 3, 32, 103, 119, 1,
-       3, 125, 18, 121, 1, 3, 121, 117, 125, 1, 3, 36, 123, 117, 1, 3, 36, 117, 121, 1,
-       3, 123, 31, 118, 1, 3, 118, 117, 123, 1, 3, 35, 125, 117, 1, 3, 35, 117, 118, 1,
-       3, 19, 127, 122, 1, 3, 19, 122, 130, 1, 3, 37, 128, 122, 1, 3, 37, 122, 127, 1,
-       3, 128, 31, 123, 1, 3, 123, 122, 128, 1, 3, 36, 130, 122, 1, 3, 36, 122, 123, 1,
-       3, 17, 113, 112, 1, 3, 17, 112, 131, 1, 3, 32, 119, 112, 1, 3, 32, 112, 113, 1,
-       3, 119, 31, 128, 1, 3, 128, 112, 119, 1, 3, 37, 131, 112, 1, 3, 37, 112, 128, 1,
-       3, 121, 18, 133, 1, 3, 133, 120, 121, 1, 3, 39, 134, 120, 1, 3, 39, 120, 133, 1,
-       3, 134, 27, 135, 1, 3, 135, 120, 134, 1, 3, 36, 121, 120, 1, 3, 36, 120, 135, 1,
-    3, 12, 82, 81, 1, 3, 12, 81, 138, 1, 3, 28, 136, 81, 1, 3, 28, 81, 82, 1,
-3, 27, 134, 81, 1, 3, 27, 81, 136, 1, 3, 134, 39, 138, 1, 3, 138, 81, 134, 1,
-  3, 95, 15, 139, 1, 3, 139, 94, 95, 1, 3, 40, 140, 94, 1, 3, 40, 94, 139, 1,
-   3, 27, 136, 94, 1, 3, 27, 94, 140, 1, 3, 28, 95, 94, 1, 3, 28, 94, 136, 1,
-       3, 19, 130, 129, 1, 3, 19, 129, 141, 1, 3, 130, 36, 135, 1, 3, 135, 129, 130, 1,
-       3, 27, 140, 129, 1, 3, 27, 129, 135, 1, 3, 140, 40, 141, 1, 3, 141, 129, 140, 1,
- 3, 14, 114, 89, 1, 3, 14, 89, 90, 1, 3, 114, 33, 142, 1, 3, 142, 89, 114, 1,
-  3, 25, 143, 89, 1, 3, 25, 89, 142, 1, 3, 143, 26, 90, 1, 3, 90, 89, 143, 1,
-       3, 17, 131, 109, 1, 3, 17, 109, 110, 1, 3, 131, 37, 144, 1, 3, 144, 109, 131, 1,
-       3, 25, 142, 109, 1, 3, 25, 109, 144, 1, 3, 142, 33, 110, 1, 3, 110, 109, 142, 1,
-       3, 19, 141, 126, 1, 3, 19, 126, 127, 1, 3, 141, 40, 145, 1, 3, 145, 126, 141, 1,
-       3, 25, 144, 126, 1, 3, 25, 126, 145, 1, 3, 144, 37, 127, 1, 3, 127, 126, 144, 1,
-   3, 15, 97, 96, 1, 3, 15, 96, 139, 1, 3, 97, 26, 143, 1, 3, 143, 96, 97, 1,
-3, 25, 145, 96, 1, 3, 25, 96, 143, 1, 3, 145, 40, 139, 1, 3, 139, 96, 145, 1,
- 3, 12, 146, 75, 1, 3, 12, 75, 76, 1, 3, 146, 41, 148, 1, 3, 148, 75, 146, 1,
-  3, 21, 149, 75, 1, 3, 21, 75, 148, 1, 3, 149, 22, 76, 1, 3, 76, 75, 149, 1,
-       3, 155, 8, 151, 1, 3, 151, 147, 155, 1, 3, 43, 153, 147, 1, 3, 43, 147, 151, 1,
-       3, 153, 21, 148, 1, 3, 148, 147, 153, 1, 3, 41, 155, 147, 1, 3, 41, 147, 148, 1,
-       3, 160, 11, 157, 1, 3, 157, 152, 160, 1, 3, 44, 158, 152, 1, 3, 44, 152, 157, 1,
-       3, 158, 21, 153, 1, 3, 153, 152, 158, 1, 3, 43, 160, 152, 1, 3, 43, 152, 153, 1,
-   3, 13, 88, 87, 1, 3, 13, 87, 161, 1, 3, 88, 22, 149, 1, 3, 149, 87, 88, 1,
-3, 21, 158, 87, 1, 3, 21, 87, 149, 1, 3, 158, 44, 161, 1, 3, 161, 87, 158, 1,
-       3, 18, 162, 132, 1, 3, 18, 132, 133, 1, 3, 162, 45, 164, 1, 3, 164, 132, 162, 1,
-       3, 38, 165, 132, 1, 3, 38, 132, 164, 1, 3, 165, 39, 133, 1, 3, 133, 132, 165, 1,
-       3, 170, 9, 167, 1, 3, 167, 163, 170, 1, 3, 47, 168, 163, 1, 3, 47, 163, 167, 1,
-       3, 168, 38, 164, 1, 3, 164, 163, 168, 1, 3, 45, 170, 163, 1, 3, 45, 163, 164, 1,
-3, 8, 155, 154, 1, 3, 8, 154, 173, 1, 3, 155, 41, 171, 1, 3, 171, 154, 155, 1,
-       3, 38, 168, 154, 1, 3, 38, 154, 171, 1, 3, 168, 47, 173, 1, 3, 173, 154, 168, 1,
-       3, 146, 12, 138, 1, 3, 138, 137, 146, 1, 3, 39, 165, 137, 1, 3, 39, 137, 138, 1,
-       3, 165, 38, 171, 1, 3, 171, 137, 165, 1, 3, 41, 146, 137, 1, 3, 41, 137, 171, 1,
-       3, 16, 108, 107, 1, 3, 16, 107, 177, 1, 3, 108, 30, 174, 1, 3, 174, 107, 108, 1,
-       3, 29, 176, 107, 1, 3, 29, 107, 174, 1, 3, 176, 50, 177, 1, 3, 177, 107, 176, 1,
-  3, 99, 13, 161, 1, 3, 161, 98, 99, 1, 3, 44, 178, 98, 1, 3, 44, 98, 161, 1,
- 3, 178, 29, 174, 1, 3, 174, 98, 178, 1, 3, 30, 99, 98, 1, 3, 30, 98, 174, 1,
-       3, 11, 180, 156, 1, 3, 11, 156, 157, 1, 3, 180, 49, 181, 1, 3, 181, 156, 180, 1,
-       3, 29, 178, 156, 1, 3, 29, 156, 181, 1, 3, 178, 44, 157, 1, 3, 157, 156, 178, 1,
-       3, 185, 10, 183, 1, 3, 183, 175, 185, 1, 3, 50, 176, 175, 1, 3, 50, 175, 183, 1,
-       3, 176, 29, 181, 1, 3, 181, 175, 176, 1, 3, 49, 185, 175, 1, 3, 49, 175, 181, 1,
-       3, 162, 18, 125, 1, 3, 125, 124, 162, 1, 3, 35, 186, 124, 1, 3, 35, 124, 125, 1,
-       3, 186, 34, 187, 1, 3, 187, 124, 186, 1, 3, 45, 162, 124, 1, 3, 45, 124, 187, 1,
-       3, 116, 16, 177, 1, 3, 177, 115, 116, 1, 3, 50, 188, 115, 1, 3, 50, 115, 177, 1,
-       3, 188, 34, 186, 1, 3, 186, 115, 188, 1, 3, 35, 116, 115, 1, 3, 35, 115, 186, 1,
-       3, 183, 10, 190, 1, 3, 190, 182, 183, 1, 3, 52, 191, 182, 1, 3, 52, 182, 190, 1,
-       3, 191, 34, 188, 1, 3, 188, 182, 191, 1, 3, 188, 50, 183, 1, 3, 183, 182, 188, 1,
-       3, 193, 9, 170, 1, 3, 170, 169, 193, 1, 3, 170, 45, 187, 1, 3, 187, 169, 170, 1,
-       3, 187, 34, 191, 1, 3, 191, 169, 187, 1, 3, 52, 193, 169, 1, 3, 52, 169, 191, 1,
-3, 1, 196, 194, 1, 3, 1, 194, 201, 1, 3, 54, 198, 194, 1, 3, 54, 194, 196, 1,
-       3, 198, 46, 199, 1, 3, 199, 194, 198, 1, 3, 199, 56, 201, 1, 3, 201, 194, 199, 1,
-3, 3, 203, 197, 1, 3, 3, 197, 206, 1, 3, 203, 55, 204, 1, 3, 204, 197, 203, 1,
-       3, 46, 198, 197, 1, 3, 46, 197, 204, 1, 3, 198, 54, 206, 1, 3, 206, 197, 198, 1,
-       3, 208, 8, 173, 1, 3, 173, 172, 208, 1, 3, 47, 207, 172, 1, 3, 47, 172, 173, 1,
-       3, 207, 46, 204, 1, 3, 204, 172, 207, 1, 3, 55, 208, 172, 1, 3, 55, 172, 204, 1,
-3, 9, 209, 166, 1, 3, 9, 166, 167, 1, 3, 56, 199, 166, 1, 3, 56, 166, 209, 1,
-       3, 46, 207, 166, 1, 3, 46, 166, 199, 1, 3, 207, 47, 167, 1, 3, 167, 166, 207, 1,
-3, 1, 201, 200, 1, 3, 1, 200, 214, 1, 3, 201, 56, 210, 1, 3, 210, 200, 201, 1,
-       3, 51, 212, 200, 1, 3, 51, 200, 210, 1, 3, 212, 59, 214, 1, 3, 214, 200, 212, 1,
-       3, 209, 9, 193, 1, 3, 193, 192, 209, 1, 3, 52, 215, 192, 1, 3, 52, 192, 193, 1,
-       3, 215, 51, 210, 1, 3, 210, 192, 215, 1, 3, 56, 209, 192, 1, 3, 56, 192, 210, 1,
-       3, 190, 10, 216, 1, 3, 216, 189, 190, 1, 3, 57, 217, 189, 1, 3, 57, 189, 216, 1,
-       3, 217, 51, 215, 1, 3, 215, 189, 217, 1, 3, 52, 190, 189, 1, 3, 52, 189, 215, 1,
-3, 0, 219, 211, 1, 3, 0, 211, 221, 1, 3, 219, 59, 212, 1, 3, 212, 211, 219, 1,
-       3, 51, 217, 211, 1, 3, 51, 211, 212, 1, 3, 217, 57, 221, 1, 3, 221, 211, 217, 1,
-3, 0, 221, 220, 1, 3, 0, 220, 226, 1, 3, 221, 57, 222, 1, 3, 222, 220, 221, 1,
-       3, 222, 48, 224, 1, 3, 224, 220, 222, 1, 3, 62, 226, 220, 1, 3, 62, 220, 224, 1,
-       3, 10, 185, 184, 1, 3, 10, 184, 216, 1, 3, 185, 49, 227, 1, 3, 227, 184, 185, 1,
-       3, 48, 222, 184, 1, 3, 48, 184, 227, 1, 3, 57, 216, 184, 1, 3, 57, 184, 222, 1,
-       3, 180, 11, 228, 1, 3, 228, 179, 180, 1, 3, 60, 229, 179, 1, 3, 60, 179, 228, 1,
-       3, 229, 48, 227, 1, 3, 227, 179, 229, 1, 3, 49, 180, 179, 1, 3, 49, 179, 227, 1,
-3, 2, 231, 223, 1, 3, 2, 223, 233, 1, 3, 231, 62, 224, 1, 3, 224, 223, 231, 1,
-       3, 48, 229, 223, 1, 3, 48, 223, 224, 1, 3, 229, 60, 233, 1, 3, 233, 223, 229, 1,
-3, 2, 233, 232, 1, 3, 2, 232, 237, 1, 3, 233, 60, 234, 1, 3, 234, 232, 233, 1,
-       3, 42, 235, 232, 1, 3, 42, 232, 234, 1, 3, 235, 64, 237, 1, 3, 237, 232, 235, 1,
-       3, 228, 11, 160, 1, 3, 160, 159, 228, 1, 3, 43, 238, 159, 1, 3, 43, 159, 160, 1,
-       3, 238, 42, 234, 1, 3, 234, 159, 238, 1, 3, 60, 228, 159, 1, 3, 60, 159, 234, 1,
-       3, 151, 8, 208, 1, 3, 208, 150, 151, 1, 3, 55, 239, 150, 1, 3, 55, 150, 208, 1,
-       3, 239, 42, 238, 1, 3, 238, 150, 239, 1, 3, 43, 151, 150, 1, 3, 43, 150, 238, 1,
-3, 3, 241, 202, 1, 3, 3, 202, 203, 1, 3, 241, 64, 235, 1, 3, 235, 202, 241, 1,
-       3, 42, 239, 202, 1, 3, 42, 202, 235, 1, 3, 239, 55, 203, 1, 3, 203, 202, 239, 1,
-       3, 245, 2, 237, 1, 3, 237, 236, 245, 1, 3, 64, 242, 236, 1, 3, 64, 236, 237, 1,
-       3, 242, 63, 244, 1, 3, 244, 236, 242, 1, 3, 68, 245, 236, 1, 3, 68, 236, 244, 1,
-       3, 241, 3, 246, 1, 3, 246, 240, 241, 1, 3, 65, 248, 240, 1, 3, 65, 240, 246, 1,
-       3, 248, 63, 242, 1, 3, 242, 240, 248, 1, 3, 64, 241, 240, 1, 3, 64, 240, 242, 1,
-3, 4, 250, 247, 1, 3, 4, 247, 253, 1, 3, 67, 251, 247, 1, 3, 67, 247, 250, 1,
-       3, 63, 248, 247, 1, 3, 63, 247, 251, 1, 3, 248, 65, 253, 1, 3, 253, 247, 248, 1,
-3, 7, 255, 243, 1, 3, 7, 243, 257, 1, 3, 255, 68, 244, 1, 3, 244, 243, 255, 1,
-       3, 63, 251, 243, 1, 3, 63, 243, 244, 1, 3, 67, 257, 243, 1, 3, 67, 243, 251, 1,
-       3, 246, 3, 206, 1, 3, 206, 205, 246, 1, 3, 54, 258, 205, 1, 3, 54, 205, 206, 1,
-       3, 258, 53, 259, 1, 3, 259, 205, 258, 1, 3, 65, 246, 205, 1, 3, 65, 205, 259, 1,
-       3, 196, 1, 260, 1, 3, 260, 195, 196, 1, 3, 69, 262, 195, 1, 3, 69, 195, 260, 1,
-       3, 53, 258, 195, 1, 3, 53, 195, 262, 1, 3, 258, 54, 196, 1, 3, 196, 195, 258, 1,
-3, 5, 264, 261, 1, 3, 5, 261, 267, 1, 3, 70, 265, 261, 1, 3, 70, 261, 264, 1,
-       3, 53, 262, 261, 1, 3, 53, 261, 265, 1, 3, 262, 69, 267, 1, 3, 267, 261, 262, 1,
-3, 4, 253, 252, 1, 3, 4, 252, 268, 1, 3, 253, 65, 259, 1, 3, 259, 252, 253, 1,
-       3, 53, 265, 252, 1, 3, 53, 252, 259, 1, 3, 70, 268, 252, 1, 3, 70, 252, 265, 1,
-       3, 260, 1, 214, 1, 3, 214, 213, 260, 1, 3, 59, 269, 213, 1, 3, 59, 213, 214, 1,
-       3, 269, 58, 270, 1, 3, 270, 213, 269, 1, 3, 69, 260, 213, 1, 3, 69, 213, 270, 1,
-       3, 219, 0, 271, 1, 3, 271, 218, 219, 1, 3, 71, 273, 218, 1, 3, 71, 218, 271, 1,
-       3, 273, 58, 269, 1, 3, 269, 218, 273, 1, 3, 59, 219, 218, 1, 3, 59, 218, 269, 1,
-3, 6, 275, 272, 1, 3, 6, 272, 278, 1, 3, 72, 276, 272, 1, 3, 72, 272, 275, 1,
-       3, 58, 273, 272, 1, 3, 58, 272, 276, 1, 3, 273, 71, 278, 1, 3, 278, 272, 273, 1,
-3, 5, 267, 266, 1, 3, 5, 266, 279, 1, 3, 267, 69, 270, 1, 3, 270, 266, 267, 1,
-       3, 58, 276, 266, 1, 3, 58, 266, 270, 1, 3, 72, 279, 266, 1, 3, 72, 266, 276, 1,
-       3, 271, 0, 226, 1, 3, 226, 225, 271, 1, 3, 226, 62, 280, 1, 3, 280, 225, 226, 1,
-       3, 61, 281, 225, 1, 3, 61, 225, 280, 1, 3, 71, 271, 225, 1, 3, 71, 225, 281, 1,
-       3, 231, 2, 245, 1, 3, 245, 230, 231, 1, 3, 68, 282, 230, 1, 3, 68, 230, 245, 1,
-       3, 282, 61, 280, 1, 3, 280, 230, 282, 1, 3, 62, 231, 230, 1, 3, 62, 230, 280, 1,
-3, 7, 283, 254, 1, 3, 7, 254, 255, 1, 3, 73, 284, 254, 1, 3, 73, 254, 283, 1,
-       3, 61, 282, 254, 1, 3, 61, 254, 284, 1, 3, 282, 68, 255, 1, 3, 255, 254, 282, 1,
-3, 6, 278, 277, 1, 3, 6, 277, 285, 1, 3, 278, 71, 281, 1, 3, 281, 277, 278, 1,
-       3, 61, 284, 277, 1, 3, 61, 277, 281, 1, 3, 73, 285, 277, 1, 3, 73, 277, 284, 1,
-3, 4, 268, 249, 1, 3, 4, 249, 250, 1, 3, 268, 70, 286, 1, 3, 286, 249, 268, 1,
-       3, 66, 287, 249, 1, 3, 66, 249, 286, 1, 3, 287, 67, 250, 1, 3, 250, 249, 287, 1,
-3, 5, 279, 263, 1, 3, 5, 263, 264, 1, 3, 279, 72, 288, 1, 3, 288, 263, 279, 1,
-       3, 66, 286, 263, 1, 3, 66, 263, 288, 1, 3, 286, 70, 264, 1, 3, 264, 263, 286, 1,
-3, 6, 285, 274, 1, 3, 6, 274, 275, 1, 3, 285, 73, 289, 1, 3, 289, 274, 285, 1,
-       3, 66, 288, 274, 1, 3, 66, 274, 289, 1, 3, 288, 72, 275, 1, 3, 275, 274, 288, 1,
-3, 7, 257, 256, 1, 3, 7, 256, 283, 1, 3, 257, 67, 287, 1, 3, 287, 256, 257, 1,
-       3, 66, 289, 256, 1, 3, 66, 256, 287, 1, 3, 289, 73, 283, 1, 3, 283, 256, 289, 1,
-
-       0
-};
-
-struct lwo  LWO_s1_2 =
-{
-       290,                    /* number of points */
-       s1_2_PNTS, s1_2_normals, s1_2_POLS, 0L
-};
-
-#endif /* USE_GL */
-
-/* End of s1_2.c */
diff --git a/hacks/glx/s1_3.c b/hacks/glx/s1_3.c
deleted file mode 100644 (file)
index 1e6f868..0000000
+++ /dev/null
@@ -1,1057 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)s1_3.c       4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Points, polygons, and normal vectors to render "s1_3" in 3D.
- *
- * Generated by lw2ogl.  Link this with your program but do
- * not edit by hand.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include "buildlwo.h"
-
-static GLfloat s1_3_PNTS[] =
-{
-       (GLfloat) 0.386176, (GLfloat) 0.201223, (GLfloat) - 0.326853,
-       (GLfloat) 0.386176, (GLfloat) 0.201223, (GLfloat) - 0.673147,
-       (GLfloat) 0.704261, (GLfloat) 0.116939, (GLfloat) - 0.326853,
-       (GLfloat) 0.704261, (GLfloat) 0.116939, (GLfloat) - 0.673147,
-       (GLfloat) 0.642426, (GLfloat) 0.035438, (GLfloat) - 0.638667,
-       (GLfloat) 0.369306, (GLfloat) 0.083596, (GLfloat) - 0.638667,
-       (GLfloat) 0.369306, (GLfloat) 0.083596, (GLfloat) - 0.361333,
-       (GLfloat) 0.642426, (GLfloat) 0.035438, (GLfloat) - 0.361333,
-       (GLfloat) 0.845007, (GLfloat) 0.268518, (GLfloat) - 0.678159,
-       (GLfloat) 0.620074, (GLfloat) 0.472355, (GLfloat) - 0.678159,
-       (GLfloat) 0.620074, (GLfloat) 0.472355, (GLfloat) - 0.321841,
-       (GLfloat) 0.845007, (GLfloat) 0.268518, (GLfloat) - 0.321841,
-       (GLfloat) 1.115671, (GLfloat) 0.352342, (GLfloat) - 0.673147,
-       (GLfloat) 1.115671, (GLfloat) 0.352342, (GLfloat) - 0.326853,
-       (GLfloat) 1.204957, (GLfloat) 0.421449, (GLfloat) - 0.361333,
-       (GLfloat) 1.204957, (GLfloat) 0.421449, (GLfloat) - 0.638667,
-       (GLfloat) 0.937575, (GLfloat) 0.636550, (GLfloat) - 0.326853,
-       (GLfloat) 1.066291, (GLfloat) 0.661627, (GLfloat) - 0.361333,
-       (GLfloat) 0.937575, (GLfloat) 0.636550, (GLfloat) - 0.673147,
-       (GLfloat) 1.066291, (GLfloat) 0.661627, (GLfloat) - 0.638667,
-       (GLfloat) 1.227578, (GLfloat) 0.320768, (GLfloat) - 0.500000,
-       (GLfloat) 1.017091, (GLfloat) 0.274757, (GLfloat) - 0.500000,
-       (GLfloat) 1.148052, (GLfloat) 0.300668, (GLfloat) - 0.500000,
-       (GLfloat) 1.107591, (GLfloat) 0.526937, (GLfloat) - 0.260702,
-       (GLfloat) 1.194861, (GLfloat) 0.375780, (GLfloat) - 0.324904,
-       (GLfloat) 1.151611, (GLfloat) 0.550768, (GLfloat) - 0.500000,
-       (GLfloat) 1.230206, (GLfloat) 0.391113, (GLfloat) - 0.500000,
-       (GLfloat) 1.107591, (GLfloat) 0.526937, (GLfloat) - 0.739298,
-       (GLfloat) 1.194861, (GLfloat) 0.375780, (GLfloat) - 0.675096,
-       (GLfloat) 0.885754, (GLfloat) 0.445570, (GLfloat) - 0.261655,
-       (GLfloat) 1.026623, (GLfloat) 0.494446, (GLfloat) - 0.263891,
-       (GLfloat) 0.987605, (GLfloat) 0.733106, (GLfloat) - 0.500000,
-       (GLfloat) 1.019270, (GLfloat) 0.677486, (GLfloat) - 0.324904,
-       (GLfloat) 1.141425, (GLfloat) 0.544887, (GLfloat) - 0.322437,
-       (GLfloat) 0.754416, (GLfloat) 0.616383, (GLfloat) - 0.500000,
-       (GLfloat) 0.905194, (GLfloat) 0.688224, (GLfloat) - 0.500000,
-       (GLfloat) 1.019270, (GLfloat) 0.677486, (GLfloat) - 0.675096,
-       (GLfloat) 1.052644, (GLfloat) 0.698661, (GLfloat) - 0.500000,
-       (GLfloat) 0.885754, (GLfloat) 0.445570, (GLfloat) - 0.738345,
-       (GLfloat) 1.026623, (GLfloat) 0.494446, (GLfloat) - 0.736109,
-       (GLfloat) 1.141425, (GLfloat) 0.544887, (GLfloat) - 0.677562,
-       (GLfloat) 0.982068, (GLfloat) 0.320307, (GLfloat) - 0.674787,
-       (GLfloat) 0.801608, (GLfloat) 0.169177, (GLfloat) - 0.500000,
-       (GLfloat) 0.885904, (GLfloat) 0.231457, (GLfloat) - 0.500000,
-       (GLfloat) 0.982068, (GLfloat) 0.320307, (GLfloat) - 0.325213,
-       (GLfloat) 0.789439, (GLfloat) 0.570833, (GLfloat) - 0.674787,
-       (GLfloat) 0.617093, (GLfloat) 0.264045, (GLfloat) - 0.738345,
-       (GLfloat) 0.732540, (GLfloat) 0.370437, (GLfloat) - 0.742944,
-       (GLfloat) 0.617093, (GLfloat) 0.264045, (GLfloat) - 0.261655,
-       (GLfloat) 0.732540, (GLfloat) 0.370437, (GLfloat) - 0.257056,
-       (GLfloat) 0.789439, (GLfloat) 0.570833, (GLfloat) - 0.325213,
-       (GLfloat) 0.432577, (GLfloat) 0.358913, (GLfloat) - 0.500000,
-       (GLfloat) 0.579177, (GLfloat) 0.509417, (GLfloat) - 0.500000,
-       (GLfloat) 0.513237, (GLfloat) 0.088956, (GLfloat) - 0.739298,
-       (GLfloat) 0.545218, (GLfloat) 0.159081, (GLfloat) - 0.736109,
-       (GLfloat) 0.752404, (GLfloat) 0.194475, (GLfloat) - 0.674787,
-       (GLfloat) 0.481782, (GLfloat) 0.333615, (GLfloat) - 0.674787,
-       (GLfloat) 0.481782, (GLfloat) 0.333615, (GLfloat) - 0.325213,
-       (GLfloat) 0.279139, (GLfloat) 0.132156, (GLfloat) - 0.500000,
-       (GLfloat) 0.328343, (GLfloat) 0.216547, (GLfloat) - 0.500000,
-       (GLfloat) 0.752404, (GLfloat) 0.194475, (GLfloat) - 0.325213,
-       (GLfloat) 0.513237, (GLfloat) 0.088956, (GLfloat) - 0.260702,
-       (GLfloat) 0.545218, (GLfloat) 0.159081, (GLfloat) - 0.263891,
-       (GLfloat) 0.747335, (GLfloat) 0.045755, (GLfloat) - 0.500000,
-       (GLfloat) 0.762094, (GLfloat) 0.101615, (GLfloat) - 0.500000,
-       (GLfloat) 0.684631, (GLfloat) 0.057942, (GLfloat) - 0.675096,
-       (GLfloat) 0.502661, (GLfloat) 0.041337, (GLfloat) - 0.500000,
-       (GLfloat) 0.679568, (GLfloat) 0.022087, (GLfloat) - 0.500000,
-       (GLfloat) 0.684631, (GLfloat) 0.057942, (GLfloat) - 0.324904,
-       (GLfloat) 0.342054, (GLfloat) 0.121167, (GLfloat) - 0.675096,
-       (GLfloat) 0.504703, (GLfloat) 0.052920, (GLfloat) - 0.677562,
-       (GLfloat) 0.342054, (GLfloat) 0.121167, (GLfloat) - 0.324904,
-       (GLfloat) 0.329838, (GLfloat) 0.083754, (GLfloat) - 0.500000,
-       (GLfloat) 0.504703, (GLfloat) 0.052920, (GLfloat) - 0.322437,
-       (GLfloat) 1.188046, (GLfloat) 0.322006, (GLfloat) - 0.596277,
-       (GLfloat) 1.077742, (GLfloat) 0.301825, (GLfloat) - 0.594388,
-       (GLfloat) 1.139957, (GLfloat) 0.313586, (GLfloat) - 0.594444,
-       (GLfloat) 1.188046, (GLfloat) 0.322006, (GLfloat) - 0.403722,
-       (GLfloat) 1.196159, (GLfloat) 0.308395, (GLfloat) - 0.500000,
-       (GLfloat) 1.230706, (GLfloat) 0.358565, (GLfloat) - 0.587500,
-       (GLfloat) 1.219224, (GLfloat) 0.334520, (GLfloat) - 0.595444,
-       (GLfloat) 1.123141, (GLfloat) 0.430895, (GLfloat) - 0.724648,
-       (GLfloat) 1.163707, (GLfloat) 0.362839, (GLfloat) - 0.676509,
-       (GLfloat) 1.123141, (GLfloat) 0.430895, (GLfloat) - 0.275352,
-       (GLfloat) 1.163707, (GLfloat) 0.362839, (GLfloat) - 0.323491,
-       (GLfloat) 1.230706, (GLfloat) 0.358565, (GLfloat) - 0.412500,
-       (GLfloat) 1.219224, (GLfloat) 0.334520, (GLfloat) - 0.404556,
-       (GLfloat) 1.077742, (GLfloat) 0.301825, (GLfloat) - 0.405612,
-       (GLfloat) 1.139957, (GLfloat) 0.313586, (GLfloat) - 0.405556,
-       (GLfloat) 1.191900, (GLfloat) 0.469528, (GLfloat) - 0.409500,
-       (GLfloat) 1.221821, (GLfloat) 0.401211, (GLfloat) - 0.417500,
-       (GLfloat) 1.239508, (GLfloat) 0.345749, (GLfloat) - 0.500000,
-       (GLfloat) 1.171456, (GLfloat) 0.461189, (GLfloat) - 0.294000,
-       (GLfloat) 1.207091, (GLfloat) 0.397037, (GLfloat) - 0.339125,
-       (GLfloat) 1.171456, (GLfloat) 0.461189, (GLfloat) - 0.706000,
-       (GLfloat) 1.207091, (GLfloat) 0.397037, (GLfloat) - 0.660875,
-       (GLfloat) 1.191900, (GLfloat) 0.469528, (GLfloat) - 0.590500,
-       (GLfloat) 1.221821, (GLfloat) 0.401211, (GLfloat) - 0.582500,
-       (GLfloat) 1.011218, (GLfloat) 0.399402, (GLfloat) - 0.279763,
-       (GLfloat) 1.075195, (GLfloat) 0.416935, (GLfloat) - 0.279631,
-       (GLfloat) 1.025784, (GLfloat) 0.594229, (GLfloat) - 0.275352,
-       (GLfloat) 1.074463, (GLfloat) 0.512562, (GLfloat) - 0.259306,
-       (GLfloat) 1.155185, (GLfloat) 0.444556, (GLfloat) - 0.276838,
-       (GLfloat) 0.960879, (GLfloat) 0.703118, (GLfloat) - 0.403722,
-       (GLfloat) 0.985218, (GLfloat) 0.662285, (GLfloat) - 0.323491,
-       (GLfloat) 1.083956, (GLfloat) 0.612743, (GLfloat) - 0.294000,
-       (GLfloat) 1.059471, (GLfloat) 0.609015, (GLfloat) - 0.276838,
-       (GLfloat) 0.911431, (GLfloat) 0.545768, (GLfloat) - 0.279763,
-       (GLfloat) 0.978052, (GLfloat) 0.571957, (GLfloat) - 0.279631,
-       (GLfloat) 1.101400, (GLfloat) 0.626279, (GLfloat) - 0.409500,
-       (GLfloat) 1.098258, (GLfloat) 0.615227, (GLfloat) - 0.335375,
-       (GLfloat) 1.128758, (GLfloat) 0.537574, (GLfloat) - 0.278500,
-       (GLfloat) 1.024706, (GLfloat) 0.715367, (GLfloat) - 0.412500,
-       (GLfloat) 1.046216, (GLfloat) 0.675680, (GLfloat) - 0.339125,
-       (GLfloat) 1.180758, (GLfloat) 0.472333, (GLfloat) - 0.335375,
-       (GLfloat) 0.844907, (GLfloat) 0.643346, (GLfloat) - 0.405612,
-       (GLfloat) 0.913289, (GLfloat) 0.675305, (GLfloat) - 0.405556,
-       (GLfloat) 0.960879, (GLfloat) 0.703118, (GLfloat) - 0.596277,
-       (GLfloat) 0.952766, (GLfloat) 0.716730, (GLfloat) - 0.500000,
-       (GLfloat) 0.995432, (GLfloat) 0.719051, (GLfloat) - 0.404556,
-       (GLfloat) 1.025784, (GLfloat) 0.594229, (GLfloat) - 0.724648,
-       (GLfloat) 0.985218, (GLfloat) 0.662285, (GLfloat) - 0.676509,
-       (GLfloat) 1.024706, (GLfloat) 0.715367, (GLfloat) - 0.587500,
-       (GLfloat) 0.995432, (GLfloat) 0.719051, (GLfloat) - 0.595444,
-       (GLfloat) 0.844907, (GLfloat) 0.643346, (GLfloat) - 0.594388,
-       (GLfloat) 0.913289, (GLfloat) 0.675305, (GLfloat) - 0.594444,
-       (GLfloat) 1.101400, (GLfloat) 0.626279, (GLfloat) - 0.590500,
-       (GLfloat) 1.057196, (GLfloat) 0.686350, (GLfloat) - 0.582500,
-       (GLfloat) 1.018008, (GLfloat) 0.729398, (GLfloat) - 0.500000,
-       (GLfloat) 1.083956, (GLfloat) 0.612743, (GLfloat) - 0.706000,
-       (GLfloat) 1.046216, (GLfloat) 0.675680, (GLfloat) - 0.660875,
-       (GLfloat) 1.057196, (GLfloat) 0.686350, (GLfloat) - 0.417500,
-       (GLfloat) 0.911431, (GLfloat) 0.545768, (GLfloat) - 0.720237,
-       (GLfloat) 0.978052, (GLfloat) 0.571957, (GLfloat) - 0.720369,
-       (GLfloat) 1.074463, (GLfloat) 0.512562, (GLfloat) - 0.740694,
-       (GLfloat) 1.059471, (GLfloat) 0.609015, (GLfloat) - 0.723162,
-       (GLfloat) 1.155185, (GLfloat) 0.444556, (GLfloat) - 0.723162,
-       (GLfloat) 1.011218, (GLfloat) 0.399402, (GLfloat) - 0.720237,
-       (GLfloat) 1.075195, (GLfloat) 0.416935, (GLfloat) - 0.720369,
-       (GLfloat) 1.180758, (GLfloat) 0.472333, (GLfloat) - 0.664625,
-       (GLfloat) 1.128758, (GLfloat) 0.537574, (GLfloat) - 0.721500,
-       (GLfloat) 1.098258, (GLfloat) 0.615227, (GLfloat) - 0.664625,
-       (GLfloat) 1.149055, (GLfloat) 0.549292, (GLfloat) - 0.402250,
-       (GLfloat) 1.197930, (GLfloat) 0.464638, (GLfloat) - 0.500000,
-       (GLfloat) 1.100180, (GLfloat) 0.633946, (GLfloat) - 0.500000,
-       (GLfloat) 1.149055, (GLfloat) 0.549292, (GLfloat) - 0.597750,
-       (GLfloat) 1.052796, (GLfloat) 0.338416, (GLfloat) - 0.673044,
-       (GLfloat) 0.938670, (GLfloat) 0.265970, (GLfloat) - 0.596525,
-       (GLfloat) 1.008335, (GLfloat) 0.286145, (GLfloat) - 0.595338,
-       (GLfloat) 1.086058, (GLfloat) 0.289628, (GLfloat) - 0.500000,
-       (GLfloat) 0.826297, (GLfloat) 0.209826, (GLfloat) - 0.596525,
-       (GLfloat) 0.875679, (GLfloat) 0.240722, (GLfloat) - 0.597178,
-       (GLfloat) 0.938670, (GLfloat) 0.265970, (GLfloat) - 0.403475,
-       (GLfloat) 0.948068, (GLfloat) 0.255539, (GLfloat) - 0.500000,
-       (GLfloat) 0.863485, (GLfloat) 0.349410, (GLfloat) - 0.725225,
-       (GLfloat) 0.910476, (GLfloat) 0.297260, (GLfloat) - 0.676962,
-       (GLfloat) 0.863485, (GLfloat) 0.349410, (GLfloat) - 0.274775,
-       (GLfloat) 0.910476, (GLfloat) 0.297260, (GLfloat) - 0.323037,
-       (GLfloat) 1.008335, (GLfloat) 0.286145, (GLfloat) - 0.404662,
-       (GLfloat) 0.826297, (GLfloat) 0.209826, (GLfloat) - 0.403475,
-       (GLfloat) 0.875679, (GLfloat) 0.240722, (GLfloat) - 0.402822,
-       (GLfloat) 1.052796, (GLfloat) 0.338416, (GLfloat) - 0.326956,
-       (GLfloat) 0.869854, (GLfloat) 0.606754, (GLfloat) - 0.673044,
-       (GLfloat) 0.750708, (GLfloat) 0.474572, (GLfloat) - 0.725225,
-       (GLfloat) 0.833218, (GLfloat) 0.513896, (GLfloat) - 0.722456,
-       (GLfloat) 0.961325, (GLfloat) 0.472585, (GLfloat) - 0.735969,
-       (GLfloat) 0.601974, (GLfloat) 0.366500, (GLfloat) - 0.725225,
-       (GLfloat) 0.671195, (GLfloat) 0.426029, (GLfloat) - 0.726748,
-       (GLfloat) 0.807096, (GLfloat) 0.411991, (GLfloat) - 0.741313,
-       (GLfloat) 0.675523, (GLfloat) 0.558012, (GLfloat) - 0.596525,
-       (GLfloat) 0.703717, (GLfloat) 0.526722, (GLfloat) - 0.676962,
-       (GLfloat) 0.938289, (GLfloat) 0.377245, (GLfloat) - 0.722456,
-       (GLfloat) 0.736568, (GLfloat) 0.272496, (GLfloat) - 0.725225,
-       (GLfloat) 0.793886, (GLfloat) 0.314845, (GLfloat) - 0.726748,
-       (GLfloat) 0.961325, (GLfloat) 0.472585, (GLfloat) - 0.264031,
-       (GLfloat) 0.750708, (GLfloat) 0.474572, (GLfloat) - 0.274775,
-       (GLfloat) 0.833218, (GLfloat) 0.513896, (GLfloat) - 0.277544,
-       (GLfloat) 0.869854, (GLfloat) 0.606754, (GLfloat) - 0.326956,
-       (GLfloat) 0.938289, (GLfloat) 0.377245, (GLfloat) - 0.277544,
-       (GLfloat) 0.736568, (GLfloat) 0.272496, (GLfloat) - 0.274775,
-       (GLfloat) 0.793886, (GLfloat) 0.314845, (GLfloat) - 0.273252,
-       (GLfloat) 0.807096, (GLfloat) 0.411991, (GLfloat) - 0.258687,
-       (GLfloat) 0.675523, (GLfloat) 0.558012, (GLfloat) - 0.403475,
-       (GLfloat) 0.703717, (GLfloat) 0.526722, (GLfloat) - 0.323037,
-       (GLfloat) 0.601974, (GLfloat) 0.366500, (GLfloat) - 0.274775,
-       (GLfloat) 0.671195, (GLfloat) 0.426029, (GLfloat) - 0.273252,
-       (GLfloat) 0.836591, (GLfloat) 0.655543, (GLfloat) - 0.500000,
-       (GLfloat) 0.763171, (GLfloat) 0.604996, (GLfloat) - 0.595338,
-       (GLfloat) 0.763171, (GLfloat) 0.604996, (GLfloat) - 0.404662,
-       (GLfloat) 0.512245, (GLfloat) 0.429169, (GLfloat) - 0.403475,
-       (GLfloat) 0.589401, (GLfloat) 0.500151, (GLfloat) - 0.402822,
-       (GLfloat) 0.666125, (GLfloat) 0.568442, (GLfloat) - 0.500000,
-       (GLfloat) 0.512245, (GLfloat) 0.429169, (GLfloat) - 0.596525,
-       (GLfloat) 0.589401, (GLfloat) 0.500151, (GLfloat) - 0.597178,
-       (GLfloat) 0.495371, (GLfloat) 0.238512, (GLfloat) - 0.720237,
-       (GLfloat) 0.432817, (GLfloat) 0.138665, (GLfloat) - 0.724648,
-       (GLfloat) 0.458468, (GLfloat) 0.182068, (GLfloat) - 0.720369,
-       (GLfloat) 0.656244, (GLfloat) 0.179386, (GLfloat) - 0.720237,
-       (GLfloat) 0.575807, (GLfloat) 0.208949, (GLfloat) - 0.735969,
-       (GLfloat) 0.543287, (GLfloat) 0.301992, (GLfloat) - 0.722456,
-       (GLfloat) 0.388123, (GLfloat) 0.277930, (GLfloat) - 0.594388,
-       (GLfloat) 0.428341, (GLfloat) 0.263148, (GLfloat) - 0.673044,
-       (GLfloat) 0.763492, (GLfloat) 0.139968, (GLfloat) - 0.594388,
-       (GLfloat) 0.723274, (GLfloat) 0.154750, (GLfloat) - 0.673044,
-       (GLfloat) 0.690899, (GLfloat) 0.226098, (GLfloat) - 0.722456,
-       (GLfloat) 0.617440, (GLfloat) 0.099959, (GLfloat) - 0.724648,
-       (GLfloat) 0.631969, (GLfloat) 0.136095, (GLfloat) - 0.720369,
-       (GLfloat) 0.669271, (GLfloat) 0.319498, (GLfloat) - 0.741313,
-       (GLfloat) 0.792649, (GLfloat) 0.233327, (GLfloat) - 0.676962,
-       (GLfloat) 0.545894, (GLfloat) 0.405668, (GLfloat) - 0.676962,
-       (GLfloat) 0.444878, (GLfloat) 0.352588, (GLfloat) - 0.595338,
-       (GLfloat) 0.388123, (GLfloat) 0.277930, (GLfloat) - 0.405612,
-       (GLfloat) 0.374717, (GLfloat) 0.282857, (GLfloat) - 0.500000,
-       (GLfloat) 0.309735, (GLfloat) 0.164469, (GLfloat) - 0.596277,
-       (GLfloat) 0.342801, (GLfloat) 0.212716, (GLfloat) - 0.594444,
-       (GLfloat) 0.501029, (GLfloat) 0.437003, (GLfloat) - 0.500000,
-       (GLfloat) 0.545894, (GLfloat) 0.405668, (GLfloat) - 0.323037,
-       (GLfloat) 0.444878, (GLfloat) 0.352588, (GLfloat) - 0.404662,
-       (GLfloat) 0.309735, (GLfloat) 0.164469, (GLfloat) - 0.403722,
-       (GLfloat) 0.342801, (GLfloat) 0.212716, (GLfloat) - 0.405556,
-       (GLfloat) 0.495371, (GLfloat) 0.238512, (GLfloat) - 0.279763,
-       (GLfloat) 0.428341, (GLfloat) 0.263148, (GLfloat) - 0.326956,
-       (GLfloat) 0.543287, (GLfloat) 0.301992, (GLfloat) - 0.277544,
-       (GLfloat) 0.656244, (GLfloat) 0.179386, (GLfloat) - 0.279763,
-       (GLfloat) 0.575807, (GLfloat) 0.208949, (GLfloat) - 0.264031,
-       (GLfloat) 0.432817, (GLfloat) 0.138665, (GLfloat) - 0.275352,
-       (GLfloat) 0.458468, (GLfloat) 0.182068, (GLfloat) - 0.279631,
-       (GLfloat) 0.669271, (GLfloat) 0.319498, (GLfloat) - 0.258687,
-       (GLfloat) 0.792649, (GLfloat) 0.233327, (GLfloat) - 0.323037,
-       (GLfloat) 0.690899, (GLfloat) 0.226098, (GLfloat) - 0.277544,
-       (GLfloat) 0.617440, (GLfloat) 0.099959, (GLfloat) - 0.275352,
-       (GLfloat) 0.631969, (GLfloat) 0.136095, (GLfloat) - 0.279631,
-       (GLfloat) 0.763492, (GLfloat) 0.139968, (GLfloat) - 0.405612,
-       (GLfloat) 0.723274, (GLfloat) 0.154750, (GLfloat) - 0.326956,
-       (GLfloat) 0.789307, (GLfloat) 0.175501, (GLfloat) - 0.404662,
-       (GLfloat) 0.776898, (GLfloat) 0.135041, (GLfloat) - 0.500000,
-       (GLfloat) 0.740522, (GLfloat) 0.074155, (GLfloat) - 0.403722,
-       (GLfloat) 0.747636, (GLfloat) 0.105446, (GLfloat) - 0.405556,
-       (GLfloat) 0.837513, (GLfloat) 0.201992, (GLfloat) - 0.500000,
-       (GLfloat) 0.789307, (GLfloat) 0.175501, (GLfloat) - 0.595338,
-       (GLfloat) 0.740522, (GLfloat) 0.074155, (GLfloat) - 0.596277,
-       (GLfloat) 0.747636, (GLfloat) 0.105446, (GLfloat) - 0.594444,
-       (GLfloat) 0.755907, (GLfloat) 0.070930, (GLfloat) - 0.500000,
-       (GLfloat) 0.710325, (GLfloat) 0.032750, (GLfloat) - 0.412500,
-       (GLfloat) 0.731601, (GLfloat) 0.048967, (GLfloat) - 0.404556,
-       (GLfloat) 0.694366, (GLfloat) 0.083832, (GLfloat) - 0.323491,
-       (GLfloat) 0.694366, (GLfloat) 0.083832, (GLfloat) - 0.676509,
-       (GLfloat) 0.710325, (GLfloat) 0.032750, (GLfloat) - 0.587500,
-       (GLfloat) 0.731601, (GLfloat) 0.048967, (GLfloat) - 0.595444,
-       (GLfloat) 0.592781, (GLfloat) 0.031264, (GLfloat) - 0.590500,
-       (GLfloat) 0.667212, (GLfloat) 0.026513, (GLfloat) - 0.582500,
-       (GLfloat) 0.725378, (GLfloat) 0.028862, (GLfloat) - 0.500000,
-       (GLfloat) 0.593625, (GLfloat) 0.053327, (GLfloat) - 0.706000,
-       (GLfloat) 0.666096, (GLfloat) 0.041783, (GLfloat) - 0.660875,
-       (GLfloat) 0.593625, (GLfloat) 0.053327, (GLfloat) - 0.294000,
-       (GLfloat) 0.666096, (GLfloat) 0.041783, (GLfloat) - 0.339125,
-       (GLfloat) 0.592781, (GLfloat) 0.031264, (GLfloat) - 0.409500,
-       (GLfloat) 0.667212, (GLfloat) 0.026513, (GLfloat) - 0.417500,
-       (GLfloat) 0.525128, (GLfloat) 0.119312, (GLfloat) - 0.740694,
-       (GLfloat) 0.606658, (GLfloat) 0.072023, (GLfloat) - 0.723162,
-       (GLfloat) 0.355891, (GLfloat) 0.154793, (GLfloat) - 0.676509,
-       (GLfloat) 0.421284, (GLfloat) 0.083716, (GLfloat) - 0.706000,
-       (GLfloat) 0.419921, (GLfloat) 0.106487, (GLfloat) - 0.723162,
-       (GLfloat) 0.414531, (GLfloat) 0.062694, (GLfloat) - 0.590500,
-       (GLfloat) 0.423841, (GLfloat) 0.069426, (GLfloat) - 0.664625,
-       (GLfloat) 0.507243, (GLfloat) 0.067325, (GLfloat) - 0.721500,
-       (GLfloat) 0.304584, (GLfloat) 0.104293, (GLfloat) - 0.587500,
-       (GLfloat) 0.349234, (GLfloat) 0.097654, (GLfloat) - 0.660875,
-       (GLfloat) 0.586334, (GLfloat) 0.040774, (GLfloat) - 0.664625,
-       (GLfloat) 0.294350, (GLfloat) 0.167695, (GLfloat) - 0.500000,
-       (GLfloat) 0.294978, (GLfloat) 0.129544, (GLfloat) - 0.595444,
-       (GLfloat) 0.355891, (GLfloat) 0.154793, (GLfloat) - 0.323491,
-       (GLfloat) 0.304584, (GLfloat) 0.104293, (GLfloat) - 0.412500,
-       (GLfloat) 0.294978, (GLfloat) 0.129544, (GLfloat) - 0.404556,
-       (GLfloat) 0.414531, (GLfloat) 0.062694, (GLfloat) - 0.409500,
-       (GLfloat) 0.342964, (GLfloat) 0.083687, (GLfloat) - 0.417500,
-       (GLfloat) 0.289108, (GLfloat) 0.105788, (GLfloat) - 0.500000,
-       (GLfloat) 0.421284, (GLfloat) 0.083716, (GLfloat) - 0.294000,
-       (GLfloat) 0.349234, (GLfloat) 0.097654, (GLfloat) - 0.339125,
-       (GLfloat) 0.342964, (GLfloat) 0.083687, (GLfloat) - 0.582500,
-       (GLfloat) 0.525128, (GLfloat) 0.119312, (GLfloat) - 0.259306,
-       (GLfloat) 0.419921, (GLfloat) 0.106487, (GLfloat) - 0.276838,
-       (GLfloat) 0.606658, (GLfloat) 0.072023, (GLfloat) - 0.276838,
-       (GLfloat) 0.586334, (GLfloat) 0.040774, (GLfloat) - 0.335375,
-       (GLfloat) 0.507243, (GLfloat) 0.067325, (GLfloat) - 0.278500,
-       (GLfloat) 0.423841, (GLfloat) 0.069426, (GLfloat) - 0.335375,
-       (GLfloat) 0.503173, (GLfloat) 0.044243, (GLfloat) - 0.597750,
-       (GLfloat) 0.599438, (GLfloat) 0.027269, (GLfloat) - 0.500000,
-       (GLfloat) 0.406908, (GLfloat) 0.061217, (GLfloat) - 0.500000,
-       (GLfloat) 0.503173, (GLfloat) 0.044243, (GLfloat) - 0.402250,
-};
-
-static GLfloat s1_3_normals[] =
-{
-       (GLfloat) 0.156072, (GLfloat) - 0.866199, (GLfloat) - 0.474700,
-       (GLfloat) 0.133323, (GLfloat) - 0.866325, (GLfloat) - 0.481359,
-       (GLfloat) 0.156764, (GLfloat) - 0.975995, (GLfloat) - 0.151191,
-       (GLfloat) 0.165110, (GLfloat) - 0.975177, (GLfloat) - 0.147543,
-       (GLfloat) 0.361485, (GLfloat) - 0.917862, (GLfloat) - 0.163883,
-       (GLfloat) 0.371348, (GLfloat) - 0.914502, (GLfloat) - 0.160580,
-       (GLfloat) 0.350149, (GLfloat) - 0.787582, (GLfloat) - 0.507060,
-       (GLfloat) 0.331724, (GLfloat) - 0.792390, (GLfloat) - 0.511934,
-       (GLfloat) 0.156072, (GLfloat) - 0.866199, (GLfloat) 0.474700,
-       (GLfloat) 0.133323, (GLfloat) - 0.866325, (GLfloat) 0.481359,
-       (GLfloat) 0.331724, (GLfloat) - 0.792390, (GLfloat) 0.511934,
-       (GLfloat) 0.350149, (GLfloat) - 0.787582, (GLfloat) 0.507061,
-       (GLfloat) 0.361485, (GLfloat) - 0.917862, (GLfloat) 0.163883,
-       (GLfloat) 0.371348, (GLfloat) - 0.914502, (GLfloat) 0.160580,
-       (GLfloat) 0.165110, (GLfloat) - 0.975177, (GLfloat) 0.147543,
-       (GLfloat) 0.156764, (GLfloat) - 0.975995, (GLfloat) 0.151191,
-       (GLfloat) 0.952910, (GLfloat) 0.222669, (GLfloat) 0.205865,
-       (GLfloat) 0.952953, (GLfloat) 0.245285, (GLfloat) 0.178091,
-       (GLfloat) 0.977287, (GLfloat) 0.200386, (GLfloat) 0.068964,
-       (GLfloat) 0.974607, (GLfloat) 0.211631, (GLfloat) 0.073163,
-       (GLfloat) 0.910741, (GLfloat) - 0.389976, (GLfloat) 0.135901,
-       (GLfloat) 0.891878, (GLfloat) - 0.425931, (GLfloat) 0.152106,
-       (GLfloat) 0.882467, (GLfloat) - 0.235214, (GLfloat) 0.407340,
-       (GLfloat) 0.868268, (GLfloat) - 0.279083, (GLfloat) 0.410151,
-       (GLfloat) 0.952953, (GLfloat) 0.245285, (GLfloat) - 0.178091,
-       (GLfloat) 0.952910, (GLfloat) 0.222669, (GLfloat) - 0.205865,
-       (GLfloat) 0.868268, (GLfloat) - 0.279083, (GLfloat) - 0.410151,
-       (GLfloat) 0.882468, (GLfloat) - 0.235213, (GLfloat) - 0.407340,
-       (GLfloat) 0.891878, (GLfloat) - 0.425931, (GLfloat) - 0.152106,
-       (GLfloat) 0.910741, (GLfloat) - 0.389976, (GLfloat) - 0.135901,
-       (GLfloat) 0.974607, (GLfloat) 0.211631, (GLfloat) - 0.073163,
-       (GLfloat) 0.977287, (GLfloat) 0.200386, (GLfloat) - 0.068964,
-       (GLfloat) 0.086707, (GLfloat) - 0.551974, (GLfloat) 0.829341,
-       (GLfloat) 0.062265, (GLfloat) - 0.551355, (GLfloat) 0.831944,
-       (GLfloat) - 0.014960, (GLfloat) - 0.207986, (GLfloat) 0.978017,
-       (GLfloat) - 0.026687, (GLfloat) - 0.208021, (GLfloat) 0.977760,
-       (GLfloat) 0.102710, (GLfloat) - 0.133733, (GLfloat) 0.985681,
-       (GLfloat) 0.099775, (GLfloat) - 0.134244, (GLfloat) 0.985913,
-       (GLfloat) 0.231521, (GLfloat) - 0.464011, (GLfloat) 0.855039,
-       (GLfloat) 0.236951, (GLfloat) - 0.462930, (GLfloat) 0.854137,
-       (GLfloat) - 0.295570, (GLfloat) 0.436154, (GLfloat) 0.849946,
-       (GLfloat) - 0.280583, (GLfloat) 0.437172, (GLfloat) 0.854490,
-       (GLfloat) - 0.178752, (GLfloat) 0.492834, (GLfloat) 0.851565,
-       (GLfloat) - 0.184330, (GLfloat) 0.491982, (GLfloat) 0.850868,
-       (GLfloat) - 0.033888, (GLfloat) 0.173633, (GLfloat) 0.984227,
-       (GLfloat) - 0.032872, (GLfloat) 0.173792, (GLfloat) 0.984234,
-       (GLfloat) - 0.140362, (GLfloat) 0.111822, (GLfloat) 0.983765,
-       (GLfloat) - 0.136701, (GLfloat) 0.111911, (GLfloat) 0.984271,
-       (GLfloat) 0.725871, (GLfloat) 0.640449, (GLfloat) 0.250870,
-       (GLfloat) 0.717328, (GLfloat) 0.635281, (GLfloat) 0.286109,
-       (GLfloat) 0.785252, (GLfloat) 0.532999, (GLfloat) 0.315105,
-       (GLfloat) 0.786013, (GLfloat) 0.538285, (GLfloat) 0.304028,
-       (GLfloat) 0.473766, (GLfloat) 0.428968, (GLfloat) 0.769111,
-       (GLfloat) 0.445991, (GLfloat) 0.427917, (GLfloat) 0.786117,
-       (GLfloat) 0.380921, (GLfloat) 0.670539, (GLfloat) 0.636613,
-       (GLfloat) 0.351469, (GLfloat) 0.675507, (GLfloat) 0.648198,
-       (GLfloat) 0.909972, (GLfloat) 0.319731, (GLfloat) 0.264053,
-       (GLfloat) 0.914034, (GLfloat) 0.290005, (GLfloat) 0.283618,
-       (GLfloat) 0.764793, (GLfloat) - 0.009035, (GLfloat) 0.644213,
-       (GLfloat) 0.748359, (GLfloat) - 0.049564, (GLfloat) 0.661439,
-       (GLfloat) 0.584615, (GLfloat) 0.165625, (GLfloat) 0.794225,
-       (GLfloat) 0.606922, (GLfloat) 0.199970, (GLfloat) 0.769193,
-       (GLfloat) 0.856780, (GLfloat) 0.408314, (GLfloat) 0.314973,
-       (GLfloat) 0.856353, (GLfloat) 0.416833, (GLfloat) 0.304811,
-       (GLfloat) - 0.450621, (GLfloat) 0.737913, (GLfloat) 0.502419,
-       (GLfloat) - 0.436449, (GLfloat) 0.741403, (GLfloat) 0.509739,
-       (GLfloat) - 0.507433, (GLfloat) 0.846833, (GLfloat) 0.159329,
-       (GLfloat) - 0.502539, (GLfloat) 0.849165, (GLfloat) 0.162398,
-       (GLfloat) - 0.409636, (GLfloat) 0.897074, (GLfloat) 0.165699,
-       (GLfloat) - 0.419809, (GLfloat) 0.893103, (GLfloat) 0.161638,
-       (GLfloat) - 0.332199, (GLfloat) 0.791771, (GLfloat) 0.512584,
-       (GLfloat) - 0.350779, (GLfloat) 0.787278, (GLfloat) 0.507097,
-       (GLfloat) - 0.436449, (GLfloat) 0.741403, (GLfloat) - 0.509738,
-       (GLfloat) - 0.450621, (GLfloat) 0.737913, (GLfloat) - 0.502419,
-       (GLfloat) - 0.332198, (GLfloat) 0.791771, (GLfloat) - 0.512584,
-       (GLfloat) - 0.350779, (GLfloat) 0.787278, (GLfloat) - 0.507097,
-       (GLfloat) - 0.419809, (GLfloat) 0.893103, (GLfloat) - 0.161638,
-       (GLfloat) - 0.409636, (GLfloat) 0.897074, (GLfloat) - 0.165699,
-       (GLfloat) - 0.507433, (GLfloat) 0.846833, (GLfloat) - 0.159329,
-       (GLfloat) - 0.502539, (GLfloat) 0.849165, (GLfloat) - 0.162398,
-       (GLfloat) 0.669290, (GLfloat) 0.713912, (GLfloat) - 0.205866,
-       (GLfloat) 0.688897, (GLfloat) 0.702641, (GLfloat) - 0.178093,
-       (GLfloat) 0.661903, (GLfloat) 0.745850, (GLfloat) - 0.074780,
-       (GLfloat) 0.670351, (GLfloat) 0.738996, (GLfloat) - 0.067190,
-       (GLfloat) 0.158706, (GLfloat) 0.978584, (GLfloat) - 0.131091,
-       (GLfloat) 0.119709, (GLfloat) 0.981678, (GLfloat) - 0.148253,
-       (GLfloat) 0.261869, (GLfloat) 0.885538, (GLfloat) - 0.383728,
-       (GLfloat) 0.223051, (GLfloat) 0.883291, (GLfloat) - 0.412366,
-       (GLfloat) 0.688897, (GLfloat) 0.702640, (GLfloat) 0.178092,
-       (GLfloat) 0.669290, (GLfloat) 0.713912, (GLfloat) 0.205867,
-       (GLfloat) 0.261868, (GLfloat) 0.885538, (GLfloat) 0.383728,
-       (GLfloat) 0.223050, (GLfloat) 0.883291, (GLfloat) 0.412366,
-       (GLfloat) 0.119709, (GLfloat) 0.981678, (GLfloat) 0.148253,
-       (GLfloat) 0.158706, (GLfloat) 0.978584, (GLfloat) 0.131091,
-       (GLfloat) 0.661903, (GLfloat) 0.745850, (GLfloat) 0.074780,
-       (GLfloat) 0.670351, (GLfloat) 0.738996, (GLfloat) 0.067190,
-       (GLfloat) - 0.295570, (GLfloat) 0.436154, (GLfloat) - 0.849946,
-       (GLfloat) - 0.280583, (GLfloat) 0.437172, (GLfloat) - 0.854490,
-       (GLfloat) - 0.136701, (GLfloat) 0.111911, (GLfloat) - 0.984271,
-       (GLfloat) - 0.140362, (GLfloat) 0.111822, (GLfloat) - 0.983765,
-       (GLfloat) - 0.033889, (GLfloat) 0.173633, (GLfloat) - 0.984227,
-       (GLfloat) - 0.032872, (GLfloat) 0.173792, (GLfloat) - 0.984234,
-       (GLfloat) - 0.184329, (GLfloat) 0.491983, (GLfloat) - 0.850868,
-       (GLfloat) - 0.178752, (GLfloat) 0.492834, (GLfloat) - 0.851565,
-       (GLfloat) 0.062265, (GLfloat) - 0.551355, (GLfloat) - 0.831944,
-       (GLfloat) 0.086707, (GLfloat) - 0.551973, (GLfloat) - 0.829342,
-       (GLfloat) 0.231522, (GLfloat) - 0.464010, (GLfloat) - 0.855039,
-       (GLfloat) 0.236951, (GLfloat) - 0.462929, (GLfloat) - 0.854137,
-       (GLfloat) 0.099774, (GLfloat) - 0.134244, (GLfloat) - 0.985913,
-       (GLfloat) 0.102710, (GLfloat) - 0.133733, (GLfloat) - 0.985681,
-       (GLfloat) - 0.014960, (GLfloat) - 0.207986, (GLfloat) - 0.978017,
-       (GLfloat) - 0.026687, (GLfloat) - 0.208021, (GLfloat) - 0.977760,
-       (GLfloat) 0.914034, (GLfloat) 0.290005, (GLfloat) - 0.283618,
-       (GLfloat) 0.909972, (GLfloat) 0.319730, (GLfloat) - 0.264054,
-       (GLfloat) 0.856780, (GLfloat) 0.408314, (GLfloat) - 0.314973,
-       (GLfloat) 0.856353, (GLfloat) 0.416833, (GLfloat) - 0.304811,
-       (GLfloat) 0.606923, (GLfloat) 0.199970, (GLfloat) - 0.769193,
-       (GLfloat) 0.584616, (GLfloat) 0.165625, (GLfloat) - 0.794224,
-       (GLfloat) 0.764793, (GLfloat) - 0.009035, (GLfloat) - 0.644213,
-       (GLfloat) 0.748360, (GLfloat) - 0.049564, (GLfloat) - 0.661439,
-       (GLfloat) 0.725871, (GLfloat) 0.640449, (GLfloat) - 0.250871,
-       (GLfloat) 0.717328, (GLfloat) 0.635281, (GLfloat) - 0.286109,
-       (GLfloat) 0.380922, (GLfloat) 0.670539, (GLfloat) - 0.636613,
-       (GLfloat) 0.351469, (GLfloat) 0.675507, (GLfloat) - 0.648197,
-       (GLfloat) 0.445992, (GLfloat) 0.427917, (GLfloat) - 0.786116,
-       (GLfloat) 0.473767, (GLfloat) 0.428968, (GLfloat) - 0.769111,
-       (GLfloat) 0.786013, (GLfloat) 0.538285, (GLfloat) - 0.304029,
-       (GLfloat) 0.785252, (GLfloat) 0.532999, (GLfloat) - 0.315105,
-       (GLfloat) 0.919156, (GLfloat) 0.373864, (GLfloat) 0.124010,
-       (GLfloat) 0.913260, (GLfloat) 0.384076, (GLfloat) 0.135802,
-       (GLfloat) 0.881886, (GLfloat) 0.458542, (GLfloat) 0.109621,
-       (GLfloat) 0.879452, (GLfloat) 0.461960, (GLfloat) 0.114709,
-       (GLfloat) 0.880239, (GLfloat) 0.473377, (GLfloat) 0.033080,
-       (GLfloat) 0.881697, (GLfloat) 0.470851, (GLfloat) 0.030163,
-       (GLfloat) 0.914779, (GLfloat) 0.401569, (GLfloat) 0.043834,
-       (GLfloat) 0.916978, (GLfloat) 0.396963, (GLfloat) 0.039657,
-       (GLfloat) 0.789250, (GLfloat) 0.598868, (GLfloat) 0.135802,
-       (GLfloat) 0.783354, (GLfloat) 0.609080, (GLfloat) 0.124010,
-       (GLfloat) 0.805159, (GLfloat) 0.591437, (GLfloat) 0.043834,
-       (GLfloat) 0.802269, (GLfloat) 0.595644, (GLfloat) 0.039656,
-       (GLfloat) 0.848617, (GLfloat) 0.528147, (GLfloat) 0.030163,
-       (GLfloat) 0.850075, (GLfloat) 0.525621, (GLfloat) 0.033079,
-       (GLfloat) 0.838052, (GLfloat) 0.534464, (GLfloat) 0.109621,
-       (GLfloat) 0.839795, (GLfloat) 0.530647, (GLfloat) 0.114709,
-       (GLfloat) 0.783354, (GLfloat) 0.609080, (GLfloat) - 0.124010,
-       (GLfloat) 0.789250, (GLfloat) 0.598868, (GLfloat) - 0.135802,
-       (GLfloat) 0.838052, (GLfloat) 0.534464, (GLfloat) - 0.109621,
-       (GLfloat) 0.839795, (GLfloat) 0.530647, (GLfloat) - 0.114709,
-       (GLfloat) 0.850075, (GLfloat) 0.525621, (GLfloat) - 0.033079,
-       (GLfloat) 0.848617, (GLfloat) 0.528147, (GLfloat) - 0.030163,
-       (GLfloat) 0.805159, (GLfloat) 0.591437, (GLfloat) - 0.043834,
-       (GLfloat) 0.802269, (GLfloat) 0.595644, (GLfloat) - 0.039656,
-       (GLfloat) 0.913260, (GLfloat) 0.384076, (GLfloat) - 0.135802,
-       (GLfloat) 0.919156, (GLfloat) 0.373864, (GLfloat) - 0.124010,
-       (GLfloat) 0.914779, (GLfloat) 0.401569, (GLfloat) - 0.043834,
-       (GLfloat) 0.916978, (GLfloat) 0.396963, (GLfloat) - 0.039657,
-       (GLfloat) 0.881697, (GLfloat) 0.470851, (GLfloat) - 0.030163,
-       (GLfloat) 0.880239, (GLfloat) 0.473377, (GLfloat) - 0.033080,
-       (GLfloat) 0.881886, (GLfloat) 0.458542, (GLfloat) - 0.109621,
-       (GLfloat) 0.879452, (GLfloat) 0.461960, (GLfloat) - 0.114709,
-       (GLfloat) 0.190919, (GLfloat) - 0.865460, (GLfloat) - 0.463172,
-       (GLfloat) 0.162958, (GLfloat) - 0.864281, (GLfloat) - 0.475881,
-       (GLfloat) 0.232098, (GLfloat) - 0.863386, (GLfloat) - 0.447991,
-       (GLfloat) 0.201152, (GLfloat) - 0.862208, (GLfloat) - 0.464904,
-       (GLfloat) 0.208595, (GLfloat) - 0.967433, (GLfloat) - 0.143393,
-       (GLfloat) 0.220092, (GLfloat) - 0.966009, (GLfloat) - 0.135597,
-       (GLfloat) 0.173391, (GLfloat) - 0.973662, (GLfloat) - 0.148045,
-       (GLfloat) 0.183752, (GLfloat) - 0.972679, (GLfloat) - 0.141883,
-       (GLfloat) 0.370543, (GLfloat) - 0.826392, (GLfloat) - 0.423998,
-       (GLfloat) 0.337718, (GLfloat) - 0.831172, (GLfloat) - 0.441702,
-       (GLfloat) 0.357949, (GLfloat) - 0.923976, (GLfloat) - 0.134692,
-       (GLfloat) 0.370172, (GLfloat) - 0.920284, (GLfloat) - 0.126690,
-       (GLfloat) 0.265644, (GLfloat) - 0.954091, (GLfloat) - 0.138357,
-       (GLfloat) 0.277857, (GLfloat) - 0.951799, (GLfloat) - 0.129901,
-       (GLfloat) 0.288098, (GLfloat) - 0.854015, (GLfloat) - 0.433195,
-       (GLfloat) 0.255240, (GLfloat) - 0.854757, (GLfloat) - 0.451932,
-       (GLfloat) 0.370543, (GLfloat) - 0.826392, (GLfloat) 0.423998,
-       (GLfloat) 0.337718, (GLfloat) - 0.831172, (GLfloat) 0.441701,
-       (GLfloat) 0.255240, (GLfloat) - 0.854757, (GLfloat) 0.451932,
-       (GLfloat) 0.288099, (GLfloat) - 0.854015, (GLfloat) 0.433195,
-       (GLfloat) 0.265644, (GLfloat) - 0.954091, (GLfloat) 0.138357,
-       (GLfloat) 0.277857, (GLfloat) - 0.951799, (GLfloat) 0.129901,
-       (GLfloat) 0.370172, (GLfloat) - 0.920284, (GLfloat) 0.126690,
-       (GLfloat) 0.357949, (GLfloat) - 0.923976, (GLfloat) 0.134692,
-       (GLfloat) 0.162958, (GLfloat) - 0.864281, (GLfloat) 0.475881,
-       (GLfloat) 0.190920, (GLfloat) - 0.865460, (GLfloat) 0.463172,
-       (GLfloat) 0.173391, (GLfloat) - 0.973662, (GLfloat) 0.148045,
-       (GLfloat) 0.183752, (GLfloat) - 0.972679, (GLfloat) 0.141883,
-       (GLfloat) 0.220093, (GLfloat) - 0.966009, (GLfloat) 0.135597,
-       (GLfloat) 0.208595, (GLfloat) - 0.967433, (GLfloat) 0.143394,
-       (GLfloat) 0.232098, (GLfloat) - 0.863386, (GLfloat) 0.447991,
-       (GLfloat) 0.201153, (GLfloat) - 0.862208, (GLfloat) 0.464904,
-       (GLfloat) - 0.220569, (GLfloat) 0.498423, (GLfloat) - 0.838406,
-       (GLfloat) - 0.196440, (GLfloat) 0.495475, (GLfloat) - 0.846118,
-       (GLfloat) - 0.216090, (GLfloat) 0.523731, (GLfloat) - 0.824021,
-       (GLfloat) - 0.187439, (GLfloat) 0.518039, (GLfloat) - 0.834567,
-       (GLfloat) - 0.035834, (GLfloat) 0.186611, (GLfloat) - 0.981780,
-       (GLfloat) - 0.049583, (GLfloat) 0.189912, (GLfloat) - 0.980548,
-       (GLfloat) - 0.057093, (GLfloat) 0.164206, (GLfloat) - 0.984772,
-       (GLfloat) - 0.067095, (GLfloat) 0.165750, (GLfloat) - 0.983883,
-       (GLfloat) - 0.313656, (GLfloat) 0.500321, (GLfloat) - 0.807031,
-       (GLfloat) - 0.288105, (GLfloat) 0.497578, (GLfloat) - 0.818176,
-       (GLfloat) - 0.079226, (GLfloat) 0.180632, (GLfloat) - 0.980355,
-       (GLfloat) - 0.092817, (GLfloat) 0.182734, (GLfloat) - 0.978771,
-       (GLfloat) - 0.045426, (GLfloat) 0.193014, (GLfloat) - 0.980144,
-       (GLfloat) - 0.060897, (GLfloat) 0.196689, (GLfloat) - 0.978573,
-       (GLfloat) - 0.250277, (GLfloat) 0.526446, (GLfloat) - 0.812537,
-       (GLfloat) - 0.220552, (GLfloat) 0.520843, (GLfloat) - 0.824669,
-       (GLfloat) 0.247012, (GLfloat) - 0.528860, (GLfloat) - 0.811968,
-       (GLfloat) 0.280618, (GLfloat) - 0.529785, (GLfloat) - 0.800363,
-       (GLfloat) 0.197390, (GLfloat) - 0.535630, (GLfloat) - 0.821059,
-       (GLfloat) 0.231067, (GLfloat) - 0.540483, (GLfloat) - 0.809003,
-       (GLfloat) 0.104568, (GLfloat) - 0.158183, (GLfloat) - 0.981857,
-       (GLfloat) 0.094460, (GLfloat) - 0.156029, (GLfloat) - 0.983225,
-       (GLfloat) 0.111854, (GLfloat) - 0.162201, (GLfloat) - 0.980398,
-       (GLfloat) 0.101426, (GLfloat) - 0.160983, (GLfloat) - 0.981732,
-       (GLfloat) 0.117566, (GLfloat) - 0.537019, (GLfloat) - 0.835338,
-       (GLfloat) 0.146549, (GLfloat) - 0.540970, (GLfloat) - 0.828175,
-       (GLfloat) 0.055888, (GLfloat) - 0.173264, (GLfloat) - 0.983288,
-       (GLfloat) 0.045018, (GLfloat) - 0.171643, (GLfloat) - 0.984130,
-       (GLfloat) 0.088354, (GLfloat) - 0.160681, (GLfloat) - 0.983044,
-       (GLfloat) 0.078052, (GLfloat) - 0.158368, (GLfloat) - 0.984290,
-       (GLfloat) 0.157434, (GLfloat) - 0.535002, (GLfloat) - 0.830053,
-       (GLfloat) 0.189212, (GLfloat) - 0.540730, (GLfloat) - 0.819640,
-       (GLfloat) - 0.196440, (GLfloat) 0.495475, (GLfloat) 0.846118,
-       (GLfloat) - 0.220568, (GLfloat) 0.498423, (GLfloat) 0.838406,
-       (GLfloat) - 0.057093, (GLfloat) 0.164206, (GLfloat) 0.984772,
-       (GLfloat) - 0.067095, (GLfloat) 0.165750, (GLfloat) 0.983883,
-       (GLfloat) - 0.049583, (GLfloat) 0.189912, (GLfloat) 0.980548,
-       (GLfloat) - 0.035834, (GLfloat) 0.186611, (GLfloat) 0.981780,
-       (GLfloat) - 0.216090, (GLfloat) 0.523731, (GLfloat) 0.824021,
-       (GLfloat) - 0.187439, (GLfloat) 0.518039, (GLfloat) 0.834567,
-       (GLfloat) 0.117567, (GLfloat) - 0.537019, (GLfloat) 0.835337,
-       (GLfloat) 0.146549, (GLfloat) - 0.540970, (GLfloat) 0.828176,
-       (GLfloat) 0.189212, (GLfloat) - 0.540730, (GLfloat) 0.819640,
-       (GLfloat) 0.157434, (GLfloat) - 0.535002, (GLfloat) 0.830053,
-       (GLfloat) 0.088354, (GLfloat) - 0.160681, (GLfloat) 0.983044,
-       (GLfloat) 0.078052, (GLfloat) - 0.158368, (GLfloat) 0.984290,
-       (GLfloat) 0.045018, (GLfloat) - 0.171643, (GLfloat) 0.984130,
-       (GLfloat) 0.055888, (GLfloat) - 0.173264, (GLfloat) 0.983288,
-       (GLfloat) 0.280617, (GLfloat) - 0.529785, (GLfloat) 0.800363,
-       (GLfloat) 0.247012, (GLfloat) - 0.528861, (GLfloat) 0.811968,
-       (GLfloat) 0.111853, (GLfloat) - 0.162201, (GLfloat) 0.980398,
-       (GLfloat) 0.101425, (GLfloat) - 0.160983, (GLfloat) 0.981732,
-       (GLfloat) 0.094460, (GLfloat) - 0.156028, (GLfloat) 0.983225,
-       (GLfloat) 0.104568, (GLfloat) - 0.158182, (GLfloat) 0.981857,
-       (GLfloat) 0.197390, (GLfloat) - 0.535630, (GLfloat) 0.821059,
-       (GLfloat) 0.231068, (GLfloat) - 0.540483, (GLfloat) 0.809003,
-       (GLfloat) - 0.313656, (GLfloat) 0.500320, (GLfloat) 0.807031,
-       (GLfloat) - 0.288106, (GLfloat) 0.497578, (GLfloat) 0.818175,
-       (GLfloat) - 0.220552, (GLfloat) 0.520843, (GLfloat) 0.824669,
-       (GLfloat) - 0.250276, (GLfloat) 0.526446, (GLfloat) 0.812537,
-       (GLfloat) - 0.045425, (GLfloat) 0.193015, (GLfloat) 0.980144,
-       (GLfloat) - 0.060896, (GLfloat) 0.196690, (GLfloat) 0.978573,
-       (GLfloat) - 0.092818, (GLfloat) 0.182733, (GLfloat) 0.978771,
-       (GLfloat) - 0.079226, (GLfloat) 0.180631, (GLfloat) 0.980355,
-       (GLfloat) - 0.349743, (GLfloat) 0.793198, (GLfloat) - 0.498515,
-       (GLfloat) - 0.370416, (GLfloat) 0.791707, (GLfloat) - 0.485790,
-       (GLfloat) - 0.425027, (GLfloat) 0.892201, (GLfloat) - 0.152739,
-       (GLfloat) - 0.418180, (GLfloat) 0.894483, (GLfloat) - 0.158197,
-       (GLfloat) - 0.425590, (GLfloat) 0.893099, (GLfloat) - 0.145761,
-       (GLfloat) - 0.418336, (GLfloat) 0.895388, (GLfloat) - 0.152561,
-       (GLfloat) - 0.348153, (GLfloat) 0.802874, (GLfloat) - 0.483924,
-       (GLfloat) - 0.370992, (GLfloat) 0.802293, (GLfloat) - 0.467643,
-       (GLfloat) - 0.349743, (GLfloat) 0.793198, (GLfloat) 0.498515,
-       (GLfloat) - 0.370416, (GLfloat) 0.791707, (GLfloat) 0.485790,
-       (GLfloat) - 0.370992, (GLfloat) 0.802293, (GLfloat) 0.467643,
-       (GLfloat) - 0.348153, (GLfloat) 0.802874, (GLfloat) 0.483924,
-       (GLfloat) - 0.425590, (GLfloat) 0.893099, (GLfloat) 0.145761,
-       (GLfloat) - 0.418336, (GLfloat) 0.895388, (GLfloat) 0.152561,
-       (GLfloat) - 0.418180, (GLfloat) 0.894483, (GLfloat) 0.158197,
-       (GLfloat) - 0.425027, (GLfloat) 0.892201, (GLfloat) 0.152739,
-       (GLfloat) - 0.497325, (GLfloat) 0.745242, (GLfloat) 0.444165,
-       (GLfloat) - 0.479548, (GLfloat) 0.747889, (GLfloat) 0.459017,
-       (GLfloat) - 0.556394, (GLfloat) 0.819599, (GLfloat) 0.136684,
-       (GLfloat) - 0.551239, (GLfloat) 0.822088, (GLfloat) 0.142503,
-       (GLfloat) - 0.465768, (GLfloat) 0.872611, (GLfloat) 0.147004,
-       (GLfloat) - 0.472480, (GLfloat) 0.870146, (GLfloat) 0.140027,
-       (GLfloat) - 0.394421, (GLfloat) 0.789665, (GLfloat) 0.469959,
-       (GLfloat) - 0.416499, (GLfloat) 0.788420, (GLfloat) 0.452684,
-       (GLfloat) - 0.479547, (GLfloat) 0.747889, (GLfloat) - 0.459017,
-       (GLfloat) - 0.497325, (GLfloat) 0.745242, (GLfloat) - 0.444165,
-       (GLfloat) - 0.394421, (GLfloat) 0.789665, (GLfloat) - 0.469959,
-       (GLfloat) - 0.416498, (GLfloat) 0.788420, (GLfloat) - 0.452684,
-       (GLfloat) - 0.472480, (GLfloat) 0.870146, (GLfloat) - 0.140027,
-       (GLfloat) - 0.465768, (GLfloat) 0.872611, (GLfloat) - 0.147004,
-       (GLfloat) - 0.556394, (GLfloat) 0.819599, (GLfloat) - 0.136684,
-       (GLfloat) - 0.551239, (GLfloat) 0.822088, (GLfloat) - 0.142503,
-       (GLfloat) - 0.459423, (GLfloat) 0.314205, (GLfloat) - 0.830786,
-       (GLfloat) - 0.469135, (GLfloat) 0.308642, (GLfloat) - 0.827438,
-       (GLfloat) - 0.156023, (GLfloat) 0.098476, (GLfloat) - 0.982832,
-       (GLfloat) - 0.151547, (GLfloat) 0.101367, (GLfloat) - 0.983239,
-       (GLfloat) - 0.168365, (GLfloat) 0.083796, (GLfloat) - 0.982157,
-       (GLfloat) - 0.160419, (GLfloat) 0.086730, (GLfloat) - 0.983231,
-       (GLfloat) - 0.460048, (GLfloat) 0.328491, (GLfloat) - 0.824894,
-       (GLfloat) - 0.469062, (GLfloat) 0.325364, (GLfloat) - 0.821048,
-       (GLfloat) 0.495554, (GLfloat) - 0.246920, (GLfloat) - 0.832741,
-       (GLfloat) 0.477125, (GLfloat) - 0.265003, (GLfloat) - 0.837929,
-       (GLfloat) 0.446738, (GLfloat) - 0.363453, (GLfloat) - 0.817512,
-       (GLfloat) 0.441753, (GLfloat) - 0.366614, (GLfloat) - 0.818809,
-       (GLfloat) 0.138045, (GLfloat) - 0.145699, (GLfloat) - 0.979651,
-       (GLfloat) 0.135385, (GLfloat) - 0.146968, (GLfloat) - 0.979832,
-       (GLfloat) 0.154178, (GLfloat) - 0.091800, (GLfloat) - 0.983769,
-       (GLfloat) 0.160344, (GLfloat) - 0.086930, (GLfloat) - 0.983226,
-       (GLfloat) 0.316237, (GLfloat) - 0.497953, (GLfloat) - 0.807488,
-       (GLfloat) 0.343267, (GLfloat) - 0.493329, (GLfloat) - 0.799246,
-       (GLfloat) 0.113533, (GLfloat) - 0.172349, (GLfloat) - 0.978471,
-       (GLfloat) 0.101829, (GLfloat) - 0.173041, (GLfloat) - 0.979636,
-       (GLfloat) 0.123751, (GLfloat) - 0.168767, (GLfloat) - 0.977856,
-       (GLfloat) 0.114456, (GLfloat) - 0.171068, (GLfloat) - 0.978589,
-       (GLfloat) 0.385418, (GLfloat) - 0.444520, (GLfloat) - 0.808613,
-       (GLfloat) 0.397936, (GLfloat) - 0.439743, (GLfloat) - 0.805154,
-       (GLfloat) - 0.398435, (GLfloat) 0.428657, (GLfloat) - 0.810865,
-       (GLfloat) - 0.386943, (GLfloat) 0.429063, (GLfloat) - 0.816198,
-       (GLfloat) - 0.443045, (GLfloat) 0.369548, (GLfloat) - 0.816790,
-       (GLfloat) - 0.444436, (GLfloat) 0.369300, (GLfloat) - 0.816146,
-       (GLfloat) - 0.163680, (GLfloat) 0.101509, (GLfloat) - 0.981277,
-       (GLfloat) - 0.158806, (GLfloat) 0.102320, (GLfloat) - 0.981994,
-       (GLfloat) - 0.135291, (GLfloat) 0.136613, (GLfloat) - 0.981343,
-       (GLfloat) - 0.139056, (GLfloat) 0.136609, (GLfloat) - 0.980817,
-       (GLfloat) - 0.727675, (GLfloat) 0.496263, (GLfloat) - 0.473510,
-       (GLfloat) - 0.726249, (GLfloat) 0.505128, (GLfloat) - 0.466270,
-       (GLfloat) - 0.710606, (GLfloat) 0.534378, (GLfloat) - 0.457688,
-       (GLfloat) - 0.711650, (GLfloat) 0.528248, (GLfloat) - 0.463150,
-       (GLfloat) - 0.787870, (GLfloat) 0.599385, (GLfloat) - 0.141417,
-       (GLfloat) - 0.788753, (GLfloat) 0.597790, (GLfloat) - 0.143234,
-       (GLfloat) - 0.812157, (GLfloat) 0.564556, (GLfloat) - 0.147234,
-       (GLfloat) - 0.810846, (GLfloat) 0.567072, (GLfloat) - 0.144768,
-       (GLfloat) - 0.599894, (GLfloat) 0.659162, (GLfloat) - 0.453468,
-       (GLfloat) - 0.607958, (GLfloat) 0.656733, (GLfloat) - 0.446194,
-       (GLfloat) - 0.673258, (GLfloat) 0.726567, (GLfloat) - 0.137198,
-       (GLfloat) - 0.671022, (GLfloat) 0.728096, (GLfloat) - 0.140020,
-       (GLfloat) - 0.744575, (GLfloat) 0.652826, (GLfloat) - 0.139376,
-       (GLfloat) - 0.744638, (GLfloat) 0.652728, (GLfloat) - 0.139500,
-       (GLfloat) - 0.673012, (GLfloat) 0.585174, (GLfloat) - 0.452357,
-       (GLfloat) - 0.673042, (GLfloat) 0.585047, (GLfloat) - 0.452476,
-       (GLfloat) - 0.599894, (GLfloat) 0.659162, (GLfloat) 0.453468,
-       (GLfloat) - 0.607958, (GLfloat) 0.656733, (GLfloat) 0.446194,
-       (GLfloat) - 0.673012, (GLfloat) 0.585174, (GLfloat) 0.452357,
-       (GLfloat) - 0.673042, (GLfloat) 0.585047, (GLfloat) 0.452476,
-       (GLfloat) - 0.744638, (GLfloat) 0.652728, (GLfloat) 0.139500,
-       (GLfloat) - 0.744575, (GLfloat) 0.652826, (GLfloat) 0.139376,
-       (GLfloat) - 0.671022, (GLfloat) 0.728096, (GLfloat) 0.140020,
-       (GLfloat) - 0.673258, (GLfloat) 0.726567, (GLfloat) 0.137198,
-       (GLfloat) - 0.727676, (GLfloat) 0.496263, (GLfloat) 0.473510,
-       (GLfloat) - 0.726250, (GLfloat) 0.505128, (GLfloat) 0.466269,
-       (GLfloat) - 0.810846, (GLfloat) 0.567072, (GLfloat) 0.144768,
-       (GLfloat) - 0.812157, (GLfloat) 0.564556, (GLfloat) 0.147234,
-       (GLfloat) - 0.787870, (GLfloat) 0.599385, (GLfloat) 0.141417,
-       (GLfloat) - 0.788753, (GLfloat) 0.597789, (GLfloat) 0.143234,
-       (GLfloat) - 0.711650, (GLfloat) 0.528248, (GLfloat) 0.463150,
-       (GLfloat) - 0.710607, (GLfloat) 0.534378, (GLfloat) 0.457688,
-       (GLfloat) - 0.459423, (GLfloat) 0.314205, (GLfloat) 0.830786,
-       (GLfloat) - 0.469134, (GLfloat) 0.308642, (GLfloat) 0.827438,
-       (GLfloat) - 0.469062, (GLfloat) 0.325364, (GLfloat) 0.821048,
-       (GLfloat) - 0.460048, (GLfloat) 0.328491, (GLfloat) 0.824894,
-       (GLfloat) - 0.168365, (GLfloat) 0.083796, (GLfloat) 0.982157,
-       (GLfloat) - 0.160419, (GLfloat) 0.086730, (GLfloat) 0.983231,
-       (GLfloat) - 0.151547, (GLfloat) 0.101367, (GLfloat) 0.983239,
-       (GLfloat) - 0.156023, (GLfloat) 0.098476, (GLfloat) 0.982832,
-       (GLfloat) - 0.386943, (GLfloat) 0.429064, (GLfloat) 0.816198,
-       (GLfloat) - 0.398435, (GLfloat) 0.428657, (GLfloat) 0.810865,
-       (GLfloat) - 0.135291, (GLfloat) 0.136613, (GLfloat) 0.981343,
-       (GLfloat) - 0.139055, (GLfloat) 0.136609, (GLfloat) 0.980817,
-       (GLfloat) - 0.158806, (GLfloat) 0.102320, (GLfloat) 0.981994,
-       (GLfloat) - 0.163680, (GLfloat) 0.101509, (GLfloat) 0.981277,
-       (GLfloat) - 0.443045, (GLfloat) 0.369548, (GLfloat) 0.816790,
-       (GLfloat) - 0.444437, (GLfloat) 0.369300, (GLfloat) 0.816145,
-       (GLfloat) 0.316237, (GLfloat) - 0.497952, (GLfloat) 0.807488,
-       (GLfloat) 0.343268, (GLfloat) - 0.493329, (GLfloat) 0.799246,
-       (GLfloat) 0.397936, (GLfloat) - 0.439744, (GLfloat) 0.805154,
-       (GLfloat) 0.385418, (GLfloat) - 0.444521, (GLfloat) 0.808613,
-       (GLfloat) 0.123751, (GLfloat) - 0.168768, (GLfloat) 0.977856,
-       (GLfloat) 0.114455, (GLfloat) - 0.171068, (GLfloat) 0.978589,
-       (GLfloat) 0.101830, (GLfloat) - 0.173040, (GLfloat) 0.979637,
-       (GLfloat) 0.113533, (GLfloat) - 0.172348, (GLfloat) 0.978471,
-       (GLfloat) 0.477126, (GLfloat) - 0.265003, (GLfloat) 0.837929,
-       (GLfloat) 0.495553, (GLfloat) - 0.246921, (GLfloat) 0.832741,
-       (GLfloat) 0.154178, (GLfloat) - 0.091800, (GLfloat) 0.983769,
-       (GLfloat) 0.160344, (GLfloat) - 0.086930, (GLfloat) 0.983226,
-       (GLfloat) 0.135385, (GLfloat) - 0.146968, (GLfloat) 0.979832,
-       (GLfloat) 0.138045, (GLfloat) - 0.145699, (GLfloat) 0.979651,
-       (GLfloat) 0.446739, (GLfloat) - 0.363453, (GLfloat) 0.817512,
-       (GLfloat) 0.441753, (GLfloat) - 0.366614, (GLfloat) 0.818809,
-       (GLfloat) 0.786198, (GLfloat) - 0.394047, (GLfloat) 0.476047,
-       (GLfloat) 0.792547, (GLfloat) - 0.363224, (GLfloat) 0.489834,
-       (GLfloat) 0.707476, (GLfloat) - 0.538845, (GLfloat) 0.457301,
-       (GLfloat) 0.711142, (GLfloat) - 0.529032, (GLfloat) 0.463037,
-       (GLfloat) 0.801588, (GLfloat) - 0.580242, (GLfloat) 0.144141,
-       (GLfloat) 0.799043, (GLfloat) - 0.584300, (GLfloat) 0.141857,
-       (GLfloat) 0.903357, (GLfloat) - 0.400085, (GLfloat) 0.154524,
-       (GLfloat) 0.898654, (GLfloat) - 0.412515, (GLfloat) 0.149172,
-       (GLfloat) 0.471890, (GLfloat) - 0.763546, (GLfloat) 0.440814,
-       (GLfloat) 0.497278, (GLfloat) - 0.754424, (GLfloat) 0.428437,
-       (GLfloat) 0.515315, (GLfloat) - 0.846316, (GLfloat) 0.134909,
-       (GLfloat) 0.524719, (GLfloat) - 0.841405, (GLfloat) 0.129258,
-       (GLfloat) 0.671646, (GLfloat) - 0.728471, (GLfloat) 0.134984,
-       (GLfloat) 0.668271, (GLfloat) - 0.731195, (GLfloat) 0.136994,
-       (GLfloat) 0.610971, (GLfloat) - 0.657561, (GLfloat) 0.440826,
-       (GLfloat) 0.601302, (GLfloat) - 0.663396, (GLfloat) 0.445356,
-       (GLfloat) 0.497278, (GLfloat) - 0.754424, (GLfloat) - 0.428437,
-       (GLfloat) 0.471890, (GLfloat) - 0.763546, (GLfloat) - 0.440814,
-       (GLfloat) 0.610971, (GLfloat) - 0.657561, (GLfloat) - 0.440826,
-       (GLfloat) 0.601301, (GLfloat) - 0.663396, (GLfloat) - 0.445356,
-       (GLfloat) 0.668271, (GLfloat) - 0.731195, (GLfloat) - 0.136994,
-       (GLfloat) 0.671646, (GLfloat) - 0.728471, (GLfloat) - 0.134984,
-       (GLfloat) 0.515315, (GLfloat) - 0.846316, (GLfloat) - 0.134909,
-       (GLfloat) 0.524719, (GLfloat) - 0.841405, (GLfloat) - 0.129258,
-       (GLfloat) 0.792547, (GLfloat) - 0.363225, (GLfloat) - 0.489834,
-       (GLfloat) 0.786198, (GLfloat) - 0.394046, (GLfloat) - 0.476047,
-       (GLfloat) 0.903357, (GLfloat) - 0.400085, (GLfloat) - 0.154524,
-       (GLfloat) 0.898654, (GLfloat) - 0.412515, (GLfloat) - 0.149172,
-       (GLfloat) 0.799043, (GLfloat) - 0.584299, (GLfloat) - 0.141858,
-       (GLfloat) 0.801588, (GLfloat) - 0.580242, (GLfloat) - 0.144141,
-       (GLfloat) 0.707476, (GLfloat) - 0.538845, (GLfloat) - 0.457301,
-       (GLfloat) 0.711142, (GLfloat) - 0.529031, (GLfloat) - 0.463037,
-       (GLfloat) 0.844921, (GLfloat) - 0.202233, (GLfloat) 0.495188,
-       (GLfloat) 0.846624, (GLfloat) - 0.162790, (GLfloat) 0.506682,
-       (GLfloat) 0.967461, (GLfloat) - 0.195075, (GLfloat) 0.161136,
-       (GLfloat) 0.965076, (GLfloat) - 0.210256, (GLfloat) 0.156272,
-       (GLfloat) 0.933716, (GLfloat) - 0.317920, (GLfloat) 0.164623,
-       (GLfloat) 0.928870, (GLfloat) - 0.334244, (GLfloat) 0.159632,
-       (GLfloat) 0.801028, (GLfloat) - 0.328506, (GLfloat) 0.500438,
-       (GLfloat) 0.805814, (GLfloat) - 0.302226, (GLfloat) 0.509238,
-       (GLfloat) 0.844921, (GLfloat) - 0.202233, (GLfloat) - 0.495188,
-       (GLfloat) 0.846624, (GLfloat) - 0.162790, (GLfloat) - 0.506682,
-       (GLfloat) 0.805814, (GLfloat) - 0.302226, (GLfloat) - 0.509238,
-       (GLfloat) 0.801028, (GLfloat) - 0.328507, (GLfloat) - 0.500438,
-       (GLfloat) 0.933716, (GLfloat) - 0.317920, (GLfloat) - 0.164623,
-       (GLfloat) 0.928870, (GLfloat) - 0.334244, (GLfloat) - 0.159632,
-       (GLfloat) 0.965076, (GLfloat) - 0.210256, (GLfloat) - 0.156272,
-       (GLfloat) 0.967461, (GLfloat) - 0.195075, (GLfloat) - 0.161136,
-       (GLfloat) 0.116677, (GLfloat) - 0.971600, (GLfloat) - 0.205866,
-       (GLfloat) 0.095439, (GLfloat) - 0.979375, (GLfloat) - 0.178092,
-       (GLfloat) 0.145951, (GLfloat) - 0.986885, (GLfloat) - 0.068965,
-       (GLfloat) 0.134470, (GLfloat) - 0.988213, (GLfloat) - 0.073162,
-       (GLfloat) 0.572548, (GLfloat) - 0.810794, (GLfloat) - 0.121664,
-       (GLfloat) 0.603894, (GLfloat) - 0.784891, (GLfloat) - 0.138773,
-       (GLfloat) 0.437036, (GLfloat) - 0.822210, (GLfloat) - 0.364650,
-       (GLfloat) 0.472429, (GLfloat) - 0.800503, (GLfloat) - 0.368789,
-       (GLfloat) 0.095438, (GLfloat) - 0.979375, (GLfloat) 0.178092,
-       (GLfloat) 0.116677, (GLfloat) - 0.971600, (GLfloat) 0.205866,
-       (GLfloat) 0.472430, (GLfloat) - 0.800503, (GLfloat) 0.368789,
-       (GLfloat) 0.437036, (GLfloat) - 0.822210, (GLfloat) 0.364650,
-       (GLfloat) 0.603894, (GLfloat) - 0.784891, (GLfloat) 0.138773,
-       (GLfloat) 0.572548, (GLfloat) - 0.810794, (GLfloat) 0.121664,
-       (GLfloat) 0.134470, (GLfloat) - 0.988213, (GLfloat) 0.073162,
-       (GLfloat) 0.145951, (GLfloat) - 0.986885, (GLfloat) 0.068965,
-       (GLfloat) 0.531733, (GLfloat) - 0.073239, (GLfloat) - 0.843739,
-       (GLfloat) 0.511681, (GLfloat) - 0.104754, (GLfloat) - 0.852766,
-       (GLfloat) 0.176179, (GLfloat) 0.024438, (GLfloat) - 0.984055,
-       (GLfloat) 0.188717, (GLfloat) 0.040307, (GLfloat) - 0.981204,
-       (GLfloat) 0.150895, (GLfloat) - 0.104293, (GLfloat) - 0.983033,
-       (GLfloat) 0.147932, (GLfloat) - 0.109363, (GLfloat) - 0.982932,
-       (GLfloat) 0.481880, (GLfloat) - 0.227373, (GLfloat) - 0.846223,
-       (GLfloat) 0.480166, (GLfloat) - 0.230321, (GLfloat) - 0.846400,
-       (GLfloat) - 0.443443, (GLfloat) 0.349023, (GLfloat) - 0.825555,
-       (GLfloat) - 0.447255, (GLfloat) 0.345654, (GLfloat) - 0.824916,
-       (GLfloat) - 0.494732, (GLfloat) 0.167751, (GLfloat) - 0.852701,
-       (GLfloat) - 0.499143, (GLfloat) 0.160727, (GLfloat) - 0.851483,
-       (GLfloat) - 0.167121, (GLfloat) 0.020158, (GLfloat) - 0.985730,
-       (GLfloat) - 0.166487, (GLfloat) 0.021208, (GLfloat) - 0.985815,
-       (GLfloat) - 0.129817, (GLfloat) 0.178023, (GLfloat) - 0.975426,
-       (GLfloat) - 0.132948, (GLfloat) 0.174752, (GLfloat) - 0.975595,
-       (GLfloat) - 0.353563, (GLfloat) - 0.901143, (GLfloat) - 0.250869,
-       (GLfloat) - 0.351628, (GLfloat) - 0.891347, (GLfloat) - 0.286110,
-       (GLfloat) - 0.232284, (GLfloat) - 0.920192, (GLfloat) - 0.315104,
-       (GLfloat) - 0.236990, (GLfloat) - 0.922714, (GLfloat) - 0.304029,
-       (GLfloat) - 0.244093, (GLfloat) - 0.592931, (GLfloat) - 0.767366,
-       (GLfloat) - 0.249996, (GLfloat) - 0.572960, (GLfloat) - 0.780525,
-       (GLfloat) - 0.510472, (GLfloat) - 0.553764, (GLfloat) - 0.657848,
-       (GLfloat) - 0.520671, (GLfloat) - 0.533495, (GLfloat) - 0.666547,
-       (GLfloat) 0.010781, (GLfloat) - 0.964447, (GLfloat) - 0.264055,
-       (GLfloat) 0.040104, (GLfloat) - 0.958098, (GLfloat) - 0.283621,
-       (GLfloat) 0.223629, (GLfloat) - 0.775786, (GLfloat) - 0.590040,
-       (GLfloat) 0.262682, (GLfloat) - 0.745474, (GLfloat) - 0.612590,
-       (GLfloat) 0.033849, (GLfloat) - 0.640593, (GLfloat) - 0.767134,
-       (GLfloat) 0.004138, (GLfloat) - 0.677809, (GLfloat) - 0.735226,
-       (GLfloat) - 0.092889, (GLfloat) - 0.948124, (GLfloat) - 0.304029,
-       (GLfloat) - 0.096449, (GLfloat) - 0.944143, (GLfloat) - 0.315104,
-       (GLfloat) - 0.719211, (GLfloat) 0.510808, (GLfloat) - 0.470968,
-       (GLfloat) - 0.720697, (GLfloat) 0.504519, (GLfloat) - 0.475454,
-       (GLfloat) - 0.811897, (GLfloat) 0.564936, (GLfloat) - 0.147209,
-       (GLfloat) - 0.813044, (GLfloat) 0.562871, (GLfloat) - 0.148783,
-       (GLfloat) - 0.910433, (GLfloat) 0.380820, (GLfloat) - 0.161519,
-       (GLfloat) - 0.907768, (GLfloat) 0.388545, (GLfloat) - 0.158079,
-       (GLfloat) - 0.804000, (GLfloat) 0.309508, (GLfloat) - 0.507729,
-       (GLfloat) - 0.801647, (GLfloat) 0.326768, (GLfloat) - 0.500584,
-       (GLfloat) - 0.720697, (GLfloat) 0.504519, (GLfloat) 0.475454,
-       (GLfloat) - 0.719210, (GLfloat) 0.510808, (GLfloat) 0.470968,
-       (GLfloat) - 0.804000, (GLfloat) 0.309509, (GLfloat) 0.507729,
-       (GLfloat) - 0.801647, (GLfloat) 0.326768, (GLfloat) 0.500585,
-       (GLfloat) - 0.907768, (GLfloat) 0.388545, (GLfloat) 0.158079,
-       (GLfloat) - 0.910433, (GLfloat) 0.380820, (GLfloat) 0.161519,
-       (GLfloat) - 0.811897, (GLfloat) 0.564936, (GLfloat) 0.147209,
-       (GLfloat) - 0.813044, (GLfloat) 0.562871, (GLfloat) 0.148783,
-       (GLfloat) - 0.441947, (GLfloat) - 0.873099, (GLfloat) 0.205867,
-       (GLfloat) - 0.424648, (GLfloat) - 0.887670, (GLfloat) 0.178091,
-       (GLfloat) - 0.474684, (GLfloat) - 0.877450, (GLfloat) 0.068965,
-       (GLfloat) - 0.464350, (GLfloat) - 0.882625, (GLfloat) 0.073162,
-       (GLfloat) - 0.909934, (GLfloat) - 0.390292, (GLfloat) 0.140328,
-       (GLfloat) - 0.923715, (GLfloat) - 0.349249, (GLfloat) 0.157405,
-       (GLfloat) - 0.775101, (GLfloat) - 0.483039, (GLfloat) 0.407299,
-       (GLfloat) - 0.785487, (GLfloat) - 0.436754, (GLfloat) 0.438470,
-       (GLfloat) - 0.424649, (GLfloat) - 0.887669, (GLfloat) - 0.178092,
-       (GLfloat) - 0.441947, (GLfloat) - 0.873099, (GLfloat) - 0.205866,
-       (GLfloat) - 0.775100, (GLfloat) - 0.483039, (GLfloat) - 0.407299,
-       (GLfloat) - 0.785487, (GLfloat) - 0.436754, (GLfloat) - 0.438470,
-       (GLfloat) - 0.923715, (GLfloat) - 0.349249, (GLfloat) - 0.157405,
-       (GLfloat) - 0.909934, (GLfloat) - 0.390292, (GLfloat) - 0.140328,
-       (GLfloat) - 0.464350, (GLfloat) - 0.882625, (GLfloat) - 0.073162,
-       (GLfloat) - 0.474684, (GLfloat) - 0.877450, (GLfloat) - 0.068965,
-       (GLfloat) - 0.447255, (GLfloat) 0.345654, (GLfloat) 0.824916,
-       (GLfloat) - 0.443443, (GLfloat) 0.349023, (GLfloat) 0.825555,
-       (GLfloat) - 0.129817, (GLfloat) 0.178023, (GLfloat) 0.975426,
-       (GLfloat) - 0.132949, (GLfloat) 0.174752, (GLfloat) 0.975595,
-       (GLfloat) - 0.166487, (GLfloat) 0.021208, (GLfloat) 0.985815,
-       (GLfloat) - 0.167121, (GLfloat) 0.020158, (GLfloat) 0.985730,
-       (GLfloat) - 0.494732, (GLfloat) 0.167753, (GLfloat) 0.852701,
-       (GLfloat) - 0.499144, (GLfloat) 0.160728, (GLfloat) 0.851482,
-       (GLfloat) 0.531733, (GLfloat) - 0.073239, (GLfloat) 0.843739,
-       (GLfloat) 0.511681, (GLfloat) - 0.104754, (GLfloat) 0.852765,
-       (GLfloat) 0.480166, (GLfloat) - 0.230321, (GLfloat) 0.846400,
-       (GLfloat) 0.481881, (GLfloat) - 0.227371, (GLfloat) 0.846223,
-       (GLfloat) 0.150895, (GLfloat) - 0.104294, (GLfloat) 0.983033,
-       (GLfloat) 0.147933, (GLfloat) - 0.109363, (GLfloat) 0.982932,
-       (GLfloat) 0.188717, (GLfloat) 0.040307, (GLfloat) 0.981204,
-       (GLfloat) 0.176179, (GLfloat) 0.024438, (GLfloat) 0.984055,
-       (GLfloat) 0.040104, (GLfloat) - 0.958098, (GLfloat) 0.283620,
-       (GLfloat) 0.010781, (GLfloat) - 0.964447, (GLfloat) 0.264055,
-       (GLfloat) - 0.096449, (GLfloat) - 0.944143, (GLfloat) 0.315104,
-       (GLfloat) - 0.092889, (GLfloat) - 0.948124, (GLfloat) 0.304029,
-       (GLfloat) 0.004138, (GLfloat) - 0.677808, (GLfloat) 0.735227,
-       (GLfloat) 0.033849, (GLfloat) - 0.640593, (GLfloat) 0.767135,
-       (GLfloat) 0.223629, (GLfloat) - 0.775785, (GLfloat) 0.590040,
-       (GLfloat) 0.262682, (GLfloat) - 0.745474, (GLfloat) 0.612591,
-       (GLfloat) - 0.353563, (GLfloat) - 0.901143, (GLfloat) 0.250868,
-       (GLfloat) - 0.351627, (GLfloat) - 0.891347, (GLfloat) 0.286109,
-       (GLfloat) - 0.510472, (GLfloat) - 0.553764, (GLfloat) 0.657848,
-       (GLfloat) - 0.520671, (GLfloat) - 0.533495, (GLfloat) 0.666547,
-       (GLfloat) - 0.249996, (GLfloat) - 0.572959, (GLfloat) 0.780525,
-       (GLfloat) - 0.244093, (GLfloat) - 0.592931, (GLfloat) 0.767367,
-       (GLfloat) - 0.236991, (GLfloat) - 0.922714, (GLfloat) 0.304029,
-       (GLfloat) - 0.232284, (GLfloat) - 0.920192, (GLfloat) 0.315104,
-       (GLfloat) - 0.036947, (GLfloat) - 0.991593, (GLfloat) - 0.124011,
-       (GLfloat) - 0.048560, (GLfloat) - 0.989545, (GLfloat) - 0.135802,
-       (GLfloat) - 0.129266, (GLfloat) - 0.985532, (GLfloat) - 0.109621,
-       (GLfloat) - 0.133311, (GLfloat) - 0.984414, (GLfloat) - 0.114709,
-       (GLfloat) - 0.143769, (GLfloat) - 0.989058, (GLfloat) - 0.033079,
-       (GLfloat) - 0.140897, (GLfloat) - 0.989565, (GLfloat) - 0.030163,
-       (GLfloat) - 0.064478, (GLfloat) - 0.996956, (GLfloat) - 0.043834,
-       (GLfloat) - 0.059398, (GLfloat) - 0.997446, (GLfloat) - 0.039656,
-       (GLfloat) - 0.292813, (GLfloat) - 0.946477, (GLfloat) - 0.135802,
-       (GLfloat) - 0.304426, (GLfloat) - 0.944429, (GLfloat) - 0.124011,
-       (GLfloat) - 0.280390, (GLfloat) - 0.958885, (GLfloat) - 0.043834,
-       (GLfloat) - 0.285331, (GLfloat) - 0.957608, (GLfloat) - 0.039656,
-       (GLfloat) - 0.206051, (GLfloat) - 0.978076, (GLfloat) - 0.030163,
-       (GLfloat) - 0.203179, (GLfloat) - 0.978583, (GLfloat) - 0.033079,
-       (GLfloat) - 0.215602, (GLfloat) - 0.970309, (GLfloat) - 0.109621,
-       (GLfloat) - 0.211418, (GLfloat) - 0.970641, (GLfloat) - 0.114709,
-       (GLfloat) - 0.304426, (GLfloat) - 0.944429, (GLfloat) 0.124011,
-       (GLfloat) - 0.292813, (GLfloat) - 0.946477, (GLfloat) 0.135803,
-       (GLfloat) - 0.215602, (GLfloat) - 0.970309, (GLfloat) 0.109621,
-       (GLfloat) - 0.211418, (GLfloat) - 0.970641, (GLfloat) 0.114709,
-       (GLfloat) - 0.203179, (GLfloat) - 0.978583, (GLfloat) 0.033079,
-       (GLfloat) - 0.206051, (GLfloat) - 0.978076, (GLfloat) 0.030163,
-       (GLfloat) - 0.280390, (GLfloat) - 0.958885, (GLfloat) 0.043834,
-       (GLfloat) - 0.285331, (GLfloat) - 0.957608, (GLfloat) 0.039656,
-       (GLfloat) - 0.048560, (GLfloat) - 0.989545, (GLfloat) 0.135802,
-       (GLfloat) - 0.036947, (GLfloat) - 0.991593, (GLfloat) 0.124011,
-       (GLfloat) - 0.064478, (GLfloat) - 0.996956, (GLfloat) 0.043834,
-       (GLfloat) - 0.059398, (GLfloat) - 0.997446, (GLfloat) 0.039656,
-       (GLfloat) - 0.140897, (GLfloat) - 0.989565, (GLfloat) 0.030163,
-       (GLfloat) - 0.143769, (GLfloat) - 0.989058, (GLfloat) 0.033079,
-       (GLfloat) - 0.129266, (GLfloat) - 0.985532, (GLfloat) 0.109621,
-       (GLfloat) - 0.133311, (GLfloat) - 0.984414, (GLfloat) 0.114709,
-};
-
-static unsigned short int s1_3_POLS[] =
-{
-      3, 82, 12, 76, 1, 3, 76, 74, 82, 1, 3, 22, 78, 74, 1, 3, 22, 74, 76, 1,
-      3, 78, 20, 80, 1, 3, 80, 74, 78, 1, 3, 28, 82, 74, 1, 3, 28, 74, 80, 1,
-      3, 88, 13, 84, 1, 3, 84, 77, 88, 1, 3, 24, 86, 77, 1, 3, 24, 77, 84, 1,
-      3, 86, 20, 78, 1, 3, 78, 77, 86, 1, 3, 22, 88, 77, 1, 3, 22, 77, 78, 1,
-      3, 14, 90, 85, 1, 3, 14, 85, 93, 1, 3, 26, 91, 85, 1, 3, 26, 85, 90, 1,
-      3, 20, 86, 85, 1, 3, 20, 85, 91, 1, 3, 24, 93, 85, 1, 3, 24, 85, 86, 1,
-      3, 15, 95, 79, 1, 3, 15, 79, 97, 1, 3, 28, 80, 79, 1, 3, 28, 79, 95, 1,
-      3, 20, 91, 79, 1, 3, 20, 79, 80, 1, 3, 26, 97, 79, 1, 3, 26, 79, 91, 1,
-    3, 13, 99, 83, 1, 3, 13, 83, 84, 1, 3, 99, 30, 101, 1, 3, 101, 83, 99, 1,
-  3, 23, 102, 83, 1, 3, 23, 83, 101, 1, 3, 102, 24, 84, 1, 3, 84, 83, 102, 1,
-       3, 108, 16, 104, 1, 3, 104, 100, 108, 1, 3, 32, 106, 100, 1, 3, 32, 100, 104, 1,
-       3, 106, 23, 101, 1, 3, 101, 100, 106, 1, 3, 30, 108, 100, 1, 3, 30, 100, 101, 1,
-       3, 113, 17, 110, 1, 3, 110, 105, 113, 1, 3, 33, 111, 105, 1, 3, 33, 105, 110, 1,
-       3, 23, 106, 105, 1, 3, 23, 105, 111, 1, 3, 106, 32, 113, 1, 3, 113, 105, 106, 1,
-   3, 14, 93, 92, 1, 3, 14, 92, 114, 1, 3, 93, 24, 102, 1, 3, 102, 92, 93, 1,
-3, 23, 111, 92, 1, 3, 23, 92, 102, 1, 3, 111, 33, 114, 1, 3, 114, 92, 111, 1,
-       3, 16, 116, 103, 1, 3, 16, 103, 104, 1, 3, 116, 35, 118, 1, 3, 118, 103, 116, 1,
-       3, 31, 119, 103, 1, 3, 31, 103, 118, 1, 3, 119, 32, 104, 1, 3, 104, 103, 119, 1,
-       3, 18, 121, 117, 1, 3, 18, 117, 125, 1, 3, 121, 36, 123, 1, 3, 123, 117, 121, 1,
-       3, 31, 118, 117, 1, 3, 31, 117, 123, 1, 3, 118, 35, 125, 1, 3, 125, 117, 118, 1,
-       3, 19, 127, 122, 1, 3, 19, 122, 130, 1, 3, 127, 37, 128, 1, 3, 128, 122, 127, 1,
-       3, 31, 123, 122, 1, 3, 31, 122, 128, 1, 3, 123, 36, 130, 1, 3, 130, 122, 123, 1,
-       3, 17, 113, 112, 1, 3, 17, 112, 131, 1, 3, 113, 32, 119, 1, 3, 119, 112, 113, 1,
-       3, 31, 128, 112, 1, 3, 31, 112, 119, 1, 3, 128, 37, 131, 1, 3, 131, 112, 128, 1,
-       3, 121, 18, 133, 1, 3, 133, 120, 121, 1, 3, 39, 134, 120, 1, 3, 39, 120, 133, 1,
-       3, 134, 27, 135, 1, 3, 135, 120, 134, 1, 3, 36, 121, 120, 1, 3, 36, 120, 135, 1,
-   3, 12, 82, 81, 1, 3, 12, 81, 138, 1, 3, 82, 28, 136, 1, 3, 136, 81, 82, 1,
-3, 27, 134, 81, 1, 3, 27, 81, 136, 1, 3, 134, 39, 138, 1, 3, 138, 81, 134, 1,
- 3, 15, 139, 94, 1, 3, 15, 94, 95, 1, 3, 139, 40, 140, 1, 3, 140, 94, 139, 1,
-  3, 27, 136, 94, 1, 3, 27, 94, 140, 1, 3, 136, 28, 95, 1, 3, 95, 94, 136, 1,
-       3, 141, 19, 130, 1, 3, 130, 129, 141, 1, 3, 130, 36, 135, 1, 3, 135, 129, 130, 1,
-       3, 27, 140, 129, 1, 3, 27, 129, 135, 1, 3, 40, 141, 129, 1, 3, 40, 129, 140, 1,
- 3, 14, 114, 89, 1, 3, 14, 89, 90, 1, 3, 114, 33, 142, 1, 3, 142, 89, 114, 1,
-  3, 25, 143, 89, 1, 3, 25, 89, 142, 1, 3, 143, 26, 90, 1, 3, 90, 89, 143, 1,
-       3, 17, 131, 109, 1, 3, 17, 109, 110, 1, 3, 131, 37, 144, 1, 3, 144, 109, 131, 1,
-       3, 25, 142, 109, 1, 3, 25, 109, 144, 1, 3, 142, 33, 110, 1, 3, 110, 109, 142, 1,
-       3, 19, 141, 126, 1, 3, 19, 126, 127, 1, 3, 141, 40, 145, 1, 3, 145, 126, 141, 1,
-       3, 25, 144, 126, 1, 3, 25, 126, 145, 1, 3, 144, 37, 127, 1, 3, 127, 126, 144, 1,
-   3, 15, 97, 96, 1, 3, 15, 96, 139, 1, 3, 97, 26, 143, 1, 3, 143, 96, 97, 1,
-3, 25, 145, 96, 1, 3, 25, 96, 143, 1, 3, 145, 40, 139, 1, 3, 139, 96, 145, 1,
- 3, 12, 146, 75, 1, 3, 12, 75, 76, 1, 3, 146, 41, 148, 1, 3, 148, 75, 146, 1,
-  3, 21, 149, 75, 1, 3, 21, 75, 148, 1, 3, 149, 22, 76, 1, 3, 76, 75, 149, 1,
-       3, 155, 8, 151, 1, 3, 151, 147, 155, 1, 3, 43, 153, 147, 1, 3, 43, 147, 151, 1,
-       3, 153, 21, 148, 1, 3, 148, 147, 153, 1, 3, 41, 155, 147, 1, 3, 41, 147, 148, 1,
-       3, 160, 11, 157, 1, 3, 157, 152, 160, 1, 3, 44, 158, 152, 1, 3, 44, 152, 157, 1,
-       3, 158, 21, 153, 1, 3, 153, 152, 158, 1, 3, 43, 160, 152, 1, 3, 43, 152, 153, 1,
-   3, 13, 88, 87, 1, 3, 13, 87, 161, 1, 3, 88, 22, 149, 1, 3, 149, 87, 88, 1,
-3, 21, 158, 87, 1, 3, 21, 87, 149, 1, 3, 158, 44, 161, 1, 3, 161, 87, 158, 1,
-       3, 18, 162, 132, 1, 3, 18, 132, 133, 1, 3, 162, 45, 164, 1, 3, 164, 132, 162, 1,
-       3, 38, 165, 132, 1, 3, 38, 132, 164, 1, 3, 165, 39, 133, 1, 3, 133, 132, 165, 1,
-       3, 170, 9, 167, 1, 3, 167, 163, 170, 1, 3, 47, 168, 163, 1, 3, 47, 163, 167, 1,
-       3, 168, 38, 164, 1, 3, 164, 163, 168, 1, 3, 45, 170, 163, 1, 3, 45, 163, 164, 1,
-3, 8, 155, 154, 1, 3, 8, 154, 173, 1, 3, 155, 41, 171, 1, 3, 171, 154, 155, 1,
-       3, 38, 168, 154, 1, 3, 38, 154, 171, 1, 3, 168, 47, 173, 1, 3, 173, 154, 168, 1,
-       3, 146, 12, 138, 1, 3, 138, 137, 146, 1, 3, 39, 165, 137, 1, 3, 39, 137, 138, 1,
-       3, 165, 38, 171, 1, 3, 171, 137, 165, 1, 3, 41, 146, 137, 1, 3, 41, 137, 171, 1,
-       3, 16, 108, 107, 1, 3, 16, 107, 177, 1, 3, 108, 30, 174, 1, 3, 174, 107, 108, 1,
-       3, 29, 176, 107, 1, 3, 29, 107, 174, 1, 3, 176, 50, 177, 1, 3, 177, 107, 176, 1,
-  3, 99, 13, 161, 1, 3, 161, 98, 99, 1, 3, 44, 178, 98, 1, 3, 44, 98, 161, 1,
- 3, 178, 29, 174, 1, 3, 174, 98, 178, 1, 3, 30, 99, 98, 1, 3, 30, 98, 174, 1,
-       3, 11, 180, 156, 1, 3, 11, 156, 157, 1, 3, 180, 49, 181, 1, 3, 181, 156, 180, 1,
-       3, 29, 178, 156, 1, 3, 29, 156, 181, 1, 3, 178, 44, 157, 1, 3, 157, 156, 178, 1,
-       3, 185, 10, 183, 1, 3, 183, 175, 185, 1, 3, 50, 176, 175, 1, 3, 50, 175, 183, 1,
-       3, 176, 29, 181, 1, 3, 181, 175, 176, 1, 3, 49, 185, 175, 1, 3, 49, 175, 181, 1,
-       3, 162, 18, 125, 1, 3, 125, 124, 162, 1, 3, 35, 186, 124, 1, 3, 35, 124, 125, 1,
-       3, 186, 34, 187, 1, 3, 187, 124, 186, 1, 3, 45, 162, 124, 1, 3, 45, 124, 187, 1,
-       3, 116, 16, 177, 1, 3, 177, 115, 116, 1, 3, 50, 188, 115, 1, 3, 50, 115, 177, 1,
-       3, 188, 34, 186, 1, 3, 186, 115, 188, 1, 3, 35, 116, 115, 1, 3, 35, 115, 186, 1,
-       3, 10, 190, 182, 1, 3, 10, 182, 183, 1, 3, 190, 52, 191, 1, 3, 191, 182, 190, 1,
-       3, 34, 188, 182, 1, 3, 34, 182, 191, 1, 3, 188, 50, 183, 1, 3, 183, 182, 188, 1,
-3, 9, 170, 169, 1, 3, 9, 169, 193, 1, 3, 170, 45, 187, 1, 3, 187, 169, 170, 1,
-       3, 34, 191, 169, 1, 3, 34, 169, 187, 1, 3, 191, 52, 193, 1, 3, 193, 169, 191, 1,
-       3, 201, 1, 196, 1, 3, 196, 194, 201, 1, 3, 54, 198, 194, 1, 3, 54, 194, 196, 1,
-       3, 198, 46, 199, 1, 3, 199, 194, 198, 1, 3, 56, 201, 194, 1, 3, 56, 194, 199, 1,
-3, 3, 203, 197, 1, 3, 3, 197, 206, 1, 3, 203, 55, 204, 1, 3, 204, 197, 203, 1,
-       3, 46, 198, 197, 1, 3, 46, 197, 204, 1, 3, 198, 54, 206, 1, 3, 206, 197, 198, 1,
-       3, 208, 8, 173, 1, 3, 173, 172, 208, 1, 3, 47, 207, 172, 1, 3, 47, 172, 173, 1,
-       3, 207, 46, 204, 1, 3, 204, 172, 207, 1, 3, 55, 208, 172, 1, 3, 55, 172, 204, 1,
-3, 9, 209, 166, 1, 3, 9, 166, 167, 1, 3, 209, 56, 199, 1, 3, 199, 166, 209, 1,
-       3, 46, 207, 166, 1, 3, 46, 166, 199, 1, 3, 207, 47, 167, 1, 3, 167, 166, 207, 1,
-       3, 214, 1, 201, 1, 3, 201, 200, 214, 1, 3, 56, 210, 200, 1, 3, 56, 200, 201, 1,
-       3, 210, 51, 212, 1, 3, 212, 200, 210, 1, 3, 59, 214, 200, 1, 3, 59, 200, 212, 1,
-       3, 209, 9, 193, 1, 3, 193, 192, 209, 1, 3, 52, 215, 192, 1, 3, 52, 192, 193, 1,
-       3, 51, 210, 192, 1, 3, 51, 192, 215, 1, 3, 210, 56, 209, 1, 3, 209, 192, 210, 1,
-       3, 190, 10, 216, 1, 3, 216, 189, 190, 1, 3, 216, 57, 217, 1, 3, 217, 189, 216, 1,
-       3, 51, 215, 189, 1, 3, 51, 189, 217, 1, 3, 52, 190, 189, 1, 3, 52, 189, 215, 1,
-       3, 221, 0, 219, 1, 3, 219, 211, 221, 1, 3, 59, 212, 211, 1, 3, 59, 211, 219, 1,
-       3, 212, 51, 217, 1, 3, 217, 211, 212, 1, 3, 57, 221, 211, 1, 3, 57, 211, 217, 1,
-       3, 226, 0, 221, 1, 3, 221, 220, 226, 1, 3, 57, 222, 220, 1, 3, 57, 220, 221, 1,
-       3, 222, 48, 224, 1, 3, 224, 220, 222, 1, 3, 62, 226, 220, 1, 3, 62, 220, 224, 1,
-       3, 10, 185, 184, 1, 3, 10, 184, 216, 1, 3, 185, 49, 227, 1, 3, 227, 184, 185, 1,
-       3, 48, 222, 184, 1, 3, 48, 184, 227, 1, 3, 222, 57, 216, 1, 3, 216, 184, 222, 1,
-       3, 180, 11, 228, 1, 3, 228, 179, 180, 1, 3, 60, 229, 179, 1, 3, 60, 179, 228, 1,
-       3, 229, 48, 227, 1, 3, 227, 179, 229, 1, 3, 49, 180, 179, 1, 3, 49, 179, 227, 1,
-3, 2, 231, 223, 1, 3, 2, 223, 233, 1, 3, 231, 62, 224, 1, 3, 224, 223, 231, 1,
-       3, 48, 229, 223, 1, 3, 48, 223, 224, 1, 3, 229, 60, 233, 1, 3, 233, 223, 229, 1,
-3, 2, 233, 232, 1, 3, 2, 232, 237, 1, 3, 233, 60, 234, 1, 3, 234, 232, 233, 1,
-       3, 42, 235, 232, 1, 3, 42, 232, 234, 1, 3, 235, 64, 237, 1, 3, 237, 232, 235, 1,
-       3, 11, 160, 159, 1, 3, 11, 159, 228, 1, 3, 160, 43, 238, 1, 3, 238, 159, 160, 1,
-       3, 42, 234, 159, 1, 3, 42, 159, 238, 1, 3, 234, 60, 228, 1, 3, 228, 159, 234, 1,
-3, 8, 208, 150, 1, 3, 8, 150, 151, 1, 3, 208, 55, 239, 1, 3, 239, 150, 208, 1,
-       3, 42, 238, 150, 1, 3, 42, 150, 239, 1, 3, 238, 43, 151, 1, 3, 151, 150, 238, 1,
-3, 3, 241, 202, 1, 3, 3, 202, 203, 1, 3, 241, 64, 235, 1, 3, 235, 202, 241, 1,
-       3, 42, 239, 202, 1, 3, 42, 202, 235, 1, 3, 239, 55, 203, 1, 3, 203, 202, 239, 1,
-       3, 245, 2, 237, 1, 3, 237, 236, 245, 1, 3, 64, 242, 236, 1, 3, 64, 236, 237, 1,
-       3, 242, 63, 244, 1, 3, 244, 236, 242, 1, 3, 68, 245, 236, 1, 3, 68, 236, 244, 1,
-       3, 241, 3, 246, 1, 3, 246, 240, 241, 1, 3, 65, 248, 240, 1, 3, 65, 240, 246, 1,
-       3, 248, 63, 242, 1, 3, 242, 240, 248, 1, 3, 64, 241, 240, 1, 3, 64, 240, 242, 1,
-3, 4, 250, 247, 1, 3, 4, 247, 253, 1, 3, 67, 251, 247, 1, 3, 67, 247, 250, 1,
-       3, 63, 248, 247, 1, 3, 63, 247, 251, 1, 3, 65, 253, 247, 1, 3, 65, 247, 248, 1,
-3, 7, 255, 243, 1, 3, 7, 243, 257, 1, 3, 68, 244, 243, 1, 3, 68, 243, 255, 1,
-       3, 63, 251, 243, 1, 3, 63, 243, 244, 1, 3, 67, 257, 243, 1, 3, 67, 243, 251, 1,
-       3, 246, 3, 206, 1, 3, 206, 205, 246, 1, 3, 54, 258, 205, 1, 3, 54, 205, 206, 1,
-       3, 258, 53, 259, 1, 3, 259, 205, 258, 1, 3, 65, 246, 205, 1, 3, 65, 205, 259, 1,
-3, 1, 260, 195, 1, 3, 1, 195, 196, 1, 3, 260, 69, 262, 1, 3, 262, 195, 260, 1,
-       3, 53, 258, 195, 1, 3, 53, 195, 262, 1, 3, 258, 54, 196, 1, 3, 196, 195, 258, 1,
-       3, 267, 5, 264, 1, 3, 264, 261, 267, 1, 3, 70, 265, 261, 1, 3, 70, 261, 264, 1,
-       3, 53, 262, 261, 1, 3, 53, 261, 265, 1, 3, 262, 69, 267, 1, 3, 267, 261, 262, 1,
-3, 4, 253, 252, 1, 3, 4, 252, 268, 1, 3, 253, 65, 259, 1, 3, 259, 252, 253, 1,
-       3, 53, 265, 252, 1, 3, 53, 252, 259, 1, 3, 70, 268, 252, 1, 3, 70, 252, 265, 1,
-3, 1, 214, 213, 1, 3, 1, 213, 260, 1, 3, 214, 59, 269, 1, 3, 269, 213, 214, 1,
-       3, 58, 270, 213, 1, 3, 58, 213, 269, 1, 3, 270, 69, 260, 1, 3, 260, 213, 270, 1,
-3, 0, 271, 218, 1, 3, 0, 218, 219, 1, 3, 271, 71, 273, 1, 3, 273, 218, 271, 1,
-       3, 58, 269, 218, 1, 3, 58, 218, 273, 1, 3, 269, 59, 219, 1, 3, 219, 218, 269, 1,
-3, 6, 275, 272, 1, 3, 6, 272, 278, 1, 3, 72, 276, 272, 1, 3, 72, 272, 275, 1,
-       3, 58, 273, 272, 1, 3, 58, 272, 276, 1, 3, 273, 71, 278, 1, 3, 278, 272, 273, 1,
-3, 5, 267, 266, 1, 3, 5, 266, 279, 1, 3, 267, 69, 270, 1, 3, 270, 266, 267, 1,
-       3, 58, 276, 266, 1, 3, 58, 266, 270, 1, 3, 72, 279, 266, 1, 3, 72, 266, 276, 1,
-3, 0, 226, 225, 1, 3, 0, 225, 271, 1, 3, 226, 62, 280, 1, 3, 280, 225, 226, 1,
-       3, 61, 281, 225, 1, 3, 61, 225, 280, 1, 3, 281, 71, 271, 1, 3, 271, 225, 281, 1,
-       3, 231, 2, 245, 1, 3, 245, 230, 231, 1, 3, 68, 282, 230, 1, 3, 68, 230, 245, 1,
-       3, 282, 61, 280, 1, 3, 280, 230, 282, 1, 3, 62, 231, 230, 1, 3, 62, 230, 280, 1,
-3, 7, 283, 254, 1, 3, 7, 254, 255, 1, 3, 73, 284, 254, 1, 3, 73, 254, 283, 1,
-       3, 61, 282, 254, 1, 3, 61, 254, 284, 1, 3, 282, 68, 255, 1, 3, 255, 254, 282, 1,
-       3, 285, 6, 278, 1, 3, 278, 277, 285, 1, 3, 278, 71, 281, 1, 3, 281, 277, 278, 1,
-       3, 61, 284, 277, 1, 3, 61, 277, 281, 1, 3, 73, 285, 277, 1, 3, 73, 277, 284, 1,
-3, 4, 268, 249, 1, 3, 4, 249, 250, 1, 3, 268, 70, 286, 1, 3, 286, 249, 268, 1,
-       3, 66, 287, 249, 1, 3, 66, 249, 286, 1, 3, 287, 67, 250, 1, 3, 250, 249, 287, 1,
-3, 5, 279, 263, 1, 3, 5, 263, 264, 1, 3, 279, 72, 288, 1, 3, 288, 263, 279, 1,
-       3, 66, 286, 263, 1, 3, 66, 263, 288, 1, 3, 286, 70, 264, 1, 3, 264, 263, 286, 1,
-3, 6, 285, 274, 1, 3, 6, 274, 275, 1, 3, 285, 73, 289, 1, 3, 289, 274, 285, 1,
-       3, 66, 288, 274, 1, 3, 66, 274, 289, 1, 3, 288, 72, 275, 1, 3, 275, 274, 288, 1,
-3, 7, 257, 256, 1, 3, 7, 256, 283, 1, 3, 257, 67, 287, 1, 3, 287, 256, 257, 1,
-       3, 66, 289, 256, 1, 3, 66, 256, 287, 1, 3, 289, 73, 283, 1, 3, 283, 256, 289, 1,
-
-       0
-};
-
-struct lwo  LWO_s1_3 =
-{
-       290,                    /* number of points */
-       s1_3_PNTS, s1_3_normals, s1_3_POLS, 0L
-};
-
-#endif /* USE_GL */
-
-/* End of s1_3.c */
diff --git a/hacks/glx/s1_4.c b/hacks/glx/s1_4.c
deleted file mode 100644 (file)
index 1b3406d..0000000
+++ /dev/null
@@ -1,1057 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)s1_4.c       4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Points, polygons, and normal vectors to render "s1_4" in 3D.
- *
- * Generated by lw2ogl.  Link this with your program but do
- * not edit by hand.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include "buildlwo.h"
-
-static GLfloat s1_4_PNTS[] =
-{
-       (GLfloat) 0.691977, (GLfloat) 0.424648, (GLfloat) - 0.335934,
-       (GLfloat) 0.691977, (GLfloat) 0.424648, (GLfloat) - 0.664066,
-       (GLfloat) 0.910107, (GLfloat) 0.206343, (GLfloat) - 0.335934,
-       (GLfloat) 0.910107, (GLfloat) 0.206343, (GLfloat) - 0.664066,
-       (GLfloat) 0.820528, (GLfloat) 0.154011, (GLfloat) - 0.638667,
-       (GLfloat) 0.608078, (GLfloat) 0.332278, (GLfloat) - 0.638667,
-       (GLfloat) 0.608078, (GLfloat) 0.332278, (GLfloat) - 0.361333,
-       (GLfloat) 0.820528, (GLfloat) 0.154011, (GLfloat) - 0.361333,
-       (GLfloat) 1.065609, (GLfloat) 0.289676, (GLfloat) - 0.638205,
-       (GLfloat) 1.074101, (GLfloat) 0.505017, (GLfloat) - 0.638205,
-       (GLfloat) 1.074101, (GLfloat) 0.505017, (GLfloat) - 0.361795,
-       (GLfloat) 1.065609, (GLfloat) 0.289676, (GLfloat) - 0.361795,
-       (GLfloat) 1.235562, (GLfloat) 0.083949, (GLfloat) - 0.664066,
-       (GLfloat) 1.235562, (GLfloat) 0.083949, (GLfloat) - 0.335934,
-       (GLfloat) 1.331736, (GLfloat) 0.017726, (GLfloat) - 0.361333,
-       (GLfloat) 1.331736, (GLfloat) 0.017726, (GLfloat) - 0.638667,
-       (GLfloat) 1.431839, (GLfloat) 0.331232, (GLfloat) - 0.335934,
-       (GLfloat) 1.517309, (GLfloat) 0.223825, (GLfloat) - 0.361333,
-       (GLfloat) 1.431839, (GLfloat) 0.331232, (GLfloat) - 0.664066,
-       (GLfloat) 1.517309, (GLfloat) 0.223825, (GLfloat) - 0.638667,
-       (GLfloat) 1.243033, (GLfloat) - 0.034453, (GLfloat) - 0.500000,
-       (GLfloat) 1.136909, (GLfloat) 0.161755, (GLfloat) - 0.500000,
-       (GLfloat) 1.199875, (GLfloat) 0.038989, (GLfloat) - 0.500000,
-       (GLfloat) 1.400739, (GLfloat) 0.142695, (GLfloat) - 0.261940,
-       (GLfloat) 1.284897, (GLfloat) 0.013483, (GLfloat) - 0.325812,
-       (GLfloat) 1.438241, (GLfloat) 0.108423, (GLfloat) - 0.500000,
-       (GLfloat) 1.310688, (GLfloat) - 0.015661, (GLfloat) - 0.500000,
-       (GLfloat) 1.400739, (GLfloat) 0.142695, (GLfloat) - 0.738060,
-       (GLfloat) 1.284897, (GLfloat) 0.013483, (GLfloat) - 0.674188,
-       (GLfloat) 1.216443, (GLfloat) 0.317256, (GLfloat) - 0.300040,
-       (GLfloat) 1.333700, (GLfloat) 0.207591, (GLfloat) - 0.276273,
-       (GLfloat) 1.558444, (GLfloat) 0.319842, (GLfloat) - 0.500000,
-       (GLfloat) 1.515677, (GLfloat) 0.272720, (GLfloat) - 0.325812,
-       (GLfloat) 1.429500, (GLfloat) 0.116294, (GLfloat) - 0.322437,
-       (GLfloat) 1.295978, (GLfloat) 0.472757, (GLfloat) - 0.500000,
-       (GLfloat) 1.467526, (GLfloat) 0.376193, (GLfloat) - 0.500000,
-       (GLfloat) 1.515677, (GLfloat) 0.272720, (GLfloat) - 0.674188,
-       (GLfloat) 1.548313, (GLfloat) 0.248248, (GLfloat) - 0.500000,
-       (GLfloat) 1.216443, (GLfloat) 0.317256, (GLfloat) - 0.699960,
-       (GLfloat) 1.333700, (GLfloat) 0.207591, (GLfloat) - 0.723727,
-       (GLfloat) 1.429500, (GLfloat) 0.116294, (GLfloat) - 0.677562,
-       (GLfloat) 1.158118, (GLfloat) 0.203222, (GLfloat) - 0.646637,
-       (GLfloat) 0.998811, (GLfloat) 0.235426, (GLfloat) - 0.500000,
-       (GLfloat) 1.064065, (GLfloat) 0.250523, (GLfloat) - 0.500000,
-       (GLfloat) 1.158118, (GLfloat) 0.203222, (GLfloat) - 0.353363,
-       (GLfloat) 1.274769, (GLfloat) 0.431290, (GLfloat) - 0.646637,
-       (GLfloat) 0.920924, (GLfloat) 0.379919, (GLfloat) - 0.699960,
-       (GLfloat) 1.069855, (GLfloat) 0.397346, (GLfloat) - 0.688461,
-       (GLfloat) 0.920924, (GLfloat) 0.379919, (GLfloat) - 0.300040,
-       (GLfloat) 1.069855, (GLfloat) 0.397346, (GLfloat) - 0.311539,
-       (GLfloat) 1.274769, (GLfloat) 0.431290, (GLfloat) - 0.353363,
-       (GLfloat) 0.843038, (GLfloat) 0.524412, (GLfloat) - 0.500000,
-       (GLfloat) 1.075645, (GLfloat) 0.544169, (GLfloat) - 0.500000,
-       (GLfloat) 0.735693, (GLfloat) 0.265534, (GLfloat) - 0.738060,
-       (GLfloat) 0.801042, (GLfloat) 0.315496, (GLfloat) - 0.723727,
-       (GLfloat) 0.978041, (GLfloat) 0.273957, (GLfloat) - 0.646637,
-       (GLfloat) 0.863808, (GLfloat) 0.485881, (GLfloat) - 0.646637,
-       (GLfloat) 0.863808, (GLfloat) 0.485881, (GLfloat) - 0.353363,
-       (GLfloat) 0.555594, (GLfloat) 0.419060, (GLfloat) - 0.500000,
-       (GLfloat) 0.652318, (GLfloat) 0.464340, (GLfloat) - 0.500000,
-       (GLfloat) 0.978041, (GLfloat) 0.273957, (GLfloat) - 0.353363,
-       (GLfloat) 0.735693, (GLfloat) 0.265534, (GLfloat) - 0.261940,
-       (GLfloat) 0.801042, (GLfloat) 0.315496, (GLfloat) - 0.276273,
-       (GLfloat) 0.915792, (GLfloat) 0.112008, (GLfloat) - 0.500000,
-       (GLfloat) 0.949767, (GLfloat) 0.166652, (GLfloat) - 0.500000,
-       (GLfloat) 0.867858, (GLfloat) 0.153664, (GLfloat) - 0.674188,
-       (GLfloat) 0.702437, (GLfloat) 0.229003, (GLfloat) - 0.500000,
-       (GLfloat) 0.846018, (GLfloat) 0.123878, (GLfloat) - 0.500000,
-       (GLfloat) 0.867858, (GLfloat) 0.153664, (GLfloat) - 0.325812,
-       (GLfloat) 0.604310, (GLfloat) 0.378335, (GLfloat) - 0.674188,
-       (GLfloat) 0.709997, (GLfloat) 0.238013, (GLfloat) - 0.677562,
-       (GLfloat) 0.604310, (GLfloat) 0.378335, (GLfloat) - 0.325812,
-       (GLfloat) 0.573976, (GLfloat) 0.352148, (GLfloat) - 0.500000,
-       (GLfloat) 0.709997, (GLfloat) 0.238013, (GLfloat) - 0.322437,
-       (GLfloat) 1.231827, (GLfloat) 0.004686, (GLfloat) - 0.594296,
-       (GLfloat) 1.178115, (GLfloat) 0.109780, (GLfloat) - 0.584482,
-       (GLfloat) 1.208797, (GLfloat) 0.050229, (GLfloat) - 0.589491,
-       (GLfloat) 1.231827, (GLfloat) 0.004686, (GLfloat) - 0.405704,
-       (GLfloat) 1.221734, (GLfloat) - 0.007055, (GLfloat) - 0.500000,
-       (GLfloat) 1.279887, (GLfloat) - 0.026194, (GLfloat) - 0.587500,
-       (GLfloat) 1.253444, (GLfloat) - 0.022303, (GLfloat) - 0.594949,
-       (GLfloat) 1.312568, (GLfloat) 0.098620, (GLfloat) - 0.720025,
-       (GLfloat) 1.262105, (GLfloat) 0.039911, (GLfloat) - 0.672877,
-       (GLfloat) 1.312568, (GLfloat) 0.098620, (GLfloat) - 0.279975,
-       (GLfloat) 1.262105, (GLfloat) 0.039911, (GLfloat) - 0.327123,
-       (GLfloat) 1.279887, (GLfloat) - 0.026194, (GLfloat) - 0.412500,
-       (GLfloat) 1.253444, (GLfloat) - 0.022303, (GLfloat) - 0.405051,
-       (GLfloat) 1.178115, (GLfloat) 0.109780, (GLfloat) - 0.415518,
-       (GLfloat) 1.208797, (GLfloat) 0.050229, (GLfloat) - 0.410509,
-       (GLfloat) 1.373428, (GLfloat) 0.045002, (GLfloat) - 0.409500,
-       (GLfloat) 1.317700, (GLfloat) - 0.004566, (GLfloat) - 0.417500,
-       (GLfloat) 1.270418, (GLfloat) - 0.038526, (GLfloat) - 0.500000,
-       (GLfloat) 1.359179, (GLfloat) 0.061869, (GLfloat) - 0.294000,
-       (GLfloat) 1.309178, (GLfloat) 0.008154, (GLfloat) - 0.339125,
-       (GLfloat) 1.359179, (GLfloat) 0.061869, (GLfloat) - 0.706000,
-       (GLfloat) 1.309178, (GLfloat) 0.008154, (GLfloat) - 0.660875,
-       (GLfloat) 1.373428, (GLfloat) 0.045002, (GLfloat) - 0.590500,
-       (GLfloat) 1.317700, (GLfloat) - 0.004566, (GLfloat) - 0.582500,
-       (GLfloat) 1.236552, (GLfloat) 0.195985, (GLfloat) - 0.302876,
-       (GLfloat) 1.280170, (GLfloat) 0.140150, (GLfloat) - 0.291188,
-       (GLfloat) 1.433681, (GLfloat) 0.239521, (GLfloat) - 0.279975,
-       (GLfloat) 1.373124, (GLfloat) 0.169070, (GLfloat) - 0.264259,
-       (GLfloat) 1.337615, (GLfloat) 0.072243, (GLfloat) - 0.277994,
-       (GLfloat) 1.514422, (GLfloat) 0.333454, (GLfloat) - 0.405704,
-       (GLfloat) 1.484144, (GLfloat) 0.298229, (GLfloat) - 0.327123,
-       (GLfloat) 1.476277, (GLfloat) 0.191919, (GLfloat) - 0.294000,
-       (GLfloat) 1.463411, (GLfloat) 0.213552, (GLfloat) - 0.277994,
-       (GLfloat) 1.324207, (GLfloat) 0.325294, (GLfloat) - 0.302876,
-       (GLfloat) 1.387230, (GLfloat) 0.275032, (GLfloat) - 0.291188,
-       (GLfloat) 1.494540, (GLfloat) 0.179511, (GLfloat) - 0.409500,
-       (GLfloat) 1.483059, (GLfloat) 0.179084, (GLfloat) - 0.335375,
-       (GLfloat) 1.418631, (GLfloat) 0.126081, (GLfloat) - 0.278500,
-       (GLfloat) 1.555568, (GLfloat) 0.279982, (GLfloat) - 0.412500,
-       (GLfloat) 1.524471, (GLfloat) 0.247261, (GLfloat) - 0.339125,
-       (GLfloat) 1.372652, (GLfloat) 0.056465, (GLfloat) - 0.335375,
-       (GLfloat) 1.382643, (GLfloat) 0.411500, (GLfloat) - 0.415518,
-       (GLfloat) 1.458604, (GLfloat) 0.364953, (GLfloat) - 0.410509,
-       (GLfloat) 1.514422, (GLfloat) 0.333454, (GLfloat) - 0.594296,
-       (GLfloat) 1.524515, (GLfloat) 0.345196, (GLfloat) - 0.500000,
-       (GLfloat) 1.547582, (GLfloat) 0.308099, (GLfloat) - 0.405051,
-       (GLfloat) 1.433681, (GLfloat) 0.239521, (GLfloat) - 0.720025,
-       (GLfloat) 1.484144, (GLfloat) 0.298229, (GLfloat) - 0.672877,
-       (GLfloat) 1.555568, (GLfloat) 0.279982, (GLfloat) - 0.587500,
-       (GLfloat) 1.547582, (GLfloat) 0.308099, (GLfloat) - 0.594949,
-       (GLfloat) 1.382643, (GLfloat) 0.411500, (GLfloat) - 0.584482,
-       (GLfloat) 1.458604, (GLfloat) 0.364953, (GLfloat) - 0.589491,
-       (GLfloat) 1.494540, (GLfloat) 0.179511, (GLfloat) - 0.590500,
-       (GLfloat) 1.538011, (GLfloat) 0.240115, (GLfloat) - 0.582500,
-       (GLfloat) 1.566843, (GLfloat) 0.290687, (GLfloat) - 0.500000,
-       (GLfloat) 1.476277, (GLfloat) 0.191919, (GLfloat) - 0.706000,
-       (GLfloat) 1.524471, (GLfloat) 0.247261, (GLfloat) - 0.660875,
-       (GLfloat) 1.538011, (GLfloat) 0.240115, (GLfloat) - 0.417500,
-       (GLfloat) 1.324207, (GLfloat) 0.325294, (GLfloat) - 0.697124,
-       (GLfloat) 1.387230, (GLfloat) 0.275032, (GLfloat) - 0.708812,
-       (GLfloat) 1.373124, (GLfloat) 0.169070, (GLfloat) - 0.735741,
-       (GLfloat) 1.463411, (GLfloat) 0.213552, (GLfloat) - 0.722006,
-       (GLfloat) 1.337615, (GLfloat) 0.072243, (GLfloat) - 0.722006,
-       (GLfloat) 1.236552, (GLfloat) 0.195985, (GLfloat) - 0.697124,
-       (GLfloat) 1.280170, (GLfloat) 0.140150, (GLfloat) - 0.708812,
-       (GLfloat) 1.372652, (GLfloat) 0.056465, (GLfloat) - 0.664625,
-       (GLfloat) 1.418631, (GLfloat) 0.126081, (GLfloat) - 0.721500,
-       (GLfloat) 1.483059, (GLfloat) 0.179084, (GLfloat) - 0.664625,
-       (GLfloat) 1.436048, (GLfloat) 0.110398, (GLfloat) - 0.402250,
-       (GLfloat) 1.370641, (GLfloat) 0.037756, (GLfloat) - 0.500000,
-       (GLfloat) 1.501456, (GLfloat) 0.183040, (GLfloat) - 0.500000,
-       (GLfloat) 1.436048, (GLfloat) 0.110398, (GLfloat) - 0.597750,
-       (GLfloat) 1.200029, (GLfloat) 0.142107, (GLfloat) - 0.654883,
-       (GLfloat) 1.103513, (GLfloat) 0.226037, (GLfloat) - 0.576713,
-       (GLfloat) 1.142211, (GLfloat) 0.172121, (GLfloat) - 0.579984,
-       (GLfloat) 1.170811, (GLfloat) 0.099004, (GLfloat) - 0.500000,
-       (GLfloat) 1.027452, (GLfloat) 0.263727, (GLfloat) - 0.576713,
-       (GLfloat) 1.064451, (GLfloat) 0.260311, (GLfloat) - 0.575384,
-       (GLfloat) 1.103513, (GLfloat) 0.226037, (GLfloat) - 0.423287,
-       (GLfloat) 1.100538, (GLfloat) 0.216006, (GLfloat) - 0.500000,
-       (GLfloat) 1.127320, (GLfloat) 0.306289, (GLfloat) - 0.678998,
-       (GLfloat) 1.112441, (GLfloat) 0.256132, (GLfloat) - 0.640641,
-       (GLfloat) 1.127320, (GLfloat) 0.306289, (GLfloat) - 0.321002,
-       (GLfloat) 1.112441, (GLfloat) 0.256132, (GLfloat) - 0.359359,
-       (GLfloat) 1.142211, (GLfloat) 0.172121, (GLfloat) - 0.420016,
-       (GLfloat) 1.027452, (GLfloat) 0.263727, (GLfloat) - 0.423287,
-       (GLfloat) 1.064451, (GLfloat) 0.260311, (GLfloat) - 0.424615,
-       (GLfloat) 1.200029, (GLfloat) 0.142107, (GLfloat) - 0.345117,
-       (GLfloat) 1.360730, (GLfloat) 0.379173, (GLfloat) - 0.654883,
-       (GLfloat) 1.163029, (GLfloat) 0.426667, (GLfloat) - 0.678998,
-       (GLfloat) 1.248257, (GLfloat) 0.379456, (GLfloat) - 0.686629,
-       (GLfloat) 1.280379, (GLfloat) 0.260640, (GLfloat) - 0.711204,
-       (GLfloat) 0.979330, (GLfloat) 0.456830, (GLfloat) - 0.678998,
-       (GLfloat) 1.072171, (GLfloat) 0.456076, (GLfloat) - 0.675897,
-       (GLfloat) 1.145175, (GLfloat) 0.366478, (GLfloat) - 0.691783,
-       (GLfloat) 1.186836, (GLfloat) 0.506919, (GLfloat) - 0.576713,
-       (GLfloat) 1.177908, (GLfloat) 0.476825, (GLfloat) - 0.640641,
-       (GLfloat) 1.184630, (GLfloat) 0.255055, (GLfloat) - 0.686629,
-       (GLfloat) 1.008203, (GLfloat) 0.340968, (GLfloat) - 0.678998,
-       (GLfloat) 1.067539, (GLfloat) 0.338617, (GLfloat) - 0.675897,
-       (GLfloat) 1.280379, (GLfloat) 0.260640, (GLfloat) - 0.288796,
-       (GLfloat) 1.163029, (GLfloat) 0.426667, (GLfloat) - 0.321002,
-       (GLfloat) 1.248257, (GLfloat) 0.379456, (GLfloat) - 0.313371,
-       (GLfloat) 1.360730, (GLfloat) 0.379173, (GLfloat) - 0.345117,
-       (GLfloat) 1.184630, (GLfloat) 0.255055, (GLfloat) - 0.313371,
-       (GLfloat) 1.008203, (GLfloat) 0.340968, (GLfloat) - 0.321002,
-       (GLfloat) 1.067539, (GLfloat) 0.338617, (GLfloat) - 0.324103,
-       (GLfloat) 1.145175, (GLfloat) 0.366478, (GLfloat) - 0.308217,
-       (GLfloat) 1.186836, (GLfloat) 0.506919, (GLfloat) - 0.423287,
-       (GLfloat) 1.177908, (GLfloat) 0.476825, (GLfloat) - 0.359359,
-       (GLfloat) 0.979330, (GLfloat) 0.456830, (GLfloat) - 0.321002,
-       (GLfloat) 1.072171, (GLfloat) 0.456076, (GLfloat) - 0.324103,
-       (GLfloat) 1.389948, (GLfloat) 0.422275, (GLfloat) - 0.500000,
-       (GLfloat) 1.290676, (GLfloat) 0.462390, (GLfloat) - 0.579984,
-       (GLfloat) 1.290676, (GLfloat) 0.462390, (GLfloat) - 0.420016,
-       (GLfloat) 0.960081, (GLfloat) 0.534071, (GLfloat) - 0.423287,
-       (GLfloat) 1.075259, (GLfloat) 0.534381, (GLfloat) - 0.424615,
-       (GLfloat) 1.189812, (GLfloat) 0.516951, (GLfloat) - 0.500000,
-       (GLfloat) 0.960081, (GLfloat) 0.534071, (GLfloat) - 0.576713,
-       (GLfloat) 1.075259, (GLfloat) 0.534381, (GLfloat) - 0.575384,
-       (GLfloat) 0.808756, (GLfloat) 0.407522, (GLfloat) - 0.697124,
-       (GLfloat) 0.693423, (GLfloat) 0.349037, (GLfloat) - 0.720025,
-       (GLfloat) 0.741552, (GLfloat) 0.375033, (GLfloat) - 0.708812,
-       (GLfloat) 0.901933, (GLfloat) 0.290859, (GLfloat) - 0.697124,
-       (GLfloat) 0.855345, (GLfloat) 0.349190, (GLfloat) - 0.711204,
-       (GLfloat) 0.889770, (GLfloat) 0.437716, (GLfloat) - 0.686629,
-       (GLfloat) 0.746638, (GLfloat) 0.485298, (GLfloat) - 0.584482,
-       (GLfloat) 0.769932, (GLfloat) 0.456132, (GLfloat) - 0.654883,
-       (GLfloat) 0.964051, (GLfloat) 0.213083, (GLfloat) - 0.584482,
-       (GLfloat) 0.940757, (GLfloat) 0.242249, (GLfloat) - 0.654883,
-       (GLfloat) 0.952079, (GLfloat) 0.322122, (GLfloat) - 0.686629,
-       (GLfloat) 0.830643, (GLfloat) 0.226200, (GLfloat) - 0.720025,
-       (GLfloat) 0.860532, (GLfloat) 0.255958, (GLfloat) - 0.708812,
-       (GLfloat) 0.993766, (GLfloat) 0.398899, (GLfloat) - 0.691783,
-       (GLfloat) 1.020234, (GLfloat) 0.292692, (GLfloat) - 0.640641,
-       (GLfloat) 0.967299, (GLfloat) 0.505105, (GLfloat) - 0.640641,
-       (GLfloat) 0.848231, (GLfloat) 0.514780, (GLfloat) - 0.579984,
-       (GLfloat) 0.746638, (GLfloat) 0.485298, (GLfloat) - 0.415518,
-       (GLfloat) 0.738873, (GLfloat) 0.495020, (GLfloat) - 0.500000,
-       (GLfloat) 0.601944, (GLfloat) 0.430927, (GLfloat) - 0.594296,
-       (GLfloat) 0.662233, (GLfloat) 0.454417, (GLfloat) - 0.589491,
-       (GLfloat) 0.957675, (GLfloat) 0.543726, (GLfloat) - 0.500000,
-       (GLfloat) 0.967299, (GLfloat) 0.505105, (GLfloat) - 0.359359,
-       (GLfloat) 0.848231, (GLfloat) 0.514780, (GLfloat) - 0.420016,
-       (GLfloat) 0.601944, (GLfloat) 0.430927, (GLfloat) - 0.405704,
-       (GLfloat) 0.662233, (GLfloat) 0.454417, (GLfloat) - 0.410509,
-       (GLfloat) 0.808756, (GLfloat) 0.407522, (GLfloat) - 0.302876,
-       (GLfloat) 0.769932, (GLfloat) 0.456132, (GLfloat) - 0.345117,
-       (GLfloat) 0.889770, (GLfloat) 0.437716, (GLfloat) - 0.313371,
-       (GLfloat) 0.901933, (GLfloat) 0.290859, (GLfloat) - 0.302876,
-       (GLfloat) 0.855345, (GLfloat) 0.349190, (GLfloat) - 0.288796,
-       (GLfloat) 0.693423, (GLfloat) 0.349037, (GLfloat) - 0.279975,
-       (GLfloat) 0.741552, (GLfloat) 0.375033, (GLfloat) - 0.291188,
-       (GLfloat) 0.993766, (GLfloat) 0.398899, (GLfloat) - 0.308217,
-       (GLfloat) 1.020234, (GLfloat) 0.292692, (GLfloat) - 0.359359,
-       (GLfloat) 0.952079, (GLfloat) 0.322122, (GLfloat) - 0.313371,
-       (GLfloat) 0.830643, (GLfloat) 0.226200, (GLfloat) - 0.279975,
-       (GLfloat) 0.860532, (GLfloat) 0.255958, (GLfloat) - 0.291188,
-       (GLfloat) 0.964051, (GLfloat) 0.213083, (GLfloat) - 0.415518,
-       (GLfloat) 0.940757, (GLfloat) 0.242249, (GLfloat) - 0.345117,
-       (GLfloat) 0.993618, (GLfloat) 0.245059, (GLfloat) - 0.420016,
-       (GLfloat) 0.971816, (GLfloat) 0.203361, (GLfloat) - 0.500000,
-       (GLfloat) 0.922122, (GLfloat) 0.144310, (GLfloat) - 0.405704,
-       (GLfloat) 0.939852, (GLfloat) 0.176575, (GLfloat) - 0.410509,
-       (GLfloat) 1.029858, (GLfloat) 0.254072, (GLfloat) - 0.500000,
-       (GLfloat) 0.993618, (GLfloat) 0.245059, (GLfloat) - 0.579984,
-       (GLfloat) 0.922122, (GLfloat) 0.144310, (GLfloat) - 0.594296,
-       (GLfloat) 0.939852, (GLfloat) 0.176575, (GLfloat) - 0.589491,
-       (GLfloat) 0.933557, (GLfloat) 0.134073, (GLfloat) - 0.500000,
-       (GLfloat) 0.877985, (GLfloat) 0.117734, (GLfloat) - 0.412500,
-       (GLfloat) 0.903840, (GLfloat) 0.122594, (GLfloat) - 0.405051,
-       (GLfloat) 0.887817, (GLfloat) 0.175019, (GLfloat) - 0.327123,
-       (GLfloat) 0.887817, (GLfloat) 0.175019, (GLfloat) - 0.672877,
-       (GLfloat) 0.877985, (GLfloat) 0.117734, (GLfloat) - 0.587500,
-       (GLfloat) 0.903840, (GLfloat) 0.122594, (GLfloat) - 0.594949,
-       (GLfloat) 0.775446, (GLfloat) 0.175219, (GLfloat) - 0.590500,
-       (GLfloat) 0.837530, (GLfloat) 0.133890, (GLfloat) - 0.582500,
-       (GLfloat) 0.889078, (GLfloat) 0.106840, (GLfloat) - 0.500000,
-       (GLfloat) 0.787209, (GLfloat) 0.193905, (GLfloat) - 0.706000,
-       (GLfloat) 0.844199, (GLfloat) 0.147671, (GLfloat) - 0.660875,
-       (GLfloat) 0.787209, (GLfloat) 0.193905, (GLfloat) - 0.294000,
-       (GLfloat) 0.844199, (GLfloat) 0.147671, (GLfloat) - 0.339125,
-       (GLfloat) 0.775446, (GLfloat) 0.175219, (GLfloat) - 0.409500,
-       (GLfloat) 0.837530, (GLfloat) 0.133890, (GLfloat) - 0.417500,
-       (GLfloat) 0.762033, (GLfloat) 0.287619, (GLfloat) - 0.735741,
-       (GLfloat) 0.807717, (GLfloat) 0.204533, (GLfloat) - 0.722006,
-       (GLfloat) 0.636249, (GLfloat) 0.400218, (GLfloat) - 0.672877,
-       (GLfloat) 0.653151, (GLfloat) 0.306393, (GLfloat) - 0.706000,
-       (GLfloat) 0.664060, (GLfloat) 0.327000, (GLfloat) - 0.722006,
-       (GLfloat) 0.636792, (GLfloat) 0.291564, (GLfloat) - 0.590500,
-       (GLfloat) 0.648221, (GLfloat) 0.292739, (GLfloat) - 0.664625,
-       (GLfloat) 0.719399, (GLfloat) 0.249218, (GLfloat) - 0.721500,
-       (GLfloat) 0.562375, (GLfloat) 0.382563, (GLfloat) - 0.587500,
-       (GLfloat) 0.597724, (GLfloat) 0.354488, (GLfloat) - 0.660875,
-       (GLfloat) 0.774619, (GLfloat) 0.186679, (GLfloat) - 0.664625,
-       (GLfloat) 0.590509, (GLfloat) 0.441164, (GLfloat) - 0.500000,
-       (GLfloat) 0.567937, (GLfloat) 0.408940, (GLfloat) - 0.594949,
-       (GLfloat) 0.636249, (GLfloat) 0.400218, (GLfloat) - 0.327123,
-       (GLfloat) 0.562375, (GLfloat) 0.382563, (GLfloat) - 0.412500,
-       (GLfloat) 0.567937, (GLfloat) 0.408940, (GLfloat) - 0.405051,
-       (GLfloat) 0.636792, (GLfloat) 0.291564, (GLfloat) - 0.409500,
-       (GLfloat) 0.585310, (GLfloat) 0.345528, (GLfloat) - 0.417500,
-       (GLfloat) 0.549720, (GLfloat) 0.391595, (GLfloat) - 0.500000,
-       (GLfloat) 0.653151, (GLfloat) 0.306393, (GLfloat) - 0.294000,
-       (GLfloat) 0.597724, (GLfloat) 0.354488, (GLfloat) - 0.339125,
-       (GLfloat) 0.585310, (GLfloat) 0.345528, (GLfloat) - 0.582500,
-       (GLfloat) 0.762033, (GLfloat) 0.287619, (GLfloat) - 0.264259,
-       (GLfloat) 0.664060, (GLfloat) 0.327000, (GLfloat) - 0.277994,
-       (GLfloat) 0.807717, (GLfloat) 0.204533, (GLfloat) - 0.277994,
-       (GLfloat) 0.774619, (GLfloat) 0.186679, (GLfloat) - 0.335375,
-       (GLfloat) 0.719399, (GLfloat) 0.249218, (GLfloat) - 0.278500,
-       (GLfloat) 0.648221, (GLfloat) 0.292739, (GLfloat) - 0.335375,
-       (GLfloat) 0.704334, (GLfloat) 0.231264, (GLfloat) - 0.597750,
-       (GLfloat) 0.779215, (GLfloat) 0.168431, (GLfloat) - 0.500000,
-       (GLfloat) 0.629453, (GLfloat) 0.294096, (GLfloat) - 0.500000,
-       (GLfloat) 0.704334, (GLfloat) 0.231264, (GLfloat) - 0.402250,
-};
-
-static GLfloat s1_4_normals[] =
-{
-       (GLfloat) - 0.797489, (GLfloat) - 0.388285, (GLfloat) - 0.461786,
-       (GLfloat) - 0.806184, (GLfloat) - 0.357959, (GLfloat) - 0.471096,
-       (GLfloat) - 0.893364, (GLfloat) - 0.424111, (GLfloat) - 0.148429,
-       (GLfloat) - 0.889195, (GLfloat) - 0.434532, (GLfloat) - 0.143226,
-       (GLfloat) - 0.778943, (GLfloat) - 0.605569, (GLfloat) - 0.162894,
-       (GLfloat) - 0.772426, (GLfloat) - 0.614820, (GLfloat) - 0.159231,
-       (GLfloat) - 0.666558, (GLfloat) - 0.549876, (GLfloat) - 0.503327,
-       (GLfloat) - 0.677911, (GLfloat) - 0.530666, (GLfloat) - 0.508753,
-       (GLfloat) - 0.797489, (GLfloat) - 0.388284, (GLfloat) 0.461786,
-       (GLfloat) - 0.806184, (GLfloat) - 0.357959, (GLfloat) 0.471097,
-       (GLfloat) - 0.677911, (GLfloat) - 0.530666, (GLfloat) 0.508753,
-       (GLfloat) - 0.666558, (GLfloat) - 0.549876, (GLfloat) 0.503327,
-       (GLfloat) - 0.778943, (GLfloat) - 0.605569, (GLfloat) 0.162893,
-       (GLfloat) - 0.772426, (GLfloat) - 0.614820, (GLfloat) 0.159231,
-       (GLfloat) - 0.889195, (GLfloat) - 0.434532, (GLfloat) 0.143226,
-       (GLfloat) - 0.893364, (GLfloat) - 0.424111, (GLfloat) 0.148429,
-       (GLfloat) 0.506235, (GLfloat) - 0.837464, (GLfloat) 0.205866,
-       (GLfloat) 0.527758, (GLfloat) - 0.830515, (GLfloat) 0.178091,
-       (GLfloat) 0.492576, (GLfloat) - 0.867532, (GLfloat) 0.068965,
-       (GLfloat) 0.502441, (GLfloat) - 0.861510, (GLfloat) 0.073162,
-       (GLfloat) - 0.106119, (GLfloat) - 0.984780, (GLfloat) 0.137644,
-       (GLfloat) - 0.145376, (GLfloat) - 0.977399, (GLfloat) 0.153482,
-       (GLfloat) 0.021131, (GLfloat) - 0.914284, (GLfloat) 0.404523,
-       (GLfloat) - 0.012401, (GLfloat) - 0.903702, (GLfloat) 0.427982,
-       (GLfloat) 0.527757, (GLfloat) - 0.830515, (GLfloat) - 0.178092,
-       (GLfloat) 0.506235, (GLfloat) - 0.837464, (GLfloat) - 0.205866,
-       (GLfloat) 0.021132, (GLfloat) - 0.914284, (GLfloat) - 0.404523,
-       (GLfloat) - 0.012401, (GLfloat) - 0.903702, (GLfloat) - 0.427983,
-       (GLfloat) - 0.145376, (GLfloat) - 0.977399, (GLfloat) - 0.153482,
-       (GLfloat) - 0.106119, (GLfloat) - 0.984780, (GLfloat) - 0.137645,
-       (GLfloat) 0.502441, (GLfloat) - 0.861510, (GLfloat) - 0.073162,
-       (GLfloat) 0.492576, (GLfloat) - 0.867532, (GLfloat) - 0.068965,
-       (GLfloat) - 0.548436, (GLfloat) - 0.209256, (GLfloat) 0.809586,
-       (GLfloat) - 0.557133, (GLfloat) - 0.173326, (GLfloat) 0.812134,
-       (GLfloat) - 0.281454, (GLfloat) 0.011196, (GLfloat) 0.959509,
-       (GLfloat) - 0.287811, (GLfloat) 0.033884, (GLfloat) 0.957087,
-       (GLfloat) - 0.161493, (GLfloat) - 0.079455, (GLfloat) 0.983670,
-       (GLfloat) - 0.160469, (GLfloat) - 0.081504, (GLfloat) 0.983670,
-       (GLfloat) - 0.417652, (GLfloat) - 0.317957, (GLfloat) 0.851158,
-       (GLfloat) - 0.412553, (GLfloat) - 0.327906, (GLfloat) 0.849869,
-       (GLfloat) 0.183686, (GLfloat) 0.514678, (GLfloat) 0.837476,
-       (GLfloat) 0.191133, (GLfloat) 0.514047, (GLfloat) 0.836196,
-       (GLfloat) 0.305019, (GLfloat) 0.420960, (GLfloat) 0.854258,
-       (GLfloat) 0.309443, (GLfloat) 0.419398, (GLfloat) 0.853434,
-       (GLfloat) 0.070662, (GLfloat) 0.160554, (GLfloat) 0.984494,
-       (GLfloat) 0.072116, (GLfloat) 0.157712, (GLfloat) 0.984848,
-       (GLfloat) - 0.043552, (GLfloat) 0.248570, (GLfloat) 0.967634,
-       (GLfloat) - 0.045553, (GLfloat) 0.254642, (GLfloat) 0.965962,
-       (GLfloat) 0.833765, (GLfloat) - 0.473703, (GLfloat) 0.283620,
-       (GLfloat) 0.823611, (GLfloat) - 0.501937, (GLfloat) 0.264054,
-       (GLfloat) 0.753164, (GLfloat) - 0.577527, (GLfloat) 0.314971,
-       (GLfloat) 0.750976, (GLfloat) - 0.585768, (GLfloat) 0.304813,
-       (GLfloat) 0.524744, (GLfloat) - 0.282162, (GLfloat) 0.803137,
-       (GLfloat) 0.515479, (GLfloat) - 0.259037, (GLfloat) 0.816812,
-       (GLfloat) 0.731077, (GLfloat) - 0.100383, (GLfloat) 0.674870,
-       (GLfloat) 0.725771, (GLfloat) - 0.074391, (GLfloat) 0.683903,
-       (GLfloat) 0.576854, (GLfloat) - 0.777370, (GLfloat) 0.250869,
-       (GLfloat) 0.569572, (GLfloat) - 0.770539, (GLfloat) 0.286108,
-       (GLfloat) 0.204307, (GLfloat) - 0.721596, (GLfloat) 0.661481,
-       (GLfloat) 0.158422, (GLfloat) - 0.717392, (GLfloat) 0.678418,
-       (GLfloat) 0.308874, (GLfloat) - 0.483661, (GLfloat) 0.818944,
-       (GLfloat) 0.351163, (GLfloat) - 0.495655, (GLfloat) 0.794362,
-       (GLfloat) 0.653090, (GLfloat) - 0.688670, (GLfloat) 0.314971,
-       (GLfloat) 0.661058, (GLfloat) - 0.685633, (GLfloat) 0.304812,
-       (GLfloat) 0.403257, (GLfloat) 0.770775, (GLfloat) 0.493244,
-       (GLfloat) 0.393266, (GLfloat) 0.772882, (GLfloat) 0.497991,
-       (GLfloat) 0.471763, (GLfloat) 0.867363, (GLfloat) 0.158497,
-       (GLfloat) 0.475196, (GLfloat) 0.865916, (GLfloat) 0.156134,
-       (GLfloat) 0.590364, (GLfloat) 0.790041, (GLfloat) 0.165246,
-       (GLfloat) 0.597402, (GLfloat) 0.785461, (GLfloat) 0.161746,
-       (GLfloat) 0.528711, (GLfloat) 0.679696, (GLfloat) 0.508407,
-       (GLfloat) 0.514728, (GLfloat) 0.686399, (GLfloat) 0.513723,
-       (GLfloat) 0.403257, (GLfloat) 0.770775, (GLfloat) - 0.493244,
-       (GLfloat) 0.393266, (GLfloat) 0.772882, (GLfloat) - 0.497991,
-       (GLfloat) 0.514728, (GLfloat) 0.686399, (GLfloat) - 0.513723,
-       (GLfloat) 0.528711, (GLfloat) 0.679696, (GLfloat) - 0.508407,
-       (GLfloat) 0.590364, (GLfloat) 0.790041, (GLfloat) - 0.165246,
-       (GLfloat) 0.597402, (GLfloat) 0.785461, (GLfloat) - 0.161746,
-       (GLfloat) 0.475196, (GLfloat) 0.865916, (GLfloat) - 0.156134,
-       (GLfloat) 0.471763, (GLfloat) 0.867363, (GLfloat) - 0.158497,
-       (GLfloat) 0.885792, (GLfloat) - 0.415923, (GLfloat) - 0.205866,
-       (GLfloat) 0.881131, (GLfloat) - 0.438054, (GLfloat) - 0.178091,
-       (GLfloat) 0.914268, (GLfloat) - 0.399196, (GLfloat) - 0.068966,
-       (GLfloat) 0.909310, (GLfloat) - 0.409637, (GLfloat) - 0.073163,
-       (GLfloat) 0.961663, (GLfloat) 0.236259, (GLfloat) - 0.139234,
-       (GLfloat) 0.949193, (GLfloat) 0.273441, (GLfloat) - 0.155762,
-       (GLfloat) 0.901801, (GLfloat) 0.090517, (GLfloat) - 0.422565,
-       (GLfloat) 0.894672, (GLfloat) 0.141897, (GLfloat) - 0.423589,
-       (GLfloat) 0.881131, (GLfloat) - 0.438054, (GLfloat) 0.178091,
-       (GLfloat) 0.885792, (GLfloat) - 0.415923, (GLfloat) 0.205866,
-       (GLfloat) 0.894672, (GLfloat) 0.141897, (GLfloat) 0.423589,
-       (GLfloat) 0.901801, (GLfloat) 0.090518, (GLfloat) 0.422565,
-       (GLfloat) 0.949193, (GLfloat) 0.273441, (GLfloat) 0.155762,
-       (GLfloat) 0.961663, (GLfloat) 0.236259, (GLfloat) 0.139234,
-       (GLfloat) 0.909310, (GLfloat) - 0.409637, (GLfloat) 0.073163,
-       (GLfloat) 0.914268, (GLfloat) - 0.399196, (GLfloat) 0.068966,
-       (GLfloat) 0.191133, (GLfloat) 0.514047, (GLfloat) - 0.836196,
-       (GLfloat) 0.183686, (GLfloat) 0.514678, (GLfloat) - 0.837476,
-       (GLfloat) - 0.045553, (GLfloat) 0.254642, (GLfloat) - 0.965962,
-       (GLfloat) - 0.043552, (GLfloat) 0.248570, (GLfloat) - 0.967634,
-       (GLfloat) 0.070662, (GLfloat) 0.160554, (GLfloat) - 0.984494,
-       (GLfloat) 0.072116, (GLfloat) 0.157712, (GLfloat) - 0.984848,
-       (GLfloat) 0.305019, (GLfloat) 0.420960, (GLfloat) - 0.854258,
-       (GLfloat) 0.309443, (GLfloat) 0.419398, (GLfloat) - 0.853434,
-       (GLfloat) - 0.557133, (GLfloat) - 0.173326, (GLfloat) - 0.812134,
-       (GLfloat) - 0.548436, (GLfloat) - 0.209256, (GLfloat) - 0.809586,
-       (GLfloat) - 0.417652, (GLfloat) - 0.317957, (GLfloat) - 0.851158,
-       (GLfloat) - 0.412553, (GLfloat) - 0.327906, (GLfloat) - 0.849869,
-       (GLfloat) - 0.160469, (GLfloat) - 0.081504, (GLfloat) - 0.983670,
-       (GLfloat) - 0.161493, (GLfloat) - 0.079455, (GLfloat) - 0.983670,
-       (GLfloat) - 0.281454, (GLfloat) 0.011196, (GLfloat) - 0.959509,
-       (GLfloat) - 0.287811, (GLfloat) 0.033884, (GLfloat) - 0.957088,
-       (GLfloat) 0.576854, (GLfloat) - 0.777370, (GLfloat) - 0.250869,
-       (GLfloat) 0.569572, (GLfloat) - 0.770539, (GLfloat) - 0.286108,
-       (GLfloat) 0.653090, (GLfloat) - 0.688670, (GLfloat) - 0.314971,
-       (GLfloat) 0.661058, (GLfloat) - 0.685633, (GLfloat) - 0.304812,
-       (GLfloat) 0.351164, (GLfloat) - 0.495655, (GLfloat) - 0.794362,
-       (GLfloat) 0.308874, (GLfloat) - 0.483661, (GLfloat) - 0.818944,
-       (GLfloat) 0.204308, (GLfloat) - 0.721597, (GLfloat) - 0.661480,
-       (GLfloat) 0.158422, (GLfloat) - 0.717393, (GLfloat) - 0.678418,
-       (GLfloat) 0.823611, (GLfloat) - 0.501936, (GLfloat) - 0.264055,
-       (GLfloat) 0.833765, (GLfloat) - 0.473703, (GLfloat) - 0.283621,
-       (GLfloat) 0.731077, (GLfloat) - 0.100384, (GLfloat) - 0.674869,
-       (GLfloat) 0.725771, (GLfloat) - 0.074392, (GLfloat) - 0.683902,
-       (GLfloat) 0.515479, (GLfloat) - 0.259037, (GLfloat) - 0.816812,
-       (GLfloat) 0.524744, (GLfloat) - 0.282163, (GLfloat) - 0.803136,
-       (GLfloat) 0.753164, (GLfloat) - 0.577527, (GLfloat) - 0.314971,
-       (GLfloat) 0.750976, (GLfloat) - 0.585768, (GLfloat) - 0.304813,
-       (GLfloat) 0.639601, (GLfloat) - 0.758638, (GLfloat) 0.124011,
-       (GLfloat) 0.647491, (GLfloat) - 0.749875, (GLfloat) 0.135802,
-       (GLfloat) 0.708617, (GLfloat) - 0.697026, (GLfloat) 0.109621,
-       (GLfloat) 0.711116, (GLfloat) - 0.693654, (GLfloat) 0.114709,
-       (GLfloat) 0.722217, (GLfloat) - 0.690875, (GLfloat) 0.033080,
-       (GLfloat) 0.720265, (GLfloat) - 0.693043, (GLfloat) 0.030163,
-       (GLfloat) 0.664597, (GLfloat) - 0.745915, (GLfloat) 0.043834,
-       (GLfloat) 0.660896, (GLfloat) - 0.749429, (GLfloat) 0.039656,
-       (GLfloat) 0.813450, (GLfloat) - 0.565559, (GLfloat) 0.135803,
-       (GLfloat) 0.821340, (GLfloat) - 0.556796, (GLfloat) 0.124011,
-       (GLfloat) 0.811298, (GLfloat) - 0.582987, (GLfloat) 0.043835,
-       (GLfloat) 0.814407, (GLfloat) - 0.578938, (GLfloat) 0.039656,
-       (GLfloat) 0.764534, (GLfloat) - 0.643877, (GLfloat) 0.030163,
-       (GLfloat) 0.762583, (GLfloat) - 0.646044, (GLfloat) 0.033079,
-       (GLfloat) 0.767278, (GLfloat) - 0.631876, (GLfloat) 0.109621,
-       (GLfloat) 0.764186, (GLfloat) - 0.634714, (GLfloat) 0.114709,
-       (GLfloat) 0.821340, (GLfloat) - 0.556796, (GLfloat) - 0.124011,
-       (GLfloat) 0.813450, (GLfloat) - 0.565559, (GLfloat) - 0.135803,
-       (GLfloat) 0.767278, (GLfloat) - 0.631876, (GLfloat) - 0.109621,
-       (GLfloat) 0.764186, (GLfloat) - 0.634714, (GLfloat) - 0.114709,
-       (GLfloat) 0.762583, (GLfloat) - 0.646044, (GLfloat) - 0.033079,
-       (GLfloat) 0.764534, (GLfloat) - 0.643877, (GLfloat) - 0.030163,
-       (GLfloat) 0.811298, (GLfloat) - 0.582987, (GLfloat) - 0.043835,
-       (GLfloat) 0.814407, (GLfloat) - 0.578938, (GLfloat) - 0.039656,
-       (GLfloat) 0.647491, (GLfloat) - 0.749875, (GLfloat) - 0.135802,
-       (GLfloat) 0.639601, (GLfloat) - 0.758638, (GLfloat) - 0.124011,
-       (GLfloat) 0.664597, (GLfloat) - 0.745915, (GLfloat) - 0.043834,
-       (GLfloat) 0.660896, (GLfloat) - 0.749429, (GLfloat) - 0.039656,
-       (GLfloat) 0.720265, (GLfloat) - 0.693043, (GLfloat) - 0.030163,
-       (GLfloat) 0.722217, (GLfloat) - 0.690875, (GLfloat) - 0.033080,
-       (GLfloat) 0.708617, (GLfloat) - 0.697026, (GLfloat) - 0.109621,
-       (GLfloat) 0.711116, (GLfloat) - 0.693654, (GLfloat) - 0.114709,
-       (GLfloat) - 0.795834, (GLfloat) - 0.416890, (GLfloat) - 0.439148,
-       (GLfloat) - 0.804928, (GLfloat) - 0.376107, (GLfloat) - 0.458949,
-       (GLfloat) - 0.777496, (GLfloat) - 0.478056, (GLfloat) - 0.408610,
-       (GLfloat) - 0.791178, (GLfloat) - 0.423850, (GLfloat) - 0.440894,
-       (GLfloat) - 0.871703, (GLfloat) - 0.470947, (GLfloat) - 0.135440,
-       (GLfloat) - 0.863971, (GLfloat) - 0.488878, (GLfloat) - 0.120637,
-       (GLfloat) - 0.890766, (GLfloat) - 0.431382, (GLfloat) - 0.142987,
-       (GLfloat) - 0.885536, (GLfloat) - 0.445027, (GLfloat) - 0.133330,
-       (GLfloat) - 0.626883, (GLfloat) - 0.701314, (GLfloat) - 0.339376,
-       (GLfloat) - 0.543140, (GLfloat) - 0.727904, (GLfloat) - 0.418515,
-       (GLfloat) - 0.684101, (GLfloat) - 0.722860, (GLfloat) - 0.097361,
-       (GLfloat) - 0.656897, (GLfloat) - 0.743919, (GLfloat) - 0.122761,
-       (GLfloat) - 0.823965, (GLfloat) - 0.552405, (GLfloat) - 0.126218,
-       (GLfloat) - 0.810821, (GLfloat) - 0.575485, (GLfloat) - 0.106707,
-       (GLfloat) - 0.722436, (GLfloat) - 0.581233, (GLfloat) - 0.374506,
-       (GLfloat) - 0.749781, (GLfloat) - 0.512777, (GLfloat) - 0.418197,
-       (GLfloat) - 0.543140, (GLfloat) - 0.727904, (GLfloat) 0.418515,
-       (GLfloat) - 0.626883, (GLfloat) - 0.701314, (GLfloat) 0.339376,
-       (GLfloat) - 0.749781, (GLfloat) - 0.512777, (GLfloat) 0.418197,
-       (GLfloat) - 0.722436, (GLfloat) - 0.581233, (GLfloat) 0.374506,
-       (GLfloat) - 0.823965, (GLfloat) - 0.552405, (GLfloat) 0.126218,
-       (GLfloat) - 0.810821, (GLfloat) - 0.575485, (GLfloat) 0.106707,
-       (GLfloat) - 0.684101, (GLfloat) - 0.722860, (GLfloat) 0.097361,
-       (GLfloat) - 0.656897, (GLfloat) - 0.743919, (GLfloat) 0.122761,
-       (GLfloat) - 0.804928, (GLfloat) - 0.376106, (GLfloat) 0.458949,
-       (GLfloat) - 0.795834, (GLfloat) - 0.416890, (GLfloat) 0.439148,
-       (GLfloat) - 0.890766, (GLfloat) - 0.431382, (GLfloat) 0.142986,
-       (GLfloat) - 0.885536, (GLfloat) - 0.445027, (GLfloat) 0.133330,
-       (GLfloat) - 0.863971, (GLfloat) - 0.488878, (GLfloat) 0.120637,
-       (GLfloat) - 0.871703, (GLfloat) - 0.470947, (GLfloat) 0.135440,
-       (GLfloat) - 0.777496, (GLfloat) - 0.478056, (GLfloat) 0.408610,
-       (GLfloat) - 0.791178, (GLfloat) - 0.423850, (GLfloat) 0.440894,
-       (GLfloat) 0.229002, (GLfloat) 0.499702, (GLfloat) - 0.835378,
-       (GLfloat) 0.231853, (GLfloat) 0.486589, (GLfloat) - 0.842304,
-       (GLfloat) 0.233876, (GLfloat) 0.516110, (GLfloat) - 0.823973,
-       (GLfloat) 0.237238, (GLfloat) 0.494666, (GLfloat) - 0.836076,
-       (GLfloat) 0.010383, (GLfloat) 0.206054, (GLfloat) - 0.978486,
-       (GLfloat) 0.010515, (GLfloat) 0.204402, (GLfloat) - 0.978831,
-       (GLfloat) - 0.008079, (GLfloat) 0.222043, (GLfloat) - 0.975003,
-       (GLfloat) - 0.007459, (GLfloat) 0.217610, (GLfloat) - 0.976007,
-       (GLfloat) 0.144536, (GLfloat) 0.600180, (GLfloat) - 0.786698,
-       (GLfloat) 0.157013, (GLfloat) 0.570113, (GLfloat) - 0.806423,
-       (GLfloat) 0.037521, (GLfloat) 0.196979, (GLfloat) - 0.979689,
-       (GLfloat) 0.033902, (GLfloat) 0.207800, (GLfloat) - 0.977584,
-       (GLfloat) 0.024105, (GLfloat) 0.197695, (GLfloat) - 0.979967,
-       (GLfloat) 0.023654, (GLfloat) 0.201010, (GLfloat) - 0.979303,
-       (GLfloat) 0.210423, (GLfloat) 0.553707, (GLfloat) - 0.805687,
-       (GLfloat) 0.216765, (GLfloat) 0.524423, (GLfloat) - 0.823404,
-       (GLfloat) - 0.387850, (GLfloat) - 0.484551, (GLfloat) - 0.784081,
-       (GLfloat) - 0.344102, (GLfloat) - 0.564354, (GLfloat) - 0.750399,
-       (GLfloat) - 0.507279, (GLfloat) - 0.348613, (GLfloat) - 0.788123,
-       (GLfloat) - 0.488679, (GLfloat) - 0.433878, (GLfloat) - 0.756930,
-       (GLfloat) - 0.209869, (GLfloat) - 0.143196, (GLfloat) - 0.967187,
-       (GLfloat) - 0.216489, (GLfloat) - 0.097461, (GLfloat) - 0.971408,
-       (GLfloat) - 0.125932, (GLfloat) - 0.202782, (GLfloat) - 0.971092,
-       (GLfloat) - 0.140256, (GLfloat) - 0.165750, (GLfloat) - 0.976143,
-       (GLfloat) - 0.549569, (GLfloat) - 0.208003, (GLfloat) - 0.809141,
-       (GLfloat) - 0.543770, (GLfloat) - 0.257592, (GLfloat) - 0.798724,
-       (GLfloat) - 0.260213, (GLfloat) - 0.033756, (GLfloat) - 0.964961,
-       (GLfloat) - 0.263665, (GLfloat) - 0.004051, (GLfloat) - 0.964606,
-       (GLfloat) - 0.243217, (GLfloat) - 0.082726, (GLfloat) - 0.966438,
-       (GLfloat) - 0.245939, (GLfloat) - 0.044154, (GLfloat) - 0.968279,
-       (GLfloat) - 0.539327, (GLfloat) - 0.261873, (GLfloat) - 0.800343,
-       (GLfloat) - 0.532344, (GLfloat) - 0.329385, (GLfloat) - 0.779818,
-       (GLfloat) 0.231853, (GLfloat) 0.486589, (GLfloat) 0.842304,
-       (GLfloat) 0.229002, (GLfloat) 0.499702, (GLfloat) 0.835378,
-       (GLfloat) - 0.008079, (GLfloat) 0.222044, (GLfloat) 0.975003,
-       (GLfloat) - 0.007460, (GLfloat) 0.217609, (GLfloat) 0.976008,
-       (GLfloat) 0.010515, (GLfloat) 0.204402, (GLfloat) 0.978830,
-       (GLfloat) 0.010383, (GLfloat) 0.206054, (GLfloat) 0.978486,
-       (GLfloat) 0.233876, (GLfloat) 0.516110, (GLfloat) 0.823973,
-       (GLfloat) 0.237238, (GLfloat) 0.494666, (GLfloat) 0.836076,
-       (GLfloat) - 0.549569, (GLfloat) - 0.208003, (GLfloat) 0.809141,
-       (GLfloat) - 0.543770, (GLfloat) - 0.257592, (GLfloat) 0.798724,
-       (GLfloat) - 0.532344, (GLfloat) - 0.329384, (GLfloat) 0.779818,
-       (GLfloat) - 0.539327, (GLfloat) - 0.261873, (GLfloat) 0.800343,
-       (GLfloat) - 0.243217, (GLfloat) - 0.082726, (GLfloat) 0.966438,
-       (GLfloat) - 0.245939, (GLfloat) - 0.044154, (GLfloat) 0.968279,
-       (GLfloat) - 0.263665, (GLfloat) - 0.004051, (GLfloat) 0.964606,
-       (GLfloat) - 0.260214, (GLfloat) - 0.033755, (GLfloat) 0.964961,
-       (GLfloat) - 0.344101, (GLfloat) - 0.564354, (GLfloat) 0.750399,
-       (GLfloat) - 0.387850, (GLfloat) - 0.484551, (GLfloat) 0.784081,
-       (GLfloat) - 0.125932, (GLfloat) - 0.202782, (GLfloat) 0.971093,
-       (GLfloat) - 0.140255, (GLfloat) - 0.165749, (GLfloat) 0.976143,
-       (GLfloat) - 0.216489, (GLfloat) - 0.097462, (GLfloat) 0.971408,
-       (GLfloat) - 0.209869, (GLfloat) - 0.143196, (GLfloat) 0.967187,
-       (GLfloat) - 0.507278, (GLfloat) - 0.348612, (GLfloat) 0.788123,
-       (GLfloat) - 0.488678, (GLfloat) - 0.433878, (GLfloat) 0.756930,
-       (GLfloat) 0.144536, (GLfloat) 0.600181, (GLfloat) 0.786697,
-       (GLfloat) 0.157013, (GLfloat) 0.570113, (GLfloat) 0.806423,
-       (GLfloat) 0.216765, (GLfloat) 0.524422, (GLfloat) 0.823404,
-       (GLfloat) 0.210423, (GLfloat) 0.553707, (GLfloat) 0.805687,
-       (GLfloat) 0.024105, (GLfloat) 0.197695, (GLfloat) 0.979967,
-       (GLfloat) 0.023654, (GLfloat) 0.201010, (GLfloat) 0.979304,
-       (GLfloat) 0.033902, (GLfloat) 0.207800, (GLfloat) 0.977584,
-       (GLfloat) 0.037522, (GLfloat) 0.196978, (GLfloat) 0.979690,
-       (GLfloat) 0.429831, (GLfloat) 0.754772, (GLfloat) - 0.495545,
-       (GLfloat) 0.445178, (GLfloat) 0.753116, (GLfloat) - 0.484389,
-       (GLfloat) 0.504382, (GLfloat) 0.849100, (GLfloat) - 0.156932,
-       (GLfloat) 0.509098, (GLfloat) 0.847167, (GLfloat) - 0.152075,
-       (GLfloat) 0.473721, (GLfloat) 0.868820, (GLfloat) - 0.144012,
-       (GLfloat) 0.467781, (GLfloat) 0.870761, (GLfloat) - 0.151512,
-       (GLfloat) 0.426275, (GLfloat) 0.776501, (GLfloat) - 0.464043,
-       (GLfloat) 0.405841, (GLfloat) 0.776082, (GLfloat) - 0.482690,
-       (GLfloat) 0.445178, (GLfloat) 0.753116, (GLfloat) 0.484389,
-       (GLfloat) 0.429830, (GLfloat) 0.754772, (GLfloat) 0.495545,
-       (GLfloat) 0.426275, (GLfloat) 0.776501, (GLfloat) 0.464043,
-       (GLfloat) 0.405841, (GLfloat) 0.776082, (GLfloat) 0.482690,
-       (GLfloat) 0.467781, (GLfloat) 0.870761, (GLfloat) 0.151512,
-       (GLfloat) 0.473721, (GLfloat) 0.868820, (GLfloat) 0.144012,
-       (GLfloat) 0.504382, (GLfloat) 0.849100, (GLfloat) 0.156932,
-       (GLfloat) 0.509098, (GLfloat) 0.847167, (GLfloat) 0.152075,
-       (GLfloat) 0.229278, (GLfloat) 0.880155, (GLfloat) 0.415643,
-       (GLfloat) 0.209637, (GLfloat) 0.873049, (GLfloat) 0.440270,
-       (GLfloat) 0.229791, (GLfloat) 0.963838, (GLfloat) 0.134951,
-       (GLfloat) 0.235661, (GLfloat) 0.963590, (GLfloat) 0.126323,
-       (GLfloat) 0.380317, (GLfloat) 0.913635, (GLfloat) 0.143628,
-       (GLfloat) 0.386968, (GLfloat) 0.912260, (GLfloat) 0.134303,
-       (GLfloat) 0.360099, (GLfloat) 0.823680, (GLfloat) 0.438041,
-       (GLfloat) 0.336980, (GLfloat) 0.819830, (GLfloat) 0.462950,
-       (GLfloat) 0.229278, (GLfloat) 0.880155, (GLfloat) - 0.415643,
-       (GLfloat) 0.209637, (GLfloat) 0.873049, (GLfloat) - 0.440270,
-       (GLfloat) 0.336980, (GLfloat) 0.819830, (GLfloat) - 0.462951,
-       (GLfloat) 0.360099, (GLfloat) 0.823680, (GLfloat) - 0.438041,
-       (GLfloat) 0.380318, (GLfloat) 0.913635, (GLfloat) - 0.143628,
-       (GLfloat) 0.386968, (GLfloat) 0.912260, (GLfloat) - 0.134303,
-       (GLfloat) 0.235661, (GLfloat) 0.963590, (GLfloat) - 0.126323,
-       (GLfloat) 0.229791, (GLfloat) 0.963838, (GLfloat) - 0.134951,
-       (GLfloat) - 0.140641, (GLfloat) 0.581880, (GLfloat) - 0.801022,
-       (GLfloat) - 0.142183, (GLfloat) 0.582121, (GLfloat) - 0.800574,
-       (GLfloat) 0.051917, (GLfloat) 0.273318, (GLfloat) - 0.960522,
-       (GLfloat) 0.034217, (GLfloat) 0.274901, (GLfloat) - 0.960864,
-       (GLfloat) 0.048940, (GLfloat) 0.249448, (GLfloat) - 0.967151,
-       (GLfloat) 0.029460, (GLfloat) 0.256714, (GLfloat) - 0.966038,
-       (GLfloat) - 0.118911, (GLfloat) 0.595461, (GLfloat) - 0.794536,
-       (GLfloat) - 0.119035, (GLfloat) 0.595511, (GLfloat) - 0.794479,
-       (GLfloat) 0.515773, (GLfloat) - 0.229138, (GLfloat) - 0.825515,
-       (GLfloat) 0.492630, (GLfloat) - 0.312368, (GLfloat) - 0.812245,
-       (GLfloat) 0.432249, (GLfloat) - 0.426645, (GLfloat) - 0.794440,
-       (GLfloat) 0.467347, (GLfloat) - 0.336981, (GLfloat) - 0.817332,
-       (GLfloat) 0.202207, (GLfloat) - 0.074217, (GLfloat) - 0.976526,
-       (GLfloat) 0.254570, (GLfloat) - 0.084963, (GLfloat) - 0.963315,
-       (GLfloat) 0.231800, (GLfloat) - 0.012060, (GLfloat) - 0.972689,
-       (GLfloat) 0.278802, (GLfloat) - 0.009127, (GLfloat) - 0.960305,
-       (GLfloat) 0.001969, (GLfloat) - 0.610219, (GLfloat) - 0.792230,
-       (GLfloat) 0.016464, (GLfloat) - 0.619478, (GLfloat) - 0.784841,
-       (GLfloat) 0.038477, (GLfloat) - 0.206205, (GLfloat) - 0.977752,
-       (GLfloat) 0.042684, (GLfloat) - 0.210618, (GLfloat) - 0.976636,
-       (GLfloat) 0.147830, (GLfloat) - 0.145929, (GLfloat) - 0.978188,
-       (GLfloat) 0.187657, (GLfloat) - 0.166867, (GLfloat) - 0.967957,
-       (GLfloat) 0.332157, (GLfloat) - 0.490109, (GLfloat) - 0.805894,
-       (GLfloat) 0.291047, (GLfloat) - 0.549638, (GLfloat) - 0.783064,
-       (GLfloat) 0.018324, (GLfloat) 0.624772, (GLfloat) - 0.780593,
-       (GLfloat) 0.031411, (GLfloat) 0.609093, (GLfloat) - 0.792477,
-       (GLfloat) - 0.068754, (GLfloat) 0.615108, (GLfloat) - 0.785439,
-       (GLfloat) - 0.063190, (GLfloat) 0.611137, (GLfloat) - 0.788999,
-       (GLfloat) 0.050001, (GLfloat) 0.227113, (GLfloat) - 0.972584,
-       (GLfloat) 0.031314, (GLfloat) 0.240630, (GLfloat) - 0.970112,
-       (GLfloat) 0.046887, (GLfloat) 0.207201, (GLfloat) - 0.977174,
-       (GLfloat) 0.034344, (GLfloat) 0.223544, (GLfloat) - 0.974089,
-       (GLfloat) - 0.289358, (GLfloat) 0.846699, (GLfloat) - 0.446512,
-       (GLfloat) - 0.282981, (GLfloat) 0.846581, (GLfloat) - 0.450803,
-       (GLfloat) - 0.237609, (GLfloat) 0.869708, (GLfloat) - 0.432607,
-       (GLfloat) - 0.232787, (GLfloat) 0.868834, (GLfloat) - 0.436964,
-       (GLfloat) - 0.269102, (GLfloat) 0.953677, (GLfloat) - 0.134480,
-       (GLfloat) - 0.270832, (GLfloat) 0.953476, (GLfloat) - 0.132414,
-       (GLfloat) - 0.330792, (GLfloat) 0.933242, (GLfloat) - 0.140129,
-       (GLfloat) - 0.333075, (GLfloat) 0.932754, (GLfloat) - 0.137953,
-       (GLfloat) 0.010415, (GLfloat) 0.905793, (GLfloat) - 0.423593,
-       (GLfloat) 0.002305, (GLfloat) 0.910958, (GLfloat) - 0.412492,
-       (GLfloat) - 0.003726, (GLfloat) 0.991671, (GLfloat) - 0.128743,
-       (GLfloat) - 0.001231, (GLfloat) 0.992167, (GLfloat) - 0.124913,
-       (GLfloat) - 0.164759, (GLfloat) 0.977931, (GLfloat) - 0.128473,
-       (GLfloat) - 0.164919, (GLfloat) 0.977933, (GLfloat) - 0.128255,
-       (GLfloat) - 0.141914, (GLfloat) 0.895522, (GLfloat) - 0.421783,
-       (GLfloat) - 0.142144, (GLfloat) 0.895607, (GLfloat) - 0.421525,
-       (GLfloat) 0.010415, (GLfloat) 0.905793, (GLfloat) 0.423593,
-       (GLfloat) 0.002305, (GLfloat) 0.910958, (GLfloat) 0.412492,
-       (GLfloat) - 0.142144, (GLfloat) 0.895607, (GLfloat) 0.421525,
-       (GLfloat) - 0.141914, (GLfloat) 0.895522, (GLfloat) 0.421783,
-       (GLfloat) - 0.164759, (GLfloat) 0.977931, (GLfloat) 0.128473,
-       (GLfloat) - 0.164919, (GLfloat) 0.977933, (GLfloat) 0.128255,
-       (GLfloat) - 0.003726, (GLfloat) 0.991671, (GLfloat) 0.128743,
-       (GLfloat) - 0.001231, (GLfloat) 0.992167, (GLfloat) 0.124913,
-       (GLfloat) - 0.282980, (GLfloat) 0.846581, (GLfloat) 0.450803,
-       (GLfloat) - 0.289358, (GLfloat) 0.846699, (GLfloat) 0.446512,
-       (GLfloat) - 0.330792, (GLfloat) 0.933242, (GLfloat) 0.140129,
-       (GLfloat) - 0.333075, (GLfloat) 0.932754, (GLfloat) 0.137953,
-       (GLfloat) - 0.270832, (GLfloat) 0.953476, (GLfloat) 0.132414,
-       (GLfloat) - 0.269102, (GLfloat) 0.953677, (GLfloat) 0.134480,
-       (GLfloat) - 0.237609, (GLfloat) 0.869708, (GLfloat) 0.432607,
-       (GLfloat) - 0.232787, (GLfloat) 0.868834, (GLfloat) 0.436964,
-       (GLfloat) - 0.140641, (GLfloat) 0.581880, (GLfloat) 0.801022,
-       (GLfloat) - 0.142183, (GLfloat) 0.582121, (GLfloat) 0.800574,
-       (GLfloat) - 0.119034, (GLfloat) 0.595511, (GLfloat) 0.794479,
-       (GLfloat) - 0.118911, (GLfloat) 0.595461, (GLfloat) 0.794536,
-       (GLfloat) 0.048939, (GLfloat) 0.249448, (GLfloat) 0.967151,
-       (GLfloat) 0.029461, (GLfloat) 0.256714, (GLfloat) 0.966038,
-       (GLfloat) 0.034217, (GLfloat) 0.274901, (GLfloat) 0.960863,
-       (GLfloat) 0.051918, (GLfloat) 0.273319, (GLfloat) 0.960521,
-       (GLfloat) 0.031411, (GLfloat) 0.609093, (GLfloat) 0.792477,
-       (GLfloat) 0.018324, (GLfloat) 0.624772, (GLfloat) 0.780593,
-       (GLfloat) 0.046887, (GLfloat) 0.207200, (GLfloat) 0.977174,
-       (GLfloat) 0.034344, (GLfloat) 0.223543, (GLfloat) 0.974089,
-       (GLfloat) 0.031314, (GLfloat) 0.240631, (GLfloat) 0.970111,
-       (GLfloat) 0.050002, (GLfloat) 0.227113, (GLfloat) 0.972584,
-       (GLfloat) - 0.068754, (GLfloat) 0.615108, (GLfloat) 0.785440,
-       (GLfloat) - 0.063191, (GLfloat) 0.611137, (GLfloat) 0.788999,
-       (GLfloat) 0.001969, (GLfloat) - 0.610219, (GLfloat) 0.792230,
-       (GLfloat) 0.016464, (GLfloat) - 0.619478, (GLfloat) 0.784841,
-       (GLfloat) 0.332157, (GLfloat) - 0.490109, (GLfloat) 0.805894,
-       (GLfloat) 0.291047, (GLfloat) - 0.549638, (GLfloat) 0.783064,
-       (GLfloat) 0.147831, (GLfloat) - 0.145929, (GLfloat) 0.978188,
-       (GLfloat) 0.187656, (GLfloat) - 0.166866, (GLfloat) 0.967957,
-       (GLfloat) 0.042684, (GLfloat) - 0.210618, (GLfloat) 0.976636,
-       (GLfloat) 0.038477, (GLfloat) - 0.206204, (GLfloat) 0.977752,
-       (GLfloat) 0.515773, (GLfloat) - 0.229138, (GLfloat) 0.825515,
-       (GLfloat) 0.492630, (GLfloat) - 0.312368, (GLfloat) 0.812245,
-       (GLfloat) 0.231801, (GLfloat) - 0.012059, (GLfloat) 0.972689,
-       (GLfloat) 0.278802, (GLfloat) - 0.009127, (GLfloat) 0.960305,
-       (GLfloat) 0.254571, (GLfloat) - 0.084963, (GLfloat) 0.963315,
-       (GLfloat) 0.202207, (GLfloat) - 0.074217, (GLfloat) 0.976527,
-       (GLfloat) 0.467347, (GLfloat) - 0.336981, (GLfloat) 0.817332,
-       (GLfloat) 0.432250, (GLfloat) - 0.426645, (GLfloat) 0.794440,
-       (GLfloat) 0.731946, (GLfloat) - 0.508941, (GLfloat) 0.453029,
-       (GLfloat) 0.760718, (GLfloat) - 0.438585, (GLfloat) 0.478489,
-       (GLfloat) 0.696013, (GLfloat) - 0.585025, (GLfloat) 0.416308,
-       (GLfloat) 0.630794, (GLfloat) - 0.620580, (GLfloat) 0.465810,
-       (GLfloat) 0.757142, (GLfloat) - 0.637420, (GLfloat) 0.142942,
-       (GLfloat) 0.737097, (GLfloat) - 0.663598, (GLfloat) 0.127771,
-       (GLfloat) 0.847507, (GLfloat) - 0.509047, (GLfloat) 0.150342,
-       (GLfloat) 0.834151, (GLfloat) - 0.533962, (GLfloat) 0.138115,
-       (GLfloat) - 0.068175, (GLfloat) - 0.903325, (GLfloat) 0.423504,
-       (GLfloat) - 0.038664, (GLfloat) - 0.911816, (GLfloat) 0.408775,
-       (GLfloat) - 0.102320, (GLfloat) - 0.986404, (GLfloat) 0.128602,
-       (GLfloat) - 0.086898, (GLfloat) - 0.988753, (GLfloat) 0.121719,
-       (GLfloat) 0.488656, (GLfloat) - 0.861887, (GLfloat) 0.135524,
-       (GLfloat) 0.510932, (GLfloat) - 0.850761, (GLfloat) 0.123102,
-       (GLfloat) 0.415769, (GLfloat) - 0.794938, (GLfloat) 0.441826,
-       (GLfloat) 0.471036, (GLfloat) - 0.782278, (GLfloat) 0.407634,
-       (GLfloat) - 0.038664, (GLfloat) - 0.911816, (GLfloat) - 0.408775,
-       (GLfloat) - 0.068174, (GLfloat) - 0.903325, (GLfloat) - 0.423504,
-       (GLfloat) 0.415769, (GLfloat) - 0.794938, (GLfloat) - 0.441826,
-       (GLfloat) 0.471037, (GLfloat) - 0.782278, (GLfloat) - 0.407634,
-       (GLfloat) 0.510932, (GLfloat) - 0.850761, (GLfloat) - 0.123102,
-       (GLfloat) 0.488656, (GLfloat) - 0.861887, (GLfloat) - 0.135524,
-       (GLfloat) - 0.102320, (GLfloat) - 0.986404, (GLfloat) - 0.128602,
-       (GLfloat) - 0.086898, (GLfloat) - 0.988753, (GLfloat) - 0.121719,
-       (GLfloat) 0.760718, (GLfloat) - 0.438585, (GLfloat) - 0.478489,
-       (GLfloat) 0.731946, (GLfloat) - 0.508941, (GLfloat) - 0.453029,
-       (GLfloat) 0.847507, (GLfloat) - 0.509047, (GLfloat) - 0.150343,
-       (GLfloat) 0.834151, (GLfloat) - 0.533962, (GLfloat) - 0.138115,
-       (GLfloat) 0.737097, (GLfloat) - 0.663599, (GLfloat) - 0.127771,
-       (GLfloat) 0.757142, (GLfloat) - 0.637420, (GLfloat) - 0.142942,
-       (GLfloat) 0.630794, (GLfloat) - 0.620580, (GLfloat) - 0.465810,
-       (GLfloat) 0.696012, (GLfloat) - 0.585025, (GLfloat) - 0.416309,
-       (GLfloat) 0.774435, (GLfloat) - 0.417338, (GLfloat) 0.475479,
-       (GLfloat) 0.793442, (GLfloat) - 0.363272, (GLfloat) 0.488348,
-       (GLfloat) 0.884471, (GLfloat) - 0.440088, (GLfloat) 0.155030,
-       (GLfloat) 0.875885, (GLfloat) - 0.459272, (GLfloat) 0.147967,
-       (GLfloat) 0.768156, (GLfloat) - 0.618465, (GLfloat) 0.165642,
-       (GLfloat) 0.757446, (GLfloat) - 0.632850, (GLfloat) 0.160551,
-       (GLfloat) 0.645602, (GLfloat) - 0.572394, (GLfloat) 0.505533,
-       (GLfloat) 0.663605, (GLfloat) - 0.543212, (GLfloat) 0.514343,
-       (GLfloat) 0.774435, (GLfloat) - 0.417338, (GLfloat) - 0.475479,
-       (GLfloat) 0.793442, (GLfloat) - 0.363271, (GLfloat) - 0.488348,
-       (GLfloat) 0.663604, (GLfloat) - 0.543213, (GLfloat) - 0.514343,
-       (GLfloat) 0.645602, (GLfloat) - 0.572394, (GLfloat) - 0.505533,
-       (GLfloat) 0.768156, (GLfloat) - 0.618465, (GLfloat) - 0.165643,
-       (GLfloat) 0.757446, (GLfloat) - 0.632850, (GLfloat) - 0.160551,
-       (GLfloat) 0.875885, (GLfloat) - 0.459272, (GLfloat) - 0.147967,
-       (GLfloat) 0.884471, (GLfloat) - 0.440088, (GLfloat) - 0.155030,
-       (GLfloat) - 0.384755, (GLfloat) - 0.899768, (GLfloat) - 0.205866,
-       (GLfloat) - 0.407035, (GLfloat) - 0.895883, (GLfloat) - 0.178092,
-       (GLfloat) - 0.367045, (GLfloat) - 0.927643, (GLfloat) - 0.068965,
-       (GLfloat) - 0.377652, (GLfloat) - 0.923053, (GLfloat) - 0.073163,
-       (GLfloat) 0.147492, (GLfloat) - 0.980758, (GLfloat) - 0.127908,
-       (GLfloat) 0.187942, (GLfloat) - 0.971451, (GLfloat) - 0.144776,
-       (GLfloat) 0.017404, (GLfloat) - 0.922933, (GLfloat) - 0.384567,
-       (GLfloat) 0.060977, (GLfloat) - 0.919535, (GLfloat) - 0.388250,
-       (GLfloat) - 0.407035, (GLfloat) - 0.895883, (GLfloat) 0.178092,
-       (GLfloat) - 0.384755, (GLfloat) - 0.899768, (GLfloat) 0.205866,
-       (GLfloat) 0.060977, (GLfloat) - 0.919535, (GLfloat) 0.388250,
-       (GLfloat) 0.017405, (GLfloat) - 0.922933, (GLfloat) 0.384568,
-       (GLfloat) 0.187942, (GLfloat) - 0.971451, (GLfloat) 0.144776,
-       (GLfloat) 0.147492, (GLfloat) - 0.980758, (GLfloat) 0.127908,
-       (GLfloat) - 0.377652, (GLfloat) - 0.923053, (GLfloat) 0.073163,
-       (GLfloat) - 0.367045, (GLfloat) - 0.927643, (GLfloat) 0.068965,
-       (GLfloat) 0.525096, (GLfloat) - 0.217383, (GLfloat) - 0.822811,
-       (GLfloat) 0.542855, (GLfloat) - 0.154089, (GLfloat) - 0.825569,
-       (GLfloat) 0.263018, (GLfloat) 0.047234, (GLfloat) - 0.963634,
-       (GLfloat) 0.298263, (GLfloat) 0.059374, (GLfloat) - 0.952635,
-       (GLfloat) 0.152826, (GLfloat) - 0.078814, (GLfloat) - 0.985105,
-       (GLfloat) 0.157225, (GLfloat) - 0.076313, (GLfloat) - 0.984610,
-       (GLfloat) 0.407888, (GLfloat) - 0.328946, (GLfloat) - 0.851717,
-       (GLfloat) 0.393565, (GLfloat) - 0.338248, (GLfloat) - 0.854807,
-       (GLfloat) - 0.131636, (GLfloat) 0.588079, (GLfloat) - 0.798019,
-       (GLfloat) - 0.131727, (GLfloat) 0.588071, (GLfloat) - 0.798011,
-       (GLfloat) - 0.280070, (GLfloat) 0.459269, (GLfloat) - 0.842990,
-       (GLfloat) - 0.285882, (GLfloat) 0.456692, (GLfloat) - 0.842439,
-       (GLfloat) - 0.064116, (GLfloat) 0.179568, (GLfloat) - 0.981654,
-       (GLfloat) - 0.067311, (GLfloat) 0.177967, (GLfloat) - 0.981732,
-       (GLfloat) 0.071348, (GLfloat) 0.308885, (GLfloat) - 0.948419,
-       (GLfloat) 0.056168, (GLfloat) 0.305937, (GLfloat) - 0.950393,
-       (GLfloat) - 0.756765, (GLfloat) - 0.603631, (GLfloat) - 0.250870,
-       (GLfloat) - 0.750192, (GLfloat) - 0.596115, (GLfloat) - 0.286110,
-       (GLfloat) - 0.661260, (GLfloat) - 0.680768, (GLfloat) - 0.315104,
-       (GLfloat) - 0.666597, (GLfloat) - 0.680599, (GLfloat) - 0.304029,
-       (GLfloat) - 0.487239, (GLfloat) - 0.360038, (GLfloat) - 0.795595,
-       (GLfloat) - 0.481713, (GLfloat) - 0.339088, (GLfloat) - 0.808067,
-       (GLfloat) - 0.706427, (GLfloat) - 0.186136, (GLfloat) - 0.682872,
-       (GLfloat) - 0.704353, (GLfloat) - 0.163662, (GLfloat) - 0.690726,
-       (GLfloat) - 0.472887, (GLfloat) - 0.840626, (GLfloat) - 0.264056,
-       (GLfloat) - 0.444319, (GLfloat) - 0.849789, (GLfloat) - 0.283620,
-       (GLfloat) - 0.155246, (GLfloat) - 0.767829, (GLfloat) - 0.621561,
-       (GLfloat) - 0.107581, (GLfloat) - 0.759164, (GLfloat) - 0.641947,
-       (GLfloat) - 0.262880, (GLfloat) - 0.545316, (GLfloat) - 0.795943,
-       (GLfloat) - 0.306478, (GLfloat) - 0.563718, (GLfloat) - 0.767002,
-       (GLfloat) - 0.550890, (GLfloat) - 0.772860, (GLfloat) - 0.314972,
-       (GLfloat) - 0.559203, (GLfloat) - 0.770962, (GLfloat) - 0.304813,
-       (GLfloat) - 0.296632, (GLfloat) 0.840312, (GLfloat) - 0.453745,
-       (GLfloat) - 0.291339, (GLfloat) 0.841021, (GLfloat) - 0.455856,
-       (GLfloat) - 0.347498, (GLfloat) 0.926752, (GLfloat) - 0.142743,
-       (GLfloat) - 0.349577, (GLfloat) 0.926172, (GLfloat) - 0.141427,
-       (GLfloat) - 0.528222, (GLfloat) 0.834354, (GLfloat) - 0.157592,
-       (GLfloat) - 0.534297, (GLfloat) 0.830965, (GLfloat) - 0.154997,
-       (GLfloat) - 0.477964, (GLfloat) 0.727109, (GLfloat) - 0.492812,
-       (GLfloat) - 0.464577, (GLfloat) 0.733270, (GLfloat) - 0.496471,
-       (GLfloat) - 0.296632, (GLfloat) 0.840312, (GLfloat) 0.453745,
-       (GLfloat) - 0.291339, (GLfloat) 0.841021, (GLfloat) 0.455856,
-       (GLfloat) - 0.464577, (GLfloat) 0.733270, (GLfloat) 0.496471,
-       (GLfloat) - 0.477964, (GLfloat) 0.727109, (GLfloat) 0.492812,
-       (GLfloat) - 0.528222, (GLfloat) 0.834354, (GLfloat) 0.157592,
-       (GLfloat) - 0.534297, (GLfloat) 0.830965, (GLfloat) 0.154997,
-       (GLfloat) - 0.349577, (GLfloat) 0.926172, (GLfloat) 0.141427,
-       (GLfloat) - 0.347498, (GLfloat) 0.926752, (GLfloat) 0.142743,
-       (GLfloat) - 0.819286, (GLfloat) - 0.535153, (GLfloat) 0.205866,
-       (GLfloat) - 0.811591, (GLfloat) - 0.556420, (GLfloat) 0.178092,
-       (GLfloat) - 0.849813, (GLfloat) - 0.522553, (GLfloat) 0.068965,
-       (GLfloat) - 0.843450, (GLfloat) - 0.532202, (GLfloat) 0.073162,
-       (GLfloat) - 0.975674, (GLfloat) 0.164943, (GLfloat) 0.144407,
-       (GLfloat) - 0.965143, (GLfloat) 0.206428, (GLfloat) 0.160894,
-       (GLfloat) - 0.906538, (GLfloat) 0.014845, (GLfloat) 0.421862,
-       (GLfloat) - 0.890094, (GLfloat) 0.060087, (GLfloat) 0.451800,
-       (GLfloat) - 0.811591, (GLfloat) - 0.556419, (GLfloat) - 0.178092,
-       (GLfloat) - 0.819286, (GLfloat) - 0.535153, (GLfloat) - 0.205865,
-       (GLfloat) - 0.906538, (GLfloat) 0.014844, (GLfloat) - 0.421862,
-       (GLfloat) - 0.890094, (GLfloat) 0.060087, (GLfloat) - 0.451800,
-       (GLfloat) - 0.965143, (GLfloat) 0.206428, (GLfloat) - 0.160894,
-       (GLfloat) - 0.975674, (GLfloat) 0.164943, (GLfloat) - 0.144407,
-       (GLfloat) - 0.843450, (GLfloat) - 0.532202, (GLfloat) - 0.073162,
-       (GLfloat) - 0.849813, (GLfloat) - 0.522553, (GLfloat) - 0.068965,
-       (GLfloat) - 0.131727, (GLfloat) 0.588071, (GLfloat) 0.798011,
-       (GLfloat) - 0.131636, (GLfloat) 0.588079, (GLfloat) 0.798019,
-       (GLfloat) 0.071348, (GLfloat) 0.308886, (GLfloat) 0.948419,
-       (GLfloat) 0.056168, (GLfloat) 0.305937, (GLfloat) 0.950393,
-       (GLfloat) - 0.067311, (GLfloat) 0.177967, (GLfloat) 0.981732,
-       (GLfloat) - 0.064116, (GLfloat) 0.179568, (GLfloat) 0.981654,
-       (GLfloat) - 0.280070, (GLfloat) 0.459269, (GLfloat) 0.842990,
-       (GLfloat) - 0.285882, (GLfloat) 0.456692, (GLfloat) 0.842439,
-       (GLfloat) 0.542855, (GLfloat) - 0.154089, (GLfloat) 0.825569,
-       (GLfloat) 0.525096, (GLfloat) - 0.217383, (GLfloat) 0.822811,
-       (GLfloat) 0.393565, (GLfloat) - 0.338248, (GLfloat) 0.854807,
-       (GLfloat) 0.407888, (GLfloat) - 0.328946, (GLfloat) 0.851717,
-       (GLfloat) 0.152826, (GLfloat) - 0.078814, (GLfloat) 0.985105,
-       (GLfloat) 0.157225, (GLfloat) - 0.076313, (GLfloat) 0.984610,
-       (GLfloat) 0.298263, (GLfloat) 0.059374, (GLfloat) 0.952635,
-       (GLfloat) 0.263018, (GLfloat) 0.047234, (GLfloat) 0.963634,
-       (GLfloat) - 0.444319, (GLfloat) - 0.849789, (GLfloat) 0.283620,
-       (GLfloat) - 0.472887, (GLfloat) - 0.840626, (GLfloat) 0.264055,
-       (GLfloat) - 0.550890, (GLfloat) - 0.772861, (GLfloat) 0.314972,
-       (GLfloat) - 0.559203, (GLfloat) - 0.770962, (GLfloat) 0.304813,
-       (GLfloat) - 0.306478, (GLfloat) - 0.563718, (GLfloat) 0.767003,
-       (GLfloat) - 0.262880, (GLfloat) - 0.545316, (GLfloat) 0.795943,
-       (GLfloat) - 0.155245, (GLfloat) - 0.767828, (GLfloat) 0.621562,
-       (GLfloat) - 0.107581, (GLfloat) - 0.759164, (GLfloat) 0.641947,
-       (GLfloat) - 0.756765, (GLfloat) - 0.603631, (GLfloat) 0.250869,
-       (GLfloat) - 0.750192, (GLfloat) - 0.596115, (GLfloat) 0.286110,
-       (GLfloat) - 0.706427, (GLfloat) - 0.186135, (GLfloat) 0.682873,
-       (GLfloat) - 0.704352, (GLfloat) - 0.163662, (GLfloat) 0.690726,
-       (GLfloat) - 0.481713, (GLfloat) - 0.339088, (GLfloat) 0.808067,
-       (GLfloat) - 0.487239, (GLfloat) - 0.360037, (GLfloat) 0.795595,
-       (GLfloat) - 0.666597, (GLfloat) - 0.680599, (GLfloat) 0.304029,
-       (GLfloat) - 0.661260, (GLfloat) - 0.680768, (GLfloat) 0.315104,
-       (GLfloat) - 0.527794, (GLfloat) - 0.840271, (GLfloat) - 0.124011,
-       (GLfloat) - 0.536826, (GLfloat) - 0.832691, (GLfloat) - 0.135802,
-       (GLfloat) - 0.604714, (GLfloat) - 0.788863, (GLfloat) - 0.109621,
-       (GLfloat) - 0.607657, (GLfloat) - 0.785872, (GLfloat) - 0.114709,
-       (GLfloat) - 0.619037, (GLfloat) - 0.784665, (GLfloat) - 0.033079,
-       (GLfloat) - 0.616803, (GLfloat) - 0.786539, (GLfloat) - 0.030163,
-       (GLfloat) - 0.554318, (GLfloat) - 0.831150, (GLfloat) - 0.043834,
-       (GLfloat) - 0.550163, (GLfloat) - 0.834115, (GLfloat) - 0.039656,
-       (GLfloat) - 0.726822, (GLfloat) - 0.673266, (GLfloat) - 0.135802,
-       (GLfloat) - 0.735855, (GLfloat) - 0.665687, (GLfloat) - 0.124011,
-       (GLfloat) - 0.722267, (GLfloat) - 0.690224, (GLfloat) - 0.043834,
-       (GLfloat) - 0.725908, (GLfloat) - 0.686648, (GLfloat) - 0.039656,
-       (GLfloat) - 0.667483, (GLfloat) - 0.744014, (GLfloat) - 0.030163,
-       (GLfloat) - 0.665249, (GLfloat) - 0.745888, (GLfloat) - 0.033079,
-       (GLfloat) - 0.671871, (GLfloat) - 0.732511, (GLfloat) - 0.109621,
-       (GLfloat) - 0.668414, (GLfloat) - 0.734891, (GLfloat) - 0.114709,
-       (GLfloat) - 0.735855, (GLfloat) - 0.665687, (GLfloat) 0.124011,
-       (GLfloat) - 0.726822, (GLfloat) - 0.673266, (GLfloat) 0.135802,
-       (GLfloat) - 0.671871, (GLfloat) - 0.732511, (GLfloat) 0.109621,
-       (GLfloat) - 0.668414, (GLfloat) - 0.734891, (GLfloat) 0.114709,
-       (GLfloat) - 0.665249, (GLfloat) - 0.745888, (GLfloat) 0.033079,
-       (GLfloat) - 0.667483, (GLfloat) - 0.744014, (GLfloat) 0.030163,
-       (GLfloat) - 0.722267, (GLfloat) - 0.690224, (GLfloat) 0.043834,
-       (GLfloat) - 0.725908, (GLfloat) - 0.686648, (GLfloat) 0.039656,
-       (GLfloat) - 0.536826, (GLfloat) - 0.832691, (GLfloat) 0.135802,
-       (GLfloat) - 0.527794, (GLfloat) - 0.840271, (GLfloat) 0.124011,
-       (GLfloat) - 0.554318, (GLfloat) - 0.831150, (GLfloat) 0.043834,
-       (GLfloat) - 0.550163, (GLfloat) - 0.834115, (GLfloat) 0.039656,
-       (GLfloat) - 0.616803, (GLfloat) - 0.786539, (GLfloat) 0.030163,
-       (GLfloat) - 0.619037, (GLfloat) - 0.784665, (GLfloat) 0.033079,
-       (GLfloat) - 0.604714, (GLfloat) - 0.788863, (GLfloat) 0.109621,
-       (GLfloat) - 0.607657, (GLfloat) - 0.785872, (GLfloat) 0.114709,
-};
-
-static unsigned short int s1_4_POLS[] =
-{
-      3, 82, 12, 76, 1, 3, 76, 74, 82, 1, 3, 22, 78, 74, 1, 3, 22, 74, 76, 1,
-      3, 78, 20, 80, 1, 3, 80, 74, 78, 1, 3, 28, 82, 74, 1, 3, 28, 74, 80, 1,
-      3, 88, 13, 84, 1, 3, 84, 77, 88, 1, 3, 24, 86, 77, 1, 3, 24, 77, 84, 1,
-      3, 86, 20, 78, 1, 3, 78, 77, 86, 1, 3, 22, 88, 77, 1, 3, 22, 77, 78, 1,
-      3, 14, 90, 85, 1, 3, 14, 85, 93, 1, 3, 26, 91, 85, 1, 3, 26, 85, 90, 1,
-      3, 20, 86, 85, 1, 3, 20, 85, 91, 1, 3, 86, 24, 93, 1, 3, 93, 85, 86, 1,
-      3, 15, 95, 79, 1, 3, 15, 79, 97, 1, 3, 95, 28, 80, 1, 3, 80, 79, 95, 1,
-      3, 20, 91, 79, 1, 3, 20, 79, 80, 1, 3, 26, 97, 79, 1, 3, 26, 79, 91, 1,
-    3, 13, 99, 83, 1, 3, 13, 83, 84, 1, 3, 99, 30, 101, 1, 3, 101, 83, 99, 1,
-  3, 23, 102, 83, 1, 3, 23, 83, 101, 1, 3, 102, 24, 84, 1, 3, 84, 83, 102, 1,
-       3, 16, 104, 100, 1, 3, 16, 100, 108, 1, 3, 104, 32, 106, 1, 3, 106, 100, 104, 1,
-       3, 106, 23, 101, 1, 3, 101, 100, 106, 1, 3, 30, 108, 100, 1, 3, 30, 100, 101, 1,
-       3, 17, 110, 105, 1, 3, 17, 105, 113, 1, 3, 110, 33, 111, 1, 3, 111, 105, 110, 1,
-       3, 23, 106, 105, 1, 3, 23, 105, 111, 1, 3, 106, 32, 113, 1, 3, 113, 105, 106, 1,
-  3, 114, 14, 93, 1, 3, 93, 92, 114, 1, 3, 93, 24, 102, 1, 3, 102, 92, 93, 1,
-3, 23, 111, 92, 1, 3, 23, 92, 102, 1, 3, 111, 33, 114, 1, 3, 114, 92, 111, 1,
-       3, 104, 16, 116, 1, 3, 116, 103, 104, 1, 3, 35, 118, 103, 1, 3, 35, 103, 116, 1,
-       3, 118, 31, 119, 1, 3, 119, 103, 118, 1, 3, 32, 104, 103, 1, 3, 32, 103, 119, 1,
-       3, 125, 18, 121, 1, 3, 121, 117, 125, 1, 3, 36, 123, 117, 1, 3, 36, 117, 121, 1,
-       3, 123, 31, 118, 1, 3, 118, 117, 123, 1, 3, 35, 125, 117, 1, 3, 35, 117, 118, 1,
-       3, 19, 127, 122, 1, 3, 19, 122, 130, 1, 3, 37, 128, 122, 1, 3, 37, 122, 127, 1,
-       3, 31, 123, 122, 1, 3, 31, 122, 128, 1, 3, 36, 130, 122, 1, 3, 36, 122, 123, 1,
-       3, 17, 113, 112, 1, 3, 17, 112, 131, 1, 3, 32, 119, 112, 1, 3, 32, 112, 113, 1,
-       3, 31, 128, 112, 1, 3, 31, 112, 119, 1, 3, 37, 131, 112, 1, 3, 37, 112, 128, 1,
-       3, 18, 133, 120, 1, 3, 18, 120, 121, 1, 3, 39, 134, 120, 1, 3, 39, 120, 133, 1,
-       3, 134, 27, 135, 1, 3, 135, 120, 134, 1, 3, 135, 36, 121, 1, 3, 121, 120, 135, 1,
-   3, 12, 82, 81, 1, 3, 12, 81, 138, 1, 3, 82, 28, 136, 1, 3, 136, 81, 82, 1,
-3, 27, 134, 81, 1, 3, 27, 81, 136, 1, 3, 134, 39, 138, 1, 3, 138, 81, 134, 1,
-3, 95, 15, 139, 1, 3, 139, 94, 95, 1, 3, 139, 40, 140, 1, 3, 140, 94, 139, 1,
-  3, 27, 136, 94, 1, 3, 27, 94, 140, 1, 3, 136, 28, 95, 1, 3, 95, 94, 136, 1,
-       3, 19, 130, 129, 1, 3, 19, 129, 141, 1, 3, 130, 36, 135, 1, 3, 135, 129, 130, 1,
-       3, 27, 140, 129, 1, 3, 27, 129, 135, 1, 3, 140, 40, 141, 1, 3, 141, 129, 140, 1,
- 3, 14, 114, 89, 1, 3, 14, 89, 90, 1, 3, 114, 33, 142, 1, 3, 142, 89, 114, 1,
-  3, 25, 143, 89, 1, 3, 25, 89, 142, 1, 3, 143, 26, 90, 1, 3, 90, 89, 143, 1,
-       3, 17, 131, 109, 1, 3, 17, 109, 110, 1, 3, 131, 37, 144, 1, 3, 144, 109, 131, 1,
-       3, 25, 142, 109, 1, 3, 25, 109, 144, 1, 3, 142, 33, 110, 1, 3, 110, 109, 142, 1,
-       3, 19, 141, 126, 1, 3, 19, 126, 127, 1, 3, 141, 40, 145, 1, 3, 145, 126, 141, 1,
-       3, 25, 144, 126, 1, 3, 25, 126, 145, 1, 3, 144, 37, 127, 1, 3, 127, 126, 144, 1,
-   3, 15, 97, 96, 1, 3, 15, 96, 139, 1, 3, 97, 26, 143, 1, 3, 143, 96, 97, 1,
-3, 25, 145, 96, 1, 3, 25, 96, 143, 1, 3, 145, 40, 139, 1, 3, 139, 96, 145, 1,
- 3, 12, 146, 75, 1, 3, 12, 75, 76, 1, 3, 146, 41, 148, 1, 3, 148, 75, 146, 1,
-  3, 21, 149, 75, 1, 3, 21, 75, 148, 1, 3, 149, 22, 76, 1, 3, 76, 75, 149, 1,
-3, 8, 151, 147, 1, 3, 8, 147, 155, 1, 3, 151, 43, 153, 1, 3, 153, 147, 151, 1,
-       3, 153, 21, 148, 1, 3, 148, 147, 153, 1, 3, 41, 155, 147, 1, 3, 41, 147, 148, 1,
-       3, 11, 157, 152, 1, 3, 11, 152, 160, 1, 3, 44, 158, 152, 1, 3, 44, 152, 157, 1,
-       3, 158, 21, 153, 1, 3, 153, 152, 158, 1, 3, 153, 43, 160, 1, 3, 160, 152, 153, 1,
-   3, 13, 88, 87, 1, 3, 13, 87, 161, 1, 3, 88, 22, 149, 1, 3, 149, 87, 88, 1,
-3, 21, 158, 87, 1, 3, 21, 87, 149, 1, 3, 158, 44, 161, 1, 3, 161, 87, 158, 1,
-       3, 18, 162, 132, 1, 3, 18, 132, 133, 1, 3, 162, 45, 164, 1, 3, 164, 132, 162, 1,
-       3, 38, 165, 132, 1, 3, 38, 132, 164, 1, 3, 165, 39, 133, 1, 3, 133, 132, 165, 1,
-       3, 170, 9, 167, 1, 3, 167, 163, 170, 1, 3, 47, 168, 163, 1, 3, 47, 163, 167, 1,
-       3, 168, 38, 164, 1, 3, 164, 163, 168, 1, 3, 45, 170, 163, 1, 3, 45, 163, 164, 1,
-3, 8, 155, 154, 1, 3, 8, 154, 173, 1, 3, 155, 41, 171, 1, 3, 171, 154, 155, 1,
-       3, 38, 168, 154, 1, 3, 38, 154, 171, 1, 3, 168, 47, 173, 1, 3, 173, 154, 168, 1,
-       3, 146, 12, 138, 1, 3, 138, 137, 146, 1, 3, 39, 165, 137, 1, 3, 39, 137, 138, 1,
-       3, 165, 38, 171, 1, 3, 171, 137, 165, 1, 3, 41, 146, 137, 1, 3, 41, 137, 171, 1,
-       3, 16, 108, 107, 1, 3, 16, 107, 177, 1, 3, 108, 30, 174, 1, 3, 174, 107, 108, 1,
-       3, 29, 176, 107, 1, 3, 29, 107, 174, 1, 3, 176, 50, 177, 1, 3, 177, 107, 176, 1,
-  3, 99, 13, 161, 1, 3, 161, 98, 99, 1, 3, 44, 178, 98, 1, 3, 44, 98, 161, 1,
- 3, 178, 29, 174, 1, 3, 174, 98, 178, 1, 3, 30, 99, 98, 1, 3, 30, 98, 174, 1,
-       3, 11, 180, 156, 1, 3, 11, 156, 157, 1, 3, 180, 49, 181, 1, 3, 181, 156, 180, 1,
-       3, 29, 178, 156, 1, 3, 29, 156, 181, 1, 3, 178, 44, 157, 1, 3, 157, 156, 178, 1,
-       3, 185, 10, 183, 1, 3, 183, 175, 185, 1, 3, 50, 176, 175, 1, 3, 50, 175, 183, 1,
-       3, 176, 29, 181, 1, 3, 181, 175, 176, 1, 3, 49, 185, 175, 1, 3, 49, 175, 181, 1,
-       3, 18, 125, 124, 1, 3, 18, 124, 162, 1, 3, 125, 35, 186, 1, 3, 186, 124, 125, 1,
-       3, 34, 187, 124, 1, 3, 34, 124, 186, 1, 3, 187, 45, 162, 1, 3, 162, 124, 187, 1,
-       3, 16, 177, 115, 1, 3, 16, 115, 116, 1, 3, 177, 50, 188, 1, 3, 188, 115, 177, 1,
-       3, 34, 186, 115, 1, 3, 34, 115, 188, 1, 3, 186, 35, 116, 1, 3, 116, 115, 186, 1,
-       3, 183, 10, 190, 1, 3, 190, 182, 183, 1, 3, 52, 191, 182, 1, 3, 52, 182, 190, 1,
-       3, 191, 34, 188, 1, 3, 188, 182, 191, 1, 3, 50, 183, 182, 1, 3, 50, 182, 188, 1,
-       3, 193, 9, 170, 1, 3, 170, 169, 193, 1, 3, 45, 187, 169, 1, 3, 45, 169, 170, 1,
-       3, 187, 34, 191, 1, 3, 191, 169, 187, 1, 3, 52, 193, 169, 1, 3, 52, 169, 191, 1,
-       3, 201, 1, 196, 1, 3, 196, 194, 201, 1, 3, 54, 198, 194, 1, 3, 54, 194, 196, 1,
-       3, 198, 46, 199, 1, 3, 199, 194, 198, 1, 3, 56, 201, 194, 1, 3, 56, 194, 199, 1,
-       3, 206, 3, 203, 1, 3, 203, 197, 206, 1, 3, 55, 204, 197, 1, 3, 55, 197, 203, 1,
-       3, 46, 198, 197, 1, 3, 46, 197, 204, 1, 3, 198, 54, 206, 1, 3, 206, 197, 198, 1,
-       3, 208, 8, 173, 1, 3, 173, 172, 208, 1, 3, 47, 207, 172, 1, 3, 47, 172, 173, 1,
-       3, 207, 46, 204, 1, 3, 204, 172, 207, 1, 3, 204, 55, 208, 1, 3, 208, 172, 204, 1,
-3, 9, 209, 166, 1, 3, 9, 166, 167, 1, 3, 209, 56, 199, 1, 3, 199, 166, 209, 1,
-       3, 46, 207, 166, 1, 3, 46, 166, 199, 1, 3, 207, 47, 167, 1, 3, 167, 166, 207, 1,
-3, 1, 201, 200, 1, 3, 1, 200, 214, 1, 3, 201, 56, 210, 1, 3, 210, 200, 201, 1,
-       3, 51, 212, 200, 1, 3, 51, 200, 210, 1, 3, 212, 59, 214, 1, 3, 214, 200, 212, 1,
-       3, 209, 9, 193, 1, 3, 193, 192, 209, 1, 3, 193, 52, 215, 1, 3, 215, 192, 193, 1,
-       3, 215, 51, 210, 1, 3, 210, 192, 215, 1, 3, 56, 209, 192, 1, 3, 56, 192, 210, 1,
-       3, 190, 10, 216, 1, 3, 216, 189, 190, 1, 3, 57, 217, 189, 1, 3, 57, 189, 216, 1,
-       3, 217, 51, 215, 1, 3, 215, 189, 217, 1, 3, 215, 52, 190, 1, 3, 190, 189, 215, 1,
-3, 0, 219, 211, 1, 3, 0, 211, 221, 1, 3, 219, 59, 212, 1, 3, 212, 211, 219, 1,
-       3, 51, 217, 211, 1, 3, 51, 211, 212, 1, 3, 217, 57, 221, 1, 3, 221, 211, 217, 1,
-       3, 226, 0, 221, 1, 3, 221, 220, 226, 1, 3, 57, 222, 220, 1, 3, 57, 220, 221, 1,
-       3, 222, 48, 224, 1, 3, 224, 220, 222, 1, 3, 62, 226, 220, 1, 3, 62, 220, 224, 1,
-       3, 10, 185, 184, 1, 3, 10, 184, 216, 1, 3, 185, 49, 227, 1, 3, 227, 184, 185, 1,
-       3, 48, 222, 184, 1, 3, 48, 184, 227, 1, 3, 222, 57, 216, 1, 3, 216, 184, 222, 1,
-       3, 180, 11, 228, 1, 3, 228, 179, 180, 1, 3, 228, 60, 229, 1, 3, 229, 179, 228, 1,
-       3, 229, 48, 227, 1, 3, 227, 179, 229, 1, 3, 49, 180, 179, 1, 3, 49, 179, 227, 1,
-       3, 233, 2, 231, 1, 3, 231, 223, 233, 1, 3, 231, 62, 224, 1, 3, 224, 223, 231, 1,
-       3, 48, 229, 223, 1, 3, 48, 223, 224, 1, 3, 60, 233, 223, 1, 3, 60, 223, 229, 1,
-3, 2, 233, 232, 1, 3, 2, 232, 237, 1, 3, 60, 234, 232, 1, 3, 60, 232, 233, 1,
-       3, 42, 235, 232, 1, 3, 42, 232, 234, 1, 3, 235, 64, 237, 1, 3, 237, 232, 235, 1,
-       3, 11, 160, 159, 1, 3, 11, 159, 228, 1, 3, 160, 43, 238, 1, 3, 238, 159, 160, 1,
-       3, 42, 234, 159, 1, 3, 42, 159, 238, 1, 3, 234, 60, 228, 1, 3, 228, 159, 234, 1,
-3, 8, 208, 150, 1, 3, 8, 150, 151, 1, 3, 208, 55, 239, 1, 3, 239, 150, 208, 1,
-       3, 42, 238, 150, 1, 3, 42, 150, 239, 1, 3, 238, 43, 151, 1, 3, 151, 150, 238, 1,
-3, 3, 241, 202, 1, 3, 3, 202, 203, 1, 3, 241, 64, 235, 1, 3, 235, 202, 241, 1,
-       3, 42, 239, 202, 1, 3, 42, 202, 235, 1, 3, 55, 203, 202, 1, 3, 55, 202, 239, 1,
-       3, 245, 2, 237, 1, 3, 237, 236, 245, 1, 3, 64, 242, 236, 1, 3, 64, 236, 237, 1,
-       3, 242, 63, 244, 1, 3, 244, 236, 242, 1, 3, 68, 245, 236, 1, 3, 68, 236, 244, 1,
-       3, 241, 3, 246, 1, 3, 246, 240, 241, 1, 3, 65, 248, 240, 1, 3, 65, 240, 246, 1,
-       3, 248, 63, 242, 1, 3, 242, 240, 248, 1, 3, 64, 241, 240, 1, 3, 64, 240, 242, 1,
-3, 4, 250, 247, 1, 3, 4, 247, 253, 1, 3, 67, 251, 247, 1, 3, 67, 247, 250, 1,
-       3, 63, 248, 247, 1, 3, 63, 247, 251, 1, 3, 65, 253, 247, 1, 3, 65, 247, 248, 1,
-3, 7, 255, 243, 1, 3, 7, 243, 257, 1, 3, 68, 244, 243, 1, 3, 68, 243, 255, 1,
-       3, 63, 251, 243, 1, 3, 63, 243, 244, 1, 3, 67, 257, 243, 1, 3, 67, 243, 251, 1,
-3, 3, 206, 205, 1, 3, 3, 205, 246, 1, 3, 54, 258, 205, 1, 3, 54, 205, 206, 1,
-       3, 258, 53, 259, 1, 3, 259, 205, 258, 1, 3, 65, 246, 205, 1, 3, 65, 205, 259, 1,
-3, 1, 260, 195, 1, 3, 1, 195, 196, 1, 3, 260, 69, 262, 1, 3, 262, 195, 260, 1,
-       3, 53, 258, 195, 1, 3, 53, 195, 262, 1, 3, 258, 54, 196, 1, 3, 196, 195, 258, 1,
-       3, 267, 5, 264, 1, 3, 264, 261, 267, 1, 3, 70, 265, 261, 1, 3, 70, 261, 264, 1,
-       3, 53, 262, 261, 1, 3, 53, 261, 265, 1, 3, 262, 69, 267, 1, 3, 267, 261, 262, 1,
-3, 4, 253, 252, 1, 3, 4, 252, 268, 1, 3, 253, 65, 259, 1, 3, 259, 252, 253, 1,
-       3, 53, 265, 252, 1, 3, 53, 252, 259, 1, 3, 265, 70, 268, 1, 3, 268, 252, 265, 1,
-       3, 260, 1, 214, 1, 3, 214, 213, 260, 1, 3, 59, 269, 213, 1, 3, 59, 213, 214, 1,
-       3, 269, 58, 270, 1, 3, 270, 213, 269, 1, 3, 69, 260, 213, 1, 3, 69, 213, 270, 1,
-       3, 219, 0, 271, 1, 3, 271, 218, 219, 1, 3, 71, 273, 218, 1, 3, 71, 218, 271, 1,
-       3, 273, 58, 269, 1, 3, 269, 218, 273, 1, 3, 59, 219, 218, 1, 3, 59, 218, 269, 1,
-3, 6, 275, 272, 1, 3, 6, 272, 278, 1, 3, 72, 276, 272, 1, 3, 72, 272, 275, 1,
-       3, 58, 273, 272, 1, 3, 58, 272, 276, 1, 3, 273, 71, 278, 1, 3, 278, 272, 273, 1,
-3, 5, 267, 266, 1, 3, 5, 266, 279, 1, 3, 267, 69, 270, 1, 3, 270, 266, 267, 1,
-       3, 58, 276, 266, 1, 3, 58, 266, 270, 1, 3, 72, 279, 266, 1, 3, 72, 266, 276, 1,
-3, 0, 226, 225, 1, 3, 0, 225, 271, 1, 3, 226, 62, 280, 1, 3, 280, 225, 226, 1,
-       3, 61, 281, 225, 1, 3, 61, 225, 280, 1, 3, 281, 71, 271, 1, 3, 271, 225, 281, 1,
-3, 2, 245, 230, 1, 3, 2, 230, 231, 1, 3, 68, 282, 230, 1, 3, 68, 230, 245, 1,
-       3, 282, 61, 280, 1, 3, 280, 230, 282, 1, 3, 62, 231, 230, 1, 3, 62, 230, 280, 1,
-3, 7, 283, 254, 1, 3, 7, 254, 255, 1, 3, 283, 73, 284, 1, 3, 284, 254, 283, 1,
-       3, 61, 282, 254, 1, 3, 61, 254, 284, 1, 3, 282, 68, 255, 1, 3, 255, 254, 282, 1,
-       3, 285, 6, 278, 1, 3, 278, 277, 285, 1, 3, 278, 71, 281, 1, 3, 281, 277, 278, 1,
-       3, 61, 284, 277, 1, 3, 61, 277, 281, 1, 3, 73, 285, 277, 1, 3, 73, 277, 284, 1,
-3, 4, 268, 249, 1, 3, 4, 249, 250, 1, 3, 268, 70, 286, 1, 3, 286, 249, 268, 1,
-       3, 66, 287, 249, 1, 3, 66, 249, 286, 1, 3, 287, 67, 250, 1, 3, 250, 249, 287, 1,
-3, 5, 279, 263, 1, 3, 5, 263, 264, 1, 3, 279, 72, 288, 1, 3, 288, 263, 279, 1,
-       3, 66, 286, 263, 1, 3, 66, 263, 288, 1, 3, 286, 70, 264, 1, 3, 264, 263, 286, 1,
-3, 6, 285, 274, 1, 3, 6, 274, 275, 1, 3, 285, 73, 289, 1, 3, 289, 274, 285, 1,
-       3, 66, 288, 274, 1, 3, 66, 274, 289, 1, 3, 288, 72, 275, 1, 3, 275, 274, 288, 1,
-3, 7, 257, 256, 1, 3, 7, 256, 283, 1, 3, 257, 67, 287, 1, 3, 287, 256, 257, 1,
-       3, 66, 289, 256, 1, 3, 66, 256, 287, 1, 3, 289, 73, 283, 1, 3, 283, 256, 289, 1,
-
-       0
-};
-
-struct lwo  LWO_s1_4 =
-{
-       290,                    /* number of points */
-       s1_4_PNTS, s1_4_normals, s1_4_POLS, 0L
-};
-
-#endif /* USE_GL */
-
-/* End of s1_4.c */
diff --git a/hacks/glx/s1_5.c b/hacks/glx/s1_5.c
deleted file mode 100644 (file)
index 53cd0bf..0000000
+++ /dev/null
@@ -1,1057 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)s1_5.c       4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Points, polygons, and normal vectors to render "s1_5" in 3D.
- *
- * Generated by lw2ogl.  Link this with your program but do
- * not edit by hand.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include "buildlwo.h"
-
-static GLfloat s1_5_PNTS[] =
-{
-       (GLfloat) 1.333479, (GLfloat) - 0.188456, (GLfloat) - 0.340079,
-       (GLfloat) 1.333479, (GLfloat) - 0.188456, (GLfloat) - 0.659921,
-       (GLfloat) 1.633195, (GLfloat) - 0.090616, (GLfloat) - 0.340079,
-       (GLfloat) 1.633195, (GLfloat) - 0.090616, (GLfloat) - 0.659921,
-       (GLfloat) 1.670754, (GLfloat) - 0.221475, (GLfloat) - 0.638667,
-       (GLfloat) 1.402870, (GLfloat) - 0.293254, (GLfloat) - 0.638667,
-       (GLfloat) 1.402870, (GLfloat) - 0.293254, (GLfloat) - 0.361333,
-       (GLfloat) 1.670754, (GLfloat) - 0.221475, (GLfloat) - 0.361333,
-       (GLfloat) 1.332183, (GLfloat) 0.266938, (GLfloat) - 0.619965,
-       (GLfloat) 1.190836, (GLfloat) 0.100363, (GLfloat) - 0.619965,
-       (GLfloat) 1.190836, (GLfloat) 0.100363, (GLfloat) - 0.380035,
-       (GLfloat) 1.332183, (GLfloat) 0.266938, (GLfloat) - 0.380035,
-       (GLfloat) 0.995497, (GLfloat) 0.593044, (GLfloat) - 0.659921,
-       (GLfloat) 0.995497, (GLfloat) 0.593044, (GLfloat) - 0.340079,
-       (GLfloat) 0.874620, (GLfloat) 0.619745, (GLfloat) - 0.361333,
-       (GLfloat) 0.874620, (GLfloat) 0.619745, (GLfloat) - 0.638667,
-       (GLfloat) 0.974692, (GLfloat) 0.281188, (GLfloat) - 0.340079,
-       (GLfloat) 0.874620, (GLfloat) 0.342412, (GLfloat) - 0.361333,
-       (GLfloat) 0.974692, (GLfloat) 0.281188, (GLfloat) - 0.659921,
-       (GLfloat) 0.874620, (GLfloat) 0.342412, (GLfloat) - 0.638667,
-       (GLfloat) 0.906869, (GLfloat) 0.713633, (GLfloat) - 0.500000,
-       (GLfloat) 1.161726, (GLfloat) 0.497346, (GLfloat) - 0.500000,
-       (GLfloat) 0.999280, (GLfloat) 0.649745, (GLfloat) - 0.500000,
-       (GLfloat) 0.905451, (GLfloat) 0.476683, (GLfloat) - 0.262505,
-       (GLfloat) 0.907098, (GLfloat) 0.650057, (GLfloat) - 0.326227,
-       (GLfloat) 0.856159, (GLfloat) 0.481079, (GLfloat) - 0.500000,
-       (GLfloat) 0.867922, (GLfloat) 0.658641, (GLfloat) - 0.500000,
-       (GLfloat) 0.905451, (GLfloat) 0.476683, (GLfloat) - 0.737495,
-       (GLfloat) 0.907098, (GLfloat) 0.650057, (GLfloat) - 0.673773,
-       (GLfloat) 1.114357, (GLfloat) 0.334395, (GLfloat) - 0.317564,
-       (GLfloat) 0.985095, (GLfloat) 0.437116, (GLfloat) - 0.281926,
-       (GLfloat) 0.904032, (GLfloat) 0.239732, (GLfloat) - 0.500000,
-       (GLfloat) 0.905018, (GLfloat) 0.303308, (GLfloat) - 0.326227,
-       (GLfloat) 0.867922, (GLfloat) 0.481079, (GLfloat) - 0.322437,
-       (GLfloat) 1.066987, (GLfloat) 0.171444, (GLfloat) - 0.500000,
-       (GLfloat) 0.970910, (GLfloat) 0.224487, (GLfloat) - 0.500000,
-       (GLfloat) 0.905018, (GLfloat) 0.303308, (GLfloat) - 0.673773,
-       (GLfloat) 0.867922, (GLfloat) 0.303516, (GLfloat) - 0.500000,
-       (GLfloat) 1.114357, (GLfloat) 0.334395, (GLfloat) - 0.682436,
-       (GLfloat) 0.985095, (GLfloat) 0.437116, (GLfloat) - 0.718074,
-       (GLfloat) 0.867922, (GLfloat) 0.481079, (GLfloat) - 0.677562,
-       (GLfloat) 1.149095, (GLfloat) 0.453892, (GLfloat) - 0.633787,
-       (GLfloat) 1.544380, (GLfloat) 0.092162, (GLfloat) - 0.500000,
-       (GLfloat) 1.357882, (GLfloat) 0.297224, (GLfloat) - 0.500000,
-       (GLfloat) 1.149095, (GLfloat) 0.453892, (GLfloat) - 0.366213,
-       (GLfloat) 1.079619, (GLfloat) 0.214898, (GLfloat) - 0.633787,
-       (GLfloat) 1.391060, (GLfloat) 0.010509, (GLfloat) - 0.682436,
-       (GLfloat) 1.261509, (GLfloat) 0.183650, (GLfloat) - 0.663589,
-       (GLfloat) 1.391060, (GLfloat) 0.010509, (GLfloat) - 0.317564,
-       (GLfloat) 1.261509, (GLfloat) 0.183650, (GLfloat) - 0.336411,
-       (GLfloat) 1.079619, (GLfloat) 0.214898, (GLfloat) - 0.366213,
-       (GLfloat) 1.237741, (GLfloat) - 0.071143, (GLfloat) - 0.500000,
-       (GLfloat) 1.165137, (GLfloat) 0.070077, (GLfloat) - 0.500000,
-       (GLfloat) 1.526344, (GLfloat) - 0.226473, (GLfloat) - 0.737495,
-       (GLfloat) 1.483337, (GLfloat) - 0.139536, (GLfloat) - 0.718074,
-       (GLfloat) 1.503495, (GLfloat) 0.070388, (GLfloat) - 0.633787,
-       (GLfloat) 1.278626, (GLfloat) - 0.049369, (GLfloat) - 0.633787,
-       (GLfloat) 1.278626, (GLfloat) - 0.049369, (GLfloat) - 0.366213,
-       (GLfloat) 1.297571, (GLfloat) - 0.288968, (GLfloat) - 0.500000,
-       (GLfloat) 1.278985, (GLfloat) - 0.206245, (GLfloat) - 0.500000,
-       (GLfloat) 1.503495, (GLfloat) 0.070388, (GLfloat) - 0.366213,
-       (GLfloat) 1.526344, (GLfloat) - 0.226473, (GLfloat) - 0.262505,
-       (GLfloat) 1.483337, (GLfloat) - 0.139536, (GLfloat) - 0.281926,
-       (GLfloat) 1.755118, (GLfloat) - 0.163978, (GLfloat) - 0.500000,
-       (GLfloat) 1.687689, (GLfloat) - 0.072827, (GLfloat) - 0.500000,
-       (GLfloat) 1.693578, (GLfloat) - 0.180157, (GLfloat) - 0.673773,
-       (GLfloat) 1.541590, (GLfloat) - 0.275196, (GLfloat) - 0.500000,
-       (GLfloat) 1.710058, (GLfloat) - 0.217878, (GLfloat) - 0.500000,
-       (GLfloat) 1.693578, (GLfloat) - 0.180157, (GLfloat) - 0.326227,
-       (GLfloat) 1.358796, (GLfloat) - 0.271614, (GLfloat) - 0.673773,
-       (GLfloat) 1.538546, (GLfloat) - 0.263835, (GLfloat) - 0.677562,
-       (GLfloat) 1.358796, (GLfloat) - 0.271614, (GLfloat) - 0.326227,
-       (GLfloat) 1.367033, (GLfloat) - 0.309791, (GLfloat) - 0.500000,
-       (GLfloat) 1.538546, (GLfloat) - 0.263835, (GLfloat) - 0.322437,
-       (GLfloat) 0.944384, (GLfloat) 0.679375, (GLfloat) - 0.593392,
-       (GLfloat) 1.071585, (GLfloat) 0.569561, (GLfloat) - 0.579959,
-       (GLfloat) 0.998334, (GLfloat) 0.635570, (GLfloat) - 0.587230,
-       (GLfloat) 0.944384, (GLfloat) 0.679375, (GLfloat) - 0.406608,
-       (GLfloat) 0.944762, (GLfloat) 0.694795, (GLfloat) - 0.500000,
-       (GLfloat) 0.883764, (GLfloat) 0.687079, (GLfloat) - 0.587500,
-       (GLfloat) 0.907078, (GLfloat) 0.697653, (GLfloat) - 0.594723,
-       (GLfloat) 0.941357, (GLfloat) 0.556014, (GLfloat) - 0.717914,
-       (GLfloat) 0.943249, (GLfloat) 0.633115, (GLfloat) - 0.671218,
-       (GLfloat) 0.941357, (GLfloat) 0.556014, (GLfloat) - 0.282086,
-       (GLfloat) 0.943249, (GLfloat) 0.633115, (GLfloat) - 0.328782,
-       (GLfloat) 0.883764, (GLfloat) 0.687079, (GLfloat) - 0.412500,
-       (GLfloat) 0.907078, (GLfloat) 0.697653, (GLfloat) - 0.405277,
-       (GLfloat) 1.071585, (GLfloat) 0.569561, (GLfloat) - 0.420041,
-       (GLfloat) 0.998334, (GLfloat) 0.635570, (GLfloat) - 0.412770,
-       (GLfloat) 0.861889, (GLfloat) 0.571579, (GLfloat) - 0.409500,
-       (GLfloat) 0.870135, (GLfloat) 0.645704, (GLfloat) - 0.417500,
-       (GLfloat) 0.882548, (GLfloat) 0.702579, (GLfloat) - 0.500000,
-       (GLfloat) 0.883764, (GLfloat) 0.568579, (GLfloat) - 0.294000,
-       (GLfloat) 0.884979, (GLfloat) 0.641954, (GLfloat) - 0.339125,
-       (GLfloat) 0.883764, (GLfloat) 0.568579, (GLfloat) - 0.706000,
-       (GLfloat) 0.884979, (GLfloat) 0.641954, (GLfloat) - 0.660875,
-       (GLfloat) 0.861889, (GLfloat) 0.571579, (GLfloat) - 0.590500,
-       (GLfloat) 0.870135, (GLfloat) 0.645704, (GLfloat) - 0.582500,
-       (GLfloat) 1.056455, (GLfloat) 0.468757, (GLfloat) - 0.313428,
-       (GLfloat) 0.990769, (GLfloat) 0.522168, (GLfloat) - 0.296464,
-       (GLfloat) 0.936818, (GLfloat) 0.370973, (GLfloat) - 0.282086,
-       (GLfloat) 0.939088, (GLfloat) 0.463494, (GLfloat) - 0.266520,
-       (GLfloat) 0.906322, (GLfloat) 0.571188, (GLfloat) - 0.278521,
-       (GLfloat) 0.933792, (GLfloat) 0.247612, (GLfloat) - 0.406608,
-       (GLfloat) 0.934927, (GLfloat) 0.293873, (GLfloat) - 0.328782,
-       (GLfloat) 0.883764, (GLfloat) 0.393579, (GLfloat) - 0.294000,
-       (GLfloat) 0.905187, (GLfloat) 0.382177, (GLfloat) - 0.278521,
-       (GLfloat) 1.033759, (GLfloat) 0.317550, (GLfloat) - 0.313428,
-       (GLfloat) 0.979421, (GLfloat) 0.352064, (GLfloat) - 0.296464,
-       (GLfloat) 0.861889, (GLfloat) 0.390579, (GLfloat) - 0.409500,
-       (GLfloat) 0.870135, (GLfloat) 0.398579, (GLfloat) - 0.335375,
-       (GLfloat) 0.882548, (GLfloat) 0.481079, (GLfloat) - 0.278500,
-       (GLfloat) 0.883764, (GLfloat) 0.275079, (GLfloat) - 0.412500,
-       (GLfloat) 0.884979, (GLfloat) 0.320204, (GLfloat) - 0.339125,
-       (GLfloat) 0.870135, (GLfloat) 0.563579, (GLfloat) - 0.335375,
-       (GLfloat) 1.018628, (GLfloat) 0.216746, (GLfloat) - 0.420041,
-       (GLfloat) 0.971855, (GLfloat) 0.238662, (GLfloat) - 0.412770,
-       (GLfloat) 0.933792, (GLfloat) 0.247612, (GLfloat) - 0.593392,
-       (GLfloat) 0.933414, (GLfloat) 0.232192, (GLfloat) - 0.500000,
-       (GLfloat) 0.904430, (GLfloat) 0.255712, (GLfloat) - 0.405277,
-       (GLfloat) 0.936818, (GLfloat) 0.370973, (GLfloat) - 0.717914,
-       (GLfloat) 0.934927, (GLfloat) 0.293873, (GLfloat) - 0.671218,
-       (GLfloat) 0.883764, (GLfloat) 0.275079, (GLfloat) - 0.587500,
-       (GLfloat) 0.904430, (GLfloat) 0.255712, (GLfloat) - 0.594723,
-       (GLfloat) 1.018628, (GLfloat) 0.216746, (GLfloat) - 0.579959,
-       (GLfloat) 0.971855, (GLfloat) 0.238662, (GLfloat) - 0.587230,
-       (GLfloat) 0.861889, (GLfloat) 0.390579, (GLfloat) - 0.590500,
-       (GLfloat) 0.870135, (GLfloat) 0.316454, (GLfloat) - 0.582500,
-       (GLfloat) 0.882548, (GLfloat) 0.259579, (GLfloat) - 0.500000,
-       (GLfloat) 0.883764, (GLfloat) 0.393579, (GLfloat) - 0.706000,
-       (GLfloat) 0.884979, (GLfloat) 0.320204, (GLfloat) - 0.660875,
-       (GLfloat) 0.870135, (GLfloat) 0.316454, (GLfloat) - 0.417500,
-       (GLfloat) 1.033759, (GLfloat) 0.317550, (GLfloat) - 0.686572,
-       (GLfloat) 0.979421, (GLfloat) 0.352064, (GLfloat) - 0.703536,
-       (GLfloat) 0.939088, (GLfloat) 0.463494, (GLfloat) - 0.733480,
-       (GLfloat) 0.905187, (GLfloat) 0.382177, (GLfloat) - 0.721479,
-       (GLfloat) 0.906322, (GLfloat) 0.571188, (GLfloat) - 0.721479,
-       (GLfloat) 1.056455, (GLfloat) 0.468757, (GLfloat) - 0.686572,
-       (GLfloat) 0.990769, (GLfloat) 0.522168, (GLfloat) - 0.703536,
-       (GLfloat) 0.870135, (GLfloat) 0.563579, (GLfloat) - 0.664625,
-       (GLfloat) 0.882548, (GLfloat) 0.481079, (GLfloat) - 0.721500,
-       (GLfloat) 0.870135, (GLfloat) 0.398579, (GLfloat) - 0.664625,
-       (GLfloat) 0.859111, (GLfloat) 0.481079, (GLfloat) - 0.402250,
-       (GLfloat) 0.859111, (GLfloat) 0.578829, (GLfloat) - 0.500000,
-       (GLfloat) 0.859111, (GLfloat) 0.383329, (GLfloat) - 0.500000,
-       (GLfloat) 0.859111, (GLfloat) 0.481079, (GLfloat) - 0.597750,
-       (GLfloat) 1.065911, (GLfloat) 0.531759, (GLfloat) - 0.646592,
-       (GLfloat) 1.253715, (GLfloat) 0.391468, (GLfloat) - 0.567669,
-       (GLfloat) 1.158568, (GLfloat) 0.486483, (GLfloat) - 0.572975,
-       (GLfloat) 1.073477, (GLfloat) 0.582162, (GLfloat) - 0.500000,
-       (GLfloat) 1.446226, (GLfloat) 0.186168, (GLfloat) - 0.567669,
-       (GLfloat) 1.351457, (GLfloat) 0.289652, (GLfloat) - 0.565436,
-       (GLfloat) 1.253715, (GLfloat) 0.391468, (GLfloat) - 0.432331,
-       (GLfloat) 1.258403, (GLfloat) 0.400600, (GLfloat) - 0.500000,
-       (GLfloat) 1.216209, (GLfloat) 0.318418, (GLfloat) - 0.657894,
-       (GLfloat) 1.239650, (GLfloat) 0.364075, (GLfloat) - 0.624059,
-       (GLfloat) 1.216209, (GLfloat) 0.318418, (GLfloat) - 0.342106,
-       (GLfloat) 1.239650, (GLfloat) 0.364075, (GLfloat) - 0.375941,
-       (GLfloat) 1.158568, (GLfloat) 0.486483, (GLfloat) - 0.427025,
-       (GLfloat) 1.446226, (GLfloat) 0.186168, (GLfloat) - 0.432331,
-       (GLfloat) 1.351457, (GLfloat) 0.289652, (GLfloat) - 0.434564,
-       (GLfloat) 1.065911, (GLfloat) 0.531759, (GLfloat) - 0.353408,
-       (GLfloat) 1.024302, (GLfloat) 0.254547, (GLfloat) - 0.646592,
-       (GLfloat) 1.159950, (GLfloat) 0.208844, (GLfloat) - 0.657894,
-       (GLfloat) 1.095409, (GLfloat) 0.269215, (GLfloat) - 0.670274,
-       (GLfloat) 1.045107, (GLfloat) 0.393153, (GLfloat) - 0.699898,
-       (GLfloat) 1.280017, (GLfloat) 0.059132, (GLfloat) - 0.657894,
-       (GLfloat) 1.222960, (GLfloat) 0.138221, (GLfloat) - 0.652683,
-       (GLfloat) 1.188080, (GLfloat) 0.263631, (GLfloat) - 0.669172,
-       (GLfloat) 1.122445, (GLfloat) 0.135794, (GLfloat) - 0.567669,
-       (GLfloat) 1.136509, (GLfloat) 0.163187, (GLfloat) - 0.624059,
-       (GLfloat) 1.133305, (GLfloat) 0.399575, (GLfloat) - 0.670274,
-       (GLfloat) 1.379742, (GLfloat) 0.135354, (GLfloat) - 0.657894,
-       (GLfloat) 1.300058, (GLfloat) 0.229080, (GLfloat) - 0.652683,
-       (GLfloat) 1.045107, (GLfloat) 0.393153, (GLfloat) - 0.300102,
-       (GLfloat) 1.159950, (GLfloat) 0.208844, (GLfloat) - 0.342106,
-       (GLfloat) 1.095409, (GLfloat) 0.269215, (GLfloat) - 0.329726,
-       (GLfloat) 1.024302, (GLfloat) 0.254547, (GLfloat) - 0.353408,
-       (GLfloat) 1.133305, (GLfloat) 0.399575, (GLfloat) - 0.329726,
-       (GLfloat) 1.379742, (GLfloat) 0.135354, (GLfloat) - 0.342106,
-       (GLfloat) 1.300058, (GLfloat) 0.229080, (GLfloat) - 0.347317,
-       (GLfloat) 1.188080, (GLfloat) 0.263631, (GLfloat) - 0.330828,
-       (GLfloat) 1.122445, (GLfloat) 0.135794, (GLfloat) - 0.432331,
-       (GLfloat) 1.136509, (GLfloat) 0.163187, (GLfloat) - 0.375941,
-       (GLfloat) 1.280017, (GLfloat) 0.059132, (GLfloat) - 0.342106,
-       (GLfloat) 1.222960, (GLfloat) 0.138221, (GLfloat) - 0.347317,
-       (GLfloat) 1.016736, (GLfloat) 0.204145, (GLfloat) - 0.500000,
-       (GLfloat) 1.070145, (GLfloat) 0.182308, (GLfloat) - 0.572975,
-       (GLfloat) 1.070145, (GLfloat) 0.182308, (GLfloat) - 0.427025,
-       (GLfloat) 1.213533, (GLfloat) 0.008318, (GLfloat) - 0.432331,
-       (GLfloat) 1.171562, (GLfloat) 0.077649, (GLfloat) - 0.434564,
-       (GLfloat) 1.117756, (GLfloat) 0.126662, (GLfloat) - 0.500000,
-       (GLfloat) 1.213533, (GLfloat) 0.008318, (GLfloat) - 0.567669,
-       (GLfloat) 1.171562, (GLfloat) 0.077649, (GLfloat) - 0.565436,
-       (GLfloat) 1.370721, (GLfloat) - 0.099359, (GLfloat) - 0.686572,
-       (GLfloat) 1.420971, (GLfloat) - 0.216460, (GLfloat) - 0.717914,
-       (GLfloat) 1.401596, (GLfloat) - 0.166219, (GLfloat) - 0.703536,
-       (GLfloat) 1.515124, (GLfloat) - 0.041541, (GLfloat) - 0.686572,
-       (GLfloat) 1.442923, (GLfloat) - 0.070450, (GLfloat) - 0.699898,
-       (GLfloat) 1.329732, (GLfloat) - 0.022152, (GLfloat) - 0.670274,
-       (GLfloat) 1.274453, (GLfloat) - 0.137904, (GLfloat) - 0.579959,
-       (GLfloat) 1.310553, (GLfloat) - 0.123450, (GLfloat) - 0.646592,
-       (GLfloat) 1.611392, (GLfloat) - 0.002996, (GLfloat) - 0.579959,
-       (GLfloat) 1.575292, (GLfloat) - 0.017451, (GLfloat) - 0.646592,
-       (GLfloat) 1.452388, (GLfloat) 0.043170, (GLfloat) - 0.670274,
-       (GLfloat) 1.599377, (GLfloat) - 0.164832, (GLfloat) - 0.717914,
-       (GLfloat) 1.565078, (GLfloat) - 0.112852, (GLfloat) - 0.703536,
-       (GLfloat) 1.329879, (GLfloat) 0.097243, (GLfloat) - 0.669172,
-       (GLfloat) 1.421294, (GLfloat) 0.167113, (GLfloat) - 0.624059,
-       (GLfloat) 1.238464, (GLfloat) 0.027373, (GLfloat) - 0.624059,
-       (GLfloat) 1.247962, (GLfloat) - 0.065700, (GLfloat) - 0.572975,
-       (GLfloat) 1.274453, (GLfloat) - 0.137904, (GLfloat) - 0.420041,
-       (GLfloat) 1.262419, (GLfloat) - 0.142723, (GLfloat) - 0.500000,
-       (GLfloat) 1.302034, (GLfloat) - 0.250880, (GLfloat) - 0.593392,
-       (GLfloat) 1.292609, (GLfloat) - 0.201797, (GLfloat) - 0.587230,
-       (GLfloat) 1.205222, (GLfloat) 0.001966, (GLfloat) - 0.500000,
-       (GLfloat) 1.238464, (GLfloat) 0.027373, (GLfloat) - 0.375941,
-       (GLfloat) 1.247962, (GLfloat) - 0.065700, (GLfloat) - 0.427025,
-       (GLfloat) 1.302034, (GLfloat) - 0.250880, (GLfloat) - 0.406608,
-       (GLfloat) 1.292609, (GLfloat) - 0.201797, (GLfloat) - 0.412770,
-       (GLfloat) 1.370721, (GLfloat) - 0.099359, (GLfloat) - 0.313428,
-       (GLfloat) 1.310553, (GLfloat) - 0.123450, (GLfloat) - 0.353408,
-       (GLfloat) 1.329732, (GLfloat) - 0.022152, (GLfloat) - 0.329726,
-       (GLfloat) 1.515124, (GLfloat) - 0.041541, (GLfloat) - 0.313428,
-       (GLfloat) 1.442923, (GLfloat) - 0.070450, (GLfloat) - 0.300102,
-       (GLfloat) 1.420971, (GLfloat) - 0.216460, (GLfloat) - 0.282086,
-       (GLfloat) 1.401596, (GLfloat) - 0.166219, (GLfloat) - 0.296464,
-       (GLfloat) 1.329879, (GLfloat) 0.097243, (GLfloat) - 0.330828,
-       (GLfloat) 1.421294, (GLfloat) 0.167113, (GLfloat) - 0.375941,
-       (GLfloat) 1.452388, (GLfloat) 0.043170, (GLfloat) - 0.329726,
-       (GLfloat) 1.599377, (GLfloat) - 0.164832, (GLfloat) - 0.282086,
-       (GLfloat) 1.565078, (GLfloat) - 0.112852, (GLfloat) - 0.296464,
-       (GLfloat) 1.611392, (GLfloat) - 0.002996, (GLfloat) - 0.420041,
-       (GLfloat) 1.575292, (GLfloat) - 0.017451, (GLfloat) - 0.353408,
-       (GLfloat) 1.534158, (GLfloat) 0.086718, (GLfloat) - 0.427025,
-       (GLfloat) 1.623426, (GLfloat) 0.001822, (GLfloat) - 0.500000,
-       (GLfloat) 1.718314, (GLfloat) - 0.130413, (GLfloat) - 0.406608,
-       (GLfloat) 1.674065, (GLfloat) - 0.077274, (GLfloat) - 0.412770,
-       (GLfloat) 1.454536, (GLfloat) 0.192520, (GLfloat) - 0.500000,
-       (GLfloat) 1.534158, (GLfloat) 0.086718, (GLfloat) - 0.572975,
-       (GLfloat) 1.718314, (GLfloat) - 0.130413, (GLfloat) - 0.593392,
-       (GLfloat) 1.674065, (GLfloat) - 0.077274, (GLfloat) - 0.587230,
-       (GLfloat) 1.733181, (GLfloat) - 0.126110, (GLfloat) - 0.500000,
-       (GLfloat) 1.733426, (GLfloat) - 0.195216, (GLfloat) - 0.412500,
-       (GLfloat) 1.739610, (GLfloat) - 0.167898, (GLfloat) - 0.405277,
-       (GLfloat) 1.673712, (GLfloat) - 0.143320, (GLfloat) - 0.328782,
-       (GLfloat) 1.673712, (GLfloat) - 0.143320, (GLfloat) - 0.671218,
-       (GLfloat) 1.733426, (GLfloat) - 0.195216, (GLfloat) - 0.587500,
-       (GLfloat) 1.739610, (GLfloat) - 0.167898, (GLfloat) - 0.594723,
-       (GLfloat) 1.627523, (GLfloat) - 0.246239, (GLfloat) - 0.590500,
-       (GLfloat) 1.696988, (GLfloat) - 0.219088, (GLfloat) - 0.582500,
-       (GLfloat) 1.748713, (GLfloat) - 0.192378, (GLfloat) - 0.500000,
-       (GLfloat) 1.618964, (GLfloat) - 0.225886, (GLfloat) - 0.706000,
-       (GLfloat) 1.689524, (GLfloat) - 0.205721, (GLfloat) - 0.660875,
-       (GLfloat) 1.618964, (GLfloat) - 0.225886, (GLfloat) - 0.294000,
-       (GLfloat) 1.689524, (GLfloat) - 0.205721, (GLfloat) - 0.339125,
-       (GLfloat) 1.627523, (GLfloat) - 0.246239, (GLfloat) - 0.409500,
-       (GLfloat) 1.696988, (GLfloat) - 0.219088, (GLfloat) - 0.417500,
-       (GLfloat) 1.510174, (GLfloat) - 0.190646, (GLfloat) - 0.733480,
-       (GLfloat) 1.617509, (GLfloat) - 0.201252, (GLfloat) - 0.721479,
-       (GLfloat) 1.346635, (GLfloat) - 0.237972, (GLfloat) - 0.671218,
-       (GLfloat) 1.449927, (GLfloat) - 0.271179, (GLfloat) - 0.706000,
-       (GLfloat) 1.435022, (GLfloat) - 0.251106, (GLfloat) - 0.721479,
-       (GLfloat) 1.452691, (GLfloat) - 0.293085, (GLfloat) - 0.590500,
-       (GLfloat) 1.458284, (GLfloat) - 0.283049, (GLfloat) - 0.664625,
-       (GLfloat) 1.534760, (GLfloat) - 0.249706, (GLfloat) - 0.721500,
-       (GLfloat) 1.335465, (GLfloat) - 0.301849, (GLfloat) - 0.587500,
-       (GLfloat) 1.378738, (GLfloat) - 0.288996, (GLfloat) - 0.660875,
-       (GLfloat) 1.617662, (GLfloat) - 0.240344, (GLfloat) - 0.664625,
-       (GLfloat) 1.287166, (GLfloat) - 0.255182, (GLfloat) - 0.500000,
-       (GLfloat) 1.312921, (GLfloat) - 0.284460, (GLfloat) - 0.594723,
-       (GLfloat) 1.346635, (GLfloat) - 0.237972, (GLfloat) - 0.328782,
-       (GLfloat) 1.335465, (GLfloat) - 0.301849, (GLfloat) - 0.412500,
-       (GLfloat) 1.312921, (GLfloat) - 0.284460, (GLfloat) - 0.405277,
-       (GLfloat) 1.452691, (GLfloat) - 0.293085, (GLfloat) - 0.409500,
-       (GLfloat) 1.378957, (GLfloat) - 0.304305, (GLfloat) - 0.417500,
-       (GLfloat) 1.320807, (GLfloat) - 0.307035, (GLfloat) - 0.500000,
-       (GLfloat) 1.449927, (GLfloat) - 0.271179, (GLfloat) - 0.294000,
-       (GLfloat) 1.378738, (GLfloat) - 0.288996, (GLfloat) - 0.339125,
-       (GLfloat) 1.378957, (GLfloat) - 0.304305, (GLfloat) - 0.582500,
-       (GLfloat) 1.510174, (GLfloat) - 0.190646, (GLfloat) - 0.266520,
-       (GLfloat) 1.435022, (GLfloat) - 0.251106, (GLfloat) - 0.278521,
-       (GLfloat) 1.617509, (GLfloat) - 0.201252, (GLfloat) - 0.278521,
-       (GLfloat) 1.617662, (GLfloat) - 0.240344, (GLfloat) - 0.335375,
-       (GLfloat) 1.534760, (GLfloat) - 0.249706, (GLfloat) - 0.278500,
-       (GLfloat) 1.458284, (GLfloat) - 0.283049, (GLfloat) - 0.335375,
-       (GLfloat) 1.540826, (GLfloat) - 0.272345, (GLfloat) - 0.597750,
-       (GLfloat) 1.635245, (GLfloat) - 0.247046, (GLfloat) - 0.500000,
-       (GLfloat) 1.446407, (GLfloat) - 0.297645, (GLfloat) - 0.500000,
-       (GLfloat) 1.540826, (GLfloat) - 0.272345, (GLfloat) - 0.402250,
-};
-
-static GLfloat s1_5_normals[] =
-{
-       (GLfloat) 0.600201, (GLfloat) 0.679955, (GLfloat) - 0.421211,
-       (GLfloat) 0.608958, (GLfloat) 0.677912, (GLfloat) - 0.411832,
-       (GLfloat) 0.631502, (GLfloat) 0.764222, (GLfloat) - 0.131036,
-       (GLfloat) 0.633915, (GLfloat) 0.762655, (GLfloat) - 0.128491,
-       (GLfloat) 0.439368, (GLfloat) 0.885949, (GLfloat) - 0.148491,
-       (GLfloat) 0.440253, (GLfloat) 0.885591, (GLfloat) - 0.148004,
-       (GLfloat) 0.401172, (GLfloat) 0.784782, (GLfloat) - 0.472417,
-       (GLfloat) 0.401344, (GLfloat) 0.784757, (GLfloat) - 0.472314,
-       (GLfloat) 0.608958, (GLfloat) 0.677912, (GLfloat) 0.411832,
-       (GLfloat) 0.600202, (GLfloat) 0.679955, (GLfloat) 0.421211,
-       (GLfloat) 0.401173, (GLfloat) 0.784782, (GLfloat) 0.472416,
-       (GLfloat) 0.401344, (GLfloat) 0.784757, (GLfloat) 0.472314,
-       (GLfloat) 0.440253, (GLfloat) 0.885591, (GLfloat) 0.148004,
-       (GLfloat) 0.439368, (GLfloat) 0.885949, (GLfloat) 0.148491,
-       (GLfloat) 0.631502, (GLfloat) 0.764222, (GLfloat) 0.131036,
-       (GLfloat) 0.633915, (GLfloat) 0.762655, (GLfloat) 0.128491,
-       (GLfloat) - 0.936578, (GLfloat) 0.283620, (GLfloat) 0.205866,
-       (GLfloat) - 0.947923, (GLfloat) 0.264055, (GLfloat) 0.178092,
-       (GLfloat) - 0.946548, (GLfloat) 0.315105, (GLfloat) 0.068965,
-       (GLfloat) - 0.949849, (GLfloat) 0.304029, (GLfloat) 0.073162,
-       (GLfloat) - 0.446501, (GLfloat) 0.882153, (GLfloat) 0.149808,
-       (GLfloat) - 0.408128, (GLfloat) 0.897939, (GLfloat) 0.164731,
-       (GLfloat) - 0.523643, (GLfloat) 0.729794, (GLfloat) 0.439543,
-       (GLfloat) - 0.481115, (GLfloat) 0.743166, (GLfloat) 0.465009,
-       (GLfloat) - 0.947923, (GLfloat) 0.264056, (GLfloat) - 0.178092,
-       (GLfloat) - 0.936578, (GLfloat) 0.283620, (GLfloat) - 0.205866,
-       (GLfloat) - 0.523644, (GLfloat) 0.729794, (GLfloat) - 0.439543,
-       (GLfloat) - 0.481115, (GLfloat) 0.743165, (GLfloat) - 0.465009,
-       (GLfloat) - 0.408128, (GLfloat) 0.897939, (GLfloat) - 0.164732,
-       (GLfloat) - 0.446501, (GLfloat) 0.882153, (GLfloat) - 0.149808,
-       (GLfloat) - 0.949849, (GLfloat) 0.304029, (GLfloat) - 0.073162,
-       (GLfloat) - 0.946548, (GLfloat) 0.315105, (GLfloat) - 0.068965,
-       (GLfloat) 0.509419, (GLfloat) 0.426080, (GLfloat) 0.747629,
-       (GLfloat) 0.498886, (GLfloat) 0.439986, (GLfloat) 0.746676,
-       (GLfloat) 0.381490, (GLfloat) 0.130964, (GLfloat) 0.915048,
-       (GLfloat) 0.367056, (GLfloat) 0.145561, (GLfloat) 0.918739,
-       (GLfloat) 0.169535, (GLfloat) 0.163155, (GLfloat) 0.971925,
-       (GLfloat) 0.178255, (GLfloat) 0.158993, (GLfloat) 0.971054,
-       (GLfloat) 0.289187, (GLfloat) 0.493355, (GLfloat) 0.820349,
-       (GLfloat) 0.295492, (GLfloat) 0.489598, (GLfloat) 0.820352,
-       (GLfloat) 0.072844, (GLfloat) - 0.526213, (GLfloat) 0.847227,
-       (GLfloat) 0.057982, (GLfloat) - 0.518213, (GLfloat) 0.853284,
-       (GLfloat) - 0.086528, (GLfloat) - 0.515478, (GLfloat) 0.852523,
-       (GLfloat) - 0.089419, (GLfloat) - 0.514364, (GLfloat) 0.852898,
-       (GLfloat) 0.052047, (GLfloat) - 0.167008, (GLfloat) 0.984581,
-       (GLfloat) 0.051822, (GLfloat) - 0.166918, (GLfloat) 0.984608,
-       (GLfloat) 0.242298, (GLfloat) - 0.179154, (GLfloat) 0.953517,
-       (GLfloat) 0.225634, (GLfloat) - 0.167006, (GLfloat) 0.959791,
-       (GLfloat) - 0.936578, (GLfloat) - 0.205866, (GLfloat) 0.283621,
-       (GLfloat) - 0.947923, (GLfloat) - 0.178092, (GLfloat) 0.264055,
-       (GLfloat) - 0.946548, (GLfloat) - 0.068965, (GLfloat) 0.315105,
-       (GLfloat) - 0.949849, (GLfloat) - 0.073162, (GLfloat) 0.304029,
-       (GLfloat) - 0.624880, (GLfloat) - 0.128758, (GLfloat) 0.770030,
-       (GLfloat) - 0.585268, (GLfloat) - 0.149307, (GLfloat) 0.796975,
-       (GLfloat) - 0.702251, (GLfloat) - 0.367360, (GLfloat) 0.609828,
-       (GLfloat) - 0.666949, (GLfloat) - 0.398310, (GLfloat) 0.629705,
-       (GLfloat) - 0.947923, (GLfloat) 0.178092, (GLfloat) 0.264055,
-       (GLfloat) - 0.936578, (GLfloat) 0.205866, (GLfloat) 0.283621,
-       (GLfloat) - 0.567140, (GLfloat) 0.430351, (GLfloat) 0.702247,
-       (GLfloat) - 0.540648, (GLfloat) 0.447171, (GLfloat) 0.712557,
-       (GLfloat) - 0.547735, (GLfloat) 0.144705, (GLfloat) 0.824043,
-       (GLfloat) - 0.571109, (GLfloat) 0.150867, (GLfloat) 0.806892,
-       (GLfloat) - 0.949849, (GLfloat) 0.073162, (GLfloat) 0.304029,
-       (GLfloat) - 0.946548, (GLfloat) 0.068965, (GLfloat) 0.315105,
-       (GLfloat) - 0.119299, (GLfloat) - 0.854945, (GLfloat) 0.504814,
-       (GLfloat) - 0.127336, (GLfloat) - 0.851794, (GLfloat) 0.508166,
-       (GLfloat) - 0.198715, (GLfloat) - 0.967024, (GLfloat) 0.159301,
-       (GLfloat) - 0.201251, (GLfloat) - 0.966323, (GLfloat) 0.160367,
-       (GLfloat) - 0.255603, (GLfloat) - 0.953134, (GLfloat) 0.161871,
-       (GLfloat) - 0.245412, (GLfloat) - 0.956309, (GLfloat) 0.158892,
-       (GLfloat) - 0.220327, (GLfloat) - 0.834921, (GLfloat) 0.504344,
-       (GLfloat) - 0.208789, (GLfloat) - 0.839323, (GLfloat) 0.501940,
-       (GLfloat) - 0.127336, (GLfloat) - 0.851794, (GLfloat) - 0.508166,
-       (GLfloat) - 0.119299, (GLfloat) - 0.854945, (GLfloat) - 0.504814,
-       (GLfloat) - 0.220327, (GLfloat) - 0.834921, (GLfloat) - 0.504344,
-       (GLfloat) - 0.208789, (GLfloat) - 0.839323, (GLfloat) - 0.501940,
-       (GLfloat) - 0.245412, (GLfloat) - 0.956309, (GLfloat) - 0.158892,
-       (GLfloat) - 0.255603, (GLfloat) - 0.953134, (GLfloat) - 0.161871,
-       (GLfloat) - 0.198715, (GLfloat) - 0.967024, (GLfloat) - 0.159301,
-       (GLfloat) - 0.201251, (GLfloat) - 0.966323, (GLfloat) - 0.160367,
-       (GLfloat) - 0.936578, (GLfloat) - 0.283621, (GLfloat) - 0.205866,
-       (GLfloat) - 0.947923, (GLfloat) - 0.264056, (GLfloat) - 0.178092,
-       (GLfloat) - 0.946548, (GLfloat) - 0.315105, (GLfloat) - 0.068965,
-       (GLfloat) - 0.949849, (GLfloat) - 0.304029, (GLfloat) - 0.073162,
-       (GLfloat) - 0.700995, (GLfloat) - 0.702740, (GLfloat) - 0.121503,
-       (GLfloat) - 0.672056, (GLfloat) - 0.727490, (GLfloat) - 0.138204,
-       (GLfloat) - 0.726368, (GLfloat) - 0.580019, (GLfloat) - 0.368737,
-       (GLfloat) - 0.700623, (GLfloat) - 0.608968, (GLfloat) - 0.371867,
-       (GLfloat) - 0.947923, (GLfloat) - 0.264056, (GLfloat) 0.178092,
-       (GLfloat) - 0.936578, (GLfloat) - 0.283621, (GLfloat) 0.205866,
-       (GLfloat) - 0.700623, (GLfloat) - 0.608968, (GLfloat) 0.371867,
-       (GLfloat) - 0.726368, (GLfloat) - 0.580019, (GLfloat) 0.368738,
-       (GLfloat) - 0.672055, (GLfloat) - 0.727490, (GLfloat) 0.138204,
-       (GLfloat) - 0.700994, (GLfloat) - 0.702740, (GLfloat) 0.121503,
-       (GLfloat) - 0.949849, (GLfloat) - 0.304029, (GLfloat) 0.073162,
-       (GLfloat) - 0.946548, (GLfloat) - 0.315105, (GLfloat) 0.068965,
-       (GLfloat) 0.072844, (GLfloat) - 0.526213, (GLfloat) - 0.847227,
-       (GLfloat) 0.057982, (GLfloat) - 0.518214, (GLfloat) - 0.853284,
-       (GLfloat) 0.225635, (GLfloat) - 0.167007, (GLfloat) - 0.959790,
-       (GLfloat) 0.242298, (GLfloat) - 0.179154, (GLfloat) - 0.953517,
-       (GLfloat) 0.052045, (GLfloat) - 0.167008, (GLfloat) - 0.984581,
-       (GLfloat) 0.051820, (GLfloat) - 0.166918, (GLfloat) - 0.984608,
-       (GLfloat) - 0.089420, (GLfloat) - 0.514364, (GLfloat) - 0.852897,
-       (GLfloat) - 0.086529, (GLfloat) - 0.515478, (GLfloat) - 0.852523,
-       (GLfloat) 0.498887, (GLfloat) 0.439986, (GLfloat) - 0.746675,
-       (GLfloat) 0.509419, (GLfloat) 0.426080, (GLfloat) - 0.747628,
-       (GLfloat) 0.289186, (GLfloat) 0.493355, (GLfloat) - 0.820349,
-       (GLfloat) 0.295491, (GLfloat) 0.489598, (GLfloat) - 0.820353,
-       (GLfloat) 0.178253, (GLfloat) 0.158994, (GLfloat) - 0.971054,
-       (GLfloat) 0.169534, (GLfloat) 0.163155, (GLfloat) - 0.971925,
-       (GLfloat) 0.381491, (GLfloat) 0.130963, (GLfloat) - 0.915048,
-       (GLfloat) 0.367056, (GLfloat) 0.145561, (GLfloat) - 0.918739,
-       (GLfloat) - 0.936578, (GLfloat) 0.205866, (GLfloat) - 0.283621,
-       (GLfloat) - 0.947923, (GLfloat) 0.178092, (GLfloat) - 0.264056,
-       (GLfloat) - 0.946548, (GLfloat) 0.068965, (GLfloat) - 0.315105,
-       (GLfloat) - 0.949849, (GLfloat) 0.073162, (GLfloat) - 0.304029,
-       (GLfloat) - 0.547736, (GLfloat) 0.144705, (GLfloat) - 0.824043,
-       (GLfloat) - 0.571109, (GLfloat) 0.150867, (GLfloat) - 0.806892,
-       (GLfloat) - 0.567141, (GLfloat) 0.430351, (GLfloat) - 0.702246,
-       (GLfloat) - 0.540648, (GLfloat) 0.447171, (GLfloat) - 0.712557,
-       (GLfloat) - 0.947923, (GLfloat) - 0.178092, (GLfloat) - 0.264056,
-       (GLfloat) - 0.936578, (GLfloat) - 0.205866, (GLfloat) - 0.283621,
-       (GLfloat) - 0.702251, (GLfloat) - 0.367360, (GLfloat) - 0.609828,
-       (GLfloat) - 0.666949, (GLfloat) - 0.398310, (GLfloat) - 0.629705,
-       (GLfloat) - 0.585269, (GLfloat) - 0.149307, (GLfloat) - 0.796974,
-       (GLfloat) - 0.624880, (GLfloat) - 0.128758, (GLfloat) - 0.770030,
-       (GLfloat) - 0.949849, (GLfloat) - 0.073162, (GLfloat) - 0.304029,
-       (GLfloat) - 0.946548, (GLfloat) - 0.068965, (GLfloat) - 0.315105,
-       (GLfloat) - 0.982944, (GLfloat) 0.135802, (GLfloat) 0.124011,
-       (GLfloat) - 0.982944, (GLfloat) 0.124011, (GLfloat) 0.135802,
-       (GLfloat) - 0.993006, (GLfloat) 0.043834, (GLfloat) 0.109621,
-       (GLfloat) - 0.992607, (GLfloat) 0.039656, (GLfloat) 0.114709,
-       (GLfloat) - 0.998998, (GLfloat) 0.030163, (GLfloat) 0.033079,
-       (GLfloat) - 0.998998, (GLfloat) 0.033079, (GLfloat) 0.030163,
-       (GLfloat) - 0.993006, (GLfloat) 0.109621, (GLfloat) 0.043834,
-       (GLfloat) - 0.992607, (GLfloat) 0.114709, (GLfloat) 0.039656,
-       (GLfloat) - 0.982944, (GLfloat) - 0.124011, (GLfloat) 0.135803,
-       (GLfloat) - 0.982944, (GLfloat) - 0.135802, (GLfloat) 0.124011,
-       (GLfloat) - 0.993006, (GLfloat) - 0.109621, (GLfloat) 0.043834,
-       (GLfloat) - 0.992607, (GLfloat) - 0.114709, (GLfloat) 0.039656,
-       (GLfloat) - 0.998998, (GLfloat) - 0.033079, (GLfloat) 0.030163,
-       (GLfloat) - 0.998998, (GLfloat) - 0.030163, (GLfloat) 0.033079,
-       (GLfloat) - 0.993006, (GLfloat) - 0.043834, (GLfloat) 0.109621,
-       (GLfloat) - 0.992607, (GLfloat) - 0.039656, (GLfloat) 0.114709,
-       (GLfloat) - 0.982944, (GLfloat) - 0.135802, (GLfloat) - 0.124011,
-       (GLfloat) - 0.982944, (GLfloat) - 0.124011, (GLfloat) - 0.135802,
-       (GLfloat) - 0.993006, (GLfloat) - 0.043834, (GLfloat) - 0.109621,
-       (GLfloat) - 0.992607, (GLfloat) - 0.039656, (GLfloat) - 0.114709,
-       (GLfloat) - 0.998998, (GLfloat) - 0.030163, (GLfloat) - 0.033079,
-       (GLfloat) - 0.998998, (GLfloat) - 0.033079, (GLfloat) - 0.030163,
-       (GLfloat) - 0.993006, (GLfloat) - 0.109621, (GLfloat) - 0.043834,
-       (GLfloat) - 0.992607, (GLfloat) - 0.114709, (GLfloat) - 0.039656,
-       (GLfloat) - 0.982944, (GLfloat) 0.124011, (GLfloat) - 0.135802,
-       (GLfloat) - 0.982944, (GLfloat) 0.135802, (GLfloat) - 0.124011,
-       (GLfloat) - 0.993006, (GLfloat) 0.109621, (GLfloat) - 0.043834,
-       (GLfloat) - 0.992607, (GLfloat) 0.114709, (GLfloat) - 0.039656,
-       (GLfloat) - 0.998998, (GLfloat) 0.033079, (GLfloat) - 0.030163,
-       (GLfloat) - 0.998998, (GLfloat) 0.030163, (GLfloat) - 0.033079,
-       (GLfloat) - 0.993006, (GLfloat) 0.043834, (GLfloat) - 0.109621,
-       (GLfloat) - 0.992607, (GLfloat) 0.039656, (GLfloat) - 0.114709,
-       (GLfloat) 0.642600, (GLfloat) 0.650149, (GLfloat) - 0.405429,
-       (GLfloat) 0.629315, (GLfloat) 0.651735, (GLfloat) - 0.423326,
-       (GLfloat) 0.650102, (GLfloat) 0.622930, (GLfloat) - 0.435116,
-       (GLfloat) 0.644794, (GLfloat) 0.639958, (GLfloat) - 0.417963,
-       (GLfloat) 0.686498, (GLfloat) 0.714292, (GLfloat) - 0.136042,
-       (GLfloat) 0.690339, (GLfloat) 0.711978, (GLfloat) - 0.128528,
-       (GLfloat) 0.670965, (GLfloat) 0.730702, (GLfloat) - 0.126017,
-       (GLfloat) 0.667564, (GLfloat) 0.732887, (GLfloat) - 0.131284,
-       (GLfloat) 0.646461, (GLfloat) 0.595725, (GLfloat) - 0.476656,
-       (GLfloat) 0.646365, (GLfloat) 0.610461, (GLfloat) - 0.457766,
-       (GLfloat) 0.713253, (GLfloat) 0.686364, (GLfloat) - 0.142034,
-       (GLfloat) 0.714947, (GLfloat) 0.683066, (GLfloat) - 0.149235,
-       (GLfloat) 0.700923, (GLfloat) 0.700421, (GLfloat) - 0.134601,
-       (GLfloat) 0.703355, (GLfloat) 0.696368, (GLfloat) - 0.142698,
-       (GLfloat) 0.650658, (GLfloat) 0.606520, (GLfloat) - 0.456922,
-       (GLfloat) 0.648063, (GLfloat) 0.624636, (GLfloat) - 0.435712,
-       (GLfloat) 0.646461, (GLfloat) 0.595725, (GLfloat) 0.476655,
-       (GLfloat) 0.646365, (GLfloat) 0.610461, (GLfloat) 0.457766,
-       (GLfloat) 0.648063, (GLfloat) 0.624636, (GLfloat) 0.435712,
-       (GLfloat) 0.650658, (GLfloat) 0.606520, (GLfloat) 0.456922,
-       (GLfloat) 0.700923, (GLfloat) 0.700421, (GLfloat) 0.134601,
-       (GLfloat) 0.703355, (GLfloat) 0.696368, (GLfloat) 0.142698,
-       (GLfloat) 0.714947, (GLfloat) 0.683066, (GLfloat) 0.149235,
-       (GLfloat) 0.713253, (GLfloat) 0.686364, (GLfloat) 0.142034,
-       (GLfloat) 0.642600, (GLfloat) 0.650149, (GLfloat) 0.405428,
-       (GLfloat) 0.629314, (GLfloat) 0.651735, (GLfloat) 0.423326,
-       (GLfloat) 0.667564, (GLfloat) 0.732887, (GLfloat) 0.131284,
-       (GLfloat) 0.670965, (GLfloat) 0.730702, (GLfloat) 0.126017,
-       (GLfloat) 0.686498, (GLfloat) 0.714292, (GLfloat) 0.136042,
-       (GLfloat) 0.690339, (GLfloat) 0.711978, (GLfloat) 0.128528,
-       (GLfloat) 0.650102, (GLfloat) 0.622930, (GLfloat) 0.435116,
-       (GLfloat) 0.644795, (GLfloat) 0.639958, (GLfloat) 0.417963,
-       (GLfloat) - 0.056496, (GLfloat) - 0.528883, (GLfloat) - 0.846813,
-       (GLfloat) - 0.064290, (GLfloat) - 0.519887, (GLfloat) - 0.851812,
-       (GLfloat) - 0.173805, (GLfloat) - 0.513816, (GLfloat) - 0.840110,
-       (GLfloat) - 0.175837, (GLfloat) - 0.508498, (GLfloat) - 0.842918,
-       (GLfloat) 0.089052, (GLfloat) - 0.185853, (GLfloat) - 0.978534,
-       (GLfloat) 0.093599, (GLfloat) - 0.208853, (GLfloat) - 0.973458,
-       (GLfloat) 0.164361, (GLfloat) - 0.176843, (GLfloat) - 0.970418,
-       (GLfloat) 0.176320, (GLfloat) - 0.196482, (GLfloat) - 0.964524,
-       (GLfloat) - 0.389065, (GLfloat) - 0.390805, (GLfloat) - 0.834206,
-       (GLfloat) - 0.391186, (GLfloat) - 0.409817, (GLfloat) - 0.824029,
-       (GLfloat) - 0.093477, (GLfloat) - 0.154476, (GLfloat) - 0.983565,
-       (GLfloat) - 0.093921, (GLfloat) - 0.156341, (GLfloat) - 0.983228,
-       (GLfloat) 0.000626, (GLfloat) - 0.183607, (GLfloat) - 0.983000,
-       (GLfloat) - 0.000487, (GLfloat) - 0.201385, (GLfloat) - 0.979512,
-       (GLfloat) - 0.285892, (GLfloat) - 0.471460, (GLfloat) - 0.834261,
-       (GLfloat) - 0.285514, (GLfloat) - 0.475831, (GLfloat) - 0.831905,
-       (GLfloat) 0.435732, (GLfloat) 0.380700, (GLfloat) - 0.815601,
-       (GLfloat) 0.428982, (GLfloat) 0.354155, (GLfloat) - 0.830993,
-       (GLfloat) 0.473609, (GLfloat) 0.392091, (GLfloat) - 0.788643,
-       (GLfloat) 0.469979, (GLfloat) 0.356952, (GLfloat) - 0.807283,
-       (GLfloat) 0.244505, (GLfloat) 0.073495, (GLfloat) - 0.966859,
-       (GLfloat) 0.248781, (GLfloat) 0.107298, (GLfloat) - 0.962598,
-       (GLfloat) 0.172068, (GLfloat) 0.089497, (GLfloat) - 0.981011,
-       (GLfloat) 0.177919, (GLfloat) 0.109952, (GLfloat) - 0.977883,
-       (GLfloat) 0.511512, (GLfloat) 0.425325, (GLfloat) - 0.746629,
-       (GLfloat) 0.520411, (GLfloat) 0.400470, (GLfloat) - 0.754185,
-       (GLfloat) 0.360534, (GLfloat) 0.109169, (GLfloat) - 0.926336,
-       (GLfloat) 0.349374, (GLfloat) 0.135180, (GLfloat) - 0.927181,
-       (GLfloat) 0.311593, (GLfloat) 0.086000, (GLfloat) - 0.946316,
-       (GLfloat) 0.308233, (GLfloat) 0.120081, (GLfloat) - 0.943702,
-       (GLfloat) 0.500412, (GLfloat) 0.409092, (GLfloat) - 0.763041,
-       (GLfloat) 0.503536, (GLfloat) 0.376115, (GLfloat) - 0.777811,
-       (GLfloat) - 0.064290, (GLfloat) - 0.519886, (GLfloat) 0.851813,
-       (GLfloat) - 0.056496, (GLfloat) - 0.528883, (GLfloat) 0.846813,
-       (GLfloat) 0.164361, (GLfloat) - 0.176843, (GLfloat) 0.970418,
-       (GLfloat) 0.176319, (GLfloat) - 0.196482, (GLfloat) 0.964524,
-       (GLfloat) 0.093599, (GLfloat) - 0.208853, (GLfloat) 0.973458,
-       (GLfloat) 0.089052, (GLfloat) - 0.185852, (GLfloat) 0.978534,
-       (GLfloat) - 0.173805, (GLfloat) - 0.513817, (GLfloat) 0.840110,
-       (GLfloat) - 0.175837, (GLfloat) - 0.508498, (GLfloat) 0.842918,
-       (GLfloat) 0.511512, (GLfloat) 0.425325, (GLfloat) 0.746629,
-       (GLfloat) 0.520411, (GLfloat) 0.400470, (GLfloat) 0.754186,
-       (GLfloat) 0.503536, (GLfloat) 0.376115, (GLfloat) 0.777810,
-       (GLfloat) 0.500412, (GLfloat) 0.409092, (GLfloat) 0.763041,
-       (GLfloat) 0.311592, (GLfloat) 0.086000, (GLfloat) 0.946316,
-       (GLfloat) 0.308233, (GLfloat) 0.120080, (GLfloat) 0.943702,
-       (GLfloat) 0.349373, (GLfloat) 0.135180, (GLfloat) 0.927181,
-       (GLfloat) 0.360533, (GLfloat) 0.109169, (GLfloat) 0.926336,
-       (GLfloat) 0.428982, (GLfloat) 0.354155, (GLfloat) 0.830993,
-       (GLfloat) 0.435731, (GLfloat) 0.380700, (GLfloat) 0.815602,
-       (GLfloat) 0.172068, (GLfloat) 0.089497, (GLfloat) 0.981011,
-       (GLfloat) 0.177918, (GLfloat) 0.109951, (GLfloat) 0.977883,
-       (GLfloat) 0.248781, (GLfloat) 0.107298, (GLfloat) 0.962598,
-       (GLfloat) 0.244505, (GLfloat) 0.073494, (GLfloat) 0.966859,
-       (GLfloat) 0.473609, (GLfloat) 0.392091, (GLfloat) 0.788643,
-       (GLfloat) 0.469979, (GLfloat) 0.356951, (GLfloat) 0.807283,
-       (GLfloat) - 0.389065, (GLfloat) - 0.390805, (GLfloat) 0.834206,
-       (GLfloat) - 0.391186, (GLfloat) - 0.409816, (GLfloat) 0.824029,
-       (GLfloat) - 0.285514, (GLfloat) - 0.475832, (GLfloat) 0.831905,
-       (GLfloat) - 0.285892, (GLfloat) - 0.471460, (GLfloat) 0.834261,
-       (GLfloat) 0.000626, (GLfloat) - 0.183607, (GLfloat) 0.983000,
-       (GLfloat) - 0.000486, (GLfloat) - 0.201385, (GLfloat) 0.979512,
-       (GLfloat) - 0.093921, (GLfloat) - 0.156340, (GLfloat) 0.983228,
-       (GLfloat) - 0.093477, (GLfloat) - 0.154476, (GLfloat) 0.983565,
-       (GLfloat) - 0.306817, (GLfloat) - 0.816247, (GLfloat) - 0.489494,
-       (GLfloat) - 0.306526, (GLfloat) - 0.816474, (GLfloat) - 0.489298,
-       (GLfloat) - 0.401007, (GLfloat) - 0.903402, (GLfloat) - 0.151850,
-       (GLfloat) - 0.400054, (GLfloat) - 0.903928, (GLfloat) - 0.151230,
-       (GLfloat) - 0.539523, (GLfloat) - 0.829080, (GLfloat) - 0.146769,
-       (GLfloat) - 0.536423, (GLfloat) - 0.831619, (GLfloat) - 0.143741,
-       (GLfloat) - 0.439125, (GLfloat) - 0.764873, (GLfloat) - 0.471315,
-       (GLfloat) - 0.443186, (GLfloat) - 0.759550, (GLfloat) - 0.476099,
-       (GLfloat) - 0.306817, (GLfloat) - 0.816247, (GLfloat) 0.489494,
-       (GLfloat) - 0.306526, (GLfloat) - 0.816474, (GLfloat) 0.489298,
-       (GLfloat) - 0.443186, (GLfloat) - 0.759550, (GLfloat) 0.476099,
-       (GLfloat) - 0.439125, (GLfloat) - 0.764873, (GLfloat) 0.471315,
-       (GLfloat) - 0.539523, (GLfloat) - 0.829080, (GLfloat) 0.146769,
-       (GLfloat) - 0.536423, (GLfloat) - 0.831619, (GLfloat) 0.143741,
-       (GLfloat) - 0.400054, (GLfloat) - 0.903928, (GLfloat) 0.151230,
-       (GLfloat) - 0.401007, (GLfloat) - 0.903402, (GLfloat) 0.151850,
-       (GLfloat) - 0.663042, (GLfloat) - 0.578347, (GLfloat) 0.475278,
-       (GLfloat) - 0.658558, (GLfloat) - 0.599157, (GLfloat) 0.455315,
-       (GLfloat) - 0.758279, (GLfloat) - 0.634927, (GLfloat) 0.147920,
-       (GLfloat) - 0.753882, (GLfloat) - 0.642163, (GLfloat) 0.138885,
-       (GLfloat) - 0.655091, (GLfloat) - 0.742671, (GLfloat) 0.138907,
-       (GLfloat) - 0.649182, (GLfloat) - 0.746545, (GLfloat) 0.145716,
-       (GLfloat) - 0.547340, (GLfloat) - 0.690985, (GLfloat) 0.472185,
-       (GLfloat) - 0.565022, (GLfloat) - 0.687356, (GLfloat) 0.456390,
-       (GLfloat) - 0.658558, (GLfloat) - 0.599157, (GLfloat) - 0.455315,
-       (GLfloat) - 0.663042, (GLfloat) - 0.578347, (GLfloat) - 0.475278,
-       (GLfloat) - 0.565022, (GLfloat) - 0.687356, (GLfloat) - 0.456390,
-       (GLfloat) - 0.547340, (GLfloat) - 0.690985, (GLfloat) - 0.472185,
-       (GLfloat) - 0.655091, (GLfloat) - 0.742671, (GLfloat) - 0.138907,
-       (GLfloat) - 0.649182, (GLfloat) - 0.746545, (GLfloat) - 0.145716,
-       (GLfloat) - 0.758279, (GLfloat) - 0.634927, (GLfloat) - 0.147920,
-       (GLfloat) - 0.753882, (GLfloat) - 0.642163, (GLfloat) - 0.138885,
-       (GLfloat) - 0.531808, (GLfloat) - 0.030854, (GLfloat) - 0.846303,
-       (GLfloat) - 0.547325, (GLfloat) - 0.021478, (GLfloat) - 0.836644,
-       (GLfloat) - 0.214400, (GLfloat) 0.129290, (GLfloat) - 0.968151,
-       (GLfloat) - 0.232550, (GLfloat) 0.136923, (GLfloat) - 0.962898,
-       (GLfloat) - 0.234685, (GLfloat) 0.079911, (GLfloat) - 0.968781,
-       (GLfloat) - 0.210181, (GLfloat) 0.075599, (GLfloat) - 0.974735,
-       (GLfloat) - 0.528653, (GLfloat) - 0.081793, (GLfloat) - 0.844888,
-       (GLfloat) - 0.538319, (GLfloat) - 0.109397, (GLfloat) - 0.835610,
-       (GLfloat) 0.375279, (GLfloat) 0.445115, (GLfloat) - 0.813043,
-       (GLfloat) 0.363044, (GLfloat) 0.448595, (GLfloat) - 0.816677,
-       (GLfloat) 0.362957, (GLfloat) 0.428038, (GLfloat) - 0.827675,
-       (GLfloat) 0.375627, (GLfloat) 0.426947, (GLfloat) - 0.822570,
-       (GLfloat) 0.060176, (GLfloat) 0.247143, (GLfloat) - 0.967109,
-       (GLfloat) 0.080139, (GLfloat) 0.245230, (GLfloat) - 0.966147,
-       (GLfloat) 0.077981, (GLfloat) 0.282100, (GLfloat) - 0.956211,
-       (GLfloat) 0.061364, (GLfloat) 0.287374, (GLfloat) - 0.955851,
-       (GLfloat) 0.394264, (GLfloat) 0.386154, (GLfloat) - 0.833931,
-       (GLfloat) 0.391969, (GLfloat) 0.379827, (GLfloat) - 0.837909,
-       (GLfloat) 0.108284, (GLfloat) 0.149184, (GLfloat) - 0.982863,
-       (GLfloat) 0.106809, (GLfloat) 0.145488, (GLfloat) - 0.983578,
-       (GLfloat) 0.087165, (GLfloat) 0.199761, (GLfloat) - 0.975960,
-       (GLfloat) 0.069423, (GLfloat) 0.198484, (GLfloat) - 0.977642,
-       (GLfloat) 0.378360, (GLfloat) 0.405238, (GLfloat) - 0.832242,
-       (GLfloat) 0.371158, (GLfloat) 0.404730, (GLfloat) - 0.835725,
-       (GLfloat) - 0.478648, (GLfloat) - 0.265386, (GLfloat) - 0.836939,
-       (GLfloat) - 0.486707, (GLfloat) - 0.296995, (GLfloat) - 0.821529,
-       (GLfloat) - 0.514523, (GLfloat) - 0.162550, (GLfloat) - 0.841929,
-       (GLfloat) - 0.525278, (GLfloat) - 0.195128, (GLfloat) - 0.828256,
-       (GLfloat) - 0.217558, (GLfloat) - 0.004195, (GLfloat) - 0.976038,
-       (GLfloat) - 0.206190, (GLfloat) 0.022881, (GLfloat) - 0.978244,
-       (GLfloat) - 0.182077, (GLfloat) - 0.080752, (GLfloat) - 0.979963,
-       (GLfloat) - 0.175153, (GLfloat) - 0.061621, (GLfloat) - 0.982611,
-       (GLfloat) - 0.843975, (GLfloat) - 0.195207, (GLfloat) - 0.499600,
-       (GLfloat) - 0.842535, (GLfloat) - 0.181717, (GLfloat) - 0.507064,
-       (GLfloat) - 0.827895, (GLfloat) - 0.272019, (GLfloat) - 0.490506,
-       (GLfloat) - 0.826118, (GLfloat) - 0.254451, (GLfloat) - 0.502777,
-       (GLfloat) - 0.933235, (GLfloat) - 0.321752, (GLfloat) - 0.159836,
-       (GLfloat) - 0.932223, (GLfloat) - 0.327025, (GLfloat) - 0.154968,
-       (GLfloat) - 0.954881, (GLfloat) - 0.249025, (GLfloat) - 0.161829,
-       (GLfloat) - 0.954307, (GLfloat) - 0.253099, (GLfloat) - 0.158871,
-       (GLfloat) - 0.754729, (GLfloat) - 0.466616, (GLfloat) - 0.461144,
-       (GLfloat) - 0.755670, (GLfloat) - 0.441894, (GLfloat) - 0.483419,
-       (GLfloat) - 0.851851, (GLfloat) - 0.501342, (GLfloat) - 0.151677,
-       (GLfloat) - 0.848780, (GLfloat) - 0.509248, (GLfloat) - 0.142264,
-       (GLfloat) - 0.902458, (GLfloat) - 0.401405, (GLfloat) - 0.156347,
-       (GLfloat) - 0.900638, (GLfloat) - 0.408254, (GLfloat) - 0.148931,
-       (GLfloat) - 0.801108, (GLfloat) - 0.337187, (GLfloat) - 0.494500,
-       (GLfloat) - 0.802422, (GLfloat) - 0.359565, (GLfloat) - 0.476269,
-       (GLfloat) - 0.754729, (GLfloat) - 0.466616, (GLfloat) 0.461144,
-       (GLfloat) - 0.755670, (GLfloat) - 0.441893, (GLfloat) 0.483419,
-       (GLfloat) - 0.802422, (GLfloat) - 0.359565, (GLfloat) 0.476269,
-       (GLfloat) - 0.801108, (GLfloat) - 0.337187, (GLfloat) 0.494500,
-       (GLfloat) - 0.902457, (GLfloat) - 0.401405, (GLfloat) 0.156348,
-       (GLfloat) - 0.900638, (GLfloat) - 0.408254, (GLfloat) 0.148931,
-       (GLfloat) - 0.848780, (GLfloat) - 0.509248, (GLfloat) 0.142264,
-       (GLfloat) - 0.851851, (GLfloat) - 0.501342, (GLfloat) 0.151677,
-       (GLfloat) - 0.842535, (GLfloat) - 0.181718, (GLfloat) 0.507064,
-       (GLfloat) - 0.843975, (GLfloat) - 0.195207, (GLfloat) 0.499600,
-       (GLfloat) - 0.954881, (GLfloat) - 0.249025, (GLfloat) 0.161829,
-       (GLfloat) - 0.954306, (GLfloat) - 0.253099, (GLfloat) 0.158871,
-       (GLfloat) - 0.932223, (GLfloat) - 0.327025, (GLfloat) 0.154968,
-       (GLfloat) - 0.933235, (GLfloat) - 0.321752, (GLfloat) 0.159836,
-       (GLfloat) - 0.827895, (GLfloat) - 0.272019, (GLfloat) 0.490506,
-       (GLfloat) - 0.826118, (GLfloat) - 0.254451, (GLfloat) 0.502777,
-       (GLfloat) - 0.547325, (GLfloat) - 0.021478, (GLfloat) 0.836644,
-       (GLfloat) - 0.531808, (GLfloat) - 0.030854, (GLfloat) 0.846303,
-       (GLfloat) - 0.538320, (GLfloat) - 0.109397, (GLfloat) 0.835610,
-       (GLfloat) - 0.528653, (GLfloat) - 0.081793, (GLfloat) 0.844888,
-       (GLfloat) - 0.210181, (GLfloat) 0.075599, (GLfloat) 0.974735,
-       (GLfloat) - 0.234685, (GLfloat) 0.079911, (GLfloat) 0.968781,
-       (GLfloat) - 0.214400, (GLfloat) 0.129290, (GLfloat) 0.968151,
-       (GLfloat) - 0.232550, (GLfloat) 0.136923, (GLfloat) 0.962898,
-       (GLfloat) - 0.486707, (GLfloat) - 0.296995, (GLfloat) 0.821529,
-       (GLfloat) - 0.478647, (GLfloat) - 0.265386, (GLfloat) 0.836939,
-       (GLfloat) - 0.182076, (GLfloat) - 0.080752, (GLfloat) 0.979963,
-       (GLfloat) - 0.175152, (GLfloat) - 0.061621, (GLfloat) 0.982611,
-       (GLfloat) - 0.206190, (GLfloat) 0.022882, (GLfloat) 0.978244,
-       (GLfloat) - 0.217558, (GLfloat) - 0.004194, (GLfloat) 0.976038,
-       (GLfloat) - 0.514523, (GLfloat) - 0.162550, (GLfloat) 0.841928,
-       (GLfloat) - 0.525277, (GLfloat) - 0.195127, (GLfloat) 0.828257,
-       (GLfloat) 0.394264, (GLfloat) 0.386154, (GLfloat) 0.833931,
-       (GLfloat) 0.391969, (GLfloat) 0.379827, (GLfloat) 0.837909,
-       (GLfloat) 0.378360, (GLfloat) 0.405238, (GLfloat) 0.832241,
-       (GLfloat) 0.371157, (GLfloat) 0.404730, (GLfloat) 0.835725,
-       (GLfloat) 0.069422, (GLfloat) 0.198484, (GLfloat) 0.977642,
-       (GLfloat) 0.087165, (GLfloat) 0.199761, (GLfloat) 0.975960,
-       (GLfloat) 0.106809, (GLfloat) 0.145488, (GLfloat) 0.983578,
-       (GLfloat) 0.108284, (GLfloat) 0.149183, (GLfloat) 0.982863,
-       (GLfloat) 0.375279, (GLfloat) 0.445115, (GLfloat) 0.813043,
-       (GLfloat) 0.363044, (GLfloat) 0.448594, (GLfloat) 0.816678,
-       (GLfloat) 0.061364, (GLfloat) 0.287374, (GLfloat) 0.955851,
-       (GLfloat) 0.077981, (GLfloat) 0.282099, (GLfloat) 0.956211,
-       (GLfloat) 0.060176, (GLfloat) 0.247143, (GLfloat) 0.967109,
-       (GLfloat) 0.080138, (GLfloat) 0.245229, (GLfloat) 0.966147,
-       (GLfloat) 0.375627, (GLfloat) 0.426947, (GLfloat) 0.822570,
-       (GLfloat) 0.362957, (GLfloat) 0.428038, (GLfloat) 0.827675,
-       (GLfloat) 0.646717, (GLfloat) 0.598054, (GLfloat) 0.473381,
-       (GLfloat) 0.647128, (GLfloat) 0.592930, (GLfloat) 0.479227,
-       (GLfloat) 0.644233, (GLfloat) 0.592287, (GLfloat) 0.483900,
-       (GLfloat) 0.644394, (GLfloat) 0.596473, (GLfloat) 0.478515,
-       (GLfloat) 0.743754, (GLfloat) 0.650774, (GLfloat) 0.152720,
-       (GLfloat) 0.743300, (GLfloat) 0.651663, (GLfloat) 0.151130,
-       (GLfloat) 0.748383, (GLfloat) 0.646124, (GLfloat) 0.149823,
-       (GLfloat) 0.749100, (GLfloat) 0.644879, (GLfloat) 0.151594,
-       (GLfloat) 0.643063, (GLfloat) 0.599196, (GLfloat) 0.476900,
-       (GLfloat) 0.642570, (GLfloat) 0.593487, (GLfloat) 0.484641,
-       (GLfloat) 0.726590, (GLfloat) 0.670731, (GLfloat) 0.148951,
-       (GLfloat) 0.727257, (GLfloat) 0.669291, (GLfloat) 0.152139,
-       (GLfloat) 0.736367, (GLfloat) 0.659214, (GLfloat) 0.152315,
-       (GLfloat) 0.736367, (GLfloat) 0.659216, (GLfloat) 0.152312,
-       (GLfloat) 0.642386, (GLfloat) 0.594552, (GLfloat) 0.483578,
-       (GLfloat) 0.642311, (GLfloat) 0.593780, (GLfloat) 0.484626,
-       (GLfloat) 0.642570, (GLfloat) 0.593487, (GLfloat) - 0.484641,
-       (GLfloat) 0.643063, (GLfloat) 0.599196, (GLfloat) - 0.476900,
-       (GLfloat) 0.642386, (GLfloat) 0.594552, (GLfloat) - 0.483577,
-       (GLfloat) 0.642311, (GLfloat) 0.593780, (GLfloat) - 0.484626,
-       (GLfloat) 0.736367, (GLfloat) 0.659216, (GLfloat) - 0.152312,
-       (GLfloat) 0.736367, (GLfloat) 0.659214, (GLfloat) - 0.152315,
-       (GLfloat) 0.726590, (GLfloat) 0.670731, (GLfloat) - 0.148951,
-       (GLfloat) 0.727257, (GLfloat) 0.669291, (GLfloat) - 0.152139,
-       (GLfloat) 0.646717, (GLfloat) 0.598054, (GLfloat) - 0.473381,
-       (GLfloat) 0.647128, (GLfloat) 0.592931, (GLfloat) - 0.479227,
-       (GLfloat) 0.749100, (GLfloat) 0.644879, (GLfloat) - 0.151594,
-       (GLfloat) 0.748383, (GLfloat) 0.646124, (GLfloat) - 0.149823,
-       (GLfloat) 0.743754, (GLfloat) 0.650774, (GLfloat) - 0.152720,
-       (GLfloat) 0.743300, (GLfloat) 0.651663, (GLfloat) - 0.151130,
-       (GLfloat) 0.644394, (GLfloat) 0.596473, (GLfloat) - 0.478515,
-       (GLfloat) 0.644234, (GLfloat) 0.592287, (GLfloat) - 0.483900,
-       (GLfloat) 0.648818, (GLfloat) 0.595244, (GLfloat) 0.474046,
-       (GLfloat) 0.647885, (GLfloat) 0.598960, (GLfloat) 0.470630,
-       (GLfloat) 0.751896, (GLfloat) 0.641953, (GLfloat) 0.150159,
-       (GLfloat) 0.751280, (GLfloat) 0.642895, (GLfloat) 0.149213,
-       (GLfloat) 0.855755, (GLfloat) 0.491872, (GLfloat) 0.160454,
-       (GLfloat) 0.854316, (GLfloat) 0.494902, (GLfloat) 0.158798,
-       (GLfloat) 0.746074, (GLfloat) 0.437172, (GLfloat) 0.502249,
-       (GLfloat) 0.745147, (GLfloat) 0.441097, (GLfloat) 0.500189,
-       (GLfloat) 0.647885, (GLfloat) 0.598960, (GLfloat) - 0.470630,
-       (GLfloat) 0.648818, (GLfloat) 0.595244, (GLfloat) - 0.474046,
-       (GLfloat) 0.746074, (GLfloat) 0.437172, (GLfloat) - 0.502249,
-       (GLfloat) 0.745147, (GLfloat) 0.441097, (GLfloat) - 0.500189,
-       (GLfloat) 0.854316, (GLfloat) 0.494902, (GLfloat) - 0.158798,
-       (GLfloat) 0.855755, (GLfloat) 0.491872, (GLfloat) - 0.160454,
-       (GLfloat) 0.751896, (GLfloat) 0.641953, (GLfloat) - 0.150159,
-       (GLfloat) 0.751280, (GLfloat) 0.642895, (GLfloat) - 0.149213,
-       (GLfloat) 0.516361, (GLfloat) - 0.831259, (GLfloat) - 0.205866,
-       (GLfloat) 0.500398, (GLfloat) - 0.847281, (GLfloat) - 0.178091,
-       (GLfloat) 0.549353, (GLfloat) - 0.832739, (GLfloat) - 0.068965,
-       (GLfloat) 0.539508, (GLfloat) - 0.838796, (GLfloat) - 0.073163,
-       (GLfloat) 0.955872, (GLfloat) - 0.254974, (GLfloat) - 0.145934,
-       (GLfloat) 0.962750, (GLfloat) - 0.217125, (GLfloat) - 0.161151,
-       (GLfloat) 0.832302, (GLfloat) - 0.349186, (GLfloat) - 0.430515,
-       (GLfloat) 0.834893, (GLfloat) - 0.309370, (GLfloat) - 0.455242,
-       (GLfloat) 0.500398, (GLfloat) - 0.847281, (GLfloat) 0.178091,
-       (GLfloat) 0.516361, (GLfloat) - 0.831259, (GLfloat) 0.205867,
-       (GLfloat) 0.832302, (GLfloat) - 0.349186, (GLfloat) 0.430515,
-       (GLfloat) 0.834893, (GLfloat) - 0.309369, (GLfloat) 0.455242,
-       (GLfloat) 0.962750, (GLfloat) - 0.217125, (GLfloat) 0.161151,
-       (GLfloat) 0.955872, (GLfloat) - 0.254973, (GLfloat) 0.145934,
-       (GLfloat) 0.539508, (GLfloat) - 0.838796, (GLfloat) 0.073163,
-       (GLfloat) 0.549353, (GLfloat) - 0.832739, (GLfloat) 0.068965,
-       (GLfloat) 0.365166, (GLfloat) 0.464177, (GLfloat) - 0.806966,
-       (GLfloat) 0.373210, (GLfloat) 0.459657, (GLfloat) - 0.805872,
-       (GLfloat) 0.064151, (GLfloat) 0.318725, (GLfloat) - 0.945674,
-       (GLfloat) 0.075117, (GLfloat) 0.311589, (GLfloat) - 0.947243,
-       (GLfloat) 0.127864, (GLfloat) 0.159455, (GLfloat) - 0.978890,
-       (GLfloat) 0.122956, (GLfloat) 0.165169, (GLfloat) - 0.978571,
-       (GLfloat) 0.446081, (GLfloat) 0.299065, (GLfloat) - 0.843547,
-       (GLfloat) 0.442539, (GLfloat) 0.302925, (GLfloat) - 0.844035,
-       (GLfloat) - 0.541197, (GLfloat) 0.047754, (GLfloat) - 0.839539,
-       (GLfloat) - 0.545743, (GLfloat) 0.029212, (GLfloat) - 0.837443,
-       (GLfloat) - 0.504199, (GLfloat) - 0.116458, (GLfloat) - 0.855699,
-       (GLfloat) - 0.503751, (GLfloat) - 0.117103, (GLfloat) - 0.855875,
-       (GLfloat) - 0.180218, (GLfloat) 0.028848, (GLfloat) - 0.983203,
-       (GLfloat) - 0.179757, (GLfloat) 0.028254, (GLfloat) - 0.983305,
-       (GLfloat) - 0.230218, (GLfloat) 0.184662, (GLfloat) - 0.955458,
-       (GLfloat) - 0.218138, (GLfloat) 0.174858, (GLfloat) - 0.960125,
-       (GLfloat) 0.043553, (GLfloat) - 0.957947, (GLfloat) - 0.283621,
-       (GLfloat) 0.073317, (GLfloat) - 0.961717, (GLfloat) - 0.264055,
-       (GLfloat) 0.178370, (GLfloat) - 0.932145, (GLfloat) - 0.315104,
-       (GLfloat) 0.175170, (GLfloat) - 0.936420, (GLfloat) - 0.304029,
-       (GLfloat) 0.021724, (GLfloat) - 0.600335, (GLfloat) - 0.799453,
-       (GLfloat) - 0.006371, (GLfloat) - 0.568607, (GLfloat) - 0.822585,
-       (GLfloat) - 0.212402, (GLfloat) - 0.727671, (GLfloat) - 0.652212,
-       (GLfloat) - 0.248701, (GLfloat) - 0.700487, (GLfloat) - 0.668929,
-       (GLfloat) 0.430757, (GLfloat) - 0.866899, (GLfloat) - 0.250869,
-       (GLfloat) 0.427975, (GLfloat) - 0.857309, (GLfloat) - 0.286110,
-       (GLfloat) 0.561354, (GLfloat) - 0.442015, (GLfloat) - 0.699646,
-       (GLfloat) 0.571558, (GLfloat) - 0.412112, (GLfloat) - 0.709567,
-       (GLfloat) 0.286734, (GLfloat) - 0.470609, (GLfloat) - 0.834453,
-       (GLfloat) 0.281923, (GLfloat) - 0.498471, (GLfloat) - 0.819784,
-       (GLfloat) 0.316508, (GLfloat) - 0.898548, (GLfloat) - 0.304029,
-       (GLfloat) 0.311600, (GLfloat) - 0.896446, (GLfloat) - 0.315104,
-       (GLfloat) - 0.857077, (GLfloat) - 0.113037, (GLfloat) - 0.502635,
-       (GLfloat) - 0.855920, (GLfloat) - 0.100677, (GLfloat) - 0.507214,
-       (GLfloat) - 0.973550, (GLfloat) - 0.162756, (GLfloat) - 0.160346,
-       (GLfloat) - 0.972585, (GLfloat) - 0.166359, (GLfloat) - 0.162491,
-       (GLfloat) - 0.942363, (GLfloat) - 0.290210, (GLfloat) - 0.166522,
-       (GLfloat) - 0.940343, (GLfloat) - 0.298398, (GLfloat) - 0.163441,
-       (GLfloat) - 0.819387, (GLfloat) - 0.257298, (GLfloat) - 0.512252,
-       (GLfloat) - 0.820563, (GLfloat) - 0.245585, (GLfloat) - 0.516105,
-       (GLfloat) - 0.857077, (GLfloat) - 0.113037, (GLfloat) 0.502635,
-       (GLfloat) - 0.855920, (GLfloat) - 0.100677, (GLfloat) 0.507214,
-       (GLfloat) - 0.820564, (GLfloat) - 0.245585, (GLfloat) 0.516104,
-       (GLfloat) - 0.819387, (GLfloat) - 0.257297, (GLfloat) 0.512252,
-       (GLfloat) - 0.942363, (GLfloat) - 0.290210, (GLfloat) 0.166522,
-       (GLfloat) - 0.940343, (GLfloat) - 0.298398, (GLfloat) 0.163441,
-       (GLfloat) - 0.973550, (GLfloat) - 0.162756, (GLfloat) 0.160346,
-       (GLfloat) - 0.972585, (GLfloat) - 0.166359, (GLfloat) 0.162491,
-       (GLfloat) - 0.031552, (GLfloat) - 0.978072, (GLfloat) 0.205866,
-       (GLfloat) - 0.009717, (GLfloat) - 0.983966, (GLfloat) 0.178091,
-       (GLfloat) - 0.059383, (GLfloat) - 0.995850, (GLfloat) 0.068965,
-       (GLfloat) - 0.047830, (GLfloat) - 0.996172, (GLfloat) 0.073163,
-       (GLfloat) - 0.608137, (GLfloat) - 0.782136, (GLfloat) 0.135767,
-       (GLfloat) - 0.575039, (GLfloat) - 0.805344, (GLfloat) 0.144053,
-       (GLfloat) - 0.440882, (GLfloat) - 0.803158, (GLfloat) 0.400699,
-       (GLfloat) - 0.474682, (GLfloat) - 0.782654, (GLfloat) 0.402654,
-       (GLfloat) - 0.009717, (GLfloat) - 0.983966, (GLfloat) - 0.178092,
-       (GLfloat) - 0.031552, (GLfloat) - 0.978072, (GLfloat) - 0.205866,
-       (GLfloat) - 0.474681, (GLfloat) - 0.782654, (GLfloat) - 0.402654,
-       (GLfloat) - 0.440881, (GLfloat) - 0.803159, (GLfloat) - 0.400699,
-       (GLfloat) - 0.608137, (GLfloat) - 0.782136, (GLfloat) - 0.135767,
-       (GLfloat) - 0.575039, (GLfloat) - 0.805344, (GLfloat) - 0.144053,
-       (GLfloat) - 0.047830, (GLfloat) - 0.996172, (GLfloat) - 0.073163,
-       (GLfloat) - 0.059383, (GLfloat) - 0.995850, (GLfloat) - 0.068965,
-       (GLfloat) - 0.545743, (GLfloat) 0.029212, (GLfloat) 0.837443,
-       (GLfloat) - 0.541197, (GLfloat) 0.047754, (GLfloat) 0.839539,
-       (GLfloat) - 0.218137, (GLfloat) 0.174858, (GLfloat) 0.960125,
-       (GLfloat) - 0.230218, (GLfloat) 0.184662, (GLfloat) 0.955458,
-       (GLfloat) - 0.180219, (GLfloat) 0.028850, (GLfloat) 0.983203,
-       (GLfloat) - 0.179757, (GLfloat) 0.028256, (GLfloat) 0.983305,
-       (GLfloat) - 0.503751, (GLfloat) - 0.117102, (GLfloat) 0.855875,
-       (GLfloat) - 0.504199, (GLfloat) - 0.116456, (GLfloat) 0.855699,
-       (GLfloat) 0.373209, (GLfloat) 0.459657, (GLfloat) 0.805872,
-       (GLfloat) 0.365166, (GLfloat) 0.464177, (GLfloat) 0.806966,
-       (GLfloat) 0.446081, (GLfloat) 0.299065, (GLfloat) 0.843547,
-       (GLfloat) 0.442539, (GLfloat) 0.302926, (GLfloat) 0.844035,
-       (GLfloat) 0.122955, (GLfloat) 0.165170, (GLfloat) 0.978571,
-       (GLfloat) 0.127864, (GLfloat) 0.159456, (GLfloat) 0.978889,
-       (GLfloat) 0.064151, (GLfloat) 0.318724, (GLfloat) 0.945674,
-       (GLfloat) 0.075117, (GLfloat) 0.311589, (GLfloat) 0.947243,
-       (GLfloat) 0.430757, (GLfloat) - 0.866899, (GLfloat) 0.250868,
-       (GLfloat) 0.427975, (GLfloat) - 0.857309, (GLfloat) 0.286110,
-       (GLfloat) 0.311600, (GLfloat) - 0.896446, (GLfloat) 0.315104,
-       (GLfloat) 0.316508, (GLfloat) - 0.898548, (GLfloat) 0.304029,
-       (GLfloat) 0.281923, (GLfloat) - 0.498471, (GLfloat) 0.819784,
-       (GLfloat) 0.286734, (GLfloat) - 0.470608, (GLfloat) 0.834453,
-       (GLfloat) 0.561354, (GLfloat) - 0.442014, (GLfloat) 0.699647,
-       (GLfloat) 0.571558, (GLfloat) - 0.412112, (GLfloat) 0.709567,
-       (GLfloat) 0.073318, (GLfloat) - 0.961717, (GLfloat) 0.264055,
-       (GLfloat) 0.043553, (GLfloat) - 0.957947, (GLfloat) 0.283620,
-       (GLfloat) - 0.212402, (GLfloat) - 0.727670, (GLfloat) 0.652213,
-       (GLfloat) - 0.248701, (GLfloat) - 0.700487, (GLfloat) 0.668929,
-       (GLfloat) - 0.006371, (GLfloat) - 0.568606, (GLfloat) 0.822585,
-       (GLfloat) 0.021725, (GLfloat) - 0.600335, (GLfloat) 0.799453,
-       (GLfloat) 0.175170, (GLfloat) - 0.936420, (GLfloat) 0.304028,
-       (GLfloat) 0.178370, (GLfloat) - 0.932145, (GLfloat) 0.315104,
-       (GLfloat) 0.385580, (GLfloat) - 0.914303, (GLfloat) - 0.124011,
-       (GLfloat) 0.374190, (GLfloat) - 0.917355, (GLfloat) - 0.135802,
-       (GLfloat) 0.299349, (GLfloat) - 0.947826, (GLfloat) - 0.109621,
-       (GLfloat) 0.295210, (GLfloat) - 0.948521, (GLfloat) - 0.114709,
-       (GLfloat) 0.287695, (GLfloat) - 0.957151, (GLfloat) - 0.033079,
-       (GLfloat) 0.290512, (GLfloat) - 0.956396, (GLfloat) - 0.030163,
-       (GLfloat) 0.362895, (GLfloat) - 0.930799, (GLfloat) - 0.043834,
-       (GLfloat) 0.367706, (GLfloat) - 0.929096, (GLfloat) - 0.039656,
-       (GLfloat) 0.134619, (GLfloat) - 0.981547, (GLfloat) - 0.135802,
-       (GLfloat) 0.123230, (GLfloat) - 0.984599, (GLfloat) - 0.124011,
-       (GLfloat) 0.151123, (GLfloat) - 0.987543, (GLfloat) - 0.043834,
-       (GLfloat) 0.146105, (GLfloat) - 0.988474, (GLfloat) - 0.039656,
-       (GLfloat) 0.226607, (GLfloat) - 0.973519, (GLfloat) - 0.030163,
-       (GLfloat) 0.229424, (GLfloat) - 0.972764, (GLfloat) - 0.033079,
-       (GLfloat) 0.214669, (GLfloat) - 0.970516, (GLfloat) - 0.109621,
-       (GLfloat) 0.218601, (GLfloat) - 0.969049, (GLfloat) - 0.114709,
-       (GLfloat) 0.123230, (GLfloat) - 0.984599, (GLfloat) 0.124011,
-       (GLfloat) 0.134619, (GLfloat) - 0.981547, (GLfloat) 0.135802,
-       (GLfloat) 0.214669, (GLfloat) - 0.970516, (GLfloat) 0.109621,
-       (GLfloat) 0.218601, (GLfloat) - 0.969049, (GLfloat) 0.114709,
-       (GLfloat) 0.229424, (GLfloat) - 0.972764, (GLfloat) 0.033079,
-       (GLfloat) 0.226607, (GLfloat) - 0.973519, (GLfloat) 0.030163,
-       (GLfloat) 0.151123, (GLfloat) - 0.987543, (GLfloat) 0.043834,
-       (GLfloat) 0.146105, (GLfloat) - 0.988474, (GLfloat) 0.039656,
-       (GLfloat) 0.374190, (GLfloat) - 0.917355, (GLfloat) 0.135803,
-       (GLfloat) 0.385580, (GLfloat) - 0.914303, (GLfloat) 0.124011,
-       (GLfloat) 0.362895, (GLfloat) - 0.930799, (GLfloat) 0.043834,
-       (GLfloat) 0.367706, (GLfloat) - 0.929096, (GLfloat) 0.039656,
-       (GLfloat) 0.290512, (GLfloat) - 0.956396, (GLfloat) 0.030163,
-       (GLfloat) 0.287695, (GLfloat) - 0.957151, (GLfloat) 0.033079,
-       (GLfloat) 0.299349, (GLfloat) - 0.947826, (GLfloat) 0.109621,
-       (GLfloat) 0.295210, (GLfloat) - 0.948521, (GLfloat) 0.114709,
-};
-
-static unsigned short int s1_5_POLS[] =
-{
-      3, 12, 76, 74, 1, 3, 12, 74, 82, 1, 3, 76, 22, 78, 1, 3, 78, 74, 76, 1,
-      3, 20, 80, 74, 1, 3, 20, 74, 78, 1, 3, 80, 28, 82, 1, 3, 82, 74, 80, 1,
-      3, 13, 84, 77, 1, 3, 13, 77, 88, 1, 3, 84, 24, 86, 1, 3, 86, 77, 84, 1,
-      3, 20, 78, 77, 1, 3, 20, 77, 86, 1, 3, 78, 22, 88, 1, 3, 88, 77, 78, 1,
-      3, 14, 90, 85, 1, 3, 14, 85, 93, 1, 3, 26, 91, 85, 1, 3, 26, 85, 90, 1,
-      3, 20, 86, 85, 1, 3, 20, 85, 91, 1, 3, 86, 24, 93, 1, 3, 93, 85, 86, 1,
-      3, 15, 95, 79, 1, 3, 15, 79, 97, 1, 3, 95, 28, 80, 1, 3, 80, 79, 95, 1,
-      3, 20, 91, 79, 1, 3, 20, 79, 80, 1, 3, 26, 97, 79, 1, 3, 26, 79, 91, 1,
-    3, 13, 99, 83, 1, 3, 13, 83, 84, 1, 3, 99, 30, 101, 1, 3, 101, 83, 99, 1,
-  3, 23, 102, 83, 1, 3, 23, 83, 101, 1, 3, 102, 24, 84, 1, 3, 84, 83, 102, 1,
-       3, 108, 16, 104, 1, 3, 104, 100, 108, 1, 3, 32, 106, 100, 1, 3, 32, 100, 104, 1,
-       3, 106, 23, 101, 1, 3, 101, 100, 106, 1, 3, 30, 108, 100, 1, 3, 30, 100, 101, 1,
-       3, 17, 110, 105, 1, 3, 17, 105, 113, 1, 3, 33, 111, 105, 1, 3, 33, 105, 110, 1,
-       3, 23, 106, 105, 1, 3, 23, 105, 111, 1, 3, 106, 32, 113, 1, 3, 113, 105, 106, 1,
-   3, 14, 93, 92, 1, 3, 14, 92, 114, 1, 3, 93, 24, 102, 1, 3, 102, 92, 93, 1,
-3, 102, 23, 111, 1, 3, 111, 92, 102, 1, 3, 33, 114, 92, 1, 3, 33, 92, 111, 1,
-       3, 16, 116, 103, 1, 3, 16, 103, 104, 1, 3, 116, 35, 118, 1, 3, 118, 103, 116, 1,
-       3, 31, 119, 103, 1, 3, 31, 103, 118, 1, 3, 119, 32, 104, 1, 3, 104, 103, 119, 1,
-       3, 18, 121, 117, 1, 3, 18, 117, 125, 1, 3, 121, 36, 123, 1, 3, 123, 117, 121, 1,
-       3, 31, 118, 117, 1, 3, 31, 117, 123, 1, 3, 118, 35, 125, 1, 3, 125, 117, 118, 1,
-       3, 19, 127, 122, 1, 3, 19, 122, 130, 1, 3, 37, 128, 122, 1, 3, 37, 122, 127, 1,
-       3, 31, 123, 122, 1, 3, 31, 122, 128, 1, 3, 36, 130, 122, 1, 3, 36, 122, 123, 1,
-       3, 17, 113, 112, 1, 3, 17, 112, 131, 1, 3, 32, 119, 112, 1, 3, 32, 112, 113, 1,
-       3, 31, 128, 112, 1, 3, 31, 112, 119, 1, 3, 37, 131, 112, 1, 3, 37, 112, 128, 1,
-       3, 121, 18, 133, 1, 3, 133, 120, 121, 1, 3, 39, 134, 120, 1, 3, 39, 120, 133, 1,
-       3, 134, 27, 135, 1, 3, 135, 120, 134, 1, 3, 36, 121, 120, 1, 3, 36, 120, 135, 1,
-   3, 12, 82, 81, 1, 3, 12, 81, 138, 1, 3, 82, 28, 136, 1, 3, 136, 81, 82, 1,
-3, 27, 134, 81, 1, 3, 27, 81, 136, 1, 3, 134, 39, 138, 1, 3, 138, 81, 134, 1,
-   3, 15, 139, 94, 1, 3, 15, 94, 95, 1, 3, 40, 140, 94, 1, 3, 40, 94, 139, 1,
-3, 140, 27, 136, 1, 3, 136, 94, 140, 1, 3, 136, 28, 95, 1, 3, 95, 94, 136, 1,
-       3, 19, 130, 129, 1, 3, 19, 129, 141, 1, 3, 130, 36, 135, 1, 3, 135, 129, 130, 1,
-       3, 27, 140, 129, 1, 3, 27, 129, 135, 1, 3, 40, 141, 129, 1, 3, 40, 129, 140, 1,
- 3, 14, 114, 89, 1, 3, 14, 89, 90, 1, 3, 114, 33, 142, 1, 3, 142, 89, 114, 1,
-  3, 25, 143, 89, 1, 3, 25, 89, 142, 1, 3, 143, 26, 90, 1, 3, 90, 89, 143, 1,
-       3, 17, 131, 109, 1, 3, 17, 109, 110, 1, 3, 131, 37, 144, 1, 3, 144, 109, 131, 1,
-       3, 25, 142, 109, 1, 3, 25, 109, 144, 1, 3, 142, 33, 110, 1, 3, 110, 109, 142, 1,
-       3, 19, 141, 126, 1, 3, 19, 126, 127, 1, 3, 141, 40, 145, 1, 3, 145, 126, 141, 1,
-       3, 25, 144, 126, 1, 3, 25, 126, 145, 1, 3, 144, 37, 127, 1, 3, 127, 126, 144, 1,
-   3, 15, 97, 96, 1, 3, 15, 96, 139, 1, 3, 97, 26, 143, 1, 3, 143, 96, 97, 1,
-3, 25, 145, 96, 1, 3, 25, 96, 143, 1, 3, 145, 40, 139, 1, 3, 139, 96, 145, 1,
-3, 76, 12, 146, 1, 3, 146, 75, 76, 1, 3, 146, 41, 148, 1, 3, 148, 75, 146, 1,
- 3, 148, 21, 149, 1, 3, 149, 75, 148, 1, 3, 22, 76, 75, 1, 3, 22, 75, 149, 1,
-       3, 155, 8, 151, 1, 3, 151, 147, 155, 1, 3, 43, 153, 147, 1, 3, 43, 147, 151, 1,
-       3, 153, 21, 148, 1, 3, 148, 147, 153, 1, 3, 41, 155, 147, 1, 3, 41, 147, 148, 1,
-       3, 160, 11, 157, 1, 3, 157, 152, 160, 1, 3, 44, 158, 152, 1, 3, 44, 152, 157, 1,
-       3, 158, 21, 153, 1, 3, 153, 152, 158, 1, 3, 43, 160, 152, 1, 3, 43, 152, 153, 1,
-   3, 161, 13, 88, 1, 3, 88, 87, 161, 1, 3, 22, 149, 87, 1, 3, 22, 87, 88, 1,
-       3, 149, 21, 158, 1, 3, 158, 87, 149, 1, 3, 158, 44, 161, 1, 3, 161, 87, 158, 1,
-       3, 18, 162, 132, 1, 3, 18, 132, 133, 1, 3, 162, 45, 164, 1, 3, 164, 132, 162, 1,
-       3, 38, 165, 132, 1, 3, 38, 132, 164, 1, 3, 165, 39, 133, 1, 3, 133, 132, 165, 1,
-       3, 170, 9, 167, 1, 3, 167, 163, 170, 1, 3, 47, 168, 163, 1, 3, 47, 163, 167, 1,
-       3, 168, 38, 164, 1, 3, 164, 163, 168, 1, 3, 45, 170, 163, 1, 3, 45, 163, 164, 1,
-3, 8, 155, 154, 1, 3, 8, 154, 173, 1, 3, 155, 41, 171, 1, 3, 171, 154, 155, 1,
-       3, 38, 168, 154, 1, 3, 38, 154, 171, 1, 3, 168, 47, 173, 1, 3, 173, 154, 168, 1,
-       3, 146, 12, 138, 1, 3, 138, 137, 146, 1, 3, 39, 165, 137, 1, 3, 39, 137, 138, 1,
-       3, 165, 38, 171, 1, 3, 171, 137, 165, 1, 3, 41, 146, 137, 1, 3, 41, 137, 171, 1,
-       3, 16, 108, 107, 1, 3, 16, 107, 177, 1, 3, 108, 30, 174, 1, 3, 174, 107, 108, 1,
-       3, 29, 176, 107, 1, 3, 29, 107, 174, 1, 3, 176, 50, 177, 1, 3, 177, 107, 176, 1,
-  3, 99, 13, 161, 1, 3, 161, 98, 99, 1, 3, 44, 178, 98, 1, 3, 44, 98, 161, 1,
- 3, 178, 29, 174, 1, 3, 174, 98, 178, 1, 3, 30, 99, 98, 1, 3, 30, 98, 174, 1,
-       3, 11, 180, 156, 1, 3, 11, 156, 157, 1, 3, 180, 49, 181, 1, 3, 181, 156, 180, 1,
-       3, 29, 178, 156, 1, 3, 29, 156, 181, 1, 3, 178, 44, 157, 1, 3, 157, 156, 178, 1,
-       3, 185, 10, 183, 1, 3, 183, 175, 185, 1, 3, 50, 176, 175, 1, 3, 50, 175, 183, 1,
-       3, 176, 29, 181, 1, 3, 181, 175, 176, 1, 3, 49, 185, 175, 1, 3, 49, 175, 181, 1,
-       3, 162, 18, 125, 1, 3, 125, 124, 162, 1, 3, 35, 186, 124, 1, 3, 35, 124, 125, 1,
-       3, 186, 34, 187, 1, 3, 187, 124, 186, 1, 3, 45, 162, 124, 1, 3, 45, 124, 187, 1,
-       3, 116, 16, 177, 1, 3, 177, 115, 116, 1, 3, 50, 188, 115, 1, 3, 50, 115, 177, 1,
-       3, 188, 34, 186, 1, 3, 186, 115, 188, 1, 3, 35, 116, 115, 1, 3, 35, 115, 186, 1,
-       3, 10, 190, 182, 1, 3, 10, 182, 183, 1, 3, 190, 52, 191, 1, 3, 191, 182, 190, 1,
-       3, 191, 34, 188, 1, 3, 188, 182, 191, 1, 3, 50, 183, 182, 1, 3, 50, 182, 188, 1,
-3, 9, 170, 169, 1, 3, 9, 169, 193, 1, 3, 45, 187, 169, 1, 3, 45, 169, 170, 1,
-       3, 187, 34, 191, 1, 3, 191, 169, 187, 1, 3, 191, 52, 193, 1, 3, 193, 169, 191, 1,
-3, 1, 196, 194, 1, 3, 1, 194, 201, 1, 3, 196, 54, 198, 1, 3, 198, 194, 196, 1,
-       3, 46, 199, 194, 1, 3, 46, 194, 198, 1, 3, 56, 201, 194, 1, 3, 56, 194, 199, 1,
-       3, 206, 3, 203, 1, 3, 203, 197, 206, 1, 3, 55, 204, 197, 1, 3, 55, 197, 203, 1,
-       3, 204, 46, 198, 1, 3, 198, 197, 204, 1, 3, 54, 206, 197, 1, 3, 54, 197, 198, 1,
-       3, 208, 8, 173, 1, 3, 173, 172, 208, 1, 3, 47, 207, 172, 1, 3, 47, 172, 173, 1,
-       3, 46, 204, 172, 1, 3, 46, 172, 207, 1, 3, 204, 55, 208, 1, 3, 208, 172, 204, 1,
-3, 9, 209, 166, 1, 3, 9, 166, 167, 1, 3, 209, 56, 199, 1, 3, 199, 166, 209, 1,
-       3, 46, 207, 166, 1, 3, 46, 166, 199, 1, 3, 207, 47, 167, 1, 3, 167, 166, 207, 1,
-3, 1, 201, 200, 1, 3, 1, 200, 214, 1, 3, 201, 56, 210, 1, 3, 210, 200, 201, 1,
-       3, 51, 212, 200, 1, 3, 51, 200, 210, 1, 3, 212, 59, 214, 1, 3, 214, 200, 212, 1,
-       3, 209, 9, 193, 1, 3, 193, 192, 209, 1, 3, 52, 215, 192, 1, 3, 52, 192, 193, 1,
-       3, 215, 51, 210, 1, 3, 210, 192, 215, 1, 3, 192, 210, 56, 1, 3, 56, 209, 192, 1,
-       3, 190, 10, 216, 1, 3, 216, 189, 190, 1, 3, 189, 216, 57, 1, 3, 57, 217, 189, 1,
-       3, 217, 51, 215, 1, 3, 215, 189, 217, 1, 3, 52, 190, 189, 1, 3, 52, 189, 215, 1,
-3, 0, 219, 211, 1, 3, 0, 211, 221, 1, 3, 219, 59, 212, 1, 3, 212, 211, 219, 1,
-       3, 51, 217, 211, 1, 3, 51, 211, 212, 1, 3, 217, 57, 221, 1, 3, 221, 211, 217, 1,
-3, 0, 221, 220, 1, 3, 0, 220, 226, 1, 3, 57, 222, 220, 1, 3, 57, 220, 221, 1,
-       3, 48, 224, 220, 1, 3, 48, 220, 222, 1, 3, 224, 62, 226, 1, 3, 226, 220, 224, 1,
-       3, 10, 185, 184, 1, 3, 10, 184, 216, 1, 3, 185, 49, 227, 1, 3, 227, 184, 185, 1,
-       3, 48, 222, 184, 1, 3, 48, 184, 227, 1, 3, 222, 57, 216, 1, 3, 216, 184, 222, 1,
-       3, 180, 11, 228, 1, 3, 228, 179, 180, 1, 3, 228, 60, 229, 1, 3, 229, 179, 228, 1,
-       3, 48, 227, 179, 1, 3, 48, 179, 229, 1, 3, 49, 180, 179, 1, 3, 49, 179, 227, 1,
-       3, 233, 2, 231, 1, 3, 231, 223, 233, 1, 3, 62, 224, 223, 1, 3, 62, 223, 231, 1,
-       3, 224, 48, 229, 1, 3, 229, 223, 224, 1, 3, 60, 233, 223, 1, 3, 60, 223, 229, 1,
-       3, 237, 2, 233, 1, 3, 233, 232, 237, 1, 3, 60, 234, 232, 1, 3, 60, 232, 233, 1,
-       3, 234, 42, 235, 1, 3, 235, 232, 234, 1, 3, 64, 237, 232, 1, 3, 64, 232, 235, 1,
-       3, 11, 160, 159, 1, 3, 11, 159, 228, 1, 3, 160, 43, 238, 1, 3, 238, 159, 160, 1,
-       3, 42, 234, 159, 1, 3, 42, 159, 238, 1, 3, 234, 60, 228, 1, 3, 228, 159, 234, 1,
-3, 8, 208, 150, 1, 3, 8, 150, 151, 1, 3, 208, 55, 239, 1, 3, 239, 150, 208, 1,
-       3, 42, 238, 150, 1, 3, 42, 150, 239, 1, 3, 238, 43, 151, 1, 3, 151, 150, 238, 1,
-       3, 203, 3, 241, 1, 3, 241, 202, 203, 1, 3, 64, 235, 202, 1, 3, 64, 202, 241, 1,
-       3, 235, 42, 239, 1, 3, 239, 202, 235, 1, 3, 55, 203, 202, 1, 3, 55, 202, 239, 1,
-3, 2, 237, 236, 1, 3, 2, 236, 245, 1, 3, 237, 64, 242, 1, 3, 242, 236, 237, 1,
-       3, 63, 244, 236, 1, 3, 63, 236, 242, 1, 3, 244, 68, 245, 1, 3, 245, 236, 244, 1,
-3, 3, 246, 240, 1, 3, 3, 240, 241, 1, 3, 246, 65, 248, 1, 3, 248, 240, 246, 1,
-       3, 63, 242, 240, 1, 3, 63, 240, 248, 1, 3, 242, 64, 241, 1, 3, 241, 240, 242, 1,
-3, 4, 250, 247, 1, 3, 4, 247, 253, 1, 3, 67, 251, 247, 1, 3, 67, 247, 250, 1,
-       3, 63, 248, 247, 1, 3, 63, 247, 251, 1, 3, 248, 65, 253, 1, 3, 253, 247, 248, 1,
-3, 7, 255, 243, 1, 3, 7, 243, 257, 1, 3, 255, 68, 244, 1, 3, 244, 243, 255, 1,
-       3, 63, 251, 243, 1, 3, 63, 243, 244, 1, 3, 67, 257, 243, 1, 3, 67, 243, 251, 1,
-3, 3, 206, 205, 1, 3, 3, 205, 246, 1, 3, 206, 54, 258, 1, 3, 258, 205, 206, 1,
-       3, 53, 259, 205, 1, 3, 53, 205, 258, 1, 3, 259, 65, 246, 1, 3, 246, 205, 259, 1,
-3, 1, 260, 195, 1, 3, 1, 195, 196, 1, 3, 69, 262, 195, 1, 3, 69, 195, 260, 1,
-       3, 262, 53, 258, 1, 3, 258, 195, 262, 1, 3, 54, 196, 195, 1, 3, 54, 195, 258, 1,
-3, 5, 264, 261, 1, 3, 5, 261, 267, 1, 3, 70, 265, 261, 1, 3, 70, 261, 264, 1,
-       3, 53, 262, 261, 1, 3, 53, 261, 265, 1, 3, 262, 69, 267, 1, 3, 267, 261, 262, 1,
-       3, 268, 4, 253, 1, 3, 253, 252, 268, 1, 3, 253, 65, 259, 1, 3, 259, 252, 253, 1,
-       3, 53, 265, 252, 1, 3, 53, 252, 259, 1, 3, 70, 268, 252, 1, 3, 70, 252, 265, 1,
-       3, 260, 1, 214, 1, 3, 214, 213, 260, 1, 3, 214, 59, 269, 1, 3, 269, 213, 214, 1,
-       3, 269, 58, 270, 1, 3, 270, 213, 269, 1, 3, 69, 260, 213, 1, 3, 69, 213, 270, 1,
-       3, 219, 0, 271, 1, 3, 271, 218, 219, 1, 3, 71, 273, 218, 1, 3, 71, 218, 271, 1,
-       3, 273, 58, 269, 1, 3, 269, 218, 273, 1, 3, 269, 59, 219, 1, 3, 219, 218, 269, 1,
-3, 6, 275, 272, 1, 3, 6, 272, 278, 1, 3, 72, 276, 272, 1, 3, 72, 272, 275, 1,
-       3, 276, 58, 273, 1, 3, 273, 272, 276, 1, 3, 71, 278, 272, 1, 3, 71, 272, 273, 1,
-3, 5, 267, 266, 1, 3, 5, 266, 279, 1, 3, 69, 270, 266, 1, 3, 69, 266, 267, 1,
-       3, 270, 58, 276, 1, 3, 276, 266, 270, 1, 3, 72, 279, 266, 1, 3, 72, 266, 276, 1,
-3, 0, 226, 225, 1, 3, 0, 225, 271, 1, 3, 62, 280, 225, 1, 3, 62, 225, 226, 1,
-       3, 280, 61, 281, 1, 3, 281, 225, 280, 1, 3, 71, 271, 225, 1, 3, 71, 225, 281, 1,
-3, 2, 245, 230, 1, 3, 2, 230, 231, 1, 3, 245, 68, 282, 1, 3, 282, 230, 245, 1,
-       3, 61, 280, 230, 1, 3, 61, 230, 282, 1, 3, 280, 62, 231, 1, 3, 231, 230, 280, 1,
-       3, 255, 7, 283, 1, 3, 283, 254, 255, 1, 3, 73, 284, 254, 1, 3, 73, 254, 283, 1,
-       3, 61, 282, 254, 1, 3, 61, 254, 284, 1, 3, 282, 68, 255, 1, 3, 255, 254, 282, 1,
-3, 6, 278, 277, 1, 3, 6, 277, 285, 1, 3, 278, 71, 281, 1, 3, 281, 277, 278, 1,
-       3, 61, 284, 277, 1, 3, 61, 277, 281, 1, 3, 73, 285, 277, 1, 3, 73, 277, 284, 1,
-3, 4, 268, 249, 1, 3, 4, 249, 250, 1, 3, 268, 70, 286, 1, 3, 286, 249, 268, 1,
-       3, 66, 287, 249, 1, 3, 66, 249, 286, 1, 3, 287, 67, 250, 1, 3, 250, 249, 287, 1,
-3, 5, 279, 263, 1, 3, 5, 263, 264, 1, 3, 279, 72, 288, 1, 3, 288, 263, 279, 1,
-       3, 66, 286, 263, 1, 3, 66, 263, 288, 1, 3, 286, 70, 264, 1, 3, 264, 263, 286, 1,
-3, 6, 285, 274, 1, 3, 6, 274, 275, 1, 3, 285, 73, 289, 1, 3, 289, 274, 285, 1,
-       3, 66, 288, 274, 1, 3, 66, 274, 289, 1, 3, 288, 72, 275, 1, 3, 275, 274, 288, 1,
-3, 7, 257, 256, 1, 3, 7, 256, 283, 1, 3, 257, 67, 287, 1, 3, 287, 256, 257, 1,
-       3, 66, 289, 256, 1, 3, 66, 256, 287, 1, 3, 289, 73, 283, 1, 3, 283, 256, 289, 1,
-
-       0
-};
-
-struct lwo  LWO_s1_5 =
-{
-       290,                    /* number of points */
-       s1_5_PNTS, s1_5_normals, s1_5_POLS, 0L
-};
-
-#endif /* USE_GL */
-
-/* End of s1_5.c */
diff --git a/hacks/glx/s1_6.c b/hacks/glx/s1_6.c
deleted file mode 100644 (file)
index fb9c60e..0000000
+++ /dev/null
@@ -1,1057 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)s1_6.c       4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Points, polygons, and normal vectors to render "s1_6" in 3D.
- *
- * Generated by lw2ogl.  Link this with your program but do
- * not edit by hand.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include "buildlwo.h"
-
-static GLfloat s1_6_PNTS[] =
-{
-       (GLfloat) 1.339151, (GLfloat) - 0.510672, (GLfloat) - 0.339151,
-       (GLfloat) 1.339151, (GLfloat) - 0.510672, (GLfloat) - 0.660849,
-       (GLfloat) 1.660849, (GLfloat) - 0.510672, (GLfloat) - 0.339151,
-       (GLfloat) 1.660849, (GLfloat) - 0.510672, (GLfloat) - 0.660849,
-       (GLfloat) 1.638667, (GLfloat) - 0.642463, (GLfloat) - 0.638667,
-       (GLfloat) 1.361333, (GLfloat) - 0.642463, (GLfloat) - 0.638667,
-       (GLfloat) 1.361333, (GLfloat) - 0.642463, (GLfloat) - 0.361333,
-       (GLfloat) 1.638667, (GLfloat) - 0.642463, (GLfloat) - 0.361333,
-       (GLfloat) 1.589301, (GLfloat) - 0.085107, (GLfloat) - 0.624049,
-       (GLfloat) 1.356947, (GLfloat) - 0.122198, (GLfloat) - 0.624049,
-       (GLfloat) 1.356947, (GLfloat) - 0.122198, (GLfloat) - 0.375951,
-       (GLfloat) 1.589301, (GLfloat) - 0.085107, (GLfloat) - 0.375951,
-       (GLfloat) 1.460394, (GLfloat) 0.412133, (GLfloat) - 0.660849,
-       (GLfloat) 1.460394, (GLfloat) 0.412133, (GLfloat) - 0.339151,
-       (GLfloat) 1.370035, (GLfloat) 0.524394, (GLfloat) - 0.361333,
-       (GLfloat) 1.370035, (GLfloat) 0.524394, (GLfloat) - 0.638667,
-       (GLfloat) 1.226863, (GLfloat) 0.204423, (GLfloat) - 0.339151,
-       (GLfloat) 1.177383, (GLfloat) 0.324897, (GLfloat) - 0.361333,
-       (GLfloat) 1.226863, (GLfloat) 0.204423, (GLfloat) - 0.660849,
-       (GLfloat) 1.177383, (GLfloat) 0.324897, (GLfloat) - 0.638667,
-       (GLfloat) 1.460683, (GLfloat) 0.568581, (GLfloat) - 0.500000,
-       (GLfloat) 1.564666, (GLfloat) 0.208184, (GLfloat) - 0.500000,
-       (GLfloat) 1.502855, (GLfloat) 0.449898, (GLfloat) - 0.500000,
-       (GLfloat) 1.294932, (GLfloat) 0.399266, (GLfloat) - 0.262379,
-       (GLfloat) 1.416649, (GLfloat) 0.522728, (GLfloat) - 0.326134,
-       (GLfloat) 1.260429, (GLfloat) 0.437469, (GLfloat) - 0.500000,
-       (GLfloat) 1.392236, (GLfloat) 0.557026, (GLfloat) - 0.500000,
-       (GLfloat) 1.294932, (GLfloat) 0.399266, (GLfloat) - 0.737621,
-       (GLfloat) 1.416649, (GLfloat) 0.522728, (GLfloat) - 0.673866,
-       (GLfloat) 1.412872, (GLfloat) 0.126752, (GLfloat) - 0.313640,
-       (GLfloat) 1.343629, (GLfloat) 0.308278, (GLfloat) - 0.280660,
-       (GLfloat) 1.129180, (GLfloat) 0.229952, (GLfloat) - 0.500000,
-       (GLfloat) 1.174088, (GLfloat) 0.274960, (GLfloat) - 0.326134,
-       (GLfloat) 1.268890, (GLfloat) 0.429299, (GLfloat) - 0.322437,
-       (GLfloat) 1.261078, (GLfloat) 0.045321, (GLfloat) - 0.500000,
-       (GLfloat) 1.184403, (GLfloat) 0.166658, (GLfloat) - 0.500000,
-       (GLfloat) 1.174088, (GLfloat) 0.274960, (GLfloat) - 0.673866,
-       (GLfloat) 1.145545, (GLfloat) 0.301571, (GLfloat) - 0.500000,
-       (GLfloat) 1.412872, (GLfloat) 0.126752, (GLfloat) - 0.686360,
-       (GLfloat) 1.343629, (GLfloat) 0.308278, (GLfloat) - 0.719340,
-       (GLfloat) 1.268890, (GLfloat) 0.429299, (GLfloat) - 0.677562,
-       (GLfloat) 1.524188, (GLfloat) 0.186469, (GLfloat) - 0.636664,
-       (GLfloat) 1.682599, (GLfloat) - 0.328303, (GLfloat) - 0.500000,
-       (GLfloat) 1.631547, (GLfloat) - 0.078363, (GLfloat) - 0.500000,
-       (GLfloat) 1.524188, (GLfloat) 0.186469, (GLfloat) - 0.363336,
-       (GLfloat) 1.301556, (GLfloat) 0.067036, (GLfloat) - 0.636664,
-       (GLfloat) 1.497312, (GLfloat) - 0.330832, (GLfloat) - 0.686360,
-       (GLfloat) 1.473124, (GLfloat) - 0.103652, (GLfloat) - 0.669158,
-       (GLfloat) 1.497312, (GLfloat) - 0.330832, (GLfloat) - 0.313640,
-       (GLfloat) 1.473124, (GLfloat) - 0.103652, (GLfloat) - 0.330842,
-       (GLfloat) 1.301556, (GLfloat) 0.067036, (GLfloat) - 0.363336,
-       (GLfloat) 1.312026, (GLfloat) - 0.333361, (GLfloat) - 0.500000,
-       (GLfloat) 1.314701, (GLfloat) - 0.128942, (GLfloat) - 0.500000,
-       (GLfloat) 1.500000, (GLfloat) - 0.609501, (GLfloat) - 0.737621,
-       (GLfloat) 1.500000, (GLfloat) - 0.510672, (GLfloat) - 0.719340,
-       (GLfloat) 1.633189, (GLfloat) - 0.328978, (GLfloat) - 0.636664,
-       (GLfloat) 1.361436, (GLfloat) - 0.332687, (GLfloat) - 0.636664,
-       (GLfloat) 1.361436, (GLfloat) - 0.332687, (GLfloat) - 0.363336,
-       (GLfloat) 1.262379, (GLfloat) - 0.609501, (GLfloat) - 0.500000,
-       (GLfloat) 1.280660, (GLfloat) - 0.510672, (GLfloat) - 0.500000,
-       (GLfloat) 1.633189, (GLfloat) - 0.328978, (GLfloat) - 0.363336,
-       (GLfloat) 1.500000, (GLfloat) - 0.609501, (GLfloat) - 0.262379,
-       (GLfloat) 1.500000, (GLfloat) - 0.510672, (GLfloat) - 0.280660,
-       (GLfloat) 1.737621, (GLfloat) - 0.609501, (GLfloat) - 0.500000,
-       (GLfloat) 1.719340, (GLfloat) - 0.510672, (GLfloat) - 0.500000,
-       (GLfloat) 1.673866, (GLfloat) - 0.608893, (GLfloat) - 0.673866,
-       (GLfloat) 1.500000, (GLfloat) - 0.660924, (GLfloat) - 0.500000,
-       (GLfloat) 1.677562, (GLfloat) - 0.649161, (GLfloat) - 0.500000,
-       (GLfloat) 1.673866, (GLfloat) - 0.608893, (GLfloat) - 0.326134,
-       (GLfloat) 1.326134, (GLfloat) - 0.608893, (GLfloat) - 0.673866,
-       (GLfloat) 1.500000, (GLfloat) - 0.649161, (GLfloat) - 0.677562,
-       (GLfloat) 1.326134, (GLfloat) - 0.608893, (GLfloat) - 0.326134,
-       (GLfloat) 1.322438, (GLfloat) - 0.649161, (GLfloat) - 0.500000,
-       (GLfloat) 1.500000, (GLfloat) - 0.649161, (GLfloat) - 0.322437,
-       (GLfloat) 1.470529, (GLfloat) 0.515074, (GLfloat) - 0.593594,
-       (GLfloat) 1.521298, (GLfloat) 0.332708, (GLfloat) - 0.580972,
-       (GLfloat) 1.492239, (GLfloat) 0.440457, (GLfloat) - 0.587736,
-       (GLfloat) 1.470529, (GLfloat) 0.515074, (GLfloat) - 0.406406,
-       (GLfloat) 1.481548, (GLfloat) 0.525864, (GLfloat) - 0.500000,
-       (GLfloat) 1.423386, (GLfloat) 0.566478, (GLfloat) - 0.587500,
-       (GLfloat) 1.449724, (GLfloat) 0.556950, (GLfloat) - 0.594774,
-       (GLfloat) 1.382377, (GLfloat) 0.428753, (GLfloat) - 0.718387,
-       (GLfloat) 1.437472, (GLfloat) 0.482703, (GLfloat) - 0.671590,
-       (GLfloat) 1.382377, (GLfloat) 0.428753, (GLfloat) - 0.281613,
-       (GLfloat) 1.437472, (GLfloat) 0.482703, (GLfloat) - 0.328410,
-       (GLfloat) 1.423386, (GLfloat) 0.566478, (GLfloat) - 0.412500,
-       (GLfloat) 1.449724, (GLfloat) 0.556950, (GLfloat) - 0.405226,
-       (GLfloat) 1.521298, (GLfloat) 0.332708, (GLfloat) - 0.419028,
-       (GLfloat) 1.492239, (GLfloat) 0.440457, (GLfloat) - 0.412264,
-       (GLfloat) 1.327417, (GLfloat) 0.498590, (GLfloat) - 0.409500,
-       (GLfloat) 1.384841, (GLfloat) 0.546182, (GLfloat) - 0.417500,
-       (GLfloat) 1.433279, (GLfloat) 0.578472, (GLfloat) - 0.500000,
-       (GLfloat) 1.341069, (GLfloat) 0.481236, (GLfloat) - 0.294000,
-       (GLfloat) 1.392914, (GLfloat) 0.533174, (GLfloat) - 0.339125,
-       (GLfloat) 1.341069, (GLfloat) 0.481236, (GLfloat) - 0.706000,
-       (GLfloat) 1.392914, (GLfloat) 0.533174, (GLfloat) - 0.660875,
-       (GLfloat) 1.327417, (GLfloat) 0.498590, (GLfloat) - 0.590500,
-       (GLfloat) 1.384841, (GLfloat) 0.546182, (GLfloat) - 0.582500,
-       (GLfloat) 1.438984, (GLfloat) 0.272283, (GLfloat) - 0.311066,
-       (GLfloat) 1.407319, (GLfloat) 0.364926, (GLfloat) - 0.295283,
-       (GLfloat) 1.250150, (GLfloat) 0.299272, (GLfloat) - 0.281613,
-       (GLfloat) 1.316263, (GLfloat) 0.364012, (GLfloat) - 0.266014,
-       (GLfloat) 1.361260, (GLfloat) 0.466583, (GLfloat) - 0.278403,
-       (GLfloat) 1.161998, (GLfloat) 0.212951, (GLfloat) - 0.406406,
-       (GLfloat) 1.195055, (GLfloat) 0.245321, (GLfloat) - 0.328410,
-       (GLfloat) 1.219504, (GLfloat) 0.355352, (GLfloat) - 0.294000,
-       (GLfloat) 1.229040, (GLfloat) 0.331527, (GLfloat) - 0.278403,
-       (GLfloat) 1.315513, (GLfloat) 0.181646, (GLfloat) - 0.311066,
-       (GLfloat) 1.279939, (GLfloat) 0.251630, (GLfloat) - 0.295283,
-       (GLfloat) 1.201684, (GLfloat) 0.368389, (GLfloat) - 0.409500,
-       (GLfloat) 1.213173, (GLfloat) 0.368416, (GLfloat) - 0.335375,
-       (GLfloat) 1.279412, (GLfloat) 0.419138, (GLfloat) - 0.278500,
-       (GLfloat) 1.137187, (GLfloat) 0.270110, (GLfloat) - 0.412500,
-       (GLfloat) 1.169407, (GLfloat) 0.301726, (GLfloat) - 0.339125,
-       (GLfloat) 1.327792, (GLfloat) 0.487107, (GLfloat) - 0.335375,
-       (GLfloat) 1.233200, (GLfloat) 0.121222, (GLfloat) - 0.419028,
-       (GLfloat) 1.195018, (GLfloat) 0.176099, (GLfloat) - 0.412264,
-       (GLfloat) 1.161998, (GLfloat) 0.212951, (GLfloat) - 0.593594,
-       (GLfloat) 1.150979, (GLfloat) 0.202161, (GLfloat) - 0.500000,
-       (GLfloat) 1.140576, (GLfloat) 0.241160, (GLfloat) - 0.405226,
-       (GLfloat) 1.250150, (GLfloat) 0.299272, (GLfloat) - 0.718387,
-       (GLfloat) 1.195055, (GLfloat) 0.245321, (GLfloat) - 0.671590,
-       (GLfloat) 1.137187, (GLfloat) 0.270110, (GLfloat) - 0.587500,
-       (GLfloat) 1.140576, (GLfloat) 0.241160, (GLfloat) - 0.594774,
-       (GLfloat) 1.233200, (GLfloat) 0.121222, (GLfloat) - 0.580972,
-       (GLfloat) 1.195018, (GLfloat) 0.176099, (GLfloat) - 0.587736,
-       (GLfloat) 1.201684, (GLfloat) 0.368389, (GLfloat) - 0.590500,
-       (GLfloat) 1.156124, (GLfloat) 0.309340, (GLfloat) - 0.582500,
-       (GLfloat) 1.125545, (GLfloat) 0.259804, (GLfloat) - 0.500000,
-       (GLfloat) 1.219504, (GLfloat) 0.355352, (GLfloat) - 0.706000,
-       (GLfloat) 1.169407, (GLfloat) 0.301726, (GLfloat) - 0.660875,
-       (GLfloat) 1.156124, (GLfloat) 0.309340, (GLfloat) - 0.417500,
-       (GLfloat) 1.315513, (GLfloat) 0.181646, (GLfloat) - 0.688934,
-       (GLfloat) 1.279939, (GLfloat) 0.251630, (GLfloat) - 0.704717,
-       (GLfloat) 1.316263, (GLfloat) 0.364012, (GLfloat) - 0.733986,
-       (GLfloat) 1.229040, (GLfloat) 0.331527, (GLfloat) - 0.721597,
-       (GLfloat) 1.361260, (GLfloat) 0.466583, (GLfloat) - 0.721597,
-       (GLfloat) 1.438984, (GLfloat) 0.272283, (GLfloat) - 0.688934,
-       (GLfloat) 1.407319, (GLfloat) 0.364926, (GLfloat) - 0.704717,
-       (GLfloat) 1.327792, (GLfloat) 0.487107, (GLfloat) - 0.664625,
-       (GLfloat) 1.279412, (GLfloat) 0.419138, (GLfloat) - 0.721500,
-       (GLfloat) 1.213173, (GLfloat) 0.368416, (GLfloat) - 0.664625,
-       (GLfloat) 1.262552, (GLfloat) 0.435419, (GLfloat) - 0.402250,
-       (GLfloat) 1.330455, (GLfloat) 0.505735, (GLfloat) - 0.500000,
-       (GLfloat) 1.194650, (GLfloat) 0.365104, (GLfloat) - 0.500000,
-       (GLfloat) 1.262552, (GLfloat) 0.435419, (GLfloat) - 0.597750,
-       (GLfloat) 1.490430, (GLfloat) 0.310049, (GLfloat) - 0.648448,
-       (GLfloat) 1.588828, (GLfloat) 0.061527, (GLfloat) - 0.569694,
-       (GLfloat) 1.554547, (GLfloat) 0.202755, (GLfloat) - 0.574544,
-       (GLfloat) 1.531587, (GLfloat) 0.340261, (GLfloat) - 0.500000,
-       (GLfloat) 1.647861, (GLfloat) - 0.211045, (GLfloat) - 0.569694,
-       (GLfloat) 1.620986, (GLfloat) - 0.080049, (GLfloat) - 0.567663,
-       (GLfloat) 1.588828, (GLfloat) 0.061527, (GLfloat) - 0.430306,
-       (GLfloat) 1.599013, (GLfloat) 0.064899, (GLfloat) - 0.500000,
-       (GLfloat) 1.507354, (GLfloat) 0.034552, (GLfloat) - 0.662619,
-       (GLfloat) 1.558275, (GLfloat) 0.051411, (GLfloat) - 0.627772,
-       (GLfloat) 1.507354, (GLfloat) 0.034552, (GLfloat) - 0.337381,
-       (GLfloat) 1.558275, (GLfloat) 0.051411, (GLfloat) - 0.372228,
-       (GLfloat) 1.554547, (GLfloat) 0.202755, (GLfloat) - 0.425456,
-       (GLfloat) 1.647861, (GLfloat) - 0.211045, (GLfloat) - 0.430306,
-       (GLfloat) 1.620986, (GLfloat) - 0.080049, (GLfloat) - 0.432337,
-       (GLfloat) 1.490430, (GLfloat) 0.310049, (GLfloat) - 0.351552,
-       (GLfloat) 1.264067, (GLfloat) 0.143881, (GLfloat) - 0.648448,
-       (GLfloat) 1.385142, (GLfloat) - 0.005911, (GLfloat) - 0.662619,
-       (GLfloat) 1.352154, (GLfloat) 0.094180, (GLfloat) - 0.673936,
-       (GLfloat) 1.377249, (GLfloat) 0.226965, (GLfloat) - 0.702430,
-       (GLfloat) 1.421273, (GLfloat) - 0.224532, (GLfloat) - 0.662619,
-       (GLfloat) 1.409755, (GLfloat) - 0.113768, (GLfloat) - 0.657881,
-       (GLfloat) 1.446248, (GLfloat) 0.014320, (GLfloat) - 0.674234,
-       (GLfloat) 1.303667, (GLfloat) - 0.032887, (GLfloat) - 0.569694,
-       (GLfloat) 1.334220, (GLfloat) - 0.022771, (GLfloat) - 0.627772,
-       (GLfloat) 1.473590, (GLfloat) 0.159325, (GLfloat) - 0.673936,
-       (GLfloat) 1.557226, (GLfloat) - 0.216440, (GLfloat) - 0.662619,
-       (GLfloat) 1.536493, (GLfloat) - 0.093537, (GLfloat) - 0.657881,
-       (GLfloat) 1.377249, (GLfloat) 0.226965, (GLfloat) - 0.297570,
-       (GLfloat) 1.385142, (GLfloat) - 0.005911, (GLfloat) - 0.337381,
-       (GLfloat) 1.352154, (GLfloat) 0.094180, (GLfloat) - 0.326064,
-       (GLfloat) 1.264067, (GLfloat) 0.143881, (GLfloat) - 0.351552,
-       (GLfloat) 1.473590, (GLfloat) 0.159325, (GLfloat) - 0.326064,
-       (GLfloat) 1.557226, (GLfloat) - 0.216440, (GLfloat) - 0.337381,
-       (GLfloat) 1.536493, (GLfloat) - 0.093537, (GLfloat) - 0.342119,
-       (GLfloat) 1.446248, (GLfloat) 0.014320, (GLfloat) - 0.325766,
-       (GLfloat) 1.303667, (GLfloat) - 0.032887, (GLfloat) - 0.430306,
-       (GLfloat) 1.334220, (GLfloat) - 0.022771, (GLfloat) - 0.372228,
-       (GLfloat) 1.421273, (GLfloat) - 0.224532, (GLfloat) - 0.337381,
-       (GLfloat) 1.409755, (GLfloat) - 0.113768, (GLfloat) - 0.342119,
-       (GLfloat) 1.222911, (GLfloat) 0.113669, (GLfloat) - 0.500000,
-       (GLfloat) 1.271198, (GLfloat) 0.050750, (GLfloat) - 0.574544,
-       (GLfloat) 1.271198, (GLfloat) 0.050750, (GLfloat) - 0.425456,
-       (GLfloat) 1.330638, (GLfloat) - 0.229927, (GLfloat) - 0.430306,
-       (GLfloat) 1.325262, (GLfloat) - 0.127256, (GLfloat) - 0.432337,
-       (GLfloat) 1.293483, (GLfloat) - 0.036258, (GLfloat) - 0.500000,
-       (GLfloat) 1.330638, (GLfloat) - 0.229927, (GLfloat) - 0.569694,
-       (GLfloat) 1.325262, (GLfloat) - 0.127256, (GLfloat) - 0.567663,
-       (GLfloat) 1.419028, (GLfloat) - 0.429344, (GLfloat) - 0.688934,
-       (GLfloat) 1.406406, (GLfloat) - 0.569469, (GLfloat) - 0.718387,
-       (GLfloat) 1.412264, (GLfloat) - 0.510672, (GLfloat) - 0.704717,
-       (GLfloat) 1.580972, (GLfloat) - 0.429344, (GLfloat) - 0.688934,
-       (GLfloat) 1.500000, (GLfloat) - 0.429344, (GLfloat) - 0.702430,
-       (GLfloat) 1.423198, (GLfloat) - 0.331844, (GLfloat) - 0.673936,
-       (GLfloat) 1.311066, (GLfloat) - 0.429344, (GLfloat) - 0.580972,
-       (GLfloat) 1.351552, (GLfloat) - 0.429344, (GLfloat) - 0.648448,
-       (GLfloat) 1.688934, (GLfloat) - 0.429344, (GLfloat) - 0.580972,
-       (GLfloat) 1.648448, (GLfloat) - 0.429344, (GLfloat) - 0.648448,
-       (GLfloat) 1.571427, (GLfloat) - 0.329821, (GLfloat) - 0.673936,
-       (GLfloat) 1.593594, (GLfloat) - 0.569469, (GLfloat) - 0.718387,
-       (GLfloat) 1.587736, (GLfloat) - 0.510672, (GLfloat) - 0.704717,
-       (GLfloat) 1.489249, (GLfloat) - 0.220486, (GLfloat) - 0.674234,
-       (GLfloat) 1.613873, (GLfloat) - 0.213068, (GLfloat) - 0.627772,
-       (GLfloat) 1.364627, (GLfloat) - 0.227904, (GLfloat) - 0.627772,
-       (GLfloat) 1.324378, (GLfloat) - 0.333193, (GLfloat) - 0.574544,
-       (GLfloat) 1.311066, (GLfloat) - 0.429344, (GLfloat) - 0.419028,
-       (GLfloat) 1.297570, (GLfloat) - 0.429344, (GLfloat) - 0.500000,
-       (GLfloat) 1.281613, (GLfloat) - 0.569469, (GLfloat) - 0.593594,
-       (GLfloat) 1.295283, (GLfloat) - 0.510672, (GLfloat) - 0.587736,
-       (GLfloat) 1.319309, (GLfloat) - 0.230602, (GLfloat) - 0.500000,
-       (GLfloat) 1.364627, (GLfloat) - 0.227904, (GLfloat) - 0.372228,
-       (GLfloat) 1.324378, (GLfloat) - 0.333193, (GLfloat) - 0.425456,
-       (GLfloat) 1.281613, (GLfloat) - 0.569469, (GLfloat) - 0.406406,
-       (GLfloat) 1.295283, (GLfloat) - 0.510672, (GLfloat) - 0.412264,
-       (GLfloat) 1.419028, (GLfloat) - 0.429344, (GLfloat) - 0.311066,
-       (GLfloat) 1.351552, (GLfloat) - 0.429344, (GLfloat) - 0.351552,
-       (GLfloat) 1.423198, (GLfloat) - 0.331844, (GLfloat) - 0.326064,
-       (GLfloat) 1.580972, (GLfloat) - 0.429344, (GLfloat) - 0.311066,
-       (GLfloat) 1.500000, (GLfloat) - 0.429344, (GLfloat) - 0.297570,
-       (GLfloat) 1.406406, (GLfloat) - 0.569469, (GLfloat) - 0.281613,
-       (GLfloat) 1.412264, (GLfloat) - 0.510672, (GLfloat) - 0.295283,
-       (GLfloat) 1.489249, (GLfloat) - 0.220486, (GLfloat) - 0.325766,
-       (GLfloat) 1.613873, (GLfloat) - 0.213068, (GLfloat) - 0.372228,
-       (GLfloat) 1.571427, (GLfloat) - 0.329821, (GLfloat) - 0.326064,
-       (GLfloat) 1.593594, (GLfloat) - 0.569469, (GLfloat) - 0.281613,
-       (GLfloat) 1.587736, (GLfloat) - 0.510672, (GLfloat) - 0.295283,
-       (GLfloat) 1.688934, (GLfloat) - 0.429344, (GLfloat) - 0.419028,
-       (GLfloat) 1.648448, (GLfloat) - 0.429344, (GLfloat) - 0.351552,
-       (GLfloat) 1.670246, (GLfloat) - 0.328472, (GLfloat) - 0.425456,
-       (GLfloat) 1.702430, (GLfloat) - 0.429344, (GLfloat) - 0.500000,
-       (GLfloat) 1.718387, (GLfloat) - 0.569469, (GLfloat) - 0.406406,
-       (GLfloat) 1.704717, (GLfloat) - 0.510672, (GLfloat) - 0.412264,
-       (GLfloat) 1.659190, (GLfloat) - 0.210370, (GLfloat) - 0.500000,
-       (GLfloat) 1.670246, (GLfloat) - 0.328472, (GLfloat) - 0.574544,
-       (GLfloat) 1.718387, (GLfloat) - 0.569469, (GLfloat) - 0.593594,
-       (GLfloat) 1.704717, (GLfloat) - 0.510672, (GLfloat) - 0.587736,
-       (GLfloat) 1.733986, (GLfloat) - 0.569469, (GLfloat) - 0.500000,
-       (GLfloat) 1.706000, (GLfloat) - 0.633319, (GLfloat) - 0.412500,
-       (GLfloat) 1.721597, (GLfloat) - 0.609197, (GLfloat) - 0.405226,
-       (GLfloat) 1.671590, (GLfloat) - 0.569469, (GLfloat) - 0.328410,
-       (GLfloat) 1.671590, (GLfloat) - 0.569469, (GLfloat) - 0.671590,
-       (GLfloat) 1.706000, (GLfloat) - 0.633319, (GLfloat) - 0.587500,
-       (GLfloat) 1.721597, (GLfloat) - 0.609197, (GLfloat) - 0.594774,
-       (GLfloat) 1.590500, (GLfloat) - 0.655194, (GLfloat) - 0.590500,
-       (GLfloat) 1.664625, (GLfloat) - 0.646948, (GLfloat) - 0.582500,
-       (GLfloat) 1.721500, (GLfloat) - 0.634535, (GLfloat) - 0.500000,
-       (GLfloat) 1.587500, (GLfloat) - 0.633319, (GLfloat) - 0.706000,
-       (GLfloat) 1.660875, (GLfloat) - 0.632104, (GLfloat) - 0.660875,
-       (GLfloat) 1.587500, (GLfloat) - 0.633319, (GLfloat) - 0.294000,
-       (GLfloat) 1.660875, (GLfloat) - 0.632104, (GLfloat) - 0.339125,
-       (GLfloat) 1.590500, (GLfloat) - 0.655194, (GLfloat) - 0.409500,
-       (GLfloat) 1.664625, (GLfloat) - 0.646948, (GLfloat) - 0.417500,
-       (GLfloat) 1.500000, (GLfloat) - 0.569469, (GLfloat) - 0.733986,
-       (GLfloat) 1.594774, (GLfloat) - 0.609197, (GLfloat) - 0.721597,
-       (GLfloat) 1.328410, (GLfloat) - 0.569469, (GLfloat) - 0.671590,
-       (GLfloat) 1.412500, (GLfloat) - 0.633319, (GLfloat) - 0.706000,
-       (GLfloat) 1.405226, (GLfloat) - 0.609197, (GLfloat) - 0.721597,
-       (GLfloat) 1.409500, (GLfloat) - 0.655194, (GLfloat) - 0.590500,
-       (GLfloat) 1.417500, (GLfloat) - 0.646948, (GLfloat) - 0.664625,
-       (GLfloat) 1.500000, (GLfloat) - 0.634535, (GLfloat) - 0.721500,
-       (GLfloat) 1.294000, (GLfloat) - 0.633319, (GLfloat) - 0.587500,
-       (GLfloat) 1.339125, (GLfloat) - 0.632104, (GLfloat) - 0.660875,
-       (GLfloat) 1.582500, (GLfloat) - 0.646948, (GLfloat) - 0.664625,
-       (GLfloat) 1.266014, (GLfloat) - 0.569469, (GLfloat) - 0.500000,
-       (GLfloat) 1.278403, (GLfloat) - 0.609197, (GLfloat) - 0.594774,
-       (GLfloat) 1.328410, (GLfloat) - 0.569469, (GLfloat) - 0.328410,
-       (GLfloat) 1.294000, (GLfloat) - 0.633319, (GLfloat) - 0.412500,
-       (GLfloat) 1.278403, (GLfloat) - 0.609197, (GLfloat) - 0.405226,
-       (GLfloat) 1.409500, (GLfloat) - 0.655194, (GLfloat) - 0.409500,
-       (GLfloat) 1.335375, (GLfloat) - 0.646948, (GLfloat) - 0.417500,
-       (GLfloat) 1.278500, (GLfloat) - 0.634535, (GLfloat) - 0.500000,
-       (GLfloat) 1.412500, (GLfloat) - 0.633319, (GLfloat) - 0.294000,
-       (GLfloat) 1.339125, (GLfloat) - 0.632104, (GLfloat) - 0.339125,
-       (GLfloat) 1.335375, (GLfloat) - 0.646948, (GLfloat) - 0.582500,
-       (GLfloat) 1.500000, (GLfloat) - 0.569469, (GLfloat) - 0.266014,
-       (GLfloat) 1.405226, (GLfloat) - 0.609197, (GLfloat) - 0.278403,
-       (GLfloat) 1.594774, (GLfloat) - 0.609197, (GLfloat) - 0.278403,
-       (GLfloat) 1.582500, (GLfloat) - 0.646948, (GLfloat) - 0.335375,
-       (GLfloat) 1.500000, (GLfloat) - 0.634535, (GLfloat) - 0.278500,
-       (GLfloat) 1.417500, (GLfloat) - 0.646948, (GLfloat) - 0.335375,
-       (GLfloat) 1.500000, (GLfloat) - 0.657972, (GLfloat) - 0.597750,
-       (GLfloat) 1.597750, (GLfloat) - 0.657972, (GLfloat) - 0.500000,
-       (GLfloat) 1.402250, (GLfloat) - 0.657972, (GLfloat) - 0.500000,
-       (GLfloat) 1.500000, (GLfloat) - 0.657972, (GLfloat) - 0.402250,
-};
-
-static GLfloat s1_6_normals[] =
-{
-       (GLfloat) 0.863661, (GLfloat) 0.210849, (GLfloat) - 0.457857,
-       (GLfloat) 0.863729, (GLfloat) 0.215548, (GLfloat) - 0.455534,
-       (GLfloat) 0.952947, (GLfloat) 0.267284, (GLfloat) - 0.143006,
-       (GLfloat) 0.953156, (GLfloat) 0.266032, (GLfloat) - 0.143950,
-       (GLfloat) 0.887569, (GLfloat) 0.433517, (GLfloat) - 0.155833,
-       (GLfloat) 0.886526, (GLfloat) 0.436070, (GLfloat) - 0.154645,
-       (GLfloat) 0.784332, (GLfloat) 0.380163, (GLfloat) - 0.490203,
-       (GLfloat) 0.785458, (GLfloat) 0.376379, (GLfloat) - 0.491319,
-       (GLfloat) 0.863661, (GLfloat) 0.210849, (GLfloat) 0.457857,
-       (GLfloat) 0.863729, (GLfloat) 0.215548, (GLfloat) 0.455534,
-       (GLfloat) 0.785458, (GLfloat) 0.376379, (GLfloat) 0.491319,
-       (GLfloat) 0.784333, (GLfloat) 0.380162, (GLfloat) 0.490203,
-       (GLfloat) 0.887569, (GLfloat) 0.433517, (GLfloat) 0.155833,
-       (GLfloat) 0.886526, (GLfloat) 0.436070, (GLfloat) 0.154645,
-       (GLfloat) 0.953156, (GLfloat) 0.266032, (GLfloat) 0.143950,
-       (GLfloat) 0.952947, (GLfloat) 0.267284, (GLfloat) 0.143006,
-       (GLfloat) - 0.476698, (GLfloat) 0.854621, (GLfloat) 0.205866,
-       (GLfloat) - 0.498450, (GLfloat) 0.848428, (GLfloat) 0.178092,
-       (GLfloat) - 0.462000, (GLfloat) 0.884194, (GLfloat) 0.068965,
-       (GLfloat) - 0.472068, (GLfloat) 0.878521, (GLfloat) 0.073162,
-       (GLfloat) 0.299348, (GLfloat) 0.942240, (GLfloat) 0.150245,
-       (GLfloat) 0.334834, (GLfloat) 0.927714, (GLfloat) 0.165022,
-       (GLfloat) 0.146237, (GLfloat) 0.884155, (GLfloat) 0.443716,
-       (GLfloat) 0.183286, (GLfloat) 0.864289, (GLfloat) 0.468413,
-       (GLfloat) - 0.498450, (GLfloat) 0.848429, (GLfloat) - 0.178092,
-       (GLfloat) - 0.476698, (GLfloat) 0.854621, (GLfloat) - 0.205865,
-       (GLfloat) 0.146237, (GLfloat) 0.884155, (GLfloat) - 0.443716,
-       (GLfloat) 0.183286, (GLfloat) 0.864289, (GLfloat) - 0.468413,
-       (GLfloat) 0.334834, (GLfloat) 0.927714, (GLfloat) - 0.165022,
-       (GLfloat) 0.299348, (GLfloat) 0.942240, (GLfloat) - 0.150245,
-       (GLfloat) - 0.472068, (GLfloat) 0.878521, (GLfloat) - 0.073162,
-       (GLfloat) - 0.462000, (GLfloat) 0.884194, (GLfloat) - 0.068965,
-       (GLfloat) 0.601151, (GLfloat) 0.064321, (GLfloat) 0.796542,
-       (GLfloat) 0.602133, (GLfloat) 0.074603, (GLfloat) 0.794903,
-       (GLfloat) 0.305416, (GLfloat) - 0.098916, (GLfloat) 0.947067,
-       (GLfloat) 0.305705, (GLfloat) - 0.083664, (GLfloat) 0.948443,
-       (GLfloat) 0.204663, (GLfloat) 0.031235, (GLfloat) 0.978334,
-       (GLfloat) 0.206924, (GLfloat) 0.024347, (GLfloat) 0.978054,
-       (GLfloat) 0.503723, (GLfloat) 0.214462, (GLfloat) 0.836821,
-       (GLfloat) 0.504738, (GLfloat) 0.210719, (GLfloat) 0.837160,
-       (GLfloat) - 0.295242, (GLfloat) - 0.450841, (GLfloat) 0.842363,
-       (GLfloat) - 0.299933, (GLfloat) - 0.431633, (GLfloat) 0.850725,
-       (GLfloat) - 0.391261, (GLfloat) - 0.341115, (GLfloat) 0.854725,
-       (GLfloat) - 0.390827, (GLfloat) - 0.342109, (GLfloat) 0.854527,
-       (GLfloat) - 0.083295, (GLfloat) - 0.151964, (GLfloat) 0.984870,
-       (GLfloat) - 0.083124, (GLfloat) - 0.152402, (GLfloat) 0.984817,
-       (GLfloat) 0.015860, (GLfloat) - 0.266588, (GLfloat) 0.963680,
-       (GLfloat) 0.013989, (GLfloat) - 0.247700, (GLfloat) 0.968736,
-       (GLfloat) - 0.816724, (GLfloat) 0.502516, (GLfloat) 0.283619,
-       (GLfloat) - 0.805591, (GLfloat) 0.530375, (GLfloat) 0.264055,
-       (GLfloat) - 0.732550, (GLfloat) 0.603459, (GLfloat) 0.314971,
-       (GLfloat) - 0.730076, (GLfloat) 0.611620, (GLfloat) 0.304811,
-       (GLfloat) - 0.516849, (GLfloat) 0.314381, (GLfloat) 0.796261,
-       (GLfloat) - 0.502724, (GLfloat) 0.272837, (GLfloat) 0.820261,
-       (GLfloat) - 0.744687, (GLfloat) 0.181500, (GLfloat) 0.642261,
-       (GLfloat) - 0.739362, (GLfloat) 0.135764, (GLfloat) 0.659478,
-       (GLfloat) - 0.549371, (GLfloat) 0.797029, (GLfloat) 0.250869,
-       (GLfloat) - 0.542332, (GLfloat) 0.789948, (GLfloat) 0.286109,
-       (GLfloat) - 0.086395, (GLfloat) 0.693389, (GLfloat) 0.715365,
-       (GLfloat) - 0.059539, (GLfloat) 0.687907, (GLfloat) 0.723353,
-       (GLfloat) - 0.265868, (GLfloat) 0.473566, (GLfloat) 0.839672,
-       (GLfloat) - 0.289224, (GLfloat) 0.481874, (GLfloat) 0.827131,
-       (GLfloat) - 0.628658, (GLfloat) 0.711043, (GLfloat) 0.314972,
-       (GLfloat) - 0.636726, (GLfloat) 0.708286, (GLfloat) 0.304813,
-       (GLfloat) - 0.602622, (GLfloat) - 0.619862, (GLfloat) 0.502612,
-       (GLfloat) - 0.608832, (GLfloat) - 0.607495, (GLfloat) 0.510170,
-       (GLfloat) - 0.718752, (GLfloat) - 0.676658, (GLfloat) 0.159776,
-       (GLfloat) - 0.721882, (GLfloat) - 0.672658, (GLfloat) 0.162535,
-       (GLfloat) - 0.782122, (GLfloat) - 0.600854, (GLfloat) 0.165107,
-       (GLfloat) - 0.776469, (GLfloat) - 0.609074, (GLfloat) 0.161631,
-       (GLfloat) - 0.682182, (GLfloat) - 0.521915, (GLfloat) 0.512086,
-       (GLfloat) - 0.675579, (GLfloat) - 0.534280, (GLfloat) 0.508073,
-       (GLfloat) - 0.608832, (GLfloat) - 0.607495, (GLfloat) - 0.510170,
-       (GLfloat) - 0.602622, (GLfloat) - 0.619862, (GLfloat) - 0.502612,
-       (GLfloat) - 0.682182, (GLfloat) - 0.521915, (GLfloat) - 0.512086,
-       (GLfloat) - 0.675579, (GLfloat) - 0.534280, (GLfloat) - 0.508073,
-       (GLfloat) - 0.776469, (GLfloat) - 0.609074, (GLfloat) - 0.161631,
-       (GLfloat) - 0.782122, (GLfloat) - 0.600854, (GLfloat) - 0.165107,
-       (GLfloat) - 0.718752, (GLfloat) - 0.676658, (GLfloat) - 0.159776,
-       (GLfloat) - 0.721882, (GLfloat) - 0.672658, (GLfloat) - 0.162535,
-       (GLfloat) - 0.870738, (GLfloat) 0.446582, (GLfloat) - 0.205866,
-       (GLfloat) - 0.865307, (GLfloat) 0.468537, (GLfloat) - 0.178091,
-       (GLfloat) - 0.899779, (GLfloat) 0.430861, (GLfloat) - 0.068965,
-       (GLfloat) - 0.894461, (GLfloat) 0.441120, (GLfloat) - 0.073162,
-       (GLfloat) - 0.988176, (GLfloat) - 0.083362, (GLfloat) - 0.128682,
-       (GLfloat) - 0.982213, (GLfloat) - 0.119589, (GLfloat) - 0.144763,
-       (GLfloat) - 0.919779, (GLfloat) 0.029098, (GLfloat) - 0.391357,
-       (GLfloat) - 0.919364, (GLfloat) - 0.008818, (GLfloat) - 0.393310,
-       (GLfloat) - 0.865307, (GLfloat) 0.468537, (GLfloat) 0.178091,
-       (GLfloat) - 0.870738, (GLfloat) 0.446582, (GLfloat) 0.205866,
-       (GLfloat) - 0.919364, (GLfloat) - 0.008818, (GLfloat) 0.393310,
-       (GLfloat) - 0.919779, (GLfloat) 0.029098, (GLfloat) 0.391357,
-       (GLfloat) - 0.982213, (GLfloat) - 0.119589, (GLfloat) 0.144763,
-       (GLfloat) - 0.988176, (GLfloat) - 0.083362, (GLfloat) 0.128682,
-       (GLfloat) - 0.894461, (GLfloat) 0.441120, (GLfloat) 0.073162,
-       (GLfloat) - 0.899779, (GLfloat) 0.430861, (GLfloat) 0.068965,
-       (GLfloat) - 0.295242, (GLfloat) - 0.450841, (GLfloat) - 0.842362,
-       (GLfloat) - 0.299933, (GLfloat) - 0.431632, (GLfloat) - 0.850725,
-       (GLfloat) 0.013989, (GLfloat) - 0.247700, (GLfloat) - 0.968736,
-       (GLfloat) 0.015860, (GLfloat) - 0.266588, (GLfloat) - 0.963680,
-       (GLfloat) - 0.083295, (GLfloat) - 0.151964, (GLfloat) - 0.984870,
-       (GLfloat) - 0.083124, (GLfloat) - 0.152402, (GLfloat) - 0.984817,
-       (GLfloat) - 0.390828, (GLfloat) - 0.342108, (GLfloat) - 0.854527,
-       (GLfloat) - 0.391261, (GLfloat) - 0.341115, (GLfloat) - 0.854725,
-       (GLfloat) 0.602133, (GLfloat) 0.074603, (GLfloat) - 0.794903,
-       (GLfloat) 0.601151, (GLfloat) 0.064322, (GLfloat) - 0.796542,
-       (GLfloat) 0.503722, (GLfloat) 0.214463, (GLfloat) - 0.836821,
-       (GLfloat) 0.504737, (GLfloat) 0.210719, (GLfloat) - 0.837161,
-       (GLfloat) 0.206924, (GLfloat) 0.024347, (GLfloat) - 0.978054,
-       (GLfloat) 0.204663, (GLfloat) 0.031235, (GLfloat) - 0.978334,
-       (GLfloat) 0.305416, (GLfloat) - 0.098916, (GLfloat) - 0.947067,
-       (GLfloat) 0.305705, (GLfloat) - 0.083664, (GLfloat) - 0.948443,
-       (GLfloat) - 0.549371, (GLfloat) 0.797029, (GLfloat) - 0.250870,
-       (GLfloat) - 0.542332, (GLfloat) 0.789948, (GLfloat) - 0.286110,
-       (GLfloat) - 0.628658, (GLfloat) 0.711043, (GLfloat) - 0.314972,
-       (GLfloat) - 0.636726, (GLfloat) 0.708286, (GLfloat) - 0.304813,
-       (GLfloat) - 0.289225, (GLfloat) 0.481875, (GLfloat) - 0.827131,
-       (GLfloat) - 0.265869, (GLfloat) 0.473567, (GLfloat) - 0.839672,
-       (GLfloat) - 0.086396, (GLfloat) 0.693390, (GLfloat) - 0.715365,
-       (GLfloat) - 0.059540, (GLfloat) 0.687907, (GLfloat) - 0.723352,
-       (GLfloat) - 0.805592, (GLfloat) 0.530374, (GLfloat) - 0.264056,
-       (GLfloat) - 0.816724, (GLfloat) 0.502516, (GLfloat) - 0.283619,
-       (GLfloat) - 0.744687, (GLfloat) 0.181500, (GLfloat) - 0.642260,
-       (GLfloat) - 0.739363, (GLfloat) 0.135764, (GLfloat) - 0.659478,
-       (GLfloat) - 0.502724, (GLfloat) 0.272838, (GLfloat) - 0.820261,
-       (GLfloat) - 0.516850, (GLfloat) 0.314382, (GLfloat) - 0.796260,
-       (GLfloat) - 0.732550, (GLfloat) 0.603460, (GLfloat) - 0.314971,
-       (GLfloat) - 0.730076, (GLfloat) 0.611620, (GLfloat) - 0.304812,
-       (GLfloat) - 0.612735, (GLfloat) 0.780498, (GLfloat) 0.124010,
-       (GLfloat) - 0.620926, (GLfloat) 0.772016, (GLfloat) 0.135801,
-       (GLfloat) - 0.683860, (GLfloat) 0.721331, (GLfloat) 0.109621,
-       (GLfloat) - 0.686475, (GLfloat) 0.718049, (GLfloat) 0.114708,
-       (GLfloat) - 0.697666, (GLfloat) 0.715659, (GLfloat) 0.033080,
-       (GLfloat) - 0.695640, (GLfloat) 0.717757, (GLfloat) 0.030164,
-       (GLfloat) - 0.638159, (GLfloat) 0.768656, (GLfloat) 0.043833,
-       (GLfloat) - 0.634338, (GLfloat) 0.772038, (GLfloat) 0.039657,
-       (GLfloat) - 0.793216, (GLfloat) 0.593605, (GLfloat) 0.135802,
-       (GLfloat) - 0.801406, (GLfloat) 0.585123, (GLfloat) 0.124011,
-       (GLfloat) - 0.790459, (GLfloat) 0.610945, (GLfloat) 0.043833,
-       (GLfloat) - 0.793705, (GLfloat) 0.607008, (GLfloat) 0.039656,
-       (GLfloat) - 0.741597, (GLfloat) 0.670167, (GLfloat) 0.030164,
-       (GLfloat) - 0.739572, (GLfloat) 0.672265, (GLfloat) 0.033079,
-       (GLfloat) - 0.744759, (GLfloat) 0.658269, (GLfloat) 0.109621,
-       (GLfloat) - 0.741569, (GLfloat) 0.660997, (GLfloat) 0.114710,
-       (GLfloat) - 0.801406, (GLfloat) 0.585123, (GLfloat) - 0.124011,
-       (GLfloat) - 0.793216, (GLfloat) 0.593605, (GLfloat) - 0.135802,
-       (GLfloat) - 0.744759, (GLfloat) 0.658269, (GLfloat) - 0.109621,
-       (GLfloat) - 0.741569, (GLfloat) 0.660997, (GLfloat) - 0.114710,
-       (GLfloat) - 0.739572, (GLfloat) 0.672265, (GLfloat) - 0.033079,
-       (GLfloat) - 0.741597, (GLfloat) 0.670167, (GLfloat) - 0.030164,
-       (GLfloat) - 0.790459, (GLfloat) 0.610945, (GLfloat) - 0.043833,
-       (GLfloat) - 0.793705, (GLfloat) 0.607008, (GLfloat) - 0.039656,
-       (GLfloat) - 0.620926, (GLfloat) 0.772016, (GLfloat) - 0.135801,
-       (GLfloat) - 0.612735, (GLfloat) 0.780498, (GLfloat) - 0.124010,
-       (GLfloat) - 0.638159, (GLfloat) 0.768656, (GLfloat) - 0.043833,
-       (GLfloat) - 0.634338, (GLfloat) 0.772038, (GLfloat) - 0.039657,
-       (GLfloat) - 0.695640, (GLfloat) 0.717757, (GLfloat) - 0.030164,
-       (GLfloat) - 0.697666, (GLfloat) 0.715659, (GLfloat) - 0.033080,
-       (GLfloat) - 0.683860, (GLfloat) 0.721331, (GLfloat) - 0.109621,
-       (GLfloat) - 0.686475, (GLfloat) 0.718049, (GLfloat) - 0.114708,
-       (GLfloat) 0.864441, (GLfloat) 0.198220, (GLfloat) - 0.462008,
-       (GLfloat) 0.865832, (GLfloat) 0.204848, (GLfloat) - 0.456478,
-       (GLfloat) 0.861398, (GLfloat) 0.190399, (GLfloat) - 0.470894,
-       (GLfloat) 0.864411, (GLfloat) 0.198309, (GLfloat) - 0.462024,
-       (GLfloat) 0.959873, (GLfloat) 0.240404, (GLfloat) - 0.144397,
-       (GLfloat) 0.959903, (GLfloat) 0.238290, (GLfloat) - 0.147664,
-       (GLfloat) 0.957414, (GLfloat) 0.250909, (GLfloat) - 0.142837,
-       (GLfloat) 0.957562, (GLfloat) 0.249145, (GLfloat) - 0.144919,
-       (GLfloat) 0.850599, (GLfloat) 0.179835, (GLfloat) - 0.494106,
-       (GLfloat) 0.855506, (GLfloat) 0.187394, (GLfloat) - 0.482693,
-       (GLfloat) 0.963921, (GLfloat) 0.218904, (GLfloat) - 0.151448,
-       (GLfloat) 0.963730, (GLfloat) 0.216664, (GLfloat) - 0.155826,
-       (GLfloat) 0.961835, (GLfloat) 0.230558, (GLfloat) - 0.147363,
-       (GLfloat) 0.961732, (GLfloat) 0.228244, (GLfloat) - 0.151580,
-       (GLfloat) 0.856249, (GLfloat) 0.184340, (GLfloat) - 0.482552,
-       (GLfloat) 0.860720, (GLfloat) 0.192749, (GLfloat) - 0.471178,
-       (GLfloat) 0.850599, (GLfloat) 0.179835, (GLfloat) 0.494106,
-       (GLfloat) 0.855506, (GLfloat) 0.187394, (GLfloat) 0.482693,
-       (GLfloat) 0.860720, (GLfloat) 0.192749, (GLfloat) 0.471179,
-       (GLfloat) 0.856249, (GLfloat) 0.184340, (GLfloat) 0.482552,
-       (GLfloat) 0.961835, (GLfloat) 0.230558, (GLfloat) 0.147363,
-       (GLfloat) 0.961732, (GLfloat) 0.228244, (GLfloat) 0.151580,
-       (GLfloat) 0.963730, (GLfloat) 0.216664, (GLfloat) 0.155826,
-       (GLfloat) 0.963921, (GLfloat) 0.218904, (GLfloat) 0.151448,
-       (GLfloat) 0.865832, (GLfloat) 0.204848, (GLfloat) 0.456478,
-       (GLfloat) 0.864441, (GLfloat) 0.198220, (GLfloat) 0.462008,
-       (GLfloat) 0.957414, (GLfloat) 0.250909, (GLfloat) 0.142837,
-       (GLfloat) 0.957562, (GLfloat) 0.249144, (GLfloat) 0.144919,
-       (GLfloat) 0.959903, (GLfloat) 0.238290, (GLfloat) 0.147664,
-       (GLfloat) 0.959873, (GLfloat) 0.240404, (GLfloat) 0.144397,
-       (GLfloat) 0.861398, (GLfloat) 0.190399, (GLfloat) 0.470894,
-       (GLfloat) 0.864411, (GLfloat) 0.198309, (GLfloat) 0.462024,
-       (GLfloat) - 0.368470, (GLfloat) - 0.398468, (GLfloat) - 0.839912,
-       (GLfloat) - 0.366469, (GLfloat) - 0.378022, (GLfloat) - 0.850177,
-       (GLfloat) - 0.433076, (GLfloat) - 0.339336, (GLfloat) - 0.835043,
-       (GLfloat) - 0.426924, (GLfloat) - 0.323639, (GLfloat) - 0.844390,
-       (GLfloat) - 0.078376, (GLfloat) - 0.184951, (GLfloat) - 0.979617,
-       (GLfloat) - 0.089636, (GLfloat) - 0.204692, (GLfloat) - 0.974714,
-       (GLfloat) - 0.031836, (GLfloat) - 0.216104, (GLfloat) - 0.975851,
-       (GLfloat) - 0.037496, (GLfloat) - 0.237942, (GLfloat) - 0.970555,
-       (GLfloat) - 0.516334, (GLfloat) - 0.149595, (GLfloat) - 0.843220,
-       (GLfloat) - 0.522141, (GLfloat) - 0.155987, (GLfloat) - 0.838473,
-       (GLfloat) - 0.160863, (GLfloat) - 0.078983, (GLfloat) - 0.983811,
-       (GLfloat) - 0.162216, (GLfloat) - 0.080222, (GLfloat) - 0.983489,
-       (GLfloat) - 0.124313, (GLfloat) - 0.142798, (GLfloat) - 0.981914,
-       (GLfloat) - 0.134702, (GLfloat) - 0.155051, (GLfloat) - 0.978680,
-       (GLfloat) - 0.485511, (GLfloat) - 0.259251, (GLfloat) - 0.834906,
-       (GLfloat) - 0.481803, (GLfloat) - 0.253626, (GLfloat) - 0.838773,
-       (GLfloat) 0.539229, (GLfloat) 0.099743, (GLfloat) - 0.836232,
-       (GLfloat) 0.527244, (GLfloat) 0.088685, (GLfloat) - 0.845073,
-       (GLfloat) 0.560111, (GLfloat) 0.087128, (GLfloat) - 0.823823,
-       (GLfloat) 0.546849, (GLfloat) 0.072324, (GLfloat) - 0.834101,
-       (GLfloat) 0.201167, (GLfloat) - 0.045810, (GLfloat) - 0.978485,
-       (GLfloat) 0.215853, (GLfloat) - 0.030110, (GLfloat) - 0.975962,
-       (GLfloat) 0.175573, (GLfloat) - 0.002365, (GLfloat) - 0.984464,
-       (GLfloat) 0.184916, (GLfloat) 0.005715, (GLfloat) - 0.982738,
-       (GLfloat) 0.593439, (GLfloat) 0.077285, (GLfloat) - 0.801160,
-       (GLfloat) 0.587937, (GLfloat) 0.063575, (GLfloat) - 0.806405,
-       (GLfloat) 0.272897, (GLfloat) - 0.086428, (GLfloat) - 0.958153,
-       (GLfloat) 0.279890, (GLfloat) - 0.067483, (GLfloat) - 0.957657,
-       (GLfloat) 0.236530, (GLfloat) - 0.071307, (GLfloat) - 0.969004,
-       (GLfloat) 0.249518, (GLfloat) - 0.051953, (GLfloat) - 0.966975,
-       (GLfloat) 0.579087, (GLfloat) 0.080825, (GLfloat) - 0.811250,
-       (GLfloat) 0.568834, (GLfloat) 0.065408, (GLfloat) - 0.819847,
-       (GLfloat) - 0.366469, (GLfloat) - 0.378021, (GLfloat) 0.850177,
-       (GLfloat) - 0.368470, (GLfloat) - 0.398468, (GLfloat) 0.839912,
-       (GLfloat) - 0.031836, (GLfloat) - 0.216104, (GLfloat) 0.975851,
-       (GLfloat) - 0.037496, (GLfloat) - 0.237942, (GLfloat) 0.970555,
-       (GLfloat) - 0.089636, (GLfloat) - 0.204692, (GLfloat) 0.974714,
-       (GLfloat) - 0.078376, (GLfloat) - 0.184951, (GLfloat) 0.979617,
-       (GLfloat) - 0.433076, (GLfloat) - 0.339336, (GLfloat) 0.835043,
-       (GLfloat) - 0.426924, (GLfloat) - 0.323639, (GLfloat) 0.844389,
-       (GLfloat) 0.593439, (GLfloat) 0.077284, (GLfloat) 0.801160,
-       (GLfloat) 0.587937, (GLfloat) 0.063575, (GLfloat) 0.806405,
-       (GLfloat) 0.568834, (GLfloat) 0.065408, (GLfloat) 0.819847,
-       (GLfloat) 0.579087, (GLfloat) 0.080825, (GLfloat) 0.811249,
-       (GLfloat) 0.236530, (GLfloat) - 0.071307, (GLfloat) 0.969004,
-       (GLfloat) 0.249518, (GLfloat) - 0.051953, (GLfloat) 0.966975,
-       (GLfloat) 0.279890, (GLfloat) - 0.067483, (GLfloat) 0.957657,
-       (GLfloat) 0.272897, (GLfloat) - 0.086428, (GLfloat) 0.958153,
-       (GLfloat) 0.527244, (GLfloat) 0.088685, (GLfloat) 0.845073,
-       (GLfloat) 0.539229, (GLfloat) 0.099743, (GLfloat) 0.836232,
-       (GLfloat) 0.175573, (GLfloat) - 0.002365, (GLfloat) 0.984464,
-       (GLfloat) 0.184916, (GLfloat) 0.005715, (GLfloat) 0.982738,
-       (GLfloat) 0.215853, (GLfloat) - 0.030110, (GLfloat) 0.975962,
-       (GLfloat) 0.201167, (GLfloat) - 0.045810, (GLfloat) 0.978485,
-       (GLfloat) 0.560111, (GLfloat) 0.087128, (GLfloat) 0.823823,
-       (GLfloat) 0.546849, (GLfloat) 0.072324, (GLfloat) 0.834101,
-       (GLfloat) - 0.516334, (GLfloat) - 0.149595, (GLfloat) 0.843220,
-       (GLfloat) - 0.522141, (GLfloat) - 0.155986, (GLfloat) 0.838473,
-       (GLfloat) - 0.481803, (GLfloat) - 0.253626, (GLfloat) 0.838773,
-       (GLfloat) - 0.485511, (GLfloat) - 0.259250, (GLfloat) 0.834906,
-       (GLfloat) - 0.124313, (GLfloat) - 0.142798, (GLfloat) 0.981914,
-       (GLfloat) - 0.134702, (GLfloat) - 0.155051, (GLfloat) 0.978680,
-       (GLfloat) - 0.162216, (GLfloat) - 0.080222, (GLfloat) 0.983489,
-       (GLfloat) - 0.160863, (GLfloat) - 0.078982, (GLfloat) 0.983811,
-       (GLfloat) - 0.686861, (GLfloat) - 0.525025, (GLfloat) - 0.502564,
-       (GLfloat) - 0.684324, (GLfloat) - 0.536936, (GLfloat) - 0.493357,
-       (GLfloat) - 0.799089, (GLfloat) - 0.580700, (GLfloat) - 0.155709,
-       (GLfloat) - 0.801122, (GLfloat) - 0.576989, (GLfloat) - 0.159016,
-       (GLfloat) - 0.862913, (GLfloat) - 0.481876, (GLfloat) - 0.152238,
-       (GLfloat) - 0.863678, (GLfloat) - 0.479780, (GLfloat) - 0.154502,
-       (GLfloat) - 0.750556, (GLfloat) - 0.441554, (GLfloat) - 0.491625,
-       (GLfloat) - 0.750719, (GLfloat) - 0.448983, (GLfloat) - 0.484598,
-       (GLfloat) - 0.686861, (GLfloat) - 0.525025, (GLfloat) 0.502564,
-       (GLfloat) - 0.684324, (GLfloat) - 0.536936, (GLfloat) 0.493357,
-       (GLfloat) - 0.750719, (GLfloat) - 0.448983, (GLfloat) 0.484598,
-       (GLfloat) - 0.750556, (GLfloat) - 0.441554, (GLfloat) 0.491625,
-       (GLfloat) - 0.862913, (GLfloat) - 0.481876, (GLfloat) 0.152238,
-       (GLfloat) - 0.863678, (GLfloat) - 0.479780, (GLfloat) 0.154503,
-       (GLfloat) - 0.801122, (GLfloat) - 0.576990, (GLfloat) 0.159016,
-       (GLfloat) - 0.799089, (GLfloat) - 0.580700, (GLfloat) 0.155709,
-       (GLfloat) - 0.845506, (GLfloat) - 0.204102, (GLfloat) 0.493419,
-       (GLfloat) - 0.849139, (GLfloat) - 0.212205, (GLfloat) 0.483666,
-       (GLfloat) - 0.962881, (GLfloat) - 0.220433, (GLfloat) 0.155789,
-       (GLfloat) - 0.962834, (GLfloat) - 0.223594, (GLfloat) 0.151516,
-       (GLfloat) - 0.918492, (GLfloat) - 0.365350, (GLfloat) 0.151297,
-       (GLfloat) - 0.918584, (GLfloat) - 0.364876, (GLfloat) 0.151885,
-       (GLfloat) - 0.806201, (GLfloat) - 0.341087, (GLfloat) 0.483425,
-       (GLfloat) - 0.806184, (GLfloat) - 0.341015, (GLfloat) 0.483504,
-       (GLfloat) - 0.849139, (GLfloat) - 0.212204, (GLfloat) - 0.483666,
-       (GLfloat) - 0.845506, (GLfloat) - 0.204102, (GLfloat) - 0.493419,
-       (GLfloat) - 0.806201, (GLfloat) - 0.341087, (GLfloat) - 0.483425,
-       (GLfloat) - 0.806184, (GLfloat) - 0.341015, (GLfloat) - 0.483504,
-       (GLfloat) - 0.918584, (GLfloat) - 0.364876, (GLfloat) - 0.151885,
-       (GLfloat) - 0.918492, (GLfloat) - 0.365350, (GLfloat) - 0.151297,
-       (GLfloat) - 0.962881, (GLfloat) - 0.220433, (GLfloat) - 0.155789,
-       (GLfloat) - 0.962834, (GLfloat) - 0.223594, (GLfloat) - 0.151516,
-       (GLfloat) - 0.503594, (GLfloat) 0.204765, (GLfloat) - 0.839324,
-       (GLfloat) - 0.503594, (GLfloat) 0.204765, (GLfloat) - 0.839324,
-       (GLfloat) - 0.161047, (GLfloat) 0.200914, (GLfloat) - 0.966280,
-       (GLfloat) - 0.161047, (GLfloat) 0.200914, (GLfloat) - 0.966280,
-       (GLfloat) - 0.165393, (GLfloat) 0.154386, (GLfloat) - 0.974069,
-       (GLfloat) - 0.162365, (GLfloat) 0.156806, (GLfloat) - 0.974192,
-       (GLfloat) - 0.508257, (GLfloat) 0.155255, (GLfloat) - 0.847095,
-       (GLfloat) - 0.512203, (GLfloat) 0.151943, (GLfloat) - 0.845318,
-       (GLfloat) 0.503594, (GLfloat) 0.204765, (GLfloat) - 0.839324,
-       (GLfloat) 0.503594, (GLfloat) 0.204765, (GLfloat) - 0.839324,
-       (GLfloat) 0.506875, (GLfloat) 0.175794, (GLfloat) - 0.843904,
-       (GLfloat) 0.506455, (GLfloat) 0.176110, (GLfloat) - 0.844091,
-       (GLfloat) 0.160943, (GLfloat) 0.163176, (GLfloat) - 0.973381,
-       (GLfloat) 0.162221, (GLfloat) 0.162243, (GLfloat) - 0.973325,
-       (GLfloat) 0.161047, (GLfloat) 0.200914, (GLfloat) - 0.966280,
-       (GLfloat) 0.161047, (GLfloat) 0.200914, (GLfloat) - 0.966280,
-       (GLfloat) 0.521791, (GLfloat) 0.120579, (GLfloat) - 0.844509,
-       (GLfloat) 0.514604, (GLfloat) 0.123502, (GLfloat) - 0.848487,
-       (GLfloat) 0.164688, (GLfloat) 0.065494, (GLfloat) - 0.984169,
-       (GLfloat) 0.164274, (GLfloat) 0.065656, (GLfloat) - 0.984227,
-       (GLfloat) 0.162599, (GLfloat) 0.118143, (GLfloat) - 0.979594,
-       (GLfloat) 0.160323, (GLfloat) 0.119382, (GLfloat) - 0.979819,
-       (GLfloat) 0.509344, (GLfloat) 0.149891, (GLfloat) - 0.847409,
-       (GLfloat) 0.511715, (GLfloat) 0.148557, (GLfloat) - 0.846214,
-       (GLfloat) - 0.523595, (GLfloat) - 0.008036, (GLfloat) - 0.851929,
-       (GLfloat) - 0.537099, (GLfloat) - 0.019782, (GLfloat) - 0.843287,
-       (GLfloat) - 0.515557, (GLfloat) 0.088028, (GLfloat) - 0.852322,
-       (GLfloat) - 0.525730, (GLfloat) 0.079884, (GLfloat) - 0.846892,
-       (GLfloat) - 0.173169, (GLfloat) 0.095066, (GLfloat) - 0.980293,
-       (GLfloat) - 0.165823, (GLfloat) 0.100484, (GLfloat) - 0.981023,
-       (GLfloat) - 0.177991, (GLfloat) 0.018184, (GLfloat) - 0.983864,
-       (GLfloat) - 0.169802, (GLfloat) 0.024484, (GLfloat) - 0.985174,
-       (GLfloat) - 0.839324, (GLfloat) 0.204765, (GLfloat) - 0.503594,
-       (GLfloat) - 0.839323, (GLfloat) 0.204765, (GLfloat) - 0.503595,
-       (GLfloat) - 0.849441, (GLfloat) 0.151406, (GLfloat) - 0.505496,
-       (GLfloat) - 0.847954, (GLfloat) 0.148744, (GLfloat) - 0.508773,
-       (GLfloat) - 0.975887, (GLfloat) 0.146977, (GLfloat) - 0.161379,
-       (GLfloat) - 0.975827, (GLfloat) 0.145984, (GLfloat) - 0.162638,
-       (GLfloat) - 0.966280, (GLfloat) 0.200913, (GLfloat) - 0.161047,
-       (GLfloat) - 0.966280, (GLfloat) 0.200913, (GLfloat) - 0.161047,
-       (GLfloat) - 0.869115, (GLfloat) - 0.045798, (GLfloat) - 0.492485,
-       (GLfloat) - 0.862005, (GLfloat) - 0.035136, (GLfloat) - 0.505681,
-       (GLfloat) - 0.985988, (GLfloat) - 0.044696, (GLfloat) - 0.160715,
-       (GLfloat) - 0.986683, (GLfloat) - 0.048596, (GLfloat) - 0.155223,
-       (GLfloat) - 0.984333, (GLfloat) 0.067324, (GLfloat) - 0.162959,
-       (GLfloat) - 0.984743, (GLfloat) 0.069793, (GLfloat) - 0.159404,
-       (GLfloat) - 0.856976, (GLfloat) 0.069431, (GLfloat) - 0.510658,
-       (GLfloat) - 0.861737, (GLfloat) 0.075800, (GLfloat) - 0.501660,
-       (GLfloat) - 0.869115, (GLfloat) - 0.045798, (GLfloat) 0.492485,
-       (GLfloat) - 0.862005, (GLfloat) - 0.035136, (GLfloat) 0.505681,
-       (GLfloat) - 0.856976, (GLfloat) 0.069431, (GLfloat) 0.510659,
-       (GLfloat) - 0.861738, (GLfloat) 0.075800, (GLfloat) 0.501660,
-       (GLfloat) - 0.984743, (GLfloat) 0.069793, (GLfloat) 0.159404,
-       (GLfloat) - 0.984333, (GLfloat) 0.067324, (GLfloat) 0.162959,
-       (GLfloat) - 0.986683, (GLfloat) - 0.048596, (GLfloat) 0.155223,
-       (GLfloat) - 0.985988, (GLfloat) - 0.044696, (GLfloat) 0.160715,
-       (GLfloat) - 0.839324, (GLfloat) 0.204766, (GLfloat) 0.503594,
-       (GLfloat) - 0.839323, (GLfloat) 0.204765, (GLfloat) 0.503595,
-       (GLfloat) - 0.966280, (GLfloat) 0.200913, (GLfloat) 0.161047,
-       (GLfloat) - 0.966280, (GLfloat) 0.200913, (GLfloat) 0.161047,
-       (GLfloat) - 0.975887, (GLfloat) 0.146977, (GLfloat) 0.161379,
-       (GLfloat) - 0.975827, (GLfloat) 0.145984, (GLfloat) 0.162638,
-       (GLfloat) - 0.847954, (GLfloat) 0.148744, (GLfloat) 0.508773,
-       (GLfloat) - 0.849441, (GLfloat) 0.151406, (GLfloat) 0.505496,
-       (GLfloat) - 0.503594, (GLfloat) 0.204766, (GLfloat) 0.839324,
-       (GLfloat) - 0.503595, (GLfloat) 0.204765, (GLfloat) 0.839323,
-       (GLfloat) - 0.512203, (GLfloat) 0.151943, (GLfloat) 0.845318,
-       (GLfloat) - 0.508258, (GLfloat) 0.155255, (GLfloat) 0.847095,
-       (GLfloat) - 0.165393, (GLfloat) 0.154386, (GLfloat) 0.974069,
-       (GLfloat) - 0.162365, (GLfloat) 0.156806, (GLfloat) 0.974192,
-       (GLfloat) - 0.161047, (GLfloat) 0.200914, (GLfloat) 0.966280,
-       (GLfloat) - 0.161047, (GLfloat) 0.200914, (GLfloat) 0.966280,
-       (GLfloat) - 0.537099, (GLfloat) - 0.019782, (GLfloat) 0.843287,
-       (GLfloat) - 0.523595, (GLfloat) - 0.008036, (GLfloat) 0.851930,
-       (GLfloat) - 0.177991, (GLfloat) 0.018183, (GLfloat) 0.983864,
-       (GLfloat) - 0.169802, (GLfloat) 0.024484, (GLfloat) 0.985174,
-       (GLfloat) - 0.165823, (GLfloat) 0.100484, (GLfloat) 0.981023,
-       (GLfloat) - 0.173169, (GLfloat) 0.095066, (GLfloat) 0.980293,
-       (GLfloat) - 0.515557, (GLfloat) 0.088028, (GLfloat) 0.852322,
-       (GLfloat) - 0.525730, (GLfloat) 0.079884, (GLfloat) 0.846892,
-       (GLfloat) 0.514604, (GLfloat) 0.123503, (GLfloat) 0.848487,
-       (GLfloat) 0.521791, (GLfloat) 0.120579, (GLfloat) 0.844509,
-       (GLfloat) 0.509344, (GLfloat) 0.149891, (GLfloat) 0.847409,
-       (GLfloat) 0.511715, (GLfloat) 0.148557, (GLfloat) 0.846214,
-       (GLfloat) 0.160323, (GLfloat) 0.119382, (GLfloat) 0.979819,
-       (GLfloat) 0.162599, (GLfloat) 0.118143, (GLfloat) 0.979594,
-       (GLfloat) 0.164688, (GLfloat) 0.065494, (GLfloat) 0.984169,
-       (GLfloat) 0.164275, (GLfloat) 0.065655, (GLfloat) 0.984227,
-       (GLfloat) 0.503594, (GLfloat) 0.204766, (GLfloat) 0.839324,
-       (GLfloat) 0.503595, (GLfloat) 0.204765, (GLfloat) 0.839323,
-       (GLfloat) 0.161047, (GLfloat) 0.200914, (GLfloat) 0.966280,
-       (GLfloat) 0.161047, (GLfloat) 0.200914, (GLfloat) 0.966280,
-       (GLfloat) 0.160943, (GLfloat) 0.163176, (GLfloat) 0.973381,
-       (GLfloat) 0.162221, (GLfloat) 0.162243, (GLfloat) 0.973325,
-       (GLfloat) 0.506455, (GLfloat) 0.176110, (GLfloat) 0.844090,
-       (GLfloat) 0.506875, (GLfloat) 0.175794, (GLfloat) 0.843904,
-       (GLfloat) 0.839324, (GLfloat) 0.204766, (GLfloat) 0.503594,
-       (GLfloat) 0.839323, (GLfloat) 0.204765, (GLfloat) 0.503595,
-       (GLfloat) 0.842767, (GLfloat) 0.188271, (GLfloat) 0.504280,
-       (GLfloat) 0.842301, (GLfloat) 0.187401, (GLfloat) 0.505381,
-       (GLfloat) 0.968491, (GLfloat) 0.190085, (GLfloat) 0.160914,
-       (GLfloat) 0.968481, (GLfloat) 0.189712, (GLfloat) 0.161414,
-       (GLfloat) 0.966280, (GLfloat) 0.200913, (GLfloat) 0.161047,
-       (GLfloat) 0.966280, (GLfloat) 0.200913, (GLfloat) 0.161047,
-       (GLfloat) 0.850151, (GLfloat) 0.182077, (GLfloat) 0.494055,
-       (GLfloat) 0.846712, (GLfloat) 0.177186, (GLfloat) 0.501681,
-       (GLfloat) 0.966795, (GLfloat) 0.202453, (GLfloat) 0.155950,
-       (GLfloat) 0.966634, (GLfloat) 0.200782, (GLfloat) 0.159079,
-       (GLfloat) 0.968271, (GLfloat) 0.191230, (GLfloat) 0.160881,
-       (GLfloat) 0.968343, (GLfloat) 0.192206, (GLfloat) 0.159274,
-       (GLfloat) 0.844217, (GLfloat) 0.179436, (GLfloat) 0.505074,
-       (GLfloat) 0.845886, (GLfloat) 0.181962, (GLfloat) 0.501364,
-       (GLfloat) 0.846712, (GLfloat) 0.177186, (GLfloat) - 0.501682,
-       (GLfloat) 0.850151, (GLfloat) 0.182077, (GLfloat) - 0.494055,
-       (GLfloat) 0.844217, (GLfloat) 0.179436, (GLfloat) - 0.505074,
-       (GLfloat) 0.845886, (GLfloat) 0.181962, (GLfloat) - 0.501365,
-       (GLfloat) 0.968343, (GLfloat) 0.192206, (GLfloat) - 0.159274,
-       (GLfloat) 0.968271, (GLfloat) 0.191230, (GLfloat) - 0.160881,
-       (GLfloat) 0.966795, (GLfloat) 0.202453, (GLfloat) - 0.155950,
-       (GLfloat) 0.966634, (GLfloat) 0.200782, (GLfloat) - 0.159079,
-       (GLfloat) 0.839324, (GLfloat) 0.204765, (GLfloat) - 0.503594,
-       (GLfloat) 0.839323, (GLfloat) 0.204765, (GLfloat) - 0.503595,
-       (GLfloat) 0.966280, (GLfloat) 0.200913, (GLfloat) - 0.161047,
-       (GLfloat) 0.966280, (GLfloat) 0.200913, (GLfloat) - 0.161047,
-       (GLfloat) 0.968491, (GLfloat) 0.190085, (GLfloat) - 0.160914,
-       (GLfloat) 0.968481, (GLfloat) 0.189713, (GLfloat) - 0.161414,
-       (GLfloat) 0.842301, (GLfloat) 0.187401, (GLfloat) - 0.505381,
-       (GLfloat) 0.842767, (GLfloat) 0.188271, (GLfloat) - 0.504280,
-       (GLfloat) 0.831768, (GLfloat) 0.243104, (GLfloat) 0.499061,
-       (GLfloat) 0.831768, (GLfloat) 0.243103, (GLfloat) 0.499062,
-       (GLfloat) 0.957902, (GLfloat) 0.238609, (GLfloat) 0.159651,
-       (GLfloat) 0.957902, (GLfloat) 0.238611, (GLfloat) 0.159650,
-       (GLfloat) 0.982539, (GLfloat) 0.084307, (GLfloat) 0.165861,
-       (GLfloat) 0.982460, (GLfloat) 0.089222, (GLfloat) 0.163743,
-       (GLfloat) 0.853634, (GLfloat) 0.079021, (GLfloat) 0.514845,
-       (GLfloat) 0.854444, (GLfloat) 0.084251, (GLfloat) 0.512667,
-       (GLfloat) 0.831768, (GLfloat) 0.243103, (GLfloat) - 0.499062,
-       (GLfloat) 0.831768, (GLfloat) 0.243104, (GLfloat) - 0.499061,
-       (GLfloat) 0.853634, (GLfloat) 0.079020, (GLfloat) - 0.514845,
-       (GLfloat) 0.854444, (GLfloat) 0.084251, (GLfloat) - 0.512667,
-       (GLfloat) 0.982460, (GLfloat) 0.089222, (GLfloat) - 0.163743,
-       (GLfloat) 0.982539, (GLfloat) 0.084307, (GLfloat) - 0.165861,
-       (GLfloat) 0.957902, (GLfloat) 0.238609, (GLfloat) - 0.159651,
-       (GLfloat) 0.957902, (GLfloat) 0.238611, (GLfloat) - 0.159650,
-       (GLfloat) 0.283620, (GLfloat) - 0.936578, (GLfloat) - 0.205866,
-       (GLfloat) 0.264056, (GLfloat) - 0.947923, (GLfloat) - 0.178092,
-       (GLfloat) 0.315105, (GLfloat) - 0.946548, (GLfloat) - 0.068965,
-       (GLfloat) 0.304029, (GLfloat) - 0.949849, (GLfloat) - 0.073163,
-       (GLfloat) 0.811943, (GLfloat) - 0.566920, (GLfloat) - 0.139104,
-       (GLfloat) 0.830641, (GLfloat) - 0.534923, (GLfloat) - 0.154571,
-       (GLfloat) 0.677706, (GLfloat) - 0.609532, (GLfloat) - 0.411322,
-       (GLfloat) 0.690948, (GLfloat) - 0.577758, (GLfloat) - 0.434496,
-       (GLfloat) 0.264055, (GLfloat) - 0.947923, (GLfloat) 0.178092,
-       (GLfloat) 0.283620, (GLfloat) - 0.936578, (GLfloat) 0.205866,
-       (GLfloat) 0.677707, (GLfloat) - 0.609531, (GLfloat) 0.411322,
-       (GLfloat) 0.690948, (GLfloat) - 0.577758, (GLfloat) 0.434496,
-       (GLfloat) 0.830641, (GLfloat) - 0.534923, (GLfloat) 0.154571,
-       (GLfloat) 0.811943, (GLfloat) - 0.566920, (GLfloat) 0.139104,
-       (GLfloat) 0.304029, (GLfloat) - 0.949849, (GLfloat) 0.073163,
-       (GLfloat) 0.315105, (GLfloat) - 0.946548, (GLfloat) 0.068965,
-       (GLfloat) 0.499061, (GLfloat) 0.243103, (GLfloat) - 0.831768,
-       (GLfloat) 0.499061, (GLfloat) 0.243104, (GLfloat) - 0.831768,
-       (GLfloat) 0.159650, (GLfloat) 0.238610, (GLfloat) - 0.957902,
-       (GLfloat) 0.159651, (GLfloat) 0.238610, (GLfloat) - 0.957902,
-       (GLfloat) 0.165862, (GLfloat) 0.084307, (GLfloat) - 0.982539,
-       (GLfloat) 0.163744, (GLfloat) 0.089222, (GLfloat) - 0.982460,
-       (GLfloat) 0.514845, (GLfloat) 0.079019, (GLfloat) - 0.853634,
-       (GLfloat) 0.512666, (GLfloat) 0.084251, (GLfloat) - 0.854444,
-       (GLfloat) - 0.499061, (GLfloat) 0.243104, (GLfloat) - 0.831768,
-       (GLfloat) - 0.499061, (GLfloat) 0.243103, (GLfloat) - 0.831768,
-       (GLfloat) - 0.514845, (GLfloat) 0.079019, (GLfloat) - 0.853634,
-       (GLfloat) - 0.512666, (GLfloat) 0.084251, (GLfloat) - 0.854444,
-       (GLfloat) - 0.163744, (GLfloat) 0.089222, (GLfloat) - 0.982460,
-       (GLfloat) - 0.165862, (GLfloat) 0.084307, (GLfloat) - 0.982539,
-       (GLfloat) - 0.159650, (GLfloat) 0.238610, (GLfloat) - 0.957902,
-       (GLfloat) - 0.159651, (GLfloat) 0.238610, (GLfloat) - 0.957902,
-       (GLfloat) - 0.205866, (GLfloat) - 0.936578, (GLfloat) - 0.283621,
-       (GLfloat) - 0.178092, (GLfloat) - 0.947923, (GLfloat) - 0.264056,
-       (GLfloat) - 0.068965, (GLfloat) - 0.946548, (GLfloat) - 0.315105,
-       (GLfloat) - 0.073162, (GLfloat) - 0.949849, (GLfloat) - 0.304029,
-       (GLfloat) - 0.139105, (GLfloat) - 0.566920, (GLfloat) - 0.811943,
-       (GLfloat) - 0.154572, (GLfloat) - 0.534923, (GLfloat) - 0.830641,
-       (GLfloat) - 0.411321, (GLfloat) - 0.609532, (GLfloat) - 0.677706,
-       (GLfloat) - 0.434496, (GLfloat) - 0.577758, (GLfloat) - 0.690948,
-       (GLfloat) 0.178092, (GLfloat) - 0.947923, (GLfloat) - 0.264056,
-       (GLfloat) 0.205866, (GLfloat) - 0.936578, (GLfloat) - 0.283621,
-       (GLfloat) 0.411321, (GLfloat) - 0.609532, (GLfloat) - 0.677706,
-       (GLfloat) 0.434496, (GLfloat) - 0.577758, (GLfloat) - 0.690948,
-       (GLfloat) 0.154572, (GLfloat) - 0.534923, (GLfloat) - 0.830641,
-       (GLfloat) 0.139105, (GLfloat) - 0.566920, (GLfloat) - 0.811943,
-       (GLfloat) 0.073162, (GLfloat) - 0.949849, (GLfloat) - 0.304029,
-       (GLfloat) 0.068965, (GLfloat) - 0.946548, (GLfloat) - 0.315105,
-       (GLfloat) - 0.831768, (GLfloat) 0.243104, (GLfloat) - 0.499061,
-       (GLfloat) - 0.831768, (GLfloat) 0.243103, (GLfloat) - 0.499062,
-       (GLfloat) - 0.957902, (GLfloat) 0.238609, (GLfloat) - 0.159651,
-       (GLfloat) - 0.957902, (GLfloat) 0.238611, (GLfloat) - 0.159650,
-       (GLfloat) - 0.982539, (GLfloat) 0.084307, (GLfloat) - 0.165861,
-       (GLfloat) - 0.982460, (GLfloat) 0.089222, (GLfloat) - 0.163743,
-       (GLfloat) - 0.853634, (GLfloat) 0.079020, (GLfloat) - 0.514845,
-       (GLfloat) - 0.854444, (GLfloat) 0.084251, (GLfloat) - 0.512667,
-       (GLfloat) - 0.831768, (GLfloat) 0.243103, (GLfloat) 0.499062,
-       (GLfloat) - 0.831768, (GLfloat) 0.243104, (GLfloat) 0.499061,
-       (GLfloat) - 0.853634, (GLfloat) 0.079021, (GLfloat) 0.514845,
-       (GLfloat) - 0.854444, (GLfloat) 0.084251, (GLfloat) 0.512667,
-       (GLfloat) - 0.982460, (GLfloat) 0.089222, (GLfloat) 0.163743,
-       (GLfloat) - 0.982539, (GLfloat) 0.084307, (GLfloat) 0.165861,
-       (GLfloat) - 0.957902, (GLfloat) 0.238609, (GLfloat) 0.159651,
-       (GLfloat) - 0.957902, (GLfloat) 0.238611, (GLfloat) 0.159650,
-       (GLfloat) - 0.283620, (GLfloat) - 0.936578, (GLfloat) 0.205866,
-       (GLfloat) - 0.264055, (GLfloat) - 0.947923, (GLfloat) 0.178092,
-       (GLfloat) - 0.315105, (GLfloat) - 0.946548, (GLfloat) 0.068965,
-       (GLfloat) - 0.304029, (GLfloat) - 0.949849, (GLfloat) 0.073163,
-       (GLfloat) - 0.811943, (GLfloat) - 0.566920, (GLfloat) 0.139104,
-       (GLfloat) - 0.830641, (GLfloat) - 0.534923, (GLfloat) 0.154571,
-       (GLfloat) - 0.677707, (GLfloat) - 0.609531, (GLfloat) 0.411322,
-       (GLfloat) - 0.690948, (GLfloat) - 0.577758, (GLfloat) 0.434496,
-       (GLfloat) - 0.264056, (GLfloat) - 0.947923, (GLfloat) - 0.178092,
-       (GLfloat) - 0.283620, (GLfloat) - 0.936578, (GLfloat) - 0.205866,
-       (GLfloat) - 0.677706, (GLfloat) - 0.609532, (GLfloat) - 0.411322,
-       (GLfloat) - 0.690948, (GLfloat) - 0.577758, (GLfloat) - 0.434496,
-       (GLfloat) - 0.830641, (GLfloat) - 0.534923, (GLfloat) - 0.154571,
-       (GLfloat) - 0.811943, (GLfloat) - 0.566920, (GLfloat) - 0.139104,
-       (GLfloat) - 0.304029, (GLfloat) - 0.949849, (GLfloat) - 0.073163,
-       (GLfloat) - 0.315105, (GLfloat) - 0.946548, (GLfloat) - 0.068965,
-       (GLfloat) - 0.499061, (GLfloat) 0.243104, (GLfloat) 0.831769,
-       (GLfloat) - 0.499061, (GLfloat) 0.243103, (GLfloat) 0.831768,
-       (GLfloat) - 0.159650, (GLfloat) 0.238610, (GLfloat) 0.957902,
-       (GLfloat) - 0.159651, (GLfloat) 0.238610, (GLfloat) 0.957902,
-       (GLfloat) - 0.165862, (GLfloat) 0.084307, (GLfloat) 0.982539,
-       (GLfloat) - 0.163744, (GLfloat) 0.089222, (GLfloat) 0.982460,
-       (GLfloat) - 0.514844, (GLfloat) 0.079021, (GLfloat) 0.853634,
-       (GLfloat) - 0.512667, (GLfloat) 0.084251, (GLfloat) 0.854444,
-       (GLfloat) 0.499061, (GLfloat) 0.243103, (GLfloat) 0.831768,
-       (GLfloat) 0.499061, (GLfloat) 0.243104, (GLfloat) 0.831769,
-       (GLfloat) 0.514844, (GLfloat) 0.079021, (GLfloat) 0.853634,
-       (GLfloat) 0.512667, (GLfloat) 0.084251, (GLfloat) 0.854444,
-       (GLfloat) 0.163744, (GLfloat) 0.089222, (GLfloat) 0.982460,
-       (GLfloat) 0.165862, (GLfloat) 0.084307, (GLfloat) 0.982539,
-       (GLfloat) 0.159650, (GLfloat) 0.238610, (GLfloat) 0.957902,
-       (GLfloat) 0.159651, (GLfloat) 0.238610, (GLfloat) 0.957902,
-       (GLfloat) 0.205866, (GLfloat) - 0.936578, (GLfloat) 0.283621,
-       (GLfloat) 0.178092, (GLfloat) - 0.947923, (GLfloat) 0.264055,
-       (GLfloat) 0.068965, (GLfloat) - 0.946548, (GLfloat) 0.315105,
-       (GLfloat) 0.073162, (GLfloat) - 0.949849, (GLfloat) 0.304029,
-       (GLfloat) 0.139105, (GLfloat) - 0.566920, (GLfloat) 0.811943,
-       (GLfloat) 0.154572, (GLfloat) - 0.534923, (GLfloat) 0.830641,
-       (GLfloat) 0.411321, (GLfloat) - 0.609531, (GLfloat) 0.677707,
-       (GLfloat) 0.434496, (GLfloat) - 0.577757, (GLfloat) 0.690948,
-       (GLfloat) - 0.178092, (GLfloat) - 0.947923, (GLfloat) 0.264055,
-       (GLfloat) - 0.205866, (GLfloat) - 0.936578, (GLfloat) 0.283621,
-       (GLfloat) - 0.411321, (GLfloat) - 0.609531, (GLfloat) 0.677707,
-       (GLfloat) - 0.434496, (GLfloat) - 0.577757, (GLfloat) 0.690948,
-       (GLfloat) - 0.154572, (GLfloat) - 0.534923, (GLfloat) 0.830641,
-       (GLfloat) - 0.139105, (GLfloat) - 0.566920, (GLfloat) 0.811943,
-       (GLfloat) - 0.073162, (GLfloat) - 0.949849, (GLfloat) 0.304029,
-       (GLfloat) - 0.068965, (GLfloat) - 0.946548, (GLfloat) 0.315105,
-       (GLfloat) 0.135802, (GLfloat) - 0.982944, (GLfloat) - 0.124011,
-       (GLfloat) 0.124011, (GLfloat) - 0.982944, (GLfloat) - 0.135802,
-       (GLfloat) 0.043834, (GLfloat) - 0.993006, (GLfloat) - 0.109621,
-       (GLfloat) 0.039656, (GLfloat) - 0.992607, (GLfloat) - 0.114709,
-       (GLfloat) 0.030163, (GLfloat) - 0.998998, (GLfloat) - 0.033079,
-       (GLfloat) 0.033079, (GLfloat) - 0.998998, (GLfloat) - 0.030163,
-       (GLfloat) 0.109621, (GLfloat) - 0.993006, (GLfloat) - 0.043834,
-       (GLfloat) 0.114709, (GLfloat) - 0.992607, (GLfloat) - 0.039656,
-       (GLfloat) - 0.124011, (GLfloat) - 0.982944, (GLfloat) - 0.135802,
-       (GLfloat) - 0.135802, (GLfloat) - 0.982944, (GLfloat) - 0.124011,
-       (GLfloat) - 0.109621, (GLfloat) - 0.993006, (GLfloat) - 0.043834,
-       (GLfloat) - 0.114709, (GLfloat) - 0.992607, (GLfloat) - 0.039656,
-       (GLfloat) - 0.033079, (GLfloat) - 0.998998, (GLfloat) - 0.030163,
-       (GLfloat) - 0.030163, (GLfloat) - 0.998998, (GLfloat) - 0.033079,
-       (GLfloat) - 0.043834, (GLfloat) - 0.993006, (GLfloat) - 0.109621,
-       (GLfloat) - 0.039656, (GLfloat) - 0.992607, (GLfloat) - 0.114709,
-       (GLfloat) - 0.135803, (GLfloat) - 0.982944, (GLfloat) 0.124011,
-       (GLfloat) - 0.124011, (GLfloat) - 0.982944, (GLfloat) 0.135802,
-       (GLfloat) - 0.043834, (GLfloat) - 0.993006, (GLfloat) 0.109621,
-       (GLfloat) - 0.039656, (GLfloat) - 0.992607, (GLfloat) 0.114709,
-       (GLfloat) - 0.030163, (GLfloat) - 0.998998, (GLfloat) 0.033079,
-       (GLfloat) - 0.033079, (GLfloat) - 0.998998, (GLfloat) 0.030163,
-       (GLfloat) - 0.109621, (GLfloat) - 0.993006, (GLfloat) 0.043834,
-       (GLfloat) - 0.114709, (GLfloat) - 0.992607, (GLfloat) 0.039656,
-       (GLfloat) 0.124011, (GLfloat) - 0.982944, (GLfloat) 0.135802,
-       (GLfloat) 0.135803, (GLfloat) - 0.982944, (GLfloat) 0.124011,
-       (GLfloat) 0.109621, (GLfloat) - 0.993006, (GLfloat) 0.043834,
-       (GLfloat) 0.114709, (GLfloat) - 0.992607, (GLfloat) 0.039656,
-       (GLfloat) 0.033079, (GLfloat) - 0.998998, (GLfloat) 0.030163,
-       (GLfloat) 0.030163, (GLfloat) - 0.998998, (GLfloat) 0.033079,
-       (GLfloat) 0.043834, (GLfloat) - 0.993006, (GLfloat) 0.109621,
-       (GLfloat) 0.039656, (GLfloat) - 0.992607, (GLfloat) 0.114709,
-};
-
-static unsigned short int s1_6_POLS[] =
-{
-      3, 82, 12, 76, 1, 3, 76, 74, 82, 1, 3, 22, 78, 74, 1, 3, 22, 74, 76, 1,
-      3, 78, 20, 80, 1, 3, 80, 74, 78, 1, 3, 28, 82, 74, 1, 3, 28, 74, 80, 1,
-      3, 88, 13, 84, 1, 3, 84, 77, 88, 1, 3, 24, 86, 77, 1, 3, 24, 77, 84, 1,
-      3, 86, 20, 78, 1, 3, 78, 77, 86, 1, 3, 22, 88, 77, 1, 3, 22, 77, 78, 1,
-      3, 14, 90, 85, 1, 3, 14, 85, 93, 1, 3, 26, 91, 85, 1, 3, 26, 85, 90, 1,
-      3, 20, 86, 85, 1, 3, 20, 85, 91, 1, 3, 86, 24, 93, 1, 3, 93, 85, 86, 1,
-      3, 15, 95, 79, 1, 3, 15, 79, 97, 1, 3, 95, 28, 80, 1, 3, 80, 79, 95, 1,
-      3, 20, 91, 79, 1, 3, 20, 79, 80, 1, 3, 26, 97, 79, 1, 3, 26, 79, 91, 1,
-    3, 13, 99, 83, 1, 3, 13, 83, 84, 1, 3, 99, 30, 101, 1, 3, 101, 83, 99, 1,
-  3, 23, 102, 83, 1, 3, 23, 83, 101, 1, 3, 102, 24, 84, 1, 3, 84, 83, 102, 1,
-       3, 108, 16, 104, 1, 3, 104, 100, 108, 1, 3, 32, 106, 100, 1, 3, 32, 100, 104, 1,
-       3, 106, 23, 101, 1, 3, 101, 100, 106, 1, 3, 30, 108, 100, 1, 3, 30, 100, 101, 1,
-       3, 17, 110, 105, 1, 3, 17, 105, 113, 1, 3, 110, 33, 111, 1, 3, 111, 105, 110, 1,
-       3, 23, 106, 105, 1, 3, 23, 105, 111, 1, 3, 106, 32, 113, 1, 3, 113, 105, 106, 1,
-  3, 114, 14, 93, 1, 3, 93, 92, 114, 1, 3, 93, 24, 102, 1, 3, 102, 92, 93, 1,
-3, 23, 111, 92, 1, 3, 23, 92, 102, 1, 3, 111, 33, 114, 1, 3, 114, 92, 111, 1,
-       3, 16, 116, 103, 1, 3, 16, 103, 104, 1, 3, 116, 35, 118, 1, 3, 118, 103, 116, 1,
-       3, 31, 119, 103, 1, 3, 31, 103, 118, 1, 3, 119, 32, 104, 1, 3, 104, 103, 119, 1,
-       3, 18, 121, 117, 1, 3, 18, 117, 125, 1, 3, 121, 36, 123, 1, 3, 123, 117, 121, 1,
-       3, 31, 118, 117, 1, 3, 31, 117, 123, 1, 3, 118, 35, 125, 1, 3, 125, 117, 118, 1,
-       3, 19, 127, 122, 1, 3, 19, 122, 130, 1, 3, 37, 128, 122, 1, 3, 37, 122, 127, 1,
-       3, 31, 123, 122, 1, 3, 31, 122, 128, 1, 3, 36, 130, 122, 1, 3, 36, 122, 123, 1,
-       3, 17, 113, 112, 1, 3, 17, 112, 131, 1, 3, 32, 119, 112, 1, 3, 32, 112, 113, 1,
-       3, 31, 128, 112, 1, 3, 31, 112, 119, 1, 3, 37, 131, 112, 1, 3, 37, 112, 128, 1,
-       3, 121, 18, 133, 1, 3, 133, 120, 121, 1, 3, 39, 134, 120, 1, 3, 39, 120, 133, 1,
-       3, 134, 27, 135, 1, 3, 135, 120, 134, 1, 3, 36, 121, 120, 1, 3, 36, 120, 135, 1,
-   3, 12, 82, 81, 1, 3, 12, 81, 138, 1, 3, 82, 28, 136, 1, 3, 136, 81, 82, 1,
-3, 27, 134, 81, 1, 3, 27, 81, 136, 1, 3, 134, 39, 138, 1, 3, 138, 81, 134, 1,
-3, 95, 15, 139, 1, 3, 139, 94, 95, 1, 3, 139, 40, 140, 1, 3, 140, 94, 139, 1,
-  3, 27, 136, 94, 1, 3, 27, 94, 140, 1, 3, 136, 28, 95, 1, 3, 95, 94, 136, 1,
-       3, 19, 130, 129, 1, 3, 19, 129, 141, 1, 3, 130, 36, 135, 1, 3, 135, 129, 130, 1,
-       3, 27, 140, 129, 1, 3, 27, 129, 135, 1, 3, 140, 40, 141, 1, 3, 141, 129, 140, 1,
- 3, 14, 114, 89, 1, 3, 14, 89, 90, 1, 3, 114, 33, 142, 1, 3, 142, 89, 114, 1,
-  3, 25, 143, 89, 1, 3, 25, 89, 142, 1, 3, 143, 26, 90, 1, 3, 90, 89, 143, 1,
-       3, 17, 131, 109, 1, 3, 17, 109, 110, 1, 3, 131, 37, 144, 1, 3, 144, 109, 131, 1,
-       3, 25, 142, 109, 1, 3, 25, 109, 144, 1, 3, 142, 33, 110, 1, 3, 110, 109, 142, 1,
-       3, 19, 141, 126, 1, 3, 19, 126, 127, 1, 3, 141, 40, 145, 1, 3, 145, 126, 141, 1,
-       3, 25, 144, 126, 1, 3, 25, 126, 145, 1, 3, 144, 37, 127, 1, 3, 127, 126, 144, 1,
-   3, 15, 97, 96, 1, 3, 15, 96, 139, 1, 3, 97, 26, 143, 1, 3, 143, 96, 97, 1,
-3, 25, 145, 96, 1, 3, 25, 96, 143, 1, 3, 145, 40, 139, 1, 3, 139, 96, 145, 1,
- 3, 12, 146, 75, 1, 3, 12, 75, 76, 1, 3, 146, 41, 148, 1, 3, 148, 75, 146, 1,
-  3, 21, 149, 75, 1, 3, 21, 75, 148, 1, 3, 149, 22, 76, 1, 3, 76, 75, 149, 1,
-       3, 155, 8, 151, 1, 3, 151, 147, 155, 1, 3, 43, 153, 147, 1, 3, 43, 147, 151, 1,
-       3, 153, 21, 148, 1, 3, 148, 147, 153, 1, 3, 41, 155, 147, 1, 3, 41, 147, 148, 1,
-       3, 160, 11, 157, 1, 3, 157, 152, 160, 1, 3, 44, 158, 152, 1, 3, 44, 152, 157, 1,
-       3, 158, 21, 153, 1, 3, 153, 152, 158, 1, 3, 43, 160, 152, 1, 3, 43, 152, 153, 1,
-   3, 13, 88, 87, 1, 3, 13, 87, 161, 1, 3, 88, 22, 149, 1, 3, 149, 87, 88, 1,
-3, 21, 158, 87, 1, 3, 21, 87, 149, 1, 3, 158, 44, 161, 1, 3, 161, 87, 158, 1,
-       3, 18, 162, 132, 1, 3, 18, 132, 133, 1, 3, 162, 45, 164, 1, 3, 164, 132, 162, 1,
-       3, 38, 165, 132, 1, 3, 38, 132, 164, 1, 3, 165, 39, 133, 1, 3, 133, 132, 165, 1,
-       3, 170, 9, 167, 1, 3, 167, 163, 170, 1, 3, 47, 168, 163, 1, 3, 47, 163, 167, 1,
-       3, 168, 38, 164, 1, 3, 164, 163, 168, 1, 3, 45, 170, 163, 1, 3, 45, 163, 164, 1,
-3, 8, 155, 154, 1, 3, 8, 154, 173, 1, 3, 155, 41, 171, 1, 3, 171, 154, 155, 1,
-       3, 38, 168, 154, 1, 3, 38, 154, 171, 1, 3, 168, 47, 173, 1, 3, 173, 154, 168, 1,
-       3, 146, 12, 138, 1, 3, 138, 137, 146, 1, 3, 39, 165, 137, 1, 3, 39, 137, 138, 1,
-       3, 165, 38, 171, 1, 3, 171, 137, 165, 1, 3, 41, 146, 137, 1, 3, 41, 137, 171, 1,
-       3, 16, 108, 107, 1, 3, 16, 107, 177, 1, 3, 108, 30, 174, 1, 3, 174, 107, 108, 1,
-       3, 29, 176, 107, 1, 3, 29, 107, 174, 1, 3, 176, 50, 177, 1, 3, 177, 107, 176, 1,
-  3, 99, 13, 161, 1, 3, 161, 98, 99, 1, 3, 44, 178, 98, 1, 3, 44, 98, 161, 1,
- 3, 178, 29, 174, 1, 3, 174, 98, 178, 1, 3, 30, 99, 98, 1, 3, 30, 98, 174, 1,
-       3, 11, 180, 156, 1, 3, 11, 156, 157, 1, 3, 180, 49, 181, 1, 3, 181, 156, 180, 1,
-       3, 29, 178, 156, 1, 3, 29, 156, 181, 1, 3, 178, 44, 157, 1, 3, 157, 156, 178, 1,
-       3, 185, 10, 183, 1, 3, 183, 175, 185, 1, 3, 50, 176, 175, 1, 3, 50, 175, 183, 1,
-       3, 176, 29, 181, 1, 3, 181, 175, 176, 1, 3, 49, 185, 175, 1, 3, 49, 175, 181, 1,
-       3, 162, 18, 125, 1, 3, 125, 124, 162, 1, 3, 35, 186, 124, 1, 3, 35, 124, 125, 1,
-       3, 186, 34, 187, 1, 3, 187, 124, 186, 1, 3, 45, 162, 124, 1, 3, 45, 124, 187, 1,
-       3, 116, 16, 177, 1, 3, 177, 115, 116, 1, 3, 50, 188, 115, 1, 3, 50, 115, 177, 1,
-       3, 188, 34, 186, 1, 3, 186, 115, 188, 1, 3, 35, 116, 115, 1, 3, 35, 115, 186, 1,
-       3, 10, 190, 182, 1, 3, 10, 182, 183, 1, 3, 190, 52, 191, 1, 3, 191, 182, 190, 1,
-       3, 34, 188, 182, 1, 3, 34, 182, 191, 1, 3, 188, 50, 183, 1, 3, 183, 182, 188, 1,
-3, 9, 170, 169, 1, 3, 9, 169, 193, 1, 3, 170, 45, 187, 1, 3, 187, 169, 170, 1,
-       3, 34, 191, 169, 1, 3, 34, 169, 187, 1, 3, 191, 52, 193, 1, 3, 193, 169, 191, 1,
-       3, 201, 1, 196, 1, 3, 196, 194, 201, 1, 3, 54, 198, 194, 1, 3, 54, 194, 196, 1,
-       3, 198, 46, 199, 1, 3, 199, 194, 198, 1, 3, 56, 201, 194, 1, 3, 56, 194, 199, 1,
-       3, 206, 3, 203, 1, 3, 203, 197, 206, 1, 3, 55, 204, 197, 1, 3, 55, 197, 203, 1,
-       3, 204, 46, 198, 1, 3, 198, 197, 204, 1, 3, 54, 206, 197, 1, 3, 54, 197, 198, 1,
-3, 8, 173, 172, 1, 3, 8, 172, 208, 1, 3, 173, 47, 207, 1, 3, 207, 172, 173, 1,
-       3, 46, 204, 172, 1, 3, 46, 172, 207, 1, 3, 204, 55, 208, 1, 3, 208, 172, 204, 1,
-3, 9, 209, 166, 1, 3, 9, 166, 167, 1, 3, 209, 56, 199, 1, 3, 199, 166, 209, 1,
-       3, 46, 207, 166, 1, 3, 46, 166, 199, 1, 3, 207, 47, 167, 1, 3, 167, 166, 207, 1,
-       3, 214, 1, 201, 1, 3, 201, 200, 214, 1, 3, 56, 210, 200, 1, 3, 56, 200, 201, 1,
-       3, 210, 51, 212, 1, 3, 212, 200, 210, 1, 3, 59, 214, 200, 1, 3, 59, 200, 212, 1,
-       3, 209, 9, 193, 1, 3, 193, 192, 209, 1, 3, 52, 215, 192, 1, 3, 52, 192, 193, 1,
-       3, 51, 210, 192, 1, 3, 51, 192, 215, 1, 3, 210, 56, 209, 1, 3, 209, 192, 210, 1,
-       3, 190, 10, 216, 1, 3, 216, 189, 190, 1, 3, 216, 57, 217, 1, 3, 217, 189, 216, 1,
-       3, 51, 215, 189, 1, 3, 51, 189, 217, 1, 3, 52, 190, 189, 1, 3, 52, 189, 215, 1,
-       3, 221, 0, 219, 1, 3, 219, 211, 221, 1, 3, 59, 212, 211, 1, 3, 59, 211, 219, 1,
-       3, 212, 51, 217, 1, 3, 217, 211, 212, 1, 3, 57, 221, 211, 1, 3, 57, 211, 217, 1,
-       3, 226, 0, 221, 1, 3, 221, 220, 226, 1, 3, 57, 222, 220, 1, 3, 57, 220, 221, 1,
-       3, 222, 48, 224, 1, 3, 224, 220, 222, 1, 3, 62, 226, 220, 1, 3, 62, 220, 224, 1,
-       3, 10, 185, 184, 1, 3, 10, 184, 216, 1, 3, 185, 49, 227, 1, 3, 227, 184, 185, 1,
-       3, 48, 222, 184, 1, 3, 48, 184, 227, 1, 3, 222, 57, 216, 1, 3, 216, 184, 222, 1,
-       3, 11, 228, 179, 1, 3, 11, 179, 180, 1, 3, 228, 60, 229, 1, 3, 229, 179, 228, 1,
-       3, 48, 227, 179, 1, 3, 48, 179, 229, 1, 3, 227, 49, 180, 1, 3, 180, 179, 227, 1,
-       3, 233, 2, 231, 1, 3, 231, 223, 233, 1, 3, 62, 224, 223, 1, 3, 62, 223, 231, 1,
-       3, 224, 48, 229, 1, 3, 229, 223, 224, 1, 3, 60, 233, 223, 1, 3, 60, 223, 229, 1,
-       3, 237, 2, 233, 1, 3, 233, 232, 237, 1, 3, 60, 234, 232, 1, 3, 60, 232, 233, 1,
-       3, 234, 42, 235, 1, 3, 235, 232, 234, 1, 3, 64, 237, 232, 1, 3, 64, 232, 235, 1,
-       3, 11, 160, 159, 1, 3, 11, 159, 228, 1, 3, 160, 43, 238, 1, 3, 238, 159, 160, 1,
-       3, 42, 234, 159, 1, 3, 42, 159, 238, 1, 3, 234, 60, 228, 1, 3, 228, 159, 234, 1,
-3, 8, 208, 150, 1, 3, 8, 150, 151, 1, 3, 208, 55, 239, 1, 3, 239, 150, 208, 1,
-       3, 42, 238, 150, 1, 3, 42, 150, 239, 1, 3, 238, 43, 151, 1, 3, 151, 150, 238, 1,
-       3, 203, 3, 241, 1, 3, 241, 202, 203, 1, 3, 64, 235, 202, 1, 3, 64, 202, 241, 1,
-       3, 235, 42, 239, 1, 3, 239, 202, 235, 1, 3, 55, 203, 202, 1, 3, 55, 202, 239, 1,
-3, 2, 237, 236, 1, 3, 2, 236, 245, 1, 3, 237, 64, 242, 1, 3, 242, 236, 237, 1,
-       3, 63, 244, 236, 1, 3, 63, 236, 242, 1, 3, 244, 68, 245, 1, 3, 245, 236, 244, 1,
-3, 3, 246, 240, 1, 3, 3, 240, 241, 1, 3, 246, 65, 248, 1, 3, 248, 240, 246, 1,
-       3, 63, 242, 240, 1, 3, 63, 240, 248, 1, 3, 242, 64, 241, 1, 3, 241, 240, 242, 1,
-3, 4, 250, 247, 1, 3, 4, 247, 253, 1, 3, 67, 251, 247, 1, 3, 67, 247, 250, 1,
-       3, 63, 248, 247, 1, 3, 63, 247, 251, 1, 3, 248, 65, 253, 1, 3, 253, 247, 248, 1,
-3, 7, 255, 243, 1, 3, 7, 243, 257, 1, 3, 255, 68, 244, 1, 3, 244, 243, 255, 1,
-       3, 63, 251, 243, 1, 3, 63, 243, 244, 1, 3, 67, 257, 243, 1, 3, 67, 243, 251, 1,
-3, 3, 206, 205, 1, 3, 3, 205, 246, 1, 3, 206, 54, 258, 1, 3, 258, 205, 206, 1,
-       3, 53, 259, 205, 1, 3, 53, 205, 258, 1, 3, 259, 65, 246, 1, 3, 246, 205, 259, 1,
-3, 1, 260, 195, 1, 3, 1, 195, 196, 1, 3, 260, 69, 262, 1, 3, 262, 195, 260, 1,
-       3, 53, 258, 195, 1, 3, 53, 195, 262, 1, 3, 258, 54, 196, 1, 3, 196, 195, 258, 1,
-3, 5, 264, 261, 1, 3, 5, 261, 267, 1, 3, 70, 265, 261, 1, 3, 70, 261, 264, 1,
-       3, 53, 262, 261, 1, 3, 53, 261, 265, 1, 3, 262, 69, 267, 1, 3, 267, 261, 262, 1,
-3, 4, 253, 252, 1, 3, 4, 252, 268, 1, 3, 253, 65, 259, 1, 3, 259, 252, 253, 1,
-       3, 53, 265, 252, 1, 3, 53, 252, 259, 1, 3, 70, 268, 252, 1, 3, 70, 252, 265, 1,
-3, 1, 214, 213, 1, 3, 1, 213, 260, 1, 3, 214, 59, 269, 1, 3, 269, 213, 214, 1,
-       3, 58, 270, 213, 1, 3, 58, 213, 269, 1, 3, 270, 69, 260, 1, 3, 260, 213, 270, 1,
-3, 0, 271, 218, 1, 3, 0, 218, 219, 1, 3, 271, 71, 273, 1, 3, 273, 218, 271, 1,
-       3, 58, 269, 218, 1, 3, 58, 218, 273, 1, 3, 269, 59, 219, 1, 3, 219, 218, 269, 1,
-3, 6, 275, 272, 1, 3, 6, 272, 278, 1, 3, 72, 276, 272, 1, 3, 72, 272, 275, 1,
-       3, 58, 273, 272, 1, 3, 58, 272, 276, 1, 3, 273, 71, 278, 1, 3, 278, 272, 273, 1,
-3, 5, 267, 266, 1, 3, 5, 266, 279, 1, 3, 267, 69, 270, 1, 3, 270, 266, 267, 1,
-       3, 58, 276, 266, 1, 3, 58, 266, 270, 1, 3, 72, 279, 266, 1, 3, 72, 266, 276, 1,
-3, 0, 226, 225, 1, 3, 0, 225, 271, 1, 3, 226, 62, 280, 1, 3, 280, 225, 226, 1,
-       3, 61, 281, 225, 1, 3, 61, 225, 280, 1, 3, 281, 71, 271, 1, 3, 271, 225, 281, 1,
-3, 2, 245, 230, 1, 3, 2, 230, 231, 1, 3, 245, 68, 282, 1, 3, 282, 230, 245, 1,
-       3, 61, 280, 230, 1, 3, 61, 230, 282, 1, 3, 280, 62, 231, 1, 3, 231, 230, 280, 1,
-3, 7, 283, 254, 1, 3, 7, 254, 255, 1, 3, 73, 284, 254, 1, 3, 73, 254, 283, 1,
-       3, 61, 282, 254, 1, 3, 61, 254, 284, 1, 3, 282, 68, 255, 1, 3, 255, 254, 282, 1,
-3, 6, 278, 277, 1, 3, 6, 277, 285, 1, 3, 278, 71, 281, 1, 3, 281, 277, 278, 1,
-       3, 61, 284, 277, 1, 3, 61, 277, 281, 1, 3, 73, 285, 277, 1, 3, 73, 277, 284, 1,
-3, 4, 268, 249, 1, 3, 4, 249, 250, 1, 3, 268, 70, 286, 1, 3, 286, 249, 268, 1,
-       3, 66, 287, 249, 1, 3, 66, 249, 286, 1, 3, 287, 67, 250, 1, 3, 250, 249, 287, 1,
-3, 5, 279, 263, 1, 3, 5, 263, 264, 1, 3, 279, 72, 288, 1, 3, 288, 263, 279, 1,
-       3, 66, 286, 263, 1, 3, 66, 263, 288, 1, 3, 286, 70, 264, 1, 3, 264, 263, 286, 1,
-3, 6, 285, 274, 1, 3, 6, 274, 275, 1, 3, 285, 73, 289, 1, 3, 289, 274, 285, 1,
-       3, 66, 288, 274, 1, 3, 66, 274, 289, 1, 3, 288, 72, 275, 1, 3, 275, 274, 288, 1,
-3, 7, 257, 256, 1, 3, 7, 256, 283, 1, 3, 257, 67, 287, 1, 3, 287, 256, 257, 1,
-       3, 66, 289, 256, 1, 3, 66, 256, 287, 1, 3, 289, 73, 283, 1, 3, 283, 256, 289, 1,
-
-       0
-};
-
-struct lwo  LWO_s1_6 =
-{
-       290,                    /* number of points */
-       s1_6_PNTS, s1_6_normals, s1_6_POLS, 0L
-};
-
-#endif /* USE_GL */
-
-/* End of s1_6.c */
diff --git a/hacks/glx/s1_b.c b/hacks/glx/s1_b.c
deleted file mode 100644 (file)
index 8510d91..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)s1_b.c       4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Points to render "s1_b" in 3D.
- *
- * Generated by lw2ogl.  Link this with your program but do
- * not edit by hand.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include "buildlwo.h"
-
-static GLfloat s1_b_PNTS[] =
-{
-       (GLfloat) - 0.137893, (GLfloat) 0.043508, (GLfloat) - 0.125711,
-       (GLfloat) - 0.095845, (GLfloat) - 0.165656, (GLfloat) 0.072892,
-       (GLfloat) - 0.093165, (GLfloat) 0.152051, (GLfloat) 0.327744,
-       (GLfloat) - 0.003795, (GLfloat) 0.001470, (GLfloat) - 0.102225,
-       (GLfloat) 0.152845, (GLfloat) - 0.430757, (GLfloat) - 0.031907,
-       (GLfloat) - 0.118828, (GLfloat) 0.399389, (GLfloat) 0.091047,
-       (GLfloat) - 0.169137, (GLfloat) - 0.181241, (GLfloat) - 0.288763,
-       (GLfloat) 0.048660, (GLfloat) 0.018262, (GLfloat) - 0.035049,
-       (GLfloat) 0.008859, (GLfloat) 0.208004, (GLfloat) - 0.059048,
-       (GLfloat) - 0.009212, (GLfloat) - 0.042229, (GLfloat) - 0.000692,
-       (GLfloat) - 0.040025, (GLfloat) 0.115695, (GLfloat) 0.178962,
-       (GLfloat) - 0.198525, (GLfloat) 0.018630, (GLfloat) 0.257202,
-       (GLfloat) 0.205081, (GLfloat) - 0.244569, (GLfloat) 0.136314,
-       (GLfloat) - 0.214336, (GLfloat) - 0.149946, (GLfloat) - 0.006872,
-       (GLfloat) 0.245675, (GLfloat) - 0.227316, (GLfloat) - 0.184201,
-       (GLfloat) - 0.001494, (GLfloat) 0.259139, (GLfloat) - 0.260652,
-       (GLfloat) 0.070243, (GLfloat) 0.038750, (GLfloat) 0.069425,
-       (GLfloat) - 0.033229, (GLfloat) - 0.259151, (GLfloat) 0.298856,
-       (GLfloat) 0.088773, (GLfloat) - 0.065324, (GLfloat) 0.260294,
-       (GLfloat) 0.009195, (GLfloat) 0.078651, (GLfloat) 0.055543,
-       (GLfloat) - 0.090795, (GLfloat) 0.025672, (GLfloat) 0.056988,
-       (GLfloat) - 0.163707, (GLfloat) - 0.011627, (GLfloat) - 0.096395,
-       (GLfloat) 0.068886, (GLfloat) 0.257031, (GLfloat) - 0.264175,
-       (GLfloat) - 0.018086, (GLfloat) - 0.285526, (GLfloat) 0.152989,
-       (GLfloat) - 0.017489, (GLfloat) 0.031671, (GLfloat) 0.000107,
-       (GLfloat) - 0.075583, (GLfloat) - 0.097617, (GLfloat) 0.030074,
-       (GLfloat) 0.129221, (GLfloat) - 0.087628, (GLfloat) 0.171748,
-       (GLfloat) - 0.007530, (GLfloat) - 0.084194, (GLfloat) 0.186045,
-       (GLfloat) 0.474638, (GLfloat) 0.004818, (GLfloat) 0.200460,
-       (GLfloat) 0.016796, (GLfloat) 0.096614, (GLfloat) - 0.221351,
-       (GLfloat) 0.187032, (GLfloat) 0.031017, (GLfloat) 0.039986,
-       (GLfloat) - 0.142119, (GLfloat) - 0.105297, (GLfloat) - 0.100849,
-       (GLfloat) 0.142768, (GLfloat) - 0.313960, (GLfloat) - 0.349716,
-       (GLfloat) - 0.146805, (GLfloat) 0.140482, (GLfloat) 0.035653,
-       (GLfloat) 0.039939, (GLfloat) - 0.051822, (GLfloat) - 0.017672,
-       (GLfloat) 0.057111, (GLfloat) - 0.075686, (GLfloat) - 0.103478,
-       (GLfloat) 0.049696, (GLfloat) - 0.135070, (GLfloat) 0.055097,
-       (GLfloat) 0.030271, (GLfloat) 0.075412, (GLfloat) - 0.103571,
-       (GLfloat) 0.100158, (GLfloat) - 0.022917, (GLfloat) 0.073895,
-       (GLfloat) 0.085544, (GLfloat) - 0.273613, (GLfloat) 0.092456,
-       (GLfloat) 0.077489, (GLfloat) - 0.309836, (GLfloat) - 0.003664,
-       (GLfloat) - 0.017590, (GLfloat) - 0.127869, (GLfloat) 0.153118,
-       (GLfloat) - 0.157014, (GLfloat) - 0.242184, (GLfloat) 0.070478,
-       (GLfloat) - 0.018167, (GLfloat) - 0.133639, (GLfloat) - 0.174937,
-       (GLfloat) - 0.106973, (GLfloat) - 0.189783, (GLfloat) 0.038622,
-       (GLfloat) - 0.000096, (GLfloat) 0.104429, (GLfloat) - 0.032589,
-       (GLfloat) - 0.032036, (GLfloat) - 0.021493, (GLfloat) 0.279829,
-       (GLfloat) - 0.093181, (GLfloat) - 0.058024, (GLfloat) 0.182239,
-       (GLfloat) 0.012941, (GLfloat) - 0.010409, (GLfloat) 0.088080,
-       (GLfloat) 0.256718, (GLfloat) - 0.118137, (GLfloat) - 0.078847,
-       (GLfloat) - 0.113382, (GLfloat) 0.135060, (GLfloat) 0.269946,
-       (GLfloat) 0.175810, (GLfloat) - 0.026321, (GLfloat) 0.013860,
-       (GLfloat) - 0.110606, (GLfloat) - 0.023553, (GLfloat) - 0.255525,
-       (GLfloat) 0.007163, (GLfloat) 0.068674, (GLfloat) 0.010214,
-       (GLfloat) 0.031631, (GLfloat) - 0.170381, (GLfloat) - 0.174604,
-       (GLfloat) 0.117242, (GLfloat) 0.014353, (GLfloat) - 0.021215,
-       (GLfloat) 0.090315, (GLfloat) 0.161755, (GLfloat) 0.074427,
-       (GLfloat) 0.285616, (GLfloat) 0.335824, (GLfloat) - 0.083891,
-       (GLfloat) - 0.145763, (GLfloat) 0.109292, (GLfloat) 0.121340,
-       (GLfloat) - 0.147459, (GLfloat) - 0.041936, (GLfloat) 0.010427,
-       (GLfloat) - 0.082626, (GLfloat) 0.151300, (GLfloat) - 0.030875,
-       (GLfloat) 0.217154, (GLfloat) - 0.288504, (GLfloat) - 0.202483,
-       (GLfloat) 0.026532, (GLfloat) - 0.106796, (GLfloat) 0.121041,
-       (GLfloat) 0.046695, (GLfloat) - 0.033673, (GLfloat) - 0.043721,
-       (GLfloat) 0.135596, (GLfloat) 0.217426, (GLfloat) - 0.219631,
-       (GLfloat) 0.137627, (GLfloat) 0.026335, (GLfloat) - 0.082390,
-       (GLfloat) - 0.031665, (GLfloat) - 0.115897, (GLfloat) 0.077834,
-       (GLfloat) - 0.214922, (GLfloat) - 0.162169, (GLfloat) 0.073035,
-       (GLfloat) - 0.076108, (GLfloat) 0.200481, (GLfloat) 0.036119,
-       (GLfloat) 0.012715, (GLfloat) - 0.161921, (GLfloat) 0.179804,
-       (GLfloat) 0.140409, (GLfloat) - 0.165899, (GLfloat) - 0.005149,
-       (GLfloat) - 0.054606, (GLfloat) 0.011149, (GLfloat) 0.045768,
-       (GLfloat) 0.116640, (GLfloat) - 0.180314, (GLfloat) 0.045320,
-       (GLfloat) 0.342166, (GLfloat) 0.295895, (GLfloat) - 0.049250,
-       (GLfloat) - 0.133242, (GLfloat) 0.129064, (GLfloat) 0.136969,
-       (GLfloat) 0.137520, (GLfloat) - 0.387145, (GLfloat) 0.132137,
-       (GLfloat) 0.023302, (GLfloat) 0.194298, (GLfloat) - 0.066187,
-       (GLfloat) 0.089302, (GLfloat) 0.128683, (GLfloat) - 0.072530,
-       (GLfloat) - 0.141374, (GLfloat) 0.035924, (GLfloat) - 0.079354,
-       (GLfloat) - 0.209233, (GLfloat) 0.018987, (GLfloat) - 0.004193,
-       (GLfloat) 0.156295, (GLfloat) - 0.034087, (GLfloat) 0.344315,
-       (GLfloat) - 0.005946, (GLfloat) 0.039791, (GLfloat) 0.071862,
-       (GLfloat) 0.076043, (GLfloat) - 0.094430, (GLfloat) 0.090122,
-       (GLfloat) 0.127394, (GLfloat) 0.031466, (GLfloat) - 0.028015,
-       (GLfloat) - 0.061000, (GLfloat) 0.169741, (GLfloat) - 0.127635,
-       (GLfloat) - 0.015117, (GLfloat) - 0.160883, (GLfloat) - 0.095443,
-       (GLfloat) - 0.185998, (GLfloat) - 0.182942, (GLfloat) 0.056857,
-       (GLfloat) 0.016499, (GLfloat) - 0.308118, (GLfloat) - 0.075513,
-       (GLfloat) 0.024971, (GLfloat) - 0.301226, (GLfloat) - 0.027251,
-       (GLfloat) - 0.035944, (GLfloat) 0.061566, (GLfloat) 0.013883,
-       (GLfloat) 0.007215, (GLfloat) 0.046198, (GLfloat) - 0.227891,
-       (GLfloat) 0.189165, (GLfloat) 0.079471, (GLfloat) - 0.067849,
-       (GLfloat) 0.026963, (GLfloat) 0.027982, (GLfloat) - 0.050419,
-       (GLfloat) - 0.050896, (GLfloat) 0.069604, (GLfloat) - 0.196938,
-       (GLfloat) 0.064274, (GLfloat) - 0.205263, (GLfloat) 0.297868,
-       (GLfloat) - 0.047543, (GLfloat) 0.147822, (GLfloat) 0.166593,
-       (GLfloat) 0.010318, (GLfloat) - 0.002148, (GLfloat) 0.029434,
-       (GLfloat) 0.036107, (GLfloat) - 0.523568, (GLfloat) - 0.118442,
-       (GLfloat) - 0.199410, (GLfloat) 0.233526, (GLfloat) - 0.161289,
-       (GLfloat) - 0.047441, (GLfloat) - 0.013973, (GLfloat) 0.112998,
-       (GLfloat) - 0.043494, (GLfloat) - 0.181796, (GLfloat) 0.065864,
-       (GLfloat) - 0.074984, (GLfloat) 0.177758, (GLfloat) - 0.156470,
-       (GLfloat) 0.225216, (GLfloat) 0.081058, (GLfloat) - 0.169876,
-       (GLfloat) - 0.041510, (GLfloat) 0.025763, (GLfloat) - 0.231350,
-       (GLfloat) 0.259015, (GLfloat) 0.274641, (GLfloat) 0.018290,
-       (GLfloat) 0.039196, (GLfloat) 0.010028, (GLfloat) 0.072771,
-       (GLfloat) 0.031646, (GLfloat) 0.075290, (GLfloat) 0.039258,
-       (GLfloat) 0.052930, (GLfloat) - 0.034809, (GLfloat) 0.165429,
-       (GLfloat) - 0.072511, (GLfloat) 0.095786, (GLfloat) - 0.222144,
-       (GLfloat) 0.038706, (GLfloat) 0.032296, (GLfloat) - 0.002495,
-       (GLfloat) 0.011675, (GLfloat) - 0.061944, (GLfloat) 0.082555,
-       (GLfloat) - 0.168400, (GLfloat) 0.074113, (GLfloat) 0.049321,
-       (GLfloat) 0.001263, (GLfloat) - 0.207436, (GLfloat) 0.013949,
-       (GLfloat) - 0.027045, (GLfloat) 0.015697, (GLfloat) - 0.047831,
-       (GLfloat) 0.121989, (GLfloat) - 0.043014, (GLfloat) - 0.004426,
-       (GLfloat) 0.238374, (GLfloat) - 0.320060, (GLfloat) - 0.111754,
-       (GLfloat) 0.095077, (GLfloat) 0.014640, (GLfloat) 0.070665,
-       (GLfloat) - 0.084367, (GLfloat) 0.016444, (GLfloat) 0.000788,
-       (GLfloat) - 0.117804, (GLfloat) 0.113550, (GLfloat) 0.087029,
-       (GLfloat) - 0.109080, (GLfloat) - 0.155795, (GLfloat) 0.040085,
-       (GLfloat) - 0.020370, (GLfloat) 0.118787, (GLfloat) 0.101787,
-       (GLfloat) 0.140877, (GLfloat) - 0.144829, (GLfloat) 0.107720,
-       (GLfloat) - 0.247002, (GLfloat) - 0.454632, (GLfloat) 0.070535,
-       (GLfloat) - 0.016278, (GLfloat) - 0.111440, (GLfloat) 0.270110,
-       (GLfloat) - 0.017624, (GLfloat) - 0.146232, (GLfloat) 0.154626,
-       (GLfloat) 0.214030, (GLfloat) 0.041025, (GLfloat) - 0.170250,
-       (GLfloat) 0.010009, (GLfloat) - 0.159290, (GLfloat) - 0.076895,
-       (GLfloat) 0.116168, (GLfloat) 0.156775, (GLfloat) - 0.077935,
-       (GLfloat) 0.199355, (GLfloat) 0.081120, (GLfloat) 0.003352,
-       (GLfloat) 0.054178, (GLfloat) - 0.036863, (GLfloat) - 0.004573,
-       (GLfloat) - 0.015149, (GLfloat) 0.057005, (GLfloat) - 0.008878,
-       (GLfloat) 0.374758, (GLfloat) - 0.007823, (GLfloat) - 0.078051,
-       (GLfloat) - 0.034977, (GLfloat) 0.026837, (GLfloat) 0.035441,
-       (GLfloat) 0.101867, (GLfloat) 0.121954, (GLfloat) 0.040450,
-       (GLfloat) - 0.136911, (GLfloat) 0.010061, (GLfloat) 0.082698,
-       (GLfloat) 0.121665, (GLfloat) - 0.589852, (GLfloat) 0.106401,
-       (GLfloat) - 0.064574, (GLfloat) 0.098679, (GLfloat) 0.059336,
-       (GLfloat) 0.103037, (GLfloat) - 0.075263, (GLfloat) 0.172586,
-       (GLfloat) - 0.217492, (GLfloat) - 0.170584, (GLfloat) - 0.025846,
-       (GLfloat) 0.260366, (GLfloat) 0.002117, (GLfloat) 0.041535,
-       (GLfloat) - 0.024112, (GLfloat) - 0.023437, (GLfloat) - 0.088146,
-       (GLfloat) - 0.007767, (GLfloat) 0.061738, (GLfloat) 0.116208,
-       (GLfloat) 0.253471, (GLfloat) 0.113278, (GLfloat) 0.231012,
-       (GLfloat) - 0.011399, (GLfloat) 0.116962, (GLfloat) - 0.037465,
-       (GLfloat) 0.233898, (GLfloat) 0.226108, (GLfloat) 0.077176,
-       (GLfloat) - 0.004640, (GLfloat) 0.209191, (GLfloat) - 0.091738,
-       (GLfloat) 0.093995, (GLfloat) 0.328937, (GLfloat) 0.245098,
-       (GLfloat) 0.155739, (GLfloat) - 0.327971, (GLfloat) - 0.115265,
-       (GLfloat) 0.125306, (GLfloat) 0.174931, (GLfloat) 0.130030,
-       (GLfloat) 0.005005, (GLfloat) - 0.022310, (GLfloat) 0.120651,
-       (GLfloat) 0.046982, (GLfloat) - 0.058839, (GLfloat) - 0.097958,
-       (GLfloat) - 0.059618, (GLfloat) - 0.068114, (GLfloat) 0.070137,
-       (GLfloat) 0.053184, (GLfloat) - 0.081163, (GLfloat) 0.000020,
-       (GLfloat) 0.188066, (GLfloat) - 0.082942, (GLfloat) - 0.013689,
-       (GLfloat) - 0.161390, (GLfloat) - 0.335891, (GLfloat) - 0.060737,
-       (GLfloat) 0.131189, (GLfloat) 0.036733, (GLfloat) - 0.093511,
-       (GLfloat) - 0.002496, (GLfloat) - 0.059035, (GLfloat) - 0.084055,
-       (GLfloat) 0.109820, (GLfloat) - 0.235531, (GLfloat) 0.130865,
-       (GLfloat) 0.018909, (GLfloat) 0.062351, (GLfloat) 0.111532,
-       (GLfloat) 0.123548, (GLfloat) 0.094008, (GLfloat) 0.056761,
-       (GLfloat) 0.106710, (GLfloat) - 0.049834, (GLfloat) - 0.147748,
-       (GLfloat) 0.102940, (GLfloat) - 0.113169, (GLfloat) 0.191710,
-       (GLfloat) - 0.028647, (GLfloat) 0.128038, (GLfloat) - 0.104189,
-       (GLfloat) 0.107226, (GLfloat) - 0.220633, (GLfloat) - 0.147310,
-       (GLfloat) - 0.205747, (GLfloat) 0.063433, (GLfloat) - 0.026135,
-       (GLfloat) - 0.064614, (GLfloat) 0.096963, (GLfloat) - 0.080108,
-       (GLfloat) - 0.083255, (GLfloat) 0.113008, (GLfloat) - 0.089852,
-       (GLfloat) 0.180961, (GLfloat) - 0.269100, (GLfloat) 0.115523,
-       (GLfloat) 0.044722, (GLfloat) - 0.023285, (GLfloat) 0.024813,
-       (GLfloat) 0.078986, (GLfloat) 0.037242, (GLfloat) 0.005124,
-       (GLfloat) 0.115141, (GLfloat) 0.124478, (GLfloat) - 0.034603,
-       (GLfloat) 0.022454, (GLfloat) 0.155937, (GLfloat) - 0.096183,
-       (GLfloat) 0.175318, (GLfloat) 0.007233, (GLfloat) - 0.138507,
-       (GLfloat) 0.019182, (GLfloat) - 0.037869, (GLfloat) 0.074242,
-       (GLfloat) 0.058218, (GLfloat) 0.212269, (GLfloat) - 0.003886,
-       (GLfloat) - 0.188525, (GLfloat) - 0.075703, (GLfloat) 0.075643,
-       (GLfloat) - 0.029085, (GLfloat) - 0.076746, (GLfloat) - 0.273473,
-       (GLfloat) - 0.105590, (GLfloat) - 0.238524, (GLfloat) - 0.087465,
-       (GLfloat) 0.086122, (GLfloat) - 0.340807, (GLfloat) - 0.192851,
-       (GLfloat) - 0.247936, (GLfloat) - 0.003160, (GLfloat) 0.082106,
-       (GLfloat) 0.137988, (GLfloat) - 0.041876, (GLfloat) - 0.012086,
-       (GLfloat) - 0.140714, (GLfloat) - 0.138827, (GLfloat) - 0.064179,
-       (GLfloat) - 0.059380, (GLfloat) 0.015642, (GLfloat) 0.113841,
-       (GLfloat) - 0.031501, (GLfloat) 0.007130, (GLfloat) - 0.125767,
-       (GLfloat) 0.021294, (GLfloat) - 0.021957, (GLfloat) - 0.069365,
-       (GLfloat) - 0.012419, (GLfloat) 0.019780, (GLfloat) - 0.077459,
-       (GLfloat) 0.085524, (GLfloat) 0.087513, (GLfloat) - 0.107484,
-       (GLfloat) - 0.303263, (GLfloat) 0.263672, (GLfloat) - 0.220649,
-       (GLfloat) - 0.090267, (GLfloat) - 0.376337, (GLfloat) - 0.127634,
-       (GLfloat) 0.087681, (GLfloat) 0.015985, (GLfloat) - 0.029860,
-       (GLfloat) 0.119257, (GLfloat) 0.140347, (GLfloat) 0.194003,
-       (GLfloat) 0.066270, (GLfloat) 0.127178, (GLfloat) - 0.003765,
-       (GLfloat) 0.037563, (GLfloat) - 0.110829, (GLfloat) 0.000382,
-       (GLfloat) 0.034295, (GLfloat) - 0.045737, (GLfloat) 0.045204,
-       (GLfloat) 0.017365, (GLfloat) - 0.072708, (GLfloat) 0.056698,
-       (GLfloat) 0.045238, (GLfloat) 0.187956, (GLfloat) - 0.055878,
-       (GLfloat) - 0.132755, (GLfloat) 0.017969, (GLfloat) - 0.041205,
-       (GLfloat) 0.189702, (GLfloat) - 0.020780, (GLfloat) - 0.077422,
-       (GLfloat) 0.210419, (GLfloat) 0.178041, (GLfloat) - 0.005855,
-       (GLfloat) 0.104527, (GLfloat) - 0.304323, (GLfloat) 0.002581,
-       (GLfloat) 0.043359, (GLfloat) - 0.060695, (GLfloat) - 0.011878,
-       (GLfloat) - 0.000267, (GLfloat) 0.020510, (GLfloat) - 0.046383,
-       (GLfloat) 0.252891, (GLfloat) 0.074246, (GLfloat) - 0.047689,
-       (GLfloat) - 0.069874, (GLfloat) 0.118962, (GLfloat) - 0.052781,
-       (GLfloat) 0.086188, (GLfloat) 0.068354, (GLfloat) - 0.213621,
-       (GLfloat) 0.086637, (GLfloat) - 0.171519, (GLfloat) 0.006447,
-       (GLfloat) 0.196785, (GLfloat) - 0.086044, (GLfloat) - 0.068059,
-       (GLfloat) 0.100401, (GLfloat) 0.243886, (GLfloat) - 0.142258,
-       (GLfloat) 0.173010, (GLfloat) 0.303375, (GLfloat) - 0.060085,
-       (GLfloat) - 0.041181, (GLfloat) - 0.097467, (GLfloat) 0.073776,
-       (GLfloat) - 0.013471, (GLfloat) - 0.133299, (GLfloat) - 0.143570,
-       (GLfloat) - 0.302092, (GLfloat) - 0.158342, (GLfloat) 0.230719,
-       (GLfloat) 0.074434, (GLfloat) - 0.143530, (GLfloat) 0.294895,
-       (GLfloat) - 0.165626, (GLfloat) 0.200869, (GLfloat) - 0.130737,
-       (GLfloat) 0.102444, (GLfloat) 0.277067, (GLfloat) 0.078210,
-       (GLfloat) - 0.183696, (GLfloat) - 0.010502, (GLfloat) - 0.150481,
-       (GLfloat) - 0.070029, (GLfloat) - 0.019635, (GLfloat) - 0.059141,
-       (GLfloat) - 0.005930, (GLfloat) 0.069199, (GLfloat) - 0.013126,
-       (GLfloat) - 0.119333, (GLfloat) - 0.007972, (GLfloat) 0.119489,
-       (GLfloat) 0.033072, (GLfloat) 0.081756, (GLfloat) - 0.034481,
-       (GLfloat) - 0.108282, (GLfloat) - 0.065310, (GLfloat) 0.146009,
-       (GLfloat) 0.080950, (GLfloat) 0.111320, (GLfloat) 0.004291,
-       (GLfloat) 0.071208, (GLfloat) - 0.112941, (GLfloat) 0.028135,
-       (GLfloat) - 0.024632, (GLfloat) 0.190525, (GLfloat) - 0.285626,
-       (GLfloat) - 0.105040, (GLfloat) 0.044008, (GLfloat) 0.020236,
-       (GLfloat) - 0.017815, (GLfloat) - 0.076684, (GLfloat) - 0.065840,
-       (GLfloat) 0.083563, (GLfloat) 0.100873, (GLfloat) - 0.141154,
-       (GLfloat) - 0.062066, (GLfloat) - 0.010894, (GLfloat) 0.066110,
-       (GLfloat) - 0.056763, (GLfloat) 0.024777, (GLfloat) - 0.176209,
-       (GLfloat) - 0.014442, (GLfloat) 0.052861, (GLfloat) 0.013010,
-       (GLfloat) - 0.157546, (GLfloat) - 0.118279, (GLfloat) - 0.237648,
-       (GLfloat) - 0.234497, (GLfloat) - 0.158049, (GLfloat) 0.102635,
-       (GLfloat) 0.061685, (GLfloat) - 0.052695, (GLfloat) - 0.042243,
-       (GLfloat) 0.093961, (GLfloat) - 0.025060, (GLfloat) 0.046602,
-       (GLfloat) 0.004395, (GLfloat) 0.150912, (GLfloat) 0.191784,
-       (GLfloat) 0.067299, (GLfloat) - 0.059575, (GLfloat) 0.161018,
-       (GLfloat) - 0.233155, (GLfloat) - 0.109721, (GLfloat) 0.194653,
-       (GLfloat) 0.217444, (GLfloat) 0.221231, (GLfloat) - 0.201241,
-       (GLfloat) - 0.033689, (GLfloat) - 0.341937, (GLfloat) - 0.099231,
-       (GLfloat) 0.042771, (GLfloat) - 0.028862, (GLfloat) 0.067736,
-       (GLfloat) 0.110240, (GLfloat) 0.274029, (GLfloat) - 0.157689,
-       (GLfloat) - 0.055994, (GLfloat) 0.144729, (GLfloat) 0.090901,
-       (GLfloat) 0.211192, (GLfloat) 0.058165, (GLfloat) - 0.149872,
-       (GLfloat) 0.102735, (GLfloat) - 0.044061, (GLfloat) - 0.044795,
-       (GLfloat) - 0.042153, (GLfloat) - 0.010955, (GLfloat) 0.014341,
-       (GLfloat) - 0.011649, (GLfloat) 0.099072, (GLfloat) - 0.086419,
-       (GLfloat) - 0.018920, (GLfloat) 0.000640, (GLfloat) - 0.031729,
-       (GLfloat) - 0.216886, (GLfloat) - 0.057512, (GLfloat) 0.071195,
-       (GLfloat) - 0.188150, (GLfloat) 0.049292, (GLfloat) 0.258489,
-       (GLfloat) - 0.023494, (GLfloat) 0.021489, (GLfloat) 0.199785,
-       (GLfloat) - 0.045818, (GLfloat) 0.066753, (GLfloat) - 0.035593,
-       (GLfloat) 0.010986, (GLfloat) 0.166767, (GLfloat) 0.275085,
-       (GLfloat) - 0.177039, (GLfloat) 0.010372, (GLfloat) 0.167936,
-       (GLfloat) - 0.423239, (GLfloat) 0.027466, (GLfloat) - 0.126114,
-       (GLfloat) - 0.102035, (GLfloat) 0.282640, (GLfloat) 0.022622,
-       (GLfloat) - 0.023997, (GLfloat) 0.176943, (GLfloat) 0.093272,
-       (GLfloat) - 0.090009, (GLfloat) 0.015338, (GLfloat) 0.250857,
-       (GLfloat) 0.011095, (GLfloat) 0.006703, (GLfloat) 0.057076,
-       (GLfloat) 0.133423, (GLfloat) 0.234639, (GLfloat) - 0.070260,
-       (GLfloat) - 0.295994, (GLfloat) 0.185615, (GLfloat) 0.117148,
-       (GLfloat) 0.235480, (GLfloat) 0.066195, (GLfloat) 0.078641,
-       (GLfloat) - 0.026545, (GLfloat) 0.093931, (GLfloat) 0.008019,
-       (GLfloat) 0.181656, (GLfloat) - 0.088719, (GLfloat) 0.045959,
-       (GLfloat) - 0.076308, (GLfloat) - 0.164584, (GLfloat) 0.018271,
-       (GLfloat) 0.092026, (GLfloat) 0.201866, (GLfloat) - 0.106051,
-       (GLfloat) 0.019876, (GLfloat) 0.050967, (GLfloat) 0.176081,
-       (GLfloat) - 0.018546, (GLfloat) 0.138749, (GLfloat) - 0.008255,
-       (GLfloat) - 0.026049, (GLfloat) - 0.068465, (GLfloat) - 0.055467,
-       (GLfloat) - 0.260245, (GLfloat) 0.221833, (GLfloat) - 0.048541,
-       (GLfloat) - 0.169783, (GLfloat) 0.354992, (GLfloat) - 0.017943,
-       (GLfloat) - 0.306063, (GLfloat) 0.074787, (GLfloat) 0.101971,
-       (GLfloat) 0.215973, (GLfloat) 0.107558, (GLfloat) - 0.008808,
-       (GLfloat) 0.390235, (GLfloat) - 0.275652, (GLfloat) - 0.117085,
-       (GLfloat) 0.033898, (GLfloat) 0.046047, (GLfloat) - 0.108977,
-       (GLfloat) - 0.263507, (GLfloat) - 0.091765, (GLfloat) - 0.250234,
-       (GLfloat) - 0.044613, (GLfloat) 0.149563, (GLfloat) 0.027937,
-       (GLfloat) - 0.015397, (GLfloat) - 0.040254, (GLfloat) 0.065692,
-       (GLfloat) - 0.017531, (GLfloat) - 0.013504, (GLfloat) 0.004021,
-       (GLfloat) 0.054665, (GLfloat) - 0.018996, (GLfloat) - 0.006954,
-       (GLfloat) 0.033068, (GLfloat) 0.219349, (GLfloat) - 0.194079,
-       (GLfloat) - 0.057780, (GLfloat) 0.011881, (GLfloat) 0.084904,
-       (GLfloat) 0.139243, (GLfloat) - 0.109890, (GLfloat) 0.039145,
-       (GLfloat) 0.223272, (GLfloat) 0.208110, (GLfloat) 0.165882,
-       (GLfloat) - 0.008046, (GLfloat) 0.103847, (GLfloat) 0.278718,
-       (GLfloat) - 0.035499, (GLfloat) 0.112662, (GLfloat) - 0.088418,
-       (GLfloat) - 0.053118, (GLfloat) 0.053871, (GLfloat) - 0.054706,
-       (GLfloat) 0.118632, (GLfloat) 0.086431, (GLfloat) - 0.022494,
-       (GLfloat) 0.014943, (GLfloat) 0.039622, (GLfloat) 0.047307,
-       (GLfloat) 0.006570, (GLfloat) 0.093461, (GLfloat) 0.058982,
-       (GLfloat) 0.031448, (GLfloat) 0.325716, (GLfloat) - 0.047305,
-       (GLfloat) - 0.193710, (GLfloat) 0.087226, (GLfloat) 0.051790,
-       (GLfloat) 0.116154, (GLfloat) - 0.080023, (GLfloat) - 0.106643,
-       (GLfloat) 0.156514, (GLfloat) - 0.222710, (GLfloat) 0.275425,
-       (GLfloat) - 0.084294, (GLfloat) - 0.101851, (GLfloat) 0.425222,
-       (GLfloat) 0.030344, (GLfloat) - 0.141370, (GLfloat) - 0.282460,
-       (GLfloat) 0.003022, (GLfloat) 0.108996, (GLfloat) - 0.229152,
-       (GLfloat) - 0.133040, (GLfloat) 0.061025, (GLfloat) - 0.128942,
-       (GLfloat) - 0.077348, (GLfloat) 0.013363, (GLfloat) - 0.072511,
-       (GLfloat) - 0.050317, (GLfloat) 0.452190, (GLfloat) 0.094114,
-       (GLfloat) 0.053309, (GLfloat) - 0.143722, (GLfloat) 0.249884,
-       (GLfloat) - 0.257016, (GLfloat) 0.100544, (GLfloat) 0.012236,
-       (GLfloat) - 0.022056, (GLfloat) - 0.212133, (GLfloat) 0.023533,
-       (GLfloat) 0.153299, (GLfloat) 0.031763, (GLfloat) 0.034577,
-       (GLfloat) 0.161729, (GLfloat) 0.084914, (GLfloat) 0.050770,
-       (GLfloat) 0.320438, (GLfloat) 0.112175, (GLfloat) 0.135015,
-       (GLfloat) - 0.040717, (GLfloat) 0.073400, (GLfloat) 0.080543,
-       (GLfloat) - 0.226004, (GLfloat) 0.143154, (GLfloat) 0.170139,
-       (GLfloat) 0.009756, (GLfloat) 0.068337, (GLfloat) 0.132111,
-       (GLfloat) 0.380191, (GLfloat) 0.233715, (GLfloat) 0.026664,
-       (GLfloat) - 0.018016, (GLfloat) 0.265426, (GLfloat) - 0.110691,
-       (GLfloat) 0.041281, (GLfloat) 0.056674, (GLfloat) - 0.119834,
-       (GLfloat) 0.170794, (GLfloat) - 0.112611, (GLfloat) 0.094839,
-       (GLfloat) 0.216318, (GLfloat) 0.002081, (GLfloat) 0.154653,
-       (GLfloat) - 0.036815, (GLfloat) 0.024332, (GLfloat) 0.172587,
-       (GLfloat) - 0.064554, (GLfloat) 0.160699, (GLfloat) 0.101229,
-       (GLfloat) 0.114451, (GLfloat) 0.016039, (GLfloat) 0.293489,
-       (GLfloat) 0.023010, (GLfloat) - 0.028932, (GLfloat) 0.014800,
-       (GLfloat) - 0.290527, (GLfloat) 0.172553, (GLfloat) 0.129526,
-       (GLfloat) - 0.048159, (GLfloat) - 0.181222, (GLfloat) 0.305871,
-       (GLfloat) 0.065351, (GLfloat) - 0.399962, (GLfloat) - 0.030479,
-       (GLfloat) 0.334123, (GLfloat) - 0.120149, (GLfloat) 0.241310,
-       (GLfloat) - 0.203728, (GLfloat) - 0.155627, (GLfloat) 0.140805,
-       (GLfloat) 0.061022, (GLfloat) - 0.016097, (GLfloat) 0.131688,
-       (GLfloat) 0.045050, (GLfloat) - 0.313782, (GLfloat) - 0.279077,
-       (GLfloat) 0.034252, (GLfloat) - 0.135512, (GLfloat) - 0.087765,
-       (GLfloat) 0.276236, (GLfloat) 0.036449, (GLfloat) 0.418332,
-       (GLfloat) - 0.122146, (GLfloat) 0.050998, (GLfloat) 0.131453,
-       (GLfloat) - 0.087629, (GLfloat) 0.330142, (GLfloat) 0.061353,
-       (GLfloat) 0.228676, (GLfloat) 0.093309, (GLfloat) - 0.009307,
-       (GLfloat) 0.435264, (GLfloat) 0.186185, (GLfloat) - 0.127484,
-       (GLfloat) 0.156565, (GLfloat) 0.013842, (GLfloat) - 0.103874,
-       (GLfloat) - 0.274053, (GLfloat) - 0.084119, (GLfloat) 0.096687,
-       (GLfloat) - 0.027947, (GLfloat) - 0.051152, (GLfloat) - 0.078997,
-       (GLfloat) 0.013399, (GLfloat) 0.194440, (GLfloat) 0.072030,
-       (GLfloat) 0.000082, (GLfloat) 0.130666, (GLfloat) 0.052218,
-       (GLfloat) 0.064984, (GLfloat) - 0.136859, (GLfloat) 0.092204,
-       (GLfloat) 0.109060, (GLfloat) 0.424779, (GLfloat) - 0.111867,
-       (GLfloat) 0.061748, (GLfloat) 0.160827, (GLfloat) - 0.068538,
-       (GLfloat) 0.062960, (GLfloat) 0.059638, (GLfloat) - 0.181514,
-       (GLfloat) 0.018961, (GLfloat) 0.072298, (GLfloat) 0.003517,
-       (GLfloat) - 0.099508, (GLfloat) - 0.225455, (GLfloat) - 0.021791,
-       (GLfloat) 0.001955, (GLfloat) - 0.320555, (GLfloat) 0.159506,
-       (GLfloat) - 0.057735, (GLfloat) - 0.054327, (GLfloat) - 0.095525,
-       (GLfloat) 0.319748, (GLfloat) - 0.146158, (GLfloat) - 0.198384,
-       (GLfloat) - 0.158741, (GLfloat) - 0.265443, (GLfloat) 0.036635,
-       (GLfloat) - 0.093089, (GLfloat) - 0.358379, (GLfloat) - 0.110549,
-       (GLfloat) - 0.049805, (GLfloat) 0.022246, (GLfloat) - 0.036724,
-       (GLfloat) 0.223000, (GLfloat) 0.247522, (GLfloat) - 0.232652,
-       (GLfloat) - 0.249441, (GLfloat) - 0.248325, (GLfloat) - 0.071169,
-       (GLfloat) 0.000369, (GLfloat) 0.094598, (GLfloat) - 0.162153,
-       (GLfloat) - 0.133873, (GLfloat) - 0.188473, (GLfloat) 0.272734,
-       (GLfloat) 0.046594, (GLfloat) 0.069766, (GLfloat) 0.015561,
-       (GLfloat) 0.111582, (GLfloat) - 0.239786, (GLfloat) 0.034658,
-       (GLfloat) 0.093232, (GLfloat) 0.183507, (GLfloat) - 0.011298,
-       (GLfloat) - 0.226805, (GLfloat) 0.514871, (GLfloat) - 0.064144,
-       (GLfloat) 0.085949, (GLfloat) 0.031412, (GLfloat) 0.042790,
-       (GLfloat) - 0.043755, (GLfloat) - 0.290797, (GLfloat) - 0.159142,
-       (GLfloat) 0.056671, (GLfloat) 0.167837, (GLfloat) 0.016536,
-       (GLfloat) - 0.034538, (GLfloat) 0.072185, (GLfloat) 0.066973,
-       (GLfloat) - 0.021211, (GLfloat) 0.064120, (GLfloat) - 0.174756,
-       (GLfloat) 0.090627, (GLfloat) - 0.055253, (GLfloat) 0.109457,
-       (GLfloat) 0.019686, (GLfloat) 0.004469, (GLfloat) - 0.096316,
-       (GLfloat) - 0.038864, (GLfloat) - 0.135083, (GLfloat) 0.244529,
-       (GLfloat) 0.034613, (GLfloat) - 0.069587, (GLfloat) 0.144533,
-       (GLfloat) - 0.100009, (GLfloat) - 0.057516, (GLfloat) - 0.079338,
-       (GLfloat) - 0.178026, (GLfloat) 0.085994, (GLfloat) 0.061804,
-       (GLfloat) - 0.189256, (GLfloat) 0.342739, (GLfloat) 0.043372,
-       (GLfloat) - 0.046206, (GLfloat) 0.168946, (GLfloat) - 0.133904,
-       (GLfloat) 0.015314, (GLfloat) - 0.090127, (GLfloat) - 0.058530,
-       (GLfloat) 0.169657, (GLfloat) - 0.097086, (GLfloat) 0.013746,
-       (GLfloat) 0.185131, (GLfloat) - 0.089445, (GLfloat) 0.347806,
-       (GLfloat) - 0.264432, (GLfloat) - 0.170170, (GLfloat) - 0.335858,
-       (GLfloat) - 0.086511, (GLfloat) 0.248252, (GLfloat) - 0.169698,
-       (GLfloat) 0.002287, (GLfloat) - 0.028338, (GLfloat) - 0.266432,
-       (GLfloat) - 0.085060, (GLfloat) 0.001974, (GLfloat) - 0.032789,
-       (GLfloat) 0.192750, (GLfloat) - 0.007081, (GLfloat) 0.098197,
-       (GLfloat) 0.012577, (GLfloat) 0.034983, (GLfloat) - 0.003058,
-       (GLfloat) - 0.039249, (GLfloat) 0.038498, (GLfloat) 0.067306,
-       (GLfloat) 0.021988, (GLfloat) 0.379705, (GLfloat) - 0.054619,
-       (GLfloat) - 0.151707, (GLfloat) 0.051034, (GLfloat) - 0.016003,
-       (GLfloat) - 0.057048, (GLfloat) 0.075729, (GLfloat) - 0.213397,
-       (GLfloat) - 0.137847, (GLfloat) 0.130600, (GLfloat) 0.046198,
-       (GLfloat) 0.024786, (GLfloat) 0.049556, (GLfloat) - 0.045772,
-       (GLfloat) - 0.082533, (GLfloat) 0.155397, (GLfloat) - 0.096145,
-       (GLfloat) 0.049152, (GLfloat) 0.270979, (GLfloat) - 0.147022,
-       (GLfloat) 0.061153, (GLfloat) - 0.104531, (GLfloat) - 0.103623,
-       (GLfloat) - 0.142997, (GLfloat) - 0.232885, (GLfloat) 0.040538,
-       (GLfloat) 0.048806, (GLfloat) - 0.013095, (GLfloat) - 0.003505,
-       (GLfloat) - 0.095063, (GLfloat) 0.241414, (GLfloat) - 0.202255,
-       (GLfloat) 0.108558, (GLfloat) - 0.147584, (GLfloat) 0.162682,
-       (GLfloat) 0.217105, (GLfloat) 0.252340, (GLfloat) - 0.114830,
-       (GLfloat) - 0.188028, (GLfloat) 0.417252, (GLfloat) - 0.077456,
-       (GLfloat) - 0.112855, (GLfloat) 0.105192, (GLfloat) 0.073968,
-       (GLfloat) - 0.186972, (GLfloat) 0.164022, (GLfloat) - 0.073415,
-       (GLfloat) - 0.074349, (GLfloat) - 0.324874, (GLfloat) - 0.056645,
-       (GLfloat) 0.327855, (GLfloat) - 0.271424, (GLfloat) - 0.141142,
-       (GLfloat) 0.151049, (GLfloat) 0.155239, (GLfloat) - 0.083116,
-       (GLfloat) 0.035395, (GLfloat) - 0.133176, (GLfloat) - 0.095112,
-       (GLfloat) 0.127283, (GLfloat) - 0.011837, (GLfloat) 0.199750,
-       (GLfloat) - 0.120775, (GLfloat) 0.103698, (GLfloat) 0.063302,
-       (GLfloat) 0.014222, (GLfloat) 0.198468, (GLfloat) 0.137537,
-       (GLfloat) - 0.269656, (GLfloat) 0.120644, (GLfloat) - 0.153958,
-       (GLfloat) - 0.136743, (GLfloat) - 0.119817, (GLfloat) - 0.073747,
-       (GLfloat) - 0.068156, (GLfloat) - 0.138484, (GLfloat) 0.033507,
-       (GLfloat) - 0.106835, (GLfloat) 0.114964, (GLfloat) 0.023924,
-       (GLfloat) - 0.222525, (GLfloat) 0.330321, (GLfloat) - 0.007431,
-       (GLfloat) - 0.011739, (GLfloat) 0.095156, (GLfloat) 0.139086,
-       (GLfloat) 0.146766, (GLfloat) 0.037685, (GLfloat) 0.136122,
-       (GLfloat) - 0.086532, (GLfloat) - 0.081295, (GLfloat) 0.009434,
-       (GLfloat) 0.189439, (GLfloat) 0.290592, (GLfloat) - 0.048317,
-       (GLfloat) 0.139152, (GLfloat) 0.224931, (GLfloat) 0.355509,
-       (GLfloat) 0.017162, (GLfloat) - 0.016825, (GLfloat) 0.094198,
-       (GLfloat) - 0.237595, (GLfloat) 0.205475, (GLfloat) - 0.041412,
-       (GLfloat) 0.050511, (GLfloat) 0.094900, (GLfloat) 0.252891,
-       (GLfloat) - 0.012538, (GLfloat) - 0.014082, (GLfloat) 0.064629,
-       (GLfloat) - 0.059810, (GLfloat) 0.020665, (GLfloat) - 0.260979,
-       (GLfloat) 0.073490, (GLfloat) - 0.242270, (GLfloat) 0.085847,
-       (GLfloat) 0.049499, (GLfloat) - 0.045617, (GLfloat) - 0.015894,
-       (GLfloat) - 0.121040, (GLfloat) 0.004350, (GLfloat) 0.381603,
-       (GLfloat) - 0.062798, (GLfloat) 0.055006, (GLfloat) 0.077472,
-       (GLfloat) - 0.156846, (GLfloat) - 0.033342, (GLfloat) 0.035284,
-       (GLfloat) 0.105383, (GLfloat) 0.002776, (GLfloat) - 0.046394,
-       (GLfloat) 0.247612, (GLfloat) 0.310528, (GLfloat) 0.046188,
-       (GLfloat) - 0.144567, (GLfloat) - 0.197996, (GLfloat) 0.083309,
-       (GLfloat) - 0.317845, (GLfloat) - 0.014793, (GLfloat) - 0.041608,
-       (GLfloat) - 0.169858, (GLfloat) 0.102631, (GLfloat) 0.283962,
-       (GLfloat) - 0.168757, (GLfloat) 0.093105, (GLfloat) 0.050325,
-       (GLfloat) - 0.013639, (GLfloat) 0.285100, (GLfloat) 0.047089,
-       (GLfloat) 0.216644, (GLfloat) 0.102018, (GLfloat) 0.031983,
-       (GLfloat) 0.046988, (GLfloat) 0.081482, (GLfloat) 0.021865,
-       (GLfloat) 0.124995, (GLfloat) - 0.193086, (GLfloat) 0.127870,
-       (GLfloat) 0.009153, (GLfloat) 0.178713, (GLfloat) - 0.077949,
-       (GLfloat) - 0.235371, (GLfloat) - 0.046817, (GLfloat) - 0.125764,
-       (GLfloat) - 0.089381, (GLfloat) 0.289172, (GLfloat) - 0.129356,
-       (GLfloat) 0.312993, (GLfloat) 0.120426, (GLfloat) 0.296957,
-       (GLfloat) - 0.106431, (GLfloat) 0.117096, (GLfloat) 0.156971,
-       (GLfloat) 0.030001, (GLfloat) 0.244577, (GLfloat) 0.085119,
-       (GLfloat) 0.002958, (GLfloat) - 0.035469, (GLfloat) - 0.084615,
-       (GLfloat) - 0.052248, (GLfloat) - 0.004298, (GLfloat) - 0.129170,
-       (GLfloat) - 0.158458, (GLfloat) 0.059061, (GLfloat) - 0.041780,
-       (GLfloat) - 0.007117, (GLfloat) - 0.174211, (GLfloat) 0.098819,
-       (GLfloat) - 0.158387, (GLfloat) 0.060840, (GLfloat) - 0.064818,
-       (GLfloat) 0.117241, (GLfloat) - 0.050754, (GLfloat) - 0.027945,
-       (GLfloat) - 0.014301, (GLfloat) 0.146402, (GLfloat) - 0.118414,
-       (GLfloat) 0.186611, (GLfloat) - 0.162182, (GLfloat) - 0.150909,
-       (GLfloat) - 0.106992, (GLfloat) 0.286109, (GLfloat) - 0.055512,
-       (GLfloat) 0.109689, (GLfloat) - 0.346409, (GLfloat) 0.072611,
-       (GLfloat) - 0.009694, (GLfloat) - 0.038102, (GLfloat) 0.098565,
-       (GLfloat) - 0.034598, (GLfloat) 0.323300, (GLfloat) 0.020962,
-       (GLfloat) - 0.149219, (GLfloat) 0.040596, (GLfloat) - 0.114206,
-       (GLfloat) 0.164744, (GLfloat) 0.048081, (GLfloat) 0.105464,
-       (GLfloat) 0.036214, (GLfloat) 0.099523, (GLfloat) 0.038595,
-       (GLfloat) 0.056537, (GLfloat) 0.036271, (GLfloat) 0.003042,
-       (GLfloat) - 0.157110, (GLfloat) 0.001614, (GLfloat) - 0.133994,
-       (GLfloat) - 0.104357, (GLfloat) - 0.032004, (GLfloat) 0.262334,
-       (GLfloat) 0.041215, (GLfloat) - 0.010418, (GLfloat) - 0.037968,
-       (GLfloat) 0.223491, (GLfloat) - 0.387946, (GLfloat) 0.117291,
-       (GLfloat) - 0.344434, (GLfloat) 0.110318, (GLfloat) - 0.031448,
-       (GLfloat) 0.123562, (GLfloat) - 0.315729, (GLfloat) 0.164533,
-       (GLfloat) 0.008207, (GLfloat) 0.042004, (GLfloat) 0.050014,
-       (GLfloat) - 0.191339, (GLfloat) - 0.069291, (GLfloat) - 0.220065,
-       (GLfloat) 0.023845, (GLfloat) 0.009474, (GLfloat) 0.035598,
-       (GLfloat) - 0.173295, (GLfloat) - 0.036604, (GLfloat) - 0.193323,
-       (GLfloat) - 0.040347, (GLfloat) - 0.106063, (GLfloat) - 0.055559,
-       (GLfloat) - 0.071543, (GLfloat) 0.136487, (GLfloat) 0.105697,
-       (GLfloat) - 0.179027, (GLfloat) - 0.071852, (GLfloat) 0.117512,
-       (GLfloat) 0.064769, (GLfloat) - 0.345895, (GLfloat) 0.012833,
-       (GLfloat) 0.044800, (GLfloat) - 0.032357, (GLfloat) - 0.042161,
-       (GLfloat) 0.243586, (GLfloat) 0.392499, (GLfloat) - 0.180641,
-       (GLfloat) - 0.148924, (GLfloat) - 0.181446, (GLfloat) 0.146644,
-       (GLfloat) - 0.042773, (GLfloat) 0.045843, (GLfloat) - 0.176893,
-       (GLfloat) 0.025938, (GLfloat) 0.058109, (GLfloat) 0.242063,
-       (GLfloat) - 0.028489, (GLfloat) - 0.024828, (GLfloat) 0.161289,
-       (GLfloat) 0.073899, (GLfloat) - 0.081205, (GLfloat) - 0.023751,
-       (GLfloat) 0.026149, (GLfloat) 0.051399, (GLfloat) - 0.072348,
-       (GLfloat) 0.024308, (GLfloat) - 0.041819, (GLfloat) - 0.030578,
-       (GLfloat) - 0.077778, (GLfloat) 0.010272, (GLfloat) 0.066967,
-       (GLfloat) - 0.139184, (GLfloat) - 0.018983, (GLfloat) 0.035150,
-       (GLfloat) - 0.061359, (GLfloat) - 0.152358, (GLfloat) - 0.072849,
-       (GLfloat) 0.043101, (GLfloat) 0.028278, (GLfloat) 0.077387,
-       (GLfloat) 0.065599, (GLfloat) - 0.049676, (GLfloat) 0.043708,
-       (GLfloat) - 0.255767, (GLfloat) 0.023510, (GLfloat) - 0.076982,
-       (GLfloat) 0.020468, (GLfloat) - 0.040630, (GLfloat) 0.208424,
-       (GLfloat) 0.044922, (GLfloat) 0.025184, (GLfloat) 0.004764,
-       (GLfloat) 0.107432, (GLfloat) - 0.009356, (GLfloat) 0.239863,
-       (GLfloat) - 0.005475, (GLfloat) 0.158400, (GLfloat) 0.089743,
-       (GLfloat) 0.018352, (GLfloat) 0.134559, (GLfloat) 0.221650,
-       (GLfloat) 0.094423, (GLfloat) 0.129390, (GLfloat) - 0.031274,
-       (GLfloat) 0.048541, (GLfloat) 0.100595, (GLfloat) - 0.155938,
-       (GLfloat) - 0.016298, (GLfloat) - 0.036518, (GLfloat) - 0.149178,
-       (GLfloat) - 0.329953, (GLfloat) - 0.327602, (GLfloat) - 0.150086,
-       (GLfloat) 0.148403, (GLfloat) - 0.363334, (GLfloat) 0.028237,
-       (GLfloat) - 0.305790, (GLfloat) - 0.009844, (GLfloat) - 0.075571,
-       (GLfloat) - 0.045131, (GLfloat) 0.152595, (GLfloat) 0.228720,
-       (GLfloat) 0.039725, (GLfloat) - 0.127469, (GLfloat) 0.066522,
-       (GLfloat) - 0.078576, (GLfloat) - 0.349749, (GLfloat) - 0.146881,
-       (GLfloat) 0.013160, (GLfloat) - 0.040312, (GLfloat) 0.129980,
-       (GLfloat) 0.221142, (GLfloat) - 0.106068, (GLfloat) 0.254967,
-       (GLfloat) 0.180912, (GLfloat) - 0.207357, (GLfloat) - 0.196999,
-       (GLfloat) 0.098219, (GLfloat) 0.085231, (GLfloat) 0.121963,
-};
-
-struct lwo  LWO_s1_b =
-{
-       500,                    /* number of points */
-       s1_b_PNTS, 0L, 0L, 0L
-};
-
-#endif /* USE_GL */
-
-/* End of s1_b.c */
diff --git a/hacks/glx/shark.c b/hacks/glx/shark.c
deleted file mode 100644 (file)
index a3de1b9..0000000
+++ /dev/null
@@ -1,1404 +0,0 @@
-/* atlantis --- Shows moving 3D sea animals */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)shark.c      1.2 98/06/16 xlockmore";
-
-#endif
-
-/* Copyright (c) E. Lassauge, 1998. */
-
-/*
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The original code for this mode was written by Mark J. Kilgard
- * as a demo for openGL programming.
- * 
- * Porting it to xlock  was possible by comparing the original Mesa's morph3d 
- * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna 
- * (look at morph3d.c) for his indirect help.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * My e-mail address is lassauge@sagem.fr
- *
- * Eric Lassauge  (May-13-1998)
- *
- */
-
-/**
- * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
- * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States.  Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <math.h>
-#include <GL/glx.h>
-#endif
-
-#include "atlantis.h"
-/* *INDENT-OFF* */
-#if 0
-static float N001[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N002[3] = {0.000077 ,-0.020611 ,0.999788};
-static float N003[3] = {0.961425 ,0.258729 ,-0.093390};
-static float N004[3] = {0.510811 ,-0.769633 ,-0.383063};
-static float N005[3] = {0.400123 ,0.855734 ,-0.328055};
-static float N006[3] = {-0.770715 ,0.610204 ,-0.183440};
-static float N007[3] = {-0.915597 ,-0.373345 ,-0.149316};
-static float N008[3] = {-0.972788 ,0.208921 ,-0.100179};
-static float N009[3] = {-0.939713 ,-0.312268 ,-0.139383};
-static float N010[3] = {-0.624138 ,-0.741047 ,-0.247589};
-static float N011[3] = {0.591434 ,-0.768401 ,-0.244471};
-static float N012[3] = {0.935152 ,-0.328495 ,-0.132598};
-static float N013[3] = {0.997102 ,0.074243 ,-0.016593};
-static float N014[3] = {0.969995 ,0.241712 ,-0.026186};
-static float N015[3] = {0.844539 ,0.502628 ,-0.184714};
-static float N016[3] = {-0.906608 ,0.386308 ,-0.169787};
-static float N017[3] = {-0.970016 ,0.241698 ,-0.025516};
-static float N018[3] = {-0.998652 ,0.050493 ,-0.012045};
-static float N019[3] = {-0.942685 ,-0.333051 ,-0.020556};
-static float N020[3] = {-0.660944 ,-0.750276 ,0.015480};
-static float N021[3] = {0.503549 ,-0.862908 ,-0.042749};
-static float N022[3] = {0.953202 ,-0.302092 ,-0.012089};
-static float N023[3] = {0.998738 ,0.023574 ,0.044344};
-static float N024[3] = {0.979297 ,0.193272 ,0.060202};
-static float N025[3] = {0.798300 ,0.464885 ,0.382883};
-static float N026[3] = {-0.756590 ,0.452403 ,0.472126};
-static float N027[3] = {-0.953855 ,0.293003 ,0.065651};
-static float N028[3] = {-0.998033 ,0.040292 ,0.048028};
-static float N029[3] = {-0.977079 ,-0.204288 ,0.059858};
-static float N030[3] = {-0.729117 ,-0.675304 ,0.111140};
-static float N031[3] = {0.598361 ,-0.792753 ,0.116221};
-static float N032[3] = {0.965192 ,-0.252991 ,0.066332};
-static float N033[3] = {0.998201 ,-0.002790 ,0.059892};
-static float N034[3] = {0.978657 ,0.193135 ,0.070207};
-static float N035[3] = {0.718815 ,0.680392 ,0.142733};
-static float N036[3] = {-0.383096 ,0.906212 ,0.178936};
-static float N037[3] = {-0.952831 ,0.292590 ,0.080647};
-static float N038[3] = {-0.997680 ,0.032417 ,0.059861};
-static float N039[3] = {-0.982629 ,-0.169881 ,0.074700};
-static float N040[3] = {-0.695424 ,-0.703466 ,0.146700};
-static float N041[3] = {0.359323 ,-0.915531 ,0.180805};
-static float N042[3] = {0.943356 ,-0.319387 ,0.089842};
-static float N043[3] = {0.998272 ,-0.032435 ,0.048993};
-static float N044[3] = {0.978997 ,0.193205 ,0.065084};
-static float N045[3] = {0.872144 ,0.470094 ,-0.135565};
-static float N046[3] = {-0.664282 ,0.737945 ,-0.119027};
-static float N047[3] = {-0.954508 ,0.288570 ,0.075107};
-static float N048[3] = {-0.998273 ,0.032406 ,0.048993};
-static float N049[3] = {-0.979908 ,-0.193579 ,0.048038};
-static float N050[3] = {-0.858736 ,-0.507202 ,-0.072938};
-static float N051[3] = {0.643545 ,-0.763887 ,-0.048237};
-static float N052[3] = {0.955580 ,-0.288954 ,0.058068};
-#if 0
-static float N053[3] = {0.000000 ,1.000000 ,0.000000};
-static float N054[3] = {0.000000 ,1.000000 ,0.000000};
-static float N055[3] = {0.000000 ,1.000000 ,0.000000};
-static float N056[3] = {0.000000 ,1.000000 ,0.000000};
-static float N057[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N058[3] = {0.000050 ,0.793007 ,-0.609213};
-static float N059[3] = {0.913510 ,0.235418 ,-0.331779};
-static float N060[3] = {-0.807970 ,0.495000 ,-0.319625};
-static float N061[3] = {0.000000 ,0.784687 ,-0.619892};
-static float N062[3] = {0.000000 ,-1.000000 ,0.000000};
-static float N063[3] = {0.000000 ,1.000000 ,0.000000};
-static float N064[3] = {0.000000 ,1.000000 ,0.000000};
-static float N065[3] = {0.000000 ,1.000000 ,0.000000};
-static float N066[3] = {-0.055784 ,0.257059 ,0.964784};
-#if 0
-static float N067[3] = {0.000000 ,1.000000 ,0.000000};
-static float N068[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N069[3] = {-0.000505 ,-0.929775 ,-0.368127};
-static float N070[3] = {0.000000 ,1.000000 ,0.000000};
-#if 0
-static float N071[3] = {-0.987102 ,0.131723 ,-0.090984};
-static float N072[3] = {-0.987102 ,0.131723 ,-0.090984};
-static float N073[3] = {-0.987102 ,0.131723 ,-0.090984};
-static float N074[3] = {0.000000 ,1.000000 ,0.000000};
-static float N075[3] = {0.000000 ,1.000000 ,0.000000};
-static float N076[3] = {0.000000 ,1.000000 ,0.000000};
-static float N077[3] = {0.995210 ,0.071962 ,-0.066168};
-static float N078[3] = {0.995210 ,0.071962 ,-0.066168};
-static float N079[3] = {0.995210 ,0.071962 ,-0.066168};
-static float N080[3] = {0.000000 ,1.000000 ,0.000000};
-static float N081[3] = {0.000000 ,1.000000 ,0.000000};
-static float N082[3] = {0.000000 ,1.000000 ,0.000000};
-static float P001[3] = {0.00, 0.00, 0.00};
-#endif
-static float P002[3] = {0.00, -36.59, 5687.72};
-static float P003[3] = {90.00, 114.73, 724.38};
-static float P004[3] = {58.24, -146.84, 262.35};
-static float P005[3] = {27.81, 231.52, 510.43};
-static float P006[3] = {-27.81, 230.43, 509.76};
-static float P007[3] = {-46.09, -146.83, 265.84};
-static float P008[3] = {-90.00, 103.84, 718.53};
-static float P009[3] = {-131.10, -165.92, 834.85};
-static float P010[3] = {-27.81, -285.31, 500.00};
-static float P011[3] = {27.81, -285.32, 500.00};
-static float P012[3] = {147.96, -170.89, 845.50};
-static float P013[3] = {180.00, 0.00, 2000.00};
-static float P014[3] = {145.62, 352.67, 2000.00};
-static float P015[3] = {55.62, 570.63, 2000.00};
-static float P016[3] = {-55.62, 570.64, 2000.00};
-static float P017[3] = {-145.62, 352.68, 2000.00};
-static float P018[3] = {-180.00, 0.01, 2000.00};
-static float P019[3] = {-178.20, -352.66, 2001.61};
-static float P020[3] = {-55.63, -570.63, 2000.00};
-static float P021[3] = {55.62, -570.64, 2000.00};
-static float P022[3] = {179.91, -352.69, 1998.39};
-static float P023[3] = {150.00, 0.00, 3000.00};
-static float P024[3] = {121.35, 293.89, 3000.00};
-static float P025[3] = {46.35, 502.93, 2883.09};
-static float P026[3] = {-46.35, 497.45, 2877.24};
-static float P027[3] = {-121.35, 293.90, 3000.00};
-static float P028[3] = {-150.00, 0.00, 3000.00};
-static float P029[3] = {-152.21, -304.84, 2858.68};
-static float P030[3] = {-46.36, -475.52, 3000.00};
-static float P031[3] = {46.35, -475.53, 3000.00};
-static float P032[3] = {155.64, -304.87, 2863.50};
-static float P033[3] = {90.00, 0.00, 4000.00};
-static float P034[3] = {72.81, 176.33, 4000.00};
-static float P035[3] = {27.81, 285.32, 4000.00};
-static float P036[3] = {-27.81, 285.32, 4000.00};
-static float P037[3] = {-72.81, 176.34, 4000.00};
-static float P038[3] = {-90.00, 0.00, 4000.00};
-static float P039[3] = {-72.81, -176.33, 4000.00};
-static float P040[3] = {-27.81, -285.31, 4000.00};
-static float P041[3] = {27.81, -285.32, 4000.00};
-static float P042[3] = {72.81, -176.34, 4000.00};
-static float P043[3] = {30.00, 0.00, 5000.00};
-static float P044[3] = {24.27, 58.78, 5000.00};
-static float P045[3] = {9.27, 95.11, 5000.00};
-static float P046[3] = {-9.27, 95.11, 5000.00};
-static float P047[3] = {-24.27, 58.78, 5000.00};
-static float P048[3] = {-30.00, 0.00, 5000.00};
-static float P049[3] = {-24.27, -58.78, 5000.00};
-static float P050[3] = {-9.27, -95.10, 5000.00};
-static float P051[3] = {9.27, -95.11, 5000.00};
-static float P052[3] = {24.27, -58.78, 5000.00};
-#if 0
-static float P053[3] = {0.00, 0.00, 0.00};
-static float P054[3] = {0.00, 0.00, 0.00};
-static float P055[3] = {0.00, 0.00, 0.00};
-static float P056[3] = {0.00, 0.00, 0.00};
-static float P057[3] = {0.00, 0.00, 0.00};
-#endif
-static float P058[3] = {0.00, 1212.72, 2703.08};
-static float P059[3] = {50.36, 0.00, 108.14};
-static float P060[3] = {-22.18, 0.00, 108.14};
-static float P061[3] = {0.00, 1181.61, 6344.65};
-static float P062[3] = {516.45, -887.08, 2535.45};
-static float P063[3] = {-545.69, -879.31, 2555.63};
-static float P064[3] = {618.89, -1005.64, 2988.32};
-static float P065[3] = {-635.37, -1014.79, 2938.68};
-static float P066[3] = {0.00, 1374.43, 3064.18};
-#if 0
-static float P067[3] = {158.49, -11.89, 1401.56};
-static float P068[3] = {-132.08, -17.90, 1394.31};
-#endif
-static float P069[3] = {0.00, -418.25, 5765.04};
-static float P070[3] = {0.00, 1266.91, 6629.60};
-static float P071[3] = {-139.12, -124.96, 997.98};
-static float P072[3] = {-139.24, -110.18, 1020.68};
-static float P073[3] = {-137.33, -94.52, 1022.63};
-static float P074[3] = {-137.03, -79.91, 996.89};
-static float P075[3] = {-135.21, -91.48, 969.14};
-static float P076[3] = {-135.39, -110.87, 968.76};
-static float P077[3] = {150.23, -78.44, 995.53};
-static float P078[3] = {152.79, -92.76, 1018.46};
-static float P079[3] = {154.19, -110.20, 1020.55};
-static float P080[3] = {151.33, -124.15, 993.77};
-static float P081[3] = {150.49, -111.19, 969.86};
-static float P082[3] = {150.79, -92.41, 969.70};
-static float iP002[3] = {0.00, -36.59, 5687.72};
-static float iP004[3] = {58.24, -146.84, 262.35};
-static float iP007[3] = {-46.09, -146.83, 265.84};
-static float iP010[3] = {-27.81, -285.31, 500.00};
-static float iP011[3] = {27.81, -285.32, 500.00};
-static float iP023[3] = {150.00, 0.00, 3000.00};
-static float iP024[3] = {121.35, 293.89, 3000.00};
-static float iP025[3] = {46.35, 502.93, 2883.09};
-static float iP026[3] = {-46.35, 497.45, 2877.24};
-static float iP027[3] = {-121.35, 293.90, 3000.00};
-static float iP028[3] = {-150.00, 0.00, 3000.00};
-static float iP029[3] = {-121.35, -304.84, 2853.86};
-static float iP030[3] = {-46.36, -475.52, 3000.00};
-static float iP031[3] = {46.35, -475.53, 3000.00};
-static float iP032[3] = {121.35, -304.87, 2853.86};
-static float iP033[3] = {90.00, 0.00, 4000.00};
-static float iP034[3] = {72.81, 176.33, 4000.00};
-static float iP035[3] = {27.81, 285.32, 4000.00};
-static float iP036[3] = {-27.81, 285.32, 4000.00};
-static float iP037[3] = {-72.81, 176.34, 4000.00};
-static float iP038[3] = {-90.00, 0.00, 4000.00};
-static float iP039[3] = {-72.81, -176.33, 4000.00};
-static float iP040[3] = {-27.81, -285.31, 4000.00};
-static float iP041[3] = {27.81, -285.32, 4000.00};
-static float iP042[3] = {72.81, -176.34, 4000.00};
-static float iP043[3] = {30.00, 0.00, 5000.00};
-static float iP044[3] = {24.27, 58.78, 5000.00};
-static float iP045[3] = {9.27, 95.11, 5000.00};
-static float iP046[3] = {-9.27, 95.11, 5000.00};
-static float iP047[3] = {-24.27, 58.78, 5000.00};
-static float iP048[3] = {-30.00, 0.00, 5000.00};
-static float iP049[3] = {-24.27, -58.78, 5000.00};
-static float iP050[3] = {-9.27, -95.10, 5000.00};
-static float iP051[3] = {9.27, -95.11, 5000.00};
-static float iP052[3] = {24.27, -58.78, 5000.00};
-#if 0
-static float iP053[3] = {0.00, 0.00, 0.00};
-#endif
-static float iP061[3] = {0.00, 1181.61, 6344.65};
-static float iP069[3] = {0.00, -418.25, 5765.04};
-static float iP070[3] = {0.00, 1266.91, 6629.60};
-/* *INDENT-ON* */
-
-
-
-static void
-Fish001(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N007);
-       glVertex3fv(P007);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N004);
-       glVertex3fv(P004);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glNormal3fv(N007);
-       glVertex3fv(P007);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N004);
-       glVertex3fv(P004);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P071);
-       glVertex3fv(P072);
-       glVertex3fv(P073);
-       glVertex3fv(P074);
-       glVertex3fv(P075);
-       glVertex3fv(P076);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P077);
-       glVertex3fv(P078);
-       glVertex3fv(P079);
-       glVertex3fv(P080);
-       glVertex3fv(P081);
-       glVertex3fv(P082);
-       glEnd();
-}
-
-static void
-Fish002(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-}
-
-static void
-Fish003(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glEnd();
-}
-
-static void
-Fish004(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N070);
-       glVertex3fv(P070);
-       glNormal3fv(N061);
-       glVertex3fv(P061);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N061);
-       glVertex3fv(P061);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N061);
-       glVertex3fv(P061);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N061);
-       glVertex3fv(P061);
-       glNormal3fv(N070);
-       glVertex3fv(P070);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glNormal3fv(N061);
-       glVertex3fv(P061);
-       glEnd();
-}
-
-static void
-Fish005(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glEnd();
-}
-
-static void
-Fish006(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glEnd();
-}
-
-static void
-Fish007(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N064);
-       glVertex3fv(P064);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N064);
-       glVertex3fv(P064);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glEnd();
-}
-
-static void
-Fish008(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-}
-
-static void
-Fish009(GLenum cap)
-{
-       glBegin(cap);
-       glVertex3fv(P059);
-       glVertex3fv(P012);
-       glVertex3fv(P009);
-       glVertex3fv(P060);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P012);
-       glVertex3fv(P004);
-       glVertex3fv(P007);
-       glVertex3fv(P009);
-       glEnd();
-}
-
-static void
-Fish_1(GLenum cap)
-{
-       Fish004(cap);
-       Fish005(cap);
-       Fish003(cap);
-       Fish007(cap);
-       Fish006(cap);
-       Fish002(cap);
-       Fish008(cap);
-       Fish009(cap);
-       Fish001(cap);
-}
-
-static void
-Fish_2(GLenum cap)
-{
-       Fish005(cap);
-       Fish004(cap);
-       Fish003(cap);
-       Fish008(cap);
-       Fish006(cap);
-       Fish002(cap);
-       Fish007(cap);
-       Fish009(cap);
-       Fish001(cap);
-}
-
-static void
-Fish_3(GLenum cap)
-{
-       Fish005(cap);
-       Fish004(cap);
-       Fish007(cap);
-       Fish003(cap);
-       Fish002(cap);
-       Fish008(cap);
-       Fish009(cap);
-       Fish001(cap);
-       Fish006(cap);
-}
-
-static void
-Fish_4(GLenum cap)
-{
-       Fish005(cap);
-       Fish004(cap);
-       Fish008(cap);
-       Fish003(cap);
-       Fish002(cap);
-       Fish007(cap);
-       Fish009(cap);
-       Fish001(cap);
-       Fish006(cap);
-}
-
-static void
-Fish_5(GLenum cap)
-{
-       Fish009(cap);
-       Fish006(cap);
-       Fish007(cap);
-       Fish001(cap);
-       Fish002(cap);
-       Fish003(cap);
-       Fish008(cap);
-       Fish004(cap);
-       Fish005(cap);
-}
-
-static void
-Fish_6(GLenum cap)
-{
-       Fish009(cap);
-       Fish006(cap);
-       Fish008(cap);
-       Fish001(cap);
-       Fish002(cap);
-       Fish007(cap);
-       Fish003(cap);
-       Fish004(cap);
-       Fish005(cap);
-}
-
-static void
-Fish_7(GLenum cap)
-{
-       Fish009(cap);
-       Fish001(cap);
-       Fish007(cap);
-       Fish005(cap);
-       Fish002(cap);
-       Fish008(cap);
-       Fish003(cap);
-       Fish004(cap);
-       Fish006(cap);
-}
-
-static void
-Fish_8(GLenum cap)
-{
-       Fish009(cap);
-       Fish008(cap);
-       Fish001(cap);
-       Fish002(cap);
-       Fish007(cap);
-       Fish003(cap);
-       Fish005(cap);
-       Fish004(cap);
-       Fish006(cap);
-}
-
-void
-DrawShark(fishRec * fish, int wire)
-{
-       float       mat[4][4];
-       int         n;
-       float       seg1, seg2, seg3, seg4, segup;
-       float       thrash, chomp;
-       GLenum      cap;
-
-       fish->htail = (int) (fish->htail - (int) (5.0 * fish->v)) % 360;
-
-       thrash = 50.0 * fish->v;
-
-       seg1 = 0.6 * thrash * sin(fish->htail * RRAD);
-       seg2 = 1.8 * thrash * sin((fish->htail + 45.0) * RRAD);
-       seg3 = 3.0 * thrash * sin((fish->htail + 90.0) * RRAD);
-       seg4 = 4.0 * thrash * sin((fish->htail + 110.0) * RRAD);
-
-       chomp = 0.0;
-       if (fish->v > 2.0) {
-               chomp = -(fish->v - 2.0) * 200.0;
-       }
-       P004[1] = iP004[1] + chomp;
-       P007[1] = iP007[1] + chomp;
-       P010[1] = iP010[1] + chomp;
-       P011[1] = iP011[1] + chomp;
-
-       P023[0] = iP023[0] + seg1;
-       P024[0] = iP024[0] + seg1;
-       P025[0] = iP025[0] + seg1;
-       P026[0] = iP026[0] + seg1;
-       P027[0] = iP027[0] + seg1;
-       P028[0] = iP028[0] + seg1;
-       P029[0] = iP029[0] + seg1;
-       P030[0] = iP030[0] + seg1;
-       P031[0] = iP031[0] + seg1;
-       P032[0] = iP032[0] + seg1;
-       P033[0] = iP033[0] + seg2;
-       P034[0] = iP034[0] + seg2;
-       P035[0] = iP035[0] + seg2;
-       P036[0] = iP036[0] + seg2;
-       P037[0] = iP037[0] + seg2;
-       P038[0] = iP038[0] + seg2;
-       P039[0] = iP039[0] + seg2;
-       P040[0] = iP040[0] + seg2;
-       P041[0] = iP041[0] + seg2;
-       P042[0] = iP042[0] + seg2;
-       P043[0] = iP043[0] + seg3;
-       P044[0] = iP044[0] + seg3;
-       P045[0] = iP045[0] + seg3;
-       P046[0] = iP046[0] + seg3;
-       P047[0] = iP047[0] + seg3;
-       P048[0] = iP048[0] + seg3;
-       P049[0] = iP049[0] + seg3;
-       P050[0] = iP050[0] + seg3;
-       P051[0] = iP051[0] + seg3;
-       P052[0] = iP052[0] + seg3;
-       P002[0] = iP002[0] + seg4;
-       P061[0] = iP061[0] + seg4;
-       P069[0] = iP069[0] + seg4;
-       P070[0] = iP070[0] + seg4;
-
-       fish->vtail += ((fish->dtheta - fish->vtail) * 0.1);
-
-       if (fish->vtail > 0.5) {
-               fish->vtail = 0.5;
-       } else if (fish->vtail < -0.5) {
-               fish->vtail = -0.5;
-       }
-       segup = thrash * fish->vtail;
-
-       P023[1] = iP023[1] + segup;
-       P024[1] = iP024[1] + segup;
-       P025[1] = iP025[1] + segup;
-       P026[1] = iP026[1] + segup;
-       P027[1] = iP027[1] + segup;
-       P028[1] = iP028[1] + segup;
-       P029[1] = iP029[1] + segup;
-       P030[1] = iP030[1] + segup;
-       P031[1] = iP031[1] + segup;
-       P032[1] = iP032[1] + segup;
-       P033[1] = iP033[1] + segup * 5.0;
-       P034[1] = iP034[1] + segup * 5.0;
-       P035[1] = iP035[1] + segup * 5.0;
-       P036[1] = iP036[1] + segup * 5.0;
-       P037[1] = iP037[1] + segup * 5.0;
-       P038[1] = iP038[1] + segup * 5.0;
-       P039[1] = iP039[1] + segup * 5.0;
-       P040[1] = iP040[1] + segup * 5.0;
-       P041[1] = iP041[1] + segup * 5.0;
-       P042[1] = iP042[1] + segup * 5.0;
-       P043[1] = iP043[1] + segup * 12.0;
-       P044[1] = iP044[1] + segup * 12.0;
-       P045[1] = iP045[1] + segup * 12.0;
-       P046[1] = iP046[1] + segup * 12.0;
-       P047[1] = iP047[1] + segup * 12.0;
-       P048[1] = iP048[1] + segup * 12.0;
-       P049[1] = iP049[1] + segup * 12.0;
-       P050[1] = iP050[1] + segup * 12.0;
-       P051[1] = iP051[1] + segup * 12.0;
-       P052[1] = iP052[1] + segup * 12.0;
-       P002[1] = iP002[1] + segup * 17.0;
-       P061[1] = iP061[1] + segup * 17.0;
-       P069[1] = iP069[1] + segup * 17.0;
-       P070[1] = iP070[1] + segup * 17.0;
-
-       glPushMatrix();
-
-       glTranslatef(0.0, 0.0, -3000.0);
-
-       glGetFloatv(GL_MODELVIEW_MATRIX, &mat[0][0]);
-       n = 0;
-       if (mat[0][2] >= 0.0) {
-               n += 1;
-       }
-       if (mat[1][2] >= 0.0) {
-               n += 2;
-       }
-       if (mat[2][2] >= 0.0) {
-               n += 4;
-       }
-       glScalef(2.0, 1.0, 1.0);
-
-       glEnable(GL_CULL_FACE);
-       cap = wire ? GL_LINE_LOOP : GL_POLYGON;
-       switch (n) {
-               case 0:
-                       Fish_1(cap);
-                       break;
-               case 1:
-                       Fish_2(cap);
-                       break;
-               case 2:
-                       Fish_3(cap);
-                       break;
-               case 3:
-                       Fish_4(cap);
-                       break;
-               case 4:
-                       Fish_5(cap);
-                       break;
-               case 5:
-                       Fish_6(cap);
-                       break;
-               case 6:
-                       Fish_7(cap);
-                       break;
-               case 7:
-                       Fish_8(cap);
-                       break;
-       }
-       glDisable(GL_CULL_FACE);
-
-       glPopMatrix();
-}
-#endif
diff --git a/hacks/glx/sproingies.c b/hacks/glx/sproingies.c
deleted file mode 100644 (file)
index aa79045..0000000
+++ /dev/null
@@ -1,827 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* sproingies.c - 3D sproingies */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)sproingies.c 4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- *  sproingies.c - Copyright 1996 by Ed Mackey, freely distributable.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 07-Dec-96: Written.
- */
-
-#ifdef STANDALONE
-# include "xlockmoreI.h"               /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"            /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "buildlwo.h"
-
-#define MAXSPROING 100
-#define T_COUNT 40
-#define BOOM_FRAME 50
-
-struct sPosColor {
-       int         x, y, z, frame, life;
-       GLfloat     r, g, b;
-};
-
-typedef struct {
-       int         rotx, roty, dist, wireframe, flatshade, groundlevel,
-                   maxsproingies, mono;
-       int         sframe, target_rx, target_ry, target_dist, target_count;
-       GLuint      sproingies[6], TopsSides, SproingieBoom;
-       struct sPosColor *positions;
-} sp_instance;
-
-static sp_instance *si_list = NULL;
-static int  active_screens = 0;
-
-void        SproingieSwap(void);
-
-extern struct lwo LWO_s1_1, LWO_s1_2, LWO_s1_3, LWO_s1_4;
-extern struct lwo LWO_s1_5, LWO_s1_6, LWO_s1_b;
-
-static int
-myrand(int range)
-{
-       return ((int) (((float) range) * LRAND() / (MAXRAND)));
-}
-
-static      GLuint
-build_TopsSides(int wireframe)
-{
-       GLuint      dl_num;
-       GLfloat     mat_color[4] =
-       {0.0, 0.0, 0.0, 1.0};
-
-       dl_num = glGenLists(2);
-       if (!dl_num)
-               return (0);     /* 0 means out of display lists. */
-
-       /* Surface: Tops */
-       glNewList(dl_num, GL_COMPILE);
-       mat_color[0] = 0.392157;
-       mat_color[1] = 0.784314;
-       mat_color[2] = 0.941176;
-       if (wireframe)
-               glColor3fv(mat_color);
-       else {
-               glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat_color);
-       }
-       glEndList();
-
-       /* Surface: Sides */
-       glNewList(dl_num + 1, GL_COMPILE);
-       mat_color[0] = 0.156863;
-       mat_color[1] = 0.156863;
-       mat_color[2] = 0.392157;
-       if (wireframe)
-               glColor3fv(mat_color);
-       else {
-               glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat_color);
-       }
-       glEndList();
-       return (dl_num);
-}
-
-static void
-LayGround(int sx, int sy, int sz, int width, int height, sp_instance * si)
-{
-       int         x, y, z, w, h;
-       GLenum      begin_polygon;
-
-       if (si->wireframe)
-               begin_polygon = GL_LINE_LOOP;
-       else
-               begin_polygon = GL_POLYGON;
-
-       if (!si->wireframe) {
-               if (!si->mono)
-                       glCallList(si->TopsSides);      /* Render the tops */
-               glNormal3f(0.0, 1.0, 0.0);
-
-               for (h = 0; h < height; ++h) {
-                       x = sx + h;
-                       y = sy - (h << 1);
-                       z = sz + h;
-                       for (w = 0; w < width; ++w) {
-                               glBegin(begin_polygon);
-                               glVertex3i(x, y, z);
-                               glVertex3i(x, y, z - 1);
-                               glVertex3i(x + 1, y, z - 1);
-                               glVertex3i(x + 1, y, z);
-                               glEnd();
-                               glBegin(begin_polygon);
-                               glVertex3i(x + 1, y - 1, z);
-                               glVertex3i(x + 1, y - 1, z - 1);
-                               glVertex3i(x + 2, y - 1, z - 1);
-                               glVertex3i(x + 2, y - 1, z);
-                               glEnd();
-                               ++x;
-                               --z;
-                       }
-               }
-       }
-       if (!si->mono)
-               glCallList(si->TopsSides + 1);  /* Render the sides */
-       if (!si->wireframe)
-               glNormal3f(0.0, 0.0, 1.0);
-
-       for (h = 0; h < height; ++h) {
-               x = sx + h;
-               y = sy - (h << 1);
-               z = sz + h;
-               for (w = 0; w < width; ++w) {
-                       glBegin(begin_polygon);
-                       glVertex3i(x, y, z);
-                       glVertex3i(x + 1, y, z);
-                       glVertex3i(x + 1, y - 1, z);
-                       glVertex3i(x, y - 1, z);
-                       glEnd();
-                       glBegin(begin_polygon);
-                       glVertex3i(x + 1, y - 1, z);
-                       glVertex3i(x + 2, y - 1, z);
-                       glVertex3i(x + 2, y - 2, z);
-                       glVertex3i(x + 1, y - 2, z);
-/*-
- * PURIFY 4.0.1 reports an unitialized memory read on the next line when using
- * MesaGL 2.2 and -mono.  This has been fixed in MesaGL 2.3 and later. */
-                       glEnd();
-                       ++x;
-                       --z;
-               }
-       }
-
-       /* Render the other sides */
-       if (!si->wireframe)
-               glNormal3f(1.0, 0.0, 0.0);
-
-       for (h = 0; h < height; ++h) {
-               x = sx + h;
-               y = sy - (h << 1);
-               z = sz + h;
-               for (w = 0; w < width; ++w) {
-                       glBegin(begin_polygon);
-                       glVertex3i(x + 1, y, z);
-                       glVertex3i(x + 1, y, z - 1);
-                       glVertex3i(x + 1, y - 1, z - 1);
-                       glVertex3i(x + 1, y - 1, z);
-                       glEnd();
-                       glBegin(begin_polygon);
-                       glVertex3i(x + 2, y - 1, z);
-                       glVertex3i(x + 2, y - 1, z - 1);
-                       glVertex3i(x + 2, y - 2, z - 1);
-                       glVertex3i(x + 2, y - 2, z);
-                       glEnd();
-                       ++x;
-                       --z;
-               }
-       }
-
-       if (si->wireframe) {
-               if (!si->mono)
-                       glCallList(si->TopsSides);      /* Render the tops */
-
-               for (h = 0; h < height; ++h) {
-                       x = sx + h;
-                       y = sy - (h << 1);
-                       z = sz + h;
-                       for (w = 0; w < width; ++w) {
-                               glBegin(begin_polygon);
-                               glVertex3i(x, y, z);
-                               glVertex3i(x, y, z - 1);
-                               glVertex3i(x + 1, y, z - 1);
-                               glVertex3i(x + 1, y, z);
-                               glEnd();
-                               glBegin(begin_polygon);
-                               glVertex3i(x + 1, y - 1, z);
-                               glVertex3i(x + 1, y - 1, z - 1);
-                               glVertex3i(x + 2, y - 1, z - 1);
-                               glVertex3i(x + 2, y - 1, z);
-                               glEnd();
-                               ++x;
-                               --z;
-                       }
-               }
-       }
-}
-
-#define RESET_SPROINGIE (-30 + myrand(28))
-
-static void
-AdvanceSproingie(int t, sp_instance * si)
-{
-       int         g_higher, g_back, t2;
-       struct sPosColor *thisSproingie = &(si->positions[t]);
-       struct sPosColor *S2 = &(si->positions[0]);
-
-       if (thisSproingie->life > 0) {
-               if ((++(thisSproingie->frame)) > 11) {
-                       if (thisSproingie->frame >= BOOM_FRAME) {
-                               if ((thisSproingie->r -= 0.08) < 0.0)
-                                       thisSproingie->r = 0.0;
-                               if ((thisSproingie->g -= 0.08) < 0.0)
-                                       thisSproingie->g = 0.0;
-                               if ((thisSproingie->b -= 0.08) < 0.0)
-                                       thisSproingie->b = 0.0;
-                               if ((--(thisSproingie->life)) < 1) {
-                                       thisSproingie->life = RESET_SPROINGIE;
-                               }
-                               return;
-                       }
-                       thisSproingie->x += 1;
-                       thisSproingie->y -= 2;
-                       thisSproingie->z += 1;
-                       thisSproingie->frame = 0;
-
-                       for (t2 = 0; t2 < si->maxsproingies; ++t2) {
-                               if ((t2 != t) && (thisSproingie->x == S2->x) &&
-                                   (thisSproingie->y == S2->y) && (thisSproingie->z == S2->z) &&
-                                   (S2->life > 10) && (S2->frame < 6)) {
-#if 0
-                                       if (thisSproingie->life > S2->life) {
-                                               S2->life = 10;
-                                       } else {
-#endif
-                                               if (thisSproingie->life > 10) {
-                                                       thisSproingie->life = 10;
-                                                       thisSproingie->frame = BOOM_FRAME;
-                                                       if ((thisSproingie->r += 0.5) > 1.0)
-                                                               thisSproingie->r = 1.0;
-                                                       if ((thisSproingie->g += 0.5) > 1.0)
-                                                               thisSproingie->g = 1.0;
-                                                       if ((thisSproingie->b += 0.5) > 1.0)
-                                                               thisSproingie->b = 1.0;
-                                               }
-#if 0
-                                       }
-#endif
-                               }
-                               ++S2;
-                       }
-               }
-               if (!((thisSproingie->life == 10) &&
-                     (thisSproingie->frame > 0) &&
-                     (thisSproingie->frame < BOOM_FRAME))) {
-                       if ((--(thisSproingie->life)) < 1) {
-                               thisSproingie->life = RESET_SPROINGIE;
-                       } else if (thisSproingie->life < 9) {
-                               thisSproingie->frame -= 2;
-                       }
-               }               /* else wait here for frame 0 to come about. */
-       } else if (++(thisSproingie->life) >= 0) {
-               if (t > 1) {
-                       g_higher = -3 + myrand(5);
-                       g_back = -2 + myrand(5);
-               } else if (t == 1) {
-                       g_higher = -2 + myrand(3);
-                       g_back = -1 + myrand(3);
-               } else {
-                       g_higher = -1;
-                       g_back = 0;
-               }
-
-               thisSproingie->x = (-g_higher - g_back);
-               thisSproingie->y = (g_higher << 1);
-               thisSproingie->z = (g_back - g_higher);
-               thisSproingie->life = 40 + myrand(200);
-               thisSproingie->frame = -10;
-               thisSproingie->r = (GLfloat) (40 + myrand(200)) / 255.0;
-               thisSproingie->g = (GLfloat) (40 + myrand(200)) / 255.0;
-               thisSproingie->b = (GLfloat) (40 + myrand(200)) / 255.0;
-
-               for (t2 = 0; t2 < si->maxsproingies; ++t2) {
-                       if ((t2 != t) && (thisSproingie->x == S2->x) &&
-                           (thisSproingie->y == S2->y) && (thisSproingie->z == S2->z) &&
-                           (S2->life > 10) && (S2->frame < 0)) {
-                               /* If one is already being born, just wait. */
-                               thisSproingie->life = -1;
-                       }
-                       ++S2;
-               }
-       }
-}
-
-static void
-NextSproingie(int screen)
-{
-       sp_instance *si = &si_list[screen];
-       int         ddx, t;
-       struct sPosColor *thisSproingie = &(si->positions[0]);
-
-       if (++si->sframe > 11) {
-               si->sframe = 0;
-               for (t = 0; t < si->maxsproingies; ++t) {
-                       thisSproingie->x -= 1;
-                       thisSproingie->y += 2;
-                       thisSproingie->z -= 1;
-                       ++thisSproingie;
-               }
-       }
-       for (t = 0; t < si->maxsproingies; ++t) {
-               AdvanceSproingie(t, si);
-       }
-
-       if (si->target_count < 0) {     /* track to current target */
-               if (si->target_rx < si->rotx)
-                       --si->rotx;
-               else if (si->target_rx > si->rotx)
-                       ++si->rotx;
-
-               if (si->target_ry < si->roty)
-                       --si->roty;
-               else if (si->target_ry > si->roty)
-                       ++si->roty;
-
-               ddx = (si->target_dist - si->dist) / 8;
-               if (ddx)
-                       si->dist += ddx;
-               else if (si->target_dist < si->dist)
-                       --si->dist;
-               else if (si->target_dist > si->dist)
-                       ++si->dist;
-
-               if ((si->target_rx == si->rotx) && (si->target_ry == si->roty) &&
-                   (si->target_dist == si->dist)) {
-                       si->target_count = T_COUNT;
-                       if (si->target_dist <= 32)
-                               si->target_count >>= 2;
-               }
-       } else if (--si->target_count < 0) {    /* make up new target */
-               si->target_rx = myrand(100) - 35;
-               si->target_ry = -myrand(90);
-               si->target_dist = 32 << myrand(2);      /* could be 32, 64, or 128, (previously or 256) */
-
-               if (si->target_dist >= si->dist)        /* no duplicate distances */
-                       si->target_dist <<= 1;
-       }
-       /* Otherwise just hang loose for a while here */
-}
-
-#ifdef __AUXFUNCS__
-void
-PrintEm(void)
-{
-       int         t, count = 0;
-
-       for (t = 0; t < maxsproingies; ++t) {
-               if (positions[t].life > 0)
-                       ++count;
-       }
-       (void) printf("RotX: %d, RotY: %d, Dist: %d.  Targets: X %d, Y %d, D %d.  Visible: %d\n",
-                rotx, roty, dist, target_rx, target_ry, target_dist, count);
-}
-
-void
-ResetEm(void)
-{
-       int         t;
-
-       for (t = 0; t < maxsproingies; ++t) {
-               positions[t].x = 0;
-               positions[t].y = 0;
-               positions[t].z = 0;
-               positions[t].life = -2;
-               positions[t].frame = 0;
-       }
-}
-
-void
-distAdd(void)
-{
-       if (dist < (1 << 16 << 4))
-               dist <<= 1;
-}
-
-void
-distSubtract(void)
-{
-       if (dist > 1)
-               dist >>= 1;
-}
-
-void
-rotxAdd(void)
-{
-       rotx = (rotx + 5) % 360;
-}
-
-void
-rotxSubtract(void)
-{
-       rotx = (rotx - 5) % 360;
-}
-
-void
-rotyAdd(void)
-{
-       roty = (roty + 5) % 360;
-}
-
-void
-rotySubtract(void)
-{
-       roty = (roty - 5) % 360;
-}
-
-void
-rotxBAdd(void)
-{
-       rotx = (rotx + 45) % 360;
-}
-
-void
-rotxBSubtract(void)
-{
-       rotx = (rotx - 45) % 360;
-}
-
-void
-rotyBAdd(void)
-{
-       roty = (roty + 45) % 360;
-}
-
-void
-rotyBSubtract(void)
-{
-       roty = (roty - 45) % 360;
-}
-
-#endif
-
-static void
-RenderSproingie(int t, sp_instance * si)
-{
-       GLfloat     scale, pointsize, mat_color[4] =
-       {0.0, 0.0, 0.0, 1.0};
-       GLdouble    clipplane[4] =
-       {0.0, 1.0, 0.0, 0.0};
-       struct sPosColor *thisSproingie = &(si->positions[t]);
-
-       if (thisSproingie->life < 1)
-               return;
-
-       glPushMatrix();
-
-       if (!si->mono) {
-               mat_color[0] = thisSproingie->r;
-               mat_color[1] = thisSproingie->g;
-               mat_color[2] = thisSproingie->b;
-               if (si->wireframe)
-                       glColor3fv(mat_color);
-               else {
-                       glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat_color);
-               }
-       }
-       if (thisSproingie->frame < 0) {
-               glEnable(GL_CLIP_PLANE0);
-               glTranslatef((GLfloat) (thisSproingie->x),
-                            (GLfloat) (thisSproingie->y) +
-                            ((GLfloat) (thisSproingie->frame) / 9.0),
-                            (GLfloat) (thisSproingie->z));
-               clipplane[3] = ((GLdouble) (thisSproingie->frame) / 9.0) +
-                       (si->wireframe ? 0.0 : 0.1);
-               glClipPlane(GL_CLIP_PLANE0, clipplane);
-               glCallList(si->sproingies[0]);
-               glDisable(GL_CLIP_PLANE0);
-       } else if (thisSproingie->frame >= BOOM_FRAME) {
-               glTranslatef((GLfloat) (thisSproingie->x) + 0.5,
-                            (GLfloat) (thisSproingie->y) + 0.5,
-                            (GLfloat) (thisSproingie->z) - 0.5);
-               scale = (GLfloat) (1 << (thisSproingie->frame - BOOM_FRAME));
-               glScalef(scale, scale, scale);
-               if (!si->wireframe) {
-                       if (!si->mono)
-                               glColor3fv(mat_color);
-                       glDisable(GL_LIGHTING);
-               }
-               pointsize = (GLfloat) ((BOOM_FRAME + 8) - thisSproingie->frame) -
-                       (si->dist / 64.0);
-               glPointSize((pointsize < 1.0) ? 1.0 : pointsize);
-/*-
- * PURIFY 4.0.1 reports an unitialized memory read on the next line when using
- * MesaGL 2.2.  This has been tracked to MesaGL 2.2 src/points.c line 313. */
-               glCallList(si->SproingieBoom);
-               glPointSize(1.0);
-               if (!si->wireframe) {
-                       glEnable(GL_LIGHTING);
-               }
-       } else if (thisSproingie->frame > 5) {
-               glTranslatef((GLfloat) (thisSproingie->x + 1),
-                            (GLfloat) (thisSproingie->y - 1), (GLfloat) (thisSproingie->z - 1));
-               glRotatef((GLfloat) - 90.0, 0.0, 1.0, 0.0);
-               glCallList(si->sproingies[thisSproingie->frame - 6]);
-       } else {
-               glTranslatef((GLfloat) (thisSproingie->x), (GLfloat) (thisSproingie->y),
-                            (GLfloat) (thisSproingie->z));
-               glCallList(si->sproingies[thisSproingie->frame]);
-       }
-
-       glPopMatrix();
-
-}
-
-static void
-ComputeGround(sp_instance * si)
-{
-       int         g_higher, g_back, g_width, g_height;
-
-       /* higher: x-1, y+2, z-1 */
-       /* back: x-1, y, z+1 */
-
-       if (si->groundlevel == 0) {
-               g_back = 2;
-               g_width = 5;
-       } else if (si->groundlevel == 1) {
-               g_back = 4;
-               g_width = 8;
-       } else {
-               g_back = 8;
-               g_width = 16;
-       }
-
-       if ((g_higher = si->dist >> 3) < 4)
-               g_higher = 4;
-       if (g_higher > 16)
-               g_higher = 16;
-       g_height = g_higher << 1;
-
-       if (si->rotx < -10)
-               g_higher += (g_higher >> 2);
-       else if (si->rotx > 10)
-               g_higher -= (g_higher >> 2);
-
-#if 0
-       if (si->dist > 128) {
-               ++g_higher;
-               ++g_back;
-               g_back <<= 1;
-       } else if (si->dist > 64) {
-               ++g_higher;
-               ++g_back;
-       } else if (si->dist > 32) {
-               /* nothing special */
-       } else {
-               if (g_higher > 2) {
-                       g_higher = g_back = 4;
-               }
-       }
-#endif
-
-       /* startx, starty, startz, width, height */
-       LayGround((-g_higher - g_back), (g_higher << 1), (g_back - g_higher),
-                 (g_width), (g_height), si);
-}
-
-void
-DisplaySproingies(int screen)
-{
-       sp_instance *si = &si_list[screen];
-       int         t;
-       GLfloat     position[] =
-       {8.0, 5.0, -2.0, 0.1};
-
-       if (si->wireframe)
-               glClear(GL_COLOR_BUFFER_BIT);
-       else
-               glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       glPushMatrix();
-       glTranslatef(0.0, 0.0, -(GLfloat) (si->dist) / 16.0);   /* viewing transform  */
-       glRotatef((GLfloat) si->rotx, 1.0, 0.0, 0.0);
-       glRotatef((GLfloat) si->roty, 0.0, 1.0, 0.0);
-
-       if (!si->wireframe)
-               glLightfv(GL_LIGHT0, GL_POSITION, position);
-
-#if 0                          /* Show light pos */
-       glPushMatrix();
-       glTranslatef(position[0], position[1], position[2]);
-       glColor3f(1.0, 1.0, 1.0);
-       if (!si->wireframe) {
-               glDisable(GL_LIGHTING);
-       }
-       glCallList(si->SproingieBoom);
-       if (!si->wireframe) {
-               glEnable(GL_LIGHTING);
-       }
-       glPopMatrix();
-#endif
-
-       glTranslatef((GLfloat) si->sframe * (-1.0 / 12.0) - 0.75,
-                    (GLfloat) si->sframe * (2.0 / 12.0) - 0.5,
-                    (GLfloat) si->sframe * (-1.0 / 12.0) + 0.75);
-
-       if (si->wireframe)
-               ComputeGround(si);
-
-       for (t = 0; t < si->maxsproingies; ++t) {
-               RenderSproingie(t, si);
-       }
-
-       if (!si->wireframe)
-               ComputeGround(si);
-
-       glPopMatrix();
-       glFlush();
-
-       SproingieSwap();
-}
-
-void
-NextSproingieDisplay(int screen)
-{
-       NextSproingie(screen);
-       DisplaySproingies(screen);
-}
-
-#if 0
-void
-ReshapeSproingies(int w, int h)
-{
-       glViewport(0, 0, w, h);
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       gluPerspective(65.0, (GLfloat) w / (GLfloat) h, 0.1, 2000.0);   /* was 200000.0 */
-       glMatrixMode(GL_MODELVIEW);
-       glLoadIdentity();
-}
-
-#endif
-
-void
-CleanupSproingies(int screen)
-{
-       sp_instance *si = &si_list[screen];
-       int         t;
-
-       if (si->SproingieBoom) {
-               for (t = 0; t < 6; ++t)
-                       glDeleteLists(si->sproingies[t], 1);
-
-               glDeleteLists(si->TopsSides, 2);
-               glDeleteLists(si->SproingieBoom, 1);
-
-               --active_screens;
-               si->SproingieBoom = 0;
-       }
-       if (si->positions) {
-               (void) free((void *) (si->positions));
-               si->positions = NULL;
-       }
-       if ((active_screens == 0) && si_list) {
-               (void) free((void *) (si_list));
-               si_list = NULL;
-       }
-}
-
-void
-InitSproingies(int wfmode, int grnd, int mspr, int screen, int numscreens,
-              int mono)
-{
-       GLfloat     ambient[] =
-       {0.2, 0.2, 0.2, 1.0};
-       GLfloat     position[] =
-       {10.0, 1.0, 1.0, 10.0};
-       GLfloat     mat_diffuse[] =
-       {0.6, 0.6, 0.6, 1.0};
-       GLfloat     mat_specular[] =
-       {0.8, 0.8, 0.8, 1.0};
-       GLfloat     mat_shininess[] =
-       {50.0};
-
-       sp_instance *si;
-       int         t;
-
-       if (si_list == NULL) {
-               if ((si_list = (sp_instance *) calloc(numscreens,
-                                             sizeof (sp_instance))) == NULL)
-                       return;
-       }
-       si = &si_list[screen];
-
-       active_screens++;
-       CleanupSproingies(screen);
-
-       if (mspr < 0)
-               mspr = 0;
-       if (mspr >= MAXSPROING)
-               mspr = MAXSPROING - 1;
-
-       si->rotx = 0;
-       si->roty = -45;
-       si->dist = (16 << 2);
-       si->sframe = 0;
-       si->target_count = 0;
-       si->mono = mono;
-
-       si->wireframe = si->flatshade = 0;
-
-       if (wfmode == 2)
-               si->flatshade = 1;
-       else if (wfmode)
-               si->wireframe = 1;
-
-       si->groundlevel = grnd;
-       si->maxsproingies = mspr;
-
-       if (si->maxsproingies) {
-               si->positions = (struct sPosColor *) calloc(si->maxsproingies,
-                                                 sizeof (struct sPosColor));
-
-               if (!(si->positions))
-                       si->maxsproingies = 0;
-       }
-       for (t = 0; t < si->maxsproingies; ++t) {
-               si->positions[t].x = 0;
-               si->positions[t].y = 0;
-               si->positions[t].z = 0;
-               si->positions[t].life = (-t * ((si->maxsproingies > 19) ? 1 : 4)) - 2;
-               si->positions[t].frame = 0;
-       }
-
-#if 0                          /* Test boom */
-       si->positions[0].x = 0;
-       si->positions[0].y = 0;
-       si->positions[0].z = 0;
-       si->positions[0].life = 10;
-       si->positions[0].frame = BOOM_FRAME;
-       si->positions[0].r = 0.656863;
-       si->positions[0].g = 1.0;
-       si->positions[0].b = 0.656863;
-#endif
-
-       if (!(si->TopsSides = build_TopsSides(si->wireframe)))
-               (void) fprintf(stderr, "build_TopsSides\n");
-
-       if (!(si->sproingies[0] = BuildLWO(si->wireframe, &LWO_s1_1)))
-               (void) fprintf(stderr, "BuildLWO - 1\n");
-       if (!(si->sproingies[1] = BuildLWO(si->wireframe, &LWO_s1_2)))
-               (void) fprintf(stderr, "BuildLWO - 2\n");
-       if (!(si->sproingies[2] = BuildLWO(si->wireframe, &LWO_s1_3)))
-               (void) fprintf(stderr, "BuildLWO - 3\n");
-       if (!(si->sproingies[3] = BuildLWO(si->wireframe, &LWO_s1_4)))
-               (void) fprintf(stderr, "BuildLWO - 4\n");
-       if (!(si->sproingies[4] = BuildLWO(si->wireframe, &LWO_s1_5)))
-               (void) fprintf(stderr, "BuildLWO - 5\n");
-       if (!(si->sproingies[5] = BuildLWO(si->wireframe, &LWO_s1_6)))
-               (void) fprintf(stderr, "BuildLWO - 6\n");
-
-       if (!(si->SproingieBoom = BuildLWO(si->wireframe, &LWO_s1_b)))
-               (void) fprintf(stderr, "BuildLWO - b\n");
-
-       if (si->wireframe) {
-               glShadeModel(GL_FLAT);
-               glDisable(GL_LIGHTING);
-       } else {
-               if (si->flatshade) {
-                       glShadeModel(GL_FLAT);
-                       position[0] = 1.0;
-                       position[3] = 0.0;
-               }
-               glEnable(GL_LIGHTING);
-               glEnable(GL_LIGHT0);
-               glDepthFunc(GL_LEQUAL);
-               glEnable(GL_DEPTH_TEST);
-
-               glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-               glLightfv(GL_LIGHT0, GL_POSITION, position);
-
-               glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse);
-               glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
-               glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
-
-               /* glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); */
-               glCullFace(GL_BACK);
-               glEnable(GL_CULL_FACE);
-
-               glFrontFace(GL_CW);
-               /* glEnable(GL_NORMALIZE); */
-       }
-}
-
-#endif
-
-/* End of sproingies.c */
diff --git a/hacks/glx/sproingiewrap.c b/hacks/glx/sproingiewrap.c
deleted file mode 100644 (file)
index dff236b..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* sproingiewrap.c - sproingies wrapper */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)sproingiewrap.c      4.07 97/11/24 xlockmore";
-
-#endif
-
-/*-
- * sproingiewrap.c - Copyright 1996 Sproingie Technologies Incorporated.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- *    Programming:  Ed Mackey, http://www.netaxs.com/~emackey/
- *    Sproingie 3D objects modeled by:  Al Mackey, al@iam.com
- *       (using MetaNURBS in NewTek's Lightwave 3D v5).
- *
- * Revision History:
- * 26-Apr-97: Added glPointSize() calls around explosions, plus other fixes.
- * 28-Mar-97: Added size support.
- * 22-Mar-97: Updated to use glX interface instead of xmesa one.
- *              Also, support for multiscreens added.
- * 20-Mar-97: Updated for xlockmore v4.02alpha7 and higher, using
- *              xlockmore's built-in Mesa/OpenGL support instead of
- *              my own.  Submitted for inclusion in xlockmore.
- * 09-Dec-96: Written.
- */
-
-/*-
- * The sproingies have six "real" frames, (s1_1 to s1_6) that show a
- * sproingie jumping off a block, headed down and to the right.  But
- * the program thinks of sproingies as having twelve "virtual" frames,
- * with the latter six being copies of the first, only lowered and
- * rotated by 90 degrees (jumping to the left).  So after going
- * through 12 frames, a sproingie has gone down two rows but not
- * moved horizontally. 
- *
- * To have the sproingies randomly choose left/right jumps at each
- * block, the program should go back to thinking of only 6 frames,
- * and jumping down only one row when it is done.  Then it can pick a
- * direction for the next row.
- *
- * (Falling off the end might not be so bad either.  :) )  
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Sproingies"
-# define HACK_INIT                                     init_sproingies
-# define HACK_DRAW                                     draw_sproingies
-# define sproingies_opts                       xlockmore_opts
-# define DEFAULTS      "*delay:                100     \n"                     \
-                                       "*count:                5       \n"                     \
-                                       "*cycles:               0       \n"                     \
-                                       "*size:                 0       \n"                     \
-                                       "*wireframe:    False   \n"
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-ModeSpecOpt sproingies_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   sproingies_description =
-{"sproingies", "init_sproingies", "draw_sproingies", "release_sproingies",
- "refresh_sproingies", "init_sproingies", NULL, &sproingies_opts,
- 1000, 5, 0, 400, 4, 1.0, "",
- "Shows Sproingies!  Nontoxic.  Safe for pets and small children", 0, NULL};
-
-#endif
-
-#define MINSIZE 32
-
-#include <GL/glu.h>
-#include <time.h>
-
-void        NextSproingie(int screen);
-void        NextSproingieDisplay(int screen);
-void        DisplaySproingies(int screen);
-
-#if 0
-void        ReshapeSproingies(int w, int h);
-
-#endif
-void        CleanupSproingies(int screen);
-void        InitSproingies(int wfmode, int grnd, int mspr, int screen, int numscreens, int mono);
-
-typedef struct {
-       GLfloat     view_rotx, view_roty, view_rotz;
-       GLint       gear1, gear2, gear3;
-       GLfloat     angle;
-       GLuint      limit;
-       GLuint      count;
-       GLXContext *glx_context;
-       int         mono;
-       Window      window;
-} sproingiesstruct;
-
-static sproingiesstruct *sproingies = NULL;
-
-static Display *swap_display;
-static Window swap_window;
-
-void
-SproingieSwap(void)
-{
-       glFinish();
-       glXSwapBuffers(swap_display, swap_window);
-}
-
-
-void
-init_sproingies(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       int         screen = MI_SCREEN(mi);
-
-       int         cycles = MI_CYCLES(mi);
-       int         count = MI_COUNT(mi);
-       int         size = MI_SIZE(mi);
-
-       sproingiesstruct *sp;
-       int         wfmode = 0, grnd, mspr, w, h;
-
-       if (sproingies == NULL) {
-               if ((sproingies = (sproingiesstruct *) calloc(MI_NUM_SCREENS(mi),
-                                        sizeof (sproingiesstruct))) == NULL)
-                       return;
-       }
-       sp = &sproingies[screen];
-
-       sp->mono = (MI_IS_MONO(mi) ? 1 : 0);
-       sp->window = window;
-       if ((sp->glx_context = init_GL(mi)) != NULL) {
-
-               if ((cycles & 1) || MI_IS_WIREFRAME(mi))
-                       wfmode = 1;
-               grnd = (cycles >> 1);
-               if (grnd > 2)
-                       grnd = 2;
-
-               mspr = count;
-               if (mspr > 100)
-                       mspr = 100;
-
-               /* wireframe, ground, maxsproingies */
-               InitSproingies(wfmode, grnd, mspr, MI_SCREEN(mi), MI_NUM_SCREENS(mi), sp->mono);
-
-               /* Viewport is specified size if size >= MINSIZE && size < screensize */
-               if (size == 0) {
-                       w = MI_WIDTH(mi);
-                       h = MI_HEIGHT(mi);
-               } else if (size < MINSIZE) {
-                       w = MINSIZE;
-                       h = MINSIZE;
-               } else {
-                       w = (size > MI_WIDTH(mi)) ? MI_WIDTH(mi) : size;
-                       h = (size > MI_HEIGHT(mi)) ? MI_HEIGHT(mi) : size;
-               }
-
-               glViewport((MI_WIDTH(mi) - w) / 2, (MI_HEIGHT(mi) - h) / 2, w, h);
-               glMatrixMode(GL_PROJECTION);
-               glLoadIdentity();
-               gluPerspective(65.0, (GLfloat) w / (GLfloat) h, 0.1, 2000.0);   /* was 200000.0 */
-               glMatrixMode(GL_MODELVIEW);
-               glLoadIdentity();
-
-               swap_display = display;
-               swap_window = window;
-               DisplaySproingies(MI_SCREEN(mi));
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-/* ARGSUSED */
-void
-draw_sproingies(ModeInfo * mi)
-{
-       sproingiesstruct *sp = &sproingies[MI_SCREEN(mi)];
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       if (!sp->glx_context)
-               return;
-
-       glDrawBuffer(GL_BACK);
-       glXMakeCurrent(display, window, *(sp->glx_context));
-
-       swap_display = display;
-       swap_window = window;
-
-       NextSproingieDisplay(MI_SCREEN(mi));    /* It will swap. */
-}
-
-void
-refresh_sproingies(ModeInfo * mi)
-{
-       /* No need to do anything here... The whole screen is updated
-        * every frame anyway.  Otherwise this would be just like
-        * draw_sproingies, above, but replace NextSproingieDisplay(...)
-        * with DisplaySproingies(...).
-        */
-}
-
-void
-release_sproingies(ModeInfo * mi)
-{
-       if (sproingies != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       sproingiesstruct *sp = &sproingies[screen];
-
-                       if (sp->glx_context) {
-
-                               glXMakeCurrent(MI_DISPLAY(mi), sp->window, *(sp->glx_context));
-                               CleanupSproingies(MI_SCREEN(mi));
-                       }
-               }
-
-               (void) free((void *) sproingies);
-               sproingies = NULL;
-       }
-       FreeAllGL(mi);
-}
-
-#endif
-
-/* End of sproingiewrap.c */
diff --git a/hacks/glx/stairs.c b/hacks/glx/stairs.c
deleted file mode 100644 (file)
index c12316a..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* stairs --- Infinite Stairs, and Escher-like scene. */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)stairs.c     4.07 97/11/24 xlockmore";
-
-#endif
-
-#undef DEBUG_LISTS
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * This mode shows some interesting scenes that are impossible OR very
- * weird to build in the real universe. Much of the scenes are inspirated
- * on Mauritz Cornelis stairs's works which derivated the mode's name.
- * M.C. Escher (1898-1972) was a dutch artist and many people prefer to
- * say he was a mathematician.
- *
- * Thanks goes to Brian Paul for making it possible and inexpensive to use 
- * OpenGL at home.
- *
- * Since I'm not a native English speaker, my apologies for any grammatical
- * mistake.
- *
- * My e-mail address is
- * m-vianna@usa.net
- *
- * Marcelo F. Vianna (Jun-01-1997)
- *
- * Revision History:
- * 07-Jan-98: This would be a scene for the escher mode, but now escher mode
- *            was splitted in different modes for each scene. This is the
- *            initial release and is not working yet.
- *            Marcelo F. Vianna.
- *
- */
-
-/*-
- * Texture mapping is only available on RGBA contexts, Mono and color index
- * visuals DO NOT support texture mapping in OpenGL.
- *
- * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture
- * mapping shuld work on PseudoColor, DirectColor, TrueColor using Mesa. Mono
- * is not officially supported for both OpenGL and Mesa, but seems to not crash
- * Mesa.
- *
- * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know).
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS                     "Stairs"
-# define HACK_INIT                     init_stairs
-# define HACK_DRAW                     draw_stairs
-# define stairs_opts           xlockmore_opts
-# define DEFAULTS                      "*cycles:               1       \n"                     \
-                                                       "*delay:                200000  \n"                     \
-                                                       "*wireframe:    False   \n"
-# include "xlockmore.h"                /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"                    /* from the xlockmore distribution */
-
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-#include <GL/glu.h>
-#include "e_textures.h"
-
-ModeSpecOpt stairs_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   stairs_description =
-{"stairs", "init_stairs", "draw_stairs", "release_stairs",
- "draw_stairs", "change_stairs", NULL, &stairs_opts,
- 1000, 1, 1, 1, 4, 1.0, "",
- "Shows Infinite Stairs, an Escher-like scene", 0, NULL};
-
-#endif
-
-#define Scale4Window               0.3
-#define Scale4Iconic               0.4
-
-#define sqr(A)                     ((A)*(A))
-
-#ifndef Pi
-#define Pi                         M_PI
-#endif
-
-/*************************************************************************/
-
-typedef struct {
-       GLint       WindH, WindW;
-       GLfloat     step;
-       Bool        direction;
-       int         AreObjectsDefined[1];
-       int         sphere_position;
-       GLXContext *glx_context;
-} stairsstruct;
-
-static float front_shininess[] =
-{60.0};
-static float front_specular[] =
-{0.7, 0.7, 0.7, 1.0};
-static float ambient[] =
-{0.0, 0.0, 0.0, 1.0};
-static float diffuse[] =
-{1.0, 1.0, 1.0, 1.0};
-static float position0[] =
-{1.0, 1.0, 1.0, 0.0};
-static float position1[] =
-{-1.0, -1.0, 1.0, 0.0};
-static float lmodel_ambient[] =
-{0.5, 0.5, 0.5, 1.0};
-static float lmodel_twoside[] =
-{GL_TRUE};
-
-#if 0
-static float MaterialRed[] =
-{0.7, 0.0, 0.0, 1.0};
-static float MaterialGreen[] =
-{0.1, 0.5, 0.2, 1.0};
-static float MaterialBlue[] =
-{0.0, 0.0, 0.7, 1.0};
-static float MaterialCyan[] =
-{0.2, 0.5, 0.7, 1.0};
-static float MaterialMagenta[] =
-{0.6, 0.2, 0.5, 1.0};
-static float MaterialGray[] =
-{0.2, 0.2, 0.2, 1.0};
-static float MaterialGray5[] =
-{0.5, 0.5, 0.5, 1.0};
-static float MaterialGray6[] =
-{0.6, 0.6, 0.6, 1.0};
-static float MaterialGray8[] =
-{0.8, 0.8, 0.8, 1.0};
-
-#endif
-static float MaterialYellow[] =
-{0.7, 0.7, 0.0, 1.0};
-static float MaterialWhite[] =
-{0.7, 0.7, 0.7, 1.0};
-
-static float positions[] =
-{
-       -2.5, 4.0, 0.0,         /* First one is FUDGED :) */
-       -3.0, 3.25, 1.0,
-       -3.0, 4.4, 1.5,
-       -3.0, 3.05, 2.0,
-       -3.0, 4.2, 2.5,
-
-       -3.0, 2.85, 3.0,
-       -2.5, 4.0, 3.0,
-       -2.0, 2.75, 3.0,
-       -1.5, 3.9, 3.0,
-       -1.0, 2.65, 3.0,
-       -0.5, 3.8, 3.0,
-       0.0, 2.55, 3.0,
-       0.5, 3.7, 3.0,
-       1.0, 2.45, 3.0,
-       1.5, 3.6, 3.0,
-       2.0, 2.35, 3.0,
-
-       2.0, 3.5, 2.5,
-       2.0, 2.25, 2.0,
-       2.0, 3.4, 1.5,
-       2.0, 2.15, 1.0,
-       2.0, 3.3, 0.5,
-       2.0, 2.05, 0.0,
-       2.0, 3.2, -0.5,
-       2.0, 1.95, -1.0,
-       2.0, 3.1, -1.5,
-       2.0, 1.85, -2.0,
-
-       1.5, 2.9, -2.0,
-       1.0, 1.65, -2.0,
-       0.5, 2.7, -2.0,
-       0.0, 1.55, -2.0,
-       -0.5, 2.5, -2.0,
-       -1.0, 1.45, -2.0,
-};
-
-#define NPOSITIONS ((sizeof positions) / (sizeof positions[0]))
-
-static stairsstruct *stairs = NULL;
-static GLuint objects;
-
-#define ObjSphere    0
-
-#define PlankWidth      3.0
-#define PlankHeight     0.35
-#define PlankThickness  0.15
-
-static void
-mySphere(float radius)
-{
-       GLUquadricObj *quadObj;
-
-       quadObj = gluNewQuadric();
-       gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
-       gluSphere(quadObj, radius, 16, 16);
-       gluDeleteQuadric(quadObj);
-}
-
-static void
-draw_block(GLfloat width, GLfloat height, GLfloat thickness)
-{
-       glBegin(GL_QUADS);
-       glNormal3f(0, 0, 1);
-       glTexCoord2f(0, 0);
-       glVertex3f(-width, -height, thickness);
-       glTexCoord2f(1, 0);
-       glVertex3f(width, -height, thickness);
-       glTexCoord2f(1, 1);
-       glVertex3f(width, height, thickness);
-       glTexCoord2f(0, 1);
-       glVertex3f(-width, height, thickness);
-       glNormal3f(0, 0, -1);
-       glTexCoord2f(0, 0);
-       glVertex3f(-width, height, -thickness);
-       glTexCoord2f(1, 0);
-       glVertex3f(width, height, -thickness);
-       glTexCoord2f(1, 1);
-       glVertex3f(width, -height, -thickness);
-       glTexCoord2f(0, 1);
-       glVertex3f(-width, -height, -thickness);
-       glNormal3f(0, 1, 0);
-       glTexCoord2f(0, 0);
-       glVertex3f(-width, height, thickness);
-       glTexCoord2f(1, 0);
-       glVertex3f(width, height, thickness);
-       glTexCoord2f(1, 1);
-       glVertex3f(width, height, -thickness);
-       glTexCoord2f(0, 1);
-       glVertex3f(-width, height, -thickness);
-       glNormal3f(0, -1, 0);
-       glTexCoord2f(0, 0);
-       glVertex3f(-width, -height, -thickness);
-       glTexCoord2f(1, 0);
-       glVertex3f(width, -height, -thickness);
-       glTexCoord2f(1, 1);
-       glVertex3f(width, -height, thickness);
-       glTexCoord2f(0, 1);
-       glVertex3f(-width, -height, thickness);
-       glNormal3f(1, 0, 0);
-       glTexCoord2f(0, 0);
-       glVertex3f(width, -height, thickness);
-       glTexCoord2f(1, 0);
-       glVertex3f(width, -height, -thickness);
-       glTexCoord2f(1, 1);
-       glVertex3f(width, height, -thickness);
-       glTexCoord2f(0, 1);
-       glVertex3f(width, height, thickness);
-       glNormal3f(-1, 0, 0);
-       glTexCoord2f(0, 0);
-       glVertex3f(-width, height, thickness);
-       glTexCoord2f(1, 0);
-       glVertex3f(-width, height, -thickness);
-       glTexCoord2f(1, 1);
-       glVertex3f(-width, -height, -thickness);
-       glTexCoord2f(0, 1);
-       glVertex3f(-width, -height, thickness);
-       glEnd();
-}
-
-static void
-draw_stairs_internal(ModeInfo * mi)
-{
-       stairsstruct *sp = &stairs[MI_SCREEN(mi)];
-       GLfloat     X;
-
-       glPushMatrix();
-       glPushMatrix();
-       glTranslatef(-3.0, 0.1, 2.0);
-       for (X = 0; X < 2; X++) {
-               draw_block(0.5, 2.7 + 0.1 * X, 0.5);
-               glTranslatef(0.0, 0.1, -1.0);
-       }
-       glPopMatrix();
-       glTranslatef(-3.0, 0.0, 3.0);
-       glPushMatrix();
-
-       for (X = 0; X < 6; X++) {
-               draw_block(0.5, 2.6 - 0.1 * X, 0.5);
-               glTranslatef(1.0, -0.1, 0.0);
-       }
-       glTranslatef(-1.0, -0.9, -1.0);
-       for (X = 0; X < 5; X++) {
-               draw_block(0.5, 3.0 - 0.1 * X, 0.5);
-               glTranslatef(0.0, 0.0, -1.0);
-       }
-       glTranslatef(-1.0, -1.1, 1.0);
-       for (X = 0; X < 3; X++) {
-               draw_block(0.5, 3.5 - 0.1 * X, 0.5);
-               glTranslatef(-1.0, -0.1, 0.0);
-       }
-       glPopMatrix();
-       glPopMatrix();
-
-       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]);
-       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_position >= NPOSITIONS)
-               sp->sphere_position = 0;
-}
-
-static void
-reshape(ModeInfo * mi, int width, int height)
-{
-       stairsstruct *sp = &stairs[MI_SCREEN(mi)];
-
-       glViewport(0, 0, sp->WindW = (GLint) width, sp->WindH = (GLint) height);
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0);
-       glMatrixMode(GL_MODELVIEW);
-       if (width >= 1024) {
-               glLineWidth(3);
-               glPointSize(3);
-       } else if (width >= 512) {
-               glLineWidth(2);
-               glPointSize(2);
-       } else {
-               glLineWidth(1);
-               glPointSize(1);
-       }
-}
-
-static void
-pinit(void)
-{
-       glClearDepth(1.0);
-       glClearColor(0.0, 0.0, 0.0, 1.0);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT0, GL_POSITION, position0);
-       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
-       glLightfv(GL_LIGHT1, GL_POSITION, position1);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_NORMALIZE);
-       glFrontFace(GL_CCW);
-       glCullFace(GL_BACK);
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite);
-       glShadeModel(GL_FLAT);
-       glEnable(GL_DEPTH_TEST);
-       glEnable(GL_TEXTURE_2D);
-       glEnable(GL_CULL_FACE);
-
-       glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-       gluBuild2DMipmaps(GL_TEXTURE_2D, 3, WoodTextureWidth, WoodTextureHeight,
-                         GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData);
-       glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-}
-
-void
-init_stairs(ModeInfo * mi)
-{
-       int         screen = MI_SCREEN(mi);
-       stairsstruct *sp;
-
-       if (stairs == NULL) {
-               if ((stairs = (stairsstruct *) calloc(MI_NUM_SCREENS(mi),
-                                            sizeof (stairsstruct))) == NULL)
-                       return;
-       }
-       sp = &stairs[screen];
-       sp->step = 0.0;
-       sp->direction = LRAND() & 1;
-       sp->sphere_position = NRAND(NPOSITIONS / 3) * 3;
-
-       if ((sp->glx_context = init_GL(mi)) != NULL) {
-
-               reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
-               glDrawBuffer(GL_BACK);
-               if (!glIsList(objects))
-                       objects = glGenLists(1);
-               pinit();
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-void
-draw_stairs(ModeInfo * mi)
-{
-       stairsstruct *sp = &stairs[MI_SCREEN(mi)];
-
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       if (!sp->glx_context)
-               return;
-
-       glXMakeCurrent(display, window, *(sp->glx_context));
-
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       glPushMatrix();
-
-       glTranslatef(0.0, 0.0, -10.0);
-
-       if (!MI_IS_ICONIC(mi)) {
-               glScalef(Scale4Window * sp->WindH / sp->WindW, Scale4Window, Scale4Window);
-       } else {
-               glScalef(Scale4Iconic * sp->WindH / sp->WindW, Scale4Iconic, Scale4Iconic);
-       }
-
-       glRotatef(44.5, 1, 0, 0);
-       glRotatef(50 + ((sp->direction) ? 1 : -1) *
-              ((sp->step * 100 > 120) ? sp->step * 100 - 120 : 0), 0, 1, 0);
-       if (sp->step * 100 >= 360 + 120) {      /* stop showing secrets */
-               sp->step = 0;
-               sp->direction = LRAND() & 1;
-       }
-       draw_stairs_internal(mi);
-
-       glPopMatrix();
-
-       glFlush();
-
-       glXSwapBuffers(display, window);
-
-       sp->step += 0.025;
-}
-
-void
-change_stairs(ModeInfo * mi)
-{
-       stairsstruct *sp = &stairs[MI_SCREEN(mi)];
-
-       if (!sp->glx_context)
-               return;
-
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
-       pinit();
-}
-
-void
-release_stairs(ModeInfo * mi)
-{
-       if (stairs != NULL) {
-               (void) free((void *) stairs);
-               stairs = NULL;
-       }
-       if (glIsList(objects)) {
-               glDeleteLists(objects, 1);
-       }
-       FreeAllGL(mi);
-}
-
-#endif
diff --git a/hacks/glx/superquadrics.c b/hacks/glx/superquadrics.c
deleted file mode 100644 (file)
index cfc2999..0000000
+++ /dev/null
@@ -1,778 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* superquadrics --- 3D mathematical shapes */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)superquadrics.c      4.07 97/11/24 xlockmore";
-
-#endif
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Superquadrics were invented by Dr. Alan Barr of Caltech University.
- * They were first published in "Computer Graphics and Applications",
- * volume 1, number 1, 1981, in the article "Superquadrics and Angle-
- * Preserving Transformations."  Dr. Barr based the Superquadrics on
- * Piet Hein's "super ellipses."  Super ellipses are like 2D ellipses,
- * except that the formula includes an exponent, raising its X and Y
- * values to a (fractional) power, and allowing them to gradually
- * change from round to square edges.  Superquadrics extend this
- * idea into 3 dimensions, using two exponents to modify a
- * quadric surface in a similar fashion.
- *
- * Revision History:
- * 30-Mar-97: Turned into a module for xlockmore 4.02 alpha.  The code
- *    is almost unrecognizable now from the first revision, except for
- *    a few remaining two-letter variable names.  I still don't have
- *    the normal vectors working right (I wrote the buggy normal vector
- *    code myself, can you tell?)
- * 07-Jan-97: A legend reborn; Superquadrics make an appearance as a
- *    real OpenGL program written in C.  I can even render them with
- *    proper lighting and specular highlights.  Gee, they look almost
- *    as good now as the original color plates of them that my uncle
- *    showed me as a child in 1981.  I don't know what computer hardware
- *    he was using at the time, but it's taken a couple decades for the
- *    PC clone hardware to catch up to it.
- * 05-Jan-97: After almost a decade, Superquadrics had almost faded away
- *    into the myths and folklore of all the things my brother and I played
- *    with on computers when we were kids with too much time on our hands.
- *    I had since gotten involved in Unix, OpenGL, and other things.
- *    A sudden flash of inspiration caused me to dig out the old Pascal
- *    source code, run it through p2c, and start ripping away the old
- *    wireframe rendering code, to be replaced by OpenGL.
- * Late 1989 or early 1990:  Around this time I did the Turbo Pascal
- *    port of the Superquadrics.  Unfortunately, many of the original variable
- *    names remained the same from the C= 64 original.  This was unfortunate
- *    because BASIC on the c64 only allowed 2-letter, global variable names.
- *    But the speed improvement over BASIC was very impressive at the time.
- * Thanksgiving, 1987: Written.  My uncle Al, who invented Superquadrics some
- *    years earlier, came to visit us.  I was a high school kid at the time,
- *    with nothing more than a Commodore 64.  Somehow we wrote this program,
- *    (he did the math obviously, I just coded it into BASIC for the c64).
- *    Yeah, 320x200 resolution, colorless white wireframe, and half an hour
- *    rendering time per superquadric.  PLOT x,y.  THOSE were the days.
- *    In the following years I would port Superquadrics to AppleBASIC,
- *    AmigaBASIC, and then Turbo Pascal for IBM clones.  5 minutes on a 286!
- *    Talk about fast rendering!  But these days, when my Pentium 166 runs
- *    the same program, the superquadric will already be waiting on the
- *    screen before my monitor can change frequency from text to graphics
- *    mode.  Can't time the number of minutes that way!  Darn ;)
- *
- * Ed Mackey
- */
-
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Superquadrics"
-# define HACK_INIT                                     init_superquadrics
-# define HACK_DRAW                                     draw_superquadrics
-# define superquadrics_opts                    xlockmore_opts
-# define DEFAULTS      "*delay:                100     \n"                     \
-                                       "*count:                25      \n"                     \
-                                       "*cycles:               40      \n"                     \
-                                       "*wireframe:    False   \n"
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-/*-
- * Note for low-CPU-speed machines:  If your frame rate is so low that
- * attempts at animation appear futile, try using "-cycles 1", which puts
- * Superquadrics into kind of a slide-show mode.  It will still use up
- * all of your CPU power, but it may look nicer.
- */
-
-#define DEF_SPINSPEED  "5.0"
-
-static float spinspeed;
-
-static XrmOptionDescRec opts[] =
-{
-  {"-spinspeed", ".superquadrics.spinspeed", XrmoptionSepArg, (caddr_t) NULL}
-};
-static argtype vars[] =
-{
-  {(caddr_t *) & spinspeed, "spinspeed", "Spinspeed", DEF_SPINSPEED, t_Float}
-};
-static OptionStruct desc[] =
-{
-       {"-spinspeed num", "speed of rotation, in degrees per frame"}
-};
-
-ModeSpecOpt superquadrics_opts =
-{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   superquadrics_description =
-{"superquadrics", "init_superquadrics", "draw_superquadrics", "release_superquadrics",
- "refresh_superquadrics", "init_superquadrics", NULL, &superquadrics_opts,
- 1000, 25, 40, 1, 4, 1.0, "",
- "Shows 3D mathematical shapes", 0, NULL};
-
-#endif
-
-#include <GL/glu.h>
-
-#define MaxRes          50
-#define MinRes          5
-
-typedef double dimi[MaxRes + 1];
-
-typedef struct {
-       double      xExponent, yExponent;
-       GLfloat     r[4], g[4], b[4];
-       long        Mode;
-       int         rotx, rotz;
-} state;
-
-typedef struct {
-       GLXContext *glx_context;
-       int         dist, wireframe, flatshade, shownorms, maxcount, maxwait;
-       int         counter, viewcount, viewwait, mono;
-       GLfloat     curmat[4][4], rotx, roty, rotz, spinspeed;
-       /* In dimi: the first letter stands for cosine/sine, the second
-        *          stands for North, South, East, or West.  I think.
-        */
-       dimi        cs, se, sw, sn, ss, ce, cw, cn, Prevxx, Prevyy, Prevzz,
-                   Prevxn, Prevyn, Prevzn;
-       double      xExponent, yExponent, Mode;
-       int         resolution;
-       state       now, later;
-} superquadricsstruct;
-
-static superquadricsstruct *superquadrics = NULL;
-
-#define CLIP_NORMALS 10000.0
-
-static void ReshapeSuperquadrics(int w, int h);
-
-static int
-myrand(int range)
-{
-       return ((int) (((float) range) * LRAND() / (MAXRAND)));
-}
-
-static float
-myrandreal(void)
-{
-       return (LRAND() / (MAXRAND));
-}
-
-/* Some old, old, OLD code follows.  Ahh this takes me back..... */
-
-/* Output from p2c, the Pascal-to-C translator */
-/* From input file "squad.pas" */
-
-static double
-XtoY(double x, double y)
-{
-       double      z, a;
-
-       /* This is NOT your typical raise-X-to-the-Y-power function.  Do not attempt
-        * to replace this with a standard exponent function.  If you must, just
-        * replace the "a = exp(y * log(z));" line with something faster.
-        */
-
-       z = fabs(x);
-       if (z < 1e-20) {
-               a = 0.0;
-               return a;
-       }
-       a = exp(y * log(z));
-       if (a > CLIP_NORMALS)
-               a = CLIP_NORMALS;
-       if (x < 0)
-               a = -a;
-       return a;
-}
-
-
-static double
-Sine(double x, double e)
-{
-       /* This is just the sine wave raised to the exponent.  BUT, you can't
-        * raise negative numbers to fractional exponents.  So we have a special
-        * XtoY routune which handles it in a way useful to superquadrics.
-        */
-
-       return (XtoY(sin(x), e));
-}
-
-
-static double
-Cosine(double x, double e)
-{
-       return (XtoY(cos(x), e));
-}
-
-
-static void
-MakeUpStuff(int allstuff, superquadricsstruct * sp)
-{
-       static int  pats[4][4] =
-       {
-               {0, 0, 0, 0},
-               {0, 1, 0, 1},
-               {0, 0, 1, 1},
-               {0, 1, 1, 0}
-       };
-
-       int         dostuff;
-       int         t, pat;
-       GLfloat     r, g, b, r2, g2, b2;
-
-       /* randomize it. */
-
-       if (sp->maxcount < 2)
-               allstuff = 1;
-       dostuff = allstuff * 15;
-       if (!dostuff) {
-               dostuff = myrand(3) + 1;
-               if (myrand(2) || (dostuff & 1))
-                       dostuff |= 4;
-               if (myrand(2))
-                       dostuff |= 8;
-       }
-       if (dostuff & 1) {
-               sp->later.xExponent = (((long) floor(myrandreal() * 250 + 0.5)) / 100.0) + 0.1;
-               sp->later.yExponent = (((long) floor(myrandreal() * 250 + 0.5)) / 100.0) + 0.1;
-
-               /* Increase the 2.0 .. 2.5 range to 2.0 .. 3.0 */
-               if (sp->later.xExponent > 2.0)
-                       sp->later.xExponent = (sp->later.xExponent * 2.0) - 2.0;
-               if (sp->later.yExponent > 2.0)
-                       sp->later.yExponent = (sp->later.yExponent * 2.0) - 2.0;
-       }
-       if (dostuff & 2) {
-               do {
-                       sp->later.Mode = myrand(3L) + 1;
-               } while (!allstuff && (sp->later.Mode == sp->now.Mode));
-               /* On init: make sure it can stay in mode 1 if it feels like it. */
-       }
-       if (dostuff & 4) {
-               if (sp->mono) {
-                       if (sp->wireframe) {
-                               b = g = r = 1.0;
-                               b2 = g2 = r2 = 1.0;
-                       } else {
-                               b = g = r = (GLfloat) (140 + myrand(100)) / 255.0;
-                               b2 = g2 = r2 = ((r > 0.69) ? (1.0 - r) : r);
-                       }
-               } else {
-                       r = (GLfloat) (40 + myrand(200)) / 255.0;
-                       g = (GLfloat) (40 + myrand(200)) / 255.0;
-                       b = (GLfloat) (40 + myrand(200)) / 255.0;
-
-                       r2 = ((myrand(4) && ((r < 0.31) || (r > 0.69))) ? (1.0 - r) : r);
-                       g2 = ((myrand(4) && ((g < 0.31) || (g > 0.69))) ? (1.0 - g) : g);
-                       b2 = ((myrand(4) && ((b < 0.31) || (b > 0.69))) ? (1.0 - b) : b);
-               }
-
-               pat = myrand(4);
-               for (t = 0; t < 4; ++t) {
-                       sp->later.r[t] = pats[pat][t] ? r : r2;
-                       sp->later.g[t] = pats[pat][t] ? g : g2;
-                       sp->later.b[t] = pats[pat][t] ? b : b2;
-               }
-       }
-       if (dostuff & 8) {
-               sp->later.rotx = myrand(360) - 180;
-               sp->later.rotz = myrand(160) - 80;
-       }
-}
-
-static void
-inputs(superquadricsstruct * sp)
-{
-       int         iv;
-       double      u, v, mode3, cn3, inverter2, flatu, flatv;
-
-       if (sp->Mode < 1.000001) {
-               mode3 = 1.0;
-               cn3 = 0.0;
-               inverter2 = 1.0;
-       } else if (sp->Mode < 2.000001) {
-               mode3 = 1.0;
-               cn3 = (sp->Mode - 1.0) * 1.5;
-               inverter2 = (sp->Mode - 1.0) * -2.0 + 1.0;
-       } else {
-               mode3 = (sp->Mode - 1.0);
-               cn3 = (sp->Mode - 2.0) / 2.0 + 1.5;
-               inverter2 = -1.0;
-       }
-
-       if (sp->flatshade) {
-               flatu = M_PI / (sp->resolution - 1);
-               flatv = mode3 * M_PI / ((sp->resolution - 1) * 2);
-       } else {
-               flatu = flatv = 0.0;
-       }
-
-       /* (void) printf("Calculating....\n"); */
-       for (iv = 1; iv <= sp->resolution; iv++) {
-
-               /* u ranges from PI down to -PI */
-               u = (1 - iv) * 2 * M_PI / (sp->resolution - 1) + M_PI;
-
-               /* v ranges from PI/2 down to -PI/2 */
-               v = (1 - iv) * mode3 * M_PI / (sp->resolution - 1) + M_PI * (mode3 / 2.0);
-
-               /* Use of xExponent */
-               sp->se[iv] = Sine(u, sp->xExponent);
-               sp->ce[iv] = Cosine(u, sp->xExponent);
-               sp->sn[iv] = Sine(v, sp->yExponent);
-               sp->cn[iv] = Cosine(v, sp->yExponent) * inverter2 + cn3;
-
-               /* Normal vector computations only */
-               sp->sw[iv] = Sine(u + flatu, 2 - sp->xExponent);
-               sp->cw[iv] = Cosine(u + flatu, 2 - sp->xExponent);
-               sp->ss[iv] = Sine(v + flatv, 2 - sp->yExponent) * inverter2;
-               sp->cs[iv] = Cosine(v + flatv, 2 - sp->yExponent);
-       }                       /* next */
-
-       /* Now fix up the endpoints */
-       sp->se[sp->resolution] = sp->se[1];
-       sp->ce[sp->resolution] = sp->ce[1];
-
-       if (sp->Mode > 2.999999) {
-               sp->sn[sp->resolution] = sp->sn[1];
-               sp->cn[sp->resolution] = sp->cn[1];
-       }
-}
-
-
-static void
-DoneScale(superquadricsstruct * sp)
-{
-       double      xx, yy, zz, xp = 0, yp = 0, zp = 0, xn, yn, zn, xnp = 0,
-                   ynp = 0, znp = 0;
-       int         ih, iv;
-
-       /* Hey don't knock my 2-letter variable names.  Simon's BASIC rules, man! ;-> */
-       /* Just kidding..... */
-       int         toggle = 0;
-
-       for (ih = 1; ih <= sp->resolution; ih++) {
-               toggle ^= 2;
-               for (iv = 1; iv <= sp->resolution; iv++) {
-                       toggle ^= 1;
-                       if (sp->wireframe)
-                               glColor3f(sp->curmat[toggle][0], sp->curmat[toggle][1], sp->curmat[toggle][2]);
-                       else
-                               glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, sp->curmat[toggle]);
-
-                       xx = sp->cn[iv] * sp->ce[ih];
-                       zz = sp->cn[iv] * sp->se[ih];
-                       yy = sp->sn[iv];
-
-                       if (sp->wireframe) {
-                               if ((ih > 1) || (iv > 1)) {
-                                       glBegin(GL_LINES);
-                                       if (ih > 1) {
-                                               glVertex3f(xx, yy, zz);
-                                               glVertex3f(sp->Prevxx[iv], sp->Prevyy[iv], sp->Prevzz[iv]);
-                                       }
-                                       if (iv > 1) {
-                                               glVertex3f(xx, yy, zz);
-                                               glVertex3f(sp->Prevxx[iv - 1], sp->Prevyy[iv - 1], sp->Prevzz[iv - 1]);
-                                       }
-/* PURIFY 4.0.1 reports an unitialized memory read on the next line when using
-   * MesaGL 2.2 and -mono.  This has been fixed in MesaGL 2.3 and later. */
-                                       glEnd();
-                               }
-                       } else {
-                               if ((sp->cs[iv] > 1e+10) || (sp->cs[iv] < -1e+10)) {
-                                       xn = sp->cs[iv];
-                                       zn = sp->cs[iv];
-                                       yn = sp->ss[iv];
-                               } else {
-                                       xn = sp->cs[iv] * sp->cw[ih];
-                                       zn = sp->cs[iv] * sp->sw[ih];
-                                       yn = sp->ss[iv];
-                               }
-                               if ((ih > 1) && (iv > 1)) {
-                                       glNormal3f(xn, yn, zn);
-                                       glBegin(GL_POLYGON);
-                                       glVertex3f(xx, yy, zz);
-                                       if (!sp->flatshade)
-                                               glNormal3f(sp->Prevxn[iv], sp->Prevyn[iv], sp->Prevzn[iv]);
-                                       glVertex3f(sp->Prevxx[iv], sp->Prevyy[iv], sp->Prevzz[iv]);
-                                       if (!sp->flatshade)
-                                               glNormal3f(xnp, ynp, znp);
-                                       glVertex3f(xp, yp, zp);
-                                       if (!sp->flatshade)
-                                               glNormal3f(sp->Prevxn[iv - 1], sp->Prevyn[iv - 1], sp->Prevzn[iv - 1]);
-                                       glVertex3f(sp->Prevxx[iv - 1], sp->Prevyy[iv - 1], sp->Prevzz[iv - 1]);
-                                       glEnd();
-                               }
-                               if (sp->shownorms) {
-                                       if (!sp->flatshade)
-                                               glShadeModel(GL_FLAT);
-                                       glDisable(GL_LIGHTING);
-                                       glBegin(GL_LINES);
-                                       glVertex3f(xx, yy, zz);
-                                       glVertex3f(xx + xn, yy + yn, zz + zn);
-                                       glEnd();
-                                       if (!sp->flatshade)
-                                               glShadeModel(GL_SMOOTH);
-                                       glEnable(GL_LIGHTING);
-                               }
-                               xnp = sp->Prevxn[iv];
-                               ynp = sp->Prevyn[iv];
-                               znp = sp->Prevzn[iv];
-                               sp->Prevxn[iv] = xn;
-                               sp->Prevyn[iv] = yn;
-                               sp->Prevzn[iv] = zn;
-                       }
-
-                       xp = sp->Prevxx[iv];
-                       yp = sp->Prevyy[iv];
-                       zp = sp->Prevzz[iv];
-                       sp->Prevxx[iv] = xx;
-                       sp->Prevyy[iv] = yy;
-                       sp->Prevzz[iv] = zz;
-
-               }               /* next */
-       }                       /* next */
-}
-
-/**** End of really old code ****/
-
-static void
-SetCull(int init, superquadricsstruct * sp)
-{
-       static int  cullmode;
-
-       if (init) {
-               cullmode = 0;
-               return;
-       }
-       if (sp->Mode < 1.0001) {
-               if (cullmode != 1) {
-                       glEnable(GL_CULL_FACE);
-                       glCullFace(GL_BACK);
-                       cullmode = 1;
-               }
-       } else if (sp->Mode > 2.9999) {
-               if (cullmode != 2) {
-                       glEnable(GL_CULL_FACE);
-                       glCullFace(GL_FRONT);
-                       cullmode = 2;
-               }
-       } else {
-               if (cullmode) {
-                       glDisable(GL_CULL_FACE);
-                       cullmode = 0;
-               }
-       }
-}
-
-static void
-SetCurrentShape(superquadricsstruct * sp)
-{
-       int         t;
-
-       sp->xExponent = sp->now.xExponent = sp->later.xExponent;
-       sp->yExponent = sp->now.yExponent = sp->later.yExponent;
-
-       for (t = 0; t < 4; ++t) {
-               sp->curmat[t][0] = sp->now.r[t] = sp->later.r[t];
-               sp->curmat[t][1] = sp->now.g[t] = sp->later.g[t];
-               sp->curmat[t][2] = sp->now.b[t] = sp->later.b[t];
-       }
-
-       sp->Mode = (double) (sp->now.Mode = sp->later.Mode);
-       sp->rotx = sp->now.rotx = sp->later.rotx;
-       sp->rotz = sp->now.rotz = sp->later.rotz;
-
-       sp->counter = -sp->maxwait;
-
-       inputs(sp);
-}
-
-static void
-NextSuperquadric(superquadricsstruct * sp)
-{
-       double      fnow, flater;
-       int         t;
-
-       sp->roty -= sp->spinspeed;
-       while (sp->roty >= 360.0)
-               sp->roty -= 360.0;
-       while (sp->roty < 0.0)
-               sp->roty += 360.0;
-
-       --sp->viewcount;
-
-       if (sp->counter > 0) {
-               if (--sp->counter == 0) {
-                       SetCurrentShape(sp);
-                       if (sp->counter == 0) {         /* Happens if sp->maxwait == 0 */
-                               MakeUpStuff(0, sp);
-                               sp->counter = sp->maxcount;
-                       }
-               } else {
-                       fnow = (double) sp->counter / (double) sp->maxcount;
-                       flater = (double) (sp->maxcount - sp->counter) / (double) sp->maxcount;
-                       sp->xExponent = sp->now.xExponent * fnow + sp->later.xExponent * flater;
-                       sp->yExponent = sp->now.yExponent * fnow + sp->later.yExponent * flater;
-
-                       for (t = 0; t < 4; ++t) {
-                               sp->curmat[t][0] = sp->now.r[t] * fnow + sp->later.r[t] * flater;
-                               sp->curmat[t][1] = sp->now.g[t] * fnow + sp->later.g[t] * flater;
-                               sp->curmat[t][2] = sp->now.b[t] * fnow + sp->later.b[t] * flater;
-                       }
-
-                       sp->Mode = (double) sp->now.Mode * fnow + (double) sp->later.Mode * flater;
-                       sp->rotx = (double) sp->now.rotx * fnow + (double) sp->later.rotx * flater;
-                       sp->rotz = (double) sp->now.rotz * fnow + (double) sp->later.rotz * flater;
-
-                       inputs(sp);
-               }
-       } else {
-               if (++sp->counter >= 0) {
-                       MakeUpStuff(0, sp);
-                       sp->counter = sp->maxcount;
-               }
-       }
-}
-
-static void
-DisplaySuperquadrics(superquadricsstruct * sp)
-{
-       glDrawBuffer(GL_BACK);
-       if (sp->wireframe)
-               glClear(GL_COLOR_BUFFER_BIT);
-       else
-               glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       if (sp->viewcount < 1) {
-               sp->viewcount = sp->viewwait;
-               ReshapeSuperquadrics(-1, -1);
-       }
-       glPushMatrix();
-       glTranslatef(0.0, 0.0, -((GLfloat) (sp->dist) / 16.0) - (sp->Mode * 3.0 - 1.0));        /* viewing transform  */
-       glRotatef(sp->rotx, 1.0, 0.0, 0.0);     /* pitch */
-       glRotatef(sp->rotz, 0.0, 0.0, 1.0);     /* bank */
-       glRotatef(sp->roty, 0.0, 1.0, 0.0);     /* "spin", like heading but comes after P & B */
-
-       SetCull(0, sp);
-
-       DoneScale(sp);
-
-       glPopMatrix();
-
-       /* Remember to flush & swap the buffers after calling this function! */
-}
-
-static void
-NextSuperquadricDisplay(superquadricsstruct * sp)
-{
-       NextSuperquadric(sp);
-       DisplaySuperquadrics(sp);
-}
-
-#define MINSIZE 200
-static void
-ReshapeSuperquadrics(int w, int h)
-{
-       static int  last_w = 0, last_h = 0;
-       int         maxsize, cursize;
-
-       if (w < 0) {
-               w = last_w;
-               h = last_h;
-       } else {
-               last_w = w;
-               last_h = h;
-       }
-       maxsize = (w < h) ? w : h;
-       if (maxsize <= MINSIZE) {
-               cursize = maxsize;
-       } else {
-               cursize = myrand(maxsize - MINSIZE) + MINSIZE;
-       }
-       if ((w > cursize) && (h > cursize)) {
-               glViewport(myrand(w - cursize), myrand(h - cursize), cursize, cursize);
-               w = h = cursize;
-       } else {
-               glViewport(0, 0, w, h);
-       }
-       glMatrixMode(GL_PROJECTION);
-       glLoadIdentity();
-       gluPerspective(30.0, (GLfloat) w / (GLfloat) h, 0.1, 200.0);
-       glMatrixMode(GL_MODELVIEW);
-       glLoadIdentity();
-}
-
-static void
-InitSuperquadrics(int wfmode, int snorm, int res, int count, float speed, superquadricsstruct * sp)
-{
-       GLfloat     ambient[] =
-       {0.4, 0.4, 0.4, 1.0};
-       GLfloat     position[] =
-       {10.0, 1.0, 1.0, 10.0};
-       GLfloat     mat_diffuse[] =
-       {1.0, 0.5, 0.5, 1.0};
-       GLfloat     mat_specular[] =
-       {0.8, 0.8, 0.8, 1.0};
-       GLfloat     mat_shininess[] =
-       {50.0};
-
-       int         t;
-
-       for (t = 0; t < 4; ++t)
-               sp->curmat[t][3] = 1.0;
-
-       sp->rotx = 35.0;
-       sp->roty = 0.0;
-       sp->rotz = 0.0;
-       sp->dist = (16 << 3);
-       sp->wireframe = sp->flatshade = sp->shownorms = 0;
-       sp->maxcount = count;
-       if (sp->maxcount < 1)
-               sp->maxcount = 1;
-       sp->maxwait = sp->maxcount >> 1;
-       SetCull(1, sp);
-
-       sp->spinspeed = speed;
-       sp->viewcount = sp->viewwait = (sp->maxcount < 2) ? 1 : (sp->maxcount << 3);
-
-       if (res < MinRes)
-               res = MinRes;
-       if (res > MaxRes)
-               res = MaxRes;
-       sp->resolution = res;
-
-       if (wfmode == 2)
-               sp->flatshade = 1;
-       else if (wfmode)
-               sp->wireframe = 1;
-
-       if (snorm)
-               sp->shownorms = 1;
-
-       if (sp->wireframe) {
-               glShadeModel(GL_FLAT);
-               glDisable(GL_LIGHTING);
-               glColor3f(mat_diffuse[0], mat_diffuse[1], mat_diffuse[2]);
-       } else {
-               if (sp->flatshade) {
-                       glShadeModel(GL_FLAT);
-                       position[0] = 1.0;
-                       position[3] = 0.0;
-               }
-               glEnable(GL_LIGHTING);
-               glEnable(GL_LIGHT0);
-               glDepthFunc(GL_LEQUAL);
-               glEnable(GL_DEPTH_TEST);
-
-               glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
-               glLightfv(GL_LIGHT0, GL_POSITION, position);
-
-               /*glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_diffuse); */
-               glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
-               glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
-
-               glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
-
-               glFrontFace(GL_CW);
-               glEnable(GL_NORMALIZE);
-       }
-
-       MakeUpStuff(1, sp);
-       SetCurrentShape(sp);
-       MakeUpStuff(1, sp);     /* Initialize it */
-       sp->counter = sp->maxcount;
-}
-
-/* End of superquadrics main functions */
-
-void
-init_superquadrics(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       int         screen = MI_SCREEN(mi);
-
-       superquadricsstruct *sp;
-
-       if (superquadrics == NULL) {
-               if ((superquadrics = (superquadricsstruct *) calloc(MI_NUM_SCREENS(mi),
-                                     sizeof (superquadricsstruct))) == NULL)
-                       return;
-       }
-       sp = &superquadrics[screen];
-       sp->mono = (MI_IS_MONO(mi) ? 1 : 0);
-
-       if ((sp->glx_context = init_GL(mi)) != NULL) {
-
-               InitSuperquadrics(MI_IS_WIREFRAME(mi), 0,
-                                 MI_COUNT(mi), MI_CYCLES(mi), spinspeed, sp);
-               ReshapeSuperquadrics(MI_WIDTH(mi), MI_HEIGHT(mi));
-
-               DisplaySuperquadrics(sp);
-               glFinish();
-               glXSwapBuffers(display, window);
-       } else {
-               MI_CLEARWINDOW(mi);
-       }
-}
-
-void
-draw_superquadrics(ModeInfo * mi)
-{
-       superquadricsstruct *sp = &superquadrics[MI_SCREEN(mi)];
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-
-       if (!sp->glx_context)
-               return;
-
-       glXMakeCurrent(display, window, *(sp->glx_context));
-
-       NextSuperquadricDisplay(sp);
-
-       glFinish();
-       glXSwapBuffers(display, window);
-}
-
-void
-refresh_superquadrics(ModeInfo * mi)
-{
-       /* Nothing happens here */
-}
-
-void
-release_superquadrics(ModeInfo * mi)
-{
-       if (superquadrics != NULL) {
-               (void) free((void *) superquadrics);
-               superquadrics = NULL;
-       }
-       FreeAllGL(mi);
-}
-
-
-#endif
-
-/* End of superquadrics.c */
diff --git a/hacks/glx/swim.c b/hacks/glx/swim.c
deleted file mode 100644 (file)
index 0848d46..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/* atlantis --- Shows moving 3D sea animals */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)swim.c       1.3 98/06/18 xlockmore";
-
-#endif
-
-/* Copyright (c) E. Lassauge, 1998. */
-
-/*
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The original code for this mode was written by Mark J. Kilgard
- * as a demo for openGL programming.
- * 
- * Porting it to xlock  was possible by comparing the original Mesa's morph3d 
- * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna 
- * (look at morph3d.c) for his indirect help.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * My e-mail address is lassauge@sagem.fr
- *
- * Eric Lassauge  (May-13-1998)
- *
- */
-
-/**
- * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
- * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States.  Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-
-#ifdef STANDALONE
-# include <math.h>
-# include "xlockmoreI.h"       /* from the xscreensaver distribution */
-#else /* !STANDALONE */
-# include "xlock.h"            /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#ifdef USE_GL
-
-#include "atlantis.h"
-
-void
-FishTransform(fishRec * fish)
-{
-
-       glTranslatef(fish->y, fish->z, -fish->x);
-       glRotatef(-fish->psi, 0.0, 1.0, 0.0);
-       glRotatef(fish->theta, 1.0, 0.0, 0.0);
-       glRotatef(-fish->phi, 0.0, 0.0, 1.0);
-}
-
-void
-WhalePilot(fishRec * fish, float whalespeed, Bool whaledir)
-{
-
-       fish->phi = -20.0;
-       fish->theta = 0.0;
-       fish->psi += ((whaledir) ? -0.5 : 0.5);
-
-       fish->x += whalespeed * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
-       fish->y += whalespeed * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
-       fish->z += whalespeed * fish->v * sin(fish->theta / RAD);
-}
-
-void
-SharkPilot(fishRec * fish, float sharkspeed)
-{
-       static int  sign = 1;
-       float       X, Y, Z, tpsi, ttheta, thetal;
-
-       fish->xt = 60000.0;
-       fish->yt = 0.0;
-       fish->zt = 0.0;
-
-       X = fish->xt - fish->x;
-       Y = fish->yt - fish->y;
-       Z = fish->zt - fish->z;
-
-       thetal = fish->theta;
-
-       ttheta = RAD * atan(Z / (sqrt(X * X + Y * Y)));
-
-       if (ttheta > fish->theta + 0.25) {
-               fish->theta += 0.5;
-       } else if (ttheta < fish->theta - 0.25) {
-               fish->theta -= 0.5;
-       }
-       if (fish->theta > 90.0) {
-               fish->theta = 90.0;
-       }
-       if (fish->theta < -90.0) {
-               fish->theta = -90.0;
-       }
-       fish->dtheta = fish->theta - thetal;
-
-       tpsi = RAD * atan2(Y, X);
-
-       fish->attack = 0;
-
-       if (fabs(tpsi - fish->psi) < 10.0) {
-               fish->attack = 1;
-       } else if (fabs(tpsi - fish->psi) < 45.0) {
-               if (fish->psi > tpsi) {
-                       fish->psi -= 0.5;
-                       if (fish->psi < -180.0) {
-                               fish->psi += 360.0;
-                       }
-               } else if (fish->psi < tpsi) {
-                       fish->psi += 0.5;
-                       if (fish->psi > 180.0) {
-                               fish->psi -= 360.0;
-                       }
-               }
-       } else {
-               if (NRAND(100) > 98) {
-                       sign = 1 - sign;
-               }
-               fish->psi += sign;
-               if (fish->psi > 180.0) {
-                       fish->psi -= 360.0;
-               }
-               if (fish->psi < -180.0) {
-                       fish->psi += 360.0;
-               }
-       }
-
-       if (fish->attack) {
-               if (fish->v < 1.1) {
-                       fish->spurt = 1;
-               }
-               if (fish->spurt) {
-                       fish->v += 0.2;
-               }
-               if (fish->v > 5.0) {
-                       fish->spurt = 0;
-               }
-               if ((fish->v > 1.0) && (!fish->spurt)) {
-                       fish->v -= 0.2;
-               }
-       } else {
-               if (!(NRAND(400)) && (!fish->spurt)) {
-                       fish->spurt = 1;
-               }
-               if (fish->spurt) {
-                       fish->v += 0.05;
-               }
-               if (fish->v > 3.0) {
-                       fish->spurt = 0;
-               }
-               if ((fish->v > 1.0) && (!fish->spurt)) {
-                       fish->v -= 0.05;
-               }
-       }
-
-       fish->x += sharkspeed * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
-       fish->y += sharkspeed * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
-       fish->z += sharkspeed * fish->v * sin(fish->theta / RAD);
-}
-
-void
-SharkMiss(atlantisstruct * ap, int i)
-{
-       int         j;
-       float       avoid, thetal;
-       float       X, Y, Z, R;
-
-       for (j = 0; j < ap->num_sharks; j++) {
-               if (j != i) {
-                       X = ap->sharks[j].x - ap->sharks[i].x;
-                       Y = ap->sharks[j].y - ap->sharks[i].y;
-                       Z = ap->sharks[j].z - ap->sharks[i].z;
-
-                       R = sqrt(X * X + Y * Y + Z * Z);
-
-                       avoid = 1.0;
-                       thetal = ap->sharks[i].theta;
-
-                       if (R < ap->sharksize) {
-                               if (Z > 0.0) {
-                                       ap->sharks[i].theta -= avoid;
-                               } else {
-                                       ap->sharks[i].theta += avoid;
-                               }
-                       }
-                       ap->sharks[i].dtheta += (ap->sharks[i].theta - thetal);
-               }
-       }
-}
-#endif
diff --git a/hacks/glx/whale.c b/hacks/glx/whale.c
deleted file mode 100644 (file)
index afff1d3..0000000
+++ /dev/null
@@ -1,1895 +0,0 @@
-/* atlantis --- Shows moving 3D sea animals */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)whale.c      1.3 98/06/18 xlockmore";
-
-#endif
-
-/* Copyright (c) E. Lassauge, 1998. */
-
-/*-
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * The original code for this mode was written by Mark J. Kilgard
- * as a demo for openGL programming.
- * 
- * Porting it to xlock  was possible by comparing the original Mesa's morph3d 
- * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna 
- * (look at morph3d.c) for his indirect help.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * My e-mail address is lassauge@sagem.fr
- *
- * Eric Lassauge  (May-13-1998)
- *
- */
-
-/*-
- * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
- * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States.  Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <math.h>
-#include <GL/glx.h>
-#endif
-
-#include "atlantis.h"
-/* *INDENT-OFF* */
-static float N001[3] = {0.019249 ,0.011340 ,-0.999750};
-static float N002[3] = {-0.132579 ,0.954547 ,0.266952};
-static float N003[3] = {-0.196061 ,0.980392 ,-0.019778};
-static float N004[3] = {0.695461 ,0.604704 ,0.388158};
-static float N005[3] = {0.870600 ,0.425754 ,0.246557};
-static float N006[3] = {-0.881191 ,0.392012 ,0.264251};
-#if 0
-static float N007[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N008[3] = {-0.341437 ,0.887477 ,0.309523};
-static float N009[3] = {0.124035 ,-0.992278 ,0.000000};
-static float N010[3] = {0.242536 ,0.000000 ,-0.970143};
-static float N011[3] = {0.588172 ,0.000000 ,0.808736};
-static float N012[3] = {0.929824 ,-0.340623 ,-0.139298};
-static float N013[3] = {0.954183 ,0.267108 ,-0.134865};
-static float N014[3] = {0.495127 ,0.855436 ,-0.151914};
-static float N015[3] = {-0.390199 ,0.906569 ,-0.160867};
-static float N016[3] = {-0.923605 ,0.354581 ,-0.145692};
-static float N017[3] = {-0.955796 ,-0.260667 ,-0.136036};
-static float N018[3] = {-0.501283 ,-0.853462 ,-0.142540};
-static float N019[3] = {0.405300 ,-0.901974 ,-0.148913};
-static float N020[3] = {0.909913 ,-0.392746 ,-0.133451};
-static float N021[3] = {0.936494 ,0.331147 ,-0.115414};
-static float N022[3] = {0.600131 ,0.793724 ,-0.099222};
-static float N023[3] = {-0.231556 ,0.968361 ,-0.093053};
-static float N024[3] = {-0.844369 ,0.525330 ,-0.105211};
-static float N025[3] = {-0.982725 ,-0.136329 ,-0.125164};
-static float N026[3] = {-0.560844 ,-0.822654 ,-0.093241};
-static float N027[3] = {0.263884 ,-0.959981 ,-0.093817};
-static float N028[3] = {0.842057 ,-0.525192 ,-0.122938};
-static float N029[3] = {0.921620 ,0.367565 ,-0.124546};
-static float N030[3] = {0.613927 ,0.784109 ,-0.090918};
-static float N031[3] = {-0.448754 ,0.888261 ,-0.098037};
-static float N032[3] = {-0.891865 ,0.434376 ,-0.126077};
-static float N033[3] = {-0.881447 ,-0.448017 ,-0.149437};
-static float N034[3] = {-0.345647 ,-0.922057 ,-0.174183};
-static float N035[3] = {0.307998 ,-0.941371 ,-0.137688};
-static float N036[3] = {0.806316 ,-0.574647 ,-0.140124};
-static float N037[3] = {0.961346 ,0.233646 ,-0.145681};
-static float N038[3] = {0.488451 ,0.865586 ,-0.110351};
-static float N039[3] = {-0.374290 ,0.921953 ,-0.099553};
-static float N040[3] = {-0.928504 ,0.344533 ,-0.138485};
-static float N041[3] = {-0.918419 ,-0.371792 ,-0.135189};
-static float N042[3] = {-0.520666 ,-0.833704 ,-0.183968};
-static float N043[3] = {0.339204 ,-0.920273 ,-0.195036};
-static float N044[3] = {0.921475 ,-0.387382 ,-0.028636};
-static float N045[3] = {0.842465 ,0.533335 ,-0.076204};
-static float N046[3] = {0.380110 ,0.924939 ,0.002073};
-static float N047[3] = {-0.276128 ,0.961073 ,-0.009579};
-static float N048[3] = {-0.879684 ,0.473001 ,-0.049250};
-static float N049[3] = {-0.947184 ,-0.317614 ,-0.044321};
-static float N050[3] = {-0.642059 ,-0.764933 ,-0.051363};
-static float N051[3] = {0.466794 ,-0.880921 ,-0.077990};
-static float N052[3] = {0.898509 ,-0.432277 ,0.076279};
-static float N053[3] = {0.938985 ,0.328141 ,0.103109};
-static float N054[3] = {0.442420 ,0.895745 ,0.043647};
-static float N055[3] = {-0.255163 ,0.966723 ,0.018407};
-static float N056[3] = {-0.833769 ,0.540650 ,0.111924};
-static float N057[3] = {-0.953653 ,-0.289939 ,0.080507};
-static float N058[3] = {-0.672357 ,-0.730524 ,0.119461};
-static float N059[3] = {0.522249 ,-0.846652 ,0.102157};
-static float N060[3] = {0.885868 ,-0.427631 ,0.179914};
-#if 0
-static float N061[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N062[3] = {0.648942 ,0.743116 ,0.163255};
-static float N063[3] = {-0.578967 ,0.807730 ,0.111219};
-#if 0
-static float N064[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float N065[3] = {-0.909864 ,-0.352202 ,0.219321};
-static float N066[3] = {-0.502541 ,-0.818090 ,0.279610};
-static float N067[3] = {0.322919 ,-0.915358 ,0.240504};
-static float N068[3] = {0.242536 ,0.000000 ,-0.970143};
-static float N069[3] = {0.000000 ,1.000000 ,0.000000};
-static float N070[3] = {0.000000 ,1.000000 ,0.000000};
-static float N071[3] = {0.000000 ,1.000000 ,0.000000};
-static float N072[3] = {0.000000 ,1.000000 ,0.000000};
-static float N073[3] = {0.000000 ,1.000000 ,0.000000};
-static float N074[3] = {0.000000 ,1.000000 ,0.000000};
-static float N075[3] = {0.031220 ,0.999025 ,-0.031220};
-static float N076[3] = {0.000000 ,1.000000 ,0.000000};
-static float N077[3] = {0.446821 ,0.893642 ,0.041889};
-static float N078[3] = {0.863035 ,-0.100980 ,0.494949};
-static float N079[3] = {0.585597 ,-0.808215 ,0.062174};
-static float N080[3] = {0.000000 ,1.000000 ,0.000000};
-static float N081[3] = {1.000000 ,0.000000 ,0.000000};
-static float N082[3] = {0.000000 ,1.000000 ,0.000000};
-static float N083[3] = {-1.000000 ,0.000000 ,0.000000};
-static float N084[3] = {-0.478893 ,0.837129 ,-0.264343};
-static float N085[3] = {0.000000 ,1.000000 ,0.000000};
-static float N086[3] = {0.763909 ,0.539455 ,-0.354163};
-static float N087[3] = {0.446821 ,0.893642 ,0.041889};
-static float N088[3] = {0.385134 ,-0.908288 ,0.163352};
-static float N089[3] = {-0.605952 ,0.779253 ,-0.159961};
-static float N090[3] = {0.000000 ,1.000000 ,0.000000};
-static float N091[3] = {0.000000 ,1.000000 ,0.000000};
-static float N092[3] = {0.000000 ,1.000000 ,0.000000};
-static float N093[3] = {0.000000 ,1.000000 ,0.000000};
-static float N094[3] = {1.000000 ,0.000000 ,0.000000};
-static float N095[3] = {-1.000000 ,0.000000 ,0.000000};
-static float N096[3] = {0.644444 ,-0.621516 ,0.445433};
-static float N097[3] = {-0.760896 ,-0.474416 ,0.442681};
-static float N098[3] = {0.636888 ,-0.464314 ,0.615456};
-static float N099[3] = {-0.710295 ,0.647038 ,0.277168};
-static float N100[3] = {0.009604 ,0.993655 ,0.112063};
-#if 0
-static float N101[3] = {0.000000 ,1.000000 ,0.000000};
-static float N102[3] = {0.000000 ,1.000000 ,0.000000};
-static float N103[3] = {0.000000 ,1.000000 ,0.000000};
-static float N104[3] = {0.031837 ,0.999285 ,0.020415};
-static float N105[3] = {0.031837 ,0.999285 ,0.020415};
-static float N106[3] = {0.031837 ,0.999285 ,0.020415};
-static float N107[3] = {0.014647 ,0.999648 ,0.022115};
-static float N108[3] = {0.014647 ,0.999648 ,0.022115};
-static float N109[3] = {0.014647 ,0.999648 ,0.022115};
-static float N110[3] = {-0.985141 ,0.039475 ,0.167149};
-static float N111[3] = {-0.985141 ,0.039475 ,0.167149};
-static float N112[3] = {-0.985141 ,0.039475 ,0.167149};
-static float N113[3] = {0.000000 ,1.000000 ,0.000000};
-static float N114[3] = {0.000000 ,1.000000 ,0.000000};
-static float N115[3] = {0.000000 ,1.000000 ,0.000000};
-static float N116[3] = {0.000000 ,1.000000 ,0.000000};
-static float N117[3] = {0.000000 ,1.000000 ,0.000000};
-static float N118[3] = {0.000000 ,1.000000 ,0.000000};
-static float N119[3] = {0.000000 ,1.000000 ,0.000000};
-static float N120[3] = {0.000000 ,1.000000 ,0.000000};
-static float N121[3] = {0.000000 ,1.000000 ,0.000000};
-#endif
-static float iP001[3] = {18.74, 13.19, 3.76};
-static float P001[3] = {18.74, 13.19, 3.76};
-static float P002[3] = {0.00, 390.42, 10292.57};
-static float P003[3] = {55.80, 622.31, 8254.35};
-static float P004[3] = {20.80, 247.66, 10652.13};
-static float P005[3] = {487.51, 198.05, 9350.78};
-static float P006[3] = {-457.61, 199.04, 9353.01};
-#if 0
-static float P007[3] = {0.00, 259.00, 10276.27};
-#endif
-static float P008[3] = {-34.67, 247.64, 10663.71};
-static float iP009[3] = {97.46, 67.63, 593.82};
-static float iP010[3] = {-84.33, 67.63, 588.18};
-static float iP011[3] = {118.69, 8.98, -66.91};
-static float P009[3] = {97.46, 67.63, 593.82};
-static float P010[3] = {-84.33, 67.63, 588.18};
-static float P011[3] = {118.69, 8.98, -66.91};
-static float iP012[3] = {156.48, -31.95, 924.54};
-static float iP013[3] = {162.00, 110.22, 924.54};
-static float iP014[3] = {88.16, 221.65, 924.54};
-static float iP015[3] = {-65.21, 231.16, 924.54};
-static float iP016[3] = {-156.48, 121.97, 924.54};
-static float iP017[3] = {-162.00, -23.93, 924.54};
-static float iP018[3] = {-88.16, -139.10, 924.54};
-static float iP019[3] = {65.21, -148.61, 924.54};
-static float iP020[3] = {246.87, -98.73, 1783.04};
-static float iP021[3] = {253.17, 127.76, 1783.04};
-static float iP022[3] = {132.34, 270.77, 1783.04};
-static float iP023[3] = {-97.88, 285.04, 1783.04};
-static float iP024[3] = {-222.97, 139.80, 1783.04};
-static float iP025[3] = {-225.29, -86.68, 1783.04};
-static float iP026[3] = {-108.44, -224.15, 1783.04};
-static float iP027[3] = {97.88, -221.56, 1783.04};
-static float iP028[3] = {410.55, -200.66, 3213.87};
-static float iP029[3] = {432.19, 148.42, 3213.87};
-static float iP030[3] = {200.66, 410.55, 3213.87};
-static float iP031[3] = {-148.42, 432.19, 3213.87};
-static float iP032[3] = {-407.48, 171.88, 3213.87};
-static float iP033[3] = {-432.19, -148.42, 3213.87};
-static float iP034[3] = {-148.88, -309.74, 3213.87};
-static float iP035[3] = {156.38, -320.17, 3213.87};
-static float iP036[3] = {523.39, -303.81, 4424.57};
-static float iP037[3] = {574.66, 276.84, 4424.57};
-static float iP038[3] = {243.05, 492.50, 4424.57};
-static float iP039[3] = {-191.23, 520.13, 4424.57};
-static float iP040[3] = {-523.39, 304.01, 4424.57};
-static float iP041[3] = {-574.66, -231.83, 4424.57};
-static float iP042[3] = {-266.95, -578.17, 4424.57};
-static float iP043[3] = {211.14, -579.67, 4424.57};
-static float iP044[3] = {680.57, -370.27, 5943.46};
-static float iP045[3] = {834.01, 363.09, 5943.46};
-static float iP046[3] = {371.29, 614.13, 5943.46};
-static float iP047[3] = {-291.43, 621.86, 5943.46};
-static float iP048[3] = {-784.13, 362.60, 5943.46};
-static float iP049[3] = {-743.29, -325.82, 5943.46};
-static float iP050[3] = {-383.24, -804.77, 5943.46};
-static float iP051[3] = {283.47, -846.09, 5943.46};
-static float P012[3] = {156.48, -31.95, 924.54};
-static float P013[3] = {162.00, 110.22, 924.54};
-static float P014[3] = {88.16, 221.65, 924.54};
-static float P015[3] = {-65.21, 231.16, 924.54};
-static float P016[3] = {-156.48, 121.97, 924.54};
-static float P017[3] = {-162.00, -23.93, 924.54};
-static float P018[3] = {-88.16, -139.10, 924.54};
-static float P019[3] = {65.21, -148.61, 924.54};
-static float P020[3] = {246.87, -98.73, 1783.04};
-static float P021[3] = {253.17, 127.76, 1783.04};
-static float P022[3] = {132.34, 270.77, 1783.04};
-static float P023[3] = {-97.88, 285.04, 1783.04};
-static float P024[3] = {-222.97, 139.80, 1783.04};
-static float P025[3] = {-225.29, -86.68, 1783.04};
-static float P026[3] = {-108.44, -224.15, 1783.04};
-static float P027[3] = {97.88, -221.56, 1783.04};
-static float P028[3] = {410.55, -200.66, 3213.87};
-static float P029[3] = {432.19, 148.42, 3213.87};
-static float P030[3] = {200.66, 410.55, 3213.87};
-static float P031[3] = {-148.42, 432.19, 3213.87};
-static float P032[3] = {-407.48, 171.88, 3213.87};
-static float P033[3] = {-432.19, -148.42, 3213.87};
-static float P034[3] = {-148.88, -309.74, 3213.87};
-static float P035[3] = {156.38, -320.17, 3213.87};
-static float P036[3] = {523.39, -303.81, 4424.57};
-static float P037[3] = {574.66, 276.84, 4424.57};
-static float P038[3] = {243.05, 492.50, 4424.57};
-static float P039[3] = {-191.23, 520.13, 4424.57};
-static float P040[3] = {-523.39, 304.01, 4424.57};
-static float P041[3] = {-574.66, -231.83, 4424.57};
-static float P042[3] = {-266.95, -578.17, 4424.57};
-static float P043[3] = {211.14, -579.67, 4424.57};
-static float P044[3] = {680.57, -370.27, 5943.46};
-static float P045[3] = {834.01, 363.09, 5943.46};
-static float P046[3] = {371.29, 614.13, 5943.46};
-static float P047[3] = {-291.43, 621.86, 5943.46};
-static float P048[3] = {-784.13, 362.60, 5943.46};
-static float P049[3] = {-743.29, -325.82, 5943.46};
-static float P050[3] = {-383.24, -804.77, 5943.46};
-static float P051[3] = {283.47, -846.09, 5943.46};
-static float P052[3] = {599.09, -332.24, 7902.59};
-static float P053[3] = {735.48, 306.26, 7911.92};
-static float P054[3] = {321.55, 558.53, 7902.59};
-static float P055[3] = {-260.54, 559.84, 7902.59};
-static float P056[3] = {-698.66, 320.83, 7902.59};
-static float P057[3] = {-643.29, -299.16, 7902.59};
-static float P058[3] = {-341.47, -719.30, 7902.59};
-static float P059[3] = {252.57, -756.12, 7902.59};
-static float P060[3] = {458.39, -265.31, 9355.44};
-static float iP061[3] = {353.63, 138.70, 10214.20};
-static float P061[3] = {353.63, 138.70, 10214.20};
-static float P062[3] = {224.04, 438.98, 9364.77};
-static float P063[3] = {-165.71, 441.27, 9355.44};
-static float iP064[3] = {-326.40, 162.04, 10209.54};
-static float P064[3] = {-326.40, 162.04, 10209.54};
-static float P065[3] = {-473.99, -219.71, 9355.44};
-static float P066[3] = {-211.97, -479.87, 9355.44};
-static float P067[3] = {192.86, -504.03, 9355.44};
-static float iP068[3] = {-112.44, 9.25, -64.42};
-static float iP069[3] = {1155.63, 0.00, -182.46};
-static float iP070[3] = {-1143.13, 0.00, -181.54};
-static float iP071[3] = {1424.23, 0.00, -322.09};
-static float iP072[3] = {-1368.01, 0.00, -310.38};
-static float iP073[3] = {1255.57, 2.31, 114.05};
-static float iP074[3] = {-1149.38, 0.00, 117.12};
-static float iP075[3] = {718.36, 0.00, 433.36};
-static float iP076[3] = {-655.90, 0.00, 433.36};
-static float P068[3] = {-112.44, 9.25, -64.42};
-static float P069[3] = {1155.63, 0.00, -182.46};
-static float P070[3] = {-1143.13, 0.00, -181.54};
-static float P071[3] = {1424.23, 0.00, -322.09};
-static float P072[3] = {-1368.01, 0.00, -310.38};
-static float P073[3] = {1255.57, 2.31, 114.05};
-static float P074[3] = {-1149.38, 0.00, 117.12};
-static float P075[3] = {718.36, 0.00, 433.36};
-static float P076[3] = {-655.90, 0.00, 433.36};
-static float P077[3] = {1058.00, -2.66, 7923.51};
-static float P078[3] = {-1016.51, -15.47, 7902.87};
-static float P079[3] = {-1363.99, -484.50, 7593.38};
-static float P080[3] = {1478.09, -861.47, 7098.12};
-static float P081[3] = {1338.06, -284.68, 7024.15};
-static float P082[3] = {-1545.51, -860.64, 7106.60};
-static float P083[3] = {1063.19, -70.46, 7466.60};
-static float P084[3] = {-1369.18, -288.11, 7015.34};
-static float P085[3] = {1348.44, -482.50, 7591.41};
-static float P086[3] = {-1015.45, -96.80, 7474.86};
-static float P087[3] = {731.04, 148.38, 7682.58};
-static float P088[3] = {-697.03, 151.82, 7668.81};
-static float P089[3] = {-686.82, 157.09, 7922.29};
-static float P090[3] = {724.73, 147.75, 7931.39};
-static float iP091[3] = {0.00, 327.10, 2346.55};
-static float iP092[3] = {0.00, 552.28, 2311.31};
-static float iP093[3] = {0.00, 721.16, 2166.41};
-static float iP094[3] = {0.00, 693.42, 2388.80};
-static float iP095[3] = {0.00, 389.44, 2859.97};
-static float P091[3] = {0.00, 327.10, 2346.55};
-static float P092[3] = {0.00, 552.28, 2311.31};
-static float P093[3] = {0.00, 721.16, 2166.41};
-static float P094[3] = {0.00, 693.42, 2388.80};
-static float P095[3] = {0.00, 389.44, 2859.97};
-static float iP096[3] = {222.02, -183.67, 10266.89};
-static float iP097[3] = {-128.90, -182.70, 10266.89};
-static float iP098[3] = {41.04, 88.31, 10659.36};
-static float iP099[3] = {-48.73, 88.30, 10659.36};
-static float P096[3] = {222.02, -183.67, 10266.89};
-static float P097[3] = {-128.90, -182.70, 10266.89};
-static float P098[3] = {41.04, 88.31, 10659.36};
-static float P099[3] = {-48.73, 88.30, 10659.36};
-static float P100[3] = {0.00, 603.42, 9340.68};
-#if 0
-static float P101[3] = {5.70, 567.00, 7862.98};
-static float P102[3] = {521.61, 156.61, 9162.34};
-static float P103[3] = {83.68, 566.67, 7861.26};
-#endif
-static float P104[3] = {-9.86, 567.62, 7858.65};
-static float P105[3] = {31.96, 565.27, 7908.46};
-static float P106[3] = {22.75, 568.13, 7782.83};
-static float P107[3] = {58.93, 568.42, 7775.94};
-static float P108[3] = {55.91, 565.59, 7905.86};
-static float P109[3] = {99.21, 566.00, 7858.65};
-static float P110[3] = {-498.83, 148.14, 9135.10};
-static float P111[3] = {-495.46, 133.24, 9158.48};
-static float P112[3] = {-490.82, 146.23, 9182.76};
-static float P113[3] = {-489.55, 174.11, 9183.66};
-static float P114[3] = {-492.92, 189.00, 9160.28};
-static float P115[3] = {-497.56, 176.02, 9136.00};
-static float P116[3] = {526.54, 169.68, 9137.70};
-static float P117[3] = {523.49, 184.85, 9161.42};
-static float P118[3] = {518.56, 171.78, 9186.06};
-static float P119[3] = {516.68, 143.53, 9186.98};
-static float P120[3] = {519.73, 128.36, 9163.26};
-static float P121[3] = {524.66, 141.43, 9138.62};
-/* *INDENT-ON* */
-
-
-
-static void
-Whale001(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N068);
-       glVertex3fv(P068);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N068);
-       glVertex3fv(P068);
-       glNormal3fv(N076);
-       glVertex3fv(P076);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N068);
-       glVertex3fv(P068);
-       glNormal3fv(N070);
-       glVertex3fv(P070);
-       glNormal3fv(N076);
-       glVertex3fv(P076);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N076);
-       glVertex3fv(P076);
-       glNormal3fv(N070);
-       glVertex3fv(P070);
-       glNormal3fv(N074);
-       glVertex3fv(P074);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N070);
-       glVertex3fv(P070);
-       glNormal3fv(N072);
-       glVertex3fv(P072);
-       glNormal3fv(N074);
-       glVertex3fv(P074);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N072);
-       glVertex3fv(P072);
-       glNormal3fv(N070);
-       glVertex3fv(P070);
-       glNormal3fv(N074);
-       glVertex3fv(P074);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N074);
-       glVertex3fv(P074);
-       glNormal3fv(N070);
-       glVertex3fv(P070);
-       glNormal3fv(N076);
-       glVertex3fv(P076);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N070);
-       glVertex3fv(P070);
-       glNormal3fv(N068);
-       glVertex3fv(P068);
-       glNormal3fv(N076);
-       glVertex3fv(P076);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N076);
-       glVertex3fv(P076);
-       glNormal3fv(N068);
-       glVertex3fv(P068);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N068);
-       glVertex3fv(P068);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N010);
-       glVertex3fv(P010);
-       glEnd();
-}
-
-static void
-Whale002(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N075);
-       glVertex3fv(P075);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N075);
-       glVertex3fv(P075);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glNormal3fv(N075);
-       glVertex3fv(P075);
-       glNormal3fv(N073);
-       glVertex3fv(P073);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N071);
-       glVertex3fv(P071);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glNormal3fv(N073);
-       glVertex3fv(P073);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N009);
-       glVertex3fv(P009);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N075);
-       glVertex3fv(P075);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N011);
-       glVertex3fv(P011);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glNormal3fv(N075);
-       glVertex3fv(P075);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glNormal3fv(N073);
-       glVertex3fv(P073);
-       glNormal3fv(N075);
-       glVertex3fv(P075);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N069);
-       glVertex3fv(P069);
-       glNormal3fv(N071);
-       glVertex3fv(P071);
-       glNormal3fv(N073);
-       glVertex3fv(P073);
-       glEnd();
-}
-
-static void
-Whale003(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N001);
-       glVertex3fv(P001);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glEnd();
-}
-
-static void
-Whale004(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N015);
-       glVertex3fv(P015);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N016);
-       glVertex3fv(P016);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N017);
-       glVertex3fv(P017);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N014);
-       glVertex3fv(P014);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glNormal3fv(N013);
-       glVertex3fv(P013);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N018);
-       glVertex3fv(P018);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N019);
-       glVertex3fv(P019);
-       glNormal3fv(N012);
-       glVertex3fv(P012);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glEnd();
-}
-
-static void
-Whale005(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N022);
-       glVertex3fv(P022);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N023);
-       glVertex3fv(P023);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N024);
-       glVertex3fv(P024);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N021);
-       glVertex3fv(P021);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N020);
-       glVertex3fv(P020);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N025);
-       glVertex3fv(P025);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N026);
-       glVertex3fv(P026);
-       glNormal3fv(N027);
-       glVertex3fv(P027);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glEnd();
-}
-
-static void
-Whale006(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N092);
-       glVertex3fv(P092);
-       glNormal3fv(N093);
-       glVertex3fv(P093);
-       glNormal3fv(N094);
-       glVertex3fv(P094);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N093);
-       glVertex3fv(P093);
-       glNormal3fv(N092);
-       glVertex3fv(P092);
-       glNormal3fv(N094);
-       glVertex3fv(P094);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N092);
-       glVertex3fv(P092);
-       glNormal3fv(N091);
-       glVertex3fv(P091);
-       glNormal3fv(N095);
-       glVertex3fv(P095);
-       glNormal3fv(N094);
-       glVertex3fv(P094);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N091);
-       glVertex3fv(P091);
-       glNormal3fv(N092);
-       glVertex3fv(P092);
-       glNormal3fv(N094);
-       glVertex3fv(P094);
-       glNormal3fv(N095);
-       glVertex3fv(P095);
-       glEnd();
-}
-
-static void
-Whale007(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N030);
-       glVertex3fv(P030);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N029);
-       glVertex3fv(P029);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N028);
-       glVertex3fv(P028);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glNormal3fv(N035);
-       glVertex3fv(P035);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N034);
-       glVertex3fv(P034);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N031);
-       glVertex3fv(P031);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N032);
-       glVertex3fv(P032);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N033);
-       glVertex3fv(P033);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glEnd();
-}
-
-static void
-Whale008(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N043);
-       glVertex3fv(P043);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N042);
-       glVertex3fv(P042);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N036);
-       glVertex3fv(P036);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N041);
-       glVertex3fv(P041);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N040);
-       glVertex3fv(P040);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N037);
-       glVertex3fv(P037);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N038);
-       glVertex3fv(P038);
-       glNormal3fv(N039);
-       glVertex3fv(P039);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glEnd();
-}
-
-static void
-Whale009(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N051);
-       glVertex3fv(P051);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N044);
-       glVertex3fv(P044);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N050);
-       glVertex3fv(P050);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N049);
-       glVertex3fv(P049);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N048);
-       glVertex3fv(P048);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N045);
-       glVertex3fv(P045);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N046);
-       glVertex3fv(P046);
-       glNormal3fv(N047);
-       glVertex3fv(P047);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glEnd();
-}
-
-static void
-Whale010(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N080);
-       glVertex3fv(P080);
-       glNormal3fv(N081);
-       glVertex3fv(P081);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N081);
-       glVertex3fv(P081);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N087);
-       glVertex3fv(P087);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glNormal3fv(N087);
-       glVertex3fv(P087);
-       glNormal3fv(N090);
-       glVertex3fv(P090);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N081);
-       glVertex3fv(P081);
-       glNormal3fv(N080);
-       glVertex3fv(P080);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N081);
-       glVertex3fv(P081);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N085);
-       glVertex3fv(P085);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N087);
-       glVertex3fv(P087);
-       glNormal3fv(N083);
-       glVertex3fv(P083);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N087);
-       glVertex3fv(P087);
-       glNormal3fv(N077);
-       glVertex3fv(P077);
-       glNormal3fv(N090);
-       glVertex3fv(P090);
-       glEnd();
-}
-
-static void
-Whale011(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N082);
-       glVertex3fv(P082);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N088);
-       glVertex3fv(P088);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glNormal3fv(N088);
-       glVertex3fv(P088);
-       glNormal3fv(N089);
-       glVertex3fv(P089);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N088);
-       glVertex3fv(P088);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N089);
-       glVertex3fv(P089);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N089);
-       glVertex3fv(P089);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N086);
-       glVertex3fv(P086);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N078);
-       glVertex3fv(P078);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N084);
-       glVertex3fv(P084);
-       glNormal3fv(N082);
-       glVertex3fv(P082);
-       glNormal3fv(N079);
-       glVertex3fv(P079);
-       glEnd();
-}
-
-static void
-Whale012(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N059);
-       glVertex3fv(P059);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N058);
-       glVertex3fv(P058);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N057);
-       glVertex3fv(P057);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N056);
-       glVertex3fv(P056);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N053);
-       glVertex3fv(P053);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N052);
-       glVertex3fv(P052);
-       glEnd();
-}
-
-static void
-Whale013(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glNormal3fv(N096);
-       glVertex3fv(P096);
-       glNormal3fv(N097);
-       glVertex3fv(P097);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N097);
-       glVertex3fv(P097);
-       glNormal3fv(N096);
-       glVertex3fv(P096);
-       glNormal3fv(N098);
-       glVertex3fv(P098);
-       glNormal3fv(N099);
-       glVertex3fv(P099);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N066);
-       glVertex3fv(P066);
-       glNormal3fv(N097);
-       glVertex3fv(P097);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N067);
-       glVertex3fv(P067);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N096);
-       glVertex3fv(P096);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N060);
-       glVertex3fv(P060);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N096);
-       glVertex3fv(P096);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N096);
-       glVertex3fv(P096);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glNormal3fv(N098);
-       glVertex3fv(P098);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N065);
-       glVertex3fv(P065);
-       glNormal3fv(N097);
-       glVertex3fv(P097);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N097);
-       glVertex3fv(P097);
-       glNormal3fv(N099);
-       glVertex3fv(P099);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P005);
-       glVertex3fv(P006);
-       glVertex3fv(P099);
-       glVertex3fv(P098);
-       glEnd();
-}
-
-static void
-Whale014(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N004);
-       glVertex3fv(P004);
-       glNormal3fv(N005);
-       glVertex3fv(P005);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P006);
-       glVertex3fv(P005);
-       glVertex3fv(P004);
-       glVertex3fv(P008);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N006);
-       glVertex3fv(P006);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N008);
-       glVertex3fv(P008);
-       glNormal3fv(N004);
-       glVertex3fv(P004);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N004);
-       glVertex3fv(P004);
-       glEnd();
-}
-
-static void
-Whale015(GLenum cap)
-{
-       glBegin(cap);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N055);
-       glVertex3fv(P055);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N003);
-       glVertex3fv(P003);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N054);
-       glVertex3fv(P054);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N063);
-       glVertex3fv(P063);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glEnd();
-       glBegin(cap);
-       glNormal3fv(N100);
-       glVertex3fv(P100);
-       glNormal3fv(N002);
-       glVertex3fv(P002);
-       glNormal3fv(N062);
-       glVertex3fv(P062);
-       glEnd();
-}
-
-static void
-Whale016(GLenum cap)
-{
-       glBegin(cap);
-       glVertex3fv(P104);
-       glVertex3fv(P105);
-       glVertex3fv(P106);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P107);
-       glVertex3fv(P108);
-       glVertex3fv(P109);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P110);
-       glVertex3fv(P111);
-       glVertex3fv(P112);
-       glVertex3fv(P113);
-       glVertex3fv(P114);
-       glVertex3fv(P115);
-       glEnd();
-       glBegin(cap);
-       glVertex3fv(P116);
-       glVertex3fv(P117);
-       glVertex3fv(P118);
-       glVertex3fv(P119);
-       glVertex3fv(P120);
-       glVertex3fv(P121);
-       glEnd();
-}
-
-void
-DrawWhale(fishRec * fish, int wire)
-{
-       float       seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
-       float       pitch, thrash, chomp;
-       GLenum      cap;
-
-       fish->htail = (int) (fish->htail - (int) (5.0 * fish->v)) % 360;
-
-       thrash = 70.0 * fish->v;
-
-       seg0 = 1.5 * thrash * sin((fish->htail) * RRAD);
-       seg1 = 2.5 * thrash * sin((fish->htail + 10.0) * RRAD);
-       seg2 = 3.7 * thrash * sin((fish->htail + 15.0) * RRAD);
-       seg3 = 4.8 * thrash * sin((fish->htail + 23.0) * RRAD);
-       seg4 = 6.0 * thrash * sin((fish->htail + 28.0) * RRAD);
-       seg5 = 6.5 * thrash * sin((fish->htail + 35.0) * RRAD);
-       seg6 = 6.5 * thrash * sin((fish->htail + 40.0) * RRAD);
-       seg7 = 6.5 * thrash * sin((fish->htail + 55.0) * RRAD);
-
-       pitch = fish->v * sin((fish->htail - 160.0) * RRAD);
-
-       chomp = 0.0;
-       if (fish->v > 2.0) {
-               chomp = -(fish->v - 2.0) * 200.0;
-       }
-       P012[1] = iP012[1] + seg5;
-       P013[1] = iP013[1] + seg5;
-       P014[1] = iP014[1] + seg5;
-       P015[1] = iP015[1] + seg5;
-       P016[1] = iP016[1] + seg5;
-       P017[1] = iP017[1] + seg5;
-       P018[1] = iP018[1] + seg5;
-       P019[1] = iP019[1] + seg5;
-
-       P020[1] = iP020[1] + seg4;
-       P021[1] = iP021[1] + seg4;
-       P022[1] = iP022[1] + seg4;
-       P023[1] = iP023[1] + seg4;
-       P024[1] = iP024[1] + seg4;
-       P025[1] = iP025[1] + seg4;
-       P026[1] = iP026[1] + seg4;
-       P027[1] = iP027[1] + seg4;
-
-       P028[1] = iP028[1] + seg2;
-       P029[1] = iP029[1] + seg2;
-       P030[1] = iP030[1] + seg2;
-       P031[1] = iP031[1] + seg2;
-       P032[1] = iP032[1] + seg2;
-       P033[1] = iP033[1] + seg2;
-       P034[1] = iP034[1] + seg2;
-       P035[1] = iP035[1] + seg2;
-
-       P036[1] = iP036[1] + seg1;
-       P037[1] = iP037[1] + seg1;
-       P038[1] = iP038[1] + seg1;
-       P039[1] = iP039[1] + seg1;
-       P040[1] = iP040[1] + seg1;
-       P041[1] = iP041[1] + seg1;
-       P042[1] = iP042[1] + seg1;
-       P043[1] = iP043[1] + seg1;
-
-       P044[1] = iP044[1] + seg0;
-       P045[1] = iP045[1] + seg0;
-       P046[1] = iP046[1] + seg0;
-       P047[1] = iP047[1] + seg0;
-       P048[1] = iP048[1] + seg0;
-       P049[1] = iP049[1] + seg0;
-       P050[1] = iP050[1] + seg0;
-       P051[1] = iP051[1] + seg0;
-
-       P009[1] = iP009[1] + seg6;
-       P010[1] = iP010[1] + seg6;
-       P075[1] = iP075[1] + seg6;
-       P076[1] = iP076[1] + seg6;
-
-       P001[1] = iP001[1] + seg7;
-       P011[1] = iP011[1] + seg7;
-       P068[1] = iP068[1] + seg7;
-       P069[1] = iP069[1] + seg7;
-       P070[1] = iP070[1] + seg7;
-       P071[1] = iP071[1] + seg7;
-       P072[1] = iP072[1] + seg7;
-       P073[1] = iP073[1] + seg7;
-       P074[1] = iP074[1] + seg7;
-
-       P091[1] = iP091[1] + seg3 * 1.1;
-       P092[1] = iP092[1] + seg3;
-       P093[1] = iP093[1] + seg3;
-       P094[1] = iP094[1] + seg3;
-       P095[1] = iP095[1] + seg3 * 0.9;
-
-       P099[1] = iP099[1] + chomp;
-       P098[1] = iP098[1] + chomp;
-       P064[1] = iP064[1] + chomp;
-       P061[1] = iP061[1] + chomp;
-       P097[1] = iP097[1] + chomp;
-       P096[1] = iP096[1] + chomp;
-
-       glPushMatrix();
-
-       glRotatef(pitch, 1.0, 0.0, 0.0);
-
-       glTranslatef(0.0, 0.0, 8000.0);
-
-       glRotatef(180.0, 0.0, 1.0, 0.0);
-
-       glScalef(3.0, 3.0, 3.0);
-
-       glEnable(GL_CULL_FACE);
-
-       cap = wire ? GL_LINE_LOOP : GL_POLYGON;
-       Whale001(cap);
-       Whale002(cap);
-       Whale003(cap);
-       Whale004(cap);
-       Whale005(cap);
-       Whale006(cap);
-       Whale007(cap);
-       Whale008(cap);
-       Whale009(cap);
-       Whale010(cap);
-       Whale011(cap);
-       Whale012(cap);
-       Whale013(cap);
-       Whale014(cap);
-       Whale015(cap);
-       Whale016(cap);
-
-       glDisable(GL_CULL_FACE);
-
-       glPopMatrix();
-}
-#endif
diff --git a/hacks/glx/xlock-gl.c b/hacks/glx/xlock-gl.c
deleted file mode 100644 (file)
index 0256cf0..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/* xlock-gl.c --- xscreensaver compatibility layer for xlockmore GL modules.
- * xscreensaver, Copyright (c) 1997, 1998, 1999 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 file, along with xlockmore.h, make it possible to compile an xlockmore
- * GL module into a standalone program, and thus use it with xscreensaver.
- * By Jamie Zawinski <jwz@jwz.org> on 31-May-97.
- */
-
-#include <stdio.h>
-#include "screenhack.h"
-#include "xlockmoreI.h"
-
-#include <GL/gl.h>
-#include <GL/glx.h>
-
-/* Gag -- we use this to turn X errors from glXCreateContext() into
-   something that will actually make sense to the user.
- */
-static XErrorHandler orig_ehandler = 0;
-static Bool got_error = 0;
-
-static int
-BadValue_ehandler (Display *dpy, XErrorEvent *error)
-{
-  if (error->error_code == BadValue)
-    {
-      got_error = True;
-      return 0;
-    }
-  else
-    return orig_ehandler (dpy, error);
-}
-
-
-GLXContext *
-init_GL(ModeInfo * mi)
-{
-  Display *dpy = mi->dpy;
-  Window window = mi->window;
-  Screen *screen = mi->xgwa.screen;
-  Visual *visual = mi->xgwa.visual;
-  GLXContext glx_context = 0;
-  XVisualInfo vi_in, *vi_out;
-  int out_count;
-
-  vi_in.screen = screen_number (screen);
-  vi_in.visualid = XVisualIDFromVisual (visual);
-  vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
-                          &vi_in, &out_count);
-  if (! vi_out) abort ();
-
-  {
-    XSync (dpy, False);
-    orig_ehandler = XSetErrorHandler (BadValue_ehandler);
-    glx_context = glXCreateContext (dpy, vi_out, 0, GL_TRUE);
-    XSync (dpy, False);
-    XSetErrorHandler (orig_ehandler);
-    if (got_error)
-      glx_context = 0;
-  }
-
-  XFree((char *) vi_out);
-
-  if (!glx_context)
-    {
-      fprintf(stderr, "%s: couldn't create GL context for visual 0x%x.\n",
-             progname, (unsigned int) XVisualIDFromVisual (visual));
-      exit(1);
-    }
-
-  glXMakeCurrent (dpy, window, glx_context);
-
-  {
-    GLboolean rgba_mode = 0;
-    glGetBooleanv(GL_RGBA_MODE, &rgba_mode);
-    if (!rgba_mode)
-      {
-       glIndexi (WhitePixelOfScreen (screen));
-       glClearIndex (BlackPixelOfScreen (screen));
-      }
-  }
-
-  /* GLXContext is already a pointer type.
-     Why this function returns a pointer to a pointer, I have no idea...
-   */
-  {
-    GLXContext *ptr = (GLXContext *) malloc(sizeof(GLXContext));
-    *ptr = glx_context;
-    return ptr;
-  }
-}
diff --git a/hacks/glx/xpm-ximage.c b/hacks/glx/xpm-ximage.c
deleted file mode 100644 (file)
index ded8bbb..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/* xpm-ximage.c --- converts XPM data to an XImage for use with OpenGL.
- * xscreensaver, Copyright (c) 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <X11/Intrinsic.h>
-
-extern char *progname;
-
-#ifdef HAVE_XPM                /* whole file */
-
-#include <X11/Xutil.h>
-#include <X11/xpm.h>
-
-static Bool
-bigendian (void)
-{
-  union { int i; char c[sizeof(int)]; } u;
-  u.i = 1;
-  return !u.c[0];
-}
-
-
-/* Returns an XImage structure containing the bits of the given XPM image.
-   This XImage will be 32 bits per pixel, 8 each per R, G, and B, with the
-   extra byte set to 0xFF.
-
-   The Display and Visual arguments are used only for creating the XImage;
-   no bits are pushed to the server.
-
-   The Colormap argument is used just for parsing color names; no colors
-   are allocated.
- */
-XImage *
-xpm_to_ximage (Display *dpy, Visual *visual, Colormap cmap, char **xpm_data)
-{
-  /* All we want to do is get RGB data out of the XPM file built in to this
-     program.  This is a pain, because there is no way  (as of XPM version
-     4.6, at least) to get libXpm to make an XImage without also allocating
-     colors with XAllocColor.  So, instead, we create an XpmImage and parse
-     out the RGB values of the pixels ourselves; and construct an XImage
-     by hand.  Regardless of the depth of the visual we're using, this
-     XImage will have 32 bits per pixel, 8 each per R, G, and B.  We put
-     0xFF in the fourth slot, as GL will interpret that as "alpha".
-   */
-  XImage *ximage = 0;
-  XpmImage xpm_image;
-  XpmInfo xpm_info;
-  int result;
-  int x, y, i;
-  int bpl, wpl;
-  XColor colors[255];
-
-  memset (&xpm_image, 0, sizeof(xpm_image));
-  memset (&xpm_info, 0, sizeof(xpm_info));
-  result = XpmCreateXpmImageFromData (xpm_data, &xpm_image, &xpm_info);
-  if (result != XpmSuccess)
-    {
-      fprintf(stderr, "%s: unable to parse xpm data (%d).\n", progname,
-             result);
-      exit (1);
-    }
-
-  ximage = XCreateImage (dpy, visual, 32, ZPixmap, 0, 0,
-                        xpm_image.width, xpm_image.height, 32, 0);
-
-  bpl = ximage->bytes_per_line;
-  wpl = bpl/4;
-
-  ximage->data = (char *) malloc(xpm_image.height * bpl);
-
-  /* Parse the colors in the XPM into RGB values. */
-  for (i = 0; i < xpm_image.ncolors; i++)
-    if (!XParseColor(dpy, cmap, xpm_image.colorTable[i].c_color, &colors[i]))
-      {
-       fprintf(stderr, "%s: unparsable color: %s\n", progname,
-               xpm_image.colorTable[i].c_color);
-       exit(1);
-      }
-
-  /* Translate the XpmImage to an RGB XImage. */
-  {
-    int rpos, gpos, bpos, apos;  /* bitfield positions */
-
-    /* Note that unlike X, which is endianness-agnostic (since any XImage
-       can have its own specific bit ordering, with the server reversing
-       things as necessary) OpenGL pretends everything is client-side, so
-       we need to pack things in the right order for the client machine.
-     */
-    if (bigendian())
-      rpos = 24, gpos = 16, bpos =  8, apos =  0;
-    else
-      rpos =  0, gpos =  8, bpos = 16, apos = 24;
-
-    for (y = 0; y < xpm_image.height; y++)
-      {
-       int y2 = (xpm_image.height-1-y); /* Texture maps are upside down. */
-
-       unsigned int *oline = (unsigned int *) (ximage->data   + (y  * bpl));
-       unsigned int *iline = (unsigned int *) (xpm_image.data + (y2 * wpl));
-
-       for (x = 0; x < xpm_image.width; x++)
-         {
-           XColor *c = &colors[iline[x]];
-           /* pack it as RGBA */
-           oline[x] = (((c->red   >> 8) << rpos) |
-                       ((c->green >> 8) << gpos) |
-                       ((c->blue  >> 8) << bpos) |
-                       (0xFF            << apos));
-         }
-      }
-  }
-
-  /* I sure hope these only free the contents, and not the args. */
-#if 0  /* Apparently not?  Gotta love those well-documented APIs! */
-  XpmFreeXpmImage (&xpm_image);
-  XpmFreeXpmInfo (&xpm_info);
-#endif
-
-  return ximage;
-}
-
-
-#else  /* !HAVE_XPM */
-
-XImage *
-xpm_to_ximage (char **xpm_data)
-{
-  fprintf(stderr, "%s: not compiled with XPM support.\n", progname);
-  exit (1);
-}
-
-#endif /* !HAVE_XPM */
diff --git a/hacks/glx/xpm-ximage.h b/hacks/glx/xpm-ximage.h
deleted file mode 100644 (file)
index cfe6e0d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* xpm-ximage.h --- converts XPM data to an XImage for use with OpenGL.
- * xscreensaver, Copyright (c) 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.
- */
-
-#ifndef _XPM_TEXTURE_H_
-#define _XPM_TEXTURE_H_
-
-/* Returns an XImage structure containing the bits of the given XPM image.
-   This XImage will be 32 bits per pixel, 8 each per R, G, and B, with the
-   extra byte set to 0xFF.
-
-   The Display and Visual arguments are used only for creating the XImage;
-   no bits are pushed to the server.
-
-   The Colormap argument is used just for parsing color names; no colors
-   are allocated.
- */
-extern XImage *xpm_to_ximage (Display *, Visual *, Colormap, char **xpm_data);
-
-#endif /* _XPM_TEXTURE_H_ */
diff --git a/hacks/goop.c b/hacks/goop.c
deleted file mode 100644 (file)
index ef0e8e6..0000000
+++ /dev/null
@@ -1,535 +0,0 @@
-/* xscreensaver, Copyright (c) 1997 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 <math.h>
-#include "screenhack.h"
-#include "spline.h"
-#include "alpha.h"
-
-
-/* This is pretty compute-intensive, probably due to the large number of
-   polygon fills.  I tried introducing a scaling factor to make the spline
-   code emit fewer line segments, but that made the edges very rough.
-   However, tuning *maxVelocity, *elasticity and *delay can result in much
-   smoother looking animation.  I tuned these for a 1280x1024 Indy display,
-   but I don't know whether these values will be reasonable for a slower
-   machine...
-
-   The more planes the better -- SGIs have a 12-bit pseudocolor display
-   (4096 colormap cells) which is mostly useless, except for this program,
-   where it means you can have 11 or 12 mutually-transparent objects instead
-   of only 7 or 8.  But, if you are using the 12-bit visual, you should crank
-   down the velocity and elasticity, or server slowness will cause the
-   animation to look jerky (yes, it's sad but true, SGI's X server is
-   perceptibly slower when using plane masks on a 12-bit visual than on an
-   8-bit visual.)  Using -max-velocity 0.5 -elasticity 0.9 seems to work ok
-   on my Indy R5k with visual 0x27 and the bottom-of-the-line 24-bit graphics
-   board.
-
-   It might look better if each blob had an outline, which was a *slightly*
-   darker color than the center, to give them a bit more definition -- but
-   that would mean using two planes per blob.  (Or maybe allocating the
-   outline colors outside of the plane-space?  Then the outlines wouldn't be
-   transparent, but maybe that wouldn't be so noticeable?)
-
-   Oh, for an alpha channel... maybe I should rewrite this in GL.  Then the
-   blobs could have thickness, and curved edges with specular reflections...
- */
-
-
-#define SCALE       10000  /* fixed-point math, for sub-pixel motion */
-#define DEF_COUNT   12    /* When planes and count are 0, how many blobs. */
-
-
-#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n))))
-#define RANDSIGN() ((random() & 1) ? 1 : -1)
-
-struct blob {
-  long x, y;           /* position of midpoint */
-  long dx, dy;         /* velocity and direction */
-  double torque;       /* rotational speed */
-  double th;           /* angle of rotation */
-  long elasticity;     /* how fast they deform */
-  long max_velocity;   /* speed limit */
-  long min_r, max_r;   /* radius range */
-  int npoints;         /* control points */
-  long *r;             /* radii */
-  spline *spline;
-};
-
-struct layer {
-  int nblobs;
-  struct blob **blobs;
-  Pixmap pixmap;
-  unsigned long pixel;
-  GC gc;
-};
-
-enum goop_mode {
-  transparent,
-  opaque,
-  xor,
-  outline
-};
-
-struct goop {
-  enum goop_mode mode;
-  int width, height;
-  int nlayers;
-  struct layer **layers;
-  unsigned long background;
-  Pixmap pixmap;
-  GC pixmap_gc;
-  GC window_gc;
-};
-
-
-static struct blob *
-make_blob (int maxx, int maxy, int size)
-{
-  struct blob *b = (struct blob *) calloc(1, sizeof(*b));
-  int i;
-  int mid;
-
-  maxx *= SCALE;
-  maxy *= SCALE;
-  size *= SCALE;
-
-  b->max_r = size/2;
-  b->min_r = size/10;
-
-  if (b->min_r < (5*SCALE)) b->min_r = (5*SCALE);
-  mid = ((b->min_r + b->max_r) / 2);
-
-  b->torque       = get_float_resource ("torque", "Torque");
-  b->elasticity   = SCALE * get_float_resource ("elasticity", "Elasticity");
-  b->max_velocity = SCALE * get_float_resource ("maxVelocity", "MaxVelocity");
-
-  b->x = RAND(maxx);
-  b->y = RAND(maxy);
-
-  b->dx = RAND(b->max_velocity) * RANDSIGN();
-  b->dy = RAND(b->max_velocity) * RANDSIGN();
-  b->th = frand(M_PI+M_PI) * RANDSIGN();
-  b->npoints = (random() % 5) + 5;
-
-  b->spline = make_spline (b->npoints);
-  b->r = (long *) malloc (sizeof(*b->r) * b->npoints);
-  for (i = 0; i < b->npoints; i++)
-    b->r[i] = ((random() % mid) + (mid/2)) * RANDSIGN();
-  return b;
-}
-
-static void 
-throb_blob (struct blob *b)
-{
-  int i;
-  double frac = ((M_PI+M_PI) / b->npoints);
-
-  for (i = 0; i < b->npoints; i++)
-    {
-      long r = b->r[i];
-      long ra = (r > 0 ? r : -r);
-      double th = (b->th > 0 ? b->th : -b->th);
-      long x, y;
-
-      /* place control points evenly around perimiter, shifted by theta */
-      x = b->x + ra * cos (i * frac + th);
-      y = b->y + ra * sin (i * frac + th);
-
-      b->spline->control_x[i] = x / SCALE;
-      b->spline->control_y[i] = y / SCALE;
-
-      /* alter the radius by a random amount, in the direction in which
-        it had been going (the sign of the radius indicates direction.) */
-      ra += (RAND(b->elasticity) * (r > 0 ? 1 : -1));
-      r = ra * (r >= 0 ? 1 : -1);
-
-      /* If we've reached the end (too long or too short) reverse direction. */
-      if ((ra > b->max_r && r >= 0) ||
-         (ra < b->min_r && r < 0))
-       r = -r;
-      /* And reverse direction in mid-course once every 50 times. */
-      else if (! (random() % 50))
-       r = -r;
-
-      b->r[i] = r;
-    }
-}
-
-static void
-move_blob (struct blob *b, int maxx, int maxy)
-{
-  maxx *= SCALE;
-  maxy *= SCALE;
-
-  b->x += b->dx;
-  b->y += b->dy;
-
-  /* If we've reached the edge of the box, reverse direction. */
-  if ((b->x > maxx && b->dx >= 0) ||
-      (b->x < 0    && b->dx < 0))
-    {
-      b->dx = -b->dx;
-    }
-  if ((b->y > maxy && b->dy >= 0) ||
-      (b->y < 0    && b->dy < 0))
-    {
-      b->dy = -b->dy;
-    }
-
-  /* Alter velocity randomly. */
-  if (! (random() % 10))
-    {
-      b->dx += (RAND(b->max_velocity/2) * RANDSIGN());
-      b->dy += (RAND(b->max_velocity/2) * RANDSIGN());
-
-      /* Throttle velocity */
-      if (b->dx > b->max_velocity || b->dx < -b->max_velocity)
-       b->dx /= 2;
-      if (b->dy > b->max_velocity || b->dy < -b->max_velocity)
-       b->dy /= 2;
-    }
-
-  {
-    double th = b->th;
-    double d = (b->torque == 0 ? 0 : frand(b->torque));
-    if (th < 0)
-      th = -(th + d);
-    else
-      th += d;
-
-    if (th > (M_PI+M_PI))
-      th -= (M_PI+M_PI);
-    else if (th < 0)
-      th += (M_PI+M_PI);
-
-    b->th = (b->th > 0 ? th : -th);
-  }
-
-  /* Alter direction of rotation randomly. */
-  if (! (random() % 100))
-    b->th *= -1;
-}
-
-static void
-draw_blob (Display *dpy, Drawable drawable, GC gc, struct blob *b,
-          Bool fill_p)
-{
-  compute_closed_spline (b->spline);
-#ifdef DEBUG
-  {
-    int i;
-    for (i = 0; i < b->npoints; i++)
-      XDrawLine (dpy, drawable, gc, b->x/SCALE, b->y/SCALE,
-                b->spline->control_x[i], b->spline->control_y[i]);
-  }
-#else
-  if (fill_p)
-    XFillPolygon (dpy, drawable, gc, b->spline->points, b->spline->n_points,
-                 Nonconvex, CoordModeOrigin);
-  else
-#endif
-    XDrawLines (dpy, drawable, gc, b->spline->points, b->spline->n_points,
-               CoordModeOrigin);
-}
-
-
-static struct layer *
-make_layer (Display *dpy, Window window, int width, int height, int nblobs)
-{
-  int i;
-  struct layer *layer = (struct layer *) calloc(1, sizeof(*layer));
-  int blob_min, blob_max;
-  XGCValues gcv;
-  layer->nblobs = nblobs;
-
-  layer->blobs = (struct blob **) malloc(sizeof(*layer->blobs)*layer->nblobs);
-
-  blob_max = (width < height ? width : height) / 2;
-  blob_min = (blob_max * 2) / 3;
-  for (i = 0; i < layer->nblobs; i++)
-    layer->blobs[i] = make_blob (width, height,
-                                (random() % (blob_max-blob_min)) + blob_min);
-
-  layer->pixmap = XCreatePixmap (dpy, window, width, height, 1);
-  layer->gc = XCreateGC (dpy, layer->pixmap, 0, &gcv);
-
-  return layer;
-}
-
-static void
-draw_layer_plane (Display *dpy, struct layer *layer, int width, int height)
-{
-  int i;
-  XSetForeground (dpy, layer->gc, 1L);
-  XFillRectangle (dpy, layer->pixmap, layer->gc, 0, 0, width, height);
-  XSetForeground (dpy, layer->gc, 0L);
-  for (i = 0; i < layer->nblobs; i++)
-    {
-      throb_blob (layer->blobs[i]);
-      move_blob (layer->blobs[i], width, height);
-      draw_blob (dpy, layer->pixmap, layer->gc, layer->blobs[i], True);
-    }
-}
-
-
-static void
-draw_layer_blobs (Display *dpy, Drawable drawable, GC gc,
-                 struct layer *layer, int width, int height,
-                 Bool fill_p)
-{
-  int i;
-  for (i = 0; i < layer->nblobs; i++)
-    {
-      throb_blob (layer->blobs[i]);
-      move_blob (layer->blobs[i], width, height);
-      draw_blob (dpy, drawable, gc, layer->blobs[i], fill_p);
-    }
-}
-
-
-static struct goop *
-make_goop (Display *dpy, Window window, Colormap cmap,
-          int width, int height, long depth)
-{
-  int i;
-  struct goop *goop = (struct goop *) calloc(1, sizeof(*goop));
-  XGCValues gcv;
-  int nblobs = get_integer_resource ("count", "Count");
-
-  unsigned long *plane_masks = 0;
-  unsigned long base_pixel = 0;
-
-  goop->mode = (get_boolean_resource("xor", "Xor")
-               ? xor
-               : (get_boolean_resource("transparent", "Transparent")
-                  ? transparent
-                  : opaque));
-
-  goop->width = width;
-  goop->height = height;
-
-
-  goop->nlayers = get_integer_resource ("planes", "Planes");
-  if (goop->nlayers <= 0)
-    goop->nlayers = (random() % (depth-2)) + 2;
-  goop->layers = (struct layer **) malloc(sizeof(*goop->layers)*goop->nlayers);
-
-
-  if (mono_p && goop->mode == transparent)
-    goop->mode = opaque;
-
-  /* Try to allocate some color planes before committing to nlayers.
-   */
-  if (goop->mode == transparent)
-    {
-      Bool additive_p = get_boolean_resource ("additive", "Additive");
-      int nplanes = goop->nlayers;
-      allocate_alpha_colors (dpy, cmap, &nplanes, additive_p, &plane_masks,
-                            &base_pixel);
-      if (nplanes > 1)
-       goop->nlayers = nplanes;
-      else
-       {
-         fprintf (stderr,
-         "%s: couldn't allocate any color planes; turning transparency off.\n",
-                  progname);
-         goop->mode = opaque;
-       }
-    }
-
-  {
-    int lblobs[32];
-    int total = DEF_COUNT;
-    memset (lblobs, 0, sizeof(lblobs));
-    if (nblobs <= 0)
-      while (total)
-       for (i = 0; total && i < goop->nlayers; i++)
-         lblobs[i]++, total--;
-    for (i = 0; i < goop->nlayers; i++)
-      goop->layers[i] = make_layer (dpy, window, width, height, 
-                                   (nblobs > 0 ? nblobs : lblobs[i]));
-  }
-
-  if (goop->mode == transparent && plane_masks)
-    {
-      for (i = 0; i < goop->nlayers; i++)
-       goop->layers[i]->pixel = base_pixel | plane_masks[i];
-      goop->background = base_pixel;
-    }
-  if (plane_masks)
-    free (plane_masks);
-
-  if (goop->mode != transparent)
-    {
-      XColor color;
-      color.flags = DoRed|DoGreen|DoBlue;
-
-      goop->background =
-       get_pixel_resource ("background", "Background", dpy,cmap);
-
-      for (i = 0; i < goop->nlayers; i++)
-       {
-         int H = random() % 360;                          /* range 0-360    */
-         double S = ((double) (random()%70) + 30)/100.0;  /* range 30%-100% */
-         double V = ((double) (random()%34) + 66)/100.0;  /* range 66%-100% */
-         hsv_to_rgb (H, S, V, &color.red, &color.green, &color.blue);
-         if (XAllocColor (dpy, cmap, &color))
-           goop->layers[i]->pixel = color.pixel;
-         else
-           goop->layers[i]->pixel =
-             WhitePixelOfScreen(DefaultScreenOfDisplay(dpy));
-       }
-    }
-
-  goop->pixmap = XCreatePixmap (dpy, window, width, height,
-                               (goop->mode == xor ? 1L : depth));
-
-  gcv.background = goop->background;
-  gcv.foreground = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  gcv.line_width = get_integer_resource ("thickness","Thickness");
-  goop->pixmap_gc = XCreateGC (dpy, goop->pixmap, GCLineWidth, &gcv);
-  goop->window_gc = XCreateGC (dpy, window, GCForeground|GCBackground, &gcv);
-
-  return goop;
-}
-
-static struct goop *
-init_goop (Display *dpy, Window window)
-{
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  return make_goop (dpy, window, xgwa.colormap,
-                   xgwa.width, xgwa.height, xgwa.depth);
-}
-
-static void
-run_goop (Display *dpy, Window window, struct goop *goop)
-{
-  int i;
-
-  switch (goop->mode)
-    {
-    case transparent:
-
-      for (i = 0; i < goop->nlayers; i++)
-       draw_layer_plane (dpy, goop->layers[i], goop->width, goop->height);
-
-      XSetForeground (dpy, goop->pixmap_gc, goop->background);
-      XSetPlaneMask (dpy, goop->pixmap_gc, AllPlanes);
-      XFillRectangle (dpy, goop->pixmap, goop->pixmap_gc, 0, 0,
-                     goop->width, goop->height);
-      XSetForeground (dpy, goop->pixmap_gc, ~0L);
-      for (i = 0; i < goop->nlayers; i++)
-       {
-         XSetPlaneMask (dpy, goop->pixmap_gc, goop->layers[i]->pixel);
-/*
-         XSetForeground (dpy, goop->pixmap_gc, ~0L);
-         XFillRectangle (dpy, goop->pixmap, goop->pixmap_gc, 0, 0,
-                         goop->width, goop->height);
-         XSetForeground (dpy, goop->pixmap_gc, 0L);
- */
-         draw_layer_blobs (dpy, goop->pixmap, goop->pixmap_gc,
-                           goop->layers[i], goop->width, goop->height,
-                           True);
-       }
-      XCopyArea (dpy, goop->pixmap, window, goop->window_gc, 0, 0,
-                goop->width, goop->height, 0, 0);
-      break;
-
-    case xor:
-      XSetFunction (dpy, goop->pixmap_gc, GXcopy);
-      XSetForeground (dpy, goop->pixmap_gc, 0);
-      XFillRectangle (dpy, goop->pixmap, goop->pixmap_gc, 0, 0,
-                     goop->width, goop->height);
-      XSetFunction (dpy, goop->pixmap_gc, GXxor);
-      XSetForeground (dpy, goop->pixmap_gc, 1);
-      for (i = 0; i < goop->nlayers; i++)
-       draw_layer_blobs (dpy, goop->pixmap, goop->pixmap_gc,
-                         goop->layers[i], goop->width, goop->height,
-                         (goop->mode != outline));
-      XCopyPlane (dpy, goop->pixmap, window, goop->window_gc, 0, 0,
-                 goop->width, goop->height, 0, 0, 1L);
-      break;
-
-    case opaque:
-    case outline:
-      XSetForeground (dpy, goop->pixmap_gc, goop->background);
-      XFillRectangle (dpy, goop->pixmap, goop->pixmap_gc, 0, 0,
-                     goop->width, goop->height);
-      for (i = 0; i < goop->nlayers; i++)
-       {
-         XSetForeground (dpy, goop->pixmap_gc, goop->layers[i]->pixel);
-         draw_layer_blobs (dpy, goop->pixmap, goop->pixmap_gc,
-                           goop->layers[i], goop->width, goop->height,
-                           (goop->mode != outline));
-       }
-      XCopyArea (dpy, goop->pixmap, window, goop->window_gc, 0, 0,
-                goop->width, goop->height, 0, 0);
-      break;
-
-    default:
-      abort ();
-      break;
-    }
-}
-
-\f
-char *progclass = "Goop";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*delay:             12000",
-  "*transparent:       true",
-  "*additive:          true",
-  "*xor:               false",
-  "*count:             0",
-  "*planes:            0",
-  "*thickness:         5",
-  "*torque:            0.0075",
-  "*elasticity:                1.8",
-  "*maxVelocity:       1.2",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-count",          ".count",       XrmoptionSepArg, 0 },
-  { "-planes",         ".planes",      XrmoptionSepArg, 0 },
-  { "-transparent",    ".transparent", XrmoptionNoArg, "True" },
-  { "-non-transparent",        ".transparent", XrmoptionNoArg, "False" },
-  { "-additive",       ".additive",    XrmoptionNoArg, "True" },
-  { "-subtractive",    ".additive",    XrmoptionNoArg, "false" },
-  { "-xor",            ".xor",         XrmoptionNoArg, "true" },
-  { "-no-xor",         ".xor",         XrmoptionNoArg, "false" },
-  { "-thickness",      ".thickness",   XrmoptionSepArg, 0 },
-  { "-torque",         ".torque",      XrmoptionSepArg, 0 },
-  { "-elasticity",     ".elasticity",  XrmoptionSepArg, 0 },
-  { "-max-velocity",   ".maxVelocity", XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  struct goop *g = init_goop (dpy, window);
-  int delay = get_integer_resource ("delay", "Integer");
-  while (1)
-    {
-      run_goop (dpy, window, g);
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay) usleep (delay);
-    }
-}
diff --git a/hacks/goop.man b/hacks/goop.man
deleted file mode 100644 (file)
index d8e5b52..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-.TH XScreenSaver 1 "11-Jun-97" "X Version 11"
-.SH NAME
-goop - squishy transparent oil and bubble screenhack
-.SH SYNOPSIS
-.B goop
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-transparent] [\-non\-transparent] [\-additive] [\-subtractive] [\-xor] [\-no\-xor]
-.SH DESCRIPTION
-The \fIgoop\fP program draws a simulation of bubbles in layers of 
-overlapping multicolored translucent fluid.
-.SH OPTIONS
-.I goop
-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 \-count \fIinteger\fP
-How many bubbles to draw per layer.  Default: random.
-.TP 8
-.B \-layers \fIinteger\fP
-How many layers to draw.  Default: random, based on screen depth.
-.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 \-transparent
-If \fI\-layers\fP is greater than 1, then each layer will be drawn in one
-color, and when they overlap, the colors will be mixed. This only works
-on \fBPseudoColor\fP displays.  This is the default.
-.TP 8
-.B \-non\-transparent
-Turns off \fI\-transparent\fP.
-.TP 8
-.B \-additive
-If \fI\-transparent\fP is specified, then this option means that the colors
-will be mixed using an additive color model, as if the blobs were projected
-light.  This is the default.
-.TP 8
-.B \-subtractive
-If \fI\-transparent\fP is specified, then this option means that the
-colors will be mixed using a subtractive color model, as if the blobs were
-translucent filters.
-.TP 8
-.B \-xor
-Draw with xor instead of the other color tricks.
-.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 1997 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 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>, 11-Jun-97.
diff --git a/hacks/grav.c b/hacks/grav.c
deleted file mode 100644 (file)
index 6ed41b8..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * grav --- simulation of a planetary system.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)grav.c       4.00 97/01/01 xlockmore";
-#endif
-
-/* Copyright (c) 1993 Greg Bowering <greg@smug.student.adelaide.edu.au>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * 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>
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Grav"
-# define HACK_INIT                                     init_grav
-# define HACK_DRAW                                     draw_grav
-# define grav_opts                                     xlockmore_opts
-# define DEFAULTS      "*count:                12    \n"                       \
-                                       "*delay:                10000 \n"                       \
-                                       "*ncolors:              64   \n"
-# define BRIGHT_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#define GRAV                   -0.02   /* Gravitational constant */
-#define DIST                   16.0
-#define COLLIDE                        0.0001
-#define ALMOST                 15.99
-#define HALF                   0.5
-/* #define INTRINSIC_RADIUS     200.0 */
-#define INTRINSIC_RADIUS       ((float) (gp->height/5))
-#define STARRADIUS             (unsigned int)(gp->height/(2*DIST))
-#define AVG_RADIUS             (INTRINSIC_RADIUS/DIST)
-#define RADIUS                 (unsigned int)(INTRINSIC_RADIUS/(POS(Z)+DIST))
-
-#define XR                     HALF*ALMOST
-#define YR                     HALF*ALMOST
-#define ZR                     HALF*ALMOST
-
-#define VR                     0.04
-
-#define DIMENSIONS             3
-#define X                      0
-#define Y                      1
-#define Z                      2
-
-#define DAMP                   0.999999
-#define MaxA                   0.1     /* Maximum acceleration (w/ damping) */
-
-#define POS(c) planet->P[c]
-#define VEL(c) planet->V[c]
-#define ACC(c) planet->A[c]
-
-#define Planet(x,y)\
-  if ((x) >= 0 && (y) >= 0 && (x) <= gp->width && (y) <= gp->height) {\
-    if (planet->ri < 2)\
-     XDrawPoint(display, window, gc, (x), (y));\
-    else\
-     XFillArc(display, window, gc,\
-      (x) - planet->ri / 2, (y) - planet->ri / 2, planet->ri, planet->ri,\
-      0, 23040);\
-   }
-
-#define FLOATRAND(min,max)     ((min)+(LRAND()/MAXRAND)*((max)-(min)))
-
-#define DEF_DECAY "False"      /* Damping for decaying orbits */
-#define DEF_TRAIL "False"      /* For trails (works good in mono only) */
-
-static Bool decay;
-static Bool trail;
-
-static XrmOptionDescRec opts[] =
-{
-       {"-decay", ".grav.decay", XrmoptionNoArg, (caddr_t) "on"},
-       {"+decay", ".grav.decay", XrmoptionNoArg, (caddr_t) "off"},
-       {"-trail", ".grav.trail", XrmoptionNoArg, (caddr_t) "on"},
-       {"+trail", ".grav.trail", XrmoptionNoArg, (caddr_t) "off"}
-};
-static argtype vars[] =
-{
-       {(caddr_t *) & decay, "decay", "Decay", DEF_DECAY, t_Bool},
-       {(caddr_t *) & trail, "trail", "Trail", DEF_TRAIL, t_Bool}
-};
-static OptionStruct desc[] =
-{
-       {"-/+decay", "turn on/off decaying orbits"},
-       {"-/+trail", "turn on/off trail dots"}
-};
-
-ModeSpecOpt grav_opts = { 4, opts, 2, vars, desc };
-
-typedef struct {
-       double        P[DIMENSIONS], V[DIMENSIONS], A[DIMENSIONS];
-       int           xi, yi, ri;
-       unsigned long colors;
-} planetstruct;
-
-typedef struct {
-       int         width, height;
-       int         x, y, sr, nplanets;
-       unsigned long starcolor;
-       planetstruct *planets;
-} gravstruct;
-
-static gravstruct *gravs = NULL;
-
-static void
-init_planet(ModeInfo * mi, planetstruct * planet)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       gravstruct *gp = &gravs[MI_SCREEN(mi)];
-
-       if (MI_NPIXELS(mi) > 2)
-               planet->colors = MI_PIXEL(mi, NRAND(MI_NPIXELS(mi)));
-       else
-               planet->colors = MI_WIN_WHITE_PIXEL(mi);
-       /* Initialize positions */
-       POS(X) = FLOATRAND(-XR, XR);
-       POS(Y) = FLOATRAND(-YR, YR);
-       POS(Z) = FLOATRAND(-ZR, ZR);
-
-       if (POS(Z) > -ALMOST) {
-               planet->xi = (int)
-                       ((double) gp->width * (HALF + POS(X) / (POS(Z) + DIST)));
-               planet->yi = (int)
-                       ((double) gp->height * (HALF + POS(Y) / (POS(Z) + DIST)));
-       } else
-               planet->xi = planet->yi = -1;
-       planet->ri = RADIUS;
-
-       /* Initialize velocities */
-       VEL(X) = FLOATRAND(-VR, VR);
-       VEL(Y) = FLOATRAND(-VR, VR);
-       VEL(Z) = FLOATRAND(-VR, VR);
-
-       /* Draw planets */
-       Planet(planet->xi, planet->yi);
-}
-
-static void
-draw_planet(ModeInfo * mi, planetstruct * planet)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       gravstruct *gp = &gravs[MI_SCREEN(mi)];
-       double      D;          /* A distance variable to work with */
-       register unsigned char cmpt;
-
-       D = POS(X) * POS(X) + POS(Y) * POS(Y) + POS(Z) * POS(Z);
-       if (D < COLLIDE)
-               D = COLLIDE;
-       D = sqrt(D);
-       D = D * D * D;
-       for (cmpt = X; cmpt < DIMENSIONS; cmpt++) {
-               ACC(cmpt) = POS(cmpt) * GRAV / D;
-               if (decay) {
-                       if (ACC(cmpt) > MaxA)
-                               ACC(cmpt) = MaxA;
-                       else if (ACC(cmpt) < -MaxA)
-                               ACC(cmpt) = -MaxA;
-                       VEL(cmpt) = VEL(cmpt) + ACC(cmpt);
-                       VEL(cmpt) *= DAMP;
-               } else {
-                       /* update velocity */
-                       VEL(cmpt) = VEL(cmpt) + ACC(cmpt);
-               }
-               /* update position */
-               POS(cmpt) = POS(cmpt) + VEL(cmpt);
-       }
-
-       gp->x = planet->xi;
-       gp->y = planet->yi;
-
-       if (POS(Z) > -ALMOST) {
-               planet->xi = (int)
-                       ((double) gp->width * (HALF + POS(X) / (POS(Z) + DIST)));
-               planet->yi = (int)
-                       ((double) gp->height * (HALF + POS(Y) / (POS(Z) + DIST)));
-       } else
-               planet->xi = planet->yi = -1;
-
-       /* Mask */
-       XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-       Planet(gp->x, gp->y);
-       if (trail) {
-               XSetForeground(display, gc, planet->colors);
-               XDrawPoint(display, MI_WINDOW(mi), gc, gp->x, gp->y);
-       }
-       /* Move */
-       gp->x = planet->xi;
-       gp->y = planet->yi;
-       planet->ri = RADIUS;
-
-       /* Redraw */
-       XSetForeground(display, gc, planet->colors);
-       Planet(gp->x, gp->y);
-}
-
-void
-init_grav(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       gravstruct *gp;
-       unsigned char ball;
-
-       if (gravs == NULL) {
-               if ((gravs = (gravstruct *) calloc(MI_NUM_SCREENS(mi),
-                                              sizeof (gravstruct))) == NULL)
-                       return;
-       }
-       gp = &gravs[MI_SCREEN(mi)];
-
-       gp->width = MI_WIN_WIDTH(mi);
-       gp->height = MI_WIN_HEIGHT(mi);
-
-       gp->sr = STARRADIUS;
-
-       gp->nplanets = MI_BATCHCOUNT(mi);
-       if (gp->nplanets < 0) {
-               if (gp->planets) {
-                       (void) free((void *) gp->planets);
-                       gp->planets = NULL;
-               }
-               gp->nplanets = NRAND(-gp->nplanets) + 1;        /* Add 1 so its not too boring */
-       }
-       if (!gp->planets)
-               gp->planets = (planetstruct *) calloc(gp->nplanets, sizeof (planetstruct));
-
-       XClearWindow(display, MI_WINDOW(mi));
-
-       if (MI_NPIXELS(mi) > 2)
-               gp->starcolor = MI_PIXEL(mi, NRAND(MI_NPIXELS(mi)));
-       else
-               gp->starcolor = MI_WIN_WHITE_PIXEL(mi);
-       for (ball = 0; ball < (unsigned char) gp->nplanets; ball++)
-               init_planet(mi, &gp->planets[ball]);
-
-       /* Draw centrepoint */
-       XDrawArc(display, MI_WINDOW(mi), gc,
-                gp->width / 2 - gp->sr / 2, gp->height / 2 - gp->sr / 2, gp->sr, gp->sr,
-                0, 23040);
-}
-
-void
-draw_grav(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       gravstruct *gp = &gravs[MI_SCREEN(mi)];
-       register unsigned char ball;
-
-       /* Mask centrepoint */
-       XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-       XDrawArc(display, window, gc,
-                gp->width / 2 - gp->sr / 2, gp->height / 2 - gp->sr / 2, gp->sr, gp->sr,
-                0, 23040);
-
-       /* Resize centrepoint */
-       switch (NRAND(4)) {
-               case 0:
-                       if (gp->sr < (int) STARRADIUS)
-                               gp->sr++;
-                       break;
-               case 1:
-                       if (gp->sr > 2)
-                               gp->sr--;
-       }
-
-       /* Draw centrepoint */
-       XSetForeground(display, gc, gp->starcolor);
-       XDrawArc(display, window, gc,
-                gp->width / 2 - gp->sr / 2, gp->height / 2 - gp->sr / 2, gp->sr, gp->sr,
-                0, 23040);
-
-       for (ball = 0; ball < (unsigned char) gp->nplanets; ball++)
-               draw_planet(mi, &gp->planets[ball]);
-}
-
-void
-release_grav(ModeInfo * mi)
-{
-       if (gravs != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       gravstruct *gp = &gravs[screen];
-
-                       if (gp->planets)
-                               (void) free((void *) gp->planets);
-               }
-               (void) free((void *) gravs);
-               gravs = NULL;
-       }
-}
-
-void
-refresh_grav(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/grav.man b/hacks/grav.man
deleted file mode 100644 (file)
index 7cd42cb..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-grav - draws a simple orbital simulation
-.SH SYNOPSIS
-.B grav
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP] [\-decay] [\-no\-decay] [\-trail] [\-no\-trail]
-
-.SH DESCRIPTION
-The \fIgrav\fP program draws a simple orbital simulation
-.SH OPTIONS
-.I grav
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-The colors are chosen randomly.
-.TP 8
-.B \-count \fIinteger\fP
-Default 12.
-.TP 8
-.B \-decay
-.TP 8
-.B \-no-\decay
-Whether orbits should decay.
-
-.TP 8
-.B \-trail
-.TP 8
-.B \-no\-trail
-Whether the objects should leave trails behind them (makes it look vaguely
-like a cloud-chamber.
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1993 by Greg Bowering.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/greynetic.c b/hacks/greynetic.c
deleted file mode 100644 (file)
index 1377c95..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997, 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 "screenhack.h"
-
-#define NBITS 12
-
-#ifndef VMS
-# include <X11/bitmaps/stipple>
-# include <X11/bitmaps/cross_weave>
-# include <X11/bitmaps/dimple1>
-# include <X11/bitmaps/dimple3>
-# include <X11/bitmaps/flipped_gray>
-# include <X11/bitmaps/gray1>
-# include <X11/bitmaps/gray3>
-# include <X11/bitmaps/hlines2>
-# include <X11/bitmaps/light_gray>
-# include <X11/bitmaps/root_weave>
-# include <X11/bitmaps/vlines2>
-# include <X11/bitmaps/vlines3>
-#else /* VMS */
-# include "sys$common:[decw$include.bitmaps]stipple.xbm"
-# include "sys$common:[decw$include.bitmaps]cross_weave.xbm"
-# include "sys$common:[decw$include.bitmaps]dimple1.xbm"
-# include "sys$common:[decw$include.bitmaps]dimple3.xbm"
-# include "sys$common:[decw$include.bitmaps]flipped_gray.xbm"
-# include "sys$common:[decw$include.bitmaps]gray1.xbm"
-# include "sys$common:[decw$include.bitmaps]gray3.xbm"
-# include "sys$common:[decw$include.bitmaps]hlines2.xbm"
-# include "sys$common:[decw$include.bitmaps]light_gray.xbm"
-# include "sys$common:[decw$include.bitmaps]root_weave.xbm"
-# include "sys$common:[decw$include.bitmaps]vlines2.xbm"
-# include "sys$common:[decw$include.bitmaps]vlines3.xbm"
-#endif /* VMS */
-
-static Pixmap pixmaps [NBITS];
-static GC gc;
-static int delay;
-static unsigned long fg, bg, pixels [512];
-static int npixels;
-
-static void
-init_greynetic (Display *dpy, Window window)
-{
-  int i;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  Colormap cmap;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  npixels = 0;
-  gcv.foreground= fg= get_pixel_resource("foreground","Foreground", dpy, cmap);
-  gcv.background= bg= get_pixel_resource("background","Background", dpy, cmap);
-  gcv.fill_style= FillOpaqueStippled;
-  gc = XCreateGC (dpy, window, GCForeground|GCBackground|GCFillStyle, &gcv);
-
-  delay = get_integer_resource ("delay", "Integer");
-  if (delay < 0) delay = 0;
-
-  i = 0;
-#define BITS(n,w,h) \
-  pixmaps [i++] = XCreatePixmapFromBitmapData (dpy, window, n, w, h, 1, 0, 1)
-
-  BITS (stipple_bits, stipple_width, stipple_height);
-  BITS (cross_weave_bits, cross_weave_width, cross_weave_height);
-  BITS (dimple1_bits, dimple1_width, dimple1_height);
-  BITS (dimple3_bits, dimple3_width, dimple3_height);
-  BITS (flipped_gray_bits, flipped_gray_width, flipped_gray_height);
-  BITS (gray1_bits, gray1_width, gray1_height);
-  BITS (gray3_bits, gray3_width, gray3_height);
-  BITS (hlines2_bits, hlines2_width, hlines2_height);
-  BITS (light_gray_bits, light_gray_width, light_gray_height);
-  BITS (root_weave_bits, root_weave_width, root_weave_height);
-  BITS (vlines2_bits, vlines2_width, vlines2_height);
-  BITS (vlines3_bits, vlines3_width, vlines3_height);
-}
-
-static void
-greynetic (Display *dpy, Window window)
-{
-  static int tick = 500, xlim, ylim;
-  static Colormap cmap;
-  int x, y, w, h, i;
-  XGCValues gcv;
-  if (tick++ == 500)
-    {
-      XWindowAttributes xgwa;
-      XGetWindowAttributes (dpy, window, &xgwa);
-      tick = 0;
-      xlim = xgwa.width;
-      ylim = xgwa.height;
-      cmap = xgwa.colormap;
-    }
-  for (i = 0; i < 10; i++) /* minimize area, but don't try too hard */
-    {
-      w = 50 + random () % (xlim - 50);
-      h = 50 + random () % (ylim - 50);
-      if (w + h < xlim && w + h < ylim)
-       break;
-    }
-  x = random () % (xlim - w);
-  y = random () % (ylim - h);
-  gcv.stipple = pixmaps [random () % NBITS];
-  if (mono_p)
-    {
-    MONO:
-      if (random () & 1)
-       gcv.foreground = fg, gcv.background = bg;
-      else
-       gcv.foreground = bg, gcv.background = fg;
-    }
-  else
-    {
-      XColor fgc, bgc;
-      if (npixels == sizeof (pixels) / sizeof (unsigned long))
-       goto REUSE;
-      fgc.flags = bgc.flags = DoRed|DoGreen|DoBlue;
-      fgc.red = random ();
-      fgc.green = random ();
-      fgc.blue = random ();
-      bgc.red = random ();
-      bgc.green = random ();
-      bgc.blue = random ();
-      if (! XAllocColor (dpy, cmap, &fgc))
-       goto REUSE;
-      pixels [npixels++] = fgc.pixel;
-      gcv.foreground = fgc.pixel;
-      if (! XAllocColor (dpy, cmap, &bgc))
-       goto REUSE;
-      pixels [npixels++] = bgc.pixel;
-      gcv.background = bgc.pixel;
-      goto DONE;
-    REUSE:
-      if (npixels <= 0)
-       {
-         mono_p = 1;
-         goto MONO;
-       }
-      gcv.foreground = pixels [random () % npixels];
-      gcv.background = pixels [random () % npixels];
-    DONE:
-      ;
-    }
-  XChangeGC (dpy, gc, GCStipple|GCForeground|GCBackground, &gcv);
-  XFillRectangle (dpy, window, gc, x, y, w, h);
-  XSync (dpy, False);
-}
-
-\f
-char *progclass = "Greynetic";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*delay:     0",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  init_greynetic (dpy, window);
-  while (1)
-    {
-      greynetic (dpy, window);
-      screenhack_handle_events (dpy);
-      if (delay) usleep (delay);
-    }
-}
diff --git a/hacks/greynetic.man b/hacks/greynetic.man
deleted file mode 100644 (file)
index 0b761cc..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-.TH XScreenSaver 1 "13-aug-92" "X Version 11"
-.SH NAME
-greynetic - draw random stippled/color rectangles
-.SH SYNOPSIS
-.B greynetic
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP]
-.SH DESCRIPTION
-The \fIgreynetic\fP program draws random rectangles.
-.SH OPTIONS
-.I greynetic
-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
-Slow it down.
-.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 1992 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 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>, 13-aug-92.
diff --git a/hacks/halo.c b/hacks/halo.c
deleted file mode 100644 (file)
index 7cab38d..0000000
+++ /dev/null
@@ -1,466 +0,0 @@
-/* xscreensaver, Copyright (c) 1993, 1995, 1996, 1997, 1998, 1999
- *  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.
- */
-
-/* I wanted to lay down new circles with TV:ALU-ADD instead of TV:ALU-XOR,
-   but X doesn't support arithmetic combinations of pixmaps!!  What losers.
-   I suppose I could crank out the 2's compliment math by hand, but that's
-   a real drag...
-
-   This would probably look good with shapes other than circles as well.
-
- */
-
-#include "screenhack.h"
-#include <stdio.h>
-
-struct circle {
-  int x, y, radius;
-  int increment;
-  int dx, dy;
-};
-
-static enum color_mode {
-  seuss_mode, ramp_mode, random_mode
-} cmode;
-
-
-static struct circle *circles;
-static int count, global_count;
-static Pixmap pixmap, buffer;
-static int width, height, global_inc;
-static int delay, delay2, cycle_delay;
-static unsigned long fg_pixel, bg_pixel;
-static GC draw_gc, erase_gc, copy_gc, merge_gc;
-static Bool anim_p;
-static Colormap cmap;
-
-static int ncolors;
-static XColor *colors;
-static Bool cycle_p;
-static int fg_index;
-static int bg_index;
-
-
-#define min(x,y) ((x)<(y)?(x):(y))
-#define max(x,y) ((x)>(y)?(x):(y))
-
-static void
-init_circles_1 (Display *dpy, Window window)
-{
-  int i;
-  count = (global_count ? global_count
-          : (3 + (random () % max (1, (min (width, height) / 50)))
-               + (random () % max (1, (min (width, height) / 50)))));
-  circles = (struct circle *) malloc (count * sizeof (struct circle));
-  for (i = 0; i < count; i++)
-    {
-      circles [i].x = 10 + random () % (width - 20);
-      circles [i].y = 10 + random () % (height - 20);
-      if (global_inc)
-      circles [i].increment = global_inc;
-      else
-       { /* prefer smaller increments to larger ones */
-         int j = 8;
-         int inc = ((random()%j) + (random()%j) + (random()%j)) - ((j*3)/2);
-         if (inc < 0) inc = -inc + 3;
-         circles [i].increment = inc + 3;
-       }
-      circles [i].radius = random () % circles [i].increment;
-      circles [i].dx = ((random () % 3) - 1) * (1 + random () % 5);
-      circles [i].dy = ((random () % 3) - 1) * (1 + random () % 5);
-    }
-}
-
-static void
-init_circles (Display *dpy, Window window)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  char *mode_str = 0;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  global_count = get_integer_resource ("count", "Integer");
-  if (global_count < 0) global_count = 0;
-  global_inc = get_integer_resource ("increment", "Integer");
-  if (global_inc < 0) global_inc = 0;
-  anim_p = get_boolean_resource ("animate", "Boolean");
-  delay = get_integer_resource ("delay", "Integer");
-  delay2 = get_integer_resource ("delay2", "Integer") * 1000000;
-  cycle_delay = get_integer_resource ("cycleDelay", "Integer");
-  mode_str = get_string_resource ("colorMode", "ColorMode");
-  if (! mode_str) cmode = random_mode;
-  else if (!strcmp (mode_str, "seuss"))  cmode = seuss_mode;
-  else if (!strcmp (mode_str, "ramp"))   cmode = ramp_mode;
-  else if (!strcmp (mode_str, "random")) cmode = random_mode;
-  else {
-    fprintf (stderr,
-            "%s: colorMode must be seuss, ramp, or random, not \"%s\"\n",
-            progname, mode_str);
-    exit (1);
-  }
-
-  if (mono_p) cmode = seuss_mode;
-  if (cmode == random_mode)
-    cmode = ((random()&3) == 1) ? ramp_mode : seuss_mode;
-
-  if (cmode == ramp_mode)
-    anim_p = False;    /* This combo doesn't work right... */
-
-  ncolors = get_integer_resource ("colors", "Colors");
-  if (ncolors < 2) ncolors = 2;
-  if (ncolors <= 2) mono_p = True;
-
-  if (mono_p)
-    colors = 0;
-  else
-    colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-
-  cycle_p = mono_p ? False : get_boolean_resource ("cycle", "Cycle");
-
-  /* If the visual isn't color-indexed, don't bother trying to
-     allocate writable cells. */
-  if (cycle_p && !has_writable_cells (xgwa.screen, xgwa.visual))
-    cycle_p = False;
-
-
-  if (mono_p)
-    ;
-  else if (random() % (cmode == seuss_mode ? 2 : 10))
-    make_uniform_colormap (dpy, xgwa.visual, cmap, colors, &ncolors,
-                          True, &cycle_p, True);
-  else
-    make_smooth_colormap (dpy, xgwa.visual, cmap, colors, &ncolors,
-                         True, &cycle_p, True);
-
-  if (ncolors <= 2) mono_p = True;
-  if (mono_p) cycle_p = False;
-  if (mono_p) cmode = seuss_mode;
-
-  if (mono_p)
-    {
-      fg_pixel = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-      bg_pixel = get_pixel_resource ("background", "Background", dpy, cmap);
-    }
-  else
-    {
-      fg_index = 0;
-      bg_index = ncolors / 4;
-      if (fg_index == bg_index) bg_index++;
-      fg_pixel = colors[fg_index].pixel;
-      bg_pixel = colors[bg_index].pixel;
-    }
-
-  width = max (50, xgwa.width);
-  height = max (50, xgwa.height);
-
-#ifdef DEBUG
-  width/=2; height/=2;
-#endif
-
-  pixmap = XCreatePixmap (dpy, window, width, height, 1);
-  if (cmode == seuss_mode)
-    buffer = XCreatePixmap (dpy, window, width, height, 1);
-  else
-    buffer = 0;
-
-  gcv.foreground = 1;
-  gcv.background = 0;
-  draw_gc = XCreateGC (dpy, pixmap, GCForeground | GCBackground, &gcv);
-  gcv.foreground = 0;
-  erase_gc = XCreateGC (dpy, pixmap, GCForeground, &gcv);
-  gcv.foreground = fg_pixel;
-  gcv.background = bg_pixel;
-  copy_gc = XCreateGC (dpy, window, GCForeground | GCBackground, &gcv);
-
-  if (cmode == seuss_mode)
-    {
-      gcv.foreground = 1;
-      gcv.background = 0;
-      gcv.function = GXxor;
-      merge_gc = XCreateGC (dpy, pixmap,
-                           GCForeground | GCBackground | GCFunction, &gcv);
-    }
-  else
-    {
-      gcv.foreground = fg_pixel;
-      gcv.background = bg_pixel;
-      gcv.function = GXcopy;
-      merge_gc = XCreateGC (dpy, window,
-                           GCForeground | GCBackground | GCFunction, &gcv);
-    }
-
-  init_circles_1 (dpy, window);
-  XClearWindow (dpy, window);
-  if (buffer) XFillRectangle (dpy, buffer, erase_gc, 0, 0, width, height);
-}
-
-static void
-run_circles (Display *dpy, Window window)
-{
-  int i;
-  static int iterations = 0;
-  static int oiterations = 0;
-  static Bool first_time_p = True;
-  Bool done = False;
-  Bool inhibit_sleep = False;
-  static int clear_tick = 0;
-
-  XFillRectangle (dpy, pixmap, erase_gc, 0, 0, width, height);
-  for (i = 0; i < count; i++)
-    {
-      int radius = circles [i].radius;
-      int inc = circles [i].increment;
-
-      if (! (iterations & 1))  /* never stop on an odd number of iterations */
-       ;
-      else if (radius == 0)    /* eschew inf */
-       ;
-      else if (radius < 0)     /* stop when the circles are points */
-       done = True;
-      else                     /* stop when the circles fill the window */
-       {
-         /* Probably there's a simpler way to ask the musical question,
-            "is this square completely enclosed by this circle," but I've
-            forgotten too much trig to know it...  (That's not really the
-            right question anyway, but the right question is too hard.) */
-         double x1 = ((double) (-circles [i].x)) / ((double) radius);
-         double y1 = ((double) (-circles [i].y)) / ((double) radius);
-         double x2 = ((double) (width - circles [i].x)) / ((double) radius);
-         double y2 = ((double) (height - circles [i].y)) / ((double) radius);
-         x1 *= x1; x2 *= x2; y1 *= y1; y2 *= y2;
-         if ((x1 + y1) < 1 && (x2 + y2) < 1 && (x1 + y2) < 1 && (x2 + y1) < 1)
-           done = True;
-       }
-
-      if (radius > 0 &&
-         (cmode == seuss_mode ||       /* drawing all circles, or */
-          circles [0].increment < 0))  /* on the way back in */
-       {
-         XFillArc (dpy,
-                   (cmode == seuss_mode ? pixmap : window),
-                   (cmode == seuss_mode ? draw_gc : merge_gc),
-                   circles [i].x - radius, circles [i].y - radius,
-                   radius * 2, radius * 2, 0, 360*64);
-       }
-      circles [i].radius += inc;
-    }
-
-  if (cycle_p && cmode != seuss_mode)
-    {
-      struct timeval now;
-      static struct timeval then = { 0, };
-      unsigned long diff;
-#ifdef GETTIMEOFDAY_TWO_ARGS
-      struct timezone tzp;
-      gettimeofday(&now, &tzp);
-#else
-      gettimeofday(&now);
-#endif
-      diff = (((now.tv_sec - then.tv_sec)  * 1000000) +
-             (now.tv_usec - then.tv_usec));
-      if (diff > cycle_delay)
-       {
-         rotate_colors (dpy, cmap, colors, ncolors, 1);
-         then = now;
-       }
-    }
-
-  if (anim_p && !first_time_p)
-    inhibit_sleep = !done;
-
-  if (done)
-    {
-      if (anim_p)
-       {
-         first_time_p = False;
-         for (i = 0; i < count; i++)
-           {
-             circles [i].x += circles [i].dx;
-             circles [i].y += circles [i].dy;
-             circles [i].radius %= circles [i].increment;
-             if (circles [i].x < 0 || circles [i].x >= width)
-               {
-                 circles [i].dx = -circles [i].dx;
-                 circles [i].x += (2 * circles [i].dx);
-               }
-             if (circles [i].y < 0 || circles [i].y >= height)
-               {
-                 circles [i].dy = -circles [i].dy;
-                 circles [i].y += (2 * circles [i].dy);
-               }
-           }
-       }
-      else if (circles [0].increment < 0)
-       {
-         /* We've zoomed out and the screen is blank -- re-pick the
-            center points, and shift the colors.
-          */
-         free (circles);
-         init_circles_1 (dpy, window);
-         if (! mono_p)
-           {
-             fg_index = (fg_index + 1) % ncolors;
-             bg_index = (fg_index + (ncolors/2)) % ncolors;
-             XSetForeground (dpy, copy_gc, colors [fg_index].pixel);
-             XSetBackground (dpy, copy_gc, colors [bg_index].pixel);
-           }
-       }
-      /* Sometimes go out from the inside instead of the outside */
-      else if (clear_tick == 0 && ((random () % 3) == 0))
-       {
-         iterations = 0; /* ick */
-         for (i = 0; i < count; i++)
-           circles [i].radius %= circles [i].increment;
-
-          clear_tick = ((random() % 8) + 4) | 1;   /* must be odd */
-       }
-      else
-       {
-         oiterations = iterations;
-         for (i = 0; i < count; i++)
-           {
-             circles [i].increment = -circles [i].increment;
-             circles [i].radius += (2 * circles [i].increment);
-           }
-       }
-    }
-
-  if (buffer)
-    XCopyPlane (dpy, pixmap, buffer, merge_gc, 0, 0, width, height, 0, 0, 1);
-  else if (cmode != seuss_mode)
-    {
-
-      if (!mono_p)
-       {
-         fg_index++;
-         bg_index++;
-         if (fg_index >= ncolors) fg_index = 0;
-         if (bg_index >= ncolors) bg_index = 0;
-         XSetForeground (dpy, merge_gc, colors [fg_index].pixel);
-       }
-
-      if (circles [0].increment >= 0)
-       inhibit_sleep = True;
-      else if (done && cmode == seuss_mode)
-       XFillRectangle (dpy, window, merge_gc, 0, 0, width, height);
-    }
-  else
-    XCopyPlane (dpy, pixmap, window, merge_gc, 0, 0, width, height, 0, 0, 1);
-
-  /* buffer is only used in seuss-mode or anim-mode */
-  if (buffer && (anim_p
-                ? (done || (first_time_p && (iterations & 1)))
-                : (iterations & 1)))
-    {
-      XCopyPlane (dpy, buffer, window, copy_gc, 0, 0, width, height, 0, 0, 1);
-      XSync (dpy, False);
-      if (anim_p && done)
-       XFillRectangle (dpy, buffer, erase_gc, 0, 0, width, height);
-    }
-
-#ifdef DEBUG
-  XCopyPlane (dpy, pixmap, window, copy_gc, 0,0,width,height,width,height, 1);
-  if (buffer)
-    XCopyPlane (dpy, buffer, window, copy_gc, 0,0,width,height,0,height, 1);
-  XSync (dpy, False);
-#endif
-
-  if (done)
-    iterations = 0;
-  else
-    iterations++;
-
-  if (delay && !inhibit_sleep)
-    {
-      static Bool really_first_p = True;
-      int direction = 1;
-      int d = delay;
-      if (done && cycle_p && cmode != seuss_mode && !really_first_p)
-       {
-         d = delay2;
-         if (! (random() % 10))
-           direction = -1;
-       }
-
-      XSync(dpy, False);
-      screenhack_handle_events (dpy);
-
-      if (cycle_p && cycle_delay)
-       {
-         int i = 0;
-         while (i < d)
-           {
-             rotate_colors (dpy, cmap, colors, ncolors, direction);
-             usleep(cycle_delay);
-              screenhack_handle_events (dpy);
-             i += cycle_delay;
-           }
-       }
-      else if (cmode != seuss_mode &&
-               done && !really_first_p && cycle_delay > 0)
-        usleep (cycle_delay * 50);
-      else
-        usleep (d);
-
-      if (done)
-       really_first_p = False;
-    }
-
-  if (done && clear_tick > 0)
-    {
-      clear_tick--;
-      if (!clear_tick)
-        {
-          XClearWindow (dpy, window);
-          if (buffer) XFillRectangle (dpy, buffer, erase_gc, 0,0,width,height);
-        }
-    }
-}
-
-\f
-char *progclass = "Halo";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*colorMode:         random",
-  "*colors:            100",
-  "*cycle:             true",
-  "*count:             0",
-  "*delay:             100000",
-  "*delay2:            20",
-  "*cycleDelay:                100000",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-count",          ".count",       XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-cycle-delay",    ".cycleDelay",  XrmoptionSepArg, 0 },
-  { "-animate",                ".animate",     XrmoptionNoArg, "True" },
-  { "-mode",           ".colorMode",   XrmoptionSepArg, 0 },
-  { "-colors",         ".colors",      XrmoptionSepArg, 0 },
-  { "-cycle",          ".cycle",       XrmoptionNoArg, "True" },
-  { "-no-cycle",       ".cycle",       XrmoptionNoArg, "False" },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  init_circles (dpy, window);
-  while (1)
-    {
-      run_circles (dpy, window);
-      screenhack_handle_events (dpy);
-    }
-}
diff --git a/hacks/halo.man b/hacks/halo.man
deleted file mode 100644 (file)
index a499357..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-.TH XScreenSaver 1 "12-Jun-97" "X Version 11"
-.SH NAME
-halo - draw circular patterns
-.SH SYNOPSIS
-.B halo
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-count \fIint\fP] [\-delay \fIusecs\fP] [\-mode seuss | ramp | random ] [\-animate] [\-colors \fIinteger\fP] [\-cycle] [\-no\-cycle] [\-cycle\-delay \fIusecs\fP] 
-.SH DESCRIPTION
-The \fIhalo\fP program draws cool patterns based on circles.
-.SH OPTIONS
-.I halo
-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 \-count \fIinteger\fP
-How many circles to draw.  Default 0, meaning random.
-.TP 8
-.B \-mode "seuss | ramp | random"
-In \fIseuss\fP mode, alternating striped curves will be drawn.
-
-In \fIramp\fP mode, a color ramp will be drawn.
-
-\fIrandom\fP means pick the mode randomly.
-.TP 8
-.B \-delay \fImicroseconds\fP
-How much of a delay should be introduced between steps of the animation.
-Default 100000, or about 0.1 second.
-.TP 8
-.B \-colors \fIinteger\fP
-How many colors to use.  Default 100.
-.TP 8
-.B \-animate
-If specified, then the centerpoints of the circles will bounce around.
-Otherwise, the circles will be drawn once, erased, and a new set of
-circles will be drawn.
-.TP 8
-.B \-cycle
-.TP 8
-.B \-no\-cycle
-Whether to do colormap cycling.  Default is to cycle.
-.TP 8
-.B \-cycle\-delay
-Number of microseconds between shifts of the colormap; default 100000,
-or 1/10th 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 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 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>, 6-jul-93.
diff --git a/hacks/helix.c b/hacks/helix.c
deleted file mode 100644 (file)
index 27c9d43..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997
- *  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.
- */
-
-/* Algorithm from a Mac program by Chris Tate, written in 1988 or so. */
-
-/* 18-Sep-97: Johannes Keukelaar (johannes@nada.kth.se): Improved screen
- *            eraser.
- * 10-May-97: merged ellipse code by Dan Stromberg <strombrg@nis.acs.uci.edu>
- *            as found in xlockmore 4.03a10.
- * 1992:      jwz created.
- */
-
-#include <math.h>
-#include "screenhack.h"
-#include "erase.h"
-
-static double sins [360];
-static double coss [360];
-
-static GC draw_gc;
-static unsigned int default_fg_pixel;
-static int sleep_time;
-
-static void
-init_helix (Display *dpy, Window window)
-{
-  int i;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  Colormap cmap;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  gcv.foreground = default_fg_pixel =
-    get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  draw_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  gcv.foreground = get_pixel_resource ("background", "Background", dpy, cmap);
-
-  for (i = 0; i < 360; i++)
-    {
-      sins [i] = sin ((((double) i) / 180.0) * M_PI);
-      coss [i] = cos ((((double) i) / 180.0) * M_PI);
-    }
-}
-
-static int
-gcd (int a, int b)
-{
-  while (b > 0)
-    {
-      int tmp;
-      tmp = a % b;
-      a = b;
-      b = tmp;
-    }
-  return (a < 0 ? -a : a);
-}
-
-static void
-helix (Display *dpy, Window window,
-       int radius1, int radius2, int d_angle,
-       int factor1, int factor2, int factor3, int factor4)
-{
-  XWindowAttributes xgwa;
-  int width, height;
-  int xmid, ymid;
-  int x1, y1, x2, y2, angle, limit;
-  int i;
-
-  XClearWindow (dpy, window);
-  XGetWindowAttributes (dpy, window, &xgwa);
-  width = xgwa.width;
-  height = xgwa.height;
-
-  xmid = width / 2;
-  ymid = height / 2;
-  x1 = xmid;
-  y1 = ymid + radius2;
-  x2 = xmid;
-  y2 = ymid + radius1;
-  angle = 0;
-  limit = 1 + (360 / gcd (360, d_angle));
-  
-  for (i = 0; i < limit; i++)
-    {
-      int tmp;
-#define pmod(x,y) (tmp=((x) % (y)), (tmp >= 0 ? tmp : (tmp + (y))))
-
-      x1 = xmid + (((double) radius1) * sins [pmod ((angle * factor1), 360)]);
-      y1 = ymid + (((double) radius2) * coss [pmod ((angle * factor2), 360)]);
-      XDrawLine (dpy, window, draw_gc, x1, y1, x2, y2);
-      x2 = xmid + (((double) radius2) * sins [pmod ((angle * factor3), 360)]);
-      y2 = ymid + (((double) radius1) * coss [pmod ((angle * factor4), 360)]);
-
-      XDrawLine (dpy, window, draw_gc, x1, y1, x2, y2);
-      angle += d_angle;
-      XFlush (dpy);
-    }
-}
-
-static void
-trig (Display *dpy, Window window,
-      int d_angle, int factor1, int factor2,
-      int offset, int d_angle_offset, int dir, int density)
-{
-  XWindowAttributes xgwa;
-  int width, height;
-  int xmid, ymid;
-  int x1, y1, x2, y2;
-  int tmp, angle;
-  Colormap cmap;
-
-  XClearWindow (dpy, window);
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  width = xgwa.width;
-  height = xgwa.height;
-
-  xmid = width / 2;
-  ymid = height / 2;
-
-  while (d_angle >= -360 && d_angle <= 360)
-    {
-      angle = d_angle + d_angle_offset;
-      x1 = (sins [pmod(angle * factor1, 360)] * xmid) + xmid;
-      y1 = (coss [pmod(angle * factor1, 360)] * ymid) + ymid;
-      x2 = (sins [pmod(angle * factor2 + offset, 360)] * xmid) + xmid;
-      y2 = (coss [pmod(angle * factor2 + offset, 360)] * ymid) + ymid;
-      XDrawLine(dpy, window, draw_gc, x1, y1, x2, y2);
-      tmp = (int) 360 / (2 * density * factor1 * factor2);
-      if (tmp == 0)    /* Do not want it getting stuck... */
-       tmp = 1;        /* Would not need if floating point */
-      d_angle += dir * tmp;
-    }
-}
-
-#define min(a,b) ((a)<(b)?(a):(b))
-
-static void
-random_helix (Display *dpy, Window window, XColor *color, Bool *got_color)
-{
-  Colormap cmap;
-  int width, height;
-  int radius, radius1, radius2, d_angle, factor1, factor2, factor3, factor4;
-  double divisor;
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  width = xgwa.width;
-  height = xgwa.height;
-  cmap = xgwa.colormap;
-
-  radius = min (width, height) / 2;
-
-  d_angle = 0;
-  factor1 = 2;
-  factor2 = 2;
-  factor3 = 2;
-  factor4 = 2;
-
-  divisor = ((frand (3.0) + 1) * (((random() & 1) * 2) - 1));
-
-  if ((random () & 1) == 0)
-    {
-      radius1 = radius;
-      radius2 = radius / divisor;
-    }
-  else
-    {
-      radius2 = radius;
-      radius1 = radius / divisor;
-    }
-
-  while (gcd (360, d_angle) >= 2)
-    d_angle = random () % 360;
-
-#define random_factor()                                \
-  (((random() % 7) ? ((random() & 1) + 1) : 3) \
-   * (((random() & 1) * 2) - 1))
-
-  while (gcd (gcd (gcd (factor1, factor2), factor3), factor4) != 1)
-    {
-      factor1 = random_factor ();
-      factor2 = random_factor ();
-      factor3 = random_factor ();
-      factor4 = random_factor ();
-    }
-
-  if (mono_p)
-    XSetForeground (dpy, draw_gc, default_fg_pixel);
-  else
-    {
-      hsv_to_rgb (random () % 360, frand (1.0), frand (0.5) + 0.5,
-                 &color->red, &color->green, &color->blue);
-      if ((*got_color = XAllocColor (dpy, cmap, color)))
-       XSetForeground (dpy, draw_gc, color->pixel);
-      else
-       XSetForeground (dpy, draw_gc, default_fg_pixel);
-    }
-  helix (dpy, window, radius1, radius2, d_angle,
-        factor1, factor2, factor3, factor4);
-}
-
-static void
-random_trig (Display *dpy, Window window, XColor *color, Bool *got_color)
-{
-  Colormap cmap;
-  int width, height;
-  int radius, d_angle, factor1, factor2;
-  int offset, d_angle_offset, dir, density;
-
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  width = xgwa.width;
-  height = xgwa.height;
-  cmap = xgwa.colormap;
-
-  radius = min (width, height) / 2;
-
-  d_angle = 0;
-  factor1 = (random() % 8) + 1;
-  do {
-    factor2 = (random() % 8) + 1;
-  } while (factor1 == factor2);
-
-  dir = (random() & 1) ? 1 : -1;
-  d_angle_offset = random() % 360;
-  offset = ((random() % ((360 / 4) - 1)) + 1) / 4;
-  density = 1 << ((random() % 4) + 4); /* Higher density, higher angles */
-
-  if (mono_p)
-    XSetForeground (dpy, draw_gc, default_fg_pixel);
-  else
-    {
-      hsv_to_rgb (random () % 360, frand (1.0), frand (0.5) + 0.5,
-                 &color->red, &color->green, &color->blue);
-      if ((*got_color = XAllocColor (dpy, cmap, color)))
-       XSetForeground (dpy, draw_gc, color->pixel);
-      else
-       XSetForeground (dpy, draw_gc, default_fg_pixel);
-    }
-  trig (dpy, window, d_angle, factor1, factor2,
-       offset, d_angle_offset, dir, density);
-}
-
-static void
-random_helix_or_trig (Display *dpy, Window window)
-{
-  Bool free_color = False;
-  XColor color;
-  int width, height;
-  XWindowAttributes xgwa;
-  Colormap cmap;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  width = xgwa.width;
-  height = xgwa.height;
-  cmap = xgwa.colormap;
-
-  if (random() & 1)
-    random_helix(dpy, window, &color, &free_color);
-  else
-    random_trig(dpy, window, &color, &free_color);
-
-  XSync (dpy, False);
-  screenhack_handle_events (dpy);
-  sleep ( sleep_time );
-
-  screenhack_handle_events (dpy);
-  erase_full_window(dpy, window);
-
-  if (free_color) XFreeColors (dpy, cmap, &color.pixel, 1, 0);
-  XSync (dpy, False);
-  screenhack_handle_events (dpy);
-  sleep (1);
-}
-
-\f
-char *progclass = "Helix";
-
-char *defaults [] = {
-  ".background: black",
-  "*delay:      5",
-  0
-};
-
-XrmOptionDescRec options [] = {   
-  { "-delay",           ".delay",               XrmoptionSepArg, 0 },
-  { 0 },
-};
-int options_size = (sizeof (options) / sizeof (options[0]));
-
-void
-screenhack (Display *dpy, Window window)
-{
-  sleep_time = get_integer_resource("delay", "Integer");
-  init_helix (dpy, window);
-  while (1)
-    random_helix_or_trig (dpy, window);
-}
diff --git a/hacks/helix.man b/hacks/helix.man
deleted file mode 100644 (file)
index 2c1c3e3..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-.TH XScreenSaver 1 "18-sep-97" "X Version 11"
-.SH NAME
-helix - draw helical string-art patterns
-.SH SYNOPSIS
-.B helix
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-erase\-speed \fIusecs\fP] [\-erase\-mode \fIinteger\fP] [\-delay \fIseconds\fP] [\-install] [\-visual \fIvisual\fP]
-.SH DESCRIPTION
-The \fIhelix\fP program draws interesting patterns composed of line segments
-in random colors.
-.SH OPTIONS
-.I helix
-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 \-erase\-speed \fIusecs\fP
-This controls the speed at which the screen will be erased. Lower numbers 
-erase faster.
-.TP 8
-.B \-erase\-mode \fIinteger\fP
-This sets the erase mode. Mode \-1 chooses a random mode each time. There
-are currently 6 modes defined (0\-5).
-.TP 8
-.B \-delay \fIseconds\fP
-This sets the number of seconds that the helix will be on the screen.
-.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 SEE ALSO
-.BR X (1),
-.BR xscreensaver (1)
-.SH COPYRIGHT
-Copyright \(co 1992 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 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>, 13-aug-92.
-Screen eraser improved by Johannes Keukelaar <johannes@nada.kth.se>, 
- 18-sep-97.
diff --git a/hacks/hopalong.c b/hacks/hopalong.c
deleted file mode 100644 (file)
index 7b252e8..0000000
+++ /dev/null
@@ -1,552 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * hop --- real plane fractals.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)hop.c        4.02 97/04/01 xlockmore";
-#endif
-
-/* Copyright (c) 1988-91 by Patrick J. Naughton.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * Changes of David Bagley <bagleyd@bigfoot.com>
- * 24-Jun-97: EJK and RR functions stolen from xmartin2.2
- *            Ed Kubaitis <ejk@ux2.cso.uiuc.edu> ejk functions and xmartin 
- *            Renaldo Recuerdo rr function, generalized exponent version
- *              of the Barry Martin's square root function
- * 10-May-97: jwz@jwz.org: ported from xlockmore 4.03a10 to be a 
- *                       standalone program and thus usable with xscreensaver
- *                       (I threw away my 1992 port and started over.)
- * 27-Jul-95: added Peter de Jong's hop from Scientific American
- *            July 87 p. 111.  Sometimes they are amazing but there are a
- *            few duds (I did not see a pattern in the parameters).
- * 29-Mar-95: changed name from hopalong to hop
- * 09-Dec-94: added Barry Martin's sine hop
- *
- * (12-Aug-92: jwz@lucid.com: made xlock version run standalone.)
- *
- * Changes of Patrick J. Naughton
- * 29-Oct-90: fix bad (int) cast.
- * 29-Jul-90: support for multiple screens.
- * 08-Jul-90: new timing and colors and new algorithm for fractals.
- * 15-Dec-89: Fix for proper skipping of {White,Black}Pixel() in colors.
- * 08-Oct-89: Fixed long standing typo bug in RandomInitHop();
- *           Fixed bug in memory allocation in init_hop();
- *           Moved seconds() to an extern.
- *           Got rid of the % mod since .mod is slow on a sparc.
- * 20-Sep-89: Lint.
- * 31-Aug-88: Forked from xlock.c for modularity.
- * 23-Mar-88: Coded HOPALONG routines from Scientific American Sept. 86 p. 14.
- *            Hopalong was attributed to Barry Martin of Aston University
- *            (Birmingham, England)
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Hopalong"
-# define HACK_INIT                                     init_hop
-# define HACK_DRAW                                     draw_hop
-# define HACK_FREE                                     release_hop
-# define hop_opts                                      xlockmore_opts
-# define DEFAULTS      "*delay:                10000   \n"                     \
-                                       "*count:                1000    \n"                     \
-                                       "*cycles:               2500    \n"                     \
-                                       "*ncolors:              200     \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-# include "erase.h"
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#define DEF_MARTIN "False"
-#define DEF_POPCORN "False"
-#define DEF_EJK1 "False"
-#define DEF_EJK2 "False"
-#define DEF_EJK3 "False"
-#define DEF_EJK4 "False"
-#define DEF_EJK5 "False"
-#define DEF_EJK6 "False"
-#define DEF_RR "False"
-#define DEF_JONG "False"
-#define DEF_SINE "False"
-
-static Bool martin;
-static Bool popcorn;
-static Bool ejk1;
-static Bool ejk2;
-static Bool ejk3;
-static Bool ejk4;
-static Bool ejk5;
-static Bool ejk6;
-static Bool rr;
-static Bool jong;
-static Bool sine;
-
-static XrmOptionDescRec opts[] =
-{
-       {"-martin", ".hop.martin", XrmoptionNoArg, (caddr_t) "on"},
-       {"+martin", ".hop.martin", XrmoptionNoArg, (caddr_t) "off"},
-       {"-popcorn", ".hop.popcorn", XrmoptionNoArg, (caddr_t) "on"},
-       {"+popcorn", ".hop.popcorn", XrmoptionNoArg, (caddr_t) "off"},
-       {"-ejk1", ".hop.ejk1", XrmoptionNoArg, (caddr_t) "on"},
-       {"+ejk1", ".hop.ejk1", XrmoptionNoArg, (caddr_t) "off"},
-       {"-ejk2", ".hop.ejk2", XrmoptionNoArg, (caddr_t) "on"},
-       {"+ejk2", ".hop.ejk2", XrmoptionNoArg, (caddr_t) "off"},
-       {"-ejk3", ".hop.ejk3", XrmoptionNoArg, (caddr_t) "on"},
-       {"+ejk3", ".hop.ejk3", XrmoptionNoArg, (caddr_t) "off"},
-       {"-ejk4", ".hop.ejk4", XrmoptionNoArg, (caddr_t) "on"},
-       {"+ejk4", ".hop.ejk4", XrmoptionNoArg, (caddr_t) "off"},
-       {"-ejk5", ".hop.ejk5", XrmoptionNoArg, (caddr_t) "on"},
-       {"+ejk5", ".hop.ejk5", XrmoptionNoArg, (caddr_t) "off"},
-       {"-ejk6", ".hop.ejk6", XrmoptionNoArg, (caddr_t) "on"},
-       {"+ejk6", ".hop.ejk6", XrmoptionNoArg, (caddr_t) "off"},
-       {"-rr", ".hop.rr", XrmoptionNoArg, (caddr_t) "on"},
-       {"+rr", ".hop.rr", XrmoptionNoArg, (caddr_t) "off"},
-       {"-jong", ".hop.jong", XrmoptionNoArg, (caddr_t) "on"},
-       {"+jong", ".hop.jong", XrmoptionNoArg, (caddr_t) "off"},
-       {"-sine", ".hop.sine", XrmoptionNoArg, (caddr_t) "on"},
-       {"+sine", ".hop.sine", XrmoptionNoArg, (caddr_t) "off"}
-};
-static argtype vars[] =
-{
-       {(caddr_t *) & martin, "martin", "Martin", DEF_MARTIN, t_Bool},
-       {(caddr_t *) & popcorn, "popcorn", "Popcorn", DEF_POPCORN, t_Bool},
-       {(caddr_t *) & ejk1, "ejk1", "EJK1", DEF_EJK1, t_Bool},
-       {(caddr_t *) & ejk2, "ejk2", "EJK2", DEF_EJK2, t_Bool},
-       {(caddr_t *) & ejk3, "ejk3", "EJK3", DEF_EJK3, t_Bool},
-       {(caddr_t *) & ejk4, "ejk4", "EJK4", DEF_EJK4, t_Bool},
-       {(caddr_t *) & ejk5, "ejk5", "EJK5", DEF_EJK5, t_Bool},
-       {(caddr_t *) & ejk6, "ejk6", "EJK6", DEF_EJK6, t_Bool},
-       {(caddr_t *) & rr, "rr", "RR", DEF_RR, t_Bool},
-       {(caddr_t *) & jong, "jong", "Jong", DEF_JONG, t_Bool},
-       {(caddr_t *) & sine, "sine", "Sine", DEF_SINE, t_Bool}
-};
-static OptionStruct desc[] =
-{
-       {"-/+martin", "turn on/off sqrt format"},
-       {"-/+popcorn", "turn on/off Clifford A. Pickover's popcorn format"},
-       {"-/+ejk1", "turn on/off ejk1 format"},
-       {"-/+ejk2", "turn on/off ejk2 format"},
-       {"-/+ejk3", "turn on/off ejk3 format"},
-       {"-/+ejk4", "turn on/off ejk4 format"},
-       {"-/+ejk5", "turn on/off ejk5 format"},
-       {"-/+ejk6", "turn on/off ejk6 format"},
-       {"-/+rr", "turn on/off rr format"},
-       {"-/+jong", "turn on/off jong format"},
-       {"-/+sine", "turn on/off sine format"}
-};
-
-ModeSpecOpt hop_opts =
-{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
-
-#ifdef USE_MODULES
-ModStruct   hop_description =
-{"hop", "init_hop", "draw_hop", "release_hop",
- "refresh_hop", "init_hop", NULL, &hop_opts,
- 10000, 1000, 2500, 1, 64, 1.0, "",
- "Shows real plane iterated fractals", 0, NULL};
-
-#endif
-
-#define MARTIN 0
-#define POPCORN 7
-#define SINE 8
-#define EJK1 1
-#define EJK2 2
-#define EJK3 9
-#define EJK4 3
-#define EJK5 4
-#define EJK6 10
-#define RR 5
-#define JONG 6
-#ifdef OFFENDING
-#define OPS 8                  /* 8, 9, 10 might be too close to a swastika for some... */
-#else
-#define OPS 11
-#endif
-
-typedef struct {
-       int         centerx, centery;   /* center of the screen */
-       double      a, b, c, d;
-       double      i, j;       /* hopalong parameters */
-       int         inc;
-       int         pix;
-       int         op;
-       int         count;
-       int         bufsize;
-       XPoint     *pointBuffer;        /* pointer for XDrawPoints */
-} hopstruct;
-
-static hopstruct *hops = NULL;
-
-void
-init_hop(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       hopstruct  *hp;
-       double      range;
-
-       if (hops == NULL) {
-               if ((hops = (hopstruct *) calloc(MI_NUM_SCREENS(mi),
-                                                sizeof (hopstruct))) == NULL)
-                       return;
-       }
-       hp = &hops[MI_SCREEN(mi)];
-
-       hp->centerx = MI_WIDTH(mi) / 2;
-       hp->centery = MI_HEIGHT(mi) / 2;
-       /* Make the other operations less common since they are less interesting */
-       if (MI_IS_FULLRANDOM(mi)) {
-               hp->op = NRAND(OPS);
-       } else {
-               if (martin)
-                       hp->op = MARTIN;
-               else if (popcorn)
-                       hp->op = POPCORN;
-               else if (ejk1)
-                       hp->op = EJK1;
-               else if (ejk2)
-                       hp->op = EJK2;
-               else if (ejk3)
-                       hp->op = EJK3;
-               else if (ejk4)
-                       hp->op = EJK4;
-               else if (ejk5)
-                       hp->op = EJK5;
-               else if (ejk6)
-                       hp->op = EJK6;
-               else if (rr)
-                       hp->op = RR;
-               else if (jong)
-                       hp->op = JONG;
-               else if (sine)
-                       hp->op = SINE;
-               else
-                       hp->op = NRAND(OPS);
-       }
-
-       range = sqrt((double) hp->centerx * hp->centerx +
-            (double) hp->centery * hp->centery) / (1.0 + LRAND() / MAXRAND);
-       hp->i = hp->j = 0.0;
-       hp->inc = (int) ((LRAND() / MAXRAND) * 200) - 100;
-#undef XMARTIN
-       switch (hp->op) {
-               case MARTIN:
-#ifdef XMARTIN
-                       hp->a = (LRAND() / MAXRAND) * 1500.0 + 40.0;
-                       hp->b = (LRAND() / MAXRAND) * 17.0 + 3.0;
-                       hp->c = (LRAND() / MAXRAND) * 3000.0 + 100.0;
-#else
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 20.0;
-                       hp->b = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 20.0;
-                       if (LRAND() & 1)
-                               hp->c = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 20.0;
-                       else
-                               hp->c = 0.0;
-#endif
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "sqrt a=%g, b=%g, c=%g\n", hp->a, hp->b, hp->c);
-                       break;
-               case EJK1:
-#ifdef XMARTIN
-                       hp->a = (LRAND() / MAXRAND) * 500.0;
-                       hp->c = (LRAND() / MAXRAND) * 100.0 + 10.0;
-#else
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 30.0;
-                       hp->c = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 40.0;
-#endif
-                       hp->b = (LRAND() / MAXRAND) * 0.4;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "ejk1 a=%g, b=%g, c=%g\n", hp->a, hp->b, hp->c);
-                       break;
-               case EJK2:
-#ifdef XMARTIN
-                       hp->a = (LRAND() / MAXRAND) * 500.0;
-#else
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 30.0;
-#endif
-                       hp->b = pow(10.0, 6.0 + (LRAND() / MAXRAND) * 24.0);
-                       if (LRAND() & 1)
-                               hp->b = -hp->b;
-                       hp->c = pow(10.0, (LRAND() / MAXRAND) * 9.0);
-                       if (LRAND() & 1)
-                               hp->c = -hp->c;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "ejk2 a=%g, b=%g, c=%g\n", hp->a, hp->b, hp->c);
-                       break;
-               case EJK3:
-#ifdef XMARTIN
-                       hp->a = (LRAND() / MAXRAND) * 500.0;
-                       hp->c = (LRAND() / MAXRAND) * 80.0 + 30.0;
-#else
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 30.0;
-                       hp->c = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 70.0;
-#endif
-                       hp->b = (LRAND() / MAXRAND) * 0.35 + 0.5;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "ejk3 a=%g, b=%g, c=%g\n", hp->a, hp->b, hp->c);
-                       break;
-               case EJK4:
-#ifdef XMARTIN
-                       hp->a = (LRAND() / MAXRAND) * 1000.0;
-                       hp->c = (LRAND() / MAXRAND) * 40.0 + 30.0;
-#else
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 2.0;
-                       hp->c = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 200.0;
-#endif
-                       hp->b = (LRAND() / MAXRAND) * 9.0 + 1.0;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "ejk4 a=%g, b=%g, c=%g\n", hp->a, hp->b, hp->c);
-                       break;
-               case EJK5:
-#ifdef XMARTIN
-                       hp->a = (LRAND() / MAXRAND) * 600.0;
-                       hp->c = (LRAND() / MAXRAND) * 90.0 + 20.0;
-#else
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 2.0;
-                       hp->c = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 200.0;
-#endif
-                       hp->b = (LRAND() / MAXRAND) * 0.3 + 0.1;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "ejk5 a=%g, b=%g, c=%g\n", hp->a, hp->b, hp->c);
-                       break;
-               case EJK6:
-#ifdef XMARTIN
-                       hp->a = (LRAND() / MAXRAND) * 100.0 + 550.0;
-#else
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 30.0;
-#endif
-                       hp->b = (LRAND() / MAXRAND) + 0.5;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "ejk6 a=%g, b=%g\n", hp->a, hp->b);
-                       break;
-               case RR:
-#ifdef XMARTIN
-                       hp->a = (LRAND() / MAXRAND) * 100.0;
-                       hp->b = (LRAND() / MAXRAND) * 20.0;
-                       hp->c = (LRAND() / MAXRAND) * 200.0;
-#else
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 40.0;
-                       hp->b = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 200.0;
-                       hp->c = ((LRAND() / MAXRAND) * 2.0 - 1.0) * range / 20.0;
-#endif
-                       hp->d = (LRAND() / MAXRAND) * 0.9;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "rr a=%g, b=%g, c=%g, d=%g\n",
-                                              hp->a, hp->b, hp->c, hp->d);
-                       break;
-               case POPCORN:
-                       hp->a = 0.0;
-                       hp->b = 0.0;
-                       hp->c = ((LRAND() / MAXRAND) * 2.0 - 1.0) * 0.24 + 0.25;
-                       hp->inc = 100;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "popcorn a=%g, b=%g, c=%g, d=%g\n",
-                                              hp->a, hp->b, hp->c, hp->d);
-                       break;
-               case JONG:
-                       hp->a = ((LRAND() / MAXRAND) * 2.0 - 1.0) * M_PI;
-                       hp->b = ((LRAND() / MAXRAND) * 2.0 - 1.0) * M_PI;
-                       hp->c = ((LRAND() / MAXRAND) * 2.0 - 1.0) * M_PI;
-                       hp->d = ((LRAND() / MAXRAND) * 2.0 - 1.0) * M_PI;
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "jong a=%g, b=%g, c=%g, d=%g\n",
-                                              hp->a, hp->b, hp->c, hp->d);
-                       break;
-               case SINE:      /* MARTIN2 */
-#ifdef XMARTIN
-                       hp->a = M_PI + ((LRAND() / MAXRAND) * 2.0 - 1.0) * 0.07;
-#else
-                       hp->a = M_PI + ((LRAND() / MAXRAND) * 2.0 - 1.0) * 0.7;
-#endif
-                       if (MI_IS_VERBOSE(mi))
-                               (void) fprintf(stdout, "sine a=%g\n", hp->a);
-                       break;
-       }
-       if (MI_NPIXELS(mi) > 2)
-               hp->pix = NRAND(MI_NPIXELS(mi));
-       hp->bufsize = MI_COUNT(mi);
-
-       if (!hp->pointBuffer)
-               hp->pointBuffer = (XPoint *) malloc(hp->bufsize * sizeof (XPoint));
-
-       MI_CLEARWINDOW(mi);
-
-       XSetForeground(display, gc, MI_WHITE_PIXEL(mi));
-       hp->count = 0;
-}
-
-
-void
-draw_hop(ModeInfo * mi)
-{
-       hopstruct  *hp = &hops[MI_SCREEN(mi)];
-       double      oldj, oldi;
-       XPoint     *xp = hp->pointBuffer;
-       int         k = hp->bufsize;
-
-       MI_IS_DRAWN(mi) = True;
-
-       hp->inc++;
-       if (MI_NPIXELS(mi) > 2) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_PIXEL(mi, hp->pix));
-               if (++hp->pix >= MI_NPIXELS(mi))
-                       hp->pix = 0;
-       }
-       while (k--) {
-               oldj = hp->j;
-               switch (hp->op) {
-                       case MARTIN:    /* SQRT, MARTIN1 */
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj + ((hp->i < 0)
-                                          ? sqrt(fabs(hp->b * oldi - hp->c))
-                                       : -sqrt(fabs(hp->b * oldi - hp->c)));
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-                       case EJK1:
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj - ((hp->i > 0) ? (hp->b * oldi - hp->c) :
-                                               -(hp->b * oldi - hp->c));
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-                       case EJK2:
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj - ((hp->i < 0) ? log(fabs(hp->b * oldi - hp->c)) :
-                                          -log(fabs(hp->b * oldi - hp->c)));
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-                       case EJK3:
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj - ((hp->i > 0) ? sin(hp->b * oldi) - hp->c :
-                                               -sin(hp->b * oldi) - hp->c);
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-                       case EJK4:
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj - ((hp->i > 0) ? sin(hp->b * oldi) - hp->c :
-                                         -sqrt(fabs(hp->b * oldi - hp->c)));
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-                       case EJK5:
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj - ((hp->i > 0) ? sin(hp->b * oldi) - hp->c :
-                                               -(hp->b * oldi - hp->c));
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-                       case EJK6:
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj - asin((hp->b * oldi) - (long) (hp->b * oldi));
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-                       case RR:        /* RR1 */
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj - ((hp->i < 0) ? -pow(fabs(hp->b * oldi - hp->c), hp->d) :
-                                    pow(fabs(hp->b * oldi - hp->c), hp->d));
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-                       case POPCORN:
-#define HVAL 0.05
-#define INCVAL 50
-                               {
-                                       double      tempi, tempj;
-
-                                       if (hp->inc >= 100)
-                                               hp->inc = 0;
-                                       if (hp->inc == 0) {
-                                               if (hp->a++ >= INCVAL) {
-                                                       hp->a = 0;
-                                                       if (hp->b++ >= INCVAL)
-                                                               hp->b = 0;
-                                               }
-                                               hp->i = (-hp->c * INCVAL / 2 + hp->c * hp->a) * M_PI / 180.0;
-                                               hp->j = (-hp->c * INCVAL / 2 + hp->c * hp->b) * M_PI / 180.0;
-                                       }
-                                       tempi = hp->i - HVAL * sin(hp->j + tan(3.0 * hp->j));
-                                       tempj = hp->j - HVAL * sin(hp->i + tan(3.0 * hp->i));
-                                       xp->x = hp->centerx + (int) (MI_WIDTH(mi) / 40 * tempi);
-                                       xp->y = hp->centery + (int) (MI_HEIGHT(mi) / 40 * tempj);
-                                       hp->i = tempi;
-                                       hp->j = tempj;
-                               }
-                               break;
-                       case JONG:
-                               if (hp->centerx > 0)
-                                       oldi = hp->i + 4 * hp->inc / hp->centerx;
-                               else
-                                       oldi = hp->i;
-                               hp->j = sin(hp->c * hp->i) - cos(hp->d * hp->j);
-                               hp->i = sin(hp->a * oldj) - cos(hp->b * oldi);
-                               xp->x = hp->centerx + (int) (hp->centerx * (hp->i + hp->j) / 4.0);
-                               xp->y = hp->centery - (int) (hp->centery * (hp->i - hp->j) / 4.0);
-                               break;
-                       case SINE:      /* MARTIN2 */
-                               oldi = hp->i + hp->inc;
-                               hp->j = hp->a - hp->i;
-                               hp->i = oldj - sin(oldi);
-                               xp->x = hp->centerx + (int) (hp->i + hp->j);
-                               xp->y = hp->centery - (int) (hp->i - hp->j);
-                               break;
-               }
-               xp++;
-       }
-       XDrawPoints(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                   hp->pointBuffer, hp->bufsize, CoordModeOrigin);
-       if (++hp->count > MI_CYCLES(mi)) {
-#ifdef STANDALONE
-           erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif /* STANDALONE */
-               init_hop(mi);
-       }
-}
-
-void
-release_hop(ModeInfo * mi)
-{
-       if (hops != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       hopstruct  *hp = &hops[screen];
-
-                       if (hp->pointBuffer)
-                               (void) free((void *) hp->pointBuffer);
-               }
-
-               (void) free((void *) hops);
-               hops = NULL;
-       }
-}
-
-void
-refresh_hop(ModeInfo * mi)
-{
-       MI_CLEARWINDOW(mi);
-}
diff --git a/hacks/hopalong.man b/hacks/hopalong.man
deleted file mode 100644 (file)
index d36a360..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-hopalong - draw real plane fractals
-.SH SYNOPSIS
-.B hopalong
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-jong] [\-no\-jong] [\-jong] [\-no\-sine]
-
-.SH DESCRIPTION
-The \fIhopalong\fP program generates real plane fractals as described in
-the September 1986 issue of Scientific American.
-.SH OPTIONS
-.I hopalong
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-The colors used cycle through the hue, making N stops around
-the color wheel.
-.TP 8
-.B \-cycles \fIinteger\fP
-How long to run each batch.  Default 2500 pixels.
-.TP 8
-.B \-count \fIinteger\fP
-How many pixels should be drawn before a color change.  Default 1000.
-.TP 8
-.B \-jong \fIinteger\fP
-.TP 8
-.B \-no\-jong \fIinteger\fP
-Whether to use the Jong format (default is to choose randomly.)
-
-.TP 8
-.B \-sine \fIinteger\fP
-.TP 8
-.B \-no\-sine \fIinteger\fP
-Whether to use the Sine format (default is to choose randomly.)
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1988-91 by Patrick J. Naughton.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Patrick J. Naughton <naughton@eng.sun.com>, 23-mar-88.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 13-aug-92, and again on 10-May-97.
diff --git a/hacks/hypercube.c b/hacks/hypercube.c
deleted file mode 100644 (file)
index 5150ec3..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1996, 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.
- *
- * This code derived from TI Explorer Lisp code by Joe Keane, Fritz Mueller,
- * and Jamie Zawinski.
- */
-
-#include <math.h>
-#include "screenhack.h"
-
-static Display *dpy;
-static Window window;
-static GC color0, color1, color2, color3, color4, color5, color6, color7;
-static GC black;
-
-static int delay;
-
-static int observer_z;
-static int x_offset, y_offset;
-static int unit_pixels;
-
-struct point_state {
-  int old_x, old_y;
-  int new_x, new_y;
-  Bool same_p;
-};
-
-static void
-move_line (struct point_state *state0, struct point_state *state1, GC gc)
-{
-  if (state0->same_p && state1->same_p)
-    return;
-  if (mono_p)
-    {
-      XDrawLine (dpy, window, black,
-                state0->old_x, state0->old_y, state1->old_x, state1->old_y);
-      XDrawLine (dpy, window, gc,
-                state0->new_x, state0->new_y, state1->new_x, state1->new_y);
-    }
-  else
-    {
-      XSegment segments [2];
-      segments [0].x1 = state0->old_x; segments [0].y1 = state0->old_y;
-      segments [0].x2 = state1->old_x; segments [0].y2 = state1->old_y;
-      segments [1].x1 = state0->new_x; segments [1].y1 = state0->new_y;
-      segments [1].x2 = state1->new_x; segments [1].y2 = state1->new_y;
-      XDrawSegments (dpy, window, gc, segments, 2);
-    }
-}
-
-static void
-hyper (double xy, double xz, double yz, double xw, double yw, double zw)
-{
-  double cos_xy = cos (xy), sin_xy = sin (xy);
-  double cos_xz = cos (xz), sin_xz = sin (xz);
-  double cos_yz = cos (yz), sin_yz = sin (yz);
-  double cos_xw = cos (xw), sin_xw = sin (xw);
-  double cos_yw = cos (yw), sin_yw = sin (yw);
-  double cos_zw = cos (zw), sin_zw = sin (zw);
-
-  double ax = 1.0, ay = 0.0, az = 0.0, aw = 0.0;
-  double bx = 0.0, by = 1.0, bz = 0.0, bw = 0.0;
-  double cx = 0.0, cy = 0.0, cz = 1.0, cw = 0.0;
-  double dx = 0.0, dy = 0.0, dz = 0.0, dw = 1.0;
-
-  double _tmp0_, _tmp1_;
-
-  struct point_state points [16];
-  memset (points, 0, sizeof (points));
-
-#define mmmm (&points[0])
-#define mmmp (&points[1])
-#define mmpm (&points[2])
-#define mmpp (&points[3])
-#define mpmm (&points[4])
-#define mpmp (&points[5])
-#define mppm (&points[6])
-#define mppp (&points[7])
-#define pmmm (&points[8])
-#define pmmp (&points[9])
-#define pmpm (&points[10])
-#define pmpp (&points[11])
-#define ppmm (&points[12])
-#define ppmp (&points[13])
-#define pppm (&points[14])
-#define pppp (&points[15])
-
-  while (1)
-    {
-      double temp_mult;
-
-#define compute(a,b,c,d,point_state) \
-      temp_mult = (unit_pixels / (((a*az) + (b*bz) + (c*cz) + (d*dz) +   \
-                                  (a*aw) + (b*bw) + (c*cw) + (d*dw))     \
-                                 - observer_z));                         \
-  point_state->old_x = point_state->new_x;                               \
-  point_state->old_y = point_state->new_y;                               \
-  point_state->new_x = ((((a*ax) + (b*bx) + (c*cx) + (d*dx)) * temp_mult) \
-                       + x_offset);                                      \
-  point_state->new_y = ((((a*ay) + (b*by) + (c*cy) + (d*dy)) * temp_mult) \
-                       + y_offset);                                      \
-  point_state->same_p = (point_state->old_x == point_state->new_x &&     \
-                        point_state->old_y == point_state->new_y);
-
-      compute (-1, -1, -1, -1, mmmm);
-      compute (-1, -1, -1,  1, mmmp);
-      compute (-1, -1,  1, -1, mmpm);
-      compute (-1, -1,  1,  1, mmpp);
-      compute (-1,  1, -1, -1, mpmm);
-      compute (-1,  1, -1,  1, mpmp);
-      compute (-1,  1,  1, -1, mppm);
-      compute (-1,  1,  1,  1, mppp);
-      compute ( 1, -1, -1, -1, pmmm);
-      compute ( 1, -1, -1,  1, pmmp);
-      compute ( 1, -1,  1, -1, pmpm);
-      compute ( 1, -1,  1,  1, pmpp);
-      compute ( 1,  1, -1, -1, ppmm);
-      compute ( 1,  1, -1,  1, ppmp);
-      compute ( 1,  1,  1, -1, pppm);
-      compute ( 1,  1,  1,  1, pppp);
-
-      move_line (mmmm, mmmp, color0);
-      move_line (mmmm, mmpm, color0);
-      move_line (mmpm, mmpp, color0);
-      move_line (mmmp, mmpp, color0);
-      
-      move_line (pmmm, pmmp, color1);
-      move_line (pmmm, pmpm, color1);
-      move_line (pmpm, pmpp, color1);
-      move_line (pmmp, pmpp, color1);
-      
-      move_line (mpmm, mpmp, color2);
-      move_line (mpmm, mppm, color2);
-      move_line (mppm, mppp, color2);
-      move_line (mpmp, mppp, color2);
-      
-      move_line (mmpp, mppp, color3);
-      move_line (mmpp, pmpp, color3);
-      move_line (pmpp, pppp, color3);
-      move_line (mppp, pppp, color3);
-      
-      move_line (mmmm, mpmm, color4);
-      move_line (mmmm, pmmm, color4);
-      move_line (mpmm, ppmm, color4);
-      move_line (pmmm, ppmm, color4);
-      
-      move_line (mmmp, mpmp, color5);
-      move_line (mmmp, pmmp, color5);
-      move_line (pmmp, ppmp, color5);
-      move_line (mpmp, ppmp, color5);
-      
-      move_line (mmpm, mppm, color6);
-      move_line (mmpm, pmpm, color6);
-      move_line (pmpm, pppm, color6);
-      move_line (mppm, pppm, color6);
-      
-      move_line (ppmm, ppmp, color7);
-      move_line (ppmm, pppm, color7);
-      move_line (pppm, pppp, color7);
-      move_line (ppmp, pppp, color7);
-
- /* If you get error messages about the following forms, and you think you're
-    using an ANSI C conforming compiler, then you're mistaken.  Possibly you're
-    mixing an ANSI compiler with a non-ANSI preprocessor, or vice versa.
-    Regardless, your system is broken; it's not a bug in this program.
-  */
-#if defined(__STDC__) || defined(__ANSI_CPP__)
-# define rotate(name,dim0,dim1,cos,sin) \
-      _tmp0_ = ((name##dim0 * cos) + (name##dim1 * sin)); \
-      _tmp1_ = ((name##dim1 * cos) - (name##dim0 * sin)); \
-      name##dim0 = _tmp0_; \
-      name##dim1 = _tmp1_;
-
-# define rotates(dim0,dim1) \
-      if (sin_##dim0##dim1 != 0) {                                \
-        rotate(a, dim0, dim1, cos_##dim0##dim1, sin_##dim0##dim1); \
-        rotate(b, dim0, dim1, cos_##dim0##dim1, sin_##dim0##dim1); \
-        rotate(c, dim0, dim1, cos_##dim0##dim1, sin_##dim0##dim1); \
-        rotate(d, dim0, dim1, cos_##dim0##dim1, sin_##dim0##dim1); \
-      }
-
-#else /* !__STDC__, courtesy of Andreas Luik <luik@isa.de> */
-# define rotate(name,dim0,dim1,cos,sin) \
-      _tmp0_ = ((name/**/dim0 * cos) + (name/**/dim1 * sin)); \
-      _tmp1_ = ((name/**/dim1 * cos) - (name/**/dim0 * sin)); \
-      name/**/dim0 = _tmp0_; \
-      name/**/dim1 = _tmp1_;
-
-# define rotates(dim0,dim1) \
-      if (sin_/**/dim0/**/dim1 != 0) {                                \
-        rotate(a,dim0,dim1,cos_/**/dim0/**/dim1,sin_/**/dim0/**/dim1); \
-        rotate(b,dim0,dim1,cos_/**/dim0/**/dim1,sin_/**/dim0/**/dim1); \
-        rotate(c,dim0,dim1,cos_/**/dim0/**/dim1,sin_/**/dim0/**/dim1); \
-        rotate(d,dim0,dim1,cos_/**/dim0/**/dim1,sin_/**/dim0/**/dim1); \
-      }
-#endif /* !__STDC__ */
-
-      rotates (x,y);
-      rotates (x,z);
-      rotates (y,z);
-      rotates (x,w);
-      rotates (y,w);
-      rotates (z,w);
-
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay) usleep (delay);
-    }
-}
-
-\f
-char *progclass = "Hypercube";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*color0:    red",
-  "*color1:    orange",
-  "*color2:    yellow",
-  "*color3:    white",
-  "*color4:    green",
-  "*color5:    cyan",
-  "*color6:    dodgerblue",
-  "*color7:    magenta",
-
-  "*xw:                0.000",
-  "*xy:                0.010",
-  "*xz:                0.005",
-  "*yw:                0.010",
-  "*yz:                0.000",
-  "*zw:                0.000",
-
-  "*observer-z:        5",
-  "*delay:     30000",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-color0",         ".color0",      XrmoptionSepArg, 0 },
-  { "-color1",         ".color1",      XrmoptionSepArg, 0 },
-  { "-color2",         ".color2",      XrmoptionSepArg, 0 },
-  { "-color3",         ".color3",      XrmoptionSepArg, 0 },
-  { "-color4",         ".color4",      XrmoptionSepArg, 0 },
-  { "-color5",         ".color5",      XrmoptionSepArg, 0 },
-  { "-color6",         ".color6",      XrmoptionSepArg, 0 },
-  { "-color7",         ".color7",      XrmoptionSepArg, 0 },
-
-  { "-xw",             ".xw",          XrmoptionSepArg, 0 },
-  { "-xy",             ".xy",          XrmoptionSepArg, 0 },
-  { "-xz",             ".xz",          XrmoptionSepArg, 0 },
-  { "-yw",             ".yw",          XrmoptionSepArg, 0 },
-  { "-yz",             ".yz",          XrmoptionSepArg, 0 },
-  { "-zw",             ".zw",          XrmoptionSepArg, 0 },
-
-  { "-observer-z",     ".observer-z",  XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *d, Window w)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  Colormap cmap;
-  double xy, xz, yz, xw, yw, zw;
-  unsigned long bg;
-
-  dpy = d;
-  window = w;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-
-  x_offset = xgwa.width / 2;
-  y_offset = xgwa.height / 2;
-  unit_pixels = xgwa.width < xgwa.height ? xgwa.width : xgwa.height;
-
-  xy = get_float_resource ("xy", "Float");
-  xz = get_float_resource ("xz", "Float");
-  yz = get_float_resource ("yz", "Float");
-  xw = get_float_resource ("xw", "Float");
-  yw = get_float_resource ("yw", "Float");
-  zw = get_float_resource ("zw", "Float");
-
-  observer_z = get_integer_resource ("observer-z", "Integer");
-
-  delay = get_integer_resource ("delay", "Integer");
-
-  bg = get_pixel_resource ("background", "Background", dpy, cmap);
-
-  if (mono_p)
-    {
-      gcv.function = GXcopy;
-      gcv.foreground = bg;
-      black = XCreateGC (dpy, window, GCForeground|GCFunction, &gcv);
-      gcv.foreground = get_pixel_resource ("foreground", "Foreground",
-                                          dpy, cmap);
-      color0 = color1 = color2 = color3 = color4 = color5 = color6 = color7 =
-       XCreateGC (dpy, window, GCForeground|GCFunction, &gcv);
-    }
-  else
-    {
-      black = 0;
-      gcv.function = GXxor;
-#define make_gc(color,name) \
-       gcv.foreground = bg ^ get_pixel_resource ((name), "Foreground", \
-                                                 dpy, cmap);           \
-       color = XCreateGC (dpy, window, GCForeground|GCFunction, &gcv)
-
-      make_gc (color0,"color0");
-      make_gc (color1,"color1");
-      make_gc (color2,"color2");
-      make_gc (color3,"color3");
-      make_gc (color4,"color4");
-      make_gc (color5,"color5");
-      make_gc (color6,"color6");
-      make_gc (color7,"color7");
-    }
-
-  hyper (xy, xz, yz, xw, yw, zw);
-}
diff --git a/hacks/hypercube.man b/hacks/hypercube.man
deleted file mode 100644 (file)
index 4c5f8f9..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-.TH XScreenSaver 1 "6-dec-92" "X Version 11"
-.SH NAME
-hypercube - 2d projection of a 4d object
-.SH SYNOPSIS
-.B hypercube
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-color[0-7] \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 \fIhypercube\fP program displays a wireframe projection of a hypercube
-which is rotating at user-specified rates around any or all of its four axes.
-.SH OPTIONS
-.I hypercube
-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 \-color0 \fIcolor\fP
-.TP 8
-.B \-color1 \fIcolor\fP
-.TP 8
-.B \-color2 \fIcolor\fP
-.TP 8
-.B \-color3 \fIcolor\fP
-.TP 8
-.B \-color4 \fIcolor\fP
-.TP 8
-.B \-color5 \fIcolor\fP
-.TP 8
-.B \-color6 \fIcolor\fP
-.TP 8
-.B \-color7 \fIcolor\fP
-The colors used to draw the line segments bordering the eight faces of
-the cube.  Some of the faces have only two of their border-lines drawn in
-the specified color, and some have all four.
-.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 cube 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 1992 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 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>, 6-dec-92.
diff --git a/hacks/ifs.c b/hacks/ifs.c
deleted file mode 100644 (file)
index 3bccf87..0000000
+++ /dev/null
@@ -1,479 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * ifs --- Modified iterated functions system.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)ifs.c           4.02 97/04/01 xlockmore";
-#endif
-
-/* Copyright (c) 1997 by Massimino Pascal (Pascal.Massimon@ens.fr)
- *
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- *                       Made it render into an offscreen bitmap and then copy
- *                       that onto the screen, to reduce flicker.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "IFS"
-# define HACK_INIT                                     init_ifs
-# define HACK_DRAW                                     draw_ifs
-# define ifs_opts                                      xlockmore_opts
-# define DEFAULTS      "*delay:                20000 \n"                       \
-                                       "*ncolors:              100   \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt ifs_opts = {
-  0, NULL, 0, NULL, NULL };
-
-/*****************************************************/
-/*****************************************************/
-
-typedef float DBL;
-typedef short int F_PT;
-
-/* typedef float               F_PT; */
-
-/*****************************************************/
-
-#define FIX 12
-#define UNIT   ( 1<<FIX )
-#define MAX_SIMI  6
-
-   /* settings for a PC 120Mhz... */
-#define MAX_DEPTH_2  10
-#define MAX_DEPTH_3  6
-#define MAX_DEPTH_4  4
-#define MAX_DEPTH_5  3
-
-#define DBL_To_F_PT(x)  (F_PT)( (DBL)(UNIT)*(x) )
-
-/*****************************************************/
-
-static int  Max_Colors;
-static ModeInfo *The_MI;
-static F_PT Lx, Ly;
-static int  D;
-static Display *display;
-static GC   gc;
-static Window window;
-
-/*****************************************************/
-
-typedef struct Similitude_Struct SIMI;
-typedef struct Fractal_Struct FRACTAL;
-
-struct Similitude_Struct {
-
-       DBL         c_x, c_y;
-       DBL         r, r2, A, A2;
-       F_PT        Ct, St, Ct2, St2;
-       F_PT        Cx, Cy;
-       F_PT        R, R2;
-};
-
-struct Fractal_Struct {
-
-       int         Nb_Simi;
-       SIMI        Components[5 * MAX_SIMI];
-       int         Depth, Col;
-       int         Count, Speed;
-       int         Width, Height, Lx, Ly;
-       DBL         r_mean, dr_mean, dr2_mean;
-       int         Cur_Pt, Max_Pt;
-       XPoint     *Buffer1, *Buffer2;
-    Pixmap      dbuf;  /* jwz */
-    GC          dbuf_gc;
-};
-
-static FRACTAL *Root = NULL, *Cur_F;
-static XPoint *Buf;
-static int  Cur_Pt;
-
-
-/*****************************************************/
-/*****************************************************/
-
-static      DBL
-Gauss_Rand(DBL c, DBL A, DBL S)
-{
-       DBL         y;
-
-       y = (DBL) LRAND() / MAXRAND;
-       y = A * (1.0 - exp(-y * y * S)) / (1.0 - exp(-S));
-       if (NRAND(2))
-               return (c + y);
-       return (c - y);
-}
-
-static      DBL
-Half_Gauss_Rand(DBL c, DBL A, DBL S)
-{
-       DBL         y;
-
-       y = (DBL) LRAND() / MAXRAND;
-       y = A * (1.0 - exp(-y * y * S)) / (1.0 - exp(-S));
-       return (c + y);
-}
-
-static void
-Random_Simis(FRACTAL * F, SIMI * Cur, int i)
-{
-       while (i--) {
-               Cur->c_x = Gauss_Rand(0.0, .8, 4.0);
-               Cur->c_y = Gauss_Rand(0.0, .8, 4.0);
-               Cur->r = Gauss_Rand(F->r_mean, F->dr_mean, 3.0);
-               Cur->r2 = Half_Gauss_Rand(0.0, F->dr2_mean, 2.0);
-               Cur->A = Gauss_Rand(0.0, 360.0, 4.0) * (M_PI / 180.0);
-               Cur->A2 = Gauss_Rand(0.0, 360.0, 4.0) * (M_PI / 180.0);
-               Cur++;
-       }
-}
-
-/***************************************************************/
-
-void
-init_ifs(ModeInfo * mi)
-{
-       int         i;
-       FRACTAL    *Fractal;
-
-       if (Root == NULL) {
-               Root = (FRACTAL *) calloc(
-                                      MI_NUM_SCREENS(mi), sizeof (FRACTAL));
-               if (Root == NULL)
-                       return;
-       }
-       Fractal = &Root[MI_SCREEN(mi)];
-
-       if (Fractal->Max_Pt) {
-               free(Fractal->Buffer1);
-               free(Fractal->Buffer2);
-       }
-       i = (NRAND(4)) + 2;     /* Number of centers */
-       switch (i) {
-               case 3:
-                       Fractal->Depth = MAX_DEPTH_3;
-                       Fractal->r_mean = .6;
-                       Fractal->dr_mean = .4;
-                       Fractal->dr2_mean = .3;
-                       break;
-
-               case 4:
-                       Fractal->Depth = MAX_DEPTH_4;
-                       Fractal->r_mean = .5;
-                       Fractal->dr_mean = .4;
-                       Fractal->dr2_mean = .3;
-                       break;
-
-               case 5:
-                       Fractal->Depth = MAX_DEPTH_5;
-                       Fractal->r_mean = .5;
-                       Fractal->dr_mean = .4;
-                       Fractal->dr2_mean = .3;
-                       break;
-
-               default:
-               case 2:
-                       Fractal->Depth = MAX_DEPTH_2;
-                       Fractal->r_mean = .7;
-                       Fractal->dr_mean = .3;
-                       Fractal->dr2_mean = .4;
-                       break;
-       }
-       /* (void) fprintf( stderr, "N=%d\n", i ); */
-       Fractal->Nb_Simi = i;
-       Fractal->Max_Pt = Fractal->Nb_Simi - 1;
-       for (i = 0; i <= Fractal->Depth + 2; ++i)
-               Fractal->Max_Pt *= Fractal->Nb_Simi;
-
-       Fractal->Buffer1 = (XPoint *) calloc(Fractal->Max_Pt, sizeof (XPoint));
-       if (Fractal->Buffer1 == NULL)
-               goto Abort;
-       Fractal->Buffer2 = (XPoint *) calloc(Fractal->Max_Pt, sizeof (XPoint));
-       if (Fractal->Buffer2 == NULL)
-               goto Abort;
-
-       Fractal->Speed = 6;
-       Fractal->Width = MI_WIN_WIDTH(mi);
-       Fractal->Height = MI_WIN_HEIGHT(mi);
-       Fractal->Cur_Pt = 0;
-       Fractal->Count = 0;
-       Fractal->Lx = (Fractal->Width - 1) / 2;
-       Fractal->Ly = (Fractal->Height - 1) / 2;
-       Fractal->Col = NRAND(MI_NPIXELS(mi) - 1) + 1;
-
-       Random_Simis(Fractal, Fractal->Components, 5 * MAX_SIMI);
-
-       Fractal->dbuf = XCreatePixmap(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                                                 Fractal->Width, Fractal->Height, 1);
-       if (Fractal->dbuf)
-         {
-               XGCValues gcv;
-               gcv.foreground = 0;
-               gcv.background = 0;
-               gcv.function = GXcopy;
-               Fractal->dbuf_gc = XCreateGC(MI_DISPLAY(mi), Fractal->dbuf,
-                                                                        GCForeground|GCBackground|GCFunction,
-                                                                        &gcv);
-               XFillRectangle(MI_DISPLAY(mi), Fractal->dbuf,
-                                          Fractal->dbuf_gc, 0,0, Fractal->Width, Fractal->Height);
-
-               XSetBackground(MI_DISPLAY(mi), MI_GC(mi), MI_WIN_BLACK_PIXEL(mi));
-               XSetFunction(MI_DISPLAY(mi), MI_GC(mi), GXcopy);
-         }
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-       return;
-
-      Abort:
-       if (Fractal->Buffer1 != NULL)
-               free(Fractal->Buffer1);
-       if (Fractal->Buffer2 != NULL)
-               free(Fractal->Buffer2);
-       Fractal->Buffer1 = NULL;
-       Fractal->Buffer2 = NULL;
-       Fractal->Max_Pt = 0;
-       return;
-}
-
-
-/***************************************************************/
-
-#ifndef __GNUC__
-# undef inline
-# define inline /* */
-#endif
-
-static inline void
-Transform(SIMI * Simi, F_PT xo, F_PT yo, F_PT * x, F_PT * y)
-{
-       F_PT        xx, yy;
-
-       xo = xo - Simi->Cx;
-       xo = (xo * Simi->R) / UNIT;
-       yo = yo - Simi->Cy;
-       yo = (yo * Simi->R) / UNIT;
-
-       xx = xo - Simi->Cx;
-       xx = (xx * Simi->R2) / UNIT;
-       yy = -yo - Simi->Cy;
-       yy = (yy * Simi->R2) / UNIT;
-
-       *x = ((xo * Simi->Ct - yo * Simi->St + xx * Simi->Ct2 - yy * Simi->St2) / UNIT) + Simi->Cx;
-       *y = ((xo * Simi->St + yo * Simi->Ct + xx * Simi->St2 + yy * Simi->Ct2) / UNIT) + Simi->Cy;
-}
-
-/***************************************************************/
-
-static void
-Trace(F_PT xo, F_PT yo)
-{
-       F_PT        x, y, i;
-       SIMI       *Cur;
-
-       Cur = Cur_F->Components;
-       for (i = Cur_F->Nb_Simi; i; --i, Cur++) {
-               Transform(Cur, xo, yo, &x, &y);
-               Buf->x = Lx + (x * Lx / (UNIT * 2));
-               Buf->y = Ly - (y * Ly / (UNIT * 2));
-               Buf++;
-               Cur_Pt++;
-
-               if (D && ((x - xo) >> 4) && ((y - yo) >> 4)) {
-                       D--;
-                       Trace(x, y);
-                       D++;
-               }
-       }
-}
-
-static void
-Draw_Fractal(FRACTAL * F)
-{
-       int         i, j;
-       F_PT        x, y, xo, yo;
-       SIMI       *Cur, *Simi;
-
-       for (Cur = F->Components, i = F->Nb_Simi; i; --i, Cur++) {
-               Cur->Cx = DBL_To_F_PT(Cur->c_x);
-               Cur->Cy = DBL_To_F_PT(Cur->c_y);
-
-               Cur->Ct = DBL_To_F_PT(cos(Cur->A));
-               Cur->St = DBL_To_F_PT(sin(Cur->A));
-               Cur->Ct2 = DBL_To_F_PT(cos(Cur->A2));
-               Cur->St2 = DBL_To_F_PT(sin(Cur->A2));
-
-               Cur->R = DBL_To_F_PT(Cur->r);
-               Cur->R2 = DBL_To_F_PT(Cur->r2);
-       }
-
-
-       Cur_Pt = 0;
-       Cur_F = F;
-       Buf = F->Buffer2;
-       Lx = F->Lx;
-       Ly = F->Ly;
-       D = F->Depth;
-       for (Cur = F->Components, i = F->Nb_Simi; i; --i, Cur++) {
-               xo = Cur->Cx;
-               yo = Cur->Cy;
-               for (Simi = F->Components, j = F->Nb_Simi; j; --j, Simi++) {
-                       if (Simi == Cur)
-                               continue;
-                       Transform(Simi, xo, yo, &x, &y);
-                       Trace(x, y);
-               }
-       }
-
-       /* Erase previous */
-
-       if (F->Cur_Pt) {
-               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(The_MI));
-               if (F->dbuf)    /* jwz */
-                 {
-                       XSetForeground(display, F->dbuf_gc, 0);
-/*                 XDrawPoints(display, F->dbuf, F->dbuf_gc, F->Buffer1, F->Cur_Pt,
-                                           CoordModeOrigin); */
-                   XFillRectangle(display, F->dbuf, F->dbuf_gc, 0, 0,
-                                                  F->Width, F->Height);
-                 }
-               else
-                 XDrawPoints(display, window, gc, F->Buffer1, F->Cur_Pt,
-                                         CoordModeOrigin);
-       }
-       if (Max_Colors < 2)
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(The_MI));
-       else
-               XSetForeground(display, gc, MI_PIXEL(The_MI, F->Col % Max_Colors));
-       if (Cur_Pt) {
-         if (F->dbuf)
-               {
-                 XSetForeground(display, F->dbuf_gc, 1);
-                 XDrawPoints(display, F->dbuf, F->dbuf_gc, F->Buffer2, Cur_Pt,
-                                         CoordModeOrigin);
-               }
-         else
-               XDrawPoints(display, window, gc, F->Buffer2, Cur_Pt, CoordModeOrigin);
-       }
-
-       if (F->dbuf)
-         XCopyPlane(display, F->dbuf, window, gc, 0,0,F->Width,F->Height,0,0, 1);
-
-       F->Cur_Pt = Cur_Pt;
-       Buf = F->Buffer1;
-       F->Buffer1 = F->Buffer2;
-       F->Buffer2 = Buf;
-}
-
-
-void
-draw_ifs(ModeInfo * mi)
-{
-       int         i;
-       FRACTAL    *F;
-       DBL         u, uu, v, vv, u0, u1, u2, u3;
-       SIMI       *S, *S1, *S2, *S3, *S4;
-
-       The_MI = mi;
-       display = MI_DISPLAY(mi);
-       window = MI_WINDOW(mi);
-       gc = MI_GC(mi);
-       Max_Colors = MI_NPIXELS(mi);
-
-       F = &Root[MI_SCREEN(mi)];
-
-       u = (DBL) (F->Count) * (DBL) (F->Speed) / 1000.0;
-       uu = u * u;
-       v = 1.0 - u;
-       vv = v * v;
-       u0 = vv * v;
-       u1 = 3.0 * vv * u;
-       u2 = 3.0 * v * uu;
-       u3 = u * uu;
-
-       S = F->Components;
-       S1 = S + F->Nb_Simi;
-       S2 = S1 + F->Nb_Simi;
-       S3 = S2 + F->Nb_Simi;
-       S4 = S3 + F->Nb_Simi;
-
-       for (i = F->Nb_Simi; i; --i, S++, S1++, S2++, S3++, S4++) {
-               S->c_x = u0 * S1->c_x + u1 * S2->c_x + u2 * S3->c_x + u3 * S4->c_x;
-               S->c_y = u0 * S1->c_y + u1 * S2->c_y + u2 * S3->c_y + u3 * S4->c_y;
-               S->r = u0 * S1->r + u1 * S2->r + u2 * S3->r + u3 * S4->r;
-               S->r2 = u0 * S1->r2 + u1 * S2->r2 + u2 * S3->r2 + u3 * S4->r2;
-               S->A = u0 * S1->A + u1 * S2->A + u2 * S3->A + u3 * S4->A;
-               S->A2 = u0 * S1->A2 + u1 * S2->A2 + u2 * S3->A2 + u3 * S4->A2;
-       }
-
-       Draw_Fractal(F);
-
-       if (F->Count >= 1000 / F->Speed) {
-               S = F->Components;
-               S1 = S + F->Nb_Simi;
-               S2 = S1 + F->Nb_Simi;
-               S3 = S2 + F->Nb_Simi;
-               S4 = S3 + F->Nb_Simi;
-
-               for (i = F->Nb_Simi; i; --i, S++, S1++, S2++, S3++, S4++) {
-                       S2->c_x = 2.0 * S4->c_x - S3->c_x;
-                       S2->c_y = 2.0 * S4->c_y - S3->c_y;
-                       S2->r = 2.0 * S4->r - S3->r;
-                       S2->r2 = 2.0 * S4->r2 - S3->r2;
-                       S2->A = 2.0 * S4->A - S3->A;
-                       S2->A2 = 2.0 * S4->A2 - S3->A2;
-
-                       *S1 = *S4;
-               }
-               Random_Simis(F, F->Components + 3 * F->Nb_Simi, F->Nb_Simi);
-
-               Random_Simis(F, F->Components + 4 * F->Nb_Simi, F->Nb_Simi);
-
-               F->Count = 0;
-       } else
-               F->Count++;
-
-       F->Col++;
-}
-
-
-/***************************************************************/
-
-void
-release_ifs(ModeInfo * mi)
-{
-       int         i;
-
-       if (Root == NULL)
-               return;
-
-       for (i = 0; i < MI_NUM_SCREENS(mi); ++i) {
-               if (Root[i].Buffer1 != NULL)
-                       free(Root[i].Buffer1);
-               if (Root[i].Buffer2 != NULL)
-                       free(Root[i].Buffer2);
-               if (Root[i].dbuf)
-                       XFreePixmap(MI_DISPLAY(mi), Root[i].dbuf);
-               if (Root[i].dbuf_gc)
-                       XFreeGC(MI_DISPLAY(mi), Root[i].dbuf_gc);
-       }
-       free(Root);
-       Root = NULL;
-}
diff --git a/hacks/ifs.man b/hacks/ifs.man
deleted file mode 100644 (file)
index 2d04eef..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-ifs - draws spinning, colliding iterated-function-system images
-.SH SYNOPSIS
-.B ifs
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
-
-.SH DESCRIPTION
-The \fIifs\fP program draws spinning, colliding iterated-function-system images.
-.SH OPTIONS
-.I ifs
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-The colors used cycle through the hue, making N stops around
-the color wheel.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1997 by Massimino Pascal.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Massimino Pascal <Pascal.Massimon@ens.fr>, 1997.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/images/amiga.xpm b/hacks/images/amiga.xpm
deleted file mode 100644 (file)
index ed31447..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-/* XPM */
-static char *amiga_hand[] = {
-/* width height num_colors chars_per_pixel */
-"   209   258        4            1",
-/* colors */
-". c #000000",
-"# c #6666cc",
-"a c #cccccc",
-"b c #ffffff",
-/* pixels */
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......................................................................................................................................................bbbbbbbbbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......................................................................................................................................................bbbbbbbbbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........................................................................................................................................................bbbbbbbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........................................................................................................................................................bbbbbbbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....###################.....bbbbbbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....###################.....bbbbbbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####################.....bbbbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####################.....bbbbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaa.....#######################.....bbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaa.....#######################.....bbbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaa.....########################.....bbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaa.....########################.....bbbbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....##########################.....bbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....##########################.....bbbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....############################....bbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....############################....bbbbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....#############################.....bbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....#############################.....bbbbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....###############################.....bbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....###############################.....bbbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....################################.....bbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....################################.....bbb",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....##################################.....b",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....##################################.....b",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....##########.....aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################..........................................................................................####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################..........................................................................................####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################..........................................................................................####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....###################################..........................................................................................####################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#################################################################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......#########################..................######################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......#########################..................######################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........#########################..bbbbb.............####################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........#########################..bbbbb.............####################################################################################################################....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbb.....##############.............bbbbbbbbbbb..bbb.........................................................................................................#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbb.....##############.............bbbbbbbbbbb..bbb.........................................................................................................#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbb......bbbbb.....##############...........bbbbbbbbbbbbbbb..bbbb......................................................................................................#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbb......bbbbb.....##############...........bbbbbbbbbbbbbbb..bbbb......................................................................................................#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbb.....##############.....bbb...bbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbb.....##############.....bbb...bbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbb.....##############.....bbb...bbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbb.....##############.....bbb...bbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbb.....##############.....bb...bbbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbb.....##############.....bb...bbbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbb.....##############..........bbbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbb.....##############..........bbbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbb.....##############...........bbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbb.....##############...........bbbbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbb.....##############.............bbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbb.....##############.............bbbbbbbbbbbbb...bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbb.....##############..........b....bbbbbbbbbbb...bbb....bbbb####bbbb#####bbbbb########bbbbb###bbbbb###bbbbb########bbbbbbb########bbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbb.....##############..........b....bbbbbbbbbbb...bbb....bbbb####bbbb#####bbbbb########bbbbb###bbbbb###bbbbb########bbbbbbb########bbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbb.....##############........bbbbb................bbb....bbbb####bbbb####bbbb####bbbbb###bbb###bbbbb###bbbbbbbbbbb####bbb###bbbbb###bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbb.....##############........bbbbb................bbb....bbbb####bbbb####bbbb####bbbbb###bbb###bbbbb###bbbbbbbbbbb####bbb###bbbbb###bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbb.....###########........bbbbbbbbbb.............bbbb....bbbb####bbbb####bbbbbbbbbbbbb###bbb###bbbbb###bbb############bbb###bbbbb###bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbb.....###########........bbbbbbbbbb.............bbbb....bbbb####bbbb####bbbbbbbbbbbbb###bbb###bbbbb###bbb############bbb###bbbbb###bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbb.....#########........bbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbb####bbb#####bbbb####bbbbb###bbb###bbbbb###bbb####bbbb####bbb###bbb#####bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbb.....#########........bbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbb####bbb#####bbbb####bbbbb###bbb###bbbbb###bbb####bbbb####bbb###bbb#####bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbb.....########........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbb#####b####bbbbbb########bbbbbbb#########bbbbb########bbbbbbb####bb###bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbb.....########........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbb#####b####bbbbbb########bbbbbbb#########bbbbb########bbbbbbb####bb###bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbb.....#####........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbb####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbb.....#####........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbb####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbb.....###........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbb#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb#####bbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbb.....###........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbb#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb#####bbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbb...bbbbb.bbbbbbbbbbbbbbb..............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbbbbb...bbbbb.bbbbbbbbbbbbbbb..............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbb....bbbbbbbb....bbbbbbbbbbb.....bbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbbbb....bbbbbbbb....bbbbbbbbbbb.....bbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbb...bbbbbbbbbbbbb.....bbbbb...........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbbbb...bbbbbbbbbbbbb.....bbbbb...........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbbb....bbbbbbbbbbbbbbbb................bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbb###bbbbb#####bbbbbbbb######bbbbb########bbbbb###bbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbb...bbbbbbbbbbbbbbbbbbbbbb.........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbb####bbb###bbbbbbbbbbb####bbbb####bbbb####bbb#####bbb#####bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbbbb...bbbbbbbbbbbbbbbbbbbbbb.........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbb####bbb###bbbbbbbbbbb####bbbb####bbbb####bbb#####bbb#####bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbb...bbbbbbbbbbbbbbbbbbbbbbb......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbb########bbb####bbbb####bbbb####bbbb####bbb#############bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbb...bbbbbbbbbbbbbbbbbbbbbbb......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbb########bbb####bbbb####bbbb####bbbb####bbb#############bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbb...bbbbbbbbbbbbbbbbbbbbb..b..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbb####bbb###bbb####bbb#####bbbb####bbbb####bbb###bb###bb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbbb...bbbbbbbbbbbbbbbbbbbbb..b..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbb####bbb###bbb####bbb#####bbbb####bbbb####bbb###bb###bb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbb...bbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbb###bbbbb#####b#####bbbbb########bbbbb###bbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bbbb...bbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbb###bbbbb#####b#####bbbbb########bbbbb###bbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bb...bbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bb...bbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bb...bbbbbbbbbbbbbbbbbb.bb..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"bb...bbbbbbbbbbbbbbbbbb.bb..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbb..bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbb..bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbaa........bbb.......aaa........abbbbbaa..........a..........baa..abb................bbb.......abbbbbbbbbb.....#############....",
-"....bbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbaa........bbb.......aaa........abbbbbaa..........a..........baa..abb................bbb.......abbbbbbbbbb.....#############....",
-"....bbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba...bbbbbbb.aabbbaa...bba.....aabbbbba...aabbbbba....abbb....abbbbb...aabba...bbbbbbb.aabbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba...bbbbbbb.aabbbaa...bba.....aabbbbba...aabbbbba....abbb....abbbbb...aabba...bbbbbbb.aabbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba..........abbbbb...aabbbaa.....abbbba...bbbbbbba....bbba....abbb....bbbbba..........abbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba..........abbbbb...aabbbaa.....abbbba...bbbbbbba....bbba....abbb....bbbbba..........abbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba...bbbb.aabbbbb......aabbb.....abbbb...abbbbbbb...aabaa.....abb...bbbbbbba...bbbb.aabbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba...bbbb.aabbbbb......aabbb.....abbbb...abbbbbbb...aabaa.....abb...bbbbbbba...bbbb.aabbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba...bb..abbbbbbbbbbbbbbbbbb.....abbaa...bbbbbbaa...aaa..a....a...bbbbbbbbba...bb..abbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba...bb..abbbbbbbbbbbbbbbbbb.....abbaa...bbbbbbaa...aaa..a....a...bbbbbbbbba...bb..abbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba.....aabbbbbbbbb..bbbbbbaa...aabbb...aabbbbbb...aa...aab.......bbbbbbbbbba.....aabbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba.....aabbbbbbbbb..bbbbbbaa...aabbb...aabbbbbb...aa...aab.......bbbbbbbbbba.....aabbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba...aabbbbbbbbbbb..abbbba...aabbaaa...bbbbbbba.......abbb.....aabbbbbbbbbba...aabbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba...aabbbbbbbbbbb..abbbba...aabbaaa...bbbbbbba.......abbb.....aabbbbbbbbbba...aabbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba..abbbbbbbbbbbbb........aaabbaa........aaaaa......aabbbb.......abbbbbbbbba..abbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbba..abbbbbbbbbbbbb........aaabbaa........aaaaa......aabbbb.......abbbbbbbbba..abbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#############....",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.............................................................................................................................................",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.............................................................................................................................................",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb............................................................................................................................................",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb............................................................................................................................................",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....b....bbbbbbbbbbbbbbbbbbbbbbbbb........bbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....b....bbbbbbbbbbbbbbbbbbbbbbbbb........bbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbb...bbbbbbbbbbbbbbbbbbbbb........bbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbb...bbbbbbbbbbbbbbbbbbbbb........bbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbb........bbbbbbbbbbbbbbbb........bbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbb........bbbbbbbbbbbbbbbb........bbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.................bbbbbbbbbbbb........bbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.................bbbbbbbbbbbb........bbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........bbbbbb...bbbbbbbbbb........bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbb........bbb............bbbbbbbb.....bbbbbbbbbbbbbbbb.........bbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........bbbbbb...bbbbbbbbbb........bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbb........bbb............bbbbbbbb.....bbbbbbbbbbbbbbbb.........bbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bb.bbbbbbbbbbbb...bbbbbb........bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbb.....bbbbbbbb.....bbbbbbbbb.......bbbbbbbbbbbbbb.............bbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bb.bbbbbbbbbbbb...bbbbbb........bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbb.....bbbbbbbb.....bbbbbbbbb.......bbbbbbbbbbbbbb.............bbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bb.bbbbbbbbbbbbb...bbbb........bbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbb.....bbbbbb.....bbbbbbbbbb........bbbbbbbbbbbb.......bbb.......bbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bb.bbbbbbbbbbbbb...bbbb........bbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbb.....bbbbbb.....bbbbbbbbbb........bbbbbbbbbbbb.......bbb.......bbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bb.bbbbbbbbbbbbbbb...........bbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbb.....bbbb.....bbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbb.....bbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bb.bbbbbbbbbbbbbbb...........bbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbb.....bbbb.....bbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbb.....bbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bb...bbbbbbbbbbb...........bbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbb.....bbb.....bbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbb......bbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bb...bbbbbbbbbbb...........bbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbb.....bbb.....bbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbb......bbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbb......bbbbb..........bbb.....bbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbb.....b.....bbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbb......bbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbb......bbbbb..........bbb.....bbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbb.....b.....bbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbb......bbbbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......bbbbbb..................bbbbb...bbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbb.........bbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbb.....bbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......bbbbbb..................bbbbb...bbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbb.........bbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbb.....bbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbb.....................bbbbbbbbbbb..bbbbbb...bbbbbbbbbbbbbbbbbbbbbbb........bbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbb.......bbb.......bbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbb.......bbbbbbbbbbbbb.bbbbb...bbbbbbbbbbbbbbbbbbbbbbb......bbbbbbbbbbbbbbbbbbbb...........bbb...bbbbb.............bbbbbb",
-"....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbb.......bbbbbbbbbbbbb.bbbbb...bbbbbbbbbbbbbbbbbbbbbbb......bbbbbbbbbbbbbbbbbbbb...........bbb...bbbbb.............bbbbbb",
-".....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbb.......bbbbbbbbbbbbb.bbb....bbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbb...........bbb...bbbbbbb.........bbbbbbbb",
-".....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbb.......bbbbbbbbbbbbb.bbb....bbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbb...........bbb...bbbbbbb.........bbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbb..b...bbbbbbbbbb..bbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbb..b...bbbbbbbbbb..bbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbb....bbbbbbb.....bbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbb....bbbbbbb.....bbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbb.bb........bbb......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbb.bb........bbb......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbb..b..........bbb..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbb..b..........bbb..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbb........bbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbb........bbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..b....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..b....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb................bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb................bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb..................................................................................bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb..................................................................................bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-"bb..................................................................................bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
-};
diff --git a/hacks/images/atari.xbm b/hacks/images/atari.xbm
deleted file mode 100644 (file)
index 57c2aa4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define atari_width 17
-#define atari_height 14
-static char atari_bits[] = {
- 0x30,0x00,0x00,0x4a,0x00,0x00,0x80,0x00,0x00,0x09,0x01,0x00,0xc4,0x07,0x00,
- 0xc0,0x07,0x00,0xf0,0x1f,0x00,0xf8,0x3f,0x00,0xd8,0x3f,0x00,0xfc,0x7f,0x00,
- 0xfc,0x7b,0x00,0xf8,0x3b,0x00,0xf8,0x3d,0x00,0xf0,0x1f,0x00};
diff --git a/hacks/images/bob.xbm b/hacks/images/bob.xbm
deleted file mode 100644 (file)
index f44adda..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#define bob_width 61
-#define bob_height 75
-static unsigned char bob_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xfb,
- 0x00,0x00,0x00,0xc0,0xff,0xcf,0x9f,0xd1,0x03,0x00,0x00,0xf0,0x7f,0x8c,0x33,
- 0x91,0x07,0x00,0x00,0xf8,0xa7,0x18,0x27,0xb1,0x06,0x00,0x00,0xfc,0x47,0x31,
- 0x4e,0xa6,0x0e,0x00,0x00,0xfe,0x4f,0x21,0x4c,0xae,0x3d,0x00,0x00,0xff,0xdf,
- 0x23,0x8d,0xbe,0x7d,0x00,0x80,0xff,0xff,0x67,0xbd,0xfe,0xff,0x01,0x80,0xff,
- 0xff,0x7f,0xbf,0xff,0xff,0x03,0xc0,0xff,0xff,0xff,0xbf,0xff,0xf8,0x07,0xc0,
- 0xff,0xff,0xff,0xbf,0x3f,0xf8,0x07,0xc0,0xff,0xff,0xff,0xff,0x07,0xf8,0x0f,
- 0xc0,0xff,0xff,0xff,0x3f,0x00,0xf8,0x0f,0xe0,0x7f,0x00,0xf8,0x07,0x00,0xf0,
- 0x0f,0xe0,0x3f,0x00,0x00,0x00,0x00,0xf0,0x07,0xe0,0x3f,0x00,0x00,0x00,0x00,
- 0xf0,0x07,0xe0,0x3f,0x00,0x00,0x00,0x00,0xf4,0x07,0xe0,0x3f,0x00,0x00,0x00,
- 0x00,0xe4,0x07,0xe0,0x3f,0x00,0x00,0x00,0x00,0xe4,0x07,0xe0,0x3f,0x00,0x00,
- 0x00,0x00,0xe6,0x07,0xe0,0x3f,0x00,0x00,0x00,0x00,0xe7,0x07,0xe0,0x3f,0x00,
- 0x00,0x00,0x00,0xe6,0x07,0xe0,0x3f,0x00,0x00,0x00,0x00,0xe6,0x07,0xe0,0x3f,
- 0x00,0x00,0x00,0x00,0xe6,0x07,0xc0,0x3f,0x00,0x00,0x00,0x78,0xf6,0x07,0xa0,
- 0xbf,0xff,0x00,0x00,0xff,0xf7,0x07,0x70,0x9f,0xff,0x01,0x80,0xff,0xef,0x07,
- 0xf0,0x1c,0x80,0x03,0xe0,0x01,0xef,0x07,0xf0,0x1f,0xbe,0x07,0xf0,0x3f,0xee,
- 0x07,0xe0,0x9d,0x83,0x1f,0xf8,0xe1,0xdc,0x07,0xe0,0xc1,0x7f,0x1f,0xfc,0xff,
- 0xc8,0x07,0xe0,0xc1,0x69,0x1e,0x7e,0xca,0xc0,0x03,0xe0,0x81,0xb8,0x1f,0xc0,
- 0x0e,0xc0,0x03,0xe0,0x01,0xc0,0x1b,0xc0,0xcf,0xc1,0x03,0xc0,0x03,0xf7,0x11,
- 0x00,0x7f,0xc0,0x03,0xc0,0x03,0x7c,0x18,0x00,0x1c,0xc0,0x02,0xc0,0x02,0x30,
- 0x08,0x00,0x00,0x40,0x03,0x40,0x03,0x00,0x08,0x00,0x00,0x40,0x02,0x40,0x13,
- 0x00,0x0c,0x00,0x00,0x60,0x02,0x40,0x12,0x00,0x0e,0x00,0x00,0xc0,0x03,0x80,
- 0x33,0x80,0x0e,0x00,0x00,0xa8,0x01,0x00,0x33,0x40,0x0f,0xa0,0x03,0x2c,0x00,
- 0x00,0x74,0x30,0x0f,0x38,0x07,0x2e,0x00,0x00,0x74,0x98,0x1f,0x1e,0x1e,0x2f,
- 0x00,0x00,0xfc,0x8f,0xff,0x0f,0xfc,0x2f,0x00,0x00,0xf8,0xe3,0xff,0x03,0xf8,
- 0x2f,0x00,0x00,0xf8,0xfd,0xff,0x81,0xff,0x3f,0x00,0x00,0xb8,0xf9,0x1f,0xf8,
- 0x0f,0x1e,0x00,0x00,0x30,0xf1,0xf0,0x0f,0x03,0x0e,0x00,0x00,0x30,0xf1,0x01,
- 0x80,0x01,0x0f,0x00,0x00,0x20,0xf1,0xf7,0xff,0x00,0x07,0x00,0x00,0x60,0xe3,
- 0x01,0x60,0x80,0x07,0x00,0x00,0x60,0xc3,0xef,0x3f,0x80,0x03,0x00,0x00,0x40,
- 0xc2,0xff,0x0f,0xc0,0x03,0x00,0x00,0xc0,0xe6,0x1f,0x00,0xc0,0x01,0x00,0x00,
- 0x80,0xf4,0xfe,0x3f,0xe0,0x00,0x00,0x00,0x80,0x79,0xfe,0x1f,0xe0,0x00,0x00,
- 0xc0,0x01,0x3d,0x3e,0x00,0x70,0x00,0x00,0x30,0x06,0x3e,0x0f,0x00,0x38,0x00,
- 0x00,0xc8,0x8c,0x1f,0x07,0x00,0x38,0x00,0x00,0xf4,0xcc,0x8f,0x07,0x00,0x1c,
- 0x00,0x00,0x72,0xee,0xf7,0x07,0x00,0x0e,0x00,0x00,0x02,0xff,0xe3,0x07,0x00,
- 0x07,0x00,0x00,0x32,0xfe,0xc1,0xff,0x8f,0x03,0x00,0x00,0x3e,0xfe,0x80,0xff,
- 0xff,0x01,0x00,0x00,0x7e,0x7c,0x00,0x00,0x7e,0x00,0x00,0x00,0x7c,0x3c,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x1c,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
diff --git a/hacks/images/bubbles/blood.pov b/hacks/images/bubbles/blood.pov
deleted file mode 100644 (file)
index 8166f4e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "colors.inc"
-#include "shapes.inc"
-#include "textures.inc"
-
-/* The following make the field of view as wide as it is high
- * Thus, you should have the -W and -H command line options
- * equal to each other. */
-camera {
-        location <5.8, 0, 0>
-       up <0, 1, 0>
-       right <1, 0, 0>
-        look_at <0, 0, 0>
-}
-
-sphere {
-        <0,0,0>, 2.5
-       texture { Blood_Marble
-       scale <2, 2, 2> 
-       rotate <0, 20, 0> }
-       finish { Dull }
-}
-
-light_source {<6, 1, 0> color White}
-/* light_source {<6.1, 1, 0> color White} */
diff --git a/hacks/images/bubbles/blood1.xpm b/hacks/images/bubbles/blood1.xpm
deleted file mode 100644 (file)
index c76131a..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* XPM */
-static char *blood1[] = {
-/* width height ncolors chars_per_pixel */
-"10 10 57 2",
-/* colors */
-"`` c None",
-"`a c #250000",
-"`b c #415050",
-"`c c #013232",
-"`d c #000606",
-"`e c #0E2E2E",
-"`f c #60C0C0",
-"`g c #002020",
-"`h c #102222",
-"`i c #4D5454",
-"`j c #043737",
-"`k c #000505",
-"`l c #65A0A0",
-"`m c #7ED6D6",
-"`n c #196969",
-"`o c #0C4545",
-"`p c #642525",
-"`q c #385C5C",
-"`r c #002525",
-"`s c #6D8686",
-"`t c #354F4F",
-"`u c #5A7D7D",
-"`v c #030A0A",
-"`w c #001E1E",
-"`x c #71B1B1",
-"`y c #274E4E",
-"`z c #287373",
-"a` c #0D1A1A",
-"aa c #053333",
-"ab c #001717",
-"ac c #374343",
-"ad c #000303",
-"ae c #070000",
-"af c #537272",
-"ag c #520B0B",
-"ah c #0C3636",
-"ai c #297D7D",
-"aj c #AF5C5C",
-"ak c #003737",
-"al c #010000",
-"am c #042727",
-"an c #0C3C3C",
-"ao c #000202",
-"ap c #042020",
-"aq c #419A9A",
-"ar c #420707",
-"as c #064949",
-"at c #071212",
-"au c #1D4F4F",
-"av c #154747",
-"aw c #000101",
-"ax c #264747",
-"ay c #002828",
-"az c #000707",
-"b` c #364949",
-"ba c #001414",
-"bb c #002121",
-/* pixels */
-"```````k`aamaeal````",
-"````arahauai`nag`c``",
-"``aw`o`zaqafajaxam`r",
-"``akav`q`f`m`lb`anay",
-"```dahac`u`x`s`t`hab",
-"```aat`y`b`iaqai`ebb",
-"```gaaah`p`yava``jba",
-"````ad`c`vasaaap````",
-"``````aeaz`waoae````",
-"````````````````````"
-};
diff --git a/hacks/images/bubbles/blood10.xpm b/hacks/images/bubbles/blood10.xpm
deleted file mode 100644 (file)
index 7f948fb..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-/* XPM */
-static char *blood10[] = {
-/* width height ncolors chars_per_pixel */
-"60 60 190 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #002E2E",
-"`c c #689494",
-"`d c #250000",
-"`e c #000D0D",
-"`f c #5D1616",
-"`g c #415050",
-"`h c #212A2A",
-"`i c #010404",
-"`j c #013232",
-"`k c #3C9090",
-"`l c #251A1A",
-"`m c #095454",
-"`n c #190101",
-"`o c #70D0D0",
-"`p c #000606",
-"`q c #003434",
-"`r c #0E2E2E",
-"`s c #001313",
-"`t c #115555",
-"`u c #213030",
-"`v c #60C0C0",
-"`w c #0F0404",
-"`x c #002020",
-"`y c #165D5D",
-"`z c #636A6A",
-"a` c #072A2A",
-"aa c #445C5C",
-"ab c #6C7676",
-"ac c #000C0C",
-"ad c #549393",
-"ae c #001919",
-"af c #102222",
-"ag c #4D5454",
-"ah c #002626",
-"ai c #163535",
-"aj c #043737",
-"ak c #4F6363",
-"al c #000505",
-"am c #65A0A0",
-"an c #052E2E",
-"ao c #041616",
-"ap c #044444",
-"aq c #76C1C1",
-"ar c #7ED6D6",
-"as c #001212",
-"at c #196969",
-"au c #385656",
-"av c #0C4545",
-"aw c #767F7F",
-"ax c #642525",
-"ay c #360505",
-"az c gray28",
-"b` c #5FB4B4",
-"ba c #002C2C",
-"bb c #0E2626",
-"bc c #8C9B9B",
-"bd c #000B0B",
-"be c #030404",
-"bf c #001818",
-"bg c #944040",
-"bh c #280404",
-"bi c #0A0E0E",
-"bj c #385C5C",
-"bk c #002525",
-"bl c #6D8686",
-"bm c #407E7E",
-"bn c #000404",
-"bo c #354F4F",
-"bp c #739999",
-"bq c #001111",
-"br c #5A7D7D",
-"bs c #347272",
-"bt c #030A0A",
-"bu c #5AABAB",
-"bv c #010808",
-"bw c #001E1E",
-"bx c #6E3B3B",
-"by c #71B1B1",
-"bz c #183C3C",
-"c` c #274E4E",
-"ca c #266464",
-"cb c #000A0A",
-"cc c #287373",
-"cd c #0D1A1A",
-"ce c #2B3E3E",
-"cf c #053333",
-"cg c #121515",
-"ch c #270C0C",
-"ci c #001717",
-"cj c #253838",
-"ck c #418888",
-"cl c #374343",
-"cm c #013C3C",
-"cn c #040707",
-"co c #031D1D",
-"cp c #192C2C",
-"cq c #000303",
-"cr c #070000",
-"cs c #164040",
-"ct c #537272",
-"cu c #5B8787",
-"cv c #120E0E",
-"cw c #032A2A",
-"cx c #520B0B",
-"cy c #001010",
-"cz c #062323",
-"d` c #435555",
-"da c #0C3636",
-"db c #8EAFAF",
-"dc c #282A2A",
-"dd c #001D1D",
-"de c #0C1515",
-"df c #515C5C",
-"dg c #1B5555",
-"dh c #297D7D",
-"di c #002A2A",
-"dj c #2B3030",
-"dk c #4F3939",
-"dl c #AF5C5C",
-"dm c #000909",
-"dn c #003737",
-"do c #010000",
-"dp c #001616",
-"dq c #042727",
-"dr c #0C3C3C",
-"ds c #030F0F",
-"dt c #010D0D",
-"du c #002323",
-"dv c #074E4E",
-"dw c #0C4949",
-"dx c #295555",
-"dy c #5E7272",
-"dz c #011A1A",
-"e` c #000202",
-"ea c #55A1A1",
-"eb c #000F0F",
-"ec c #176464",
-"ed c #042020",
-"ee c #0F0000",
-"ef c #001C1C",
-"eg c #8A5B5B",
-"eh c #419A9A",
-"ei c #000808",
-"ej c #205C5C",
-"ek c #420707",
-"el c #064949",
-"em c #041919",
-"en c #0C5C5C",
-"eo c #001515",
-"ep c #071212",
-"eq c #1D4F4F",
-"er c #171B1B",
-"es c #154747",
-"et c #2D8686",
-"eu c #031B1B",
-"ev c #000101",
-"ew c #3C1B1B",
-"ex c #286A6A",
-"ey c #044040",
-"ez c #000E0E",
-"f` c #264747",
-"fa c #0F4E4E",
-"fb c #0D1E1E",
-"fc c #396A6A",
-"fd c #001B1B",
-"fe c gray14",
-"ff c #0C4141",
-"fg c #031414",
-"fh c #011212",
-"fi c #172121",
-"fj c #002828",
-"fk c #060D0D",
-"fl c #063B3B",
-"fm c #2B5C5C",
-"fn c #645C5C",
-"fo c #000707",
-"fp c #343A3A",
-"fq c #396363",
-"fr c #182525",
-"fs c #364949",
-"ft c #001414",
-"fu c #467373",
-"fv c #AA7979",
-"fw c #506969",
-"fx c #022323",
-"fy c #002121",
-"fz c #1C7171",
-"g` c #213E3E",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````ebac`eefahahdi`jahdpe`aleb``````````````````````````````````````````````",
-"``````````````````````````````````````````fodmftev`eacebeobw`x`sfodmfj`qan`jdudi````````````````````````````````````````",
-"````````````````````````````````````du`p``cqdzdufydiebezeobq`ibvevdpbkek`ncr`dchdiefbw``````````````````````````````````",
-"`````````````````````````````````xe`ebalft`qcmapcpeydnfjbfdsdsbtcofxfjcmcmdrek`ndocr`b`eci``````````````````````````````",
-"``````````````````````````````bqebcbalftdicmff`n`davdvapeyajdqbtedajbh`wcr`hcmcmcmaydo`d`bdi````````````````````````````",
-"````````````````````````````e``e`palaediapaicmfleldv`m`melcfa`btanenaydvdvel`jbwfx`q`bdn`ncrbheo````````````````````````",
-"````````````````````````bd`e`easftae`jelapananflel`men`mfffbbidaencxdrcdepfkcnbtbedsfyfd`x`bfjbwei``````````````````````",
-"``````````````````````bneofj`bac`pfg`japcfdqa`da`men`tffffaf`rfsecffcvfbdadwffcfczfgcnbteveo`xeb`ecq````````````````````",
-"````````````````````cbdidn`q`qdudtfgcza`a`dadadrdwfa`aerfrcpecax`ybzercsavfaen`manczemfkbtbqftbqale`cq``````````````````",
-"``````````````````ebbh`nchdnapeycofkbibicd`raififraiaiaiesejfcfzeqfrcseq`t`yatcxenavajeddsfg`bdidpebcyeo````````````````",
-"````````````````cyan`nfrekeebhewcfa`dadacg`aficpeqdgcaeqejcadhdhdxfeg`ecatatcaewecdkcx`mcffgbtdp`jdmfybbcr``````````````",
-"``````````````ciee`b`bfrapcwcfek`mfp`f`taifrbzejdxcaexdxdxccbmdhc`djc`exejatbj`fbo`tecek`medemfhcwdnbqchchdd````````````",
-"``````````````eecycydncmcodsanekeqch`fatececcaexexccbsbsbsetdketbofpfmfmexcaccew`fececchendra`dscfcmdibdchef````````````",
-"`````````````dbqe`dm`bcofgepflchcxdkfzaxagdhexcabsbsbmckehbxeg`kfqclaubsetetdhetbxaxew`faxavdqfkcwelapdpbwbwcb``````````",
-"``````````bqdpbdfdaldsdsaoa`ffecbofz`ydhewfwdhbjfcbmckadazehckfuaaazfcckfnbx`kbmetazfzatatffdecncwapap`qaleecifo````````",
-"``````````cdcbbqbwfhcncnczff`m`ycafzfzetfwbxetbmfuckehdlbuadbrctfwagbmehcubgbr`kfudhca`y`y`adeepczflewcmdiebchbw````````",
-"````````ftduevbf`iedfgczav`fc`bobjfzccdhetbxeh`kehehbpegbucuctctdffwaddldlehbgehetexf`g`csfrcgfbdqflbheeeyddbk`d`e``````",
-"````````cy`xale`fy`jajcxcvekew`laxccdhbs`kegazadadbufvbuamcu`zdycucub`dlfvbxbgehbsbof`fe`hercgbbdaeyel`wcmdi``crbw``````",
-"````````cvdieobkdn`wbhesenecatdkaxbxetetehadbgbubudl`vam`cbl`zblam`v`vbydlbgbl`kbjfpdjdc`hfrerbbffeldc`n`l`b`sbacg``````",
-"``````eodo`qahch`delbzce`t`tdgccewdcbxfpazbxegam`vdlb`byambpblabby`oaq`v`vawbuckclbjfmcecjcper`affdvekfebheydudpfycr````",
-"``````cd`d`adnekekbzdjcv`f`ydgfzbsfudy`zbgdldlbcdbdl`oaqambpblabbpby`v`v`vdldlckazfqfqfmf`g`frfrdw`mewel`wcrdievdp`n````",
-"``````bwee`dcmee`dbhekcxdk`ydgejfmexbs`keheab``v`vdlfv`oaqaqbybpawbpbpbybub``vadaa`gfcfmdxf`cp`aavdvdvel`hayahe`ezdu````",
-"````bqfday`ddnfebhek`mfaescsg`g`cjclbjfuckadbu`v`vdbfvfvararar`obyawaw`camameacuak`gfsbof`g`fierdrfadrelap`qfjalcbddeb``",
-"`````eae`ddnayapekeldabbfberfrcjcefsauaackeaeab`byaq`odbfvfvdbaraqbpabawblcudyakdfaaaufpdjfecper`adadrcfajbadn`eacefem``",
-"````fofy`bbaaycpelancdbiaffr`hg`djfpbod`bmeabuamambybyaqararfvdb`obybpaw`z`zfndfakfcfqcldj`ubzfrcgcddrcfdq`bcmdu```xcv``",
-"````bnbfbwefdncrdranbiafaifrficjdjfsboazfuadeaam`c`cbpbpbyaqarawarbybpbpab`zdyfwfwfubjboce`h`ufrafdefbedfxdq`bfyev`xdz``",
-"````ebfoaccbbwapapdqbidreserfifef`bjauazfucuadam`cblblbpbpbyarfvfv`oaqambl`z`zfwfufuaufpcj`ucjcperafbifkco`bdueocbdpdp``",
-"````cibnbde`dteyela`dedwesfierg`dxaucl`gfubrcucublabblblbpbpaqarfv`o`oby`c`zfwfwaaazfpfpceg`bzaiafbbcdcnfx`bfd`se`dmbf``",
-"````ftfofdfy`papapdqep`rdaaifi`hcececl`gaaakctdybr`zabawabbpbyarfvfv`obybl`zakagd`aabofpcj`u`ucpafcdepbtdscwcidp``cqfy``",
-"````bfasfyefev`japembibbbbfificjdcfpfsaud`agagdffn`zababblbpby`ofvbcbyambr`zakdfaafcaufscj`uerfrafdeepepemdnbabw`s`ebf``",
-"````bfcyefftcbey`jdsdecdafercpg`f`ceclcl`gaaakctfn`zdy`zbl`cbyaqeg`obuamcubrbrfubmbsbjdxcjg`fierfbcdepepan`qdn`bfjfyfo``",
-"````bw`sac`eahayfhfkepdedecgaig`c`dxfsfpauaaakfwfwdydydy`z`zblam`veg`vbyeaadckckehetexf`cj`hercgcdbicncodqcmdnereecrfo``",
-"````cibfe`ei`b`qbeemepbidecgcseqeqexdxfpaud``gdfctbrctcudy`zdybr`cb`fndleg`cblabbg`ketfmg`cpercgdeepcndsed`q`b`dbkdu`s``",
-"````fo`n`edzdn`bbvaoeubifbcdaidgdgcadxdjboboclaaakfwfwctctdfdffwbradawegawbgdkbxdkbxaxfzeqfrcgdebbczaobtedciduee`x`x`n``",
-"````dmee`p`x`dbadtdsedemep`raicsesdgc`dcfsbofsd``gd`agagagdfagdffwctbmckehegegbxbxewdhatcsficgfb`rczcobebtacfyeefycieb``",
-"``````eealfj`n`beodtcoedbi`affescscsg`fecefsfpfp`g`gd`d`d`agagagaaaaaafqbmbmetetaxax`gejcserbbdrfla`cobtdmbqbkdq`sbq````",
-"``````asas`ser`qbfbvdsemfkfbdrfaesbzcp`h`udjdjclbjbjfqfqaa`gazazazclclaubjfcexcacafzaxdg`rcddrdweleydq`i`ifo`bahacdz````",
-"``````acez`eahee`jacbtfgcocfffdwesesbzfrfefedccedxbofqfcfcfcauclclfpfpclfsfmdxc`eqfzecbzcv`rdvdcfecpfxftdmcy`bahbfac````",
-"````````bdcifd`bchdufgaocfeleldwdwesaifrcpfe`hf`cafmexbsfcbsfqfscefsf`djcef`dxeqdgercscdcddrewbhfedrcwfte`ezdi`ddo``````",
-"````````evacfyafan`j`xdqcfdrdv`mavdrdaaicscpbzdgcaccccexcaexexf`cjc`cedccjf`dgecdk`t`acvbbffayekapbabwfoe`e`fyfyfo``````",
-"`````````pei`xdi`j`j`b`jcfajelapda`rdadacs`tatataxewazexc`c`c`cjfecj`u`hes`y`ydxcgfacdbicfdvbhewajcwftdmei``ft`edt``````",
-"````````````ezdd`b`bbb`layeyeyapcfa`drfffa`f`fecbodx`fcaeqg`g`g`frfifrbz`y`ydkcxcedwcdcdfl`w`najfjaecbdmeifoevcq````````",
-"````````````e`eodzchee`ncfeeekapana`a`ffavch`tesc`ax`lecesaibzaicpfifiesc``fceeq`mdabia`flfedadqaeezeicbefdzezei````````",
-"````````````al``e`ef`bba`d`n`dcmdqdqanajelcvdwavencx`f`fescsaibzaibb`ravfpcxcjcxelanfkczcwfl`jcidmbdcy`xcv`dbi``````````",
-"``````````````ev``eveobf`jcrbhfrajananapayela`bbdrfafacxfp`t`tfaavdrff`tewaycvcxflfkaocodq`jduftezbdftcgftee````````````",
-"``````````````evcqbnalcyeo`b`qayaybhfebhapaja`deczffffg`g`dvchdvdvdwdwcvbzcncnekancncofjfxdufycieibf`xeedpal````````````",
-"````````````````bnevevbdcqbq`xbafr`j`jflancoemfkbtdqczana`flelekcxchekflcfelcneydqbeedbk`xdzez`p``asbwefcq``````````````",
-"``````````````````e`bn````cq`e`eftdzdpddfgbtbecncnbefgaoepedcfajflflcwcoedajflcfdpcyfydzacdmbneidmbweffo````````````````",
-"````````````````````cbfoacezbnale`e`acfobde``p`pbebebtbecnfgemdseuaocodqdqdqahdp`pcidpcbevcq``fobdasdo``````````````````",
-"```````````````````````ebqaecifdaccq`pcqaleodubwdddpfgbvdzcwbkfgbt`pfgco`xfdcicbdmddci````al`pdmevcb````````````````````",
-"`````````````````````````e`n`naecieb`e`ecbebbfaedzbwbqdm`sbw`bbkcy`idmcibfeoebeicift`pezeodz`sfgev``````````````````````",
-"``````````````````````````btbqepbwbfdpdpcbcqfodmac`sfobdaseo`xahae`sfo`pacfoevbdbne``eaecv`wee``````````````````````````",
-"````````````````````````````````bneocr`nddbqcycyfocbevbnebdzbwduahbwbf`ee`cqe`dm`sbwcrdpciez````````````````````````````",
-"````````````````````````````````evcqfobqefcvdzcieb```p``alfoeoftdddpdm``dmeicybfeecyezdsfo``````````````````````````````",
-"````````````````````````````````````aleve`alacdzeecveo`sbdcbbqbqal``bneveibqciaebqdo`p``````````````````````````````````",
-"``````````````````````````````````````````cqevcbasbiepcvdpebdmcbal`eei`pcqevcbal````````````````````````````````````````",
-"````````````````````````````````````````````````eb`pbneidmbdcyeeeecycncrcr``````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood11.xpm b/hacks/images/bubbles/blood11.xpm
deleted file mode 100644 (file)
index b6daa93..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-/* XPM */
-static char *blood11[] = {
-/* width height ncolors chars_per_pixel */
-"72 72 190 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #002E2E",
-"`c c #689494",
-"`d c #250000",
-"`e c #000D0D",
-"`f c #5D1616",
-"`g c #415050",
-"`h c #212A2A",
-"`i c #010404",
-"`j c #013232",
-"`k c #3C9090",
-"`l c #251A1A",
-"`m c #095454",
-"`n c #190101",
-"`o c #70D0D0",
-"`p c #000606",
-"`q c #003434",
-"`r c #0E2E2E",
-"`s c #001313",
-"`t c #115555",
-"`u c #213030",
-"`v c #60C0C0",
-"`w c #0F0404",
-"`x c #002020",
-"`y c #165D5D",
-"`z c #636A6A",
-"a` c #072A2A",
-"aa c #445C5C",
-"ab c #6C7676",
-"ac c #000C0C",
-"ad c #549393",
-"ae c #001919",
-"af c #102222",
-"ag c #4D5454",
-"ah c #002626",
-"ai c #163535",
-"aj c #043737",
-"ak c #4F6363",
-"al c #000505",
-"am c #65A0A0",
-"an c #052E2E",
-"ao c #041616",
-"ap c #044444",
-"aq c #76C1C1",
-"ar c #7ED6D6",
-"as c #001212",
-"at c #196969",
-"au c #385656",
-"av c #0C4545",
-"aw c #767F7F",
-"ax c #642525",
-"ay c #360505",
-"az c gray28",
-"b` c #5FB4B4",
-"ba c #002C2C",
-"bb c #0E2626",
-"bc c #8C9B9B",
-"bd c #000B0B",
-"be c #030404",
-"bf c #001818",
-"bg c #944040",
-"bh c #280404",
-"bi c #0A0E0E",
-"bj c #385C5C",
-"bk c #002525",
-"bl c #6D8686",
-"bm c #407E7E",
-"bn c #000404",
-"bo c #354F4F",
-"bp c #739999",
-"bq c #001111",
-"br c #5A7D7D",
-"bs c #347272",
-"bt c #030A0A",
-"bu c #5AABAB",
-"bv c #010808",
-"bw c #001E1E",
-"bx c #6E3B3B",
-"by c #71B1B1",
-"bz c #183C3C",
-"c` c #274E4E",
-"ca c #266464",
-"cb c #000A0A",
-"cc c #287373",
-"cd c #0D1A1A",
-"ce c #2B3E3E",
-"cf c #053333",
-"cg c #121515",
-"ch c #270C0C",
-"ci c #001717",
-"cj c #253838",
-"ck c #418888",
-"cl c #374343",
-"cm c #013C3C",
-"cn c #040707",
-"co c #031D1D",
-"cp c #192C2C",
-"cq c #000303",
-"cr c #070000",
-"cs c #164040",
-"ct c #537272",
-"cu c #5B8787",
-"cv c #120E0E",
-"cw c #032A2A",
-"cx c #520B0B",
-"cy c #001010",
-"cz c #062323",
-"d` c #435555",
-"da c #0C3636",
-"db c #8EAFAF",
-"dc c #282A2A",
-"dd c #001D1D",
-"de c #0C1515",
-"df c #515C5C",
-"dg c #1B5555",
-"dh c #297D7D",
-"di c #002A2A",
-"dj c #2B3030",
-"dk c #4F3939",
-"dl c #AF5C5C",
-"dm c #000909",
-"dn c #003737",
-"do c #010000",
-"dp c #001616",
-"dq c #042727",
-"dr c #0C3C3C",
-"ds c #030F0F",
-"dt c #010D0D",
-"du c #002323",
-"dv c #074E4E",
-"dw c #0C4949",
-"dx c #295555",
-"dy c #5E7272",
-"dz c #011A1A",
-"e` c #000202",
-"ea c #55A1A1",
-"eb c #000F0F",
-"ec c #176464",
-"ed c #042020",
-"ee c #0F0000",
-"ef c #001C1C",
-"eg c #8A5B5B",
-"eh c #419A9A",
-"ei c #000808",
-"ej c #205C5C",
-"ek c #420707",
-"el c #064949",
-"em c #041919",
-"en c #0C5C5C",
-"eo c #001515",
-"ep c #071212",
-"eq c #1D4F4F",
-"er c #171B1B",
-"es c #154747",
-"et c #2D8686",
-"eu c #031B1B",
-"ev c #000101",
-"ew c #3C1B1B",
-"ex c #286A6A",
-"ey c #044040",
-"ez c #000E0E",
-"f` c #264747",
-"fa c #0F4E4E",
-"fb c #0D1E1E",
-"fc c #396A6A",
-"fd c #001B1B",
-"fe c gray14",
-"ff c #0C4141",
-"fg c #031414",
-"fh c #011212",
-"fi c #172121",
-"fj c #002828",
-"fk c #060D0D",
-"fl c #063B3B",
-"fm c #2B5C5C",
-"fn c #645C5C",
-"fo c #000707",
-"fp c #343A3A",
-"fq c #396363",
-"fr c #182525",
-"fs c #364949",
-"ft c #001414",
-"fu c #467373",
-"fv c #AA7979",
-"fw c #506969",
-"fx c #022323",
-"fy c #002121",
-"fz c #1C7171",
-"g` c #213E3E",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````````````ftcb`p`eacftasasace`cq````````````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````cqcqe`foeb`s`x`b`b`bahdpebcqezezasfdcv````````````````````````````````````````````````````",
-"````````````````````````````````````````````````cqevbdal`pdpfycifdbfcyezas`sezevdp`qdodo`nafdibkah``````````````````````````````````````````````",
-"````````````````````````````````````````````ei``ei`pbwdi`xfjbadz`sfhacacbddtbdbddufjapcrayee`day`jfydd``````````````````````````````````````````",
-"````````````````````````````````````````cyeoeibnft`jdncmaiffeydnbacofgdsdsdsfgfyahdicmcmeyfeay`ndo`d`laedz``````````````````````````````````````",
-"````````````````````````````````````ddbdebalcqbfdidnelaycrbhdcelapeyajanfxcnaoaneyayay`d`delapey`h`ddocr`qbkah``````````````````````````````````",
-"``````````````````````````````````cqeoebcqe`aedidn`u`ueyapcj`mdv`mdveyfldqbtedajesekdcewdvap`jbkfjdn`qdndodnbh`n````````````````````````````````",
-"``````````````````````````````foalcbbde`ebci`bey`hapancfcfey`mewen`mdafbdebidrenekdvcfczdqanembtbtfxduahdicmcm`qfydp````````````````````````````",
-"````````````````````````````cbeidzdzfoasdpdq`qdveldqczajeydven`mdwavdrfbcdffceewdwbbbideczcoeufgbtbedzdzcbebbkfjbwbfei``````````````````````````",
-"````````````````````````````cyah`bahcybdbtdqajeycfa`an`ravenen`tffda`rcgdrfsatfa`acdbbdadwdvffajdqemdscnbtcq`sftaee`dme`````````````````````````",
-"````````````````````````cbdu`rdndndndufhbtcodqana`cfdrdaavfafaaificgfraiecewecfa`aafcsesdwenen`manededcndtdtbqci`sfo`pe`cq``````````````````````",
-"``````````````````````ez`b`n`ddndncmajcocnfkembicd`rda`raffifrcpcpcpesdgfzfz`ycserbzeq`t`tendk`f`mdra`cocndsaoah`bbwcqcyebas````````````````````",
-"````````````````````cy`baychayapekekdvajczfbbbbbcvafaieraieqeqeqeqdgcacafcdhejg``hf`ejececat`fch`fchfp`mapaocnfgeddifdfofyfyed``````````````````",
-"``````````````````eo`bbh`jchayayapey`welffenenaverfieraieqeqejexdxc`fmexetfwfmg``uc`exatatfzax`lateneccvenflcofgdseu`qfdezer`nfy````````````````",
-"```````````````````ndifd`jcpcmahedancxenf`chc``tesbzg`dgcacaccccfmdxfmdhbgetfmcjdjdxexcacafzbx`fdk`t`tekew`manaocnbw`qcmfdduaydi````````````````",
-"````````````````cgciebdpdncmfxdsemflcvcechchdkfzfzatexexcaccccbsbsbsbm`kdk`kfcfpclfmcaexcaexdhewewfzat`f`fendrcfbefxcmey`jbn`bfdci``````````````",
-"``````````````fyefeidmas`bedfgaoemavchch`ffzfzewagdhcccaexbsbsbmbm`kehdkeg`kbsbofsbjbsetetdhdhfqbxax`f`l`ffpava`aoedaj`hapbwe`anacfo````````````",
-"``````````````dieifofdacfhbtdscoandwfpdkcaececagfebxdhfcfqbsbmckehbgbxehckfufc`g`gfcbm`kegbxetetdhaafqfzatejavcdepeucfelap`jbq`xdieb````````````",
-"````````````efezfofyaedtbtcnfka`fffa`tatfmecfzdfdfbxetbmfcfcckeh`cazeaadckfufwaaaabmehbxbgbg`ketbmdhfzecec`y`rdebiemcfap`hcm`be``qdias``````````",
-"````````````czcbeibw`ibfbtfkcfelenecfsdkfzfzccetckdk`kbmckck`keadldleacuctbrctagfwadbuegehbxckbretdhcaeqdgdg`adebifba`flbhekfefybq`n`d``````````",
-"```````````efy`pasaceffxcoa`elcxchecboaxfzccccdhetbgbxehehadeadlfvb`adbrdy`zdfctbrbuegbgblbxab`ketexc`cj`ucpficdfba`aneydc`new`jaebk`nbf````````",
-"``````````effy`edmefdqajeyaycncxayewew`fccdhdhdh`kbrbgeaadadb`dlbuam`ccu`zdycucuea`vdldlbxbgcu`kbsbocedj`ucpficgfb`rfleldv`dap`bah`peecd````````",
-"````````eieedifdcydnapaybh`mf`enecatdkaxbxdhet`kehehazaweab`dlbyamam`cab`zblamb``v`vbydldldleackbjfpfpdc`h`hfrerfbdadrdvdcbeekcmdieibafb`n``````",
-"````````aeee`jah`b`dek`ucsg`en`t`t`yd`fedcaxbxbxbxazbgdlb`bpdl`vambyam`cblabam`vdbaq`vbybpbpeafuclaubjcecj`ucpfi`adaav`mekekekaydndzdzbwfx``````",
-"````````cgcr`q`q`lcrfedvg`cv`fec`tdgfzbxaxaxbgegbgbgagdl`vbcdl`vbybybpbpblabbpby`v`o`vb`fvdlbubmazbjfcfmf`g`cjfrfrdafa`mewelbhcrdaddcqcied``````",
-"```````nbk`dcrcm`leebhewcxekay`yeqeqatccccdh`kcuawbub`by`vbcegfv`oaqbybybpawabbpbyby`vb``vdlbpckd`d`fcfqdxdxf`cpfi`rav`m`melek`day`xevfoducv````",
-"``````ci`xayeednay`d`nbhcxg`en`tdgdgeqc`dxfqbsckadadea`v`v`ofvabdbar`o`obybybpawbl`camamamb`bucuaaazbjfqdxdxf``ufiaifa`meldv`hapeybwcqdmfyco````",
-"``````aebwayay`q`dcp`ncj`mfaffbzaig`cjcjcebobjfuckadeab`b``v`ofvfvarararararaqbpawawbl`camamadctakd`clbofsf`cjfier`affavflapapaj`jdudmebeffd````",
-"```````sahaydncmdaewfeapdabbafcger`hcjcjceauauaackeaeabub`byaq`oarbcfvfvdbar`obyblabawblblbrctakdfaabjclfpdjfecpfifibbdadrajajan`j`q`eacbffd````",
-"````bd`efja``bdafeewelanfbdecvfrfi`ug`cjdjfs`gaabmeabuamamambybyaq`oarfvawdbaraqbpblab`z`zfndfdfakfwfqaudjdc`ucjfrercgbbffajedcw`jdn`xcqefbwez``",
-"````foacciahdu`j`n`hapanepde`a`aerfecjdjfpfpcl`gfuadbubuam`cbpbpbpaqaqararfvaraqbpbpbpab`z`zakakakfufqbjcldj`u`uaificdde`randqcw`b`qbk`pftefeo``",
-"````acbdebas`sahdnekapczbi`adaaierfe`hcjboaud`azfucuadamam`c`cbpbpbpbybyarfvdbarbybybpbl`zdydyctfufubjaucedj`h`uaifrcgcdbiaoeddq`bdudzcqacbfft``",
-"````aeeve`fo`pfd`b`dapczdedrfaaifi`h`hc`fmau`g`gfucuad`c`cblblblbpbpbpbyardbawaraqaqby`cdy`zakfwfwfcbjclfpcjcjcjbzfrfb`abifkemcw`jfddpcqe``sci``",
-"````eebnbdez`pdmcwbhapdqdeavdwbzerfig`dxdxfscld`fubrcucucuababawblblbpbyaqardbfv`o`oby`c`z`zfwfwagazclfpcececjcjbz`afbbbfbcnaoan`beoase`ev`seo``",
-"`````ncbbqeffyevahayeyczep`rdaaicpfi`hcecefpbo`gaaakfwdydybr`zabababawbpby`odbfvaq`obybldyakakagd`aaaucldjcj`u`ucp`afbfbepfkcnedbaftdpcqe`ac`s``",
-"````crbddpfybwfofxaycfeubibb`rbbfifr`udcdjclaud`aadfagak`z`z`zababblblbpby`ofvfv`obyambrdydfagagaafcaubocedj`herfiafdebibifkdsdq`qdibw`sbqe`dp``",
-"````eeeidpfd`scqfybhcwepepfbafafercpg`g`cefpfsclazagakfwfwfn`zababab`camby`ofvfv`vbuamcubrctctfufubsfqfmf`cjg`cperaffbdedefkedcf`qdndifydudmbf``",
-"````eeeiezftftebdndnfkbtaocddeaferaig`c`f`cefsfp`gaaakctfwdfdydy`z`zabbl`cby`veg`vb`b`eaadcubmbmckbmfcdxcecj`uficgcgfbbifkemfxdn`qcm`q`bdobfbd``",
-"````fkftftfo`pfyeeahbefgepepbicgercsesf`fmfmfsfpauaad`dfakctdydybrdy`z`zbl`cbu`vfnfvdlb`eaad`k`kck`kdhcaf`cjfrerercvdebifkfgco`jcm`qayaydi`xfo``",
-"````acfdeoeidmahfifxbtemepcncdcvafesdgeqcacac`fpboau`gd`akctbrctbrbrdyfn`zbrcuea`vfndlfnbgadbgbgbxfnetccc`g`cpercgcvdedecncnfg`b`bdi`nahducrdm``",
-"``````cveocydzbacmcobtemeucncdfbafcsdgdgcaejc`djbobocl`gaafwfwfwctctfwdfdfakbrcueadlegegabbxbxbxdkbxaxaxejesfrcgcgfbbbczaofgaodzbwaheefybwdz````",
-"``````fdbwcbbwficmdpe`aoedembi`a`aaicsesdgeqf`djfsbofs`gaad`aaagdfdfdfdfagdffwctbmckehehabbgegbgbgdcdhfcejcsficgdebbanczcodsdsebebah`nfyfyeo````",
-"``````ez`xevahdo`qbwdtcncoczepfbdaffcsbzesf`g`dccefsfsclfpazazaz`gagagagagagakakakakfuck`k`kckfuaxaxagfzejbzercd`rdacfczcodtbvbv`sahafcidzbf````",
-"``````cb`n`pfyaydnbkebbtaoedepep`rfffaescsai`ufecjcefpfpfsbjbjfqaaaad`d``g`g`g`g`g`gaufqbsbsbsccdhdhewateqcpcg`adreleycfedbtbvbvdp`bbacy`s`w````",
-"````````ddbdcb`b`d`bft`ibtembtem`rdadwesesbzcp`h`hdcdcfpbobjbjfqfcfcbjd`azclfsclfpclbobofmcafmfmejateweccsafbbffdvelelflfxbtalaleobhdudm`n``````",
-"````````ei`p`ebw`lerdidtbvdsdsandaffdwdwesesaififefefedjc`dxbobjfcbsfcfcaufsclfpfpfpfpcldxfmdxc`eqatdkes`rcdda`mcxbzelaibkbfdte`bfcvfjdpae``````",
-"````````cb`eciefah`ndnfdfgaocwapeldvdwdwdwaiaifrcpfefecjdxcafmexbsbsfcbsfqbodjfsfscedjcecedxeqeqdg`f`t`rcgfbdrg``newaieycwcievalascg`d`ne```````",
-"``````````e``ebw`bdoaydiddfxcwap`udvdvdwdrdaaiaibzcp`ug`ejcaccccccexexexexc`djc`c`cjdccjg`eqdgecfsecbzcdcdbbdrekbhekfl`bddezdmevcqdu`dfd````````",
-"``````````al`pfybk`n`b`qdi`b`jflapeleldada`rdaaicseseq`yatexaxagcccafmdxfmf`dccjf``u`hg`dgej`yecew`y`acdcd`rav`nekapanahaealalevfofdase`````````",
-"````````````aldpbwdi`bba`q`qdncmajapeyajcfa`dadres`ydkew`lewewaxfzejg`g`g`g``hfe`uer`ues`y`ycl`l`f`t`abicdeybhdcayey`bahebfodmfoeveial``````````",
-"````````````fobdeffy`d`j`lee`n`nayapapcfananffavfa`fcx`tecdxecew`f`yesbzcsbzcpfrercpbz`y`yf`ewf`eqdwbbepa`ey`n`wajfjfycydmbdeiac`e`pfo``````````",
-"``````````````evcbftbwcz`d`ddnbhbhayapana`ana`ffavew`tdwfaf`dk`lfsdgbzaibzaicpfierfres`y`fchenf``mdrcdcocfflaicp`bfdbqbddmcbbfbkdzac````````````",
-"``````````````cqbneial`x`bdifiaydobhcmcwczananajelch`mavfa`tcx`fcg`tcsbzaibzai`rbbaiav`tcvfpdcewelcfepemdqcwfl`qfyac`p`ecybw`n`naeee````````````",
-"```````````````````pe`alaebwdieedobhcmajcwcwcfapewewdaa`daavfafadjek`tfafafaavdrdrff`mdjchchcxeweyemdsemeddq`jfyfdcyac`e`sfjbwbwee``````````````",
-"````````````````````ale`fo`sft`j`q`deeficmey`lcnekeyajedfbdadwav`mchdjchekfafaavavdwewcvcvek`wekcfdsemeddqfxdifyfdciacciddcoaeas````````````````",
-"``````````````````e`evevfoezdmbqfyah`q`day`rbhayeyancwepfkedcfdaffeldrffewchdvdvg`djdceyelcnbhaicwbeaocwfxfy`xbfacfoalaebweebf``````````````````",
-"````````````````````bne```foe`bnebbwdu`jbaah`b`bfxemdsbedscnemeuedczdqajapfeay`wbzapana`flewfeeyfx`idpah`xciezcbevcqfoas`naobn``````````````````",
-"``````````````````````cqfo``e`ev`paceiacdpbfcydzfhbtbebebebebedsfgdsfkemdqananajanczededcfcmcmcwfhezfydzcifofoe``pev`sbwepei````````````````````",
-"````````````````````````cbeicbacaccqalbnevdmacfobde``pbv`pbebebtcnbebtaoembtememaocodqdqahcwfyfh`peodzezalevcqe`eialcbeodo``````````````````````",
-"``````````````````````````accyeoftbfdzac``eibdbn`pfhddbwdddzfgdsbvdsbwbadqfgbv`idtdzedfxbwdzeodmcbfdfdacale`e```aleibnac````````````````````````",
-"`````````````````````````````eci`n`xciftbdei`pdmbdbddzbkfdef`x`sbdebciducwdudpac`pbddpfddzbfbdalebdzcycqdmcyaeasftacbn``````````````````````````",
-"``````````````````````````````btcrcrddefaecibqbqe`eiasfteb`sdpeb`idmeoefahfyeodt`i`iebci`eace``sac`pe`bddpbffddo`w``````````````````````````````",
-"``````````````````````````````````cbeb`nbwddddbfezdm`pacfodmbdbnevcb`sdpdzahduefascbfoe`bnbnale`bn`pasdz`nef`nas````````````````````````````````",
-"````````````````````````````````````alevcbaeeedobwdpcyftcydmeie```ei`sdd`xbkahfjfdeodme`bn`pcbezdpefdoaeezdocb``````````````````````````````````",
-"````````````````````````````````````````cq``bdbqefcrdzci`s`e``focqcqbncbeoftfdefcyei``eidmbdftefeeasasbqcb``````````````````````````````````````",
-"````````````````````````````````````````````e```al`pbdddee`xddasebacbdbdasebfoe`evbnev`pebbfemciebcyez``````````````````````````````````````````",
-"````````````````````````````````````````````````evevevalbqdzeeeebwdpezezcbcydmaldmeibncqevdmasfkbn``````````````````````````````````````````````",
-"``````````````````````````````````````````````````````accqbdebcyeoeedpbqbqasezdmbdbdezacale`````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````````````cncbev``evbndmaccrdocb````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood2.xpm b/hacks/images/bubbles/blood2.xpm
deleted file mode 100644 (file)
index e252985..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/* XPM */
-static char *blood2[] = {
-/* width height ncolors chars_per_pixel */
-"12 12 81 2",
-/* colors */
-"`` c None",
-"`a c #002E2E",
-"`b c #250000",
-"`c c #000D0D",
-"`d c #212A2A",
-"`e c #000606",
-"`f c #213030",
-"`g c #636A6A",
-"`h c #072A2A",
-"`i c #445C5C",
-"`j c #4D5454",
-"`k c #163535",
-"`l c #000505",
-"`m c #052E2E",
-"`n c #041616",
-"`o c #044444",
-"`p c #76C1C1",
-"`q c #0C4545",
-"`r c #767F7F",
-"`s c #002C2C",
-"`t c #000B0B",
-"`u c #030404",
-"`v c #280404",
-"`w c #385C5C",
-"`x c #354F4F",
-"`y c #001111",
-"`z c #347272",
-"a` c #6E3B3B",
-"aa c #71B1B1",
-"ab c #000A0A",
-"ac c #270C0C",
-"ad c #001717",
-"ae c #253838",
-"af c #418888",
-"ag c #013C3C",
-"ah c #192C2C",
-"ai c #000303",
-"aj c #164040",
-"ak c #032A2A",
-"al c #520B0B",
-"am c #001010",
-"an c #435555",
-"ao c #0C3636",
-"ap c #8EAFAF",
-"aq c #282A2A",
-"ar c #515C5C",
-"as c #1B5555",
-"at c #002A2A",
-"au c #2B3030",
-"av c #4F3939",
-"aw c #AF5C5C",
-"ax c #003737",
-"ay c #010000",
-"az c #001616",
-"b` c #042727",
-"ba c #0C3C3C",
-"bb c #030F0F",
-"bc c #002323",
-"bd c #0C4949",
-"be c #011A1A",
-"bf c #176464",
-"bg c #0F0000",
-"bh c #001C1C",
-"bi c #8A5B5B",
-"bj c #419A9A",
-"bk c #064949",
-"bl c #041919",
-"bm c #001515",
-"bn c #071212",
-"bo c #031B1B",
-"bp c #044040",
-"bq c #0F4E4E",
-"br c gray14",
-"bs c #031414",
-"bt c #063B3B",
-"bu c #2B5C5C",
-"bv c #396363",
-"bw c #182525",
-"bx c #001414",
-"by c #506969",
-"bz c #002121",
-/* pixels */
-"````````bxbpbbagay``````",
-"````abbc`hbqbfaj`m`yai``",
-"`````aac`j`zbi`za``q`o``",
-"``at`vavbjaw`gaa`wbwaq`s",
-"``axaoaeaf`pap`rarbrba`c",
-"``bzbn`d`i`gaaaaan`fbnaz",
-"``beboas`xbyarbiavbw`nbg",
-"``adbsbdahbubvauasbaak`b",
-"`````aagbkal`k`qbkbtam``",
-"````ab`l`t`ublb``eaiay``",
-"````````bh``bm``bg``````",
-"````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood3.xpm b/hacks/images/bubbles/blood3.xpm
deleted file mode 100644 (file)
index 81fd4d4..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/* XPM */
-static char *blood3[] = {
-/* width height ncolors chars_per_pixel */
-"14 14 101 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #250000",
-"`c c #5D1616",
-"`d c #415050",
-"`e c #010404",
-"`f c #3C9090",
-"`g c #251A1A",
-"`h c #095454",
-"`i c #190101",
-"`j c #70D0D0",
-"`k c #000606",
-"`l c #60C0C0",
-"`m c #165D5D",
-"`n c #636A6A",
-"`o c #072A2A",
-"`p c #6C7676",
-"`q c #000C0C",
-"`r c #102222",
-"`s c #4D5454",
-"`t c #163535",
-"`u c #043737",
-"`v c #4F6363",
-"`w c #044444",
-"`x c #76C1C1",
-"`y c #001212",
-"`z c #0C4545",
-"a` c #767F7F",
-"aa c #642525",
-"ab c #360505",
-"ac c #000B0B",
-"ad c #385C5C",
-"ae c #6D8686",
-"af c #000404",
-"ag c #001111",
-"ah c #030A0A",
-"ai c #5AABAB",
-"aj c #001E1E",
-"ak c #6E3B3B",
-"al c #71B1B1",
-"am c #274E4E",
-"an c #0D1A1A",
-"ao c #2B3E3E",
-"ap c #053333",
-"aq c #121515",
-"ar c #270C0C",
-"as c #418888",
-"at c #374343",
-"au c #013C3C",
-"av c #040707",
-"aw c #031D1D",
-"ax c #192C2C",
-"ay c #000303",
-"az c #070000",
-"b` c #164040",
-"ba c #537272",
-"bb c #120E0E",
-"bc c #001010",
-"bd c #062323",
-"be c #282A2A",
-"bf c #0C1515",
-"bg c #515C5C",
-"bh c #1B5555",
-"bi c #002A2A",
-"bj c #2B3030",
-"bk c #4F3939",
-"bl c #000909",
-"bm c #003737",
-"bn c #010000",
-"bo c #001616",
-"bp c #042727",
-"bq c #030F0F",
-"br c #074E4E",
-"bs c #0C4949",
-"bt c #011A1A",
-"bu c #55A1A1",
-"bv c #000F0F",
-"bw c #042020",
-"bx c #419A9A",
-"by c #064949",
-"bz c #1D4F4F",
-"c` c #2D8686",
-"ca c #000101",
-"cb c #286A6A",
-"cc c #044040",
-"cd c #001B1B",
-"ce c #0C4141",
-"cf c #031414",
-"cg c #011212",
-"ch c #172121",
-"ci c #002828",
-"cj c #2B5C5C",
-"ck c #000707",
-"cl c #343A3A",
-"cm c #182525",
-"cn c #364949",
-"co c #AA7979",
-"cp c #506969",
-"cq c #002121",
-"cr c #1C7171",
-"cs c #213E3E",
-/* pixels */
-"``````````cqcqagbiab````````",
-"``````ajawbd`h`ranbdcfbc````",
-"`````bbmaochcbc`cjaaarcf`b``",
-"`````e`zcr`fbxbaas`fbhbfcc``",
-"``bnby`mbjak`lae`jbuam`abebt",
-"``ar`wcmataialcoa`bgatchbw`k",
-"``bt`u`tclcp`pal`x`vclaxavck",
-"``blahbbcb`dba`n`sbkcbaqbqci",
-"``afcgbdb`beadcnatcjbzbrck`q",
-"`````occ`o`c`gcsaxarbfaubl``",
-"````caciazapcebbbsabci`yaw``",
-"``````btafcdbobpbvbl``ag````",
-"``````````acbv`yay`i````````",
-"````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood4.xpm b/hacks/images/bubbles/blood4.xpm
deleted file mode 100644 (file)
index d4f3ced..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/* XPM */
-static char *blood4[] = {
-/* width height ncolors chars_per_pixel */
-"20 20 144 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #002E2E",
-"`c c #689494",
-"`d c #250000",
-"`e c #000D0D",
-"`f c #5D1616",
-"`g c #415050",
-"`h c #212A2A",
-"`i c #013232",
-"`j c #095454",
-"`k c #70D0D0",
-"`l c #000606",
-"`m c #0E2E2E",
-"`n c #001313",
-"`o c #115555",
-"`p c #213030",
-"`q c #60C0C0",
-"`r c #002020",
-"`s c #445C5C",
-"`t c #6C7676",
-"`u c #000C0C",
-"`v c #549393",
-"`w c #102222",
-"`x c #4D5454",
-"`y c #002626",
-"`z c #163535",
-"a` c #043737",
-"aa c #4F6363",
-"ab c #000505",
-"ac c #65A0A0",
-"ad c #052E2E",
-"ae c #044444",
-"af c #7ED6D6",
-"ag c #001212",
-"ah c #196969",
-"ai c #385656",
-"aj c #0C4545",
-"ak c #767F7F",
-"al c #642525",
-"am c #002C2C",
-"an c #0E2626",
-"ao c #030404",
-"ap c #001818",
-"aq c #0A0E0E",
-"ar c #385C5C",
-"as c #002525",
-"at c #6D8686",
-"au c #000404",
-"av c #354F4F",
-"aw c #739999",
-"ax c #001111",
-"ay c #5A7D7D",
-"az c #347272",
-"b` c #030A0A",
-"ba c #010808",
-"bb c #001E1E",
-"bc c #6E3B3B",
-"bd c #71B1B1",
-"be c #183C3C",
-"bf c #274E4E",
-"bg c #000A0A",
-"bh c #287373",
-"bi c #0D1A1A",
-"bj c #053333",
-"bk c #270C0C",
-"bl c #001717",
-"bm c #253838",
-"bn c #418888",
-"bo c #374343",
-"bp c #013C3C",
-"bq c #040707",
-"br c #031D1D",
-"bs c #192C2C",
-"bt c #000303",
-"bu c #070000",
-"bv c #164040",
-"bw c #537272",
-"bx c #5B8787",
-"by c #120E0E",
-"bz c #032A2A",
-"c` c #520B0B",
-"ca c #0C3636",
-"cb c #001D1D",
-"cc c #0C1515",
-"cd c #297D7D",
-"ce c #002A2A",
-"cf c #AF5C5C",
-"cg c #000909",
-"ch c #003737",
-"ci c #010000",
-"cj c #001616",
-"ck c #042727",
-"cl c #0C3C3C",
-"cm c #030F0F",
-"cn c #002323",
-"co c #074E4E",
-"cp c #0C4949",
-"cq c #295555",
-"cr c #5E7272",
-"cs c #011A1A",
-"ct c #000202",
-"cu c #55A1A1",
-"cv c #000F0F",
-"cw c #176464",
-"cx c #042020",
-"cy c #0F0000",
-"cz c #001C1C",
-"d` c #8A5B5B",
-"da c #419A9A",
-"db c #420707",
-"dc c #064949",
-"dd c #0C5C5C",
-"de c #001515",
-"df c #071212",
-"dg c #1D4F4F",
-"dh c #154747",
-"di c #2D8686",
-"dj c #000101",
-"dk c #3C1B1B",
-"dl c #286A6A",
-"dm c #044040",
-"dn c #000E0E",
-"do c #264747",
-"dp c #396A6A",
-"dq c #001B1B",
-"dr c gray14",
-"ds c #0C4141",
-"dt c #031414",
-"du c #172121",
-"dv c #002828",
-"dw c #060D0D",
-"dx c #063B3B",
-"dy c #2B5C5C",
-"dz c #000707",
-"e` c #343A3A",
-"ea c #182525",
-"eb c #364949",
-"ec c #001414",
-"ed c #AA7979",
-"ee c #506969",
-"ef c #002121",
-"eg c #1C7171",
-"eh c #213E3E",
-/* pixels */
-"``````````````dzdjcv`rcgadce````````````",
-"``````````axabbp`daecka`bubpcice````````",
-"````````de`u`ick`jds`mdscabjbqde`e``````",
-"``````addbdkca`adgdgcddrahdkc`dt`ian````",
-"`````dcgdtbkegcdazbnd`bodididkajbzcjbg``",
-"````djcxajavbhbcdad`bweecfdadoeackcyas``",
-"``de`ydc`obhbcbc`qbdat`k`qbndybsdsdrcnbu",
-"``dqchdbdhehar`v`qedafakacbxebehcldcdvcb",
-"``apchad`zbmav`v`cawafbd`teear`h`wcx`b`r",
-"``dz`lckca`hboaaayakbdedat`xav`p`wb`blbt",
-"```n`ydwcceheb`seecratd`cubndl`hbibrchbu",
-"``cy`dcmdfbvbfav`g`x`xbwdabccddu`maoefbl",
-"```u`y`ubrcpbedrcqdpaie`ebbfcw`mdrec`b`u",
-"`````r`ibjaeca`oaldlbfbmdhcqbicoa`cgec``",
-"````abcz`dbpadbydd`f`zane`c`dwdxcg`raq``",
-"``````djbtam`ibrb`addcbkbjdmcxcs``cz````",
-"````````axdq`ldecbbaas`l`rbgblabdj``````",
-"````````````buaxdzaubbbbctcgbudn````````",
-"``````````````btagbycg`ebtab````````````",
-"````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood5.xpm b/hacks/images/bubbles/blood5.xpm
deleted file mode 100644 (file)
index 76f2471..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-/* XPM */
-static char *blood5[] = {
-/* width height ncolors chars_per_pixel */
-"24 24 170 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #002E2E",
-"`c c #689494",
-"`d c #250000",
-"`e c #000D0D",
-"`f c #5D1616",
-"`g c #415050",
-"`h c #212A2A",
-"`i c #013232",
-"`j c #3C9090",
-"`k c #251A1A",
-"`l c #095454",
-"`m c #190101",
-"`n c #000606",
-"`o c #003434",
-"`p c #0E2E2E",
-"`q c #001313",
-"`r c #115555",
-"`s c #213030",
-"`t c #60C0C0",
-"`u c #0F0404",
-"`v c #002020",
-"`w c #165D5D",
-"`x c #636A6A",
-"`y c #072A2A",
-"`z c #445C5C",
-"a` c #6C7676",
-"aa c #000C0C",
-"ab c #001919",
-"ac c #102222",
-"ad c #4D5454",
-"ae c #002626",
-"af c #163535",
-"ag c #4F6363",
-"ah c #000505",
-"ai c #65A0A0",
-"aj c #052E2E",
-"ak c #041616",
-"al c #044444",
-"am c #76C1C1",
-"an c #7ED6D6",
-"ao c #196969",
-"ap c #385656",
-"aq c #0C4545",
-"ar c #767F7F",
-"as c #642525",
-"at c #360505",
-"au c #5FB4B4",
-"av c #002C2C",
-"aw c #8C9B9B",
-"ax c #000B0B",
-"ay c #030404",
-"az c #001818",
-"b` c #280404",
-"ba c #0A0E0E",
-"bb c #385C5C",
-"bc c #002525",
-"bd c #407E7E",
-"be c #354F4F",
-"bf c #739999",
-"bg c #001111",
-"bh c #5A7D7D",
-"bi c #347272",
-"bj c #030A0A",
-"bk c #5AABAB",
-"bl c #010808",
-"bm c #001E1E",
-"bn c #6E3B3B",
-"bo c #71B1B1",
-"bp c #274E4E",
-"bq c #266464",
-"br c #000A0A",
-"bs c #2B3E3E",
-"bt c #053333",
-"bu c #121515",
-"bv c #270C0C",
-"bw c #001717",
-"bx c #253838",
-"by c #418888",
-"bz c #374343",
-"c` c #013C3C",
-"ca c #040707",
-"cb c #031D1D",
-"cc c #192C2C",
-"cd c #000303",
-"ce c #070000",
-"cf c #164040",
-"cg c #537272",
-"ch c #5B8787",
-"ci c #120E0E",
-"cj c #032A2A",
-"ck c #520B0B",
-"cl c #001010",
-"cm c #062323",
-"cn c #435555",
-"co c #0C3636",
-"cp c #8EAFAF",
-"cq c #282A2A",
-"cr c #001D1D",
-"cs c #0C1515",
-"ct c #515C5C",
-"cu c #1B5555",
-"cv c #297D7D",
-"cw c #002A2A",
-"cx c #2B3030",
-"cy c #4F3939",
-"cz c #AF5C5C",
-"d` c #000909",
-"da c #003737",
-"db c #010000",
-"dc c #001616",
-"dd c #042727",
-"de c #0C3C3C",
-"df c #030F0F",
-"dg c #010D0D",
-"dh c #002323",
-"di c #074E4E",
-"dj c #0C4949",
-"dk c #295555",
-"dl c #5E7272",
-"dm c #011A1A",
-"dn c #000202",
-"do c #000F0F",
-"dp c #176464",
-"dq c #042020",
-"dr c #0F0000",
-"ds c #001C1C",
-"dt c #8A5B5B",
-"du c #419A9A",
-"dv c #000808",
-"dw c #205C5C",
-"dx c #420707",
-"dy c #064949",
-"dz c #041919",
-"e` c #0C5C5C",
-"ea c #001515",
-"eb c #071212",
-"ec c #1D4F4F",
-"ed c #171B1B",
-"ee c #154747",
-"ef c #2D8686",
-"eg c #031B1B",
-"eh c #000101",
-"ei c #3C1B1B",
-"ej c #286A6A",
-"ek c #044040",
-"el c #000E0E",
-"em c #264747",
-"en c #0F4E4E",
-"eo c #0D1E1E",
-"ep c #001B1B",
-"eq c gray14",
-"er c #031414",
-"es c #172121",
-"et c #060D0D",
-"eu c #063B3B",
-"ev c #2B5C5C",
-"ew c #000707",
-"ex c #343A3A",
-"ey c #396363",
-"ez c #182525",
-"f` c #364949",
-"fa c #001414",
-"fb c #467373",
-"fc c #AA7979",
-"fd c #506969",
-"fe c #002121",
-"ff c #1C7171",
-"fg c #213E3E",
-/* pixels */
-"``````````````````cdew`v`bdoelci````````````````",
-"``````````````eafac`ekcbdffec`eqdbab````````````",
-"``````````ewaxbw`hbt`l`lcse`btajbjaec`dc````````",
-"````````brdadhcb`ycoenbudpencfe`ajcabgewcd``````",
-"``````ea`iat`ue`edafdwbpeffgejffaocicbegelfe````",
-"``````dv`bakbvffadbqbi`jdtbebicvbn`kaqdqalaj````",
-"````cmbmbjdyf`ffbybd`jczcgadbkbnefec`aeob`fe`d``",
-"````cwdab`e`cycvduarczai`xauboczbbcqezcocqc`av``",
-"```mcedrck`waocvarbodtambfbf`tczcneyem`p`l`dehci",
-"```qdaeicobubxapbybkamawcpboarbhctbzeqesdeaj`eep",
-"``ax`qdxbaaf`hapfbai`cbfananbfdlfbap`hezbadddmaz",
-"``brfeatebaf`hex`zdl`xa`bofcboagcnbz`s`aebdqdcaa",
-"``dvfadaakacfgbs`gcgdl`x`cdtauchbydk`sbuetda`oaz",
-"``cidmcbegeocudwbe`gfdcgctchdtbncyasezeoakdmdrdm",
-"``brfebcakebenafbxexbb`z`g`gapbicvaobudydqblav`u",
-"````bw`meraldjafccbxevbieyf`cxdkcu`pdeeicjah`d``",
-"````ahcw`oc`ek`yeeeieidwfgeq`s`w`fbab`ekdoewah``",
-"``````dv`batc`ajdyaqck`raf`paqexdydzeuaacl`m````",
-"``````dnewbg`o`pekebbtdyeidicqcacjcj`vewbm``````",
-"````````braaahd`axblayaydzdzddcj`nelcdahdb``````",
-"``````````bjcrbwdnfadcd`aedgdoaaaaaxep``````````",
-"````````````````dsbw``cdeads``axdrbg````````````",
-"``````````````````aadodrbgd`eldn````````````````",
-"````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood6.xpm b/hacks/images/bubbles/blood6.xpm
deleted file mode 100644 (file)
index 50a6c22..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-/* XPM */
-static char *blood6[] = {
-/* width height ncolors chars_per_pixel */
-"30 30 183 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #002E2E",
-"`c c #689494",
-"`d c #250000",
-"`e c #000D0D",
-"`f c #5D1616",
-"`g c #415050",
-"`h c #212A2A",
-"`i c #010404",
-"`j c #013232",
-"`k c #3C9090",
-"`l c #251A1A",
-"`m c #095454",
-"`n c #190101",
-"`o c #70D0D0",
-"`p c #000606",
-"`q c #003434",
-"`r c #0E2E2E",
-"`s c #001313",
-"`t c #115555",
-"`u c #213030",
-"`v c #60C0C0",
-"`w c #0F0404",
-"`x c #002020",
-"`y c #165D5D",
-"`z c #636A6A",
-"a` c #072A2A",
-"aa c #445C5C",
-"ab c #6C7676",
-"ac c #000C0C",
-"ad c #549393",
-"ae c #001919",
-"af c #102222",
-"ag c #4D5454",
-"ah c #002626",
-"ai c #163535",
-"aj c #043737",
-"ak c #4F6363",
-"al c #000505",
-"am c #65A0A0",
-"an c #052E2E",
-"ao c #041616",
-"ap c #044444",
-"aq c #76C1C1",
-"ar c #7ED6D6",
-"as c #001212",
-"at c #196969",
-"au c #385656",
-"av c #0C4545",
-"aw c #767F7F",
-"ax c #642525",
-"ay c #360505",
-"az c gray28",
-"b` c #000B0B",
-"ba c #030404",
-"bb c #001818",
-"bc c #944040",
-"bd c #280404",
-"be c #0A0E0E",
-"bf c #385C5C",
-"bg c #002525",
-"bh c #6D8686",
-"bi c #407E7E",
-"bj c #000404",
-"bk c #354F4F",
-"bl c #739999",
-"bm c #001111",
-"bn c #5A7D7D",
-"bo c #347272",
-"bp c #030A0A",
-"bq c #5AABAB",
-"br c #001E1E",
-"bs c #6E3B3B",
-"bt c #71B1B1",
-"bu c #183C3C",
-"bv c #274E4E",
-"bw c #266464",
-"bx c #000A0A",
-"by c #287373",
-"bz c #0D1A1A",
-"c` c #2B3E3E",
-"ca c #053333",
-"cb c #121515",
-"cc c #270C0C",
-"cd c #001717",
-"ce c #253838",
-"cf c #418888",
-"cg c #374343",
-"ch c #013C3C",
-"ci c #040707",
-"cj c #031D1D",
-"ck c #192C2C",
-"cl c #000303",
-"cm c #070000",
-"cn c #164040",
-"co c #537272",
-"cp c #5B8787",
-"cq c #120E0E",
-"cr c #032A2A",
-"cs c #520B0B",
-"ct c #001010",
-"cu c #062323",
-"cv c #435555",
-"cw c #0C3636",
-"cx c #8EAFAF",
-"cy c #282A2A",
-"cz c #001D1D",
-"d` c #0C1515",
-"da c #515C5C",
-"db c #1B5555",
-"dc c #297D7D",
-"dd c #002A2A",
-"de c #2B3030",
-"df c #4F3939",
-"dg c #AF5C5C",
-"dh c #000909",
-"di c #003737",
-"dj c #010000",
-"dk c #001616",
-"dl c #042727",
-"dm c #0C3C3C",
-"dn c #030F0F",
-"do c #010D0D",
-"dp c #002323",
-"dq c #074E4E",
-"dr c #0C4949",
-"ds c #295555",
-"dt c #5E7272",
-"du c #011A1A",
-"dv c #000202",
-"dw c #55A1A1",
-"dx c #000F0F",
-"dy c #176464",
-"dz c #042020",
-"e` c #0F0000",
-"ea c #001C1C",
-"eb c #8A5B5B",
-"ec c #419A9A",
-"ed c #000808",
-"ee c #205C5C",
-"ef c #420707",
-"eg c #064949",
-"eh c #041919",
-"ei c #0C5C5C",
-"ej c #001515",
-"ek c #071212",
-"el c #1D4F4F",
-"em c #171B1B",
-"en c #154747",
-"eo c #2D8686",
-"ep c #031B1B",
-"eq c #000101",
-"er c #3C1B1B",
-"es c #286A6A",
-"et c #044040",
-"eu c #000E0E",
-"ev c #264747",
-"ew c #0F4E4E",
-"ex c #0D1E1E",
-"ey c #396A6A",
-"ez c #001B1B",
-"f` c gray14",
-"fa c #0C4141",
-"fb c #031414",
-"fc c #172121",
-"fd c #002828",
-"fe c #060D0D",
-"ff c #063B3B",
-"fg c #2B5C5C",
-"fh c #645C5C",
-"fi c #000707",
-"fj c #343A3A",
-"fk c #396363",
-"fl c #182525",
-"fm c #364949",
-"fn c #001414",
-"fo c #467373",
-"fp c #AA7979",
-"fq c #506969",
-"fr c #002121",
-"fs c #1C7171",
-"ft c #213E3E",
-/* pixels */
-"````````````````````````dx`eahddahdvdx``````````````````````",
-"``````````````````dp``dufrdxej`ieqbg`n`dddbr````````````````",
-"````````````````dxalddfa`ddqetdldzbdcmchchdj`b``````````````",
-"````````````b``efn`japanegeifabeeidmekcibafr`xfded``````````",
-"``````````bxdi`qdocua`cwdr`afldy`yemaveianehbpfnalcl````````",
-"````````ct`nefbdcacwcbfcelbweedcdsftatbwdycscabp`jfrcm``````",
-"````````ctdicjanel`fdybwesbobodfbkfgesby`fdyeia`caddcc``````",
-"``````dkezdnaofabk`yerdceycfazcfaaeyfh`keofsatd`crapalcd````",
-"````fneq`ifbavbvbfbyeoececblbqcodaaddgbceoevcncbdlbdetbg`e``",
-"````cqejdibdeiataxeoecbcbq`v`c`zam`vdgbhbfde`hemfacy`l`scb``",
-"`````ddiefde`fdbbodtbcdgcx`oambhbl`v`vdgazfkevfldrer`wdddk``",
-"``bmaydibd`menftcebfcfbq`vfpararbtawamdwakfmevfcdmdmapfdbxdx",
-"``fi`bayegbzaf`hdebkbibqambtarfp`obl`zfhakfkdebucbdmdlch``cq",
-"``dxacbrapbeenfcevaufoad`cbhblarfpaqbh`zfoauceceembecjdpbxdk",
-"``fnez`papekcwfcc`cgaacobnababbtfp`obhakcvbkce`uafekdncd``fr",
-"``bbeabx`jd`afckevcg`gakfhdtbhbtebbqcpbnbibfcefcexekandifdfi",
-"``cddv`bbaekd`cneldsau`gcocodtdt`cfhebbhbceoftemd`cidz`bbg`s",
-"``dh`p`ddodzekaienbvfmfm`gagagagfqbiecebbsdccncb`rcjbpfrfrdx",
-"````asembbdnfedmenck`udebffkaaazazcgbfesbwax`rdmegdl`i`bac``",
-"````b`ezccfbcaegdraick`hbweseyfkc`evc`dsdbcnbzerf`crdvdddj``",
-"`````p`x`j`bcaegcwcwcnataxazbvbvf``uen`ycbbzcabdajfnedfndo``",
-"``````dvdue`caefana`av`tbv`lenbuckfcbvc``mbeffcwaeedeaeu````",
-"``````````ej`jbdajanaya`dmewfj`tavfaercqffaodldpeufnfn``````",
-"````````bjeqcl`xfl`janehbpcua`egcsefcacidldz`xeu``brcl``````",
-"``````````bxacbjdvacb``pbabpciehepcjdlah`pdkeq``b`dj````````",
-"`````````````e`ncd`ebxbbdubm`s`bctdhbbdxcd`pej`seq``````````",
-"````````````````bjcmczctfieqdxbrahbbdvdv`scmcd``````````````",
-"``````````````````aldvace`ejb`bmalbjedcdbm`p````````````````",
-"````````````````````````dxbjdhcte`cicm``````````````````````",
-"````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood7.xpm b/hacks/images/bubbles/blood7.xpm
deleted file mode 100644 (file)
index 81a71ca..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-/* XPM */
-static char *blood7[] = {
-/* width height ncolors chars_per_pixel */
-"36 36 185 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #002E2E",
-"`c c #689494",
-"`d c #250000",
-"`e c #000D0D",
-"`f c #5D1616",
-"`g c #415050",
-"`h c #212A2A",
-"`i c #013232",
-"`j c #3C9090",
-"`k c #251A1A",
-"`l c #095454",
-"`m c #190101",
-"`n c #70D0D0",
-"`o c #000606",
-"`p c #003434",
-"`q c #0E2E2E",
-"`r c #001313",
-"`s c #115555",
-"`t c #213030",
-"`u c #60C0C0",
-"`v c #0F0404",
-"`w c #002020",
-"`x c #165D5D",
-"`y c #636A6A",
-"`z c #072A2A",
-"a` c #445C5C",
-"aa c #6C7676",
-"ab c #000C0C",
-"ac c #549393",
-"ad c #001919",
-"ae c #102222",
-"af c #4D5454",
-"ag c #002626",
-"ah c #163535",
-"ai c #043737",
-"aj c #4F6363",
-"ak c #000505",
-"al c #65A0A0",
-"am c #052E2E",
-"an c #041616",
-"ao c #044444",
-"ap c #76C1C1",
-"aq c #7ED6D6",
-"ar c #001212",
-"as c #196969",
-"at c #385656",
-"au c #0C4545",
-"av c #767F7F",
-"aw c #642525",
-"ax c #360505",
-"ay c gray28",
-"az c #5FB4B4",
-"b` c #002C2C",
-"ba c #0E2626",
-"bb c #000B0B",
-"bc c #030404",
-"bd c #001818",
-"be c #944040",
-"bf c #280404",
-"bg c #0A0E0E",
-"bh c #385C5C",
-"bi c #002525",
-"bj c #6D8686",
-"bk c #407E7E",
-"bl c #000404",
-"bm c #354F4F",
-"bn c #739999",
-"bo c #001111",
-"bp c #5A7D7D",
-"bq c #347272",
-"br c #030A0A",
-"bs c #5AABAB",
-"bt c #010808",
-"bu c #001E1E",
-"bv c #6E3B3B",
-"bw c #71B1B1",
-"bx c #183C3C",
-"by c #274E4E",
-"bz c #266464",
-"c` c #000A0A",
-"ca c #287373",
-"cb c #0D1A1A",
-"cc c #2B3E3E",
-"cd c #053333",
-"ce c #121515",
-"cf c #270C0C",
-"cg c #001717",
-"ch c #253838",
-"ci c #418888",
-"cj c #374343",
-"ck c #013C3C",
-"cl c #040707",
-"cm c #031D1D",
-"cn c #192C2C",
-"co c #000303",
-"cp c #164040",
-"cq c #537272",
-"cr c #120E0E",
-"cs c #032A2A",
-"ct c #520B0B",
-"cu c #001010",
-"cv c #062323",
-"cw c #435555",
-"cx c #0C3636",
-"cy c #8EAFAF",
-"cz c #282A2A",
-"d` c #001D1D",
-"da c #0C1515",
-"db c #515C5C",
-"dc c #1B5555",
-"dd c #297D7D",
-"de c #002A2A",
-"df c #2B3030",
-"dg c #4F3939",
-"dh c #AF5C5C",
-"di c #000909",
-"dj c #003737",
-"dk c #010000",
-"dl c #001616",
-"dm c #042727",
-"dn c #0C3C3C",
-"do c #030F0F",
-"dp c #010D0D",
-"dq c #002323",
-"dr c #074E4E",
-"ds c #0C4949",
-"dt c #295555",
-"du c #5E7272",
-"dv c #011A1A",
-"dw c #000202",
-"dx c #55A1A1",
-"dy c #000F0F",
-"dz c #176464",
-"e` c #042020",
-"ea c #0F0000",
-"eb c #001C1C",
-"ec c #8A5B5B",
-"ed c #419A9A",
-"ee c #000808",
-"ef c #205C5C",
-"eg c #420707",
-"eh c #064949",
-"ei c #041919",
-"ej c #0C5C5C",
-"ek c #001515",
-"el c #071212",
-"em c #1D4F4F",
-"en c #171B1B",
-"eo c #154747",
-"ep c #2D8686",
-"eq c #031B1B",
-"er c #000101",
-"es c #3C1B1B",
-"et c #286A6A",
-"eu c #044040",
-"ev c #000E0E",
-"ew c #264747",
-"ex c #0F4E4E",
-"ey c #0D1E1E",
-"ez c #396A6A",
-"f` c #001B1B",
-"fa c gray14",
-"fb c #0C4141",
-"fc c #031414",
-"fd c #172121",
-"fe c #002828",
-"ff c #060D0D",
-"fg c #063B3B",
-"fh c #2B5C5C",
-"fi c #645C5C",
-"fj c #000707",
-"fk c #343A3A",
-"fl c #396363",
-"fm c #182525",
-"fn c #364949",
-"fo c #001414",
-"fp c #467373",
-"fq c #AA7979",
-"fr c #506969",
-"fs c #022323",
-"ft c #002121",
-"fu c #1C7171",
-"fv c #213E3E",
-/* pixels */
-"````````````````````````````````c``efoardw``````````````````````````````",
-"````````````````````````cobb`oftf`cuarevdldk`mdeag``````````````````````",
-"````````````````````cueefodjaheub`fcdofcagckeuaxdk`kdv``````````````````",
-"``````````````````ekcoaddj`tao`l`leudme`eoczdr`ife`pdkbf````````````````",
-"``````````````c`dvfjdl`pehcveuejdsdncbccdsbgcveqbrdvc`bibuee````````````",
-"````````````c``qdjdqbrdm`zdnauexfdfmdzdz`acpdsejame`dpbo`r`oco``````````",
-"``````````cuaxaxegdrcvbacrahahemembzezef`hefdz`f`ffkaocle`f`fte`````````",
-"``````````de`icke`ctewbyeofvbzcafhfhbefhdfetbzbvdg`sesamcl`pf`ax````````",
-"````````ebdi`bfceicf`ffuafcaetbqbkedecbqfnbqepddbv`f`fauanaiaodwab``````",
-"``````ebfjadbrfffb`sfhfudbepezci`cdxcifra`edbe`jbkfudz`qbgcd`h`b`par````",
-"``````ftarebcmehcfbmfucaepbveddxfqacdudbbpecbjaaepby`tfdeyamczesad`m````",
-"````eedecuaobfewdzdgbvepedaydxdhal`c`yal`ubwdhdxbhfk`hfmeydnczegdeb``m``",
-"````ce`p`kfafv`f`sfuawbebeaf`udhbwbnbjbn`u`ufqbsayezewchfmexesbfcxcoe```",
-"`````weaax`mctejdcemdtbqacdx`ufqcy`nbwbnbjalalbsa`bhdtewfdexeh`heucoft``",
-"````agdjcxfacxaeenchccatcidxazapaqfqcy`nbjavbjcqdbbhfkfafdbadnai`i`ebd``",
-"``fjcgdq`maoel`aenchfkcjfpbsalbnbnapaqaqbnbn`yajajflcj`tahcb`qdm`bbifoek",
-"``addw`o`baodaexfd`hfh`gfpac`cbjbnbnaqavapbwduajfrbhfkchbxeybgei`idldwcg",
-"```mboftageuelcxcn`hccbma`frdu`yaaavbwcyapbwduajcwatdf`tcneyelclb`dldw`r",
-"``eadl`rftcselaeenfvccfnayajfr`yaa`cbwfq`ualbpcqfpflewfveneydae``pdedqbd",
-"``fffo`oeabcelbgeneofhfnatcwajdubp`ybjbsfidhdx`jciddewfmendaffcmckaxdefj",
-"````ekdvckbreqcbaedcbzbybmcja`frcqfrdbbpdxecaabvdgaweffmcebaananbueabu``",
-"`````wag`pdpcmelcxcpeofvccfnfkay`gafafajajfp`jciawafefen`qcdcmbt`raedv``",
-"````d`c``dfobrbr`qdseocn`hczbmbhezbhayfnfkbmfhfhefescpbadrehfsakekdq`m``",
-"````c`cgagdjfccsehdsdsahcnfadtfhbqezfldffndfccemdc`scedn`mahcserar`ddw``",
-"```````obi`bde`iaoehcxcxcpemasawcafhfhczew`hdc`xes`acbauegamadakfjar````",
-"``````fjeb`d`k`maxaoamfbexctdzdz`feocpcnenbx`xesemba`z`maiftdiee`efj````",
-"````````blak`bfddkckcvameh`lexctcecpahahbaaucrczeheldmfgft`ocu`mad``````",
-"``````````akfjfo`peack`kegaieyds`ldfegexauescr`vcdeidmdef`abd`ad````````",
-"``````````bl``dwdydqb``bfsdodoeie`dmaoaxbxamfgfafsdl`weverfj`mbl````````",
-"````````````c`c`abakerabbb`o`obcclbreieiandmagft`odvakcoeec`dk``````````",
-"```````````````e`mcgbb`obbdvf``wbbcgcsdl`odldvbbdycudiadfobl````````````",
-"``````````````````dybud`ev`ofjbber`rdvdqarfjblakblar`m`m````````````````",
-"````````````````````cobbebdv`r``coblekf`cu``difoeaarc```````````````````",
-"````````````````````````ererboeabuevc`didiblerarbl``````````````````````",
-"````````````````````````````````c```blabdk``````````````````````````````",
-"````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood8.xpm b/hacks/images/bubbles/blood8.xpm
deleted file mode 100644 (file)
index 050b6e2..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-/* XPM */
-static char *blood8[] = {
-/* width height ncolors chars_per_pixel */
-"44 44 190 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #002E2E",
-"`c c #689494",
-"`d c #250000",
-"`e c #000D0D",
-"`f c #5D1616",
-"`g c #415050",
-"`h c #212A2A",
-"`i c #010404",
-"`j c #013232",
-"`k c #3C9090",
-"`l c #251A1A",
-"`m c #095454",
-"`n c #190101",
-"`o c #70D0D0",
-"`p c #000606",
-"`q c #003434",
-"`r c #0E2E2E",
-"`s c #001313",
-"`t c #115555",
-"`u c #213030",
-"`v c #60C0C0",
-"`w c #0F0404",
-"`x c #002020",
-"`y c #165D5D",
-"`z c #636A6A",
-"a` c #072A2A",
-"aa c #445C5C",
-"ab c #6C7676",
-"ac c #000C0C",
-"ad c #549393",
-"ae c #001919",
-"af c #102222",
-"ag c #4D5454",
-"ah c #002626",
-"ai c #163535",
-"aj c #043737",
-"ak c #4F6363",
-"al c #000505",
-"am c #65A0A0",
-"an c #052E2E",
-"ao c #041616",
-"ap c #044444",
-"aq c #76C1C1",
-"ar c #7ED6D6",
-"as c #001212",
-"at c #196969",
-"au c #385656",
-"av c #0C4545",
-"aw c #767F7F",
-"ax c #642525",
-"ay c #360505",
-"az c gray28",
-"b` c #5FB4B4",
-"ba c #002C2C",
-"bb c #0E2626",
-"bc c #8C9B9B",
-"bd c #000B0B",
-"be c #030404",
-"bf c #001818",
-"bg c #944040",
-"bh c #280404",
-"bi c #0A0E0E",
-"bj c #385C5C",
-"bk c #002525",
-"bl c #6D8686",
-"bm c #407E7E",
-"bn c #000404",
-"bo c #354F4F",
-"bp c #739999",
-"bq c #001111",
-"br c #5A7D7D",
-"bs c #347272",
-"bt c #030A0A",
-"bu c #5AABAB",
-"bv c #010808",
-"bw c #001E1E",
-"bx c #6E3B3B",
-"by c #71B1B1",
-"bz c #183C3C",
-"c` c #274E4E",
-"ca c #266464",
-"cb c #000A0A",
-"cc c #287373",
-"cd c #0D1A1A",
-"ce c #2B3E3E",
-"cf c #053333",
-"cg c #121515",
-"ch c #270C0C",
-"ci c #001717",
-"cj c #253838",
-"ck c #418888",
-"cl c #374343",
-"cm c #013C3C",
-"cn c #040707",
-"co c #031D1D",
-"cp c #192C2C",
-"cq c #000303",
-"cr c #070000",
-"cs c #164040",
-"ct c #537272",
-"cu c #5B8787",
-"cv c #120E0E",
-"cw c #032A2A",
-"cx c #520B0B",
-"cy c #001010",
-"cz c #062323",
-"d` c #435555",
-"da c #0C3636",
-"db c #8EAFAF",
-"dc c #282A2A",
-"dd c #001D1D",
-"de c #0C1515",
-"df c #515C5C",
-"dg c #1B5555",
-"dh c #297D7D",
-"di c #002A2A",
-"dj c #2B3030",
-"dk c #4F3939",
-"dl c #AF5C5C",
-"dm c #000909",
-"dn c #003737",
-"do c #010000",
-"dp c #001616",
-"dq c #042727",
-"dr c #0C3C3C",
-"ds c #030F0F",
-"dt c #010D0D",
-"du c #002323",
-"dv c #074E4E",
-"dw c #0C4949",
-"dx c #295555",
-"dy c #5E7272",
-"dz c #011A1A",
-"e` c #000202",
-"ea c #55A1A1",
-"eb c #000F0F",
-"ec c #176464",
-"ed c #042020",
-"ee c #0F0000",
-"ef c #001C1C",
-"eg c #8A5B5B",
-"eh c #419A9A",
-"ei c #000808",
-"ej c #205C5C",
-"ek c #420707",
-"el c #064949",
-"em c #041919",
-"en c #0C5C5C",
-"eo c #001515",
-"ep c #071212",
-"eq c #1D4F4F",
-"er c #171B1B",
-"es c #154747",
-"et c #2D8686",
-"eu c #031B1B",
-"ev c #000101",
-"ew c #3C1B1B",
-"ex c #286A6A",
-"ey c #044040",
-"ez c #000E0E",
-"f` c #264747",
-"fa c #0F4E4E",
-"fb c #0D1E1E",
-"fc c #396A6A",
-"fd c #001B1B",
-"fe c gray14",
-"ff c #0C4141",
-"fg c #031414",
-"fh c #011212",
-"fi c #172121",
-"fj c #002828",
-"fk c #060D0D",
-"fl c #063B3B",
-"fm c #2B5C5C",
-"fn c #645C5C",
-"fo c #000707",
-"fp c #343A3A",
-"fq c #396363",
-"fr c #182525",
-"fs c #364949",
-"ft c #001414",
-"fu c #467373",
-"fv c #AA7979",
-"fw c #506969",
-"fx c #022323",
-"fy c #002121",
-"fz c #1C7171",
-"g` c #213E3E",
-/* pixels */
-"````````````````````````````````````````````ac``````````````````````````````````````````",
-"`````````````````````````````````peie`bnbddidicicqae`xbwcg``````````````````````````````",
-"````````````````````````````cqcqddfydieoezebfoezbqahee`n`n`rbw``````````````````````````",
-"`````````````````````````pcbac`jap`nekapcweuaofhanapffekekdocr`dfd``````````````````````",
-"````````````````````ev`sal`pdieleleyel`m`mfla`emelbhdjelajfydn`jdo`ncd``````````````````",
-"``````````````````eveoezeobaelajdqfldv`mdw`rde`mcx`rfkemepdscncocbdidueo````````````````",
-"````````````````fo`bdndd`idqcfa`drdr`tfa`acgesatesfbdafadvfledfkbvacftbnev``````````````",
-"``````````````fj`dcmcmcmdsfkbibbdaaffrcpaidgccecaics`t`tdxfpffa`cnfg`baebqac````````````",
-"````````````ch`dcp`ddvcxcfdwfferercsejexc`caetex`uf`atfzaz`fenchdvemdsahcy`bcg``````````",
-"``````````dzef`xeycoedewench`yesdgcaexccfmbsbxfcdjdxcacafcew`ydkenajdsdqcmezchef````````",
-"``````````dzalfybwaodqch`ffz`fbscccabsbmckbgegbmclbjetetdhbxax`l`favczdqai`bacft````````",
-"````````crbdbwdtbtcodrenaxejaadcdhfqfu`kbgehckfwd`fucufp`ketaaatatdabiedapcmbwaf`s``````",
-"````````fteoevfgemelfpclfzfzdh`z`k`k`kbudladbrctdfadazehbr`kccc`eq`adeczaj`ncpei`d``````",
-"``````eoftfoahajekekcv`ldhdhdhehbxadeadlea`c`zbrcub`fnbxabbmbocj`uercg`rapcxeydiahdu````",
-"```````dahdiewayes`mecdkaxbxckegazbudl`vam`cab`c`oaqfvdlbufqfsfp`hfrfidrdvcnek`qacbk````",
-"````dd`ndnayewcjcvcl`tfzbxbg`zbgegb`eg`obybpblawby`v`vdlblaafqfqf`g`fidr`mdj`n`lacdp`n``",
-"````fy`day`d`wayewecdgdgdxfcckehbu`vfvab`oaqbybpaw`cambubufu`gfqc`f`frdr`mdvfefeebbdfy``",
-"````ci`ddn`lbhdvdr`acpcjceaufcadeab``odbfvfvdb`obpawbl`ccuakaafpce`ufr`adafleybadzebdd``",
-"````dp`j`j`heldqdeaferg`djbod`adbuambybyaqarawarbyblab`zdfdffcbjdj`uaicgfbfled`jbaevbw``",
-"`````scibwdrelembbaier`uf`auazbradam`cbpbpbyarfvaqbpbl`zdyctfubjce`hbzfrdeemczcwduevbw``",
-"````cq``bddnelepavbzfi`udxboazbrad`cblblbpbpaqbcaraqam`zfwfwaaclfpg`bzfr`acnco`jftalci``",
-"``eefofddp`jeyao`raifi`hf`fp`gakctdyababawblbyaraw`oam`zakagaafsdj`ucp`afbepbt`beoe`al`p",
-"````ezbw`efjajfkbbfberg`cecl`gazdfak`zababbpbydbdlbycudyfwakfcauceg`erafdeepeddn`bfdac``",
-"````cbbqevchdtepcdfbfrg`c`fsfpd`akct`zdy`zab`cb`eg`vbuadckckckfmcjcpcgcgbifkfxdndnafbk``",
-"````fd`p`scmcnepfkcv`rdgejfmfpau`gakbrctcu`zdycueafndlegbgbgfudhf`cpcgdedefkao`j`bah`d``",
-"````eeacahdn`iembibbbbesejdxdjboclaaakakfwdfdffwcueablabbgbxaxdkdgficgbba`cobfftbafyeo``",
-"````fdever`bdscnedepdrcscsg`dcf`clfp`gazd`agagaaakaafuck`kbgaxfzeqer`adadqaobt`s`jeodp``",
-"````ezebbk`deobeemaodafafaai`hdjdjfsbjfqfcaaazazclclaufqfmfmfzatbzafavelflfhalaceedmfk``",
-"``````ezefa``qdscncfffdwesbzfifefef`dxfqbsfcfqfpclfpfpc`dxeqboescgdacx`u`ledalaschef````",
-"````````fdcwer`xbkfldw`mffdaaiaiaiejexccexexexcjc`cj`uf`dgat`yafcdffayfe`baefocqfy`s````",
-"````````cbbk`bdn`jflapapda`rdr`tfsaxewaxcaf`g``u`h`hbz`yeccgfadebbewbhcmfjeidmbn`e``````",
-"``````````dzfjereebhekapcfa`av`tf``tdk`lecbzcscpfrcpeqc``fenfffkcfekcmfyebcqacasfo``````",
-"``````````e`e`ahdiay`ncmfxa`ajdcfadwfp`fdgcsaiai`a`r`tchdjesanfgcwflcwcbacaeeedd````````",
-"````````````bnfobq`jee`ndnajewewanfbavdwekcvewdwffdwcxaycnapdsemah`bbw`sasdueo`e````````",
-"``````````````ev`ecbbw`jchdn`hanczcnczanfldaescxbzayflelcnflbeahfybwacaldp`ncb``````````",
-"``````````````cb``e`bdcbcibffddtbebebeepepaoancffldqeuajeyfyebbwftei`pbnbwee````````````",
-"````````````````ezcy`sace`cb`p`pbqdpdsbebteudqbedteudqbkfde`aebqal``bn``bd``````````````",
-"``````````````````fh`naecybdcb`eaeciddfhdtdzdiddfocbaeci`edmae`pcyfdft`p````````````````",
-"````````````````````btdpbwefcidmalfocy`pbdftefbkbfeialbnale`bnbf`nepdm``````````````````",
-"````````````````````````cqebcvfycibqeibn```ebwbkbkaccqalebeoeebq````````````````````````",
-"``````````````````````````````bnbdcvdeftebbdasbdevbncqcydzasbq``````````````````````````",
-"````````````````````````````````ei`pbqft`nbqbdac`eacdmcqev``````````````````````````````",
-"````````````````````````````````````````````e```````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blood9.xpm b/hacks/images/bubbles/blood9.xpm
deleted file mode 100644 (file)
index e6efa9e..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/* XPM */
-static char *blood9[] = {
-/* width height ncolors chars_per_pixel */
-"50 50 190 2",
-/* colors */
-"`` c None",
-"`a c #102A2A",
-"`b c #002E2E",
-"`c c #689494",
-"`d c #250000",
-"`e c #000D0D",
-"`f c #5D1616",
-"`g c #415050",
-"`h c #212A2A",
-"`i c #010404",
-"`j c #013232",
-"`k c #3C9090",
-"`l c #251A1A",
-"`m c #095454",
-"`n c #190101",
-"`o c #70D0D0",
-"`p c #000606",
-"`q c #003434",
-"`r c #0E2E2E",
-"`s c #001313",
-"`t c #115555",
-"`u c #213030",
-"`v c #60C0C0",
-"`w c #0F0404",
-"`x c #002020",
-"`y c #165D5D",
-"`z c #636A6A",
-"a` c #072A2A",
-"aa c #445C5C",
-"ab c #6C7676",
-"ac c #000C0C",
-"ad c #549393",
-"ae c #001919",
-"af c #102222",
-"ag c #4D5454",
-"ah c #002626",
-"ai c #163535",
-"aj c #043737",
-"ak c #4F6363",
-"al c #000505",
-"am c #65A0A0",
-"an c #052E2E",
-"ao c #041616",
-"ap c #044444",
-"aq c #76C1C1",
-"ar c #7ED6D6",
-"as c #001212",
-"at c #196969",
-"au c #385656",
-"av c #0C4545",
-"aw c #767F7F",
-"ax c #642525",
-"ay c #360505",
-"az c gray28",
-"b` c #5FB4B4",
-"ba c #002C2C",
-"bb c #0E2626",
-"bc c #8C9B9B",
-"bd c #000B0B",
-"be c #030404",
-"bf c #001818",
-"bg c #944040",
-"bh c #280404",
-"bi c #0A0E0E",
-"bj c #385C5C",
-"bk c #002525",
-"bl c #6D8686",
-"bm c #407E7E",
-"bn c #000404",
-"bo c #354F4F",
-"bp c #739999",
-"bq c #001111",
-"br c #5A7D7D",
-"bs c #347272",
-"bt c #030A0A",
-"bu c #5AABAB",
-"bv c #010808",
-"bw c #001E1E",
-"bx c #6E3B3B",
-"by c #71B1B1",
-"bz c #183C3C",
-"c` c #274E4E",
-"ca c #266464",
-"cb c #000A0A",
-"cc c #287373",
-"cd c #0D1A1A",
-"ce c #2B3E3E",
-"cf c #053333",
-"cg c #121515",
-"ch c #270C0C",
-"ci c #001717",
-"cj c #253838",
-"ck c #418888",
-"cl c #374343",
-"cm c #013C3C",
-"cn c #040707",
-"co c #031D1D",
-"cp c #192C2C",
-"cq c #000303",
-"cr c #070000",
-"cs c #164040",
-"ct c #537272",
-"cu c #5B8787",
-"cv c #120E0E",
-"cw c #032A2A",
-"cx c #520B0B",
-"cy c #001010",
-"cz c #062323",
-"d` c #435555",
-"da c #0C3636",
-"db c #8EAFAF",
-"dc c #282A2A",
-"dd c #001D1D",
-"de c #0C1515",
-"df c #515C5C",
-"dg c #1B5555",
-"dh c #297D7D",
-"di c #002A2A",
-"dj c #2B3030",
-"dk c #4F3939",
-"dl c #AF5C5C",
-"dm c #000909",
-"dn c #003737",
-"do c #010000",
-"dp c #001616",
-"dq c #042727",
-"dr c #0C3C3C",
-"ds c #030F0F",
-"dt c #010D0D",
-"du c #002323",
-"dv c #074E4E",
-"dw c #0C4949",
-"dx c #295555",
-"dy c #5E7272",
-"dz c #011A1A",
-"e` c #000202",
-"ea c #55A1A1",
-"eb c #000F0F",
-"ec c #176464",
-"ed c #042020",
-"ee c #0F0000",
-"ef c #001C1C",
-"eg c #8A5B5B",
-"eh c #419A9A",
-"ei c #000808",
-"ej c #205C5C",
-"ek c #420707",
-"el c #064949",
-"em c #041919",
-"en c #0C5C5C",
-"eo c #001515",
-"ep c #071212",
-"eq c #1D4F4F",
-"er c #171B1B",
-"es c #154747",
-"et c #2D8686",
-"eu c #031B1B",
-"ev c #000101",
-"ew c #3C1B1B",
-"ex c #286A6A",
-"ey c #044040",
-"ez c #000E0E",
-"f` c #264747",
-"fa c #0F4E4E",
-"fb c #0D1E1E",
-"fc c #396A6A",
-"fd c #001B1B",
-"fe c gray14",
-"ff c #0C4141",
-"fg c #031414",
-"fh c #011212",
-"fi c #172121",
-"fj c #002828",
-"fk c #060D0D",
-"fl c #063B3B",
-"fm c #2B5C5C",
-"fn c #645C5C",
-"fo c #000707",
-"fp c #343A3A",
-"fq c #396363",
-"fr c #182525",
-"fs c #364949",
-"ft c #001414",
-"fu c #467373",
-"fv c #AA7979",
-"fw c #506969",
-"fx c #022323",
-"fy c #002121",
-"fz c #1C7171",
-"g` c #213E3E",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````",
-"``````````````````````````````````````bnbnbddpfjdn`bahfdcq`pebfj````````````````````````````````````",
-"````````````````````````````````bnfocqftbwdddpeobqbddmfofyaydoaydnahbk``````````````````````````````",
-"````````````````````````````fd`seibw`q`qapcmahdzfgfgbtfh`x`qcmflcheecrbwah``````````````````````````",
-"````````````````````````dmdmezalfd`bapek`ddvelapajdqdscwdvaycravcm`j`rdoayahdd``````````````````````",
-"```````````````````````pftevevdzdn`heyajey`m`m`manczaoel`wapeyeyfxfh`bah`qfibhah````````````````````",
-"````````````````````bnfd`xezeo`jdvcfeddadvenavav`rcd`tfpdabicdczcoepbedzez`sahdzbq``````````````````",
-"``````````````````cbdi`qdifhdsancfa`drdafa`tbzafcgesej`tfbdaff`mdvfledfgbtbtcycifo``````````````````",
-"````````````````du`naydncmfxcnaobibbdr`aerfrcpcpeqdhatesfres`t`tdkdgdra`btfhbwdicyezei``````````````",
-"``````````````fbcr`rekeeayapdqda`rcg`afreqejejdxcadhccg``uejatfzaxclc`cx`mcodtfg`jev`bbk````````````",
-"````````````bw`jdzchcmdqeyg`ceekfaaibzdgejcccadxbsfnbsceceexejfzaxew`teccxelaocn`bdnevbh`x``````````",
-"```````````s`xfofjdnfhfgdvewayewdkatexexccbsbsbm`kfpckfsbofqccexdhewdkaz`fenflbtajap`xfdbqcb````````",
-"``````````fyacdpdzdsfgdqen`fatecagaxdhfmfcck`kbleg`kfud`d`bs`kfnetdhbs`gateca`fkcweldnebay`e````````",
-"````````bqdmaeftbtbecofffaecfzatakaxetbmfcckbubxehbrctakfw`kegdk`ketetatecfacdbidqapap`jdmercq``````",
-"`````````nevbfeoeueuavcxec`ffzccdh`k`z`keheadlb`cuctctdfbrbldlcuad`kccf`g`cscgfbdqflayekfybk`n``````",
-"``````alfj`pftfjflbhayekcxewccdhet`kbgehadbpb`am`cfnbrcububpdlbxadbmboce`ucpcgafdaelewapdibncrdz````",
-"``````dzbbddey`dayesenecatewewbmckabbxamb`dlb`am`cab`c`vdbbyfvdleafqclcedc`hfibbff`m`w`dcmaedu`d````",
-"``````bhay`qay`hcscvf``t`ybxaxbxegbgagfv`vfvbybybpblawby`v`v`vdlbuaabjfcf`cjcpfrdw`mewek`dahfoah````",
-"````efczeecm`n`wekcx`f`tdgexexbmeheabu`vaqegdbaqaqbpbpawambyb``vb`fu`gfcfmdx`ufrff`mdveweedievdddz``",
-"````bfer`ddnapbhfa`mesbzg`cjcebjfuckeab``vdbfvarararaqbpawblamamadfw`gfsboc``herdrdwapeldnfje`aeef``",
-"````cy`nfi`dai`uflfbcder`uceceauaaadeabubyaq`oarfvbcarbyblabblbrfwdfaabjfpdc`ufiafdaflanbadnbd`sdz``",
-"`````pbw`beyekeyczbi`afr`ucjfpcld`cubuamambpbyaqardbaraqbp`c`z`zdfdffufqcldc`ucpcdfbcfeddqdnbwbdbw``",
-"````al`e`sah`napep`acsfifecjauauazbradam`cblbpbpbyarawarbybpab`zfwctfubjfpdj`haifbcdepcocwah`saleo``",
-"````e`ei`pfh`leybiffeser`hc`fmfs`gbmadcublabblblbpaqardbaqaq`c`zfwfwd`clfpcecjbzaf`afkemanbwcy``eo``",
-"`````edzdd`pekflep`rdacpfecjcecl`gakfwdybr`zababbpbyarfv`obyblfnakagaabodjcj`ucpaffbepbefjcidpbnas``",
-"````cbdzaee`eyanfkbbafercpcjcjfs`g`gdfdffn`zabblbpby`ofv`vambrfwakaafcauf`cj`ufiafepfkaodn`j`xdz`p``",
-"````cbaseo`sayfkfkcdcdcgbzc`f`fsfpd`akctdfdy`z`zblambyegb`b`adcubmbmbmfqf``ucpcgcdbifkfxdndn`b`dcy``",
-"````aecbe``b`jcnaobicvereseqcadxfpbjd`dfctbrbrbr`zbr`cb`fnegbueaehehbmdhc``ufierdebicnaocm`qcrdudd``",
-"````dzei`s`qdibtaocnfbfbfadgcadxdjbocld`fwfwctctdfakdycub`agegbxbxbxbxaxcabzercgfbedfgfgddfyaybwde``",
-"````asbdbf`ddu`icocoep`rbzcsdgc`djfsfs`g`gagagagagagdfctfuckehegegbgdjdhecaicgcd`redcobtezfybhfyae``",
-"````foaeddeedidsbeedbi`ravesbzcjfececefpaud`aad`d``gd`aad`aabsbmdhfnbxaxdg`afbdreyanfg`pezbkahasfk``",
-"``````dd`p`j`qft`iemepa`dresesaifedcdccebjbjfcfcbjfsclclclfsbofmfmejcaboescgdadvcsflfgal``erfdae````",
-"``````alftdddo`jdscndqapavfaesbzfife`hcjfmdxbsbsfcfqclclcldjcedxdxeqat`tbbbb`mekaicpfxdmaccwfyfd````",
-"``````cb`pfyerayddfxajdcdwdwdraiaiai`uf`caccexexexexcef`c`dccjf`dgatec`rde`rcsbhap`jfddmcqfy`n`p````",
-"````````bn`xcz`b`j`jcfflelfldadadafa`yataxewccejc`c`cj`hcjfees`yeccx`ycddeff`wayajahdmcbcqftbd``````",
-"````````foacdddo`j`d`nfeapajandaav`tch`yejdx`fejg`g``ufrerbz`y`ychf`facdczelbhajfxfheialcbbnac``````",
-"`````````````edzererdnbeaycfa`a`dadwf`av`y`fcxeqaiaiaifiercsc`chf`djdacnanfldafjcyaccbbwfyac````````",
-"``````````evbn``ciduchcrayajdqanapcxdrdadw`tcedjfaavavdrdadwdjchewesczemfxcwcwbffoebbwcodo``````````",
-"``````````````bne``sci`jay`ncpdrbhapajema`avdway`maydwdwavcxekaycneydscofjahfydz`ebfbkefbd``````````",
-"``````````````evevbdcq`sbkdn`q`jajdqcobtbta`a`a`cfelchewcheycfewekajbeedduddasei``eocrbd````````````",
-"````````````````cb``e`bndmdmeoftaedtbebecncnaodsaodqanajanedfxajajcoezfydpalev`pacbwee``````````````",
-"```````````````````e`ecycyeievacal`iebfhfgbvbedscodqbedtfhfxahahbfevbfft``e`e`evev`e````````````````",
-"````````````````````ft`nefbfdmbndmcbfdfyddbwezcyfyfjdzezdm`sefaecb`paeebalebas`scq``````````````````",
-"``````````````````````do`wbwfdftft``eiacezeobnezeodufyftdmfocybd`pcbbndmciembicb````````````````````",
-"````````````````````````dme``scrcvaecyasfocb``bdbfbwdubkaeebe`cqalebfdcrcycrcb``````````````````````",
-"``````````````````````````````cqacdpbwcibqe`cqalfoasbqaseibndmacci`ncyebdm``````````````````````````",
-"````````````````````````````````cqe```ez`n`nciftac`ebqfofoe`evcb`wasal``````````````````````````````",
-"```````````````````````````````````````ecq`ebqeofgeo`sbdbdbqcbbn````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue.pov b/hacks/images/bubbles/blue.pov
deleted file mode 100644 (file)
index 86d1ff8..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "colors.inc"
-#include "shapes.inc"
-#include "textures.inc"
-
-/* The following make the field of view as wide as it is high
- * Thus, you should have the -W and -H command line options
- * equal to each other. */
-camera {
-        location <5.8, 0, 0>
-       up <0, 1, 0>
-       right <1, 0, 0>
-        look_at <0, 0, 0>
-}
-
-sphere {
-        <0,0,0>, 2.5
-       texture { Blue_Agate 
-       scale <0.7, 0.7, 0.7> }
-       finish { phong 1 }
-}
-
-light_source {<6, 1, 0> color White}
diff --git a/hacks/images/bubbles/blue1.xpm b/hacks/images/bubbles/blue1.xpm
deleted file mode 100644 (file)
index 49ff012..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static char *blue1[] = {
-/* width height ncolors chars_per_pixel */
-"10 10 46 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #2E2E4E",
-"`c c #1D1D30",
-"`d c #1B1B2E",
-"`e c #0C0C12",
-"`f c #0A0A10",
-"`g c #17172A",
-"`h c #25253E",
-"`i c #12121E",
-"`j c #20202F",
-"`k c #141423",
-"`l c #2F2F4E",
-"`m c #1A1A2C",
-"`n c #333355",
-"`o c #1D1D2B",
-"`p c #282843",
-"`q c #303051",
-"`r c #111122",
-"`s c #161620",
-"`t c #0A0A14",
-"`u c #25253F",
-"`v c #2B2B48",
-"`w c #2F2F4F",
-"`x c #101020",
-"`y c #18182B",
-"`z c #353558",
-"a` c #15151E",
-"aa c #191925",
-"ab c #13131F",
-"ac c #0D0D19",
-"ad c #151524",
-"ae c #343456",
-"af c #1F1F34",
-"ag c #0C0C14",
-"ah c #0A0A12",
-"ai c #494967",
-"aj c #23233B",
-"ak c #0C0C17",
-"al c #292944",
-"am c #121223",
-"an c #BCBCD7",
-"ao c #1A1A2E",
-"ap c #0B0B15",
-"aq c #262640",
-"ar c #171724",
-/* pixels */
-"```````s`uaj`u`t````",
-"````ac`a`w`l`waqaa``",
-"```m`p`x`nae`n`waj`t",
-"``a``o`w`dan`z`q`yaf",
-"``ap`g`l`naiam`lal`k",
-"``ak`h`v`bao`b`v`h`s",
-"``ab`iaral`r`j`uafab",
-"````ad`c`sab`s`cag``",
-"```````eadahad`f````",
-"````````````````````"
-};
diff --git a/hacks/images/bubbles/blue10.xpm b/hacks/images/bubbles/blue10.xpm
deleted file mode 100644 (file)
index 9d6b278..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-/* XPM */
-static char *blue10[] = {
-/* width height ncolors chars_per_pixel */
-"60 60 173 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #1B1B2B",
-"`c c #282845",
-"`d c #191929",
-"`e c #323252",
-"`f c #303050",
-"`g c #111121",
-"`h c #2E2E4E",
-"`i c #0F0F1F",
-"`j c #1D1D30",
-"`k c #1B1B2E",
-"`l c #0C0C12",
-"`m c #0A0A10",
-"`n c #17172A",
-"`o c #212137",
-"`p c #767691",
-"`q c #1F1F35",
-"`r c #2F2F48",
-"`s c #101019",
-"`t c #0E0E17",
-"`u c #272740",
-"`v c #181824",
-"`w c #25253E",
-"`x c #12121E",
-"`y c #10101C",
-"`z c #20202F",
-"a` c #0E0E1A",
-"aa c #2B2B47",
-"ab c #0C0C18",
-"ac c #292945",
-"ad c #161625",
-"ae c #141423",
-"af c #242436",
-"ag c #313150",
-"ah c #121221",
-"ai c #2F2F4E",
-"aj c #2D2D4C",
-"ak c #2B2B4A",
-"al c #1A1A2C",
-"am c #5C5C7A",
-"an c #161628",
-"ao c #333355",
-"ap c #07070C",
-"aq c #313153",
-"ar c #05050A",
-"as c #0D0D15",
-"at c #07070F",
-"au c #24243C",
-"av c #202038",
-"aw c #0D0D18",
-"ax c #1D1D2B",
-"ay c #0B0B16",
-"az c #282843",
-"b` c #262641",
-"ba c #232334",
-"bb c #11111F",
-"bc c #0F0F1D",
-"bd c #2C2C4A",
-"be c #3C3C5D",
-"bf c #2A2A48",
-"bg c #1B1B2C",
-"bh c #19192A",
-"bi c #151526",
-"bj c #131324",
-"bk c #303051",
-"bl c #111122",
-"bm c #1F1F33",
-"bn c #19192D",
-"bo c #08080F",
-"bp c #161620",
-"bq c #23233A",
-"br c #212138",
-"bs c #0E0E18",
-"bt c #0A0A14",
-"bu c #272741",
-"bv c #25253F",
-"bw c #23233D",
-"bx c #12121F",
-"by c #10101D",
-"bz c #202030",
-"c` c #0E0E1B",
-"ca c #1E1E2E",
-"cb c #2B2B48",
-"cc c #0C0C19",
-"cd c #292946",
-"ce c #181828",
-"cf c #28283B",
-"cg c #262639",
-"ch c #2F2F4F",
-"ci c #101020",
-"cj c #1C1C2F",
-"ck c #2A2A40",
-"cl c #18182B",
-"cm c #353558",
-"cn c #09090F",
-"co c #333356",
-"cp c #07070D",
-"cq c #15151E",
-"cr c #202036",
-"cs c #1C1C32",
-"ct c #090912",
-"cu c #191925",
-"cv c #26263F",
-"cw c #24243D",
-"cx c #22223B",
-"cy c #13131F",
-"cz c #11111D",
-"d` c #0F0F1B",
-"da c #0D0D19",
-"db c #2A2A46",
-"dc c #262642",
-"dd c #171726",
-"de c #151524",
-"df c #131322",
-"dg c #111120",
-"dh c #2E2E4D",
-"di c #0F0F1E",
-"dj c #1D1D2F",
-"dk c #343456",
-"dl c #08080D",
-"dm c #151527",
-"dn c #06060B",
-"do c #1F1F34",
-"dp c #1B1B30",
-"dq c #0C0C14",
-"dr c #0A0A12",
-"ds c #494967",
-"dt c #23233B",
-"du c white",
-"dv c #14141F",
-"dw c #212139",
-"dx c #1E1E2C",
-"dy c #2B2B46",
-"dz c #0C0C17",
-"e` c #292944",
-"ea c #0A0A15",
-"eb c #262637",
-"ec c #141422",
-"ed c #2D2D4B",
-"ee c #0E0E1C",
-"ef c #1A1A2B",
-"eg c #373758",
-"eh c #181829",
-"ei c #161627",
-"ej c #333354",
-"ek c #141425",
-"el c #313152",
-"em c #121223",
-"en c #222236",
-"eo c #030307",
-"ep c #BCBCD7",
-"eq c #1E1E32",
-"er c #1C1C30",
-"es c #1A1A2E",
-"et c #0B0B12",
-"eu c #18182C",
-"ev c #28283F",
-"ew c #090910",
-"ex c #222239",
-"ey c #202037",
-"ez c #11111B",
-"f` c #1E1E35",
-"fa c #0F0F19",
-"fb c #0D0D17",
-"fc c #0B0B15",
-"fd c #1B1B28",
-"fe c #090913",
-"ff c #262640",
-"fg c #171724",
-"fh c #151522",
-"fi c #212131",
-"fj c #2C2C49",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````dn`tdvahbhdebhbhecehawbs`x``````````````````````````````````````````````",
-"```````````````````````````````````````````yaweffcerbpbpeqbmbmbbaneiahay`kcedqfh````````````````````````````````````````",
-"````````````````````````````````````cpddeffcbbbsbpbpbrexexal`kabdgdfabaway`v`jcjbt`tcz``````````````````````````````````",
-"````````````````````````````````dnddaler`kbpfdexbqaucw`nccdac``wcccucwfdcueqcrcreq`kbsddar``````````````````````````````",
-"``````````````````````````````dqefcjbpdzexcuau`wbvekdt`gciekdtbiaxbubuffbvbcandoexfgbtdvbiez````````````````````````````",
-"``````````````````````````drdzbgeqcldfbcbxdjdxbuazazcibcax`dci`qffb`biazazbuff`wcwbqc`bpeqbgcecz````````````````````````",
-"````````````````````````fcehfedzcrabbyalexbuaze`dbdfdidicbaxdfbuavdffidbdbe`azbuffc``qfhcreq`xbhec``````````````````````",
-"``````````````````````cz`yalahfgbqahdabjazacdbaacbfjbdauede`edciblcbenfjcbaadbac`zexdxcwbqbpanaybhec````````````````````",
-"````````````````````boezayclbidtexeedididbaacbbdededajdhdhdhdhdhdtesajededbdcbfiae`ndxff`wdtaldadrbhas``````````````````",
-"```````````````````tbherc``ndtdteeeeby`zcbfjedajdhdy`abnbvbzebebciavcwebdhajbierahah`qdxcu`wdtal`kdzbhcp````````````````",
-"````````````````bxeh`yawdadtcuclazac`acbbdeddh`hch`n`ncschdcaicsdmdmcif`ch`hdhfjdidiffbyahdx`wczcubmbsczbx``````````````",
-"``````````````asddbxbtcsda`wcsekac`acbbdajdhaich`favcicif`cgaq`jcb`navdm`fchaiekesbjeeesbmazffbcc``oeqbgctcn````````````",
-"``````````````ctez`j`dexfgcvbccw`acbbdbzdhch`fbkelfidpbleycfejcfdc`ndpbnelbkfiesbdbnfiexdt`ubucv`kexcr`jefde````````````",
-"````````````cyehdz`ybrbycsbubqeecbbdajdhch`fbkelaq`eafazakafaobnbheyeucscbelbacsb`badffidf`zdxbu`wdabrcufcctcy``````````",
-"```````````matdv`jcrehczbbazaccsfjeddhai`fbabz`eejejblchbkeuekcjcoaoaoaiej`eclemfifienafbiaaacazekccexcrdfctaddl````````",
-"``````````cydzfcehbrclclcae`dxbueddh`i`qbdbdbjaiaobnesembj`jdkdkdkdkedaoaoejbkcsbjchaidhedcbdbe`exfdaubrawbtfccy````````",
-"````````asezalayaydaahanaz`udganbvcici`gf`dmajbnao`jazekavdkdkdkcgbjbn`naoemancdbj`fchdhedbdaabcdtffcwexcrehbtad`m``````",
-"````````bxbofebbbierdw`kazdbcaemcidtdc`nelbvblaocobfeualcfcmcmazbmcmemebclbidmaibjbkchaidhbd`bbrahbu`wdt`ocjfece`l``````",
-"````````fhbhbtdzbybcclahe``afj`icsazblfiafdhancodkeuazcmcmcmcmcmcfejcfdkdkbj`n`naqel`faidhedaxcie`bucvfdexdodfbhfh``````",
-"``````bobxehayabda`jdaexaxaabdeudpbvf`bv`a`ccfcockbjf`ckbebebebecfalcmdkdkcocdbj`eel`fchdhedahbcdxc`fhcwexcrayalbobo````",
-"```````xddbcay`yfhbidgc`eecifiajfidcdmcidmfiaocoalekf`eq`eagdsdsdsbeegcmdkcoclcw`eelbkch`hajdwee`nc`by`wbqcr`va`ddbo````",
-"``````dfehfeanfheidgekaz`zbldmaj`hcaajeubn`haodkbj`kexcfegamam`pamdsbeegcmdkaocxbjelbkch`hajbv`qclfd`wbcdt`oeqbhdedf````",
-"````etcybhaycqfhbhcsfdazaxcadiaj`hchchdm`gajdmdk`kagbeds`p`pepep`pamdsbecmdkao`neuelbkch`hajblahclca`kbndtbrdocqdrecet``",
-"````bsfcbhd`dobrbrczbmazcacb`qca`hchbkeldmf`andkdkej`ramepduduepep`pambecmdkaoelblciebch`hajandtdibuekcccubrdoerctdebs``",
-"`````sfheifbdzfddfexdxazdbcbeuazfich`felbhblbidkanbmeg`pepdududuep`pambeegdkao`cavavblekdhaj`zclerbcdiciecbrcudvezat`s``",
-"`````yad`d`jaybrczcsby`zdbca`bdp`gef`felelavcgcobnbzam`pepdududuep`pambeegcoclchcddmdpcw`zeddidweedpc`aney`vbsdzez`sbs``",
-"````ezadcq`jdobrdtdfcvby`kahcwemajcwbabkelcsf`aocseq`ram`pepepepep`pdsbebmcbesbnbkci`nazfiedfjaafieec`dfahbr`vfcbhezfb``",
-"````ezadbherdo`odtbqffbb`nahcicicdbwbz`felbvavejcb`kdsds`p`p`pep`pamdsen`nancldpcici`cbafiedcb`aacexdmczdt`obbaebbec`y``",
-"````ez`tbhdzfc`obqcwffah`nciekerehfiai`fcsanek`eaoekef`rdsbedsamamdsbe`nem`eaqelbabaaidhedcaddaxe`axc`cubq`oaecjdzewdn``",
-"`````yct`xfcbtcrexaucvbuekeeesf`crdh`hbibv`ffiaq`eekbh`jcg`e`rdsbeegcmekblbaelbk`fch`hdhedfjaadbazbuda`vexcrabadct`sfa``",
-"`````sfh`sahaydzexdt`wffazdteebcbaeddh`gcibdbkelcxbjevdkaiejeqegcmdkejcgcsekbk`fchaidhedbdcb`aaccabbcwcuexcr`jbsehfhet``",
-"````cneccedrbyczbrbqcwffbu`nazemddbdajebcwci`fbk`qbnafaicbdweiejej`eelelahbjfichaidhajbdfjcadbazax`v`na`brdoahcqceasas``",
-"````arboddctekdgbpexau`wbucrerffbifjedajdfcieb`fahf`ek`f`h`gaaelelelelbk`fey`qaidhajedfjcbdbacazbu`wdadj`obmez`x`sctfb``",
-"````eodqaddffeay`jexdt`wfffdeeexdicbbdedajcs`haibz`q`gemb`bjbkbkchdb`f`fchaicx`iajedbdcb`aac`zbuffcyei`ncreqa`dzdzasdq``",
-"````arcnfhdrdzalbp`oexau`w`qdm`qax`acbfjedcsafdh`hdp`hcieubdes`fchchchai`hdhdhdififjcb`aace`axfd`wdgbiabay`jbpfccpezap``",
-"``````dqecctawaydzcrexdtbcccahfde`db`acbahdieiajdhdhdh`heiemf`aiai`hdhdhdhajeddmciee`adbe`azbucvcwbhaybbancjef`ydr`m````",
-"``````arbxadehaydzcj`ofhcreiee`zaze`ac`aercidibdedajajdhdhdmcbdhdhdhajajexbgcsdwciahace`azbucv`wdtcrayawfccqbhctbsas````",
-"``````arezfhddaefcaycr`obbekbndfbuazfdacaccsdpciazfi`uededey`ifiededbdbdfjdfdicxaxeebububuax`wauex`oayaycjalddboezcp````",
-"````````fadqadbofcbteqcrdf`ndf`wcvbuazbididibjf`ahcafjfjfjfidbeifjfjfjcbcbaa`ddbacazdpdaexbxaucsbrcrbhdebg`dadetfa``````",
-"````````ctasfhdqd`fc`vdoekay`vau`wcvbuc`eebc`z`zdb`a`acbcb`beeahcbcb`a`adb`zace`azbu`wdtccdaabbccrcqa`deefddfhfbap``````",
-"````````eofacyadawctbgeq`xeifdbqaucyfgeedabuazaze`acacdbfiddblbleedbacac`zb``zbudfffbvczdg`neqc`docja`ezceadcydnap``````",
-"``````````dqdqecctctczcjeqeafgbrexexc`ccciffbubuazazazdddf`qesercsazazazfdcx`gbbaubccwdt`vcualaleqcjfcezeiecezdq````````",
-"``````````eobs`xctdrctbgeraeeacrbrexabbicz`wcvffffbubudf`zaneecebqbububudxfddx`wcwaudtexbrcrah`jerbgctecfhcpbsar````````",
-"````````````bofaezdeecbhdvfeaw`vcr`ocjaya`cucw`w`wcvcvccerdfei`w`jffcvcv`w`wcwaudtexex`ocrdoeafcbgcqdzdrasareo``````````",
-"``````````````dq`ycpbs`sbhanbs`kef`qcrayd`exdtdtaucwcwer`ndfccbc`w`wcwcwaudtdtexex`ocr`qahekczdqbh`ybocpdnar````````````",
-"``````````````apasezcydeddfhcta`eaeqdoawaebbfgcuexbqababf`ek`kaudtdtdtbqexexexdafgcrdofcdfeialdzddcycp`tapap````````````",
-"````````````````bo`tbobodeezfedfa`cj`jeqayeiaybnbpbrbydzeifhcydjexexexbrbp`ocrdzdoeq`jdd`yfcfafcdqcyezdldl``````````````",
-"``````````````````cn`tezcyatctddbhal`kcj`jbsayal`qddbba``y`o`o`ocrcrcrcr`qdoaybt`jcj`kalfebofbcpctez`teo````````````````",
-"````````````````````ewfbdqdqcpfhddehefalcqdrehefeq`ya``vdododododobmeqeqeqcqfabpcqalef`sdebxbxbocpfbew``````````````````",
-"``````````````````````dndq`s`xdffhaddd`tctecczbpcjdzdzdv`jdveh`j`j`j`jbpalfcbgalcyeh`satdrfcbsdnascn````````````````````",
-"````````````````````````ardlfafbcpfbbtbo`yctbhbhasa``sbg`k`k`k`k`kbgbgalefbhbhceetdfbodfdr`metdrcp``````````````````````",
-"``````````````````````````dndrewfadnboecfhadeidddrdzfcbhbhbhezbhbhbh`dehceddeiboctctdndqdndneoap````````````````````````",
-"``````````````````````````````boewdq`lez`xcyecfhdeadfcbsecctdrdd`sdqadaddefheccybo`y`mareoar````````````````````````````",
-"````````````````````````````````apaparfbfa`ycz`xcyetcpcpcpatdqec`sececcycy`xdnasfadrdleoar``````````````````````````````",
-"````````````````````````````````````eoarbocnfbfafaasdrarfcbobsczczczez`yfafafbdqdreoar``````````````````````````````````",
-"``````````````````````````````````````````apbodretcncndqarar`mbsasfbasdqcndreoap````````````````````````````````````````",
-"````````````````````````````````````````````````apdneoeoeoarbocncnboapdnap``````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue11.xpm b/hacks/images/bubbles/blue11.xpm
deleted file mode 100644 (file)
index c39e4f1..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-/* XPM */
-static char *blue11[] = {
-/* width height ncolors chars_per_pixel */
-"72 72 175 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #1B1B2B",
-"`c c #282845",
-"`d c #191929",
-"`e c #323252",
-"`f c #303050",
-"`g c #111121",
-"`h c #2E2E4E",
-"`i c #0F0F1F",
-"`j c #1D1D30",
-"`k c #1B1B2E",
-"`l c #0C0C12",
-"`m c #0A0A10",
-"`n c #17172A",
-"`o c #212137",
-"`p c #767691",
-"`q c #1F1F35",
-"`r c #2F2F48",
-"`s c #101019",
-"`t c #0E0E17",
-"`u c #272740",
-"`v c #181824",
-"`w c #25253E",
-"`x c #21213A",
-"`y c #12121E",
-"`z c #10101C",
-"a` c #20202F",
-"aa c #0E0E1A",
-"ab c #2B2B47",
-"ac c #0C0C18",
-"ad c #292945",
-"ae c #161625",
-"af c #141423",
-"ag c #242436",
-"ah c #313150",
-"ai c #121221",
-"aj c #2F2F4E",
-"ak c #2D2D4C",
-"al c #2B2B4A",
-"am c #1A1A2C",
-"an c #5C5C7A",
-"ao c #161628",
-"ap c #333355",
-"aq c #07070C",
-"ar c #313153",
-"as c #05050A",
-"at c #0D0D15",
-"au c #07070F",
-"av c #24243C",
-"aw c #202038",
-"ax c #0D0D18",
-"ay c #1D1D2B",
-"az c #0B0B16",
-"b` c #282843",
-"ba c #262641",
-"bb c #232334",
-"bc c #11111F",
-"bd c #0F0F1D",
-"be c #2C2C4A",
-"bf c #3C3C5D",
-"bg c #2A2A48",
-"bh c #1B1B2C",
-"bi c #19192A",
-"bj c #151526",
-"bk c #131324",
-"bl c #303051",
-"bm c #111122",
-"bn c #1F1F33",
-"bo c #19192D",
-"bp c #08080F",
-"bq c #161620",
-"br c #23233A",
-"bs c #212138",
-"bt c #0E0E18",
-"bu c #0A0A14",
-"bv c #272741",
-"bw c #25253F",
-"bx c #23233D",
-"by c #12121F",
-"bz c #10101D",
-"c` c #202030",
-"ca c #0E0E1B",
-"cb c #1E1E2E",
-"cc c #2B2B48",
-"cd c #0C0C19",
-"ce c #292946",
-"cf c #181828",
-"cg c #28283B",
-"ch c #262639",
-"ci c #2F2F4F",
-"cj c #101020",
-"ck c #1C1C2F",
-"cl c #2A2A40",
-"cm c #18182B",
-"cn c #353558",
-"co c #09090F",
-"cp c #333356",
-"cq c #07070D",
-"cr c #15151E",
-"cs c #202036",
-"ct c #1C1C32",
-"cu c #090912",
-"cv c #191925",
-"cw c #26263F",
-"cx c #24243D",
-"cy c #22223B",
-"cz c #13131F",
-"d` c #11111D",
-"da c #0F0F1B",
-"db c #0D0D19",
-"dc c #2A2A46",
-"dd c #262642",
-"de c #171726",
-"df c #151524",
-"dg c #131322",
-"dh c #111120",
-"di c #2E2E4D",
-"dj c #0F0F1E",
-"dk c #1D1D2F",
-"dl c #343456",
-"dm c #08080D",
-"dn c #151527",
-"do c #06060B",
-"dp c #1F1F34",
-"dq c #1B1B30",
-"dr c #0C0C14",
-"ds c #0A0A12",
-"dt c #494967",
-"du c #23233B",
-"dv c white",
-"dw c #14141F",
-"dx c #212139",
-"dy c #1E1E2C",
-"dz c #2B2B46",
-"e` c #0C0C17",
-"ea c #292944",
-"eb c #0A0A15",
-"ec c #262637",
-"ed c #141422",
-"ee c #2D2D4B",
-"ef c #0E0E1C",
-"eg c #1A1A2B",
-"eh c #373758",
-"ei c #181829",
-"ej c #161627",
-"ek c #333354",
-"el c #141425",
-"em c #313152",
-"en c #121223",
-"eo c #222236",
-"ep c #030307",
-"eq c #BCBCD7",
-"er c #1E1E32",
-"es c #1C1C30",
-"et c #1A1A2E",
-"eu c #0B0B12",
-"ev c #18182C",
-"ew c #28283F",
-"ex c #090910",
-"ey c #222239",
-"ez c #202037",
-"f` c #11111B",
-"fa c #1E1E35",
-"fb c #0F0F19",
-"fc c #0D0D17",
-"fd c #0B0B15",
-"fe c #1B1B28",
-"ff c #090913",
-"fg c #262640",
-"fh c #171724",
-"fi c #151522",
-"fj c #212131",
-"fk c #2E2E4B",
-"fl c #2C2C49",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````````````bpcudf`tdeded`aedfdrau````````````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````cqd`e`fdbh`kckck`yesesckckbzbiegaobped````````````````````````````````````````````````````",
-"`````````````````````````````````````````````````ydeeidack`jficv`vdecscsdbazaccmaadgaf`jckdacuf`ed``````````````````````````````````````````````",
-"````````````````````````````````````````````ae`dbhfdcmaoczcs`oeyeyeyfee`bzamazaaesacbiazczbnerckdgdfae``````````````````````````````````````````",
-"````````````````````````````````````````ds`ybh`j`k`vbq`yeyduavavbddbcadbca`wdhaabravfedudpej`ocseraabubiau``````````````````````````````````````",
-"````````````````````````````````````btcfbh`jfbaa`oeycvav`w`wamezaidgdbbjbselfebvbvfgcw`w`wcmbzet`o`vaaffbhde`t``````````````````````````````````",
-"``````````````````````````````````dregckerdbaaeyfiaccxcwbvbvfeb`cabcbz`qduaielamdfcab`bvbvfeeyfhduey`yejerckcfej````````````````````````````````",
-"``````````````````````````````bpdgbh`jdpfedbelctd`aedyb`b`eaaf`qbdbj`aaybnctelcxbvayadeab`b`bvfg`wfeetaadwdp`jbccfcz````````````````````````````",
-"````````````````````````````fccuaxazda`o`odbcabja`b`b`addc`afj`adjbjfl`devbw`ndg`aafab`adcadb`b`bvcxcaey`o`o`qaobheied``````````````````````````",
-"``````````````````````````ed`zfb`vesbhdudxelcmaib`addc`accflbebeeeeeeebbeeeeao`idjbebeflcc`adccbdecsdxbwcxdu`vaie`e``dfi````````````````````````",
-"````````````````````````bpcufibier`qduaiaielaiefdc`accflbeeeeeakdidididididibjao`nakeeeebeflcca`af`kbdbvfi`wductazebaa`dat``````````````````````",
-"``````````````````````auei`kbcfb`jdudbdbcacjcjdeccflbeeeakdia`faevenaoeab`brajcxbeawdidiakfldjaodhefdjfedhfe`w`oesdb`z`keids````````````````````",
-"````````````````````czcfbhaxcsaidufecacxdgad`accfleeakdidiajam`ncjaodncjboevelcydqet`xajdidibhevbk`i`qbddecmfg`wfe`kbq`de``zcz``````````````````",
-"``````````````````atdeamca`jazcacx`vbzb`ad`accbeeeakdiajci`fajcybxccctcmagbhawet`gbkbw`fciajdib`bkdjcjdjefb`bvcw`bdbbsdp`jamcud`````````````````",
-"```````````````````tbibi`jacd`cxdycabcad`accbeeedidiajci`fcievcjbmbmee`e`e`ebgaw`gfaccbl`fci`wawfab`bkboevaib`bv`wboaa`obnesbi`s````````````````",
-"````````````````cqeiff`vcsey`v`waidhbwayccbeeedi`hci`f`fememeablbmbmembrekbbetdqaoctevbiem`faocjdqfaelevezbv`bbnbv`wcseycsbq`kdaed``````````````",
-"```````````````zcuegbuaxbsbzaofgeoa`efavfleedidici`fblemem`e`ech`hbmenchap`jagbednbmctccememccbabaagbjaw`dela`cbbvfgfe`jbsdpbuamat`m````````````",
-"``````````````atbiffercsctavcsbvb`cbetflbeakdiaj`fbbdnem`eekek`n`nfab`cmelcmcpapapapcgek`eemciajeldkageaa`cbabadb`bvaieleycsbqbdd`fi````````````",
-"````````````dsedame`debs`qaidbb`adfjbwbeeediajb`fa`hejc`ekekagevfaceaoecdldldlcpcpapapekek`edd`nbjciajdieecbccdcadbzduesdubs`qaae`de`y``````````",
-"````````````fibtffebcmesdbezfeb`adelet`dbhcteldnbmencebmekapdncyenevctagdldldleldn`jamapcgbbevcidn`fci`hdieeflabadeyedfeaveyfh`kaicufi``````````",
-"``````````drdeamfdejazaidb`nb`eaaybwbabmen`ncy`cecalenceapcpdndndqetfacncncnecdnecbockcgagb`bketfadzciajdieebecccjduayfg`wdubsbqdeeide`t````````",
-"``````````eddefdcabdazducsbdb`ad`wejcjendqb`babbembgawelapcpbe`ecscncncncncnclcncgbmfkclbkcybmbaaobl`fcidiakbebbfacjb`bv`waveycs`je`cfed````````",
-"`````````mcqbiffamazaicmcmeyb`dcccfl`icjdxfacjecagemdqapcpdlevccagcncncncncncncgcnecdldlch`haofjarem`fciajdieecbawcbb`bvcwaveycsckaibifbfd``````",
-"`````````y`sdsazazer`jetdb`kerdcccbedubmdcbv`nfaenbkelapcpamelbwelehcgbfbfbfbfaocgcndldlcp`jaoee`eembl`fa`dieedgelbdeaefdycxbr`obqfdamde`y``````",
-"````````dgcfdabudgacdkcsdbcjej`nb`beakbhevel`nbkaodncgcpdlenevbkb``rclahdtdtbfbf`rcncndldlcpaodnagembl`fcidiakdgbodqdgetefavdubs`qacbycfdg``````",
-"``````btfdeiaafd`zaxd`cm`wet`nctbddjakdicmdi`n`genawapcpdlenelcmeyahahdtdtanandtbfbfcndldlcpdnbmcgembl`fcidiakezbdfgdgfebzfiaveycsbqe`f`fi`m````",
-"```````zcqbiffbjerdbduca`qb`adaidcceakdicicjbxdubmarcmcpdlcmbvewdzandt`panananandtbfehcndlcpewdnbmemem`fcidiakcjaiefdhayer`qaveycserbqcuae`l````",
-"```````ybpbidadw`jeydgdbfeb``wefbb`nakdiciagccejenctcecpdlcsehehehan`peqeqeq`p`pandtbfcndlcpagbxboecbl`fcidiakdgcfdueyayeserbyeycsercrcud``y````",
-"``````by`tcuda`v`oey`naybnb`ad`wea`icbdici`fblemdnaoenekdlclekcl`p`peqdvdveqeqeq`pdtbfehdlcpcgbwbmcydk`fcidiakdjbaef`netelcacaey`obnesazbpby````",
-"````asczdeaebubq`vdwef`qfeb`ad`acccyevejci`fblemaoen`hapdlcmerdtan`pdvdvdvdvdveq`panbfehdlapewevet`xb`fjagdiakegbkefdxaidgbkbjey`obhes`tbtczeu``",
-"````atfbdee``jeb`ofeejfaay`dad`acc`qbkbkeaciblemfjbwbgapdzdleranan`pdvdvdvdvdveq`panbfehdlapcmcycybmbvcyetdiak`bduezdncmdhdbesey`oafbie``tfbat``",
-"`````td`de`t`jcr`oeydkdbcffeayayfjdcdj`xet`g`fememendnapdib`csehdt`peqdvdvdveqeq`pdtbfehdlbkblakawfa`gbadgdieebedgefbdbodh`wdhax`oebdsatf`d``t``",
-"````btbydeamesbncseyavayfgdebvaicj`n`nctaddx`fblem`nbmekec`famcgan`peqeqeqeqeq`pandtbfckenbmbmdncicjcjctawc`eeflccdccw`g`g`ndbdacsaxckcudefbds``",
-"````btbpdeamckercseydufefgcb`n`gefcjdjadetcyci`fagad`gb`apce`kbf`rdtan`p`p`p`pandtbf`j`abkekenejelcj`cabdiakbeflabdceabodhbddueycsbidgegbpcqas``",
-"`````md``scre`bccseydu`wfgaiduefcjdgesdgew`hci`fctbmcj`eekagelbibbbfdtbfdtanandtbfbf`netcm`eemembbeceo`hdieecb`db`adb`bccaaydueyazebckcucudsdm``",
-"````eucqf`f`fffddbbsbrcxcwbvendhdncmbvfjakdiaj`gcicx`nem`eekaocmbn`e`rch`rbfdtbfehcnenboctemembl`fciajdiakeeflbrdcadb`bvcacabrbsfbdfaxcraeexeu``",
-"````asdr`sfbaie`bd`oeyav`wfga`cacjcjaicbb`didicccjbwaiemembmenbbdlbhfkajcgbfehcndlapbbbwdnembl`fciajdidieebeccabdceab`fe`ncvey`ocvbubtbi`se`dr``",
-"````dscqae`dbudsebaaeydu`wfgbvcfeyezefdgbeakdieecjbmamblbbdnevbbfkc`cybxaodldlapek`eemb`enc``fcici`hdiakbeflccdcadb`dhdectbyey`odpdbe``daecqco``",
-"````epd`dfcfdgebdbebeyducxbwbvb`aebobk`gbeeeakagfgelb``fblelbgdnemenfa`xej`e`e`eemem`ffjccdg`waj`hdiakeebecc`udceab`dyay`kaceycserafamcf`tdreu``",
-"````dof`eddefdejaiam`oeyav`wfgbva`dudccjccbeeeakejbk`ici`fddenbwfaevcjdgememememewblbl`f`fbxfa`hdiakeebeccabdcadb`bvfgcvdjfe`o`qerd`at`scqcqas``",
-"``````fbbpdedgdebibz`veyducxbwbvbwcaeyefccflbeeeakbeaoajcibh`qcjelcjbxeiblblblec`f`f`fcicicb`gecakeebeflccdcaddya`bvbwboejesbhdp`je`e`dscqfb````",
-"``````btcuaecufdfcelcsbseyav`wfgdjfgbv`d`accflbeeebjeedi`hajajawbmbmfacjen`f`fciciciciaj`hdidneleebeflcc`aadeaayayfgavdhbjbjeleresbjfdau`tbt````",
-"``````atf`ficufdaabu`ycseyducxdyejfeafeadc`accccfjetfaakdidiecagcbfaevbkctfjciajaj`hdididiakelbkflcbcc`adceab`bvfg`wcvdbdbazd`buckf`dgd``yat````",
-"``````ds`leddeedfdbuazcs`ofedacd`qbnfeb`eadc`accb`djbveeeeakdididiavdq`ib`didididididiakeeeebj`gdjfafjdceab`bvfgcw`wdueyazdhelaobhbiaefd`zds````",
-"````````asczdff``tckdf`vcscvazacducdfebvb`eaaddcceetcyezbjeeeeeeakakc`aoakdiakakakeeeeee`dccctdxaocjdheab`bvbvcw`wavbrbhdbe`ckbiamcfdr`zfb``````",
-"````````dod``yde`ybjbcbt`q`ocve`dhcxaibvbvb`cbayducydxdqbmctbbfjbeeeeecxdjeleeeebebebeflccceaicya`a`cj`qfjfeay`wavduey`oebbudgbhbidefdd`do``````",
-"````````bp`sdraecfdafcejercsaiazesca`wcwfgbva`dudjefefcyctaicbccflflbefjdcbobeflflccccccabfjdyadadb`bo`nbo`wbyaocm`v`ocsbid`ckegcfaeeu`sep``````",
-"``````````fc`zeddedacuffbqdpczcaerduav`wcwfgbhcjdqdgbzay`day`aabccccccdgefdxccccccab`a`adcfjadeab`b`dyeddbdbbzbzdbczcsbqelffam`ddeedf`fc````````",
-"``````````ep`satdfcubdcuaferdpaz`odpduav`wbwdgdbaib`b`eaadaddcdcdcdcaydhefdxdjdcdcdcdcay`gelbhb`bvbvfgcvbs`kbd`jaibddpbubhaxbidedfczdseu````````",
-"````````````fcdoedafejcudg`jercmesbseyducdcmctcabdbvbvb`b`b`eaeaadayfjbocjbdfaafadeaeaa`cmbdbvcfbjai`wedczda`jbze`fier`jaidrcfaeedd`co``````````",
-"````````````as`lbycqdabpbick`jdweb`v`oeyfhdhbidbdbcwfgbvbvbvb`b`bcbkbzeybjefbddyb`b`b`ay`kbjbcbdbifiavdubrey`obtesdw`jcfe`dscufibyfbds``````````",
-"``````````````ateuczdfbpcuamck`jbi`ycs`oey`zacdgcz`w`wcwfgfgbvbvcbaiaiaocadhfeaybvbvbv`obhdy`d`wcxavdueyey`ocsctbce`ckcfbudacufdfdco````````````",
-"``````````````asbtd`bpededbiamcmbubj`vcscsbsdbcaaacvcx`w`w`wcwcwdyeyeldgejcmfefgfgcwcw`w`w`wcxavdubreybscscsdpbze`crambue`bybydoaqas````````````",
-"````````````````eufb`y`sfdf`bifdaxbhacerdpcsfiazcabrduduavcxcx`wbycs`qdgbzbjed`w`w`wcxcxavdudubreybs`ocsdpbtaidbe`ambidfaubyeufdaq``````````````",
-"``````````````````drfbdscqaedebideffaabuerdpfdbzaicafecfbrdudufhfhdpacbscsavavavavavdudubreyey`zbqcscsdpbubzbudwamcrdedsfd`ycqep````````````````",
-"``````````````````dmat`zdobyaedefdcudgfbcr`jeraxeldb`kdbczeyeyazbjbd`vfielca`vbrbreyeybnbs`o`oebcvdperbqffacdgfcdr`saeed`s`zaqep````````````````",
-"````````````````````coatdo`yeddfczbpde`d`kck`jer`v`zaibdescs`bamdbercvfi`veyeybsbs`ocvcscscsebazerer`jckdgfddrf`aue`dr`y`zatep``````````````````",
-"``````````````````````exat`s`ydsbtcufibiegbh`kck`jaxbzaieldpbheiacbjcscscscscscscscs`qdpdpfh`jbt`jck`kbhegcuejfcdse`bp`satbp````````````````````",
-"````````````````````````exdr`ldoaucqfidecfbiegbhcrcfao`y`jer`zebazdpdpdpdpdpdpdpbnerereregf`debqcrbhegbibzdfbybtcqcq`tatex``````````````````````",
-"``````````````````````````coaqatf`byeddfaedeeibidgcubyfdckckfdbuff`j`jf`eicf`j`j`j`j`jaacadrbhf`e`bieibpaieucuexdododmco````````````````````````",
-"````````````````````````````epeubtcq`yczbp`sbpbpdsfdaeegambheiff`sckckckckckckck`k`kf`buamegbi`dcfdedfdse`bpdofccqcodm``````````````````````````",
-"``````````````````````````````aqeuatdocqfbds`tdfaededecfeiaacucregamamamamamamamegegbibieicfdedsbtdsbpbpcqbt`lasasaq````````````````````````````",
-"``````````````````````````````````coepcqbpcq`yczedfidfaedeaecubpdeeieif`cucueieicfcfdededeaeatbpbybpdobpfdasdoep````````````````````````````````",
-"````````````````````````````````````epaqasdofbf``ybyczedfifidfcucubpcubpeufificu`saedf`sfiedczdrcudo`mascq`maq``````````````````````````````````",
-"````````````````````````````````````````epasdr`tfb`zf``ybyczeubpdscqaubtdred`tedededczczbyds`meufb`tasbpep``````````````````````````````````````",
-"````````````````````````````````````````````asepaqdocofbfb`zfbbtdobpcq`zbt`y`y`yd`d`f``zfbfb`tateuepaq``````````````````````````````````````````",
-"````````````````````````````````````````````````dodoepeudrat`tdodseudoas`mfbfbfbfbbt`tatdreudsdoaq``````````````````````````````````````````````",
-"``````````````````````````````````````````````````````aqasepepasepcoasepexdrdreueuds`mepdoaq````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````````````epepepepepdoaqaqasepaq````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue2.xpm b/hacks/images/bubbles/blue2.xpm
deleted file mode 100644 (file)
index 9415216..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char *blue2[] = {
-/* width height ncolors chars_per_pixel */
-"12 12 70 2",
-/* colors */
-"`` c None",
-"`a c #323252",
-"`b c #303050",
-"`c c #0F0F1F",
-"`d c #1B1B2E",
-"`e c #17172A",
-"`f c #1F1F35",
-"`g c #181824",
-"`h c #25253E",
-"`i c #10101C",
-"`j c #20202F",
-"`k c #0E0E1A",
-"`l c #292945",
-"`m c #141423",
-"`n c #242436",
-"`o c #2D2D4C",
-"`p c #333355",
-"`q c #313153",
-"`r c #0D0D15",
-"`s c #24243C",
-"`t c #262641",
-"`u c #232334",
-"`v c #3C3C5D",
-"`w c #19192A",
-"`x c #303051",
-"`y c #111122",
-"`z c #1F1F33",
-"a` c #08080F",
-"aa c #212138",
-"ab c #12121F",
-"ac c #0E0E1B",
-"ad c #1E1E2E",
-"ae c #2B2B48",
-"af c #2F2F4F",
-"ag c #1C1C2F",
-"ah c #18182B",
-"ai c #353558",
-"aj c #15151E",
-"ak c #1C1C32",
-"al c #26263F",
-"am c #13131F",
-"an c #0F0F1B",
-"ao c #2A2A46",
-"ap c #131322",
-"aq c #2E2E4D",
-"ar c #0F0F1E",
-"as c #343456",
-"at c #151527",
-"au c #1F1F34",
-"av c #0C0C14",
-"aw c #494967",
-"ax c #23233B",
-"ay c white",
-"az c #0C0C17",
-"b` c #141422",
-"ba c #2D2D4B",
-"bb c #0E0E1C",
-"bc c #161627",
-"bd c #333354",
-"be c #141425",
-"bf c #1E1E32",
-"bg c #1C1C30",
-"bh c #0B0B12",
-"bi c #18182C",
-"bj c #090910",
-"bk c #222239",
-"bl c #0F0F19",
-"bm c #1B1B28",
-"bn c #262640",
-"bo c #151522",
-/* pixels */
-"`````````d`sacbmbf``````",
-"````a`axaobaaqba`max`r``",
-"````aabbaf`a`pak`t`jaa``",
-"```wah`c`nbiaias`qbaal`w",
-"``an`zadatbday`v`y`obebg",
-"``azbnbgakbeaw`e`uadacag",
-"``apaxbk`o`f`x`b`o`lbcaz",
-"``avbf`haradaoae`lab`wbh",
-"````b``g`kalbcalaxauaz``",
-"````bjboaj`iaubfajabbj``",
-"````````blbhavambl``````",
-"````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue3.xpm b/hacks/images/bubbles/blue3.xpm
deleted file mode 100644 (file)
index b38a8d4..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/* XPM */
-static char *blue3[] = {
-/* width height ncolors chars_per_pixel */
-"14 14 82 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #282845",
-"`c c #111121",
-"`d c #2E2E4E",
-"`e c #1B1B2E",
-"`f c #0A0A10",
-"`g c #17172A",
-"`h c #101019",
-"`i c #181824",
-"`j c #21213A",
-"`k c #10101C",
-"`l c #20202F",
-"`m c #0C0C18",
-"`n c #161628",
-"`o c #07070F",
-"`p c #24243C",
-"`q c #0B0B16",
-"`r c #282843",
-"`s c #11111F",
-"`t c #0F0F1D",
-"`u c #1B1B2C",
-"`v c #19192A",
-"`w c #151526",
-"`x c #303051",
-"`y c #111122",
-"`z c #19192D",
-"a` c #23233A",
-"aa c #212138",
-"ab c #0E0E18",
-"ac c #0A0A14",
-"ad c #272741",
-"ae c #23233D",
-"af c #202030",
-"ag c #1E1E2E",
-"ah c #2B2B48",
-"ai c #181828",
-"aj c #28283B",
-"ak c #2F2F4F",
-"al c #2D2D4D",
-"am c #1C1C2F",
-"an c #18182B",
-"ao c #353558",
-"ap c #15151E",
-"aq c #191925",
-"ar c #24243D",
-"as c #13131F",
-"at c #11111D",
-"au c #0D0D19",
-"av c #262642",
-"aw c #151524",
-"ax c #2E2E4D",
-"ay c #343456",
-"az c #06060B",
-"b` c #0C0C14",
-"ba c #494967",
-"bb c #23233B",
-"bc c white",
-"bd c #0C0C17",
-"be c #292944",
-"bf c #0A0A15",
-"bg c #2D2D4B",
-"bh c #0E0E1C",
-"bi c #1A1A2B",
-"bj c #373758",
-"bk c #181829",
-"bl c #161627",
-"bm c #141425",
-"bn c #313152",
-"bo c #121223",
-"bp c #1E1E32",
-"bq c #1C1C30",
-"br c #18182C",
-"bs c #222239",
-"bt c #11111B",
-"bu c #1E1E35",
-"bv c #0F0F19",
-"bw c #0D0D17",
-"bx c #0B0B15",
-"by c #1B1B28",
-"bz c #262640",
-"c` c #2C2C49",
-/* pixels */
-"``````````awbsau`mbp````````",
-"``````bdbhbe`wbu`lbe`p`w````",
-"`````var`aaxbmbn`caxbr`tb```",
-"````aqbeblbr`baybnboax`lat``",
-"``ai`pbq`g`ubmbaao`yak`g`pai",
-"```s`tahakalbabcbaajafbr`tbw",
-"``ap`p`cagav`vbabjbnax`l`i`n",
-"``aiaaadc``d`jbn`x`cc`adai`h",
-"``as`e`n`r`zagbzbgae`r`pacbx",
-"````as`qanad`r`n`rag`pbf`h``",
-"````bvbkbpbqaubba`byabbtbv``",
-"``````azaw`sauabambi`o`f````",
-"``````````abbw`katab````````",
-"````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue4.xpm b/hacks/images/bubbles/blue4.xpm
deleted file mode 100644 (file)
index bb0843d..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/* XPM */
-static char *blue4[] = {
-/* width height ncolors chars_per_pixel */
-"20 20 130 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #282845",
-"`c c #323252",
-"`d c #303050",
-"`e c #111121",
-"`f c #2E2E4E",
-"`g c #0F0F1F",
-"`h c #1D1D30",
-"`i c #1B1B2E",
-"`j c #0C0C12",
-"`k c #0A0A10",
-"`l c #17172A",
-"`m c #212137",
-"`n c #767691",
-"`o c #1F1F35",
-"`p c #2F2F48",
-"`q c #101019",
-"`r c #0E0E17",
-"`s c #181824",
-"`t c #25253E",
-"`u c #12121E",
-"`v c #10101C",
-"`w c #20202F",
-"`x c #0E0E1A",
-"`y c #0C0C18",
-"`z c #292945",
-"a` c #161625",
-"aa c #141423",
-"ab c #121221",
-"ac c #2F2F4E",
-"ad c #2D2D4C",
-"ae c #1A1A2C",
-"af c #5C5C7A",
-"ag c #161628",
-"ah c #333355",
-"ai c #07070C",
-"aj c #313153",
-"ak c #05050A",
-"al c #0D0D15",
-"am c #24243C",
-"an c #202038",
-"ao c #1D1D2B",
-"ap c #0B0B16",
-"aq c #282843",
-"ar c #11111F",
-"as c #2C2C4A",
-"at c #3C3C5D",
-"au c #1B1B2C",
-"av c #19192A",
-"aw c #131324",
-"ax c #303051",
-"ay c #111122",
-"az c #1F1F33",
-"b` c #19192D",
-"ba c #08080F",
-"bb c #161620",
-"bc c #23233A",
-"bd c #0E0E18",
-"be c #0A0A14",
-"bf c #272741",
-"bg c #25253F",
-"bh c #10101D",
-"bi c #1E1E2E",
-"bj c #2B2B48",
-"bk c #0C0C19",
-"bl c #292946",
-"bm c #2F2F4F",
-"bn c #101020",
-"bo c #1C1C2F",
-"bp c #2A2A40",
-"bq c #18182B",
-"br c #353558",
-"bs c #09090F",
-"bt c #07070D",
-"bu c #15151E",
-"bv c #1C1C32",
-"bw c #090912",
-"bx c #191925",
-"by c #24243D",
-"bz c #22223B",
-"c` c #13131F",
-"ca c #11111D",
-"cb c #0D0D19",
-"cc c #2A2A46",
-"cd c #171726",
-"ce c #151524",
-"cf c #131322",
-"cg c #0F0F1E",
-"ch c #343456",
-"ci c #08080D",
-"cj c #151527",
-"ck c #1F1F34",
-"cl c #1B1B30",
-"cm c #0C0C14",
-"cn c #0A0A12",
-"co c #494967",
-"cp c #23233B",
-"cq c white",
-"cr c #14141F",
-"cs c #1E1E2C",
-"ct c #0C0C17",
-"cu c #292944",
-"cv c #141422",
-"cw c #2D2D4B",
-"cx c #0E0E1C",
-"cy c #373758",
-"cz c #181829",
-"d` c #161627",
-"da c #141425",
-"db c #313152",
-"dc c #121223",
-"dd c #030307",
-"de c #BCBCD7",
-"df c #1C1C30",
-"dg c #1A1A2E",
-"dh c #0B0B12",
-"di c #18182C",
-"dj c #090910",
-"dk c #222239",
-"dl c #202037",
-"dm c #11111B",
-"dn c #1E1E35",
-"do c #0D0D17",
-"dp c #0B0B15",
-"dq c #1B1B28",
-"dr c #262640",
-"ds c #171724",
-"dt c #151522",
-"du c #2C2C49",
-/* pixels */
-"```````````````vdpbbazd``idt````````````",
-"``````````cmbbbxbg`ecpbfbgckbedm````````",
-"`````````vdscb`zbjamcwbjbj`zcsbbav``````",
-"``````czcbbq`acwbmbvaccjbmdudrcsbxca````",
-"````c``vbvcxad`dajaqahdlbjbvcf`w`tbxc```",
-"````aecbaqagbncjahdachawahblbmascpdkbe``",
-"``baap`haodidn`bbpbpataechaw`dcwcsbyapba",
-"``c`bubvaoadbmad`icodeafbr`laxadbqb`ckcv",
-"``a`apbvcccl`danb``ncq`ncybmclcwcxagbd`q",
-"```rdpby`ldfacagah`pcocodcdbacbicubxaadj",
-"``cvbhbcbfdcadbn`oacd``cabbmadbiao`xabal",
-"``bsct`m`t`objbv`fbndgbm`fcgbjcu`t`ybbdm",
-"``akcdaparcfdqbvaqcw`gcwdubzbfaodkapcdbt",
-"````c`bw`ubcdsbfcuccaycc`wbfbg`lckdmc```",
-"````bacecr`sbobx`tbkd`dr`tamdkckaucndd``",
-"```````rcecf`hd`bbctc`dkbbct`hdpcmci````",
-"````````cmcfcdcvbocrcz`haeae`qdpal``````",
-"``````````ba`jc`cebdcncmcec``kak````````",
-"``````````````aidhcm`kdobsai````````````",
-"````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue5.xpm b/hacks/images/bubbles/blue5.xpm
deleted file mode 100644 (file)
index e337885..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/* XPM */
-static char *blue5[] = {
-/* width height ncolors chars_per_pixel */
-"24 24 139 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #323252",
-"`c c #303050",
-"`d c #111121",
-"`e c #2E2E4E",
-"`f c #0F0F1F",
-"`g c #1D1D30",
-"`h c #1B1B2E",
-"`i c #0C0C12",
-"`j c #0A0A10",
-"`k c #17172A",
-"`l c #212137",
-"`m c #767691",
-"`n c #1F1F35",
-"`o c #101019",
-"`p c #181824",
-"`q c #25253E",
-"`r c #12121E",
-"`s c #10101C",
-"`t c #20202F",
-"`u c #0E0E1A",
-"`v c #292945",
-"`w c #161625",
-"`x c #141423",
-"`y c #242436",
-"`z c #313150",
-"a` c #121221",
-"aa c #2F2F4E",
-"ab c #2D2D4C",
-"ac c #1A1A2C",
-"ad c #161628",
-"ae c #333355",
-"af c #07070C",
-"ag c #313153",
-"ah c #05050A",
-"ai c #0D0D15",
-"aj c #24243C",
-"ak c #202038",
-"al c #0D0D18",
-"am c #1D1D2B",
-"an c #0B0B16",
-"ao c #282843",
-"ap c #262641",
-"aq c #232334",
-"ar c #0F0F1D",
-"as c #2C2C4A",
-"at c #3C3C5D",
-"au c #19192A",
-"av c #151526",
-"aw c #131324",
-"ax c #303051",
-"ay c #111122",
-"az c #1F1F33",
-"b` c #08080F",
-"ba c #161620",
-"bb c #23233A",
-"bc c #212138",
-"bd c #0E0E18",
-"be c #0A0A14",
-"bf c #272741",
-"bg c #25253F",
-"bh c #12121F",
-"bi c #10101D",
-"bj c #202030",
-"bk c #0E0E1B",
-"bl c #1E1E2E",
-"bm c #2B2B48",
-"bn c #0C0C19",
-"bo c #181828",
-"bp c #28283B",
-"bq c #2F2F4F",
-"br c #101020",
-"bs c #1C1C2F",
-"bt c #18182B",
-"bu c #353558",
-"bv c #09090F",
-"bw c #333356",
-"bx c #07070D",
-"by c #15151E",
-"bz c #202036",
-"c` c #1C1C32",
-"ca c #090912",
-"cb c #191925",
-"cc c #26263F",
-"cd c #24243D",
-"ce c #22223B",
-"cf c #13131F",
-"cg c #11111D",
-"ch c #0F0F1B",
-"ci c #0D0D19",
-"cj c #2A2A46",
-"ck c #171726",
-"cl c #131322",
-"cm c #111120",
-"cn c #2E2E4D",
-"co c #0F0F1E",
-"cp c #343456",
-"cq c #08080D",
-"cr c #151527",
-"cs c #06060B",
-"ct c #1F1F34",
-"cu c #0C0C14",
-"cv c #0A0A12",
-"cw c #494967",
-"cx c #23233B",
-"cy c white",
-"cz c #0C0C17",
-"d` c #292944",
-"da c #0A0A15",
-"db c #262637",
-"dc c #141422",
-"dd c #2D2D4B",
-"de c #0E0E1C",
-"df c #1A1A2B",
-"dg c #161627",
-"dh c #333354",
-"di c #141425",
-"dj c #313152",
-"dk c #121223",
-"dl c #030307",
-"dm c #BCBCD7",
-"dn c #1E1E32",
-"do c #1C1C30",
-"dp c #1A1A2E",
-"dq c #0B0B12",
-"dr c #18182C",
-"ds c #090910",
-"dt c #222239",
-"du c #11111B",
-"dv c #1E1E35",
-"dw c #0F0F19",
-"dx c #0D0D17",
-"dy c #0B0B15",
-"dz c #1B1B28",
-"e` c #262640",
-"ea c #151522",
-"eb c #212131",
-"ec c #2C2C49",
-/* pixels */
-"``````````````````bxdybsdobsdfdc````````````````",
-"```````````````r`h`rajcibk`udzdgdnau````````````",
-"``````````b``gcicgao`xavazcd`vao`q`u`gcf````````",
-"````````b`aucxdicjecddcncnadddec`xbfcxdaai``````",
-"``````aibkbkbi`addaaaabm`ydpbgaaawcobfci`gcg````",
-"``````dfbce`deddbqdj`bayaeasc`djapak`te`bcac````",
-"````eadaciaodpc`ayaycrdrcpdiacaqcr`eecdtaj`hea``",
-"````auanbtcj`fdv`yaedrbububpcp`eagbqddblccbzau``",
-"``bd`ual`qc`abcndkbwdi`zcwcwbubwbp`cabe`bidtcz`j",
-"``bhchdtaz`qbl`ccrdhdh`mcydmatbway`cabdedidtdobh",
-"``cg`gdtboamco`ddjaebz`mcydmatawakapdddecmalcvcg",
-"``cgczdte`dedo`ec``bdiatcwcw`k`baq`ebl`vbkdtbscv",
-"``bxbe`u`qbodeabbraxdrbjadaedjbjbqabbmaoc``lczbx",
-"``dwclbicxbfdtecabaa`nbraxdb`cblabec`vbfdgctczdw",
-"``cvckbe`lbndzcjaoddcnajaocncnddcocjbf`qanad`wcv",
-"````cuchdnan`qbfcocebleccjecbmeb`v`kbh`paudfdq``",
-"````dx`xclbtdtbtaraod`ambr`xd`aravdc`geaa``wbv``",
-"``````cgdcbt`pbc`u`qccdtdge`cc`qcxbcctbyczcs````",
-"``````cqcsckcl`gdicidtardibbdt`lcbbacl`o`odl````",
-"````````dscseaauby`r`sctctctdndubyaubhbxds``````",
-"``````````afcscv`wbocaacacacaubobdb``iaf````````",
-"``````````````ahdw`rdqbxcudccfcvdwb`````````````",
-"``````````````````afdlbvdsdq`jaf````````````````",
-"````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue6.xpm b/hacks/images/bubbles/blue6.xpm
deleted file mode 100644 (file)
index f70bb6c..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/* XPM */
-static char *blue6[] = {
-/* width height ncolors chars_per_pixel */
-"30 30 158 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #191929",
-"`c c #323252",
-"`d c #303050",
-"`e c #111121",
-"`f c #2E2E4E",
-"`g c #1D1D30",
-"`h c #1B1B2E",
-"`i c #0C0C12",
-"`j c #0A0A10",
-"`k c #17172A",
-"`l c #212137",
-"`m c #767691",
-"`n c #1F1F35",
-"`o c #2F2F48",
-"`p c #101019",
-"`q c #181824",
-"`r c #25253E",
-"`s c #12121E",
-"`t c #10101C",
-"`u c #20202F",
-"`v c #0E0E1A",
-"`w c #2B2B47",
-"`x c #0C0C18",
-"`y c #292945",
-"`z c #161625",
-"a` c #141423",
-"aa c #242436",
-"ab c #121221",
-"ac c #2F2F4E",
-"ad c #2D2D4C",
-"ae c #1A1A2C",
-"af c #5C5C7A",
-"ag c #161628",
-"ah c #333355",
-"ai c #07070C",
-"aj c #313153",
-"ak c #05050A",
-"al c #0D0D15",
-"am c #07070F",
-"an c #24243C",
-"ao c #202038",
-"ap c #0D0D18",
-"aq c #1D1D2B",
-"ar c #0B0B16",
-"as c #282843",
-"at c #232334",
-"au c #11111F",
-"av c #0F0F1D",
-"aw c #2C2C4A",
-"ax c #3C3C5D",
-"ay c #1B1B2C",
-"az c #19192A",
-"b` c #151526",
-"ba c #131324",
-"bb c #303051",
-"bc c #111122",
-"bd c #1F1F33",
-"be c #19192D",
-"bf c #08080F",
-"bg c #161620",
-"bh c #23233A",
-"bi c #212138",
-"bj c #0E0E18",
-"bk c #0A0A14",
-"bl c #272741",
-"bm c #25253F",
-"bn c #12121F",
-"bo c #10101D",
-"bp c #202030",
-"bq c #0E0E1B",
-"br c #1E1E2E",
-"bs c #2B2B48",
-"bt c #0C0C19",
-"bu c #181828",
-"bv c #28283B",
-"bw c #262639",
-"bx c #2F2F4F",
-"by c #101020",
-"bz c #18182B",
-"c` c #353558",
-"ca c #09090F",
-"cb c #333356",
-"cc c #07070D",
-"cd c #15151E",
-"ce c #202036",
-"cf c #1C1C32",
-"cg c #090912",
-"ch c #191925",
-"ci c #26263F",
-"cj c #24243D",
-"ck c #22223B",
-"cl c #13131F",
-"cm c #11111D",
-"cn c #0F0F1B",
-"co c #0D0D19",
-"cp c #2A2A46",
-"cq c #262642",
-"cr c #171726",
-"cs c #151524",
-"ct c #131322",
-"cu c #111120",
-"cv c #2E2E4D",
-"cw c #0F0F1E",
-"cx c #343456",
-"cy c #08080D",
-"cz c #151527",
-"d` c #06060B",
-"da c #1F1F34",
-"db c #1B1B30",
-"dc c #0C0C14",
-"dd c #0A0A12",
-"de c #494967",
-"df c #23233B",
-"dg c white",
-"dh c #14141F",
-"di c #212139",
-"dj c #1E1E2C",
-"dk c #0C0C17",
-"dl c #292944",
-"dm c #0A0A15",
-"dn c #262637",
-"do c #141422",
-"dp c #2D2D4B",
-"dq c #0E0E1C",
-"dr c #1A1A2B",
-"ds c #373758",
-"dt c #181829",
-"du c #161627",
-"dv c #333354",
-"dw c #141425",
-"dx c #313152",
-"dy c #121223",
-"dz c #222236",
-"e` c #030307",
-"ea c #BCBCD7",
-"eb c #1E1E32",
-"ec c #1C1C30",
-"ed c #1A1A2E",
-"ee c #0B0B12",
-"ef c #18182C",
-"eg c #28283F",
-"eh c #090910",
-"ei c #222239",
-"ej c #202037",
-"ek c #11111B",
-"el c #1E1E35",
-"em c #0F0F19",
-"en c #0D0D17",
-"eo c #0B0B15",
-"ep c #1B1B28",
-"eq c #090913",
-"er c #262640",
-"es c #171724",
-"et c #151522",
-"eu c #212131",
-"ev c #2C2C49",
-/* pixels */
-"````````````````````````d`dhazazdoap`s``````````````````````",
-"``````````````````ccdraubgbiei`hcu`xar`gbkcm````````````````",
-"````````````````drbgeianbmdfbydfaqblbmageibkb```````````````",
-"````````````eoeqceboeiascpcwbsctaoeucpaser`nce`sdo``````````",
-"``````````bfarb`eicwcpbsdpadcvcvdfaddpbsa`dj`raeddal````````",
-"````````bn`tcochas`aawcvbx`kbxacczbybxcvcwerab`rchbjbn``````",
-"````````ek`besav`aawcv`ddxdbejdvcqdbdxeuaweudfbl`hcedr``````",
-"``````am`gdtau`yevcv`dbpdvbcbbdwcbahdvbzeudzb``ydweict`z````",
-"````alaearabascubmbyeladahasaocxbwbeahagbabxdp`wdfcjcebk`j``",
-"````etbkbobzdlevcfbcaaagcxasc`c`bvbvcx`kaj`dcvaqdlcieictet``",
-"````craretcudqeueuczczahaeel`cdededscxbz`cbb`fdi`kbobh`qcr``",
-"``eeazcdazepaqcw`fbx`ecz`hax`mea`mdec`ahefbb`fbcbz`hdfdaddee",
-"```pdudkctdjcpefeu`dazb`agdseadgeaafdsahaobccv`ueccwdochek`p",
-"``ekcddadfci`hcjadatdxelcf`o`meaeadebdedbb`keueveubqab`qazen",
-"``ekazeobher`kdwdtaccfdwahdrdedeafaxdyajatacdpcrdlbqbha`dkd`",
-"```p`parei`rasdqatcvbybbckegacebc`dvcfbbbxcvaw`abrcjei`gdtee",
-"``akcrdwbganblecb`dpctdnabdw`f`wdxdx`d`ncvdpbs`yblco`lek`pen",
-"``aketdkbgei`rczaqbsdpaa`f`fefedbxbx`fcveubs`yaq`rb`arbgccai",
-"````bndtdk`lcedqas`yeccwdpadcvbscvadeicfby`yascidfareoazbj``",
-"````em`zeoebctctciascwbaabevevcpevevbs`b`ydbeianbiazay`zem``",
-"````e`clapay`sepanescoasdl`yeubcdq`y`u`uctbmcuebda`vbuclai``",
-"``````bjcgcgecdmbi`xcmcierbl`udqbhbldjdjcjdfbiabeccgetbj````",
-"`````````tbjazbjdrcecndfancj`kbt`rcjandfeiceabcmazbfd```````",
-"````````bfbfcseq`v`gararbgboducleieibgceda`g`temdcekcy``````",
-"``````````ehdccccrdrcddteb`vdadadaebebemcddrcsbncceh````````",
-"````````````akemccbk`tazal`p`h`h`haydrazeebfddeecc``````````",
-"````````````````eh`i`sdocseododd`p`zcsdobf`je```````````````",
-"``````````````````e`bfenemddeobjcmekemenddak````````````````",
-"````````````````````````aie`e`bfcaaiai``````````````````````",
-"````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue7.xpm b/hacks/images/bubbles/blue7.xpm
deleted file mode 100644 (file)
index 6f4ee48..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/* XPM */
-static char *blue7[] = {
-/* width height ncolors chars_per_pixel */
-"36 36 169 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #1B1B2B",
-"`c c #191929",
-"`d c #323252",
-"`e c #303050",
-"`f c #111121",
-"`g c #2E2E4E",
-"`h c #0F0F1F",
-"`i c #1D1D30",
-"`j c #1B1B2E",
-"`k c #0C0C12",
-"`l c #0A0A10",
-"`m c #17172A",
-"`n c #212137",
-"`o c #767691",
-"`p c #1F1F35",
-"`q c #2F2F48",
-"`r c #101019",
-"`s c #0E0E17",
-"`t c #272740",
-"`u c #181824",
-"`v c #25253E",
-"`w c #21213A",
-"`x c #12121E",
-"`y c #10101C",
-"`z c #20202F",
-"a` c #0E0E1A",
-"aa c #2B2B47",
-"ab c #0C0C18",
-"ac c #292945",
-"ad c #161625",
-"ae c #141423",
-"af c #242436",
-"ag c #121221",
-"ah c #2F2F4E",
-"ai c #2D2D4C",
-"aj c #1A1A2C",
-"ak c #5C5C7A",
-"al c #161628",
-"am c #333355",
-"an c #07070C",
-"ao c #313153",
-"ap c #05050A",
-"aq c #0D0D15",
-"ar c #07070F",
-"as c #24243C",
-"at c #202038",
-"au c #0D0D18",
-"av c #1D1D2B",
-"aw c #0B0B16",
-"ax c #282843",
-"ay c #262641",
-"az c #232334",
-"b` c #11111F",
-"ba c #0F0F1D",
-"bb c #2C2C4A",
-"bc c #3C3C5D",
-"bd c #2A2A48",
-"be c #1B1B2C",
-"bf c #19192A",
-"bg c #151526",
-"bh c #131324",
-"bi c #303051",
-"bj c #111122",
-"bk c #1F1F33",
-"bl c #19192D",
-"bm c #08080F",
-"bn c #161620",
-"bo c #23233A",
-"bp c #212138",
-"bq c #0E0E18",
-"br c #0A0A14",
-"bs c #272741",
-"bt c #25253F",
-"bu c #23233D",
-"bv c #12121F",
-"bw c #10101D",
-"bx c #202030",
-"by c #0E0E1B",
-"bz c #1E1E2E",
-"c` c #2B2B48",
-"ca c #292946",
-"cb c #181828",
-"cc c #28283B",
-"cd c #262639",
-"ce c #2F2F4F",
-"cf c #101020",
-"cg c #1C1C2F",
-"ch c #2A2A40",
-"ci c #18182B",
-"cj c #353558",
-"ck c #09090F",
-"cl c #333356",
-"cm c #07070D",
-"cn c #15151E",
-"co c #202036",
-"cp c #1C1C32",
-"cq c #090912",
-"cr c #191925",
-"cs c #26263F",
-"ct c #24243D",
-"cu c #22223B",
-"cv c #13131F",
-"cw c #11111D",
-"cx c #0F0F1B",
-"cy c #0D0D19",
-"cz c #2A2A46",
-"d` c #262642",
-"da c #171726",
-"db c #151524",
-"dc c #131322",
-"dd c #111120",
-"de c #2E2E4D",
-"df c #0F0F1E",
-"dg c #1D1D2F",
-"dh c #343456",
-"di c #08080D",
-"dj c #151527",
-"dk c #06060B",
-"dl c #1F1F34",
-"dm c #1B1B30",
-"dn c #0C0C14",
-"do c #0A0A12",
-"dp c #494967",
-"dq c #23233B",
-"dr c white",
-"ds c #212139",
-"dt c #1E1E2C",
-"du c #2B2B46",
-"dv c #0C0C17",
-"dw c #292944",
-"dx c #0A0A15",
-"dy c #262637",
-"dz c #141422",
-"e` c #2D2D4B",
-"ea c #0E0E1C",
-"eb c #1A1A2B",
-"ec c #373758",
-"ed c #181829",
-"ee c #161627",
-"ef c #333354",
-"eg c #141425",
-"eh c #313152",
-"ei c #121223",
-"ej c #222236",
-"ek c #030307",
-"el c #BCBCD7",
-"em c #1E1E32",
-"en c #1C1C30",
-"eo c #1A1A2E",
-"ep c #0B0B12",
-"eq c #18182C",
-"er c #28283F",
-"es c #090910",
-"et c #222239",
-"eu c #11111B",
-"ev c #1E1E35",
-"ew c #0F0F19",
-"ex c #0D0D17",
-"ey c #0B0B15",
-"ez c #1B1B28",
-"f` c #090913",
-"fa c #262640",
-"fb c #171724",
-"fc c #151522",
-"fd c #212131",
-"fe c #2E2E4B",
-"ff c #2C2C49",
-/* pixels */
-"````````````````````````````````cq`sdaaddn``````````````````````````````",
-"`````````````````````````xedcgfc`ucocyaba`aecgcqdz``````````````````````",
-"````````````````````dobe`jbnetasbabybyddboezdl`nembrar``````````````````",
-"``````````````````ebema`fcctbsezbybwdqegdbaxbsetdq`xemcb````````````````",
-"``````````````exaucx`nby`zaxczfddfffeq`m`aaaczaxbsby`n`pbedz````````````",
-"````````````bmfcemdqagagczc`bbe`dededebg`me`bbc`aebafcdqawa`aq``````````",
-"``````````cvbecodqbydc`affaideajcfdjblegdm`wdebebh`pdafaezbndvcv````````",
-"``````````bf`icwdtb``abbdeah`eeqbje``dbd`fc``e`vevbheqax`va`bkbf````````",
-"````````cqbrbpalejeaffdecebieh`d`geiamafdjcpehc`aybg`c`zbsezbpbraq``````",
-"``````doajda`pcyacbte`aheveeefafevaldhdhclamefd`bgahe`c`acdqdq`pdv`x````",
-"``````daeyawcyaxavayeicudyeiamdjdmevcjdydycgafbhevcedebbcfav`vbpdada````",
-"`````lbfajagciaxc``hdscfafdmcleqafcjcjcjcjdhcdalao`eahe`ataxcsetcgbfey``",
-"````dccxdcdgcyeeaxaieq`malccdheqaxchdpbc`qcjdhalafbiceaibldceadq`pbvdc``",
-"````cmf`emdq`pacczaicebubjcidhbsdudpakakdpecdherbjehceaiagddemascobnad``",
-"`````scx`n`mbkacdwbzcebidjeidhef`oeldrel`obcdhccbjdgceaiay`megby`nenbm``",
-"``aqda`i`neeavacc`bhdwbifdbdduemakdrdrdr`obcdhcicubseoaidqdjdden`nbf`saq",
-"``bqdaencoasfabscf`mac`eehbjdyajakelelelakbceibjcecfate`c`cs`fcycocgdado",
-"```l`rdvcodqfadqcfenercecpcfefegazdpdpakbc`mciehazejdebzaxaxbydqawcgcqdi",
-"``ap`ragbaet`v`zcfagaxdecfageheidhfeccecdhazdjbicedee`c`czax`metcrbq`rdn",
-"``ekdbdccyetctbsadbhbbaifaaxbibdehevee`deh`ec``v`gaibb`tdwdt`jetemaj`sep",
-"````bmdcbf`udqbtbtetc`bbaialce`pegbubibi`e`ece`faibbc`ac`zbteebe`idvcm``",
-"````eucqa``xetcteeaeczc`fdevdedybzeqcpceahdedeegffc`czaxfacrcycwcgdc`x``",
-"````apdb`sdbcoawdqezaxaccacubge`aibxaiaiaie``ccpalddaxbs`vbocycgajdnew``",
-"````bmdncbexemagen`vfa`zdfeacpbzffbbczbbffc`aadtacblblbvci`nbfcgcbepek``",
-"```````rdbbaaedl`ndq`vdcagaxacczczaveadfczcz`fbebsfabpbaagdlbebfdbdo````",
-"``````apbvcxbf`idx`nfbbfcyfabsaxb`bwbgbaaxax`jb`bfasbo`nen`idvcqbvdo````",
-"````````bqbmdzajbr`ucocya`ct`vcsdtegeeezfacs`vctdqetcodldvajdvbvan``````",
-"``````````ewcmdadaa`emeyagezbodqfbabcoasasdqboetbncobrbrajdaeycm````````",
-"``````````ckdkdzcvda`j`i`uagen`bcycr`uetbpcrcodxem`idcdnardn`yek````````",
-"````````````es`karfccbebcnal`i`yawdldldlbkemebdacnebbwbvcm`ses``````````",
-"``````````````ekbq`xbmbmdoadajed`rcgcgcg`jeuajbfcbdbdvdkcmdi````````````",
-"``````````````````ekbm`xdzdbdacqdaedcqedcbdadaaqbvdkeydk````````````````",
-"````````````````````ekdneweubvepdoardn`sdzcvbv`lewapek``````````````````",
-"````````````````````````dkekdn`sdodk`lewew`sdndoan``````````````````````",
-"````````````````````````````````ekekdkanek``````````````````````````````",
-"````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue8.xpm b/hacks/images/bubbles/blue8.xpm
deleted file mode 100644 (file)
index d4babc4..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/* XPM */
-static char *blue8[] = {
-/* width height ncolors chars_per_pixel */
-"44 44 168 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #1B1B2B",
-"`c c #282845",
-"`d c #191929",
-"`e c #323252",
-"`f c #303050",
-"`g c #111121",
-"`h c #2E2E4E",
-"`i c #1D1D30",
-"`j c #1B1B2E",
-"`k c #0A0A10",
-"`l c #17172A",
-"`m c #212137",
-"`n c #767691",
-"`o c #1F1F35",
-"`p c #2F2F48",
-"`q c #101019",
-"`r c #0E0E17",
-"`s c #272740",
-"`t c #181824",
-"`u c #25253E",
-"`v c #21213A",
-"`w c #12121E",
-"`x c #10101C",
-"`y c #20202F",
-"`z c #2B2B47",
-"a` c #0C0C18",
-"aa c #292945",
-"ab c #161625",
-"ac c #141423",
-"ad c #242436",
-"ae c #121221",
-"af c #2F2F4E",
-"ag c #2D2D4C",
-"ah c #2B2B4A",
-"ai c #1A1A2C",
-"aj c #5C5C7A",
-"ak c #161628",
-"al c #333355",
-"am c #07070C",
-"an c #05050A",
-"ao c #0D0D15",
-"ap c #07070F",
-"aq c #24243C",
-"ar c #202038",
-"as c #0D0D18",
-"at c #1D1D2B",
-"au c #0B0B16",
-"av c #282843",
-"aw c #262641",
-"ax c #232334",
-"ay c #11111F",
-"az c #0F0F1D",
-"b` c #2C2C4A",
-"ba c #3C3C5D",
-"bb c #2A2A48",
-"bc c #1B1B2C",
-"bd c #19192A",
-"be c #151526",
-"bf c #131324",
-"bg c #303051",
-"bh c #111122",
-"bi c #19192D",
-"bj c #08080F",
-"bk c #161620",
-"bl c #23233A",
-"bm c #212138",
-"bn c #0E0E18",
-"bo c #0A0A14",
-"bp c #272741",
-"bq c #25253F",
-"br c #23233D",
-"bs c #12121F",
-"bt c #10101D",
-"bu c #202030",
-"bv c #0E0E1B",
-"bw c #1E1E2E",
-"bx c #2B2B48",
-"by c #0C0C19",
-"bz c #292946",
-"c` c #181828",
-"ca c #28283B",
-"cb c #262639",
-"cc c #2F2F4F",
-"cd c #101020",
-"ce c #2D2D4D",
-"cf c #1C1C2F",
-"cg c #2A2A40",
-"ch c #18182B",
-"ci c #353558",
-"cj c #09090F",
-"ck c #333356",
-"cl c #07070D",
-"cm c #15151E",
-"cn c #202036",
-"co c #1C1C32",
-"cp c #090912",
-"cq c #191925",
-"cr c #26263F",
-"cs c #24243D",
-"ct c #22223B",
-"cu c #13131F",
-"cv c #11111D",
-"cw c #0F0F1B",
-"cx c #0D0D19",
-"cy c #2A2A46",
-"cz c #262642",
-"d` c #171726",
-"da c #151524",
-"db c #131322",
-"dc c #111120",
-"dd c #2E2E4D",
-"de c #0F0F1E",
-"df c #1D1D2F",
-"dg c #343456",
-"dh c #08080D",
-"di c #151527",
-"dj c #06060B",
-"dk c #1F1F34",
-"dl c #1B1B30",
-"dm c #0C0C14",
-"dn c #0A0A12",
-"do c #494967",
-"dp c #23233B",
-"dq c white",
-"dr c #14141F",
-"ds c #212139",
-"dt c #1E1E2C",
-"du c #2B2B46",
-"dv c #0C0C17",
-"dw c #292944",
-"dx c #0A0A15",
-"dy c #262637",
-"dz c #141422",
-"e` c #2D2D4B",
-"ea c #0E0E1C",
-"eb c #1A1A2B",
-"ec c #373758",
-"ed c #181829",
-"ee c #161627",
-"ef c #333354",
-"eg c #141425",
-"eh c #313152",
-"ei c #121223",
-"ej c #222236",
-"ek c #BCBCD7",
-"el c #1E1E32",
-"em c #1C1C30",
-"en c #1A1A2E",
-"eo c #0B0B12",
-"ep c #18182C",
-"eq c #28283F",
-"er c #090910",
-"es c #222239",
-"et c #202037",
-"eu c #11111B",
-"ev c #1E1E35",
-"ew c #0F0F19",
-"ex c #0D0D17",
-"ey c #0B0B15",
-"ez c #1B1B28",
-"f` c #090913",
-"fa c #262640",
-"fb c #171724",
-"fc c #151522",
-"fd c #212131",
-"fe c #2C2C49",
-/* pixels */
-"````````````````````````````````````````````ao``````````````````````````````````````````",
-"````````````````````````````````dmbs`wcffb`i`i`i`ieyaicxfc``````````````````````````````",
-"````````````````````````````c`euegcwcnbmesa`a`aza`cxcffb`ibo`x``````````````````````````",
-"````````````````````````c`cfau`mezdp`uenakaeeadpcr`u`ucxa``mbtcvc```````````````````````",
-"````````````````````cvaiel`lezazd`bpavdbbvdbdseaeiayavbpbvcsesa`eleufc``````````````````",
-"``````````````````eebeasaubycobpavaa`adic`cyeade`dbw`aaaavbpdbcvesdkdvd`````````````````",
-"````````````````bjdvcxeschaqavaa`zbxb`e`agagddbwbfbdb`bx`zaaemdt`uesauf`d```````````````",
-"``````````````d`cf`xcfazcx`j`ybxb`agddag`lchej`g`cbxddag`gdieaeaaz`ubeakcmbj````````````",
-"````````````dabcdxee`udedw`afee`ddafccaf`ccecobg`lcdejafddaecddedtbp`uchdk`w`q``````````",
-"``````````bnebdrcqbccxea`afee`ddcc`fbfbibhep`eaaawczbu`feqeiawbxegavfachbmelebcl````````",
-"``````````c`bdcncvezateafee`ddccbgeh`ecbetcaaldfbqegawehdibxad`vae`yavcr`lcnbocv````````",
-"````````dzaibkcwcvezaacse`ddccendf`eefbhdddlfeckckalef`ebfardddd`ybxaacseaes`taudz``````",
-"`````````xbobv`o`uavdtdcde`g`gawbgalck`vepfddgdg`leldwaketei`fafagfecyeacrdpbkf``r``````",
-"``````cuebazbvcdaedw`ybhegbqbudibfalcaahducicicaciegcbakei`lbgccddb`bmavbpcsbmbn`wcu````",
-"``````bjf`dx`jchcsaabxbfbrbhbh`cbfckctdgciecececadcidgckdiejeh`ffde`bmaad``uescq`jao````",
-"`````kd`dx`ofbenazcddbagbwcdcdawcbdgbrdi`i`pdodobaeccidgb`axeh`fafagbibpevdbdpcna`d`ex``",
-"`````w`dbofbeeakavc`cdagafctet`leqdg`cblecajajajajbacidgdwbbeh`fafagawaaatetdpcneudv`w``",
-"`````rbdcf`baidtavegdbebafeqcbbhavdg`i`pajekekek`ndobadgad`lai`fafagdpegazcoaz`m`ibodb``",
-"````dnbdelelcdeaavcybuevaf`feh`vcodgesba`ndqdqdqekajbadgalbhctbdaxagee`gaebvcv`mel`qdz``",
-"`````xcmau`mdfbt`yfdbwegbc`fehejbxdgefdo`ndqdqdq`najbadg`lepev`adye``lctem`jaz`mcfeudn``",
-"````fcebel`mdpezatcsdbenbqbzbgbe`lalakcgdo`nekek`ndoadakepbhcdcocde`bxcybv`oez`mbddbbn``",
-"``djcpbdeycndpesazeaeaemfdaf`fepaeefbpbdecajdoajdobaefaxehbgdyafagbw`yaaatdsdpcwdbdmcwdj",
-"````cwcmbd`jes`ubpdpcoegcyddenepdfehbxaxcgcgcabaecdgarbdeh`fccdde`fecyavezbiescney`rdz``",
-"````bnedf`auesaqfaavchazb`agcddidybgcdcacb`aegalef`eaxenfeccddagb`bxaaav`tevesdkbvedcl``",
-"````bjd`daau`mdp`ubpatawcrb`age`ch`fcdbhbibeehehehbg`fcfavddagb`bxcyavbp`ua``melcp`qdj``",
-"`````xabbdbodfescsfaeaarfdbxb`cyakafak`leieiax`f`fccccaf`lbwb`bx`aaadtfa`j`icv`iasas`x``",
-"`````kdzbndvdv`mdpbsbiabaa`abxbxbpddddaxbccddsafaf`hdddd`ycoeg`aaaavfa`ubydbbecfcpbjbn``",
-"````djcud`cpdbcnfcayaqezavaa`aazaaaxe`agagcdb`ddagage`ee`oakeaaaavbp`uaqfbcnbtd`eyewdn``",
-"```````xda`qeyelcnbv`iatbpavdteacocsdeesb`bueiavb`b`febxcdfdelbvbeezezescnazeybd`q`x````",
-"``````dmcud`eydvdkbeeaaq`ufadecdac`y`a`zbx`seaaqbx`z`acyaaavbpatbvbvaz`m`tdvaid`cuan````",
-"````````clfccvbt`iaycwescvdebv`yavavdwaaaa`yde`l`yaadwemavabel`uaeakeldk`iaec`fc`x``````",
-"````````dm`wap`x`j`icx`mescxbvaqfabpbpavaecodbabavavbpbmaebvcsdpes`mdv`i`j`x`r`wdm``````",
-"``````````ewcv`xbdakdx`tcnbmbycwcs`ubqcrbicxeeayfacrbq`ucsdpblbmcndk`i`jdncvcvbn````````",
-"``````````er`xex`qbddvbtbk`ocxazesdpaq`ta`by`jcscsaqaqbcescq`m`obecxbcbdcpbsaner````````",
-"````````````eobjcveebscwey`ibkeleldceselauezcxcqesesez`mcncuel`idvaydveudz`xan``````````",
-"``````````````dm`xaocpabebbccffbasbd`oegazcncncncncn`odkd`drcfbcazdzeybs`xdm````````````",
-"````````````````dhbjdm`qd`edebbkd`emdrazelelelelelel`ibocfbofcedee`xdmaneo``````````````",
-"``````````````````anbndjerbnbseydnebf`ai`jcfcfcf`jbcaiebbdc``qdmbndv`rdh````````````````",
-"````````````````````dhdjdnaodbfcabd`cpc``dbd`rbd`dedc`d`aodzbjdjdmcldh``````````````````",
-"````````````````````````anaoewcvbsdbdzeoclap`q`rdafcdzdbcldmewcjer``````````````````````",
-"````````````````````````````djdj`reweoexcldjbn`wcveu`xew`rdmdh``````````````````````````",
-"````````````````````````````````amcjdndjeoanandmdmdmdnamam``````````````````````````````",
-"````````````````````````````````````````````am``````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/blue9.xpm b/hacks/images/bubbles/blue9.xpm
deleted file mode 100644 (file)
index 2026b9b..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-/* XPM */
-static char *blue9[] = {
-/* width height ncolors chars_per_pixel */
-"50 50 170 2",
-/* colors */
-"`` c None",
-"`a c #2A2A47",
-"`b c #1B1B2B",
-"`c c #282845",
-"`d c #191929",
-"`e c #323252",
-"`f c #303050",
-"`g c #111121",
-"`h c #2E2E4E",
-"`i c #0F0F1F",
-"`j c #1D1D30",
-"`k c #1B1B2E",
-"`l c #0C0C12",
-"`m c #0A0A10",
-"`n c #17172A",
-"`o c #212137",
-"`p c #767691",
-"`q c #1F1F35",
-"`r c #2F2F48",
-"`s c #101019",
-"`t c #0E0E17",
-"`u c #272740",
-"`v c #181824",
-"`w c #25253E",
-"`x c #21213A",
-"`y c #12121E",
-"`z c #10101C",
-"a` c #20202F",
-"aa c #0E0E1A",
-"ab c #2B2B47",
-"ac c #0C0C18",
-"ad c #292945",
-"ae c #161625",
-"af c #141423",
-"ag c #242436",
-"ah c #313150",
-"ai c #121221",
-"aj c #2F2F4E",
-"ak c #2D2D4C",
-"al c #1A1A2C",
-"am c #5C5C7A",
-"an c #161628",
-"ao c #333355",
-"ap c #07070C",
-"aq c #313153",
-"ar c #05050A",
-"as c #0D0D15",
-"at c #24243C",
-"au c #202038",
-"av c #0D0D18",
-"aw c #1D1D2B",
-"ax c #0B0B16",
-"ay c #282843",
-"az c #262641",
-"b` c #232334",
-"ba c #11111F",
-"bb c #0F0F1D",
-"bc c #2C2C4A",
-"bd c #3C3C5D",
-"be c #1B1B2C",
-"bf c #19192A",
-"bg c #151526",
-"bh c #131324",
-"bi c #303051",
-"bj c #111122",
-"bk c #1F1F33",
-"bl c #19192D",
-"bm c #08080F",
-"bn c #161620",
-"bo c #23233A",
-"bp c #212138",
-"bq c #0E0E18",
-"br c #0A0A14",
-"bs c #272741",
-"bt c #25253F",
-"bu c #23233D",
-"bv c #12121F",
-"bw c #10101D",
-"bx c #202030",
-"by c #0E0E1B",
-"bz c #1E1E2E",
-"c` c #2B2B48",
-"ca c #0C0C19",
-"cb c #292946",
-"cc c #181828",
-"cd c #28283B",
-"ce c #262639",
-"cf c #2F2F4F",
-"cg c #101020",
-"ch c #1C1C2F",
-"ci c #2A2A40",
-"cj c #18182B",
-"ck c #353558",
-"cl c #09090F",
-"cm c #333356",
-"cn c #07070D",
-"co c #15151E",
-"cp c #202036",
-"cq c #1C1C32",
-"cr c #090912",
-"cs c #191925",
-"ct c #26263F",
-"cu c #24243D",
-"cv c #22223B",
-"cw c #13131F",
-"cx c #11111D",
-"cy c #0F0F1B",
-"cz c #0D0D19",
-"d` c #2A2A46",
-"da c #262642",
-"db c #171726",
-"dc c #151524",
-"dd c #131322",
-"de c #111120",
-"df c #2E2E4D",
-"dg c #0F0F1E",
-"dh c #1D1D2F",
-"di c #343456",
-"dj c #08080D",
-"dk c #151527",
-"dl c #06060B",
-"dm c #1F1F34",
-"dn c #1B1B30",
-"do c #0C0C14",
-"dp c #0A0A12",
-"dq c #494967",
-"dr c #23233B",
-"ds c white",
-"dt c #14141F",
-"du c #1E1E2C",
-"dv c #2B2B46",
-"dw c #0C0C17",
-"dx c #292944",
-"dy c #0A0A15",
-"dz c #262637",
-"e` c #141422",
-"ea c #2D2D4B",
-"eb c #0E0E1C",
-"ec c #1A1A2B",
-"ed c #373758",
-"ee c #181829",
-"ef c #161627",
-"eg c #333354",
-"eh c #141425",
-"ei c #313152",
-"ej c #121223",
-"ek c #222236",
-"el c #030307",
-"em c #BCBCD7",
-"en c #1E1E32",
-"eo c #1C1C30",
-"ep c #1A1A2E",
-"eq c #0B0B12",
-"er c #18182C",
-"es c #28283F",
-"et c #090910",
-"eu c #222239",
-"ev c #202037",
-"ew c #11111B",
-"ex c #1E1E35",
-"ey c #0F0F19",
-"ez c #0D0D17",
-"f` c #0B0B15",
-"fa c #1B1B28",
-"fb c #090913",
-"fc c #262640",
-"fd c #171724",
-"fe c #151522",
-"ff c #212131",
-"fg c #2C2C49",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````",
-"``````````````````````````````````````cnddbvalfeewchch`kbbbfcre`````````````````````````````````````",
-"````````````````````````````````e`eeaibvendmcp`o`oaxczeoaxbyax`jcydwe```````````````````````````````",
-"````````````````````````````e`ewchf`bnaaeudrataicacabyatatfebvaacpen`yewdp``````````````````````````",
-"````````````````````````aseechbncpeucs`wbtatefbbcqdrcpfabsfcbtehbaeucpbrchbqew``````````````````````",
-"``````````````````````f`al`jdydeacbabwbsaydccucgffa`eheu`wdxaybsfc`watch`y`janfe````````````````````",
-"````````````````````cybrbr`oblcz`nbsdxad`aecdkccfgerfgdebzc``aaddxbsdkawfa`odwaaef``````````````````",
-"``````````````````bm`k`kbadrddcpayad`ac`bceaeaakdfdfdf`ieheabcc``aadbtbw`wdrdwbybgdb````````````````",
-"````````````````ef`kefbgatbyczdrddc`bceadfdzdkanekc`ffexblb`dfeadgdkcgcgbacsateoen`kf```````````````",
-"``````````````dcbecjczdrebehad`afgeaakdfcfbudn`cazajepercgeacfdfbxehbbfcawductdrcsenbecr````````````",
-"````````````bmbfbfaibb`wefdx`afgeadfajcf`fcgcgbjbxaqbhbtcuan`fcfdxdnbtaibldxbsbkcpcp`jbfet``````````",
-"``````````dpccdd`qeu`vbzbbefc`abdfaj`fbiei`ebcejenegdhepeh`g`nbibhbtdkddbsehcgbsfaeu`qchbmdl````````",
-"``````````eqcobncpendgaybba`bcdfaj`fb`ei`eb`ehbhau`ndzaoaoch`eeiayerb`a`b`bzd`ayeb`qbpezecfe````````",
-"````````ewcrfbchdddefadxaibcakffbeaddkdzegejdk`xehdididicmaoeg`eaydacf`hakbc`adxdgczeucyf`cceq``````",
-"````````fealdwacdeefay`d`adk`gcgercqeh`naodkehexdidididkbjanaobjbjex`fcfdfeac`aidrctat`oaxbrfe``````",
-"``````eydcbralacehebdx`absercvbcdzdhaycdcmer`jckckckagckeocdb`ayehdkei`f`hakfg`qdhbscueudmfbdbas````",
-"``````cwbfbraxen`n`nadc`bc`gd`bjbgcfaycmdiejehckedededcdfgdidiblblffei`feadfboejaddu`wbocpbfbfcw````",
-"``````cwbfbrbqboddcgbtayeaefdfbj`n`ncdcmbldkep`r`rdqdqbdceckdicmejdzeibicfdf`bdgebefdbdr`o`jdtfe````",
-"`````tcxavdbdwblcpbzaeepaidfdzbudkejagcmbhdkdm`rdqamamambdeddicm`jeieibicfdfcgaiebfadgatbpencraeeq``",
-"````ewdbaxcofedebwayawffejdfcfcfepbjdncm`kah`r`p`pem`p`pambdckcmdz`nb`bicfdfef`bcjbzatcseudmeycrew``",
-"`````yccbvdmeuehbaaybz`u`nescfbiei`n`ndidvbxdq`pdsdsememamdqeddidxbj`fbxcfdfecazbhbyczaceudmchcr`y``",
-"````aseechdycsczbwcpd`c`bhcucf`feidkcucmdicedq`pdsdsdsem`pdqedcmandkcgcgcbdfeaazehbtczbbchavaiewbm``",
-"````cneechdmeudhbwawddbzbtcjdn`feiaqbjao`wenam`pdsdsdsemamdqck`nbt`adnbjaidfbcddbscjbgdecscwbw`ydp``",
-"````doeechdmbpatbodueobjep`gayddbi`nbjegdaatdqdq`p`pem`pdq`rbucqexcgdkcvddakbcabadbyanatdmbqafcrcn``",
-"````cnccbff``odreke``n`g`n`nekaj`fcqbj`eaocqffbddqdqamdqbdb`ej`eeibiagajdfeabzatdxbyeodr`oafbvcrcr``",
-"````cn`scrdw`obo`wbsebeb`nbgakdfcqbj`nei`edkceekajcibdbdckagbjb`ei`fcfdfakbcc`d`aybsbgbo`oaxf`dbbm``",
-"`````ydbcrbrdmeucufcay`kexayeadf`xcgbhbiadaycdcjfgcjdiaoeg`eaybh`fcf`hdfeafg`aaddudd`jeucpeffedbdl``",
-"````ewaecrddaxbpdr`wbsbzepddfgeadfcbev`fcf`xag`abcbf`eeieieibicgbo`hdfeafgc`a`aybs`weubpdmavecaveq``",
-"````eyfeczf`dycsbocufcbw`gbbc`bceaefdkajb`anbj`gehbibiag`f`fcfajbhdfeabcc`d`ctayfcanaccpenbacocney``",
-"````ase`avdwddcpeuat`wcz`kba`ac`bcd`cqdf`hbcc`cgc`ep`fcfcfaj`hdfbsejbcc``aadayfa`webdmal`jbnbm`yas``",
-"````dp`yae`zdydw`ochddcjfaayad`ac`cjbleaakdfdf`hbjepaj`hdfdfakea`dbbbs`aadaybsctcudeeeefbrecbm`ydp``",
-"```````zfe`ycrbgcpfd`qbpaibsayadd`bbcueubxeaakakcgbcakakakeabcdecqepdkawaybsct`wdrbpchcjeweeet`z````",
-"``````ascwdbdpdpencpbl`ncjfcbsaybgeberbsd`bzbcbcb`ehb`bcbcfgc`bgaiawdxbycueb`vcxeucpczcxecdbcneq````",
-"``````elewfeaaf`aadmcjaidr`wctbscgcgebafek`ac`c`ctbbffc`c``a`aawadayayfaddca`ndw`o`ybbbeccfeewdj````",
-"`````````tcwaeddax`j`yaleudre`fdebaiayaydxadd`d`dubjcqffd`ada`aybka`fcbtbwcpbbacdmdtcrbfaecwdp``````",
-"````````cnbmetcraach`jdy`oeuacbbczccfcbsbsaya`deayblazaeayaydbcqddexcwat`jeu`ybk`jbfcrdoe``zet``````",
-"``````````as`yfef`bfcobfcocpbpaibgcs`wbtfcfcbsbwbyczbabsbsfcfcbt`wcudreubpcpbqdcchezaebmcxar````````",
-"``````````elbq`t`zeyecaxbbbkcp`oaxbodratcu`w`weubhbwalbt`w`wcuatdrboeu`ocpbkdwbwecdwbmdoarap````````",
-"`````````````meyeze`ccbrcrbren`dbwbfbvcsbodrbaaieu`katatdrdrboeueucscpdmbrbff`ecccdobm`ldl``````````",
-"``````````````eqeqbmdc`screy`d`jenacac`qbnfdczbg`vcweueueubpbncpacbnen`jeecr`ycrdocw`sel````````````",
-"````````````````eqeybm`ze`coecbech`jbwandmbnaxbkcpcpcpcpcp`qdmen`kchchbeec`zf`dodleyeq``````````````",
-"``````````````````dlas`y`zaedb`decbnbfbe`jbrbfenenenenenen`j`jdpchf``y`ddpdobvbm`meq````````````````",
-"````````````````````elbqarcwdpcxcrdbccalbebefbchch`dchchch`kfbalbfeedbbqcrcneyarap``````````````````",
-"``````````````````````djdocncncne`aedbdbccdwbfbfecececbfbfbfeedbdbcxezcncnclarbm````````````````````",
-"````````````````````````eldlas`lcxcwe`fedcaedpe`bmdpdbeqefaedcfee`dpbq`mcnelap``````````````````````",
-"````````````````````````````elelasey`zcx`ycnbmbm`zcre`e`cwcw`ycx`zeyasdjap``````````````````````````",
-"````````````````````````````````dlararas`tcndparareq`z`zey`m`taseqclap``````````````````````````````",
-"``````````````````````````````````````apdlelaparelareqeqdpetelap````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass.pov b/hacks/images/bubbles/glass.pov
deleted file mode 100644 (file)
index c189771..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "colors.inc"
-#include "shapes.inc"
-#include "textures.inc"
-
-/* The following make the field of view as wide as it is high
- * Thus, you should have the -W and -H command line options
- * equal to each other. */
-camera {
-        location <5.8, 0, 0>
-       up <0, 1, 0>
-       right <1, 0, 0>
-        look_at <0, 0, 0>
-}
-
-sphere {
-        <0,0,0>, 2.5
-       texture { Glass
-               scale <0.7, 0.7, 0.7> 
-               rotate y*clock
-               normal {bumps 0.4   scale 0.1}  
-               finish { Shiny }
-#              finish { phong 0.4 }
-       }
-}
-
-light_source {<6, 7, 0> color White}
-light_source {<6.1, 1, 0> color Blue}
diff --git a/hacks/images/bubbles/glass1.xpm b/hacks/images/bubbles/glass1.xpm
deleted file mode 100644 (file)
index 7d25395..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* XPM */
-static char *glass1[] = {
-/* width height ncolors chars_per_pixel */
-"10 10 61 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #29293F",
-"`c c #2C2C63",
-"`d c #353579",
-"`e c #242447",
-"`f c #222245",
-"`g c #25253E",
-"`h c #1C1C3F",
-"`i c #2B2B47",
-"`j c #252544",
-"`k c #222251",
-"`l c #323264",
-"`m c #212146",
-"`n c #37374B",
-"`o c #22223D",
-"`p c #252536",
-"`q c #232337",
-"`r c #34346C",
-"`s c #303068",
-"`t c #26264A",
-"`u c #5D5D97",
-"`v c #363674",
-"`w c #2C2C6A",
-"`x c #2E2E5B",
-"`y c #242451",
-"`z c #343464",
-"a` c #3C3C6F",
-"aa c #353572",
-"ab c #38386B",
-"ac c #242454",
-"ad c #181831",
-"ae c #28285B",
-"af c #37377A",
-"ag c #20203F",
-"ah c #26265C",
-"ai c #4C4C60",
-"aj c #383874",
-"ak c #333379",
-"al c #444458",
-"am c #272756",
-"an c #32326E",
-"ao c #30306C",
-"ap c #40407F",
-"aq c #292944",
-"ar c #212150",
-"as c #323271",
-"at c #2D2D76",
-"au c #21213F",
-"av c #25255A",
-"aw c #35356D",
-"ax c #313169",
-"ay c #2C2C6E",
-"az c #18182C",
-"b` c #232344",
-"ba c #292961",
-"bb c #202037",
-"bc c #1C1C33",
-"bd c #242452",
-"be c #45456F",
-"bf c #242455",
-/* pixels */
-"``````aibebebeal````",
-"`````n`zaw`ua``l`n``",
-"```i`xab`wasaj`r`x`q",
-"``auaean`daf`vao`c`t",
-"```haxahayatakbaaeb`",
-"``adbfav`wapao`sam`m",
-"``azagaracaaae`k`fbc",
-"````bb`ybd`aar`e`o``",
-"```````paq`j`b`g````",
-"````````````````````"
-};
diff --git a/hacks/images/bubbles/glass10.xpm b/hacks/images/bubbles/glass10.xpm
deleted file mode 100644 (file)
index 503f5f1..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/* XPM */
-static char *glass10[] = {
-/* width height ncolors chars_per_pixel */
-"60 60 189 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #25254C",
-"`c c #383858",
-"`d c #23234A",
-"`e c #212148",
-"`f c #2E2E62",
-"`g c #292967",
-"`h c #3535A1",
-"`i c #272751",
-"`j c #23234D",
-"`k c #29293F",
-"`l c #2C2C63",
-"`m c #2A2A61",
-"`n c #33334C",
-"`o c #353579",
-"`p c #272754",
-"`q c #414188",
-"`r c #20202C",
-"`s c #2E2E3D",
-"`t c #1C1C28",
-"`u c #2E2E68",
-"`v c #242447",
-"`w c #2C2C66",
-"`x c #222245",
-"`y c #181824",
-"`z c #25253E",
-"a` c #161622",
-"aa c #B9B9ED",
-"ab c #3E3E67",
-"ac c #1C1C3F",
-"ad c #6767A3",
-"ae c #2B2B47",
-"af c #272743",
-"ag c #222248",
-"ah c #292931",
-"ai c #29295C",
-"aj c #1D1D39",
-"ak c #252544",
-"al c #1E1E47",
-"am c #2B2B61",
-"an c #29295F",
-"ao c #1F1F3E",
-"ap c #2F2F68",
-"aq c #2D2D66",
-"ar c #30305F",
-"as c #2C2C5B",
-"at c #11111C",
-"au c #262655",
-"av c #31316D",
-"aw c #4C4C6D",
-"ax c #222251",
-"ay c #323264",
-"az c #2D2D69",
-"b` c #33335B",
-"ba c #43436E",
-"bb c #2B2B67",
-"bc c #212146",
-"bd c #37374B",
-"be c #22223D",
-"bf c #252536",
-"bg c #1D1D42",
-"bh c #2A2A5C",
-"bi c #28285A",
-"bj c #2B2B53",
-"bk c #333372",
-"bl c #2F2F6E",
-"bm c #2B2B3F",
-"bn c #2C2C36",
-"bo c #424266",
-"bp c #232337",
-"bq c #2F2FB0",
-"br c #34346C",
-"bs c #525265",
-"bt c #32326A",
-"bu c #1B1B2F",
-"bv c #3B3B55",
-"bw c #303068",
-"bx c #21214C",
-"by c #2C2C64",
-"bz c #292957",
-"c` c #232351",
-"ca c #26264A",
-"cb c #2F2F60",
-"cc c #202044",
-"cd c #5D5D97",
-"ce c #2B2B5C",
-"cf c #363674",
-"cg c #3C3C66",
-"ch c #252556",
-"ci c #30306E",
-"cj c #3E3E54",
-"ck c #414178",
-"cl c #2C2C6A",
-"cm c #2F2F4F",
-"cn c #25252E",
-"co c #27275B",
-"cp c #363663",
-"cq c #4C4C68",
-"cr c #20204A",
-"cs c #2E2E5B",
-"ct c #29294C",
-"cu c #242451",
-"cv c #27274A",
-"cw c #343464",
-"cx c #4F4F64",
-"cy c #252548",
-"cz c #16162C",
-"d` c #292938",
-"da c #333384",
-"db c #3C3C6F",
-"dc c #353572",
-"dd c #1E1E37",
-"de c #38386B",
-"df c #414156",
-"dg c #242454",
-"dh c #31316E",
-"di c #181831",
-"dj c #232349",
-"dk c #272739",
-"dl c #393979",
-"dm c #4C4C85",
-"dn c #2F2F83",
-"do c #28285B",
-"dp c #292952",
-"dq c #36366C",
-"dr c #48486D",
-"ds c #23234C",
-"dt c #37377A",
-"du c #20203F",
-"dv c #1E1E3D",
-"dw c #26265C",
-"dx c #313174",
-"dy c #4C4C60",
-"dz c #27273F",
-"e` c #3C3C78",
-"ea c #48485C",
-"eb c white",
-"ec c #383874",
-"ed c #333379",
-"ee c #444458",
-"ef c #272756",
-"eg c #47477C",
-"eh c #32326E",
-"ei c #1B1B33",
-"ej c #1E1E2C",
-"ek c #30306C",
-"el c #40407F",
-"em c #292944",
-"en c #212150",
-"eo c #23233E",
-"ep c #141422",
-"eq c #343473",
-"er c #323271",
-"es c #2D2D76",
-"et c #2E2E6D",
-"eu c #40406E",
-"ev c #21213F",
-"ew c #272731",
-"ex c #8080BA",
-"ey c #23232D",
-"ez c #25255A",
-"f` c #1B1B39",
-"fa c #35356D",
-"fb c #191937",
-"fc c #262651",
-"fd c #313169",
-"fe c #2C2C6E",
-"ff c #22224D",
-"fg c #18182C",
-"fh c #373786",
-"fi c #2D2D65",
-"fj c #232344",
-"fk c #2B2B63",
-"fl c #292961",
-"fm c #27275F",
-"fn c #202037",
-"fo c #1C1C33",
-"fp c #242452",
-"fq c #45456F",
-"fr c #484868",
-"fs c #535380",
-"ft c #1F1F43",
-"fu c #2C2C5D",
-"fv c #3535DD",
-"fw c #353573",
-"fx c #262657",
-"fy c #393963",
-"fz c #242455",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````bsbsbsbsbsbsbsbsbsbsbscxbs``````````````````````````````````````````````",
-"``````````````````````````````````````````dycxdydycxawawawbsbsbsawcxcxcqdycxcxbs````````````````````````````````````````",
-"````````````````````````````````````dyeacxfrawcqawfrawcqcxawcqawawawawawawfrfrcxcqeabs``````````````````````````````````",
-"````````````````````````````````dfeadydyawcqawawfrcqawawdrawcqawawfqawcqcqfrawawfrdyeaeadf``````````````````````````````",
-"``````````````````````````````eadyeadyfreedrboawfqfqfqdrfqeufqawbaawbabofqeufqdrcqfreeboeadf````````````````````````````",
-"``````````````````````````dydffrbocjfrfrdrfrfrfqfqbabofrfqfsbaeubafqfqcgeubafqdrbaabbobobocjeedf````````````````````````",
-"````````````````````````dfeeeadffyboeecgeufrfreufqeueueucgbaeubadrdbbacdbaeucgbabocpboboabboeaeebd``````````````````````",
-"``````````````````````bdbdcjbd`cfyeefybaabcgfyeubaabdmfseudbdefsaackdbeudebaeudedebocgbofyfycjcjeecj````````````````````",
-"````````````````````cjdfabbvb`cg`cfyfyfycgabcgdeckbrfscddecdcddmdmfsabdeeucwcpdbdbcgcgcp`cbvbvcjbvbdcj``````````````````",
-"``````````````````bdbddfbv`ccgfyb`cgcgcpfycwdedbdbcdadcdexexckcd`u`uegdedbdbaycpaydecpcpb`bvfybvbdcj`s`s````````````````",
-"````````````````dfbdcjbvbd`c`c`cb`cpcwcgdededqayfabrcdexdbcdcdcddeexebbrdbecdedqcwfdaycpcgarb`b`bd`cbd`sbd``````````````",
-"```````````````sbdbd`n`ncmcscsarcscwcpdbbtbwbwbtbrfaebexegexaddbdeeceldqbrbrdqbtbkaybt`fbjcscpb`b``ncmctbdbd````````````",
-"``````````````aebd`c`ncmcsb`cwayascsdebraybwbrfdbtazdmdeexaddladexckdedmdme`btay`lcbcscwarasfucpb`cmcmae`nbd````````````",
-"`````````````saeeo`nbjcmcsarar`paycsbtcb`fbrbtfkfdciecdmdqebcdaacddmece`elbrazfabr`f`wbwbtarbzcsascsarbjbm`kbn``````````",
-"``````````ewd`ae`z`c`zbjcsb`cscscwcwbrbravbtecbrfackaadmckexavciexdme`bkfabtapanbr`ffabtfdbtdpcscsbjbjdpbeae`s`s````````",
-"``````````ahcm`kcm`bdparaycsay`fcscsfdbrfibwbtbrfdeqcd`qdmelbkeldmexdmeqdce`faerdcapbtbwfa`waucscscvdpdpafcmae`n````````",
-"````````cncmaeakcmct`adpcsarcbcbbwdqdeapamdcehcfclbldlbldmeqeradexade`esecelehehdc`ubrbrbtfucsbhcsas`actbecmbpbpey``````",
-"````````ejbpeo`vctcv`abzb`ef`ffxfucbbwapbldcdheqetesdlfwdmescfcddmdmdmbkbleldldhaq`ubrfabtcbcsbtcs`pcccycm`veobe`t``````",
-"`````````rae`aajevdjdsasas`jbifiapbrbtav`uapclcfdlad`odndnfvdxededexegeceqe`e`cfbybydcbrfmcwcbfdcbbjdjca`bcv`zdd`t``````",
-"``````ej`rbu`vcvcv`vcyfcbzefbz`f`uclapfderfeerclerdldlerdada`hedfhe`aacferdtcfciazapfk`ubramcbfuararbzfc`zaeaofo`t`r````",
-"``````bpfodibedsdp`jcs`abwbh`lfadccidcecerclet`gfe`hdxdx`hededdt`hdaelcfereterer`wbk`ubtfdbtef`fefcb`paudpbcdiczdi`y````",
-"``````ejddddemfcbjefcscs`faycedcececapciazcieqbldterdxdnbqelcdfhfv`h`oe`ererdnetfkfdekfabwbtfubifxfcar`affdpf``yepfo````",
-"`````tej`ycyevcuctftbzefdoaiapaqbrbrehfw`udcfwda`oerekfhfhdxdtdaes`hbqfwcferbkehflfkekcffabwfuco`lbzcsbzftbccaevfneja```",
-"````atddddem`xaocscsar`pdwdwfibwapbyapeccfdlcf`hdnfmbl`hfhdtdt`hclfvbq`qfhdxbkcfcl`gfkehfa`ufufpamaycsaydjcc`v`vfoepat``",
-"````ejfgbucy`vccceaseffdfldgai`ubbfzfdazazcfblereqdt`hdnbq`hedbqfedndndte`dtdtdletfmdhehfkapapbt`mdgfubzacdp`xf`dicz`y``",
-"````budddi`x`vevdpcsbzcwfxai`mapfdflfaavblercibkcffhcl`gfvfvfvdadaedclcfcfdteqecdcfkercfav`lbt`famchfdcsbe`bcaczfjbefg``",
-"````a`buepccevcrdpbzbzcbfxbifdfififacfekazereretblfe`hfhbqesesdnfh`h`hbq`hfwecdldcerclavecaqaqfifxbhbzbzcv`xfjfodufnat``",
-"````atepbufodualfcdp`lauauchfi`lapek`gcicieretfecl`gfhed`hesfm`gfefvfvfvdxbl`oederetfm`wdlfkfxaybzau`d`j`xduf`fgdufga```",
-"`````yepddfjacccbz`benamfd`f`mfdbr`mdwcidtcfclfmfebldadneddnesdadadx`hdaededdaclflfmflfmehbyaiaydofuarasftccfjdidiei`t``",
-"````a``yczczfbbcbc`bacficucraqfdanfkflaz`oehbbesbldndxfefefeesfvbqbqdnbbdtedciciazaqfkazaz`ubw`laicbas`pdjcccc`advddat``",
-"````fo`yddccf`fcalcefucbcufpbi`fbyav`wazbt`ucldxed`hblescldn`hbqdndncl`gazedazazazfw`wekfzanameffucbbzbxbz`jf`fbevbuep``",
-"````at`yfbaccy`a`bdsceaiffbzbichfi`manekaq`uclbkcffheletfvesfh`hesdx`qclci`gfkapap`wekapezanfzaifubxeffcfc`bdubufgepat``",
-"````a`czdvf`bcdv`bffbzbicrax`fbiezcofifiekbkfk`geredeserbqdndndtadfhazcfblfecl`u`laiflaq`f`lez`ucbdgff`j`bdpccdddiepep``",
-"````atczdidvaocy`v`edsbcaxdwbxfzefchameqecdlbl`gazdh`qfhaaadelesfhdaflblbkblerazapfidwbhchaqdobibzalfp`pccbgdveiczepat``",
-"````a`epfoczdi`dccac`jaufzcraxaubxdwez`wfkehekbbclbkelaa`obqeleddldafkdmekfm`wfk`wfibwfidobhaiaxef`j`pdsbcacbcaodiddat``",
-"``````eifgczevccfbau`jefdgffbhamaxfxezfd`w`l`odl`udcbk`wdneldtegadaaazetdlfmanan`waqfkehfifpbic``p`dbzagftao`vdifbfg````",
-"``````a``yfgdv`b`v`ifcbz`b`ibwbtamfxfxfmfxekdhcfby`lciehec`wdlaverapcdecelaz`lby`lfidofiap`mcefxfp`idsagbcagajeicza`````",
-"``````ata`czfbdv`vdjceasac`ibiamfian`maifxanazehave`apekehap`uege`ecazcfbkekdwfkfifiauchefbiencuftbcdvfbfof`fbdi`y`y````",
-"`````````yczbudvdvdvfbcubgfcaucrbicraxfzchco`wekfke`aqflav`uaa`udm`u`w`uamfzchfmanameffpdgaidgfpaldvaoevf``zfbfgbu``````",
-"````````a``tejeif`ajddajdsccbz`pbi`jfpdoanfzanbtai`f`ufkfkdq`lanebexaidcfme`fafiancodgenenbiai`pcracccf`bpddbufg`t``````",
-"`````````t`yfgfgbpacaoakdubgbiauffdsenanfidoamaidgcdcoezbtecdc`mdmanbifidoanan`uapfzaxfpfpbhcecr`xbcbgbxddbufoej`t``````",
-"```````````t`yfoddaodidv`i`xaleffpc`chfxamchezaichezfmfzanbwanfpcb`famfkanfxfzezcoanbifxc`ffefacbgccacf`ddddej`t````````",
-"```````````tcnfobpdvbgdvbgbxftefbibxaiaudofzaxfichanfxfpfxezananfxchdgefezfzfxcuc`crdsfpcubz`jft`eeofcfbfoejfg`r````````",
-"````````````eyfgbudiaoajbgdvbecrfpfpff`bffefbwaichchdgdgbhdgbjbidoaicofxfpaicubxds`afpdgas`e`vduag`z`zajdibuey``````````",
-"```````````````t`rbuddeodvft`zalbccr`ec``bc`auenfp`jezchfxaidpc`fxdgfpfiamfcdgfxcvcrfcfpalcr`zbeajf`dvajbfey````````````",
-"```````````````rbfbpfofbbgdvaffjfjcc`jfxbxfcc``b`bdsbiau`jc`biaibifxfpfcch`afpc``d`d`vdvfjfj`zdvajfbdvbp`tcn````````````",
-"````````````````cnfnfnbpfnaoftftdj`ecuftfpaubidgfp`j`bfcfpfc`afpdgc``jfpencuc``b`j`e`vcrevdkdzewbefnfobfej``````````````",
-"``````````````````bffnfnajfodvddccftaf`e`b`jdgcuai`jcv`jc`fcdj`jbxcvcvdsdsbxbxdjcr`xbxdjft`z`zddbefnbf`r````````````````",
-"````````````````````d`eyewbeduak`zfjemcads`dfp`jdj`b`bcu`jcudgfpefds`bcacacvctct`dagak`xaoddbeeybpfn`r``````````````````",
-"``````````````````````eyfnbpdkdz`z`zbmakfj`bag`v`dctctctctem`d`ecvctaeaeafcu`v`ecc`zakafbp`kbpewbfew````````````````````",
-"````````````````````````eyeybfbpdk`zemcvcyafemakcvcvaeaeffdjcvcv`j`vae`vemaf`vagcc`z`z`zeodkbfd`ey``````````````````````",
-"``````````````````````````cnbnfobe`kbe`kevemdzfj`k`z`b`edjctaeaeemds`eaf`vevdzdjafemd`dk`zbfd`ey````````````````````````",
-"``````````````````````````````bncneybf`kbeaf`kememem`kcvafemakaeaeakemem`kdk`z`kbebm`zd`d`ah````````````````````````````",
-"````````````````````````````````ahcnewd`dk`z`zaeaf`kaf`k`vemaedzcvakak`z`kdzd`dkdkbmbfbnah``````````````````````````````",
-"````````````````````````````````````cncnbf`z`sd``s`k`z`s`zbm`s`kd`d``s`s`k`kd`ahd`bncn``````````````````````````````````",
-"``````````````````````````````````````````bnd``s`s`kbnd`d`bfd``kbnbnd`bnd`ewahbn````````````````````````````````````````",
-"````````````````````````````````````````````````ahbnahbnd`ewdkbfewahahewbn``````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass11.xpm b/hacks/images/bubbles/glass11.xpm
deleted file mode 100644 (file)
index 0eb808c..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-/* XPM */
-static char *glass11[] = {
-/* width height ncolors chars_per_pixel */
-"72 72 189 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #25254C",
-"`c c #383858",
-"`d c #23234A",
-"`e c #212148",
-"`f c #2E2E62",
-"`g c #292967",
-"`h c #3535A1",
-"`i c #272751",
-"`j c #23234D",
-"`k c #29293F",
-"`l c #2C2C63",
-"`m c #2A2A61",
-"`n c #33334C",
-"`o c #353579",
-"`p c #272754",
-"`q c #414188",
-"`r c #20202C",
-"`s c #2E2E3D",
-"`t c #1C1C28",
-"`u c #2E2E68",
-"`v c #242447",
-"`w c #2C2C66",
-"`x c #222245",
-"`y c #181824",
-"`z c #25253E",
-"a` c #161622",
-"aa c #B9B9ED",
-"ab c #3E3E67",
-"ac c #1C1C3F",
-"ad c #6767A3",
-"ae c #2B2B47",
-"af c #272743",
-"ag c #222248",
-"ah c #292931",
-"ai c #29295C",
-"aj c #1D1D39",
-"ak c #252544",
-"al c #1E1E47",
-"am c #2B2B61",
-"an c #29295F",
-"ao c #1F1F3E",
-"ap c #2F2F68",
-"aq c #2D2D66",
-"ar c #30305F",
-"as c #2C2C5B",
-"at c #11111C",
-"au c #262655",
-"av c #31316D",
-"aw c #4C4C6D",
-"ax c #222251",
-"ay c #323264",
-"az c #2D2D69",
-"b` c #33335B",
-"ba c #43436E",
-"bb c #2B2B67",
-"bc c #212146",
-"bd c #37374B",
-"be c #22223D",
-"bf c #252536",
-"bg c #1D1D42",
-"bh c #2A2A5C",
-"bi c #28285A",
-"bj c #2B2B53",
-"bk c #333372",
-"bl c #2F2F6E",
-"bm c #2B2B3F",
-"bn c #2C2C36",
-"bo c #424266",
-"bp c #232337",
-"bq c #2F2FB0",
-"br c #34346C",
-"bs c #525265",
-"bt c #32326A",
-"bu c #1B1B2F",
-"bv c #3B3B55",
-"bw c #303068",
-"bx c #21214C",
-"by c #2C2C64",
-"bz c #292957",
-"c` c #232351",
-"ca c #26264A",
-"cb c #2F2F60",
-"cc c #202044",
-"cd c #5D5D97",
-"ce c #2B2B5C",
-"cf c #363674",
-"cg c #3C3C66",
-"ch c #252556",
-"ci c #30306E",
-"cj c #3E3E54",
-"ck c #414178",
-"cl c #2C2C6A",
-"cm c #2F2F4F",
-"cn c #25252E",
-"co c #27275B",
-"cp c #363663",
-"cq c #4C4C68",
-"cr c #20204A",
-"cs c #2E2E5B",
-"ct c #29294C",
-"cu c #242451",
-"cv c #27274A",
-"cw c #343464",
-"cx c #4F4F64",
-"cy c #252548",
-"cz c #16162C",
-"d` c #292938",
-"da c #333384",
-"db c #3C3C6F",
-"dc c #353572",
-"dd c #1E1E37",
-"de c #38386B",
-"df c #414156",
-"dg c #242454",
-"dh c #31316E",
-"di c #181831",
-"dj c #232349",
-"dk c #272739",
-"dl c #393979",
-"dm c #4C4C85",
-"dn c #2F2F83",
-"do c #28285B",
-"dp c #292952",
-"dq c #36366C",
-"dr c #48486D",
-"ds c #23234C",
-"dt c #37377A",
-"du c #20203F",
-"dv c #1E1E3D",
-"dw c #26265C",
-"dx c #313174",
-"dy c #4C4C60",
-"dz c #27273F",
-"e` c #3C3C78",
-"ea c #48485C",
-"eb c white",
-"ec c #383874",
-"ed c #333379",
-"ee c #444458",
-"ef c #272756",
-"eg c #47477C",
-"eh c #32326E",
-"ei c #1B1B33",
-"ej c #1E1E2C",
-"ek c #30306C",
-"el c #40407F",
-"em c #292944",
-"en c #212150",
-"eo c #23233E",
-"ep c #141422",
-"eq c #343473",
-"er c #323271",
-"es c #2D2D76",
-"et c #2E2E6D",
-"eu c #40406E",
-"ev c #21213F",
-"ew c #272731",
-"ex c #8080BA",
-"ey c #23232D",
-"ez c #25255A",
-"f` c #1B1B39",
-"fa c #35356D",
-"fb c #191937",
-"fc c #262651",
-"fd c #313169",
-"fe c #2C2C6E",
-"ff c #22224D",
-"fg c #18182C",
-"fh c #373786",
-"fi c #2D2D65",
-"fj c #232344",
-"fk c #2B2B63",
-"fl c #292961",
-"fm c #27275F",
-"fn c #202037",
-"fo c #1C1C33",
-"fp c #242452",
-"fq c #45456F",
-"fr c #484868",
-"fs c #535380",
-"ft c #1F1F43",
-"fu c #2C2C5D",
-"fv c #3535DD",
-"fw c #353573",
-"fx c #262657",
-"fy c #393963",
-"fz c #242455",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````````````bsbsbsbsbsbsdydybsbsea````````````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````eabsbsdybsbsbsbsbsbscqcxbsbsbsbsbscxdy````````````````````````````````````````````````````",
-"````````````````````````````````````````````````dydybsbsdycqcqdycxbsbsfrcqcxdyfrcqcxcxbseacxcxbsbs``````````````````````````````````````````````",
-"````````````````````````````````````````````eaeaeafrcqawawawdrdrawcxawawcqcqawawawawawbscqfrfrdycxcxea``````````````````````````````````````````",
-"````````````````````````````````````````frdfcxcqawcqcqawawfrcqdrawfrawawcqawawawfqawcqawcqdrawdrfrdycqdycx``````````````````````````````````````",
-"````````````````````````````````````eeeaeaeadycqdffrboboawfqfqfqdrdrfqbabadrdrdrdrbobodrdrbaawdrdyfreaeaboeeee``````````````````````````````````",
-"``````````````````````````````````eeeefreeeefrbofrfrbofrfqeudrbadrfqdrfqeubabababababafqdreufqfrbafrfreeeeeacjdf````````````````````````````````",
-"``````````````````````````````eecjboeebocjboboababboabdrfsfqfqbabobobafqfqawdrfqawbaeueudrdebafrbocgbobobobodfdfcjbd````````````````````````````",
-"````````````````````````````dfeeeedfcjbvab`ccgfyeuabboabbabaabdbadeucgdeabbabadbegfqfqfqbaeueueubobob`bocgcgdfeacjcjcj``````````````````````````",
-"``````````````````````````cjbddfcjbv`ccgdffycgfqbofyfyabdbeuabfqexbaeueudefqexadckdbbadedebaabdedeeufyboabcpfycjdfdfeecj````````````````````````",
-"````````````````````````cjcjdfdfbvb`cg`cfyfyfyfycgabcgdeeudbbregexdbdbadcddmegexeucgdedbdbayfydbdbabcgfycpb`bv`cbvcjdfbdcj``````````````````````",
-"``````````````````````bdbdcjbvbvfy`c`cb`cpcgfyfyfycpdededbdeegexdmaaebexckaadm`ucddbdedbdbcwcpcpfddedeb`fyb`bvfycjcmbdcj`s`s````````````````````",
-"````````````````````bd`nbvbvbv`ccg`c`ccscpcwcwcgdebrcwbraydqckdbcdegegcdcdade`btdcadbrdqfabrdebrcpbwaycpfyfyb``car`n`nbdcjbnbd``````````````````",
-"```````````````````n`s`n`ncj`nb`b`b`b`b`b`arcpdqfabrbrcwaybtbrexadcddbadaae`dedeexaddbdqdebrdedbdededeayb`b`cpb`b`fy`n`c`ncmbdbd````````````````",
-"```````````````````n`sbdaecmcmcscscscpcscscpcwfsbwfiaqfdaybtecadexaafsexe`exckdbbtecdedqfdaycpbrekcbcsaycb`icsaycpb`b``ncm`naebd````````````````",
-"`````````````````scj`c`ccmctbjcsb`cparasascsdqayaybwecbwbrbrbbe`dee`ebadegcdexadegdbcdade`ecbrbwfk`ffuarcwarcscscscpcscmcmct`nd`bd``````````````",
-"```````````````s`saecv`nbjaecmasarar`parcsayfdcb`fbrbtaq`fbtciecdmdbdeebcdebcdebehece`egfabtaqecbrcbazap`fayarcsas`casbjarcmem`n`sbn````````````",
-"``````````````ew`s`zcv`nevcmbjcscsbzcscwaydedqbwavfafdfadcdcckadebcke`aaehdhadebe`dcehdcbtbran`fbr`fbrfibtayaybzbjarcsb`bjbjafbm`sae````````````",
-"````````````bnaeae`kcmagdjfuaycsb``ffucscsbtbwdcaqfifdfabwave`exaaadcdcddh`oecadcddmfwapdbe`fdaqbrapbtbtfdecaqbhbzarcs`adpcmaf`zcmcncn``````````",
-"````````````dz`n`kctcmct`idparcwaybw`farfubrdqbr`ffdfafaecekerdcfeazeleqavdmexaddmelcibkegbrbtbkfa`uehbwfifiambzfxcscs`abjbjakctcmcm`z``````````",
-"``````````ey`saf`zafbjcv`befascsfuar`ffdbrde`faq`wdcdcbkerclesdlcfdmcdblfwcdebaddmdldxercdecbkavbkapbrbtfdbt`fcbbwcbbjbzcactaebectfn`zey````````",
-"``````````a`bf`zcacvdpcv`icucscsbi`fefbhar`fbr`uekbrekcierdxdxdlcieleqes`odmelelexdmcfere`eldcetaqfibwfadcapcbcscsbtcsfcccakdp`vcv`zfncn````````",
-"`````````tbpaecvao`vcccydsbzcsbzffaifiekbwbtbrap`uekbber`odladdteddndnbqdxeqedeqebeleceqdtelelerbyfkavdcfiancwarbtfdcsbjdjfcbjctaebpddbpbf``````",
-"````````bf`rfodpevcv`vfjcybz`idpefbhayapetblapfdciblcleqeteqeldldxdxdadadaesdadtadcdcfereqdldcekapap`wflbwayamcbbhcbasasdp`pbjakcvfjfo`y`y``````",
-"````````ewdddidvdj`abzagdpcu`p`lbzambwfdbbclehdcerfeetetflfedaedbldxdadndaeddada`qdmcfeqdxdheqblfkap`waqfddq`fdgaycs`pcsefef`afjeveieifo`k``````",
-"```````ybfevei`zft`afubzcsas`fam`fbwfaecdcdcdccfetbbblcieretedesed`h`heldm`qdafvdndleceqercledetaqbrapbkfaayfabwbz`fbiascs`p`j`vftf`a`epbu`t````",
-"```````y`ybufnaefc`bdpcucs`pfubw`lbwbrdqdcehavfw`wcfcfereqfwercidt`hdae``qdtbqbqeddle`cfdtdxercifk`uavavecbwbw`fbz`m`mefay`jbc`d`aaobua`fg`t````",
-"``````epbuddcvfjefca`bdsbzbzbhezbyaqaqbrdqehecdcfddccfeqdaedblazdtfhfhdxdtdnfednfvfvcfdtererdcehfl`wfkbkfafaap`fcefifiasasfudjbc`bcadudda``t````",
-"``````a`foeoemak`adparcsarefaidwamapbwapbyazeheccfeccfdxbqesfmblesbqeldtdtbq`g`hfvbq`q`qeqerfweqclbbfmdhbwfa`ufubifxbtarcscb`b`bcv`v`vfgfgbu````",
-"````atejfgfgcy`v`bbcfuasef`ffiezchco`uazezezap`uekdlererereqeddadnfvfved`ofvesesbqfvdle`dleddtdlclfmfkerbr`mapfibtbi`lbzfufuccfccvccdvfg`yfoat``",
-"`````yfodiaj`v`v`x`bdpcsbzdeamamaxfkaqehfm`wav`ueteretbkbkcffhdxfednfefv`hbqdadxesfedtfwcfdtfwe`dcflcldlbkfdfibtap`fanfpayasao`idpagczfneifg`t``",
-"````atfgfofgagccao`abjasbzcbfufxbibtbwfdapecdlavekerblbkeqeqdaesfedafvdndn`hfvfv`hdxeddtdtcffwdlecdhcleqehbkaqaqfkfkco`f`fayafctdjcadiajdv`yfo``",
-"````atejbpczaocc`aaldpbzbzfudoen`mbtfiambtbtereretererbletetfeesbq`hfv`g`gdn`hdafhdabqfvbkbkdldlfwerclfkekecaqaqfdfidgef`b`pctccftakfoajfgbua```",
-"````ata`befofoft`daldp`p`laubzambi`lby`lehfm`gavciererclfe`g`gfhdtdxed`g`gesfmdnfvfvdndnetdxedblblazfmfmapec`mfzcbarc`bzbxfcaoccftf`fgbcepfgbu``",
-"`````y`yevbefjdv`xfpdp`jenbifd`lfufkfdbtazdw`merdtdtci`g`gfebledfhesdnfeesdafvededfvdaed`hdadaclflfmflezfibtbycobwfudgfuarfuds`v`xaodidia`atat``",
-"````atfgaobudif`acfp`ebxacfu`fc`fxfdfdan`mdw`gaz`ocfekcletesdndxfecletesdn`h`hfvfhedclfheqfherek`gbyazfm`uaz`ubtamanfucbceaufcccccducaevfoatat``",
-"````atfoejfof`fbcc`jcrbheffufualaxamfiancifkbbciehekflcleleqdadxfedn`gbq`hfvesdnblfmflbberedcletazeqazehapfm`w`lfubzcbcsbzcr`jdpacf`ftdvfn`yat``",
-"````atfgbufodjfjdudp`afpfu`l`jfcbiefdoapavfkfketazbyazbldxdt`hes`hesdxdx`h`hesdndaet`gazeler`wazdhdhcidhanbxezfzchbibh`p`pfceffffcf`czfodd`yat``",
-"````atatczdif``b`v`v`afffu`facfcfubidgfmcoez`lapbbap`gbbedecfhedetdaesesfv`h`qcifhfhdadletfl`wekfianfkcifk`lfkchfl`lbzcrcufc`ift`aaodddda`buat``",
-"````at`tdif`dvagcycc`iff`pefcraxfz`fbianezfkap`uehfw`ufl`gcieqcderfh`hdnedeqdcfedmazdldxdl`gazaq`lfmfmdwfi`l`lan`wfdfucrc`fp`b`d`daoddbufnatat``",
-"``````fga`f`dvdvcycc`xffdsdscrchezcrfzeffxezfieqecdlbkfebbcidh`qfhfhad`qelfedndadnfkblcfclcierazapaqdwaibhchaqanfxcecealfpef`x`bdvf`eiczfg`y````",
-"``````at`yeiczeiajftftac`j`pfpaxalaxefbxfzch`maqfkbkerazclblbkdmdtdaaaedexfvaddafe`udmblflfkazbbazaqfiaqanbiamanaxfpbzds`pfcbcccdvftaoei`yep````",
-"``````a`a`didif`f`acbxalfp`pbxax`jcefufzfzfmfmbbfifkfibkdhaveqelexfv`qcddndmcdadfeekdl`hflanfkfm`wfdfkapapbhcuefchcuau`bbz`jacccf``vdidvat`y````",
-"``````a`epfoczdv`baoacefbxbzcscr`pfi`fcochchezez`mavekdcecfmfmdmfa`wdlapexcdcddmaabbazes`wfd`lan`maqaibwehapcofiauauau`befalbcdp`ddvfodieiat````",
-"````````ata`difbftao`a`bbzfu`bagbzfdbrfiandoaiaifp`wekeqfw`wfkeke`apckaqelecerfkckcdfherer`ufk`wbyaqaidoanamanbzcufx`b`pbgbcbgccagdieiczep``````",
-"````````at`yfgf`difbctagbzascrbcefaubififx`lananezdo`mcidhapav`uelcddcecape`dcflfaekbkeqekdwcofkfiapaidgefchbic`ffalftaldvf`bpf`fbdidia`a```````",
-"````````at`yczddeiaof`dvfb`jbgccasc`crbhcrfpenchchcoanekeh`we``wfkelececaaek`qcdaqfk`ufiezdgdwfman`lbhenfzfzaifpcealcraoaodueobeajdifg`ya```````",
-"``````````a`bueibueiajajddddbcbgalbzfcbh`j`pfpdoaichchavapdodmbtbyad`mfkbydweccfckaielfmbybt`l`mcodwanaxaxenbifxbzdsbxf`ftacfndkajfofgfg````````",
-"``````````a``teifgbubeftdvafccbgalamef`j`dbxcofkaqcodo`famdgdeanaidqanape``me`fiaianfk`m`mbwfdapaqfzffenfpc`bhfu`pftagagft`jddddfofofga`````````",
-"````````````fg`tbueibpf`dvevfbevbgfpfpcrenbxaxamfiananfkbiaxfpezezfxfkecbwbifzch`mezfiamdocochfi`lcobibibzfpfpbzcufjevccac`efgbubu`tej``````````",
-"`````````````tbu`rejf`aodidvdjfcagacbzbhaxdochfxanfzfpbiaichanbychchchbt`lfzbhezcofxaiaichchaufzc`fxch`jdoffenefbgalbgbcbccceiddfo`y`r``````````",
-"```````````````rejeifodvdvajacbcccccdgbibxfpdgaufuezfz`manfzanfxaufp`fcodocoezchchenauchfxchefff`jagffbxenbzbi`dftbc`edz`df`buddbudd````````````",
-"```````````````y`rbuf`diaoajacbgevevcrfpfpfp`afffffc`faqfxchchfzc`dgfxdgbjfxaiaiancofxfpcodg`bffds`adgbxbzbz`e`v`vftbeev`zajf`ddei`t````````````",
-"`````````````````yfoeyfbaj`zajbgevakalbxcccu`e`b`bc`efbic`axaxchfxfpezchbjfcdodochfx`fanbzcuaufxcv`bfp`pef`e`eeoeoaof`f`ajdv`rfn`r``````````````",
-"``````````````````cn`rejeidvacdveoak`vccccfffpbibx`ac``jcucu`jfxbifxfpfxfxfxcodgc`aybiai`i`jch`j`a`edjagacbc`x`zfnddajf`eodvey`t````````````````",
-"``````````````````eybfej`rejfoaoevcccc`v`xbcc`c`fffpbicubxcucuffc`cu`pfcfpdgbhdoaucu`jcuffbxbx`bcr`efjagbcfjeodkeodkevddfobpcney````````````````",
-"````````````````````eyejbpejbpdddvaoaodjbcagbcft`jefchfxbiauc``a`ac`c`fc`afcfccufcenfp`jfffp`jdsfpftcycrbcccdz`zdkbebebfddbf`r``````````````````",
-"``````````````````````cnbpeyfofofodudd`eacdjafcr`d`dcufpffef`jca`bff`jfcbxcuc`dsaecv`d`jds`dcy`vag`xagbcfteo`zbpfnbpbfej`r`r````````````````````",
-"````````````````````````d`bpddbfbebgak`zfj`z`kdsdsbxffff`bdj`b`b`jcucucudgcueffp`b`bcacacvcvctct`dagcyfjccevddeoeybpd`ej`r``````````````````````",
-"``````````````````````````eyddbp`r`k`z`zdzem`kfjfj`b`d`vdjcyctctcactctcv`dcr`bcvctaeaecv`b`jfjdsccakcveoakbedz`zd`ahewah````````````````````````",
-"````````````````````````````ewcnbnbndd`kdzfjdzemakemae`zcv`dcaaeaecy`e`acadsag`vaeaecvakaffjcacrbcajfj`zbp`z`kfnewewcn``````````````````````````",
-"```````````````````````````````rewbfbp`z`zbedzafcyakembeafctcaak`d`v`acvaeae`dff`dag`baeakfj`zcy`zbm`z`z`k`zbfd`ahcn````````````````````````````",
-"```````````````````````````````````sd`eyfnbmeobm`zdz`saf`v`k`kcvbcag`bcvemaeaecvagcyaecvevafaf`zem`zd`dkbmd`bfbf````````````````````````````````",
-"````````````````````````````````````ahewfoewbf`k`z`zdz`zafemememcvaf`kdz`vafaeafakemembmbpafdkdkbp`k`zbp`seyah``````````````````````````````````",
-"`````````````````````````````````````````sah`zewdk`z`zdzaeaf`kemdzakakaeae`kemakemeo`z`kemdkbfbpdk`kd`d`bn``````````````````````````````````````",
-"````````````````````````````````````````````ahbnbf`zd`d``sbm`kdz`sdkdk`sae`k`zbmd``k`sbmdz`kbnah`s`sbn``````````````````````````````````````````",
-"````````````````````````````````````````````````bncnbmbnd`dkdkdkdkbm`sbnbnbndzd`d``sbm`sbfd`bnewah``````````````````````````````````````````````",
-"``````````````````````````````````````````````````````cnd``s`s`sahd`dkbmbnbn`sbnd`bnbn`newah````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````````````ahcn`sbnahewbn`sewahbn````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass2.xpm b/hacks/images/bubbles/glass2.xpm
deleted file mode 100644 (file)
index ee236e5..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/* XPM */
-static char *glass2[] = {
-/* width height ncolors chars_per_pixel */
-"12 12 75 2",
-/* colors */
-"`` c None",
-"`a c #25254C",
-"`b c #23234A",
-"`c c #212148",
-"`d c #2E2E62",
-"`e c #29293F",
-"`f c #272754",
-"`g c #414188",
-"`h c #20202C",
-"`i c #2E2E68",
-"`j c #242447",
-"`k c #25253E",
-"`l c #B9B9ED",
-"`m c #6767A3",
-"`n c #2B2B47",
-"`o c #29295C",
-"`p c #252544",
-"`q c #29295F",
-"`r c #1F1F3E",
-"`s c #2F2F68",
-"`t c #2D2D66",
-"`u c #30305F",
-"`v c #4C4C6D",
-"`w c #2B2B53",
-"`x c #2F2F6E",
-"`y c #34346C",
-"`z c #3B3B55",
-"a` c #303068",
-"aa c #2C2C64",
-"ab c #26264A",
-"ac c #5D5D97",
-"ad c #363674",
-"ae c #3C3C66",
-"af c #252556",
-"ag c #30306E",
-"ah c #3E3E54",
-"ai c #2C2C6A",
-"aj c #4C4C68",
-"ak c #20204A",
-"al c #2E2E5B",
-"am c #343464",
-"an c #16162C",
-"ao c #292938",
-"ap c #333384",
-"aq c #3C3C6F",
-"ar c #1E1E37",
-"as c #38386B",
-"at c #242454",
-"au c #31316E",
-"av c #181831",
-"aw c #232349",
-"ax c #272739",
-"ay c #23234C",
-"az c #37377A",
-"b` c #1E1E3D",
-"ba c #313174",
-"bb c #3C3C78",
-"bc c #383874",
-"bd c #1B1B33",
-"be c #40407F",
-"bf c #292944",
-"bg c #212150",
-"bh c #2D2D76",
-"bi c #191937",
-"bj c #313169",
-"bk c #22224D",
-"bl c #18182C",
-"bm c #2D2D65",
-"bn c #232344",
-"bo c #292961",
-"bp c #27275F",
-"bq c #242452",
-"br c #484868",
-"bs c #262657",
-"bt c #242455",
-/* pixels */
-"`````````vajajajbr``````",
-"````ahaeae`yacasaq`zah``",
-"`````w`f`dagacbb`y`u`u``",
-"```naybm`i`mbabcaaamawar",
-"``bf`ua`adbpaz`gai`ial`j",
-"``bnbgbjaz`xbhapboaa`uav",
-"``b`aybtbcaube`x`s`tbqbd",
-"``anbiakafbb`l`i`q`o`rbl",
-"`````rakbkaf`wbsay`c`k``",
-"````ao`pay`aatab`bar`h``",
-"````````ax`e`n`kax``````",
-"````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass3.xpm b/hacks/images/bubbles/glass3.xpm
deleted file mode 100644 (file)
index e22c86c..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/* XPM */
-static char *glass3[] = {
-/* width height ncolors chars_per_pixel */
-"14 14 90 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #383858",
-"`c c #2E2E62",
-"`d c #292967",
-"`e c #3535A1",
-"`f c #272751",
-"`g c #23234D",
-"`h c #29293F",
-"`i c #353579",
-"`j c #272754",
-"`k c #20202C",
-"`l c #2E2E3D",
-"`m c #242447",
-"`n c #25253E",
-"`o c #3E3E67",
-"`p c #1C1C3F",
-"`q c #6767A3",
-"`r c #2B2B47",
-"`s c #29295C",
-"`t c #2B2B61",
-"`u c #29295F",
-"`v c #1F1F3E",
-"`w c #2F2F68",
-"`x c #2D2D66",
-"`y c #222251",
-"`z c #2D2D69",
-"a` c #33335B",
-"aa c #37374B",
-"ab c #22223D",
-"ac c #28285A",
-"ad c #2B2B53",
-"ae c #2C2C36",
-"af c #424266",
-"ag c #232337",
-"ah c #525265",
-"ai c #32326A",
-"aj c #1B1B2F",
-"ak c #303068",
-"al c #232351",
-"am c #363674",
-"an c #3C3C66",
-"ao c #252556",
-"ap c #27275B",
-"aq c #363663",
-"ar c #4C4C68",
-"as c #2E2E5B",
-"at c #29294C",
-"au c #27274A",
-"av c #252548",
-"aw c #16162C",
-"ax c #292938",
-"ay c #353572",
-"az c #38386B",
-"b` c #4C4C85",
-"ba c #2F2F83",
-"bb c #20203F",
-"bc c #313174",
-"bd c #333379",
-"be c #444458",
-"bf c #272756",
-"bg c #47477C",
-"bh c #32326E",
-"bi c #1B1B33",
-"bj c #30306C",
-"bk c #40407F",
-"bl c #23233E",
-"bm c #141422",
-"bn c #343473",
-"bo c #2D2D76",
-"bp c #2E2E6D",
-"bq c #40406E",
-"br c #21213F",
-"bs c #8080BA",
-"bt c #25255A",
-"bu c #1B1B39",
-"bv c #35356D",
-"bw c #262651",
-"bx c #18182C",
-"by c #373786",
-"bz c #2B2B63",
-"c` c #202037",
-"ca c #1C1C33",
-"cb c #242452",
-"cc c #484868",
-"cd c #1F1F43",
-"ce c #2C2C5D",
-"cf c #3535DD",
-"cg c #262657",
-"ch c #242455",
-/* pixels */
-"``````````arccaharcc````````",
-"``````bea``obqbqbqanafaa````",
-"`````ladaqbv`qbsbgai`ca``b``",
-"````a`a`asaib`bhb`bhakasau``",
-"``c``j`c`d`dbd`eb`am`wce`aca",
-"``bxasaobt`ibdbycf`iay`u`abx",
-"``bl`a`t`ubnbdbocfbcbt`cbwbu",
-"``bi`fch`sbhbkbabp`z`u`w`gaj",
-"``bm`a`a`u`xbjaibgbzcgbf`paw",
-"````agbralazap`t`ucbacbbaj``",
-"`````kbrcdcbcbcgbw`y`vab`k``",
-"``````axbrauatav`r`m`n`n````",
-"``````````ax`h`r`nae````````",
-"````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass4.xpm b/hacks/images/bubbles/glass4.xpm
deleted file mode 100644 (file)
index 6dc1aad..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-/* XPM */
-static char *glass4[] = {
-/* width height ncolors chars_per_pixel */
-"20 20 151 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #25254C",
-"`c c #383858",
-"`d c #23234A",
-"`e c #212148",
-"`f c #2E2E62",
-"`g c #292967",
-"`h c #3535A1",
-"`i c #29293F",
-"`j c #2C2C63",
-"`k c #2A2A61",
-"`l c #33334C",
-"`m c #353579",
-"`n c #272754",
-"`o c #20202C",
-"`p c #2E2E3D",
-"`q c #2E2E68",
-"`r c #242447",
-"`s c #2C2C66",
-"`t c #222245",
-"`u c #181824",
-"`v c #25253E",
-"`w c #B9B9ED",
-"`x c #1C1C3F",
-"`y c #6767A3",
-"`z c #2B2B47",
-"a` c #272743",
-"aa c #222248",
-"ab c #292931",
-"ac c #29295C",
-"ad c #1D1D39",
-"ae c #252544",
-"af c #2B2B61",
-"ag c #29295F",
-"ah c #1F1F3E",
-"ai c #2F2F68",
-"aj c #2D2D66",
-"ak c #30305F",
-"al c #2C2C5B",
-"am c #11111C",
-"an c #262655",
-"ao c #31316D",
-"ap c #4C4C6D",
-"aq c #222251",
-"ar c #323264",
-"as c #43436E",
-"at c #212146",
-"au c #37374B",
-"av c #22223D",
-"aw c #252536",
-"ax c #1D1D42",
-"ay c #2A2A5C",
-"az c #28285A",
-"b` c #2B2B53",
-"ba c #333372",
-"bb c #2F2F6E",
-"bc c #2B2B3F",
-"bd c #2C2C36",
-"be c #232337",
-"bf c #34346C",
-"bg c #525265",
-"bh c #32326A",
-"bi c #303068",
-"bj c #21214C",
-"bk c #2C2C64",
-"bl c #292957",
-"bm c #232351",
-"bn c #26264A",
-"bo c #2F2F60",
-"bp c #5D5D97",
-"bq c #363674",
-"br c #3C3C66",
-"bs c #252556",
-"bt c #30306E",
-"bu c #414178",
-"bv c #2C2C6A",
-"bw c #20204A",
-"bx c #2E2E5B",
-"by c #29294C",
-"bz c #242451",
-"c` c #27274A",
-"ca c #343464",
-"cb c #4F4F64",
-"cc c #252548",
-"cd c #292938",
-"ce c #333384",
-"cf c #3C3C6F",
-"cg c #353572",
-"ch c #1E1E37",
-"ci c #38386B",
-"cj c #414156",
-"ck c #242454",
-"cl c #181831",
-"cm c #232349",
-"cn c #272739",
-"co c #4C4C85",
-"cp c #2F2F83",
-"cq c #28285B",
-"cr c #36366C",
-"cs c #48486D",
-"ct c #23234C",
-"cu c #37377A",
-"cv c #20203F",
-"cw c #26265C",
-"cx c #313174",
-"cy c #4C4C60",
-"cz c #27273F",
-"d` c #3C3C78",
-"da c #48485C",
-"db c #383874",
-"dc c #333379",
-"dd c #444458",
-"de c #272756",
-"df c #32326E",
-"dg c #1B1B33",
-"dh c #1E1E2C",
-"di c #30306C",
-"dj c #40407F",
-"dk c #292944",
-"dl c #212150",
-"dm c #141422",
-"dn c #323271",
-"do c #2D2D76",
-"dp c #2E2E6D",
-"dq c #21213F",
-"dr c #8080BA",
-"ds c #23232D",
-"dt c #25255A",
-"du c #35356D",
-"dv c #191937",
-"dw c #262651",
-"dx c #313169",
-"dy c #2C2C6E",
-"dz c #22224D",
-"e` c #18182C",
-"ea c #373786",
-"eb c #232344",
-"ec c #2B2B63",
-"ed c #292961",
-"ee c #202037",
-"ef c #1C1C33",
-"eg c #242452",
-"eh c #45456F",
-"ei c #535380",
-"ej c #1F1F43",
-"ek c #2C2C5D",
-"el c #3535DD",
-"em c #262657",
-"en c #393963",
-"eo c #242455",
-/* pixels */
-"``````````````cycyapbgcbcybg````````````",
-"``````````dacycsehcsehapehcsddcj````````",
-"````````au`cenbraseicibucicibrendd``````",
-"``````auau`ccacidudrbpdrcfcrarakau`p````",
-"`````p`lbx`nbhbfdxcobpcodjdu`sakalb`bd``",
-"`````zbybxbocicgbvbbdn`ydbdfbfekbxbybe``",
-"``dh`r`rbl`faidydndn`hd`dnbtecafakdwah`o",
-"``dhdqejcqajdfcg`meacu`hbqdfdibi`jblbndh",
-"``ch`rbxemaidudnbq`geldcbqdbdn`jafbxbnav",
-"``dm`x`bdxdxcwbqdycpdocxdcbvedbkcqalebdg",
-"```uccctdzbsag`qbqdpeacxbtaidiagekdwcvdm",
-"``dmcl`xeoandtdfbv`wdjcediecbiaydectatch",
-"``amdvcm`xaf`kagaodi`qdbbaecanazejdvdv`u",
-"````e``xcvandlcqckdtcgagcq`qaqay`tbjef``",
-"````dsclaxbwdzdebsckb`acegbjeg`eaaadds``",
-"``````eeeeejbzanegdw`abmdl`b`rcnavaw````",
-"````````eeczbc`b`dby`dbya``eae`iaw``````",
-"``````````bdawa`dkc`aeae`i`i`vab````````",
-"``````````````bd`pcdcdbdcdbd````````````",
-"````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass5.xpm b/hacks/images/bubbles/glass5.xpm
deleted file mode 100644 (file)
index 72aafe7..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/* XPM */
-static char *glass5[] = {
-/* width height ncolors chars_per_pixel */
-"24 24 164 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #25254C",
-"`c c #383858",
-"`d c #23234A",
-"`e c #212148",
-"`f c #2E2E62",
-"`g c #292967",
-"`h c #3535A1",
-"`i c #272751",
-"`j c #23234D",
-"`k c #29293F",
-"`l c #2C2C63",
-"`m c #2A2A61",
-"`n c #33334C",
-"`o c #272754",
-"`p c #414188",
-"`q c #20202C",
-"`r c #2E2E3D",
-"`s c #1C1C28",
-"`t c #2E2E68",
-"`u c #242447",
-"`v c #2C2C66",
-"`w c #181824",
-"`x c #25253E",
-"`y c #161622",
-"`z c #B9B9ED",
-"a` c #3E3E67",
-"aa c #1C1C3F",
-"ab c #6767A3",
-"ac c #2B2B47",
-"ad c #222248",
-"ae c #292931",
-"af c #29295C",
-"ag c #252544",
-"ah c #1E1E47",
-"ai c #2B2B61",
-"aj c #29295F",
-"ak c #1F1F3E",
-"al c #2F2F68",
-"am c #2D2D66",
-"an c #30305F",
-"ao c #2C2C5B",
-"ap c #11111C",
-"aq c #262655",
-"ar c #31316D",
-"as c #4C4C6D",
-"at c #323264",
-"au c #2D2D69",
-"av c #33335B",
-"aw c #212146",
-"ax c #37374B",
-"ay c #22223D",
-"az c #252536",
-"b` c #1D1D42",
-"ba c #28285A",
-"bb c #2B2B53",
-"bc c #333372",
-"bd c #2F2F6E",
-"be c #2C2C36",
-"bf c #424266",
-"bg c #232337",
-"bh c #2F2FB0",
-"bi c #34346C",
-"bj c #525265",
-"bk c #32326A",
-"bl c #1B1B2F",
-"bm c #3B3B55",
-"bn c #303068",
-"bo c #21214C",
-"bp c #2C2C64",
-"bq c #292957",
-"br c #26264A",
-"bs c #202044",
-"bt c #5D5D97",
-"bu c #2B2B5C",
-"bv c #363674",
-"bw c #3C3C66",
-"bx c #252556",
-"by c #30306E",
-"bz c #3E3E54",
-"c` c #2C2C6A",
-"ca c #25252E",
-"cb c #27275B",
-"cc c #363663",
-"cd c #4C4C68",
-"ce c #20204A",
-"cf c #2E2E5B",
-"cg c #29294C",
-"ch c #242451",
-"ci c #27274A",
-"cj c #343464",
-"ck c #252548",
-"cl c #16162C",
-"cm c #292938",
-"cn c #333384",
-"co c #3C3C6F",
-"cp c #353572",
-"cq c #1E1E37",
-"cr c #38386B",
-"cs c #414156",
-"ct c #242454",
-"cu c #31316E",
-"cv c #181831",
-"cw c #232349",
-"cx c #272739",
-"cy c #4C4C85",
-"cz c #2F2F83",
-"d` c #28285B",
-"da c #292952",
-"db c #48486D",
-"dc c #23234C",
-"dd c #37377A",
-"de c #1E1E3D",
-"df c #26265C",
-"dg c #313174",
-"dh c #4C4C60",
-"di c #27273F",
-"dj c #3C3C78",
-"dk c #48485C",
-"dl c white",
-"dm c #383874",
-"dn c #333379",
-"do c #444458",
-"dp c #272756",
-"dq c #1B1B33",
-"dr c #1E1E2C",
-"ds c #30306C",
-"dt c #40407F",
-"du c #292944",
-"dv c #212150",
-"dw c #23233E",
-"dx c #343473",
-"dy c #323271",
-"dz c #2D2D76",
-"e` c #2E2E6D",
-"ea c #40406E",
-"eb c #21213F",
-"ec c #8080BA",
-"ed c #23232D",
-"ee c #25255A",
-"ef c #35356D",
-"eg c #191937",
-"eh c #262651",
-"ei c #313169",
-"ej c #2C2C6E",
-"ek c #22224D",
-"el c #18182C",
-"em c #373786",
-"en c #2D2D65",
-"eo c #232344",
-"ep c #2B2B63",
-"eq c #292961",
-"er c #27275F",
-"es c #1C1C33",
-"et c #242452",
-"eu c #45456F",
-"ev c #484868",
-"ew c #1F1F43",
-"ex c #2C2C5D",
-"ey c #3535DD",
-"ez c #262657",
-"f` c #393963",
-"fa c #242455",
-/* pixels */
-"``````````````````dkdhbjbjbjbjdh````````````````",
-"``````````````csasascdevcdascddbevdh````````````",
-"``````````dodobfa`dbeubfeueueacrbfbfcsax````````",
-"````````bzcsbwf`bwcrbicobteccratcof`bmbzbz``````",
-"```````n`navavanefcjbibt`zcrcobicratccf``nax````",
-"``````acbbao`oat`fambycobtdldjbkbialan`can`n````",
-"````dicg`icj`fbi`fefdyauarabbybiefbnaicfbbcg`x``",
-"````ac`udcbqenbk`tdyabczdgdxdmdtbpcpcjeicwcgcq``",
-"```wdq`acfaiefcpe`bydn`hcyeydmc`ambcef`fcf`u`y`s",
-"```ydudaandfbnaubvdgerbhdd`h`pdyc`cu`tezcf`b`ubl",
-"``elad`abqezbndmdsbccncnczeydnbvdmdxamep`fcgcv`w",
-"```weoetdv`leidfdd`gbddzdzdncncneqeebpexan`ucvap",
-"``elcwdaexehd`epaubd`hdz`hcz`gdycucueeba`oekcl`w",
-"``eldebsdcbxfaeedmejcuemdtcnbdbyalafambuet`bdq`w",
-"```yclakboce`fbx`mcper`veccyauei`mbncbaqdpdaesap",
-"````clakegbsceetbxdsdjdt`zbt`tctajdvafahakayel``",
-"````eldqdeebetboenepetezbnbxencb`lbaeteoaabldr``",
-"``````blakb`ceetekambxctbbafezctdcbo`eew`xcq````",
-"``````ed`qakbsawekchchchetd``jboceaddwcxesed````",
-"````````cmazag`xdcek`bchctetbrci`deocqbg`q``````",
-"```````````qbgayckaybr`uacek`beo`x`xazca````````",
-"``````````````aecxdi`kagacag`xcxcxcm````````````",
-"``````````````````ca`rcmbebebeae````````````````",
-"````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass6.xpm b/hacks/images/bubbles/glass6.xpm
deleted file mode 100644 (file)
index 63b01d0..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/* XPM */
-static char *glass6[] = {
-/* width height ncolors chars_per_pixel */
-"30 30 181 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #25254C",
-"`c c #383858",
-"`d c #23234A",
-"`e c #212148",
-"`f c #2E2E62",
-"`g c #3535A1",
-"`h c #23234D",
-"`i c #29293F",
-"`j c #2C2C63",
-"`k c #2A2A61",
-"`l c #33334C",
-"`m c #353579",
-"`n c #272754",
-"`o c #20202C",
-"`p c #2E2E3D",
-"`q c #1C1C28",
-"`r c #2E2E68",
-"`s c #242447",
-"`t c #2C2C66",
-"`u c #222245",
-"`v c #181824",
-"`w c #25253E",
-"`x c #161622",
-"`y c #B9B9ED",
-"`z c #3E3E67",
-"a` c #1C1C3F",
-"aa c #6767A3",
-"ab c #2B2B47",
-"ac c #272743",
-"ad c #292931",
-"ae c #29295C",
-"af c #1D1D39",
-"ag c #252544",
-"ah c #1E1E47",
-"ai c #2B2B61",
-"aj c #29295F",
-"ak c #1F1F3E",
-"al c #2F2F68",
-"am c #2D2D66",
-"an c #30305F",
-"ao c #2C2C5B",
-"ap c #11111C",
-"aq c #262655",
-"ar c #31316D",
-"as c #4C4C6D",
-"at c #222251",
-"au c #323264",
-"av c #2D2D69",
-"aw c #33335B",
-"ax c #43436E",
-"ay c #2B2B67",
-"az c #212146",
-"b` c #37374B",
-"ba c #22223D",
-"bb c #252536",
-"bc c #1D1D42",
-"bd c #28285A",
-"be c #2B2B53",
-"bf c #333372",
-"bg c #2F2F6E",
-"bh c #2C2C36",
-"bi c #424266",
-"bj c #232337",
-"bk c #2F2FB0",
-"bl c #34346C",
-"bm c #525265",
-"bn c #32326A",
-"bo c #1B1B2F",
-"bp c #3B3B55",
-"bq c #303068",
-"br c #21214C",
-"bs c #2C2C64",
-"bt c #292957",
-"bu c #232351",
-"bv c #26264A",
-"bw c #2F2F60",
-"bx c #202044",
-"by c #5D5D97",
-"bz c #2B2B5C",
-"c` c #363674",
-"ca c #3C3C66",
-"cb c #252556",
-"cc c #30306E",
-"cd c #3E3E54",
-"ce c #414178",
-"cf c #2C2C6A",
-"cg c #2F2F4F",
-"ch c #25252E",
-"ci c #27275B",
-"cj c #363663",
-"ck c #4C4C68",
-"cl c #20204A",
-"cm c #2E2E5B",
-"cn c #29294C",
-"co c #242451",
-"cp c #27274A",
-"cq c #343464",
-"cr c #4F4F64",
-"cs c #252548",
-"ct c #16162C",
-"cu c #292938",
-"cv c #333384",
-"cw c #3C3C6F",
-"cx c #353572",
-"cy c #1E1E37",
-"cz c #38386B",
-"d` c #414156",
-"da c #242454",
-"db c #31316E",
-"dc c #181831",
-"dd c #232349",
-"de c #272739",
-"df c #393979",
-"dg c #4C4C85",
-"dh c #2F2F83",
-"di c #28285B",
-"dj c #292952",
-"dk c #36366C",
-"dl c #48486D",
-"dm c #23234C",
-"dn c #37377A",
-"do c #20203F",
-"dp c #1E1E3D",
-"dq c #26265C",
-"dr c #313174",
-"ds c #4C4C60",
-"dt c #27273F",
-"du c #3C3C78",
-"dv c #48485C",
-"dw c white",
-"dx c #383874",
-"dy c #333379",
-"dz c #444458",
-"e` c #272756",
-"ea c #47477C",
-"eb c #32326E",
-"ec c #1E1E2C",
-"ed c #30306C",
-"ee c #40407F",
-"ef c #292944",
-"eg c #212150",
-"eh c #23233E",
-"ei c #141422",
-"ej c #343473",
-"ek c #323271",
-"el c #2D2D76",
-"em c #2E2E6D",
-"en c #40406E",
-"eo c #21213F",
-"ep c #272731",
-"eq c #8080BA",
-"er c #23232D",
-"es c #25255A",
-"et c #1B1B39",
-"eu c #35356D",
-"ev c #191937",
-"ew c #262651",
-"ex c #313169",
-"ey c #2C2C6E",
-"ez c #22224D",
-"f` c #18182C",
-"fa c #373786",
-"fb c #2D2D65",
-"fc c #232344",
-"fd c #2B2B63",
-"fe c #292961",
-"ff c #27275F",
-"fg c #202037",
-"fh c #1C1C33",
-"fi c #242452",
-"fj c #45456F",
-"fk c #484868",
-"fl c #535380",
-"fm c #1F1F43",
-"fn c #2C2C5D",
-"fo c #353573",
-"fp c #262657",
-"fq c #393963",
-"fr c #242455",
-/* pixels */
-"````````````````````````bmbmbmbmbmbmbm``````````````````````",
-"``````````````````dscrasasascrckasasasfkckbm````````````````",
-"````````````````dsdsdzbifjfjfjfjaxaxfjfjckdzdv``````````````",
-"````````````d`dvfqdzenfkfjencaendlaxaxcabibi`zdvb```````````",
-"``````````cd`zaw`cfqcacaceflczbydg`zencjcwca`cbpbpcd````````",
-"````````d`cdb``cawcqczdkeubycwbyczdwcwczcqaucaawb`b`b```````",
-"````````b``lcmcqaoczaublbndgeqdfeqczdgbn`jcmanfnawcg`l``````",
-"``````cu`w`wcmcmcqblardxeu`yceareqdueualbleuexdjcmbeba`p````",
-"````chabcg`acmbwbqczaiebcfdfdgekeqdudxebcxblbncmcm`ababjer``",
-"`````o`aeodmaobdalbn`rcfdf`mdhdrdyeaejdubscxffbwbwdd`b`w`q``",
-"````fhbadjcmbq`jcxcxekemeydr`gdy`geeekek`t`rexe`e``ndjdcdc``",
-"```q`veocnbtdialbleb`rfo`medfadnelbkc`bffeedeufn`jcmfmbvfg`x",
-"``ecbo`sbze`feaeayexavbgej`gbkdyeydhdudnemdbfdal`kfna``udc`v",
-"```xeieodjbtfpexfbc`avekbg`gbkelfa`g`gdxcxcfdxamfpbtcpfcdoap",
-"```vcya`btegex`kbldqdncfeycvdyelcv`gdycvfefeebaedianfmfcdc`q",
-"``fhcyetahfncobdbs`tbncfdybgcf`gdhcfavavav`tfraifnbtbteteoei",
-"```xdpaz`bbtcl`fesfbedfdekelbkdhaaavbgcf`jfe`fesbwez`bbxdcei",
-"```xfhdcbx`hfratbresfdedcfee`meedffded`t`tbqdiaee``nazazdcap",
-"`````vdp`sew`bbqaifpfpdbbsccdxdfekbyee`j`jdialbzfidmazafct``",
-"`````vbodpevbcaqbdatcb`tfdamar`ydg`taicbaje`dadaahaketevbo``",
-"`````qf`bjakdobdezegfbaidacibncxdgbddiajalatfibz`ubccyfh`q``",
-"``````chbjbcbcfmbdaediatcbfpfpajfpdaesfpbudmco`h`eewfhf`````",
-"`````````ocydp`waz`e`baqfiesfpdjfpfiaidacpewah`wafdpbb``````",
-"````````chfgfgfmddcofibdfi`bfi`ada`hegbu`h`seodtbafhec``````",
-"``````````cuepdo`wefdmfidd`b`hdae``bbvcn`dagakbabj`o````````",
-"````````````erbbdeefcsefcpabezcp`habef`sbx`wehbber``````````",
-"````````````````chbbba`ief`iacagabef`i`wba`wcu``````````````",
-"``````````````````chbb`p`p`w`w`pcu`p`icucuch````````````````",
-"````````````````````````adadcudeepadbh``````````````````````",
-"````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass7.xpm b/hacks/images/bubbles/glass7.xpm
deleted file mode 100644 (file)
index 750c251..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/* XPM */
-static char *glass7[] = {
-/* width height ncolors chars_per_pixel */
-"36 36 187 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #25254C",
-"`c c #383858",
-"`d c #23234A",
-"`e c #212148",
-"`f c #2E2E62",
-"`g c #292967",
-"`h c #3535A1",
-"`i c #272751",
-"`j c #23234D",
-"`k c #29293F",
-"`l c #2C2C63",
-"`m c #2A2A61",
-"`n c #33334C",
-"`o c #353579",
-"`p c #272754",
-"`q c #414188",
-"`r c #20202C",
-"`s c #2E2E3D",
-"`t c #1C1C28",
-"`u c #2E2E68",
-"`v c #242447",
-"`w c #2C2C66",
-"`x c #222245",
-"`y c #181824",
-"`z c #25253E",
-"a` c #161622",
-"aa c #B9B9ED",
-"ab c #3E3E67",
-"ac c #1C1C3F",
-"ad c #6767A3",
-"ae c #2B2B47",
-"af c #272743",
-"ag c #222248",
-"ah c #292931",
-"ai c #29295C",
-"aj c #1D1D39",
-"ak c #252544",
-"al c #1E1E47",
-"am c #2B2B61",
-"an c #29295F",
-"ao c #1F1F3E",
-"ap c #2F2F68",
-"aq c #2D2D66",
-"ar c #30305F",
-"as c #2C2C5B",
-"at c #11111C",
-"au c #262655",
-"av c #31316D",
-"aw c #4C4C6D",
-"ax c #222251",
-"ay c #323264",
-"az c #2D2D69",
-"b` c #33335B",
-"ba c #43436E",
-"bb c #2B2B67",
-"bc c #212146",
-"bd c #37374B",
-"be c #22223D",
-"bf c #252536",
-"bg c #1D1D42",
-"bh c #2A2A5C",
-"bi c #28285A",
-"bj c #2B2B53",
-"bk c #333372",
-"bl c #2F2F6E",
-"bm c #2B2B3F",
-"bn c #2C2C36",
-"bo c #424266",
-"bp c #232337",
-"bq c #2F2FB0",
-"br c #34346C",
-"bs c #525265",
-"bt c #32326A",
-"bu c #1B1B2F",
-"bv c #3B3B55",
-"bw c #303068",
-"bx c #21214C",
-"by c #2C2C64",
-"bz c #292957",
-"c` c #232351",
-"ca c #26264A",
-"cb c #2F2F60",
-"cc c #202044",
-"cd c #5D5D97",
-"ce c #2B2B5C",
-"cf c #363674",
-"cg c #3C3C66",
-"ch c #252556",
-"ci c #30306E",
-"cj c #3E3E54",
-"ck c #414178",
-"cl c #2C2C6A",
-"cm c #2F2F4F",
-"cn c #25252E",
-"co c #27275B",
-"cp c #363663",
-"cq c #4C4C68",
-"cr c #20204A",
-"cs c #2E2E5B",
-"ct c #29294C",
-"cu c #242451",
-"cv c #27274A",
-"cw c #343464",
-"cx c #4F4F64",
-"cy c #252548",
-"cz c #16162C",
-"d` c #292938",
-"da c #333384",
-"db c #3C3C6F",
-"dc c #353572",
-"dd c #1E1E37",
-"de c #38386B",
-"df c #414156",
-"dg c #242454",
-"dh c #31316E",
-"di c #181831",
-"dj c #232349",
-"dk c #272739",
-"dl c #393979",
-"dm c #4C4C85",
-"dn c #2F2F83",
-"do c #28285B",
-"dp c #292952",
-"dq c #48486D",
-"dr c #23234C",
-"ds c #37377A",
-"dt c #1E1E3D",
-"du c #26265C",
-"dv c #313174",
-"dw c #4C4C60",
-"dx c #27273F",
-"dy c #3C3C78",
-"dz c #48485C",
-"e` c white",
-"ea c #383874",
-"eb c #333379",
-"ec c #444458",
-"ed c #272756",
-"ee c #47477C",
-"ef c #32326E",
-"eg c #1B1B33",
-"eh c #1E1E2C",
-"ei c #30306C",
-"ej c #40407F",
-"ek c #292944",
-"el c #212150",
-"em c #23233E",
-"en c #141422",
-"eo c #343473",
-"ep c #323271",
-"eq c #2D2D76",
-"er c #2E2E6D",
-"es c #40406E",
-"et c #21213F",
-"eu c #272731",
-"ev c #8080BA",
-"ew c #23232D",
-"ex c #25255A",
-"ey c #1B1B39",
-"ez c #35356D",
-"f` c #191937",
-"fa c #262651",
-"fb c #313169",
-"fc c #2C2C6E",
-"fd c #22224D",
-"fe c #18182C",
-"ff c #373786",
-"fg c #2D2D65",
-"fh c #232344",
-"fi c #2B2B63",
-"fj c #292961",
-"fk c #27275F",
-"fl c #202037",
-"fm c #1C1C33",
-"fn c #242452",
-"fo c #45456F",
-"fp c #484868",
-"fq c #535380",
-"fr c #1F1F43",
-"fs c #2C2C5D",
-"ft c #3535DD",
-"fu c #353573",
-"fv c #262657",
-"fw c #393963",
-"fx c #242455",
-/* pixels */
-"````````````````````````````````bsbsbsdwbs``````````````````````````````",
-"````````````````````````dwbsdwcqcxbscqdwcqcxdzcxbs``````````````````````",
-"````````````````````fpcxawcqawcqawawcqawfocqcqawfpcqcx``````````````````",
-"``````````````````ececfpfpbofodqdqdqesbababadqfobafpeccj````````````````",
-"``````````````dfeccjabcgesbobaabadcgabbaeefobaesbob`cgdfcjcj````````````",
-"````````````cjdfbvcgfwfwcgcgesbrevdbcdeeesdedbfwdbcgcpbvbvdfcj``````````",
-"``````````bdbvbvcg`ccpcwdecwayckcdeecddydcbrezdecpayfwb`ar`ncjbd````````",
-"```````````saecmcscpcscwbwaqayeaevfqdyckbtdefbcpeicscbcscpb`cmae````````",
-"`````````scvbjcmar`pcsfb`fbt`fcidmdecdcdefdyezaqbraz`farasasarek`s``````",
-"``````bnaecmdjayb`fscsbwaqfbbwdyaacddheacdfudbfbbrbtfbaqbzcsdpafcmcn````",
-"```````s`zbj`basfs`fbr`f`wdcepeqcfcdfue`dmdvcdbkbkbrfb`fbwbjcaaect`z````",
-"`````taeaoccdrcsfdfgbwbr`ubb`oadebdndvebe`eadsejbyavfgcwbtcsdjbjaeddbf``",
-"````eudidjbzdp`pbzbwbbefeperfjdabldadada`qcfdveofi`wfb`fay`ped`aeteg`k``",
-"`````yflfadpcsfs`lbrdcav`wcfeoepdsda`qbqebdydsepfiaveabwbz`maybc`abufe``",
-"````fmek`aararaiambwbyefcfcfbqfkeqejds`gft`qeofuclfkbw`ubibtcs`bcv`vfe``",
-"```ydi`v`xdpbzamaxaqfkavererbkfffcfc`hdaeqdscffudcclbkfgapanayaodpczeg`t",
-"``atbpao`adpbzdo`mfgbtepereperfcbqft`g`hffbqbkdlfucleiaqfbdg`bctfrfmfea`",
-"```yetfh`xdpelfbfsfbaz`mdsci`gblffdneqftebda`hdafjfjfgbybwdgardr`xdia`at",
-"``ateheycccredfsaxfgcibbeffjejdafc`g`heqblfjepclazazap`wfscbbz`jacfrflat",
-"``atczey`v`afsacfsdgco`lbb`gebffereqft`qffdaer`wfgfifififjbzcu`i`adda`at",
-"````a`dtcy`xdrcrexfxfvfgeabkbbdhffadejdndnblclepapdubhaqfvcefn`xdtegfe``",
-"````a`dieybxfnbx`jfsfxfkfgfgdheoev`qdncdfcdlfjfi`wfiapcuchaubzaceydiat``",
-"````atdifr`abz`bbzbranaifneifufidyckejepckffepfibyaianancu`bbgbgagegen``",
-"````atczegeyf`bgascrcrelchanefdyfieaaa`qaq`uexduanbhfxaicecraoemajfea```",
-"```````tfebedtccaled`dcoaqdoamdeaiandydyaifi`mfbaqfdfnbh`pagfrddfmfe````",
-"```````t`reydidjagbzaxchanfnaianchch`lbhcoaichauc`chdoelbgbgbcegfm`r````",
-"`````````reyaoacetcrfn`afd`ffvchc`fvbjaianfvco`bdrdgbz`e`vbe`zeyeg``````",
-"```````````regacem`vccfnbxc`cu`jbifnfvcoc`bi`ich`adjac`xflajemew````````",
-"``````````ewbpbpdtaobcbc`jchbic``ac``afafafnfd`jfncybcdxdkbedd`r````````",
-"````````````d`ddbeakfh`kdrfd`b`b`jcudged`bcacvct`dcyccddewd``r``````````",
-"``````````````eubndddxdxakaecvcaae`ecaagaecvafcabcfhbp`keucn````````````",
-"``````````````````d`flem`z`s`v`kbc`bekaeagaeetafekd`bmbf````````````````",
-"`````````````````````s`zdk`zae`kdxakaeekek`zekbfdkd`bn``````````````````",
-"````````````````````````bnbmd`dkdk`sbndxd`bmbfbnah``````````````````````",
-"````````````````````````````````cnbneu`sah``````````````````````````````",
-"````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass8.xpm b/hacks/images/bubbles/glass8.xpm
deleted file mode 100644 (file)
index 0fcd41b..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-/* XPM */
-static char *glass8[] = {
-/* width height ncolors chars_per_pixel */
-"44 44 189 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #25254C",
-"`c c #383858",
-"`d c #23234A",
-"`e c #212148",
-"`f c #2E2E62",
-"`g c #292967",
-"`h c #3535A1",
-"`i c #272751",
-"`j c #23234D",
-"`k c #29293F",
-"`l c #2C2C63",
-"`m c #2A2A61",
-"`n c #33334C",
-"`o c #353579",
-"`p c #272754",
-"`q c #414188",
-"`r c #20202C",
-"`s c #2E2E3D",
-"`t c #1C1C28",
-"`u c #2E2E68",
-"`v c #242447",
-"`w c #2C2C66",
-"`x c #222245",
-"`y c #181824",
-"`z c #25253E",
-"a` c #161622",
-"aa c #B9B9ED",
-"ab c #3E3E67",
-"ac c #1C1C3F",
-"ad c #6767A3",
-"ae c #2B2B47",
-"af c #272743",
-"ag c #222248",
-"ah c #292931",
-"ai c #29295C",
-"aj c #1D1D39",
-"ak c #252544",
-"al c #1E1E47",
-"am c #2B2B61",
-"an c #29295F",
-"ao c #1F1F3E",
-"ap c #2F2F68",
-"aq c #2D2D66",
-"ar c #30305F",
-"as c #2C2C5B",
-"at c #11111C",
-"au c #262655",
-"av c #31316D",
-"aw c #4C4C6D",
-"ax c #222251",
-"ay c #323264",
-"az c #2D2D69",
-"b` c #33335B",
-"ba c #43436E",
-"bb c #2B2B67",
-"bc c #212146",
-"bd c #37374B",
-"be c #22223D",
-"bf c #252536",
-"bg c #1D1D42",
-"bh c #2A2A5C",
-"bi c #28285A",
-"bj c #2B2B53",
-"bk c #333372",
-"bl c #2F2F6E",
-"bm c #2B2B3F",
-"bn c #2C2C36",
-"bo c #424266",
-"bp c #232337",
-"bq c #2F2FB0",
-"br c #34346C",
-"bs c #525265",
-"bt c #32326A",
-"bu c #1B1B2F",
-"bv c #3B3B55",
-"bw c #303068",
-"bx c #21214C",
-"by c #2C2C64",
-"bz c #292957",
-"c` c #232351",
-"ca c #26264A",
-"cb c #2F2F60",
-"cc c #202044",
-"cd c #5D5D97",
-"ce c #2B2B5C",
-"cf c #363674",
-"cg c #3C3C66",
-"ch c #252556",
-"ci c #30306E",
-"cj c #3E3E54",
-"ck c #414178",
-"cl c #2C2C6A",
-"cm c #2F2F4F",
-"cn c #25252E",
-"co c #27275B",
-"cp c #363663",
-"cq c #4C4C68",
-"cr c #20204A",
-"cs c #2E2E5B",
-"ct c #29294C",
-"cu c #242451",
-"cv c #27274A",
-"cw c #343464",
-"cx c #4F4F64",
-"cy c #252548",
-"cz c #16162C",
-"d` c #292938",
-"da c #333384",
-"db c #3C3C6F",
-"dc c #353572",
-"dd c #1E1E37",
-"de c #38386B",
-"df c #414156",
-"dg c #242454",
-"dh c #31316E",
-"di c #181831",
-"dj c #232349",
-"dk c #272739",
-"dl c #393979",
-"dm c #4C4C85",
-"dn c #2F2F83",
-"do c #28285B",
-"dp c #292952",
-"dq c #36366C",
-"dr c #48486D",
-"ds c #23234C",
-"dt c #37377A",
-"du c #20203F",
-"dv c #1E1E3D",
-"dw c #26265C",
-"dx c #313174",
-"dy c #4C4C60",
-"dz c #27273F",
-"e` c #3C3C78",
-"ea c #48485C",
-"eb c white",
-"ec c #383874",
-"ed c #333379",
-"ee c #444458",
-"ef c #272756",
-"eg c #47477C",
-"eh c #32326E",
-"ei c #1B1B33",
-"ej c #1E1E2C",
-"ek c #30306C",
-"el c #40407F",
-"em c #292944",
-"en c #212150",
-"eo c #23233E",
-"ep c #141422",
-"eq c #343473",
-"er c #323271",
-"es c #2D2D76",
-"et c #2E2E6D",
-"eu c #40406E",
-"ev c #21213F",
-"ew c #272731",
-"ex c #8080BA",
-"ey c #23232D",
-"ez c #25255A",
-"f` c #1B1B39",
-"fa c #35356D",
-"fb c #191937",
-"fc c #262651",
-"fd c #313169",
-"fe c #2C2C6E",
-"ff c #22224D",
-"fg c #18182C",
-"fh c #373786",
-"fi c #2D2D65",
-"fj c #232344",
-"fk c #2B2B63",
-"fl c #292961",
-"fm c #27275F",
-"fn c #202037",
-"fo c #1C1C33",
-"fp c #242452",
-"fq c #45456F",
-"fr c #484868",
-"fs c #535380",
-"ft c #1F1F43",
-"fu c #2C2C5D",
-"fv c #3535DD",
-"fw c #353573",
-"fx c #262657",
-"fy c #393963",
-"fz c #242455",
-/* pixels */
-"````````````````````````````````````````````bs``````````````````````````````````````````",
-"````````````````````````````````dybseabsawbsbscxawcxbsdybs``````````````````````````````",
-"````````````````````````````eedycqcqcqdrcxawcqawawawawfrfrcxcq``````````````````````````",
-"````````````````````````eadyfrdybafrfqawawfqdrawawfrfrdrawcqeaeeee``````````````````````",
-"````````````````````eeeebofrboawbofqdrbadrfqeufqfqbababafqfrbobobocjee``````````````````",
-"``````````````````dfeebvfybvcgbaboeueueueuababfqdefqegeuabeufybocgdfeacj````````````````",
-"````````````````bvbo`nfydffybocgcgdedbegfsfqeuegexeudbdqdedbdeabfybvcjdfcj``````````````",
-"``````````````bdcjbvfyfyb`defyfydedbckexexebckdmaqdbdbdbayaydeaycpbvab`ccjbd````````````",
-"`````````````s`ccjb`b`b`b`ardededeaydcexadckaddbdbaadqdqbrbtbrayb`cpb``c`ccm`n``````````",
-"```````````n`n`ncmcsb`cpascpegfi`ucwbrcdcdebehaddbbrdmfaayaqcbb`arcscs`ccmb`ae`s````````",
-"``````````aeafcmaeasfu`paraycbbtfd`lavecckegcdcdaaec`qfa`ufa`f`ubwarbzb`cscs`kbm````````",
-"````````ewaectfjbzcsb`arcwbtdcapec`fdcaadmcd`ueqaddmekecav`fapbtecbwdparbjcmaoct`n``````",
-"````````bddzcmbjdparcscb`fdbfdfidcdlcieqbbdlciebexeletegbwbk`ubtbwfufucsdpcm`zctbm``````",
-"```````ycmdjdpctauaramefcsbwapehekereddleledcfdmdmdmerelecaqaqbrehcbbzarfc`vbjcyem`r````",
-"``````bpaobefjccbzasenbw`ufafdblcl`oeldldnbqededdtcdbkdldlet`lekamcbbw`fbjauctdp`zfn````",
-"`````yfoaj`bbzeodsfibhbrekavcfcletfldneddxeddadtdadmbkerercleh`ubwbwcbbzarbhdpfjdiei`t``",
-"````atfoemfcdpbzasfi`ffadcekbkazeqerbkerdadtdmfhbqdldleddxfkfdapdcfdfcam`pbz`e`ifoepa```",
-"````a`dd`v`bbzbjefdw`lbwbtehdceccf`hfeerbqfhedesbqfvdlcifwcifldhbrficbficsefcc`v`xajbp``",
-"````fnfgeo`vfubzbwdwco`ufm`m`ucfbler`ofh`hfveddndnbqdldldtcffmbkbwapbwaiefaybgctczfgei``",
-"`````yczacaodpbjayfxcobwapbkehdhblerdtdnfe`hbqfhbqfedtcfeqecaqeqbwfiapanbhbr`zdjbcaofo``",
-"````atczf``bbzbzbhax`laqbwaqdhciblfeclfhfhdafmbqdabqdacidldtdhflcf`wby`fauef`vccakev`y``",
-"``ata`fnagccbzenbhfiaifdehezdhdlet`geteddnbqesfvedbqesdndabbfmfmbtbyamfufuasbcccdidiepat",
-"````fgfgao`dbg`e`falcobwfkfmdh`o`gcidnesdn`gdabqed`geteretblekazfk`u`fdocb`j`abgf`ev`y``",
-"`````yeicv`v`b`pamfcbhfxfidwetazazdx`q`heted`qfveder`get`wciekehchcodgbhffefeffcczbu`y``",
-"````epdvfjfj`acubzenanbifxbyaqci`w`gereleddnesehdnazdxbkcl`wfmfm`f`lfmayenau`bfceidia```",
-"`````ybuev`xcc`j`pfzaxau`jezekcferblcifhfhdmdmdldtfmblekdhekaq`fbififzbzftbidudvdifgbu``",
-"````atfgfoaobgal`pc`auamaxcoekapdcfwaqe`edeldnele`ekelfm`manapaqficubi`pdjfcacf`bgdvep``",
-"`````ya`f`ag`bdpasbcfubraibifmfmdhcfanekdcdmdtdhflexblcifkbyfiaifian`pau`pagbgbceicza```",
-"``````epdif`dubcefbgauenaxfmco`f`mecekfied`uavexfkbbaqfmdwanapcubifxffbgacftbef`di`y````",
-"``````a`czbuf`ddddbcfffcfcdgdoancofdezbwecfkap`wehaifmbtfiandwaxenbibzagf`ccbpaj`t`y````",
-"`````````yfoeyaceoevenfpffbx`mam`mbifpdwchapehaicocoamaibibtezfxdgfxeffjccfpeiddfg``````",
-"````````ej`rdidvaobzalbzfp`mauchfpfkezfkau`f`fdechchchfzbic`axbxfpauff`ebg`pejej`t``````",
-"```````````tf`f`ajal`zcrfpendsffaycochfzdgfzbjcoancofpdo`ben`affce`edjbcbebef`di````````",
-"```````````t`rf`dvaoeobcdu`ece`bfpencucofxbic`auc`dgficuef`bbxffbg`ebedddvaobfew````````",
-"````````````cnejbpaodvftdj`jcr`pcoen`j`jcu`ifcbifx`jc``jen`bbx`vccbe`z`zddddcn``````````",
-"``````````````ewbpddfbddaccycr`dfp`jfpca`jcu`dc`cacv`dff`d`d`x`dft`z`zbeejcn````````````",
-"````````````````fgfneoduembmfj`vag`act`bds`ac``j`j`acv`bbcagak`xdudvbpcn`t``````````````",
-"``````````````````ewd`fnaeakemcyaecvdjaeaecrcvdsakaeakafcy`jao`zfnd`cn`t````````````````",
-"````````````````````d`dkfndzd``zbm`v`k`b`ecvemaeca`vaedudz`zafew`kbfey``````````````````",
-"````````````````````````bfdkd`dz`kafdzae`vemcyafakakaedzdzbed`dkcn``````````````````````",
-"````````````````````````````ahdkbnbnbm`z`sdk`s`zd`bm`safd`bn`s``````````````````````````",
-"````````````````````````````````bnbn`sd`d`dk`sbmbnah`s`sah``````````````````````````````",
-"````````````````````````````````````````````cn``````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/glass9.xpm b/hacks/images/bubbles/glass9.xpm
deleted file mode 100644 (file)
index 9e3ac20..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-/* XPM */
-static char *glass9[] = {
-/* width height ncolors chars_per_pixel */
-"50 50 188 2",
-/* colors */
-"`` c None",
-"`a c #27274E",
-"`b c #25254C",
-"`c c #383858",
-"`d c #23234A",
-"`e c #212148",
-"`f c #2E2E62",
-"`g c #292967",
-"`h c #3535A1",
-"`i c #272751",
-"`j c #23234D",
-"`k c #29293F",
-"`l c #2C2C63",
-"`m c #2A2A61",
-"`n c #33334C",
-"`o c #353579",
-"`p c #272754",
-"`q c #414188",
-"`r c #20202C",
-"`s c #2E2E3D",
-"`t c #1C1C28",
-"`u c #2E2E68",
-"`v c #242447",
-"`w c #2C2C66",
-"`x c #222245",
-"`y c #181824",
-"`z c #25253E",
-"a` c #161622",
-"aa c #B9B9ED",
-"ab c #3E3E67",
-"ac c #1C1C3F",
-"ad c #6767A3",
-"ae c #2B2B47",
-"af c #272743",
-"ag c #222248",
-"ah c #292931",
-"ai c #29295C",
-"aj c #1D1D39",
-"ak c #252544",
-"al c #1E1E47",
-"am c #2B2B61",
-"an c #29295F",
-"ao c #1F1F3E",
-"ap c #2F2F68",
-"aq c #2D2D66",
-"ar c #30305F",
-"as c #2C2C5B",
-"at c #11111C",
-"au c #262655",
-"av c #31316D",
-"aw c #4C4C6D",
-"ax c #222251",
-"ay c #323264",
-"az c #2D2D69",
-"b` c #33335B",
-"ba c #43436E",
-"bb c #2B2B67",
-"bc c #212146",
-"bd c #37374B",
-"be c #22223D",
-"bf c #252536",
-"bg c #1D1D42",
-"bh c #2A2A5C",
-"bi c #28285A",
-"bj c #2B2B53",
-"bk c #333372",
-"bl c #2F2F6E",
-"bm c #2B2B3F",
-"bn c #2C2C36",
-"bo c #424266",
-"bp c #232337",
-"bq c #2F2FB0",
-"br c #34346C",
-"bs c #525265",
-"bt c #32326A",
-"bu c #1B1B2F",
-"bv c #3B3B55",
-"bw c #303068",
-"bx c #21214C",
-"by c #292957",
-"bz c #232351",
-"c` c #26264A",
-"ca c #2F2F60",
-"cb c #202044",
-"cc c #5D5D97",
-"cd c #2B2B5C",
-"ce c #363674",
-"cf c #3C3C66",
-"cg c #252556",
-"ch c #30306E",
-"ci c #3E3E54",
-"cj c #414178",
-"ck c #2C2C6A",
-"cl c #2F2F4F",
-"cm c #25252E",
-"cn c #27275B",
-"co c #363663",
-"cp c #4C4C68",
-"cq c #20204A",
-"cr c #2E2E5B",
-"cs c #29294C",
-"ct c #242451",
-"cu c #27274A",
-"cv c #343464",
-"cw c #4F4F64",
-"cx c #252548",
-"cy c #16162C",
-"cz c #292938",
-"d` c #333384",
-"da c #3C3C6F",
-"db c #353572",
-"dc c #1E1E37",
-"dd c #38386B",
-"de c #414156",
-"df c #242454",
-"dg c #31316E",
-"dh c #181831",
-"di c #232349",
-"dj c #272739",
-"dk c #393979",
-"dl c #4C4C85",
-"dm c #2F2F83",
-"dn c #28285B",
-"do c #292952",
-"dp c #36366C",
-"dq c #48486D",
-"dr c #23234C",
-"ds c #37377A",
-"dt c #20203F",
-"du c #1E1E3D",
-"dv c #26265C",
-"dw c #313174",
-"dx c #4C4C60",
-"dy c #27273F",
-"dz c #3C3C78",
-"e` c #48485C",
-"ea c white",
-"eb c #383874",
-"ec c #333379",
-"ed c #444458",
-"ee c #272756",
-"ef c #47477C",
-"eg c #32326E",
-"eh c #1B1B33",
-"ei c #1E1E2C",
-"ej c #30306C",
-"ek c #40407F",
-"el c #292944",
-"em c #212150",
-"en c #23233E",
-"eo c #141422",
-"ep c #343473",
-"eq c #323271",
-"er c #2D2D76",
-"es c #2E2E6D",
-"et c #40406E",
-"eu c #21213F",
-"ev c #272731",
-"ew c #8080BA",
-"ex c #23232D",
-"ey c #25255A",
-"ez c #1B1B39",
-"f` c #35356D",
-"fa c #191937",
-"fb c #262651",
-"fc c #313169",
-"fd c #2C2C6E",
-"fe c #22224D",
-"ff c #18182C",
-"fg c #373786",
-"fh c #2D2D65",
-"fi c #232344",
-"fj c #2B2B63",
-"fk c #292961",
-"fl c #27275F",
-"fm c #202037",
-"fn c #1C1C33",
-"fo c #242452",
-"fp c #45456F",
-"fq c #484868",
-"fr c #535380",
-"fs c #1F1F43",
-"ft c #2C2C5D",
-"fu c #3535DD",
-"fv c #353573",
-"fw c #262657",
-"fx c #393963",
-"fy c #242455",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````",
-"``````````````````````````````````````e`bscwbscwbsbsbsbsbsbsbscw````````````````````````````````````",
-"````````````````````````````````bse`bscpbse`awawcwbsbsdqawawbsdxdxcwcw``````````````````````````````",
-"````````````````````````````e`eddxfqcwcpfqfqawawdqawdqawawfqcwawawfqfqe`cw``````````````````````````",
-"````````````````````````cie`e`dxfqboboawfpfpdqfpbafpawfpdqbofpabdqfqfqedcfdee```````````````````````",
-"``````````````````````edede`cifqbodqabfpfpbabobaccbabafpbaddbaetfpfqabbobobodee`````````````````````",
-"````````````````````deedbvbvfxfxcfetboetfpcfewetddetetdaefetbaetabetbofxabcfedcici``````````````````",
-"``````````````````bdedbd`cabdefxababfxddetddcccjefbacjeaetddddcfdpdaddababb``cdeedde````````````````",
-"````````````````bvbdbvfx`cb`fxcfcffxdddaddefccaaeaefewbwdldadaddcoayddcvcfb``cbvbdbvci``````````````",
-"```````````````s`cbvbdb`b`b`cocvdddaddayf`braadlfrccdldzewdddaebddfcbwayfxcfb``cbd`cbd`s````````````",
-"````````````bd`sclclbjb`crb`arcofr`ubtbtfcdkaaewewdlcjdabtdabtcvddebayaycadoarb``c`n`ncl`s``````````",
-"``````````bdbv`c`ccub`b`b`ascrdp`fcadzaqbwfjebcjeaccewaaccdlfrdlegbw`f`lcab`crcrcrclclelbpbd````````",
-"``````````bnbmcuclclcrb``pararcv`ff`fcegf`dzewcjcjeqdleabkavf`fc`mbrcaegfcaycabjararcrae`sbm````````",
-"````````evaedycragcacvb`apcrasbwf``faybtavekewaddleqdkccccdkbrdzfcavapbrfhf`biascac`bjcuel`kbf``````",
-"````````aeae`vcldo`acrcacr`fbtddaqapebceckbleqdzdseqaaadekdwebdkavceapbrbt`fftamcrbybjaeclbpbp``````",
-"```````rfnbeakdocubzarfw`faiarbraqegejbkcheqeqekd``oefekewdzchekbkaqfhbtbkapcrcacr`j`vdocbbpfn`t````",
-"``````cz`zdoakbccbbyasdr`fap`uf`fcejck`obkdl`odmfudwecdwaadzbkdzdbaz`legaqftar`fcadofbdobjafdccm````",
-"``````bfehdc`aeefifbftaiambw`gavbkblck`gckd`eqecec`hfgd`addsepbkfvfkapazavf`fw`fbycrcd`a`vehbubp````",
-"`````tbuehdyfbasdocaapayayebebbteq`geqchfvdwecbqdkaddsfudwdzbkckdwfjbrapf`bwf`byfwbyasdr`iezbucy`t``",
-"`````yfnfieu`bdi`abydn`mfcf`f`egdbavdbec`odwcefgecdsd`dmbqepceeqf`az`wejdbbrambi`lcdft`bcbc``va`ei``",
-"````a`eoenfifsaycrbyfl`mfc`uan`webceebdmer`gdwbqdsdsdmdmbqekdkeccechckfkejegfhbiftarby`a`v`vfiffbu``",
-"````fmcycxdidt`iardpdnemanavflejazeqesepcefgblerfud`fgfderfgdkdsdkdzfkeqbkapapbt`lctfceuas`vcydhfn``",
-"````ehdheudtagbybjcabidnapapfcebejblchcheqer`hbqbqerbqfufgecdsebcedkbkbleqf`fjambicaaycu`vcxa`du`y``",
-"````fnfndhdtbgdobybifocnbwameqckdgeqeqfdesfdfgfgdwflfddmfufudwch`odschflejebdvayby`pee`vcbacfndcbu``",
-"````bube`vacfe`iembyfc`f`ufc`wdveqdkeqflfddwfudm`her`hd`fgbqecd`ecbbflfkfjapdvbwdnftas`jfifieh`yeo``",
-"````ffehdhdhdrcqalft`jembtai`wfkdg`obbesbldmfddm`gecfud`dmbbdw`ochbl`ufkap`weganaiar`j`j`ddu`adhff``",
-"````ffdcdrdtbj`a`pfhfebibh`legfkesapaqeq`obqbqfddkfu`hd`dwfkchdw`wcheq`ufjemfyaucdby`peectduezdhbu``",
-"`````tfadhag`v`iee`fcqfweefleyanaqfjazazebfg`g`qfu`hadcher`q`h`gazdwaibbap`lfw`waybxct`aagcbeueofn``",
-"````eoa`ffcbfididr`eaxeybzbhcgaqepdlbkckazeqds`qfueqfdblefeqdzchdg`wfheyamey`laibyalbiagdraodheheo``",
-"````at`ydhdh`dfsal`pfyalfyemeyey`waqdgazckepbkdw`qekepecfjdmejflazfj`ubw`lbiftaxee`beecbcbbcdu`ta```",
-"````a`a`a`ficbalcqeeauct`fcgdffyflejapds`wefdleradewegaaegeseqbr`lfl`u`megamamctfb`vfebc`deudceoat``",
-"``````eofffacb`abyftcbbybtfcanfwaidvapepap`wegazdzdlek`uerfgepdgfj`laqdncn`mbyfoct`p`vbgacezdhbu````",
-"```````yffdhfsficbeealbybxbiemcncnamflch`u`uccew`udgdlf``wdldbcgflanbweefycnaxeeacezfsdyfmdh`y`t````",
-"```````teoeiezajdcdc`ealeeai`jaxaiamcgavaiew`ucc`w`mandzanebflfcamfldvbiemdffw`pfeezcbdcbpeh`yeo````",
-"`````````tfffffmaoakdtalamfbdremfjamaiaidffraiddegdbfhancnbrdn`mamegfwaxfocgftct`x`efeezeifn`t``````",
-"````````ex`tehbeezdubydialcdaxcnbidndfbhfwbweydf`mandfcgdvananfyfofycncgcnaxfoacbg`e`pfadueiex``````",
-"```````````rbufndcajacfscbbycqfofodnaifhfyai`paxcnfweyddcg`pcgfwfofedifeaxbyalfs`j`kduehfmfm````````",
-"```````````yeifndhbefsao`vaxbxbxcsfebyfwbzfybidfcgbjfwaidnambibybzbx`afocdbc`vfidtezajbueha`````````",
-"`````````````y`r`rezduaocxficb`jfw`abz`jct`jdnfwbzfwdnaufofofw`afo`i`ddiducb`zdudcezdu`rex``````````",
-"``````````````evbudjfmajcbagbcctbcfwcgaufoct`afofb`afodf`jbzemfobx`dfe`val`xczdjbebpdccm````````````",
-"````````````````evcmezfneufsaoelcqcxctfeaufecsfectbxbzfeae`b`jdrc``b`x`ecb`zbpfmfmeiev``````````````",
-"``````````````````ffbubpfiafafbmbc`vag`bc`csdr`j`bct`jfefbcxcx`j`xdificxacbeenbfev`t````````````````",
-"````````````````````cmczczdy`zak`kcucucudrcuaecxc`cxdrcxaeelak`vc``jajakbpafbfbf`r``````````````````",
-"``````````````````````cmczbpdjdc`kcxelaoelakagbc`aaeel`bbxakakeu`zdtbm`zdjbpevbf````````````````````",
-"````````````````````````cmbfeibfbmeuel`kelelafelelakaeelaf`k`k`zdjbebm`zbncmah``````````````````````",
-"````````````````````````````czbnczbp`zafbmaedyafelbmdy`zdybeczdjczbf`kbpex``````````````````````````",
-"`````````````````````````````````sevdjbncz`zdj`sczcz`k`k`s`sdjbfahevbn``````````````````````````````",
-"``````````````````````````````````````evah`sbncz`kev`sbnczbnczah````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade.pov b/hacks/images/bubbles/jade.pov
deleted file mode 100644 (file)
index 7c1cb02..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "colors.inc"
-#include "shapes.inc"
-#include "textures.inc"
-
-/* The following make the field of view as wide as it is high
- * Thus, you should have the -W and -H command line options
- * equal to each other. */
-camera {
-        location <5.8, 0, 0>
-       up <0, 1, 0>
-       right <1, 0, 0>
-        look_at <0, 0, 0>
-}
-
-sphere {
-        <0,0,0>, 2.5
-       texture { Jade
-       scale <0.7, 0.7, 0.7> 
-       rotate y*clock }
-       finish { phong 0.4 }
-}
-
-light_source {<6, 1, 0> color White}
-light_source {<6.1, 1, 0> color White}
diff --git a/hacks/images/bubbles/jade1.xpm b/hacks/images/bubbles/jade1.xpm
deleted file mode 100644 (file)
index 2a13045..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/* XPM */
-static char *jade1[] = {
-/* width height ncolors chars_per_pixel */
-"10 10 58 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #149914",
-"`d c #179317",
-"`e c #158B15",
-"`f c #148914",
-"`g c #148514",
-"`h c #0F890F",
-"`i c #0D830D",
-"`j c #0F730F",
-"`k c #0F6F0F",
-"`l c #0E6B0E",
-"`m c #077307",
-"`n c #0E630E",
-"`o c #0B630B",
-"`p c #026502",
-"`q c #046104",
-"`r c #0A550A",
-"`s c #0B530B",
-"`t c #065306",
-"`u c #054F05",
-"`v c #074B07",
-"`w c #064706",
-"`x c #003700",
-"`y c #042B04",
-"`z c #011901",
-"a` c #21B621",
-"aa c #1AAC1A",
-"ab c #18A818",
-"ac c #17A217",
-"ad c #189E18",
-"ae c #127C12",
-"af c #107C10",
-"ag c #0F7A0F",
-"ah c #0B800B",
-"ai c #0E720E",
-"aj c #0A760A",
-"ak c #106A10",
-"al c #0F6A0F",
-"am c #0A6E0A",
-"an c #0B620B",
-"ao c #0D580D",
-"ap c #076007",
-"aq c #045E04",
-"ar c #015E01",
-"as c #015201",
-"at c #034803",
-"au c #044604",
-"av c #083E08",
-"aw c #014601",
-"ax c #044004",
-"ay c #063606",
-"az c #052E05",
-"b` c #013401",
-"ba c #042404",
-"bb c #002600",
-"bc c #022002",
-/* pixels */
-"```````v`l`g`k`v````",
-"````an`gad`cajaqal``",
-"``az`f`hahah`parapao",
-"```wagac`m`aa`aa`o`x",
-"``ak`d`qai`babau`e`w",
-"``b`aeafat`u`ias`j`s",
-"``bc`n`kafam`jaw`xay",
-"````avaxau`t`r`n`z``",
-"```````ybbavazba````",
-"````````````````````"
-};
diff --git a/hacks/images/bubbles/jade10.xpm b/hacks/images/bubbles/jade10.xpm
deleted file mode 100644 (file)
index e601fec..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-/* XPM */
-static char *jade10[] = {
-/* width height ncolors chars_per_pixel */
-"60 60 192 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #23BD23",
-"`d c #1CB11C",
-"`e c #1AA71A",
-"`f c #169D16",
-"`g c #179717",
-"`h c #149914",
-"`i c #179317",
-"`j c #139713",
-"`k c #149514",
-"`l c #1A8B1A",
-"`m c #159315",
-"`n c #129312",
-"`o c #158B15",
-"`p c #128D12",
-"`q c #148914",
-"`r c #158715",
-"`s c #148514",
-"`t c #0F890F",
-"`u c #128312",
-"`v c #0F870F",
-"`w c #0E850E",
-"`x c #108110",
-"`y c #0D830D",
-"`z c #0F7F0F",
-"a` c #127912",
-"aa c #137513",
-"ab c #107710",
-"ac c #0C7D0C",
-"ad c #0E750E",
-"ae c #0F730F",
-"af c #0F6F0F",
-"ag c #0F6D0F",
-"ah c #0E6B0E",
-"ai c #0E690E",
-"aj c #077307",
-"ak c #0F650F",
-"al c #0E630E",
-"am c #0B630B",
-"an c #0D5B0D",
-"ao c #0A5F0A",
-"ap c #036703",
-"aq c #0B570B",
-"ar c #075D07",
-"as c #026502",
-"at c #046104",
-"au c #0A550A",
-"av c #0B530B",
-"aw c #016101",
-"ax c #0C4F0C",
-"ay c #0A510A",
-"az c #025B02",
-"b` c #094F09",
-"ba c #045704",
-"bb c #0A4D0A",
-"bc c #065306",
-"bd c #0A4B0A",
-"be c #065106",
-"bf c #015901",
-"bg c #074D07",
-"bh c #054F05",
-"bi c #074B07",
-"bj c #084908",
-"bk c #094709",
-"bl c #084508",
-"bm c #064706",
-"bn c #014F01",
-"bo c #004B00",
-"bp c #063D06",
-"bq c #063B06",
-"br c #073907",
-"bs c #033D03",
-"bt c #004100",
-"bu c #013F01",
-"bv c #033B03",
-"bw c #053505",
-"bx c #003D00",
-"by c #063306",
-"bz c #053105",
-"c` c #023502",
-"ca c #003700",
-"cb c #042B04",
-"cc c #042904",
-"cd c #012301",
-"ce c #022102",
-"cf c #011D01",
-"cg c #021B02",
-"ch c #011901",
-"ci c #011701",
-"cj c #011501",
-"ck c #011301",
-"cl c #010D01",
-"cm c #21B621",
-"cn c #1CB41C",
-"co c #22AA22",
-"cp c #1AAC1A",
-"cq c #18A818",
-"cr c #1F9C1F",
-"cs c white",
-"ct c #18A418",
-"cu c #17A217",
-"cv c #189E18",
-"cw c #189A18",
-"cx c #149C14",
-"cy c #149014",
-"cz c #119011",
-"d` c #128A12",
-"da c #0F8C0F",
-"db c #128612",
-"dc c #148214",
-"dd c #138013",
-"de c #127E12",
-"df c #127C12",
-"dg c #107C10",
-"dh c #0F7A0F",
-"di c #0B800B",
-"dj c #0E780E",
-"dk c #0B7C0B",
-"dl c #117211",
-"dm c #0A7A0A",
-"dn c #0E720E",
-"do c #0A780A",
-"dp c #0A760A",
-"dq c #106A10",
-"dr c #0B720B",
-"ds c #0F6A0F",
-"dt c #0A700A",
-"du c #0A6E0A",
-"dv c #0B6C0B",
-"dw c #0A6A0A",
-"dx c #0B680B",
-"dy c #067006",
-"dz c #0C660C",
-"e` c #0A660A",
-"ea c #056E05",
-"eb c #056C05",
-"ec c #0B620B",
-"ed c #0C600C",
-"ee c #0D5E0D",
-"ef c #056A05",
-"eg c #066806",
-"eh c #076407",
-"ei c #0D580D",
-"ej c #0A5C0A",
-"ek c #076007",
-"el c #046404",
-"em c #0A5A0A",
-"en c #075A07",
-"eo c #085808",
-"ep c #045E04",
-"eq c #095409",
-"er c #015E01",
-"es c #055605",
-"et c #055405",
-"eu c #015601",
-"ev c #015401",
-"ew c #035003",
-"ex c #015201",
-"ey c #034C03",
-"ez c #034A03",
-"f` c #B1FFB1",
-"fa c #074207",
-"fb c #034803",
-"fc c #044604",
-"fd c #074007",
-"fe c #083E08",
-"ff c #014601",
-"fg c #024402",
-"fh c #034203",
-"fi c #044004",
-"fj c #053805",
-"fk c #063606",
-"fl c #013A01",
-"fm c #023802",
-"fn c #052E05",
-"fo c #013401",
-"fp c #013201",
-"fq c #042C04",
-"fr c #013001",
-"fs c #012E01",
-"ft c #012C01",
-"fu c #042604",
-"fv c #012A01",
-"fw c #022802",
-"fx c #042404",
-"fy c #002600",
-"fz c #022002",
-"g` c #011E01",
-"ga c #001000",
-"gb c #000A00",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````fwbdftaxbdbqavfjc`bkfvfycc``````````````````````````````````````````````",
-"``````````````````````````````````````````fnfjbpfaeefofrftaqbubifhbdbmfibkanfdfj````````````````````````````````````````",
-"````````````````````````````````````byfvfofidqaldqdqafa`a`bcfraoagafbubcbianeifafdfrce``````````````````````````````````",
-"````````````````````````````````byfraybjalfrbxfga`aidlenenffbsb`fffbeyddecaqbedlcafpbpbdby``````````````````````````````",
-"``````````````````````````````feeianbiezagbtakeyah`rdedge`bo`sfobndfffenafesffembsbubib`fofk````````````````````````````",
-"``````````````````````````bybqbjbmbxeqejenendde`addh`oadafbibobnbmboekbabne`dxffeyeybeagdqaqbkfq````````````````````````",
-"````````````````````````fwftaneebuedamaoenabdhdb`q`qdr`q`iaiejagbf`qcabaflbaekdgdceteoejbeayavfabz``````````````````````",
-"``````````````````````fkbqfialdsbtetdv`uduad`qdrdpcw`o`zazafcwcy`qdnevdpekcyahaeenar`rfrakakfdfifafw````````````````````",
-"````````````````````brbpb`emaafia``rdg`i`o`zcw`zdjcwct`w`oe`dodpaodnduelegexbfamaoaubaemakfgeyfybibqfv``````````````````",
-"``````````````````fec`bbaledfma`af`saddj`uehdbcv`ed`aj`fcpdp`madegerbx`oeldpd`d`dt`sev`rboa`dlafcacabkfw````````````````",
-"````````````````fwbkaydqecb`dcdv`rdc`scwexdp`g`ecvawdxdber`y`hctdiawdgfbdpduegcy`pdwepbodfenemaldsbmbmbqfn``````````````",
-"``````````````cffafralfjc`dnecaqaddb`x`zevatdp`vacfgeyerelfgetda`fdyaw`u`n`pdmd`cwdbexeqboa`ffeta`affhfmbzfn````````````",
-"``````````````fwfmeeemedaadca`eoepdrcvcvegeuebdoajefdhcncmeyetdicndocye`as`tcp`f`vcw`eeuaiflewaiffdldlayeife````````````",
-"````````````feavfieeaaeyfr`sdeexdwcvcu`meldk`fct`dcudidyamcyar`ycuct`tesdvea`eefdodp`e`peubearbobibhageeb`fvcd``````````",
-"``````````fxcdbdandlffesboek`xemdb`pdkbfel`k`dcncpajcmefewdjapdmefea`f`jcz`h`hdycydtd`cwegepfcfmdfaragemalbdbkch````````",
-"``````````fwbqbjakagenewencyad`gdrazeraccucpcpcncu`zdharap`kasdo`ndiap`k`dcuajcncpcwepdkcycydtdgdwafdlbcedeeblcc````````",
-"````````fxfrfnayeqbceyes`qekatexfldu`tcpdo`y`hcudiades`hewdmdicp`ccn`wapasaw`ges`xbherbxdbcy`idbekdlesa`dqaleibwcg``````",
-"````````fnfpeefhfbafalbodeehdwdder`p`e`yaddodicndkefcqcxdacq`c`d`ccz`h`eescme`drene`eaelfhegegdwedalewagauemavaxcc``````",
-"````````brbzakeebceyfcek`o`odhbief`k`ediapajcncx`fdict`ccucqcncm`ccx`tdr`ed`ardyebdpazegdgcvateoekaeenagedakeifdg```````",
-"``````cebdeieeala`alewekdrdrdbegeg`k`fcpdacmctdid`czczcn`ddacucm`c`cajasdmdmawdyea`fczacazcvexfgbnaraba`ameoeiblfech````",
-"``````byfjfadqfgauej`redaebnex`m`f`vczcxcpdadaawea`neadp`e`r`lcrcmcvdyefcncxajcydydyczdicwepcacabsbaabdea`ezb`bbbwfw````",
-"``````cdfebdakfgezet`s`u`z`uepeg`fcpctcpcqcq`teydmczdpa`coco`b`baacm`rdicmcn`jef`majascpdjbf`o`gemfhdddfddeobibsfefw````",
-"````cjbwfsbmbmbubh`rbodhdh`iegctefcwcucucncpcpdhaj`yabco`b`a`a`a`a`lcodpcmcqczdicp`ecpcvdb`efgehambmabdxaiemcabkbqfqga``",
-"````g`blblfifhdqbcfiba`qdhcw`xfbcwefacdydacncqeacmd`co`b`af`f`f``acocrcwcq`ccxeaef`merajegbxe`a``iba`renecemdqeibrchcc``",
-"````fxbqbdaneefgecffeydu`q`i`iepcpame`awdkcpcpar`ycm`b`a`af`f`f``a`b`l`e`ccn`jasdieady`pacatahcabuai`rewecfgdlcabqbqby``",
-"````cibkaxfianfafgffaie`cycwcvefelajdbbtawcz`jaw`t`e`b`a`af`csf``a`b`ldh`w`nasap`yczdpcw`kacahbcboba`odnbhbualalc`brg```",
-"````g`bkavbvb`bceebvetewekdh`xd`dp`kaccycydocncvdacvco`b`af`f`f``a`bcralapef`fcy`w`ycz`gcw`zazdb`qe``r`rfgfcdqakcdfefn``",
-"````fnfybqanfhbebhafenew`ibadu`wdp`k`wfbapdacparczcm`c`b`b`a`a`acocraed`cucpcpdoer`ydpdp`m`mcy`xbadca`dfdfecauavfafycc``",
-"````fzfvfdaudqbgecbcenbo`iaeeueheuelatefczcncuacdncu`cco`lcr`b`b`l`lcrczcq`wdkcpdpdhfcflducweh`i`oabdcdlemeqbmaqeichfn``",
-"````cbfrfjblfcagbxbha`dnarbobnehdxfbaz`kcv`fda`een`jcn`ddvdldlaecrdraoczcq`f`y`d`ndoac`eelcydhadardv`rdlejeqavbjbbbyfu``",
-"````fxbrbqbsfifhaifbah`oddduehdgcyeoeg`gcucvajdv`t`e`hcpdmcm`d`vajeo`ddy`n`ecx`dcv`f`meu`e`g`z`g`qdcahaheyedb`fmbdcdfx``",
-"````fncdfkbdb`bmafezdn`rdedn`xdueubu`o`ycw`fdidj`hcpct`deaen`udk`j`yefelebcz`dcpd``fac`edcbnex`i`sa`aea`beemaufpbwfuch``",
-"````cjfnfteib`c`ejecaoa`ad`idbbaeuaideazdkcv`pazdp`d`d`tdyasefcucn`fdibfbfcwdoct`p`wdpeuexameh`o`sendcaialakalc`bkfecf``",
-"````ckceftaxbsaqaldlejagde`uehepepbgexeg`e`wacerbfdmdi`dasapdpcvcpcueben`tdpfcdtdpdwdtekbcfidcada`aeabagakakaqbqfwbyfz``",
-"````clg`bzfafoblemdldzdfdfecfiexbnfcdg`icvegd`eufbat`ierct`ubhat`wdydvcp`y`kacfbelegexfibgexbodxaeabaabhfcayavfdcgfzck``",
-"``````fxfwbdfdfjfceedldzamboeqbebmbebhcvducy`gdregeuegdkaccyer`eaceladdgel`x`zevazcveoezboboe``raiddaibgfdfdbvbdcjfx````",
-"``````fxcdblfafofjbgdlbcbcaufrbsfidlexeu`q`icv`g`kcwcw`gcwegcwdeeodedhfgbu`iexatdudrbnbobadddgaeffbhaoeeakbdbrbdcjfz````",
-"``````ckfzfqfabpbjcaedakemakeya`abewdjardjcydbehdwdreg`ictdbdrdebu`gcteldwabepdu`i`xdgdr`re`dveyalb`anaubzfofwfyfnck````",
-"````````g`cccfbpbjfmbiaifceeakfieddcekdg`q`s`gdgdudrdrcwcvcvcweuflembudh`udtdv`gdwendne`ekesbtedaqavflflbdblbdcdch``````",
-"````````fzcecfbpcbfiaveeaufbeebheyetewdddn`u`q`i`odb`i`gcwcvdjehdgbgepdudwep`udjbafffhagedaaedafbmdqflc`fjfncdcfcg``````",
-"````````clcffzblcdbvfobsaldlbsecabddaf`odne`esbadgdr`x`o`ocwdudbdgekehbaaeeqdj`rdga`ffafbheoaadlcaftbdfmbkfzfkfxgb``````",
-"``````````fxcbfkfsc`frbmeibic`bedlabdzdcaeareyfiardvdnduaddge`dg`sduehboa`eje``r`rendleoaiaaaiakavfifnftfkfkcecj````````",
-"``````````gbfxfnfebpeibveiakflanfgejafdldxetbob`ardvdedv`o`oabene`dxekbnboaodfaebebibca`eqeqakdqeebsfqfvfwfwfxcl````````",
-"````````````clfxcdfkbwfwanbjavflfaafeya`agafeyddarah`se`aedeababdxenaoewdn`samdldsbcafejaibgdqalaqc`fqbrg`ceci``````````",
-"``````````````fxfubybkfsfjanayaubibubxdldsaidzaodfabafaoe`a`dddxe`fbewe`aea`anbcaodzagdqeedqaqeiaxftbwfwcech````````````",
-"``````````````gbfucgbzfebybpeieeaqfhdqeeakeqaiemdsdzeoaidcezecbhaidzeoemafecb`aaakagaqayaqb`blbkbdblfkcffzgb````````````",
-"````````````````gbcgfxbyfefjaxeieeayfiflfrbjeebxfcdsbxezagbxbcememeyaobhaubcbeakedaqalb`eiblavfrchccfzfzcj``````````````",
-"``````````````````clcgcjccbwaxavfaaqeeeib`fiblaybiemfgfhblblbdfcfhembeemdlbbdqaueianfableibdfrfvcbcccccj````````````````",
-"````````````````````gbfubzfnbrbkbpc`fpbpbvfjcafhakayavakflbmakbdbidqeefccabiakavbvfrbqblblfefqcbbzfxcj``````````````````",
-"``````````````````````gbcgcgg`fwfefvbkbdaxfmanfpalaycafaaudqalfob`bifmaxaqaneibdfrbqbkbkfeccbybyfxck````````````````````",
-"````````````````````````clcgcgfnfwfqfvfabwc`bqeiblbsfeavbvbsfrbvanbbfabzeiblc`bwbwbpfafeccg`fxfxcl``````````````````````",
-"``````````````````````````gbckchcfccbrbyfkbdfjbkfabpbrfkcdbveiaxaxbbfafdbwfefvfvfwbrfefkcffzcgcl````````````````````````",
-"``````````````````````````````gagafzcbfnbrfkfkfyfybzfebkbdbdfefefvbkfubzfnfnbzfebrfqfxfxcgck````````````````````````````",
-"````````````````````````````````gbclckfxfnbyfnfwfwbzfqfkfqcdfnfqchfucgbrccfnfwfncccjcgcjgb``````````````````````````````",
-"````````````````````````````````````clclcjcjcjckgaccfxcdcdcecicfcgfzcgcefufncefzckclgb``````````````````````````````````",
-"``````````````````````````````````````````clgacjcjcgcjcjcjgachcjfzcgfzfxfzckgacl````````````````````````````````````````",
-"````````````````````````````````````````````````clgbclckckcjcigackgaclgbgb``````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade11.xpm b/hacks/images/bubbles/jade11.xpm
deleted file mode 100644 (file)
index a556fe2..0000000
+++ /dev/null
@@ -1,271 +0,0 @@
-/* XPM */
-static char *jade11[] = {
-/* width height ncolors chars_per_pixel */
-"72 72 192 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #23BD23",
-"`d c #1CB11C",
-"`e c #1AA71A",
-"`f c #169D16",
-"`g c #179717",
-"`h c #149914",
-"`i c #179317",
-"`j c #139713",
-"`k c #149514",
-"`l c #1A8B1A",
-"`m c #159315",
-"`n c #129312",
-"`o c #158B15",
-"`p c #128D12",
-"`q c #148914",
-"`r c #158715",
-"`s c #148514",
-"`t c #0F890F",
-"`u c #128312",
-"`v c #0F870F",
-"`w c #0E850E",
-"`x c #108110",
-"`y c #0D830D",
-"`z c #0F7F0F",
-"a` c #127912",
-"aa c #137513",
-"ab c #107710",
-"ac c #0C7D0C",
-"ad c #0E750E",
-"ae c #0F730F",
-"af c #0F6F0F",
-"ag c #0F6D0F",
-"ah c #0E6B0E",
-"ai c #0E690E",
-"aj c #077307",
-"ak c #0F650F",
-"al c #0E630E",
-"am c #0B630B",
-"an c #0D5B0D",
-"ao c #0A5F0A",
-"ap c #036703",
-"aq c #0B570B",
-"ar c #075D07",
-"as c #026502",
-"at c #046104",
-"au c #0A550A",
-"av c #0B530B",
-"aw c #016101",
-"ax c #0C4F0C",
-"ay c #0A510A",
-"az c #025B02",
-"b` c #094F09",
-"ba c #045704",
-"bb c #0A4D0A",
-"bc c #065306",
-"bd c #0A4B0A",
-"be c #065106",
-"bf c #015901",
-"bg c #074D07",
-"bh c #054F05",
-"bi c #074B07",
-"bj c #084908",
-"bk c #094709",
-"bl c #084508",
-"bm c #064706",
-"bn c #014F01",
-"bo c #004B00",
-"bp c #063D06",
-"bq c #063B06",
-"br c #073907",
-"bs c #033D03",
-"bt c #004100",
-"bu c #013F01",
-"bv c #033B03",
-"bw c #053505",
-"bx c #003D00",
-"by c #063306",
-"bz c #053105",
-"c` c #023502",
-"ca c #003700",
-"cb c #042B04",
-"cc c #042904",
-"cd c #012301",
-"ce c #022102",
-"cf c #011D01",
-"cg c #021B02",
-"ch c #011901",
-"ci c #011701",
-"cj c #011501",
-"ck c #011301",
-"cl c #010D01",
-"cm c #21B621",
-"cn c #1CB41C",
-"co c #22AA22",
-"cp c #1AAC1A",
-"cq c #18A818",
-"cr c #1F9C1F",
-"cs c white",
-"ct c #18A418",
-"cu c #17A217",
-"cv c #189E18",
-"cw c #189A18",
-"cx c #149C14",
-"cy c #149014",
-"cz c #119011",
-"d` c #128A12",
-"da c #0F8C0F",
-"db c #128612",
-"dc c #148214",
-"dd c #138013",
-"de c #127E12",
-"df c #127C12",
-"dg c #107C10",
-"dh c #0F7A0F",
-"di c #0B800B",
-"dj c #0E780E",
-"dk c #0B7C0B",
-"dl c #117211",
-"dm c #0A7A0A",
-"dn c #0E720E",
-"do c #0A780A",
-"dp c #0A760A",
-"dq c #106A10",
-"dr c #0B720B",
-"ds c #0F6A0F",
-"dt c #0A700A",
-"du c #0A6E0A",
-"dv c #0B6C0B",
-"dw c #0A6A0A",
-"dx c #0B680B",
-"dy c #067006",
-"dz c #0C660C",
-"e` c #0A660A",
-"ea c #056E05",
-"eb c #056C05",
-"ec c #0B620B",
-"ed c #0C600C",
-"ee c #0D5E0D",
-"ef c #056A05",
-"eg c #066806",
-"eh c #076407",
-"ei c #0D580D",
-"ej c #0A5C0A",
-"ek c #076007",
-"el c #046404",
-"em c #0A5A0A",
-"en c #075A07",
-"eo c #085808",
-"ep c #045E04",
-"eq c #095409",
-"er c #015E01",
-"es c #055605",
-"et c #055405",
-"eu c #015601",
-"ev c #015401",
-"ew c #035003",
-"ex c #015201",
-"ey c #034C03",
-"ez c #034A03",
-"f` c #B1FFB1",
-"fa c #074207",
-"fb c #034803",
-"fc c #044604",
-"fd c #074007",
-"fe c #083E08",
-"ff c #014601",
-"fg c #024402",
-"fh c #034203",
-"fi c #044004",
-"fj c #053805",
-"fk c #063606",
-"fl c #013A01",
-"fm c #023802",
-"fn c #052E05",
-"fo c #013401",
-"fp c #013201",
-"fq c #042C04",
-"fr c #013001",
-"fs c #012E01",
-"ft c #012C01",
-"fu c #042604",
-"fv c #012A01",
-"fw c #022802",
-"fx c #042404",
-"fy c #002600",
-"fz c #022002",
-"g` c #011E01",
-"ga c #001000",
-"gb c #000A00",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````````````brfebwfabdfafvbwbqfqbr````````````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````feblaxfnfofjbkfaaqeibmfiavblavblbdbwfk````````````````````````````````````````````````````",
-"````````````````````````````````````````````````fnfrftfpbjalavfcdqfjbmakedagafakbmfcaqbsfyanavaxbz``````````````````````````````````````````````",
-"````````````````````````````````````````````ftbqfmbjanakalaldldlaaafemaqbtfbafagdlfhflbufvalbpfwc`frft``````````````````````````````````````````",
-"````````````````````````````````````````fvbdbdbmalfyb`bhfgdqaianeydzesa`bsbvdlbheyesddafbjezaufhcaakbwbbbl``````````````````````````````````````",
-"````````````````````````````````````cebkanalbgbmedfbfsfbbeah`rdcdf`samdlbncaewbofh`raraeaeaveoejfdfcbmavanfkcb``````````````````````````````````",
-"``````````````````````````````````bravayfcbialaaeoa`eyesecdvdedxdnen`oedfcaieobedle`ekabarambjemfmbifbdqdqanfabz````````````````````````````````",
-"``````````````````````````````fwfaaxfmeefyejemaoamenewardv`qcydbdbadafafepexemfhex`oca`oenad`odndcddddaaafdqeefafvfk````````````````````````````",
-"````````````````````````````fqftayfidqb`eoecetarde`i`i`g`o`u`idb`idpdgdgdzejexatepafeudfbhddevdnabaoc`anbcfgbubdaycdfk``````````````````````````",
-"``````````````````````````fkbdcabldqaiafece`dg`idrad`q`uegdr`id``xegad`qategfgfh`ieudtdu`gflaoahewbafi`sftaybxbubbfifqfy````````````````````````",
-"````````````````````````brbdbsaueqdlfiaeddaedg`i`o`x`o`mdudpcwcwcyege``xdodperdnbfegelegevbfbnejaobibaekfffffgeyfhanbvfjfv``````````````````````",
-"``````````````````````fefacaakeqalaudcah`r`idg`q`xdudrcv`m`e`tdk`k`ed`erarcyeneabfameudteg`wdbdbdudeedevaoewfibtbxfleeavaxfe````````````````````",
-"````````````````````ccblfadqaqeoeedcecewbofoa`ddbiegac`ecpcydpbfatap`yctcpdkefdp`dbce`ategeg`v`i`iduekbaaien`rbiauejbgfab`fjfn``````````````````",
-"``````````````````ccbkavfiembeaiaedfbnbndtdu`zdoeueldpcw`n`h`xeren`z`derelda`ddkd`erbx`y`pacac`gctdjepfcafba`saqffecaabgfvbqbwci````````````````",
-"``````````````````fxeifmakbxalbtahffbodj`u`xcycyazbfebdpajapdgaodhapcnaddvapcpcucnasaodk`k`pcycp`kctdtbffhfobnfretendlafbmfefwbr````````````````",
-"````````````````fwblfoanakdzeyaoekboemeudjcyct`gdycwebacdmacdpcn`uascwekdrajcpczdy`edxd``wct`dd`dk`gctdhdeaedlba`oaibtdldqakbkfvfy``````````````",
-"``````````````ccfyfdeiemaabhejekdudgexatcycv`gd`eldpcv`jcpcqcudidyawe``uardmczcp`f`wesdhcn`nczegdodtcw`wdjexbebabnflfraoagedakbzfjfn````````````",
-"``````````````fefdbmaldlbhbtfme`dgdjbidrcy`mdo`ibf`n`dcncn`daj`z`eetd`ezapdmajeadkcndadi`w`e`tbferaj`wcwd`dubafcdc`rdvaoaieqdqbbfdfe````````````",
-"````````````cebzblayakdsbcbcboardhdjexd`docvfger`h`dcncpcn`fas`kapasaw`p`dehapasawad`w`d`d`f`tap`ecpajdk`mdj`zbaendgabdedlbcdqanayblg```````````",
-"````````````brbpavauedamdzeye``oadepadatcweb`pcu`f`hcq`fcm`yeydjcue`cvas`m`ycucncxdoawasea`wapad`ueycyesdrcwcw`o`q`iesdxafecauananfafe``````````",
-"``````````cfbwfjeebmbeeoagff`se`ehexep`sdpcy`dcxerajdmdacpeaeyapead``ddacxcq`c`c`j`yasdrasd`ffdv`ddjer`oendp`z`xadddboaiesdlafdqanbdfece````````",
-"``````````fefaanfceqeoaiaia``odrehegdxafac`f`ddp`qdoeacpcueaefcxcpcqcxcp`c`d`ccu`j`jcyewdvenffdrbtaoeldybfeyepegbabaembseya`ememakavaxfq````````",
-"````````fzccbzeeeqeebhbtfcba`rcyd`djbieucy`ecvajapdo`f`ndabtdicx`ccn`jcqcncn`ccn`w`wdr`fcmd``udyebdobfajeffccvepeuepbobnendcejemalavfdcech``````",
-"````````fnfabdanakbefgbteybadhdh`x`geueu`tcu`e`hdkcp`dcudyasdacxcu`c`j`p`fcp`ccmcqebaseaajeaad`wajcx`kdodmahaz`odzbnboehdnabahecdqbmbkfvfz``````",
-"````````ccbdfaaledfbaqdcbnbna`bueoegct`pcy`y`fcpcq`f`hczenaj`tdida`d`i`r`r`e`ccm`feb`k`ncqdaaraserdoda`ydyddeladeccafoe`a`dddfedbmdqeifdfn``````",
-"``````fxfvfrfaakbmfbauezfmboekdrepeodr`ecv`hcxctcncudiea`mdm`fdicmcrcrcr`bcrcr`r`z`rea`dcncxdo`eapebaj`yazeyelamde`ibiboa``ra`dlflbiaybqfyg`````",
-"``````fxfac`bbakbxfbbheneodedb`z`zexbfd`cv`ectcncncqcueaasaj`wdj`bcoco`bcr`a`a`l`raadicm`ccnczaw`zapapctdveoazfgeuafeoejdgabaea`bmfcbzfqfvch````",
-"``````cbbqbjfib`bubiejbmetdv`zdjcvepcyeaacct`d`ncncncndmareaaca`cr`b`a`a`a`a`bcr`leiaccmcpcqdidk`ednbfey`eeueubuatepezaiabaedzembgfpbdbrfvcd````",
-"``````fnbweifibgbufaeyagba`q`u`icwdrfbdjerdy`tajdacmcqcxawapd`co`b`a`af`f`f``a`bcrcocwcu`ccn`yefefcucnerdyegbxahfhem`iev`rendzemfbbkeiblccfw````",
-"````cgg`bdbdalb`ezfgamffewdh`i`g`od`euazbeafbfapdicqcn`wbh`wcm`b`b`af`f`csf`f``a`b`bcocn`ccp`tcndmapajdy`wdpazfl`ubueoae`sesecaobheeeifrbqfyck``",
-"````fzbybkanbmeeflbtejffewen`gcw`i`idpelbfe`ad`meaczcmeaaj`jco`b`a`af`f`f`f`f``a`acrdbcvcpczdyasdi`ydy`tcv`pdpflbhexddekdddxeoemeqeqaufwaxfecg``",
-"````cgbrfjanbseqbuftftemffendu`ucw`o`zebacd`efcpenajcqdyaj`pcv`c`a`af`f`f`f``a`a`ldq`celawardhefdk`k`f`k`md`dudcbnehenardc`sbhfgejaleefaaxfqfx``",
-"````cgbzftbdfobdembeaieqekbaexdjepdhcyacd``edpbt`mdm`najdo`j`eco`b`b`a`af``a`a`bcocrdudy`naccpd``wdo`h`gcvcvdpegdhdb`ie`dddcaheyfcakaqfdfjfqch``",
-"````g`cbfqfwfmbueqbcbhfaenaragbobaduacdudk`kelardydacx`j`p`hcm`c`b`bco`a`a`a`b`b`ldj`p`ncq`f`j`ycydpdpazeg`pcw`g`zbnekdcdeabdlagakayavayfafefz``",
-"````ccbzftbpauakaueyaoeyenewboam`iepehbfeuegafdycz`dcu`najascu`c`ccr`lcr`b`bcr`lcrducz`fcxdi`tcndp`dbxenecdocwduepa`badddcaiaiagfhfhaqanfkfecc``",
-"````fxbrfrfdbdbiakbcbcetabafbaboageuepdzeodnat`h`hcu`kdias`q`ncn`cdbafa`aa`ccobdegeb`n`fcpdmcz`d`jdpaceadnegcvdhduekesdx`sabaiecfcbkavaxfkfqfx``",
-"````cibzftfdfofibiafa`eydd`rdvdvepepdu`iev`odk`e`e`ncxefaodk`hctcucvegcmegdbdw`o`idwajczcq`kcp`dcv`n`vcyezazehcy`qdb`uaddxaheoaub`bsfmbkbzbyfx``",
-"````cjfqbrc`fabmbseebhfgaodc`sdhdv`zdhbf`iazel`e`e`d`perdmctcp`hcpctdpcmejdk`pdycnelapdi`hcp`e`dcvcv`pdtdxamfbex`q`oddaeafafeoemalbmbvfrbwfkci``",
-"````gaccfwfneibjfcauamfgag`rad`o`odjdwbfezdbbfac`k`k`e`ycwcu`dcpctcz`dfgdbdp`n`ndaapefcvapcpcpcp`pcw`vdpen`gdc`r`o`s`oahaga`aieqakeiavfrfwbrcj``",
-"````gag`fefeaxaybmfcaiecaoa`a``o`idebabaeqdgeobfdp`k`fdpffdicvcp`yapdpaseacu`d`ecxajctercvcv`y`e`v`xdodw`i`oejba`s`sabamdfaidlakdqb`bvaxcebzga``",
-"``````fzfnaxaxb`cdbxema`ejaeab`rdnekepepaheuepat`edk`felcweldm`yer`uefefdp`jcn`dczapendi`tbfdh`zdpatdudtcwdnfieoen`rabdfabdlageealbjbqfrcfce````",
-"``````fufeg`fafacafieeaaecdedc`rbo`rbabnah`gexazafep`eegbfflebaterbfcwbfeneldi`kaze`cv`y`n`pepbhdududwbu`sbgevdden`saba`a`ecbgbgayanfdfycjg`````",
-"``````cgbyfeaxfdbqblbgdlaaama`dfafafedbgflcafcaiat`xcwaceg`gfgctatatazcwerbhdkacbfdbcyegd`cyegbxfbaeflbebuboboewdxdeaeaidlbicafjbmblaxfwg`cg````",
-"``````clfxbyfjbdfmfyfhalafeoenbtb`ffbgfmfobmexba`z`icv`vdodod``mdk`vdpateuddeleuerejafadazdoduexehekbndfdebodvafdeahbcafalalakbbavfsbdccfuga````",
-"````````fucbfnaxaxcabdfcdleoeoa`bmb`fofodlbababadgcv`gcycycvd`ac`ect`gdt`e`qbcdvae`iamcyemfh`regdr`ue`arbadw`r`ra`fbfbfcakalakcabqbdbkfxcf``````",
-"````````fxcbfnc`bbfpbscaemdsalbtfgffddagboe`duekdg`gcwdhepdwdrep`pcv`ed`doexeoaoeufbegdreheodudrcyad`o`sdg`ramaobhbpb`bbaqaqfwfrbrcfbrfqfz``````",
-"````````cichccfkaxfsavfdbidlbcbxdsb`fieddcbodnde`q`z`idbaddrdrdrcycvcwcvcwatbufgecemdhdbdre``x`odwexdve`afenesfaemeyc`faflbsbjeifvfecdccga``````",
-"``````````cgcdfkbkbkfrbsanaleeezdqbteyeyewffe`deab`s`icwdb`xdh`i`icwcvcwdhdr`ueqbeekduehe`ducyehen`oeyb`ewfmaybhaaeoakcacafveibvbyfncfch````````",
-"``````````ckcig`fefrccbsalfidqfgdqaqeoaiafaoaf`rdnehdvdwdj`qdhdbcw`i`g`gdjdrdrbabaepexaieqex`udedvewa`bsc`fgbhdldlaibpflfrfmfjbkg`brgacg````````",
-"````````````fzcdfeblg`bvfrbsbieqflb`ema`dfabdcdcahamarbsaiepdwdjdg`u`i`odr`q`o`xe`ehexahafen`o`o`saoaabmeyejaoafafeqfcbseic`fvbyfncccg``````````",
-"````````````gafubybrbrfjc`caayakbgfrfbaiaadlecdcafenboafffbaekduekdv`s`udvehadadeke`bodlfhesab`rdeetagbhecaaakejeeanb`fpfrbdfsbkbrfzcg``````````",
-"``````````````fxcefqfebqfvaveiaqaleeauavfbaidla`dzeneyfiffendx`rdnab`q`idharekdndnenenewecdn`recbtbjbhdfaieqaualdqakaqfmfqfebzfqcjfz````````````",
-"``````````````cjchfxbzfjbwblbjavbgb`fleebjdqemdeagaebca`ffarah`sdne`dea`abdedvamararewafdeaeeobvdsbhaaamemakbgeeeialavftfqbzfwchcjga````````````",
-"````````````````cifubybybdfsfteieibjb`bsfhfyezafdsedemejamdlababdxecaedf`rahafar`rbhecafaedzbmeybcaadldldldqakakaneifdfvfqfkcffxcg``````````````",
-"``````````````````fxcccdfefefwfjeieialaqb`avbgdldlafaaagafdeafaoafamaresameyesafbceoaoamagbheyaaaidsalemauakeibmbjblfabqfefzcecj````````````````",
-"``````````````````gbcegaccfefvcdfaeianavanflbqcafhbueqbgeyemaibcbhfgfmdeaoaiaiamaiedbcejemfabeakededdqaqbvaqbjaxbdfjfjfkcecccgcl````````````````",
-"````````````````````clfzfxfwfefvfaavavbkavauavfidqbxfabkc`ejembgfbafc`bteybhfbdlbcecfbakejbqdlananayb`alb`eifaaxbwfyfycig`fxcj``````````````````",
-"``````````````````````clcjfzfwbzfkbdaxfdbkayeeavayfob`bqbpeeejfcbufhfabxbqbxbueqemb`eddqalauemaueianbsbdfaaxaxbzfvcbfnfnfuci````````````````````",
-"````````````````````````gbcgfzfkfebrbkfabqfrc`fibvbdfofibiakaydqbqfcbxbiakfsfheqakaqfcflfhanakb`bvfrbyfmaxbkfecdfqbyccfxcj``````````````````````",
-"``````````````````````````ckcjcccifqcbfwfjfvfrc`g`bvfdfrbsakbgfmfjfheedqdqfhfldqb`bvcdbianeeanblblfofdbdfdfefzbybycccgcl````````````````````````",
-"````````````````````````````clfxcicccefnfwchfrfrftc`blfmeiavblbsfvbsbbayfabdfaanavbseebjbsblfabdaxaxblbkfeccfucffxfzgb``````````````````````````",
-"``````````````````````````````gbcicicbfqcdbyblbqbdfdfebdavfofrbdaxfrfwbzaxblaneiaxfafrfjfsftfrfvfvbwfefeccfzccfxcgcl````````````````````````````",
-"``````````````````````````````````gackcgcgfxbrbybrfafkbwbqaxaxfabrfwfpbdbkbqbkbkblbqfafvcffyfyfnbyfkfececfcjfzcj````````````````````````````````",
-"````````````````````````````````````gbgacjfxbyccbzfebzfvccfvfwbqbkblbqblbqbqfsfkfybrbzfwfyfqbrfebrfucjchcgcjcl``````````````````````````````````",
-"````````````````````````````````````````clgbcgfxfnbyfqfqfwccbzcbbybyfyfwfnbzbzcfchfxbrfwbzcdfncccccjcjcjcl``````````````````````````````````````",
-"````````````````````````````````````````````clcifzcichckcgcbccfuccfwcbg`cecfbrfncefzfubybzcbchchgagacl``````````````````````````````````````````",
-"````````````````````````````````````````````````gbclcgchckfxcjchchcccifxckgachcicjchfzfufxcjgaclgb``````````````````````````````````````````````",
-"``````````````````````````````````````````````````````clclckcggacicicjcgcgcjcgcgcgcgckcjclgb````````````````````````````````````````````````````",
-"``````````````````````````````````````````````````````````````clgbgbgbgbgbclgbgbclgb````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade2.xpm b/hacks/images/bubbles/jade2.xpm
deleted file mode 100644 (file)
index b070304..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/* XPM */
-static char *jade2[] = {
-/* width height ncolors chars_per_pixel */
-"12 12 76 2",
-/* colors */
-"`` c None",
-"`a c #35CB35",
-"`b c #1AA71A",
-"`c c #158B15",
-"`d c #148914",
-"`e c #158715",
-"`f c #137513",
-"`g c #107710",
-"`h c #0F6D0F",
-"`i c #0E6B0E",
-"`j c #0E690E",
-"`k c #0F650F",
-"`l c #0E630E",
-"`m c #0A5F0A",
-"`n c #036703",
-"`o c #0B570B",
-"`p c #075D07",
-"`q c #0A550A",
-"`r c #0C4F0C",
-"`s c #0A510A",
-"`t c #045704",
-"`u c #065106",
-"`v c #074D07",
-"`w c #074B07",
-"`x c #094709",
-"`y c #063B06",
-"`z c #073907",
-"a` c #033D03",
-"aa c #033B03",
-"ab c #053505",
-"ac c #003D00",
-"ad c #053105",
-"ae c #003700",
-"af c #042904",
-"ag c #012301",
-"ah c #011501",
-"ai c #1CB41C",
-"aj c #17A217",
-"ak c #189E18",
-"al c #189A18",
-"am c #119011",
-"an c #128A12",
-"ao c #0F8C0F",
-"ap c #148214",
-"aq c #138013",
-"ar c #0F7A0F",
-"as c #0B800B",
-"at c #0A7A0A",
-"au c #0A780A",
-"av c #0A760A",
-"aw c #0B720B",
-"ax c #0F6A0F",
-"ay c #0A6A0A",
-"az c #056C05",
-"b` c #056A05",
-"ba c #076407",
-"bb c #0D580D",
-"bc c #0A5C0A",
-"bd c #046404",
-"be c #075A07",
-"bf c #045E04",
-"bg c #055605",
-"bh c #035003",
-"bi c #015201",
-"bj c #B1FFB1",
-"bk c #034803",
-"bl c #044604",
-"bm c #074007",
-"bn c #083E08",
-"bo c #024402",
-"bp c #044004",
-"bq c #013A01",
-"br c #052E05",
-"bs c #042C04",
-"bt c #012A01",
-"bu c #000A00",
-/* pixels */
-"`````````l`ja`aqae``````",
-"`````zbp`calaubd`mbobt``",
-"`````fbibdaj`pbgau`u`h``",
-"``adbl`w`nasaiawazakbebm",
-"``bp`tbkaoanbjalb`ac`ebb",
-"```qbebaamaj`aamavalap`o",
-"```rbcbf`batavbeavbp`g`y",
-"``af`wbp`dawalaraybgbqag",
-"````abbq`h`i`gbhax`vbs``",
-"````bu`xaa`s`kblaabnah``",
-"````````bradbr`zaf``````",
-"````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade3.xpm b/hacks/images/bubbles/jade3.xpm
deleted file mode 100644 (file)
index 3e8a102..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/* XPM */
-static char *jade3[] = {
-/* width height ncolors chars_per_pixel */
-"14 14 93 2",
-/* colors */
-"`` c None",
-"`a c #35CB35",
-"`b c #1CB11C",
-"`c c #1AA71A",
-"`d c #169D16",
-"`e c #179717",
-"`f c #179317",
-"`g c #158B15",
-"`h c #148914",
-"`i c #158715",
-"`j c #0F890F",
-"`k c #128312",
-"`l c #0D830D",
-"`m c #127912",
-"`n c #137513",
-"`o c #0C7D0C",
-"`p c #0E750E",
-"`q c #0F730F",
-"`r c #0F6F0F",
-"`s c #0F6D0F",
-"`t c #0E6B0E",
-"`u c #077307",
-"`v c #0E630E",
-"`w c #0B630B",
-"`x c #0A5F0A",
-"`y c #0A550A",
-"`z c #0B530B",
-"a` c #0C4F0C",
-"aa c #094F09",
-"ab c #045704",
-"ac c #0A4D0A",
-"ad c #065306",
-"ae c #0A4B0A",
-"af c #065106",
-"ag c #015901",
-"ah c #054F05",
-"ai c #074B07",
-"aj c #084908",
-"ak c #084508",
-"al c #064706",
-"am c #073907",
-"an c #033D03",
-"ao c #053505",
-"ap c #063306",
-"aq c #042B04",
-"ar c #042904",
-"as c #011D01",
-"at c #011901",
-"au c #21B621",
-"av c #1CB41C",
-"aw c white",
-"ax c #18A418",
-"ay c #189A18",
-"az c #149C14",
-"b` c #149014",
-"ba c #0F8C0F",
-"bb c #128612",
-"bc c #148214",
-"bd c #138013",
-"be c #107C10",
-"bf c #0A760A",
-"bg c #0F6A0F",
-"bh c #0A6A0A",
-"bi c #0C660C",
-"bj c #0A660A",
-"bk c #0B620B",
-"bl c #0C600C",
-"bm c #056A05",
-"bn c #066806",
-"bo c #076407",
-"bp c #0D580D",
-"bq c #0A5C0A",
-"br c #076007",
-"bs c #046404",
-"bt c #0A5A0A",
-"bu c #075A07",
-"bv c #095409",
-"bw c #035003",
-"bx c #034C03",
-"by c #074207",
-"bz c #034803",
-"c` c #044604",
-"ca c #074007",
-"cb c #083E08",
-"cc c #024402",
-"cd c #053805",
-"ce c #023802",
-"cf c #012E01",
-"cg c #042604",
-"ch c #022802",
-"ci c #042404",
-"cj c #022002",
-"ck c #011E01",
-/* pixels */
-"``````````aa`rbdahbp````````",
-"``````akbi`gay`hal`qbgce````",
-"````aebu`kbnayah`c`o`xahcf``",
-"`````sb`cc`bbj`eaubmbfbbai``",
-"``ambd`q`o`dba`f`cbxbfbkbcae",
-"``aebk`fbeav`aawbc`j`obqadae",
-"``ca`wbvbsaxau`abfazcc`t`mbp",
-"``a``s`f`xax`d`ubm`lbo`i`nae",
-"``aqaaajab`ebhagbzagbwafc`cb",
-"````cjai`rbj`pbhbr`gafblam``",
-"````asaoanbtadbiad`v`yaecg``",
-"``````cichcdby`zceacaeci````",
-"``````````arcgckapat````````",
-"````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade4.xpm b/hacks/images/bubbles/jade4.xpm
deleted file mode 100644 (file)
index ce3dc39..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/* XPM */
-static char *jade4[] = {
-/* width height ncolors chars_per_pixel */
-"20 20 143 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #23BD23",
-"`d c #1CB11C",
-"`e c #1AA71A",
-"`f c #169D16",
-"`g c #179717",
-"`h c #149914",
-"`i c #179317",
-"`j c #1A8B1A",
-"`k c #158B15",
-"`l c #148914",
-"`m c #158715",
-"`n c #148514",
-"`o c #0F890F",
-"`p c #128312",
-"`q c #0E850E",
-"`r c #0D830D",
-"`s c #0F7F0F",
-"`t c #127912",
-"`u c #107710",
-"`v c #0C7D0C",
-"`w c #0E750E",
-"`x c #0F730F",
-"`y c #0F6F0F",
-"`z c #0E6B0E",
-"a` c #077307",
-"aa c #0F650F",
-"ab c #0E630E",
-"ac c #0B630B",
-"ad c #0D5B0D",
-"ae c #036703",
-"af c #0B570B",
-"ag c #075D07",
-"ah c #026502",
-"ai c #046104",
-"aj c #0A550A",
-"ak c #0B530B",
-"al c #016101",
-"am c #094F09",
-"an c #065306",
-"ao c #0A4B0A",
-"ap c #065106",
-"aq c #074D07",
-"ar c #054F05",
-"as c #074B07",
-"at c #084908",
-"au c #094709",
-"av c #084508",
-"aw c #064706",
-"ax c #014F01",
-"ay c #004B00",
-"az c #063B06",
-"b` c #073907",
-"ba c #004100",
-"bb c #013F01",
-"bc c #033B03",
-"bd c #053505",
-"be c #003700",
-"bf c #042B04",
-"bg c #042904",
-"bh c #012301",
-"bi c #022102",
-"bj c #021B02",
-"bk c #011901",
-"bl c #011701",
-"bm c #011501",
-"bn c #011301",
-"bo c #010D01",
-"bp c #21B621",
-"bq c #1CB41C",
-"br c #22AA22",
-"bs c #1AAC1A",
-"bt c #18A818",
-"bu c white",
-"bv c #18A418",
-"bw c #17A217",
-"bx c #189E18",
-"by c #189A18",
-"bz c #149014",
-"c` c #119011",
-"ca c #128A12",
-"cb c #128612",
-"cc c #127E12",
-"cd c #127C12",
-"ce c #107C10",
-"cf c #0F7A0F",
-"cg c #0B800B",
-"ch c #0E780E",
-"ci c #0B7C0B",
-"cj c #117211",
-"ck c #0A7A0A",
-"cl c #0E720E",
-"cm c #0A760A",
-"cn c #106A10",
-"co c #0B720B",
-"cp c #0F6A0F",
-"cq c #0A6E0A",
-"cr c #0B6C0B",
-"cs c #0A6A0A",
-"ct c #0B680B",
-"cu c #067006",
-"cv c #0A660A",
-"cw c #056C05",
-"cx c #0B620B",
-"cy c #0D5E0D",
-"cz c #056A05",
-"d` c #066806",
-"da c #076407",
-"db c #0D580D",
-"dc c #076007",
-"dd c #0A5A0A",
-"de c #075A07",
-"df c #085808",
-"dg c #045E04",
-"dh c #015E01",
-"di c #055605",
-"dj c #015201",
-"dk c #034C03",
-"dl c #034A03",
-"dm c #074207",
-"dn c #034803",
-"do c #044604",
-"dp c #083E08",
-"dq c #014601",
-"dr c #044004",
-"ds c #053805",
-"dt c #063606",
-"du c #013A01",
-"dv c #023802",
-"dw c #052E05",
-"dx c #013401",
-"dy c #042C04",
-"dz c #013001",
-"e` c #042604",
-"ea c #012A01",
-"eb c #022802",
-"ec c #042404",
-"ed c #002600",
-"ee c #022002",
-"ef c #011E01",
-"eg c #001000",
-/* pixels */
-"``````````````dwdmdzbbaoauds````````````",
-"``````````dpasba`zce`ncd`yddasdt````````",
-"````````azcpcr`wcm`sbycldc`x`maadm``````",
-"``````aucxcr`ncmbxcb`halcmbzdgdecpaz````",
-"````dpcydzdjbwci`dcuagbvcrcz`eapascybh``",
-"````dwan`ldj`o`rcg`hcgbqahdidhbzdc`tdb``",
-"``bicyabcod``fbpcabqbw`cckcuc`bxax`tdbbk",
-"``bdaw`mcfbvbwbsa`br`a`jbpcgbs`eacctbedy",
-"``auaddqbzczcbc``o`abu`b`qaecm`vayclabb`",
-"``eacnan`idaaibqclbr`b`jbtbsdoby`kcjawbk",
-"``bhamdlcccq`k`f`h`d`p`rcwbs`vax`n`taje`",
-"``efdxcjcddjced`dndharcu`rdndjdj`xarakee",
-"``bndmbedd`tchbzcs`ico`gcscqcecvabajebbn",
-"````eebcabcx`ycvce`kcqdc`x`mdqdfbedvdt``",
-"````bodtaddudk`yagcv`udeclcj`yaqafb`bl``",
-"``````bjdpdbdratdodlandkajaaabavbkee````",
-"````````bjebaudvabdmabasafaoaubgec``````",
-"``````````egbfdtedaudpaudwdpecbn````````",
-"``````````````bobmbmbkbjeebo````````````",
-"````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade5.xpm b/hacks/images/bubbles/jade5.xpm
deleted file mode 100644 (file)
index 120e97b..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/* XPM */
-static char *jade5[] = {
-/* width height ncolors chars_per_pixel */
-"24 24 169 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #23BD23",
-"`d c #1CB11C",
-"`e c #1AA71A",
-"`f c #169D16",
-"`g c #149914",
-"`h c #179317",
-"`i c #139713",
-"`j c #149514",
-"`k c #1A8B1A",
-"`l c #159315",
-"`m c #129312",
-"`n c #158B15",
-"`o c #148914",
-"`p c #158715",
-"`q c #148514",
-"`r c #128312",
-"`s c #0F870F",
-"`t c #0E850E",
-"`u c #108110",
-"`v c #0D830D",
-"`w c #0F7F0F",
-"`x c #127912",
-"`y c #137513",
-"`z c #107710",
-"a` c #0C7D0C",
-"aa c #0E750E",
-"ab c #0F730F",
-"ac c #0F6F0F",
-"ad c #0F6D0F",
-"ae c #0E6B0E",
-"af c #0E690E",
-"ag c #077307",
-"ah c #0F650F",
-"ai c #0E630E",
-"aj c #0B630B",
-"ak c #0D5B0D",
-"al c #0A5F0A",
-"am c #036703",
-"an c #0B570B",
-"ao c #075D07",
-"ap c #0A550A",
-"aq c #0B530B",
-"ar c #016101",
-"as c #0C4F0C",
-"at c #0A510A",
-"au c #025B02",
-"av c #045704",
-"aw c #0A4D0A",
-"ax c #065306",
-"ay c #0A4B0A",
-"az c #065106",
-"b` c #015901",
-"ba c #074D07",
-"bb c #054F05",
-"bc c #074B07",
-"bd c #084908",
-"be c #094709",
-"bf c #084508",
-"bg c #064706",
-"bh c #014F01",
-"bi c #004B00",
-"bj c #063B06",
-"bk c #073907",
-"bl c #033D03",
-"bm c #004100",
-"bn c #033B03",
-"bo c #053505",
-"bp c #003D00",
-"bq c #063306",
-"br c #053105",
-"bs c #003700",
-"bt c #042B04",
-"bu c #042904",
-"bv c #012301",
-"bw c #022102",
-"bx c #011D01",
-"by c #021B02",
-"bz c #011901",
-"c` c #011701",
-"ca c #011501",
-"cb c #011301",
-"cc c #010D01",
-"cd c #1CB41C",
-"ce c #1AAC1A",
-"cf c #1F9C1F",
-"cg c #18A418",
-"ch c #17A217",
-"ci c #189E18",
-"cj c #189A18",
-"ck c #149C14",
-"cl c #149014",
-"cm c #119011",
-"cn c #128A12",
-"co c #0F8C0F",
-"cp c #128612",
-"cq c #148214",
-"cr c #138013",
-"cs c #127C12",
-"ct c #0F7A0F",
-"cu c #0B800B",
-"cv c #0B7C0B",
-"cw c #117211",
-"cx c #0A7A0A",
-"cy c #0E720E",
-"cz c #0A780A",
-"d` c #0A760A",
-"da c #106A10",
-"db c #0B720B",
-"dc c #0F6A0F",
-"dd c #0A700A",
-"de c #0A6E0A",
-"df c #0B6C0B",
-"dg c #0A6A0A",
-"dh c #067006",
-"di c #0C660C",
-"dj c #0A660A",
-"dk c #056E05",
-"dl c #056C05",
-"dm c #0B620B",
-"dn c #0C600C",
-"do c #0D5E0D",
-"dp c #056A05",
-"dq c #066806",
-"dr c #076407",
-"ds c #0D580D",
-"dt c #0A5C0A",
-"du c #076007",
-"dv c #046404",
-"dw c #0A5A0A",
-"dx c #075A07",
-"dy c #045E04",
-"dz c #095409",
-"e` c #015E01",
-"ea c #055605",
-"eb c #015601",
-"ec c #035003",
-"ed c #015201",
-"ee c #034C03",
-"ef c #034A03",
-"eg c #B1FFB1",
-"eh c #074207",
-"ei c #034803",
-"ej c #044604",
-"ek c #074007",
-"el c #083E08",
-"em c #014601",
-"en c #024402",
-"eo c #034203",
-"ep c #044004",
-"eq c #053805",
-"er c #063606",
-"es c #013A01",
-"et c #023802",
-"eu c #052E05",
-"ev c #042C04",
-"ew c #013001",
-"ex c #012E01",
-"ey c #012C01",
-"ez c #012A01",
-"f` c #022802",
-"fa c #042404",
-"fb c #002600",
-"fc c #022002",
-"fd c #011E01",
-"fe c #001000",
-"ff c #000A00",
-/* pixels */
-"``````````````````eleubedsaqbfer````````````````",
-"``````````````ayaibbafdiblbbcrefbsaw````````````",
-"``````````f`etdtajaoclaadyeobsaacq`ydoer````````",
-"````````bkapepab`n`lcjdqczcydvb`alduenakez``````",
-"``````buepafbhdeebcj`u`wdvcvbpa`cgej`qdmezc`````",
-"``````ek`yduedcidv`icharaoceea`mcz`tazesadbr````",
-"````bkapdi`naadl`f`feedj`lcdar`t`reacj`hacakel``",
-"````brdoejclbc`eam`mcucdcdcddbcndlagcidydxdwek``",
-"``faeheietdbdb`gcddk`fcf`b`pdkckam`vdv`h`xcwatfd",
-"``euepehav`heidhcockcn`aeg`bcjcddpe`bpdw`pdwdsf`",
-"``bkbleyem`r`wcndxdhci`aeg`a`caocv`jdedrcqendoev",
-"``brapeedxajdrdqcm`mchcf`b`kcmcud`dxcj`xcqadanel",
-"``evehdoalctctau`ee`cecgdtdhamceciddei`nacdwbner",
-"``fcasbpdt`pdyeb`edvcx`rd``ddxb`d`ddep`p`zdobjbw",
-"``cceqfbacbmbabg`w`scn`sebebacczdrcsdfaeaiawayfe",
-"````buexbcbpepbi`ocpdbcicjenctdjdgdjeaeeesdsbv``",
-"````fcbfewdzdw`zaebldg`rdb`ueddx`qbgaldzdsbqby``",
-"``````faboaqesdaad`xaedj`zajecabdcajbaaievbz````",
-"``````ffbubvakeseobaafenalajaxehdnanbdeqbwcc````",
-"````````fferbeewbnepatejahdzejakbnetelbqca``````",
-"``````````ffbtbqayayewewasdseweyezelbucc````````",
-"``````````````ffeuevbrbqeubxbkbvbuca````````````",
-"``````````````````ccbyc`bybycbff````````````````",
-"````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade6.xpm b/hacks/images/bubbles/jade6.xpm
deleted file mode 100644 (file)
index 521acf9..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/* XPM */
-static char *jade6[] = {
-/* width height ncolors chars_per_pixel */
-"30 30 185 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #23BD23",
-"`d c #1CB11C",
-"`e c #1AA71A",
-"`f c #169D16",
-"`g c #179717",
-"`h c #149914",
-"`i c #179317",
-"`j c #139713",
-"`k c #149514",
-"`l c #1A8B1A",
-"`m c #159315",
-"`n c #129312",
-"`o c #158B15",
-"`p c #128D12",
-"`q c #148914",
-"`r c #158715",
-"`s c #148514",
-"`t c #0F890F",
-"`u c #128312",
-"`v c #0F870F",
-"`w c #0E850E",
-"`x c #108110",
-"`y c #0D830D",
-"`z c #0F7F0F",
-"a` c #127912",
-"aa c #137513",
-"ab c #107710",
-"ac c #0C7D0C",
-"ad c #0E750E",
-"ae c #0F730F",
-"af c #0F6F0F",
-"ag c #0F6D0F",
-"ah c #0E6B0E",
-"ai c #0E690E",
-"aj c #077307",
-"ak c #0F650F",
-"al c #0E630E",
-"am c #0B630B",
-"an c #0D5B0D",
-"ao c #0A5F0A",
-"ap c #036703",
-"aq c #0B570B",
-"ar c #075D07",
-"as c #026502",
-"at c #046104",
-"au c #0A550A",
-"av c #0B530B",
-"aw c #0C4F0C",
-"ax c #0A510A",
-"ay c #025B02",
-"az c #094F09",
-"b` c #045704",
-"ba c #065306",
-"bb c #0A4B0A",
-"bc c #065106",
-"bd c #015901",
-"be c #074D07",
-"bf c #054F05",
-"bg c #074B07",
-"bh c #084908",
-"bi c #094709",
-"bj c #084508",
-"bk c #064706",
-"bl c #014F01",
-"bm c #004B00",
-"bn c #063D06",
-"bo c #063B06",
-"bp c #073907",
-"bq c #033D03",
-"br c #004100",
-"bs c #013F01",
-"bt c #033B03",
-"bu c #053505",
-"bv c #003D00",
-"bw c #063306",
-"bx c #053105",
-"by c #023502",
-"bz c #003700",
-"c` c #042B04",
-"ca c #042904",
-"cb c #012301",
-"cc c #022102",
-"cd c #011D01",
-"ce c #021B02",
-"cf c #011901",
-"cg c #011701",
-"ch c #011501",
-"ci c #011301",
-"cj c #010D01",
-"ck c #21B621",
-"cl c #1CB41C",
-"cm c #22AA22",
-"cn c #1AAC1A",
-"co c #18A818",
-"cp c #1F9C1F",
-"cq c #18A418",
-"cr c #17A217",
-"cs c #189E18",
-"ct c #189A18",
-"cu c #149C14",
-"cv c #149014",
-"cw c #119011",
-"cx c #128A12",
-"cy c #0F8C0F",
-"cz c #128612",
-"d` c #148214",
-"da c #138013",
-"db c #127E12",
-"dc c #127C12",
-"dd c #107C10",
-"de c #0F7A0F",
-"df c #0B800B",
-"dg c #0E780E",
-"dh c #0B7C0B",
-"di c #117211",
-"dj c #0A7A0A",
-"dk c #0E720E",
-"dl c #0A780A",
-"dm c #0A760A",
-"dn c #106A10",
-"do c #0B720B",
-"dp c #0F6A0F",
-"dq c #0A6E0A",
-"dr c #0B6C0B",
-"ds c #0A6A0A",
-"dt c #0B680B",
-"du c #067006",
-"dv c #0C660C",
-"dw c #0A660A",
-"dx c #056E05",
-"dy c #056C05",
-"dz c #0B620B",
-"e` c #0C600C",
-"ea c #0D5E0D",
-"eb c #056A05",
-"ec c #066806",
-"ed c #076407",
-"ee c #0D580D",
-"ef c #0A5C0A",
-"eg c #076007",
-"eh c #046404",
-"ei c #0A5A0A",
-"ej c #075A07",
-"ek c #085808",
-"el c #045E04",
-"em c #095409",
-"en c #015E01",
-"eo c #055605",
-"ep c #055405",
-"eq c #015601",
-"er c #035003",
-"es c #015201",
-"et c #034C03",
-"eu c #B1FFB1",
-"ev c #074207",
-"ew c #034803",
-"ex c #044604",
-"ey c #074007",
-"ez c #083E08",
-"f` c #014601",
-"fa c #024402",
-"fb c #044004",
-"fc c #053805",
-"fd c #063606",
-"fe c #013A01",
-"ff c #023802",
-"fg c #052E05",
-"fh c #013401",
-"fi c #013201",
-"fj c #042C04",
-"fk c #013001",
-"fl c #012E01",
-"fm c #012C01",
-"fn c #042604",
-"fo c #012A01",
-"fp c #022802",
-"fq c #042404",
-"fr c #002600",
-"fs c #022002",
-"ft c #011E01",
-"fu c #001000",
-"fv c #000A00",
-/* pixels */
-"````````````````````````fpfmbbavbyfoca``````````````````````",
-"``````````````````bwfhdndnafa`fkagbsbgeeeycc````````````````",
-"````````````````eebgagakahdbdw`sblf`aff`bqbgfh``````````````",
-"````````````fpanbsamejde`qdo`iefbdbzfeegd`ekbcavbx``````````",
-"``````````bpazaaa`dd`octdgcq`odlaodqecbdaob`aketbgfo````````",
-"````````fpaxdzd``r`ses`gcsdten`hdfdddmec`peldceidpbkfg``````",
-"````````ffeiaaa`elcsecdyajdeckepclcvascn`v`eaierf`diee``````",
-"``````cbanf`bm`xczdheh`dcnckerapeb`fcw`hcvcxecexdcagalbi````",
-"````fqfgemet`qatfe`tdl`hdfeoerdf`c`was`g`xencz`iegeodneece``",
-"````bpakbaex`odeeb`eapcl`fcqcrcl`c`t`eardyayddategeje`eeft``",
-"````fcdnau`raees`fcwcncydxdx`e`lckduclajducwctbzbqaba`azbu``",
-"``chflbkbfbmdeecebcrclcnajab`b`a`acmckcwcncnczfaamabaibzbofu",
-"``fqbbeadzet`q`icndwdhcn`y`b`aeu`a`l`c`jdfduacahbs`rdzdibobw",
-"``ftavazeaepeg`xdmaccvclcycm`aeu`acpap`f`wcwctay`q`rfadncbfg",
-"``fseydndzej`ieqeqatcwcrdk`c`l`b`lcpcodhdmexdqed`od`eibkeefg",
-"``fqbofbaiahdaedcveccraj`t`hdj`daj`d`ncucs`m`e`z`qahetazbbfq",
-"``chfmazefaoadczeqdbdh`pdm`dduebcldfbddl`pdmesed`sd`alalbicd",
-"``cjbxfheidvdcfbblddcscxew`icqbf`wdr`yacehesbebmaeaaexavceci",
-"````cbevfcdibafkfbes`qcs`kctctctekdebsesdqblb`ddf`aoakbpch``",
-"````ftcdbhbgexake`eg`q`gdqdocsctfebs`udrdsdkegbraqfebbbbcf``",
-"````cjfscbfhalbqabafdkeodd`x`odqddedaedgddf`bfaabzbbbifdfv``",
-"``````fqezeeeefefaafdtbmardb`oabdwegbmdcbcbaemakeafjfpfq````",
-"````````fnbifcaxbgbvdpdvdcafdwdadweraeanaoageaaqawbucc``````",
-"````````fvfqezaweafbfkeaexbvagbaeiaoaubce`aleeavcffsch``````",
-"``````````fvbxbpbnfibtbzakavfeakbgeabzakbtbobjfjbxch````````",
-"````````````cjcefpfobubobjezbtfkaneveebybuevcafqcj``````````",
-"````````````````fuc`bpfdfrezbbezfofnfgbxbpfqce``````````````",
-"``````````````````cjchchfufqcbcgcecefncccifv````````````````",
-"````````````````````````cjcjcicgcicjfv``````````````````````",
-"````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade7.xpm b/hacks/images/bubbles/jade7.xpm
deleted file mode 100644 (file)
index 8c26b3d..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/* XPM */
-static char *jade7[] = {
-/* width height ncolors chars_per_pixel */
-"36 36 189 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #23BD23",
-"`d c #1CB11C",
-"`e c #1AA71A",
-"`f c #169D16",
-"`g c #179717",
-"`h c #149914",
-"`i c #179317",
-"`j c #139713",
-"`k c #149514",
-"`l c #1A8B1A",
-"`m c #159315",
-"`n c #129312",
-"`o c #158B15",
-"`p c #128D12",
-"`q c #148914",
-"`r c #158715",
-"`s c #148514",
-"`t c #0F890F",
-"`u c #128312",
-"`v c #0F870F",
-"`w c #0E850E",
-"`x c #108110",
-"`y c #0D830D",
-"`z c #0F7F0F",
-"a` c #127912",
-"aa c #137513",
-"ab c #107710",
-"ac c #0C7D0C",
-"ad c #0E750E",
-"ae c #0F730F",
-"af c #0F6F0F",
-"ag c #0F6D0F",
-"ah c #0E6B0E",
-"ai c #0E690E",
-"aj c #077307",
-"ak c #0F650F",
-"al c #0E630E",
-"am c #0B630B",
-"an c #0D5B0D",
-"ao c #0A5F0A",
-"ap c #036703",
-"aq c #0B570B",
-"ar c #075D07",
-"as c #026502",
-"at c #046104",
-"au c #0A550A",
-"av c #0B530B",
-"aw c #016101",
-"ax c #0C4F0C",
-"ay c #0A510A",
-"az c #025B02",
-"b` c #094F09",
-"ba c #045704",
-"bb c #0A4D0A",
-"bc c #065306",
-"bd c #0A4B0A",
-"be c #065106",
-"bf c #015901",
-"bg c #074D07",
-"bh c #054F05",
-"bi c #074B07",
-"bj c #084908",
-"bk c #094709",
-"bl c #084508",
-"bm c #064706",
-"bn c #014F01",
-"bo c #004B00",
-"bp c #063D06",
-"bq c #063B06",
-"br c #073907",
-"bs c #033D03",
-"bt c #013F01",
-"bu c #033B03",
-"bv c #053505",
-"bw c #003D00",
-"bx c #063306",
-"by c #053105",
-"bz c #023502",
-"c` c #003700",
-"ca c #042904",
-"cb c #012301",
-"cc c #022102",
-"cd c #011D01",
-"ce c #021B02",
-"cf c #011901",
-"cg c #011701",
-"ch c #011501",
-"ci c #011301",
-"cj c #010D01",
-"ck c #21B621",
-"cl c #1CB41C",
-"cm c #22AA22",
-"cn c #1AAC1A",
-"co c #18A818",
-"cp c #1F9C1F",
-"cq c #18A418",
-"cr c #17A217",
-"cs c #189E18",
-"ct c #189A18",
-"cu c #149C14",
-"cv c #149014",
-"cw c #119011",
-"cx c #128A12",
-"cy c #0F8C0F",
-"cz c #128612",
-"d` c #148214",
-"da c #138013",
-"db c #127E12",
-"dc c #127C12",
-"dd c #107C10",
-"de c #0F7A0F",
-"df c #0B800B",
-"dg c #0E780E",
-"dh c #0B7C0B",
-"di c #117211",
-"dj c #0A7A0A",
-"dk c #0E720E",
-"dl c #0A780A",
-"dm c #0A760A",
-"dn c #106A10",
-"do c #0B720B",
-"dp c #0F6A0F",
-"dq c #0A700A",
-"dr c #0A6E0A",
-"ds c #0B6C0B",
-"dt c #0A6A0A",
-"du c #0B680B",
-"dv c #067006",
-"dw c #0C660C",
-"dx c #0A660A",
-"dy c #056E05",
-"dz c #056C05",
-"e` c #0B620B",
-"ea c #0C600C",
-"eb c #0D5E0D",
-"ec c #056A05",
-"ed c #066806",
-"ee c #076407",
-"ef c #0D580D",
-"eg c #0A5C0A",
-"eh c #076007",
-"ei c #046404",
-"ej c #0A5A0A",
-"ek c #075A07",
-"el c #085808",
-"em c #045E04",
-"en c #095409",
-"eo c #015E01",
-"ep c #055605",
-"eq c #055405",
-"er c #015601",
-"es c #015401",
-"et c #035003",
-"eu c #015201",
-"ev c #034C03",
-"ew c #034A03",
-"ex c #B1FFB1",
-"ey c #074207",
-"ez c #034803",
-"f` c #044604",
-"fa c #074007",
-"fb c #083E08",
-"fc c #014601",
-"fd c #024402",
-"fe c #034203",
-"ff c #044004",
-"fg c #053805",
-"fh c #063606",
-"fi c #013A01",
-"fj c #023802",
-"fk c #052E05",
-"fl c #013401",
-"fm c #013201",
-"fn c #042C04",
-"fo c #013001",
-"fp c #012E01",
-"fq c #012C01",
-"fr c #042604",
-"fs c #012A01",
-"ft c #022802",
-"fu c #042404",
-"fv c #002600",
-"fw c #022002",
-"fx c #011E01",
-"fy c #001000",
-"fz c #000A00",
-/* pixels */
-"````````````````````````````````fbeyeybvfn``````````````````````````````",
-"````````````````````````fkfqbjavdnbmeaafbmaqfvavby``````````````````````",
-"````````````````````fsbdalb`fdaievepbsdievdabjauc`bvbl``````````````````",
-"``````````````````avf`aleleve`dbdk`of`eldieharbjfjezdney````````````````",
-"``````````````fnaydneleqdb`i`o`i`idddweuemerbhesabbzbcbtayfh````````````",
-"````````````brbsenffdadd`o`odrctcvdxdleobfeiesbnaobafcfdfebufs``````````",
-"``````````caeyaqebe`boa`biaccndmat`ycnec`ddxed`v`iehai`raubgb`fk````````",
-"``````````efakalahbo`ucvazdzajdddecldscnclao`kcv`kdqfebneqdibmft````````",
-"````````fvefaaegdreucv`geicscncrdvdxarcw`fepclcwdlctdgbebnfoagakfg``````",
-"``````ccblakbcbodeeudlfd`hclclasapaw`dapaw`w`d`t`eaj`m`zekabdidnayfx````",
-"``````bvebbeag`seeemdm`deodjcnevdy`dcu`c`jasasfc`deoek`zadboepafanfb````",
-"````fwbyenbhf``rcxbicvcsap`fcydf`c`jcl`c`wdock`udzbfeccserboekegalfacf``",
-"````caeyeaaqbna`elcqcv`fco`hek`tcy`i`r`c`f`kcoareocydveie`fla`dcbmeffk``",
-"````eybbbwbhelcz`zbfcscqclcras`w`bcmcp`a`rdf`ccw`zapdsazerelddaebmbyfs``",
-"````bvffbtevba`uctezeo`tcycoawcx`b`aex`acpct`c`yeccldvbwfe`i`rdwezefca``",
-"``fwbkbmfieget`g`idmbfaddyckajcm`aexexex`aczcndvdfdvcsdmbhdadaelenauaxce",
-"``cefqflejaieheuemcvcxdm`m`ndl`e`b`aex`acmdr`ncn`w`hcsdmde`idaahf`aqfgcf",
-"``cafqauauaoekbo`ieeerafcwcrajcr`c`l`bcpcpcwcu`tdmbwe`ctembad`aifeaqfhca",
-"``cgfqflbia`dadsemdresdh`ecuao`hcrededdt`iajcocncs`vewee`q`uduelb`fjbyfu",
-"``fyfteff`amagad`odtewbf`k`ect`dcq`dcz`ncyecapcn`p`vekd``o`oagaiakavftch",
-"````fkaxcbejegabdkemahem`e`fctdjeoecdmclcwek`tdedmdrctffekababagalbqcd``",
-"````bxaxbqbgaaa`afeafif`atctedfdatazeodhbfcvcxedezfibtboduaedic`bmaxfx``",
-"````frfkaxbddielbmfldibadd`gcvcx`e`g`ebcaeamej`rdodxba`ra`ezakakbqbkcd``",
-"````cgcaaxavbibcdpffd`dk`q`iaddocvctctbte`dedo`xdtdsafepejbzfibjfscbfy``",
-"``````cgfbcaaldndnelafafdkdsdgdect`gdgdobaeuen`udsa`bzbhdibpfofgfxfy````",
-"``````fybxbrbzaybgezaae`afbofceheh`sdsadehbofeabdbage`akebb`fofpbrce````",
-"````````cfbybvbjbgfibjejagbcfcahdkdbabdsaretdbeldpaaejbgefavfnftch``````",
-"``````````cafbftefalb`bgdiaaafafafaramepbcaoagevaialauefbjeyfbcc````````",
-"``````````cjfufbeyavavavdneybzejezbzevezbcezegdianb`b`eybvfvfxch````````",
-"````````````fzfwfbbkbqbzbuflbiaybqbwakfeakf`feakbubxaxfbfncach``````````",
-"``````````````cjcgccftfofqblefblfsbbeyeyavebbseyaxblfbfrfufz````````````",
-"``````````````````cicebrbrfhbqaxbrfmbkbkbleycdfvbxfbcdfw````````````````",
-"````````````````````cjcefkfnftbybxfvfkbycfbrbyfkcachcj``````````````````",
-"````````````````````````fzcecichcfcgcicfchfwfufyfz``````````````````````",
-"````````````````````````````````fzfzfzfzcj``````````````````````````````",
-"````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade8.xpm b/hacks/images/bubbles/jade8.xpm
deleted file mode 100644 (file)
index 3c73737..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-/* XPM */
-static char *jade8[] = {
-/* width height ncolors chars_per_pixel */
-"44 44 189 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #23BD23",
-"`d c #1CB11C",
-"`e c #1AA71A",
-"`f c #169D16",
-"`g c #179717",
-"`h c #149914",
-"`i c #179317",
-"`j c #139713",
-"`k c #149514",
-"`l c #1A8B1A",
-"`m c #159315",
-"`n c #129312",
-"`o c #158B15",
-"`p c #128D12",
-"`q c #148914",
-"`r c #158715",
-"`s c #148514",
-"`t c #0F890F",
-"`u c #128312",
-"`v c #0F870F",
-"`w c #0E850E",
-"`x c #108110",
-"`y c #0D830D",
-"`z c #0F7F0F",
-"a` c #127912",
-"aa c #137513",
-"ab c #107710",
-"ac c #0C7D0C",
-"ad c #0E750E",
-"ae c #0F730F",
-"af c #0F6F0F",
-"ag c #0F6D0F",
-"ah c #0E6B0E",
-"ai c #0E690E",
-"aj c #077307",
-"ak c #0F650F",
-"al c #0E630E",
-"am c #0B630B",
-"an c #0D5B0D",
-"ao c #0A5F0A",
-"ap c #036703",
-"aq c #0B570B",
-"ar c #075D07",
-"as c #026502",
-"at c #046104",
-"au c #0A550A",
-"av c #0B530B",
-"aw c #016101",
-"ax c #0C4F0C",
-"ay c #0A510A",
-"az c #025B02",
-"b` c #094F09",
-"ba c #045704",
-"bb c #0A4D0A",
-"bc c #065306",
-"bd c #0A4B0A",
-"be c #065106",
-"bf c #015901",
-"bg c #074D07",
-"bh c #054F05",
-"bi c #074B07",
-"bj c #084908",
-"bk c #094709",
-"bl c #084508",
-"bm c #064706",
-"bn c #014F01",
-"bo c #004B00",
-"bp c #063D06",
-"bq c #063B06",
-"br c #073907",
-"bs c #033D03",
-"bt c #004100",
-"bu c #013F01",
-"bv c #033B03",
-"bw c #053505",
-"bx c #003D00",
-"by c #063306",
-"bz c #053105",
-"c` c #023502",
-"ca c #003700",
-"cb c #042B04",
-"cc c #042904",
-"cd c #012301",
-"ce c #022102",
-"cf c #011D01",
-"cg c #021B02",
-"ch c #011901",
-"ci c #011701",
-"cj c #011501",
-"ck c #011301",
-"cl c #010D01",
-"cm c #21B621",
-"cn c #1CB41C",
-"co c #22AA22",
-"cp c #1AAC1A",
-"cq c #18A818",
-"cr c #1F9C1F",
-"cs c #18A418",
-"ct c #17A217",
-"cu c #189E18",
-"cv c #189A18",
-"cw c #149C14",
-"cx c #149014",
-"cy c #119011",
-"cz c #128A12",
-"d` c #0F8C0F",
-"da c #128612",
-"db c #148214",
-"dc c #138013",
-"dd c #127E12",
-"de c #127C12",
-"df c #107C10",
-"dg c #0F7A0F",
-"dh c #0B800B",
-"di c #0E780E",
-"dj c #0B7C0B",
-"dk c #117211",
-"dl c #0A7A0A",
-"dm c #0E720E",
-"dn c #0A780A",
-"do c #0A760A",
-"dp c #106A10",
-"dq c #0B720B",
-"dr c #0F6A0F",
-"ds c #0A6E0A",
-"dt c #0B6C0B",
-"du c #0A6A0A",
-"dv c #0B680B",
-"dw c #067006",
-"dx c #0C660C",
-"dy c #0A660A",
-"dz c #056E05",
-"e` c #056C05",
-"ea c #0B620B",
-"eb c #0C600C",
-"ec c #0D5E0D",
-"ed c #056A05",
-"ee c #066806",
-"ef c #076407",
-"eg c #0D580D",
-"eh c #0A5C0A",
-"ei c #076007",
-"ej c #046404",
-"ek c #0A5A0A",
-"el c #075A07",
-"em c #085808",
-"en c #045E04",
-"eo c #095409",
-"ep c #015E01",
-"eq c #055605",
-"er c #055405",
-"es c #015601",
-"et c #015401",
-"eu c #035003",
-"ev c #015201",
-"ew c #034C03",
-"ex c #034A03",
-"ey c #B1FFB1",
-"ez c #074207",
-"f` c #034803",
-"fa c #044604",
-"fb c #074007",
-"fc c #083E08",
-"fd c #014601",
-"fe c #024402",
-"ff c #034203",
-"fg c #044004",
-"fh c #053805",
-"fi c #063606",
-"fj c #013A01",
-"fk c #023802",
-"fl c #052E05",
-"fm c #013401",
-"fn c #013201",
-"fo c #042C04",
-"fp c #013001",
-"fq c #012E01",
-"fr c #012C01",
-"fs c #042604",
-"ft c #012A01",
-"fu c #022802",
-"fv c #042404",
-"fw c #002600",
-"fx c #022002",
-"fy c #011E01",
-"fz c #001000",
-/* pixels */
-"````````````````````````````````````````````br``````````````````````````````````````````",
-"````````````````````````````````bzftfkbvavakbsavb`aqbwfbfc``````````````````````````````",
-"````````````````````````````bwfgalaldpafafbcecebdkbubic`bpfmfq``````````````````````````",
-"````````````````````````fhavaubgbldkerahdbaoauekdeewaof`eadpfffmbw``````````````````````",
-"````````````````````fobbfaemdrewdrardfdfduekama`eoelamdydbfdbjaiakbbch``````````````````",
-"``````````````````fravakexamam`q`scx`odidiaoffdxenfaevdddyabeqfdembgaqbl````````````````",
-"````````````````bpbmekbeabdbdg`z`ods`z`mdqafeeatew`u`zemffba`rfdfdbubxbmft``````````````",
-"``````````````fbfkaufe`sdd`q`zdqdn`gcxdo`e`ydtfaedfeejdqczdg`qeuboecf`fjfmby````````````",
-"````````````fcecakbha`eaeuesefescz`f`yawdme`d`cpdzcsbf`ydocvdiekdebnfkaibiaybr``````````",
-"``````````fybjb`exbtei`odgdacxaoeddodydiapcucs`dd`asep`y`f`mcsdqdc`oabemaaecbzcd````````",
-"``````````bqayagbhewdtev`zcs`pdmctcp`fdhaj`eard`cp`wewas`jedaj`pefbeelb`emecanfh````````",
-"````````blegdpdxeleq`idd`xeebucscncncyepawewfeeierajcpcn`nbfepcz`pefabdddyekdpavfc``````",
-"````````c`egekeheu`udufjdm`z`edj`fcmapdiczapascq`cdjdtawapelbceadjcu`gdgeidcecalbw``````",
-"``````fobrffbedd`rdqdyabdscudlasdncpfe`fcq`h`ccn`j`jeicsdy`mdvdz`uejenbob`afemecegfo````",
-"``````bqegdpfeafba`ocudvdncpcy`tcnd`dzct`c`jcq`ccndncndnaraj`ke`dzesevdueqdvekdpblfl````",
-"````fvfpanaqbpddbobhaecu`fdhctcq`h`m`tdjct`o`rcm`eaj`ycqcpdwaj`nedatbhexefdbddbgakbqch``",
-"````fuftegbuembo`s`xdsencvcscncncycsdjdi`l`b`b`b`ldkcq`cd`eiedbf`gbfffahbe`rdkexezbrfi``",
-"````cdbkakbuemfddgdgcvemaj`hac`dcmcme``l`b`a`aey`aeccu`d`yedbuea`u`qcababo`raoembzfuce``",
-"````fcbdbmbuamfmdm`i`gbfeaarap`t`dfecu`b`aeyeyey`aco`dcmcy`eeddw`pencxfmdxafdxexfac`fc``",
-"````bravalbifkbmei`xcvdqatdwcpawcndwcx`b`aeyeyey`bdpdodo`das`j`w`pdsbuazel`rfdbeakfpfl``",
-"````fcblbwehbe`rarbadu`mdncsbtdncqedcpco`b`a`a`acrcodnctajcsacdjcu`xdidqdsa`dkbealbjbr``",
-"``cgflfkb`bgamfdbndxazef`eeedzcsctdldh`ccocr`b`b`lef`hcyac`h`gfecscvendddgddehffanegbzfz",
-"````bzbqfmaqbtam`sarahds`uazcuct`nbudhcqcmcr`cdi`demd``fcwcs`p`p`edi`xdqdmdbeheobqegfy``",
-"````flfpblffaoeldd`o`xadabes`kcu`tepcq`fcnapdm`pajedej`f`d`fctdobfdddy`rababemecfgc`cc``",
-"````fuftegfgaiela``s`ibacxevaz`w`ndfctcndwaje`cpctdl`zbx`ycu`xdsdxebdm`raoahagdpbdaxfl``",
-"````fxbkayfmebaidbdeeuaret`iefcu`m`oazedawdzepd`cybfajczbfdseeaz`sdberafdca`aqakblfufx``",
-"````ccfwezfbbmaaamahfpehfmbc`sdg`eeebxazdw`gazajdwfeaz`vdncaehbseo`sdvdedkaialbsaxfvfx``",
-"````fzccblbjayaubcf`alfkeoeles`g`gcs`e`pcu`wcuf`el`idfaoabdydgbabo`o`sfeewakcdfpfrcfcj``",
-"``````flfwbjbdffaffedbauffdydy`o`gdqefef`icu`xdccxfa`xeeef`gdy`ua`aobiakbjbgecfpbybz````",
-"``````cecdbdbybvebbgbmewew`rddadcx`o`u`icvcvdicvahatdyei`oefbob`eualdkewdpblblfibyce````",
-"````````cefcfxc`fjekftekdedddcdyetafefdfda`gdq`qdgeiafbe`r`seuafbcekaibgfmfnaxfuby``````",
-"````````fvbzezc`fmaybgbuamafddaofdbobaaddmdcdsdydteiboeoabdcagbcaaemdpaqfkfyfpbycj``````",
-"``````````chfibdfiavegfjfwbudeabbhfdei`sdy`rabdtameiardbaofkbeamecbgecanfqfwcdch````````",
-"``````````clflfcfpbqanecauaudkdka`a`a`dxagdxaheqeabhdxagbtdkdralauakfgaxfhbrfxcj````````",
-"````````````cjfxbrfrbkanalfgbkbbbibudrf`exfpemdxemehbhemexalecalbibjbkfqfucech``````````",
-"``````````````fzcffobzaxbdanauffblezdkfafec`ftfeekb`alfralaqanblayavbrcbflfx````````````",
-"````````````````cjflccfcfcc`c`fgfmbjavavbsaub`fqdpb`bwegecfmccbqezbzbzflci``````````````",
-"``````````````````chcjcccdbkfcfhfregbkaxc`bjbsfkavfgc`c`bpbkbdbdfccffvfz````````````````",
-"````````````````````clcjbzbzfifcbrezbkfnbzbpaxbkbkfbfhbzfcftfiflcffxcl``````````````````",
-"````````````````````````clfsflfoficbbzflbqftbqftchfublfofuflcgcgcj``````````````````````",
-"````````````````````````````cjckchckcefvfsfufsfychciflflcgckfz``````````````````````````",
-"````````````````````````````````clclfzcjchcgcicgfxfvcgcjcl``````````````````````````````",
-"````````````````````````````````````````````cl``````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/bubbles/jade9.xpm b/hacks/images/bubbles/jade9.xpm
deleted file mode 100644 (file)
index 85f5ca9..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-/* XPM */
-static char *jade9[] = {
-/* width height ncolors chars_per_pixel */
-"50 50 191 2",
-/* colors */
-"`` c None",
-"`a c #69E169",
-"`b c #35CB35",
-"`c c #23BD23",
-"`d c #1CB11C",
-"`e c #1AA71A",
-"`f c #169D16",
-"`g c #179717",
-"`h c #149914",
-"`i c #179317",
-"`j c #139713",
-"`k c #149514",
-"`l c #1A8B1A",
-"`m c #159315",
-"`n c #129312",
-"`o c #158B15",
-"`p c #128D12",
-"`q c #148914",
-"`r c #158715",
-"`s c #148514",
-"`t c #0F890F",
-"`u c #128312",
-"`v c #0F870F",
-"`w c #0E850E",
-"`x c #108110",
-"`y c #0D830D",
-"`z c #0F7F0F",
-"a` c #127912",
-"aa c #137513",
-"ab c #107710",
-"ac c #0C7D0C",
-"ad c #0E750E",
-"ae c #0F730F",
-"af c #0F6F0F",
-"ag c #0F6D0F",
-"ah c #0E6B0E",
-"ai c #0E690E",
-"aj c #077307",
-"ak c #0F650F",
-"al c #0E630E",
-"am c #0B630B",
-"an c #0D5B0D",
-"ao c #0A5F0A",
-"ap c #036703",
-"aq c #0B570B",
-"ar c #075D07",
-"as c #026502",
-"at c #046104",
-"au c #0A550A",
-"av c #0B530B",
-"aw c #016101",
-"ax c #0C4F0C",
-"ay c #0A510A",
-"az c #025B02",
-"b` c #094F09",
-"ba c #045704",
-"bb c #0A4D0A",
-"bc c #065306",
-"bd c #0A4B0A",
-"be c #065106",
-"bf c #015901",
-"bg c #074D07",
-"bh c #054F05",
-"bi c #074B07",
-"bj c #084908",
-"bk c #094709",
-"bl c #084508",
-"bm c #064706",
-"bn c #014F01",
-"bo c #004B00",
-"bp c #063D06",
-"bq c #063B06",
-"br c #073907",
-"bs c #033D03",
-"bt c #004100",
-"bu c #013F01",
-"bv c #033B03",
-"bw c #053505",
-"bx c #003D00",
-"by c #063306",
-"bz c #053105",
-"c` c #023502",
-"ca c #003700",
-"cb c #042B04",
-"cc c #042904",
-"cd c #012301",
-"ce c #022102",
-"cf c #011D01",
-"cg c #021B02",
-"ch c #011901",
-"ci c #011701",
-"cj c #011501",
-"ck c #011301",
-"cl c #010D01",
-"cm c #21B621",
-"cn c #1CB41C",
-"co c #22AA22",
-"cp c #1AAC1A",
-"cq c #18A818",
-"cr c #1F9C1F",
-"cs c #18A418",
-"ct c #17A217",
-"cu c #189E18",
-"cv c #189A18",
-"cw c #149C14",
-"cx c #149014",
-"cy c #119011",
-"cz c #128A12",
-"d` c #0F8C0F",
-"da c #128612",
-"db c #148214",
-"dc c #138013",
-"dd c #127E12",
-"de c #127C12",
-"df c #107C10",
-"dg c #0F7A0F",
-"dh c #0B800B",
-"di c #0E780E",
-"dj c #0B7C0B",
-"dk c #117211",
-"dl c #0A7A0A",
-"dm c #0E720E",
-"dn c #0A780A",
-"do c #0A760A",
-"dp c #106A10",
-"dq c #0B720B",
-"dr c #0F6A0F",
-"ds c #0A700A",
-"dt c #0A6E0A",
-"du c #0B6C0B",
-"dv c #0A6A0A",
-"dw c #0B680B",
-"dx c #067006",
-"dy c #0C660C",
-"dz c #0A660A",
-"e` c #056E05",
-"ea c #056C05",
-"eb c #0B620B",
-"ec c #0C600C",
-"ed c #0D5E0D",
-"ee c #056A05",
-"ef c #066806",
-"eg c #076407",
-"eh c #0D580D",
-"ei c #0A5C0A",
-"ej c #076007",
-"ek c #046404",
-"el c #0A5A0A",
-"em c #075A07",
-"en c #085808",
-"eo c #045E04",
-"ep c #095409",
-"eq c #015E01",
-"er c #055605",
-"es c #055405",
-"et c #015601",
-"eu c #015401",
-"ev c #035003",
-"ew c #015201",
-"ex c #034C03",
-"ey c #034A03",
-"ez c #B1FFB1",
-"f` c #074207",
-"fa c #034803",
-"fb c #044604",
-"fc c #074007",
-"fd c #083E08",
-"fe c #014601",
-"ff c #024402",
-"fg c #034203",
-"fh c #044004",
-"fi c #053805",
-"fj c #063606",
-"fk c #013A01",
-"fl c #023802",
-"fm c #052E05",
-"fn c #013401",
-"fo c #013201",
-"fp c #042C04",
-"fq c #013001",
-"fr c #012E01",
-"fs c #012C01",
-"ft c #042604",
-"fu c #012A01",
-"fv c #022802",
-"fw c #042404",
-"fx c #002600",
-"fy c #022002",
-"fz c #011E01",
-"g` c #001000",
-"ga c #000A00",
-/* pixels */
-"````````````````````````````````````````````````````````````````````````````````````````````````````",
-"``````````````````````````````````````fvcdfsbwbsehehfqbdblbkbqfm````````````````````````````````````",
-"````````````````````````````````fvfvc`ayakalepauaabcakdkfgb`aufnbjbkfp``````````````````````````````",
-"````````````````````````````cdehbmaqanelbeexfeexdragfraobedebcfobbayedbqbl``````````````````````````",
-"````````````````````````fmbdedbiecelbmfeah`rafdc`o`sfba`ecemaffeenbufkbiedfdfj``````````````````````",
-"``````````````````````fpehfhaqenebema`ejdm`i`gdvfhbadcfhba`oevdmdwahaoaodkakblcd````````````````````",
-"````````````````````fsbbbmeyelemaodb`i`i`u`icudqbeaha`ateu`g`rahbnabdzflenbudpbjbz``````````````````",
-"``````````````````fdfobidkfeab`rad`xdf`zdt`mcxekbheadsbxetatdvfaamewbodbfea`fgbpbvfr````````````````",
-"````````````````brfndpakbcdz`r`q`odids`ecuczcycueeenbfeeeq`eefac`xdiaebabiesfabxbkbdcf``````````````",
-"``````````````fdbdedebfea`ahab`saeel`v`ecucxffcpdj`h`fdobxaododtaccxdqeoewdbexc`drbsbkfj````````````",
-"````````````ftehfnanfla`bseg`u`x`peme``yeacpdzeeerdv`f`fcu`x`t`t`p`pcsatfkewbgexagdkcacdfw``````````",
-"``````````cjfifhagaiexdz`ibn`zcv`mdadn`yd``vapeqemdq`t`nap`odqcycsdjcxcuazbgejbobmdkecfnfuce````````",
-"``````````brbbdpaffeec`rdueo`iczeke``dcpcnapff`gdfasdjdjcs`wdndh`weqdx`g`patecevemameialbvbq````````",
-"````````chbqb`akaoeserdfeg`xdtbedxcpcncqcqdzasapdqaseedncme`cnctdjeq`ods`zdgaddvdf`saiepalbbcd``````",
-"````````brfmb`enbefe`qbaetbeef`t`ee`d``jdhem`mczdjdhcn`c`fdxasas`madbceq`uda`i`uejfea`dkakehbr``````",
-"``````cefpedbmelaiabdcegetfa`vcpajeqee`cdlaj`dcqcs`ccncq`jasev`zex`uemdxat`idteoaifnaheiedavblfw````",
-"``````bzfvalakfaafev`ucv`zfa`pcp`t`ycmctev`ncq`ccwcp`c`cd`btawas`gdxcyekdnddeo`uejbadwaiaiayf`ch````",
-"``````fpanakffakfebn`gca`z`w`taccncn`jdje`d``y`dda`qcmcm`jej`j`hfaajdl`kdxdgdmcafbdzdddebcakehby````",
-"````chblavakbifebiegdidtbhcxcp`fcpcmcycndh`jdqcrco`b`ba`die``cct`ydze`dxbfdddybudmbo`ra`aibmf`fuce``",
-"````cjfuaybmffeieladdgcuduaj`pct`fcmcpemaj`z`l`b`a`a`acoa`cmcmcpd`e``icp`eazbcefamah`rafdycafifscd``",
-"````byfdbvfbavfaep`o`ucvekffcvajajcq`fcyas`e`b`aezezez`a`b`ictcmd`eqeqekdoekenendybnabdyenbxfobdcc``",
-"````cdfqbjedbudyfhdz`ucx`zdodudwcp`ycmdw`kcm`b`aezezez`acr`i`dcndxasacdxcsdn`ofbbmemdfexfaakfhbdbr``",
-"````fmbpbsbmfffqfhemdt`i`pac`zdn`e`dcwebcyco`b`aezezez`a`lcodufaardocy`hcxczeoeuegej`oesfaakavblfp``",
-"````cbbqbkakepfeboarbneo`x`w`p`naddo`jcpcy`c`c`b`a`a`acrcrcz`ncnaj`u`v`w`pcx`x`gdzdmaedebgecaybyby``",
-"````fdfqaldpbiaoboev`idfeoeobfatdx`f`f`wdm`d`c`lcr`bcocrdp`pcq`ycy`kbffbfgcxdiba`o`sdcafdrbmavf`fd``",
-"````fmbzbdfhalffdudcejboazcvduekcucpcteq`d`e`e`icr`bdgaacpdjcq`h`kct`p`zdcefcvaddudwdbececanfhfqby``",
-"````fzfdbjfgepeybe`r`oeg`uegamekcpcp`kdz`kcncp`hekel`wdx`iap`v`d`e`ncu`vbcaf`i`idcabdeenecayc`bkfm``",
-"````fmfsaxb`ehaibh`rdm`i`zbnenbudt`wctdnd`cpcqdhctcu`jcy`tasexdn`ecv`m`zeienfn`o`oaoa`dkededaxfuby``",
-"````fmfxavf`edelebaedbddaretbcetazefcvekeqdhee`easdo`dcp`wda`vateqczegdqejbnamdmdda`ahdkdpaqbpcdfy``",
-"````fwfxbkfnfieddkabdebna`ewendf`icucubffaefdu`odabhea`pbcdf`y`metetdvewamfl`oaraea`a`fbanavbdfpcg``",
-"````g`fzfrf`bzfgakelemelb`bsbvdceucz`g`zdtdodj`peqatateeazarazacdsetazddamboam`rardedpfkavfqbdcdck``",
-"``````fwbzavbdbkelenbcfsbvfhbodzeo`g`gcz`i`z`gcsczetbxadcxeb`rab`gdt`qejbaaedcaffabtalfkbdaxfdfy````",
-"``````ftcdfqfvb`fgafexagfefhdkdudv`ocvdgejdv`zcucu`wcuffeteg`xewdt`ieg`qdcdweybtbvalbiedbjcccgfy````",
-"``````cjcfchc`c`fkecbibtbtesevexdcdg`i`oda`u`gcu`gdgewey`idtdqegcxeg`s`obofsbtaafgfkfcanfufdftcj````",
-"````````cgfyf`cdbvfkalaaexabdbafdbdmdzewdfdmda`o`idt`xduejbaaeai`qddbnfebtbhebafcafrbqfqfjfjcc``````",
-"````````cjchfubwflfkaubgakebdedy`sduevb`erdvdzdtdfdzdidfejevdkbodf`rendkendkalalayfnc`fxbrbyci``````",
-"``````````fwccbqfibpalakbjc`bxaiabambhfneradabdm`odfdzdvdmarardcaba`alaienauauakalfqcdbwfyfw````````",
-"``````````gafwfzblfqbjavaqfhdkbxafaoenbeaiaeabam`r`rabaoeyenafabaaexafdkdkelededehbzbwcccega````````",
-"````````````cjfwfmfdblbdalanbibuafakafeca`ebdyarexebexdkenbcaheibcaadrelauakbjavbdfdccfwcj``````````",
-"``````````````g`fzbzfdfiavbbaqfhedfuf`fkfbelffbtanbcenexeibeauffafecelalb`avbkbqchcdfwcg````````````",
-"````````````````g`fybzfjbdbkblehayfbbdalbgaqfgbuanblfbepauedakfgauaqehbsbpaxbwfmcbfmcg``````````````",
-"``````````````````cjccfzfdfcbqflbvfhcafhedb`aybib`bibpanedbsakalalfnfjfoaxf`fvcccccj````````````````",
-"````````````````````cjcgfmcecdfufufnbqbpanbmbqf`ehbmehedbdfvbbblblaxaxbkblcdfmfwg```````````````````",
-"``````````````````````cjclfwftbrbzbkfiaxfifqbdbkfqf`ehavavbpc`fzfrfxfjfdfycfceck````````````````````",
-"````````````````````````gacgfycbccbrbrfxfxbzbdbdbdfdfdcffzfqfmbzfdbrbyfwchcgcl``````````````````````",
-"````````````````````````````gag`fyfwcececcfpbybzcbfucbcbcfcdbyfmfmcicjcgga``````````````````````````",
-"````````````````````````````````gackcgcifychchcccfchcjckcgchccfycjg`ga``````````````````````````````",
-"``````````````````````````````````````gagagackcjchfycjchcgg`clga````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````",
-"````````````````````````````````````````````````````````````````````````````````````````````````````"
-};
diff --git a/hacks/images/earth.xbm b/hacks/images/earth.xbm
deleted file mode 100644 (file)
index dab546c..0000000
+++ /dev/null
@@ -1,2192 +0,0 @@
-/* The surface of the earth.  Created with:
-   xearth -proj mercator -noshade -ppm \
-     | ppmtopgm | pgmtopbm -thresh | pbmtoxbm
- */
-#define earth_width 512
-#define earth_height 512
-static char earth_bits[] = {
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0xfc,0x00,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0x07,0xfc,0x01,0xc2,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0x3f,0xff,0xdf,0x3f,0x00,0x7e,0x00,
- 0xc0,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfe,0x1f,0xfe,0xff,
- 0x3f,0x00,0x1e,0x00,0xc0,0x01,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0xfe,0x1f,0xfc,0xff,0x3f,0x00,0x3f,0x00,0xc0,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0xfe,0x1f,0xfc,0xff,0x37,0x00,0x3f,0x00,0x80,0x00,0xe0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x7f,0xff,0x1f,0xfc,0xff,0x03,0x00,0x7f,
- 0x00,0x80,0x00,0xe2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0x1f,0xfc,
- 0xff,0x03,0x00,0x8f,0x03,0x80,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xf0,0xff,0x1f,0xfc,0xff,0x03,0x00,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0xc0,0xff,0x3f,0xf8,0xff,0x07,0x00,0x0f,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x3f,0xe0,0xff,0x0f,0xf8,0xff,0x03,0x00,
- 0xff,0x0c,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xc0,0x1f,0xf0,0xff,0x03,
- 0xf0,0xff,0x01,0x00,0x3f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xc0,
- 0x1f,0xf8,0xff,0x07,0xf0,0xff,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0xe0,0x3f,0xf8,0xff,0x07,0xf0,0xff,0x03,0x00,0x7e,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xe0,0x7f,0xfc,0xff,0x3f,0xf0,0xff,0x07,
- 0x00,0xfe,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf0,0xff,0xff,0xff,
- 0x3f,0x70,0xff,0x0f,0x00,0xf3,0x07,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0xf0,0xff,0xff,0xff,0x7f,0x78,0xfc,0x1f,0x00,0xe3,0x0f,0x0e,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x40,0xf0,0xff,0xff,0xef,0x7f,0x38,0xfc,0x30,0x80,0xc3,0x0f,
- 0x03,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x60,0xfc,0xff,0xff,0xef,0x7f,0x38,0xfc,
- 0x00,0x80,0xc1,0xfd,0x03,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x70,0xfe,0xff,0xff,
- 0xef,0x7f,0x38,0xf8,0x00,0x80,0xc1,0x70,0x06,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0xf8,0xff,0xff,0xff,0xef,0xff,0x3c,0xf8,0x00,0x80,0x41,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,0xef,0xff,0x3f,0xf8,0x00,0x80,0x41,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x87,0xff,0xff,0xff,0xff,0x3f,
- 0xfc,0x00,0x80,0x41,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x81,0xff,
- 0xf9,0xff,0xff,0x3f,0xfc,0x00,0xc0,0x41,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xe7,0x01,0xfe,0xf8,0xff,0xff,0xff,0x7f,0x00,0xf1,0x40,0x00,0x00,0x00,
- 0x06,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xe7,0x03,0x7e,0xf8,0xff,0xff,0xff,0xff,0x00,0xff,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x7c,0xf8,0xff,0xff,
- 0x7f,0xfe,0x80,0xff,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x7c,0xfc,0xff,0xff,0x3f,0xfc,0xcf,0x41,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x7c,0xfc,0xf7,0xff,0x7f,0xf8,0xff,0xc0,0x01,0x00,0x00,
- 0x80,0xff,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x7c,0xfc,0xf7,0xff,0xff,0xff,0x7f,
- 0x80,0x03,0x00,0x00,0xf8,0xff,0x08,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x78,0xf8,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xc0,0xff,0x7f,0x08,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x78,0xf8,0xe3,0xf3,0xf7,0xff,0xff,0x07,0x00,0x0c,0xf3,0x7f,0x27,0x08,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0d,0x00,0xc0,0x67,0xe3,0xc3,0xbf,0xff,0x07,0x80,0x39,
- 0xf7,0x0f,0x00,0x08,0x36,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xc0,0x7f,0xc3,0xc3,0xbf,
- 0xc7,0x03,0x80,0xf7,0xff,0x07,0x00,0x00,0x16,0x3f,0xbc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0x01,0xc0,
- 0x7f,0x82,0x83,0xff,0xc7,0x01,0x00,0xfe,0xff,0x07,0x00,0x00,0x1c,0x4b,0x1c,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
- 0xff,0x0f,0x00,0xe0,0x3f,0xc0,0x83,0xff,0xc7,0x00,0x00,0xfc,0xff,0x07,0x00,
- 0x00,0x08,0x8b,0x0c,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0xe0,0xff,0x03,0x00,0xe0,0x0f,0xc0,0x87,0xff,0xc7,0x08,0x00,
- 0xf8,0xff,0x1f,0x00,0x00,0x00,0x8b,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xc0,0xff,0x07,0x70,0x70,0x0f,0xc0,0x07,
- 0xfe,0x84,0x05,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x0f,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xf8,0x07,0xfe,
- 0x3f,0xff,0xe1,0x1f,0x2c,0x00,0x01,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x03,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xe0,0x3f,0x1c,0x00,0x00,0x00,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0xf0,0xff,0xff,0xff,0x3f,0xe0,0x3f,0x38,0x00,0x10,
- 0xc8,0xff,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0xff,0x3f,0xf0,
- 0x3f,0x78,0x00,0x18,0xfc,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,
- 0xff,0xff,0x3f,0xf8,0x3e,0xfe,0x01,0x30,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0xe0,0xff,0xff,0xff,0xff,0x3f,0x3c,0xfe,0x03,0xc0,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,0x1f,0x3c,0xfc,0x27,
- 0xc0,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0x1f,0x1c,0xfc,0xff,0xc0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x1c,
- 0xff,0xff,0xff,0xff,0x1f,0x0c,0xfc,0xff,0x81,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0x3f,0x0c,0xf8,0xff,0x81,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0xc0,0x00,0xff,0x7f,0xfc,0xff,0x7f,0x0e,0xe0,
- 0xff,0xc1,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x60,0x80,0xff,0x7f,0xf8,
- 0xff,0xff,0x0f,0xc0,0xf1,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x30,
- 0x80,0xf0,0x4f,0xf8,0x37,0xff,0x0f,0x00,0xc0,0xff,0xff,0xfb,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x38,0x00,0x70,0x07,0xfc,0xe3,0xff,0x3f,0x00,0x80,0xfb,0xff,
- 0xa1,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x1c,0x00,0x70,0x87,0xfe,0x01,0xdf,0xff,
- 0x01,0x00,0xff,0xff,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x1c,0x00,0x38,0x86,
- 0xff,0x03,0x0f,0xff,0x01,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x0e,0x00,0x00,0x06,0xff,0x83,0x07,0xfc,0x03,0x00,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x1e,0x00,0x00,0x06,0x9f,0xc1,0x03,0xf8,0x3f,0x00,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0x3f,0x00,0x00,0x82,0x1f,0xe1,0x03,
- 0xf0,0xff,0x81,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x86,0x1f,0xc0,0x03,0xf8,0xff,0xc3,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x86,0x3f,0xc0,0x01,0xfc,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xdf,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x80,0x3f,0x80,0x01,0x7e,0xf8,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xfd,0xff,0x1f,0x00,0x00,0x80,0x7f,0x80,
- 0x01,0x1f,0xf0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0xc0,0xf9,0xff,0xff,0xff,0xf9,0xff,0x3f,0x00,
- 0x00,0x00,0x7f,0x80,0xb1,0x0f,0xf8,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x30,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xe7,
- 0xf8,0xff,0xff,0x00,0x00,0x80,0xff,0xc0,0xf1,0x0f,0x3c,0xfe,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3b,0x30,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0xff,0x71,0x78,0xff,0xff,0x3f,0x00,0x80,0xff,0xc0,0xf9,0x07,0x0e,
- 0xf4,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x83,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0x08,0x78,0xff,0xff,0x7f,0x00,0x80,0xff,
- 0xe4,0xff,0x03,0x07,0xe0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x02,0xfb,
- 0xff,0xff,0xff,0xff,0xff,0x01,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xf8,0x23,0x06,0x30,0xe3,0x3f,
- 0xe0,0x00,0x80,0xff,0xfd,0xfe,0x03,0x01,0x82,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0xc3,0xff,0xff,0xff,0xff,0xff,0x03,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,
- 0x00,0x00,0xc3,0x3f,0x00,0x00,0x80,0xff,0x7f,0xfc,0x81,0x01,0x00,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xdf,0xef,0xff,0xff,0xff,0x03,0x82,0xff,0xff,0xff,0xff,0x7f,0x03,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x81,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0xff,0x3f,0xfc,0x81,
- 0x01,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0x0f,0x83,0xff,0xff,0xff,
- 0xff,0xff,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,
- 0xfe,0x1f,0xf8,0x81,0x03,0x06,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfd,0xf9,0xff,0xff,0xff,0xff,
- 0xc3,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x7c,0x00,0x00,0x00,0xfc,0x0f,0xf8,0x80,0x00,0x3f,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0xf8,0x1f,0xf8,0x80,0x00,0xcf,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xbf,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0xf8,0x0f,0xfc,
- 0x83,0x00,0x8c,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0x1f,0xf9,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,
- 0x00,0xf8,0x0f,0xf8,0x87,0x00,0x14,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0x7f,0x17,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x0c,0x00,0x81,0xff,0x07,0xf8,0xc0,0x00,0x00,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x3f,0x71,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0xe0,0x83,0xff,0x0e,0xf8,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x3f,0x70,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x30,0xf8,0xff,0xff,0xff,
- 0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x06,0x7e,0x0e,
- 0xfc,0x01,0x00,0x00,0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0x3f,0xe0,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x10,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x1f,0x1c,0x7f,0x1c,0xfc,0x03,0x00,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0x3f,0xe0,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x30,0xfc,0xff,0xff,0xff,
- 0x0f,0xf0,0x8f,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x0f,0xfc,0x1f,0x7c,0xfe,0x0f,0x00,0x80,0xfe,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x3f,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0xff,0xff,0x0f,0x04,
- 0xfe,0x0f,0xfc,0xff,0x19,0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfc,0x3f,0x38,0xf8,0x0f,0x00,
- 0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xdc,0xff,0xff,0xff,0x3f,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0x0f,0x10,0xf8,0x03,0xf8,0xff,0x3e,0x00,0x00,0xf8,0xff,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xf8,0x7f,
- 0x18,0xf0,0x7f,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0x7f,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x08,0xc0,0x01,0xf8,0x3f,0x3c,0x00,0x00,
- 0xe0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,
- 0x00,0x1c,0xe0,0xff,0x38,0xf8,0x9f,0x01,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x21,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xf0,
- 0x01,0x30,0x00,0x00,0x80,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x7c,0x00,0x00,0x10,0xc0,0x3f,0x3f,0xd8,0x0f,0x9f,0x01,0xfc,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0x9f,0xf9,0xff,0x0f,
- 0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x10,0x00,0x3f,0x1e,0x98,0x0f,
- 0xbe,0x01,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0x73,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xe0,0xff,
- 0x0f,0xf0,0xff,0x0f,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0xf7,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x78,0x02,0x00,0x10,0x00,
- 0x40,0x06,0x88,0x1f,0xee,0x01,0xe8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0x39,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0xb0,0xff,0x1f,0xf8,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x83,0xff,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,
- 0x03,0x00,0x10,0x00,0x00,0x02,0x80,0x0f,0xfc,0x03,0x80,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x7f,0x78,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x10,0xf8,0xff,0x1f,0xe4,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0x01,0x00,0x10,0x00,0x00,0x02,0x80,0x07,0xfc,0x03,0x80,
- 0xff,0xff,0x27,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0x0f,0x00,0x08,0xf8,0x83,0x7f,0xc6,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x7c,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x02,0xc0,
- 0x03,0xde,0x07,0xd0,0xff,0xff,0x23,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0x07,0x00,0x07,0x08,
- 0x01,0x00,0xe4,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x00,0x00,0x00,
- 0x00,0x00,0x02,0xc0,0x02,0xff,0x03,0x10,0xff,0xff,0x37,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,
- 0x07,0x00,0x01,0x1c,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x12,0x00,0x00,0x00,0x00,0x00,0x01,0xc0,0x01,0xff,0x01,0x00,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0xf8,0xff,0xf7,0x03,0x00,0x02,0x0e,0x00,0x00,0x80,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x80,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xff,0x0f,
- 0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x40,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0xfc,0xff,0xff,0x01,0x00,0x00,0x06,0x02,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xc0,0xff,0x00,0x06,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x1f,0x20,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x8c,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfe,0xff,0xff,0x01,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xec,
- 0xc0,0xff,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x1c,0xc0,0xff,0xff,0x67,0x00,0x00,0x00,
- 0x80,0x0b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x14,0xe0,0xff,0xff,
- 0x43,0x00,0x00,0x00,0x00,0xda,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xc3,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc1,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7f,
- 0x34,0xe0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf7,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xcf,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x81,0xc9,0x7f,0x3e,0xc0,0xff,0xff,0x11,0x00,0x00,0x00,0x00,0xe2,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x02,0xff,0xff,0x3f,0xc0,0xff,0xff,0x63,0x00,0x00,
- 0x00,0x00,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,
- 0xff,0x1f,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc4,0xfb,0xff,0x1f,0x00,0xff,
- 0xff,0x3b,0x00,0x00,0x00,0x00,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xf1,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xf0,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x68,0xff,
- 0xff,0x1f,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x20,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xe7,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x60,0xfe,0xff,0x07,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xfc,0xff,0xc3,0x00,0xfe,0xff,0x1f,0x00,
- 0x00,0x00,0x80,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,
- 0xff,0xfe,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x30,0x38,0x00,0x30,0x00,0x00,0x30,0xf8,0xff,0xc3,0x01,
- 0xf8,0xff,0x03,0x00,0x00,0x00,0x90,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xff,0xb9,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x1c,0x00,0x18,0x00,0x00,0x38,
- 0xf0,0xef,0x03,0x10,0xfc,0xff,0x09,0x00,0x00,0x00,0x88,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xb0,0x71,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0x07,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0x00,
- 0x00,0x00,0x90,0x1f,0xe0,0x47,0x00,0x30,0xf0,0xff,0x16,0x00,0x00,0x00,0xf0,
- 0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0x7f,0xb0,0xc3,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0x07,0x00,0x00,0xe0,0x1c,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xf8,0x03,0x00,0x00,0x00,0xc0,0x0f,0xe0,0x03,0x00,0x3c,0xf0,0xff,0x08,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0xfe,0x7f,0x90,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00,0x10,0x3c,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0xc0,0x3f,0xe6,0x07,0x10,
- 0x38,0xf8,0xff,0x04,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0xfe,0x7f,0x90,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x18,0xdc,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0xf8,
- 0x3f,0xc7,0xef,0x30,0x38,0xfc,0xff,0x01,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfe,0x7f,0x18,0x87,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x1c,0xfc,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x01,0x78,0xfe,0xff,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfe,0x3f,0x30,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0x1f,0x00,0x00,0x0c,0xff,0x7f,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x03,0xf0,0xff,0xff,
- 0x00,0x00,0x00,0x10,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xfc,0x3f,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x06,0x00,0xfe,0xff,0xff,0xff,0x33,0x02,0x80,0x9e,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xf9,0xfd,
- 0x03,0xe0,0xff,0xff,0x00,0x00,0x00,0x90,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xbf,0xf8,0x3f,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xff,0xff,0xff,0xff,0xf3,
- 0x07,0x20,0xcf,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xfc,0xff,0x07,0xe0,0xff,0x7f,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf0,0x7f,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0xfe,0xff,0xff,0x4f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x87,0xe0,0xff,0xff,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x7f,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x02,0x80,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfe,0xff,0xff,0x9f,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x9f,0xf9,0x0f,0xe1,0xff,
- 0xff,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc9,0xff,
- 0xff,0xff,0x9f,0x3f,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x84,0x03,0xc0,0xff,0xff,0xff,0xff,0xff,0xf7,0x07,0xfe,
- 0xff,0xff,0xff,0x05,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0xc0,0xff,0xff,0xdf,
- 0xf0,0x0f,0xe3,0xff,0xff,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x2f,0xc0,0xff,0xff,0xff,0xbf,0xfc,0x60,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x03,0xe4,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0xfb,0xff,0xff,0x7f,0x0a,0x00,0x00,0x00,0x00,0x08,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0x00,0x3f,0xf6,0xff,0xff,0x03,0x00,0xc8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0xe0,0xff,0xff,0xff,0x7f,0xf0,0xe0,0x04,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xcf,0x01,0xef,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x97,0xfb,0xff,0xff,0x7f,0x0a,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x01,0x3f,0xfc,0xff,0xff,0x01,0x00,
- 0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x05,0x00,0xff,0xff,0xfb,0xff,
- 0xc0,0xc1,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xa0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xf8,0xff,0xff,0xff,
- 0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x00,0xfe,0xfc,
- 0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0xfe,0xff,0xf3,0xdf,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,
- 0xfc,0xff,0xff,0xff,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0x00,0xfe,0xfd,0xff,0xff,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x04,0xf0,0xff,0x7f,0x47,0x00,0xc0,0x08,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x7f,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0x00,0xfc,0xff,0xff,0xff,0x00,0xc0,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0x2f,0x00,0x00,0xe0,0x9f,0x1f,0x01,0x00,0xc0,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0xff,0x3d,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x80,0xff,0xff,0xff,0x00,0xf0,0xf7,0xff,0xff,0x01,
- 0xc0,0xff,0xff,0x1f,0xbf,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0x1f,0x0f,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0x3f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0xff,0xff,0xff,0x00,0xf0,
- 0xff,0xff,0xff,0x01,0xc0,0xff,0xff,0x7f,0x01,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x1e,0x07,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0xfe,0xff,0xff,0xff,0xff,0x2f,0x00,0x38,0x00,0x00,0x00,0x80,0x00,0x80,0xff,
- 0xff,0x7f,0x00,0xf0,0xff,0xff,0xff,0x01,0xe0,0xff,0xff,0x7f,0x00,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0xdc,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1f,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,0x4f,0x02,0x00,0x00,0x00,0x00,
- 0x80,0x00,0x80,0xff,0xff,0x3f,0x00,0xf8,0xff,0xff,0xff,0x01,0xf0,0xff,0xff,
- 0x3f,0x00,0xfe,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x9c,0x01,0x00,0x00,0x38,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xf9,0x1f,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,0xdf,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xff,0xff,0x3f,0x00,0xf8,0xfb,0xff,0xff,
- 0x03,0xf8,0xff,0xff,0x7f,0x00,0xfe,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x3c,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xfd,0x0f,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xf8,0xff,0x3f,0x00,
- 0xf8,0xfb,0xff,0xff,0x03,0xf8,0xff,0xff,0x3f,0x00,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x01,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0x7f,0x00,0xf8,0xf1,0xff,0xff,0x03,0xfc,0xff,0xff,0x7f,0x80,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xaf,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0xe0,0xf1,0xff,0xff,0x27,0xfc,0xff,
- 0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xbc,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0x03,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,
- 0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x00,0x60,0xf0,0xff,
- 0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x70,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0x01,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xdf,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0x00,0x00,0xf0,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x78,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0x00,0x00,0xf0,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x78,0x00,0xdc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x77,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x38,0x00,0x9c,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0x01,0xfc,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x10,0x24,0x00,0x00,0xf0,0x7f,0x00,0x00,0xe0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x1c,0x00,
- 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0x01,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0xc0,
- 0x3f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x0e,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x01,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x00,0x00,0x00,0x00,0x00,
- 0x3e,0x00,0x00,0xc0,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x01,0xfe,
- 0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0,0x03,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xc0,0x83,0x02,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0,0x03,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xc0,0x03,
- 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0xc0,0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0xc0,0x03,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x02,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0xa0,0x03,0x00,0x20,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x01,0xe0,0x03,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x83,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x06,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xc0,0x03,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x7f,0x00,0xe0,0x03,0x26,0x0c,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0xbf,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0c,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0xc0,0x07,0x00,
- 0xc0,0x01,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xe0,
- 0x03,0x60,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xf9,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0x00,0x00,0x00,0x00,0x48,0x00,
- 0x00,0x80,0x07,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0xc0,0x03,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x31,0xff,0xff,0xcf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1b,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x80,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x80,0x8f,0xe7,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xff,0xff,
- 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf9,0x7f,0x10,0x80,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x13,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0x3f,0x18,
- 0xc1,0x3f,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x20,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x04,0x00,0x00,0x06,0x01,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfc,0x7f,0x9c,0xe0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xe0,0xff,0x3f,0xf0,0x17,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x60,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0x3f,0xf0,0x1f,0x00,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x60,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,
- 0x37,0xb0,0x1f,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x01,0x00,0x00,0x00,0x00,0x60,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x3f,0x00,0x00,0x00,0x38,0xc0,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xfc,0xff,0x77,0xf0,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0xe0,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0x7f,0x00,0x00,0x00,0xfc,0xe3,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0x71,0xf0,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xc0,0xfd,0x00,0x00,0x00,0x7f,
- 0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0xe0,0xff,0x79,0xfe,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x80,0xc0,0xfd,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xe3,
- 0xff,0x51,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xe0,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x7f,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xc3,0xc3,0xff,0xf9,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0xe0,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x03,0x00,0x00,0xf0,0x3f,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xc3,0xff,0xfb,0xff,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x13,0x00,0x00,
- 0xe0,0x1f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xc1,0xff,0x93,0x47,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x1c,0x3e,0x00,0x00,0xf0,0x1f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,
- 0xc1,0x3f,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x08,0x3e,0x00,0x00,0xe0,0xff,0xc7,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xf1,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xf8,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x0e,0x00,0x00,0x20,0xfb,0xcb,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x04,0x00,
- 0x00,0x90,0xfd,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x83,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x0c,0xc4,0x07,0x00,0x2e,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7d,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x06,0xc0,0x03,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xd1,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7a,0x00,0xf0,0xf3,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0xfe,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x37,0x00,
- 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xa0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0x01,0x0c,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x01,0x0e,0x00,0x10,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x30,0x3c,0x00,0xfc,0x01,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0xff,0x7f,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xa0,0x00,0x00,0x78,0x3c,
- 0x00,0x7c,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xc2,
- 0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0x00,0xe0,
- 0x00,0x00,0xf8,0x00,0x00,0x3e,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xb8,0x87,0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0xc0,0xe3,0x01,0x00,0xfc,0x3e,0x00,0x7c,0x00,0x0d,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0xff,0x3f,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0xef,0xc3,0x01,0x00,0xfc,0x7f,0x00,0x7c,0x00,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0xff,0x1f,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xff,0xc2,0x07,0x00,0xfe,
- 0xff,0x03,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0x1f,0xfe,0x07,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x01,0x00,0x00,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xff,
- 0x86,0x0f,0x00,0xfe,0xff,0x07,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x1f,0xfe,0x07,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x03,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0xc0,0xff,0x0f,0x1e,0x00,0xfe,0xff,0x07,0xf0,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1f,0xfc,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x9f,0x03,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0xe0,0xff,0x3e,0x3e,0x00,0x7e,0xfc,0x03,0xe0,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,0x3c,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0x7f,0x7e,0x38,0x00,
- 0x10,0xe0,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0x1f,0x9f,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x06,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x78,
- 0x7f,0xfe,0x34,0xf8,0x03,0x00,0x00,0xe0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0x4f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x06,0x00,
- 0x00,0x00,0x20,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0xf0,0x7f,0xff,0x3d,0x3c,0x00,0x00,0x00,0xe0,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x27,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0c,0x00,0x00,0xf0,0xe3,0x03,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf8,0xff,0xff,0x7d,0x3c,0x00,0x00,0x00,
- 0xf0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xcf,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x1c,0x00,0x00,0xfc,0xff,0x1f,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0xff,0xff,0x7d,
- 0x7c,0x00,0x00,0x00,0xf0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x38,0x00,0x00,0xfe,0xff,
- 0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0xfe,0xff,0x0f,0xff,0x78,0x00,0x00,0x80,0xe0,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc4,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x73,
- 0x00,0x00,0xff,0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x04,0x3e,0xff,0xfc,0x00,0x00,0x00,0x80,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x73,0x00,0x00,0xff,0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x03,0x00,0xfc,0xff,0xfd,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0x00,0x00,0xfe,0xff,0x3f,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfc,
- 0xff,0xff,0x33,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0x01,0x00,0xfe,
- 0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xcf,0x01,0x00,0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xfe,0xff,0xcf,0x7f,0x06,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xdf,0x03,0x00,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x80,
- 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0x3f,0xfc,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x80,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x3f,0xf0,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xff,0xff,0x37,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x3c,0x80,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0xff,0x83,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xf7,0x07,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0xfe,0x83,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfe,0xc1,0xff,0x8f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x70,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf8,0xc1,
- 0xff,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x78,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xe0,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0x87,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x00,0xc0,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xe0,0xff,0xe7,0x07,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x07,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x0c,
- 0xf0,0xff,0xff,0x8f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0xbf,0x1f,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x9f,
- 0xff,0x3f,0x00,0x00,0x00,0x40,0x00,0x00,0xc0,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x1c,0x00,0x00,0x0e,0xff,0xff,0x00,0x00,0x00,0xc0,0x00,0x00,0xe0,0xfd,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0xfc,0xff,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0xf0,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0xf8,0xff,0x00,
- 0x00,0x00,0xfe,0x01,0x00,0xf0,0xfc,0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x78,0x00,0x00,
- 0x00,0xf0,0xff,0x01,0x00,0x00,0xfe,0x03,0x00,0xf0,0xfc,0xff,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x70,0x00,0x00,0x00,0xf8,0xff,0x33,0x00,0x00,0xff,0x07,0x00,0xe0,0xff,
- 0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0x80,0xff,
- 0x0f,0x00,0xe0,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0xfe,0xff,
- 0x3f,0x00,0xc0,0xff,0x0f,0x00,0xc0,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03,
- 0x00,0x00,0xfe,0xff,0x3f,0x00,0xe0,0xff,0x8f,0x00,0x00,0xff,0xff,0xf9,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0x03,0x00,0x00,0xff,0xff,0x3f,0x00,0xf0,0xff,0xcf,0x01,0x00,
- 0xfe,0xff,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xf9,0x3f,0x08,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0x00,0x80,0xff,0xff,0x7f,0x00,0xf8,
- 0xff,0xff,0x01,0x00,0xfe,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x73,0x3e,0x08,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0xc0,0xff,
- 0xff,0x7f,0x00,0xfc,0xff,0xff,0x01,0x00,0xfe,0xff,0x5b,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x09,0x08,0x00,0xfb,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x0f,0x00,0xf8,0xff,0xff,0x7f,0x00,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x03,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x0f,0x00,0xfc,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x33,
- 0x00,0xfe,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0xfe,0xff,0xff,0xff,0x00,
- 0xfe,0xff,0xfb,0xf7,0x00,0xfe,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xc0,0xff,
- 0xff,0xff,0xff,0x01,0xfe,0xff,0xfb,0xf7,0x01,0xff,0xff,0xdf,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x18,0xe0,0xff,0xff,0xff,0xff,0x01,0xfe,0xff,0xff,0xf7,0xc3,0xff,0xbf,
- 0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x10,0xfe,0xff,0xff,0xff,0xff,0x03,0xff,0xff,0xff,
- 0xf7,0xcf,0xff,0xdf,0x1f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0xa0,0xff,0xe7,0xff,0xff,0xff,
- 0x03,0xff,0xff,0xff,0xf7,0xef,0xff,0xff,0x6f,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0x07,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0x7f,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x10,0xe0,0x0f,0xff,0xff,0xff,0xff,0x07,0xff,0xff,0xff,0xe7,0xff,0xff,
- 0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xff,0xff,0xff,0xff,0x0f,0xfd,0xff,
- 0xff,0xef,0xff,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xcf,0xf9,0xff,0xff,0x1f,0xff,0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0x3f,0xfe,0xff,0x83,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0x3f,0xfc,
- 0xff,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xf9,
- 0xff,0x7f,0x3c,0xfc,0xff,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x78,0xfc,0x7f,0x80,0xff,0xbf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xf8,0x3f,0x00,0xff,
- 0x9e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,
- 0xf8,0x27,0x80,0xe3,0xdf,0xc7,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0xf3,0x07,0x80,0xfb,0xff,0x83,0xc5,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x40,0xe4,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfe,0x07,0x80,0xdb,0xdf,0x8f,0x03,
- 0xfc,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x80,
- 0xc2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf8,0x07,0xc0,
- 0xe3,0xff,0x0f,0x01,0xc0,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0xf8,0x0f,0xc0,0xe3,0x3f,0x1c,0x00,0x00,0x7f,0xef,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x08,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xe0,0x1f,0xc0,0xc9,0xef,0xff,0x03,0x00,0x8e,0xdf,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa0,0x1f,0xe0,0x81,0xff,0xff,
- 0x1f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x48,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x7d,
- 0xe7,0x57,0xff,0xff,0x1f,0x00,0xfc,0xff,0xf6,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x81,0xff,0xff,0x33,0xff,0x7f,0x3f,0x00,0xf8,0xff,0xdf,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xc0,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x83,0xff,0xff,0xff,0xff,0xff,0x1f,0xe0,0xf1,
- 0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,
- 0xf7,0xdf,0xe1,0xe3,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0xe0,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,
- 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x20,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x38,0xf8,0xff,0xdb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf0,0x8d,0xf7,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x37,0xfe,
- 0xf9,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xe7,0xfd,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x02,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x37,0xf2,0xc7,0xff,0xff,0xff,
- 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x02,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
- 0xc7,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x02,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0xf8,0x07,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x04,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xf8,0x07,0xff,0xff,0xff,0xff,0xff,0xbf,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x04,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x04,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x03,0xf8,0x07,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x08,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x08,0x00,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x01,
- 0xf0,0x07,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x80,0x07,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x02,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x01,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x01,0xde,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x01,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x01,0xfe,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0xfe,0x8f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0x03,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x10,0x00,0x7e,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x7f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x40,0x00,0x80,0x7f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0x7f,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0x7f,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0xf8,0x7f,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0xfc,0x7f,0xc0,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0x7f,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0x3f,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0xfe,0x3f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x3f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0x3f,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x02,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,
- 0x3f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0xfc,0x3f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x7f,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xf0,0x07,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0xfc,0x0f,0x00,0x00,0xf8,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0x40,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x80,0xff,0x1f,0x01,0x00,0xf8,0xff,0xff,0xff,0xcf,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xc0,0xff,0xbf,0x01,0x00,0xf8,
- 0xff,0xff,0xff,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x80,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xc0,0xff,
- 0xff,0x02,0x00,0xf8,0xff,0xff,0xff,0x0f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xe3,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0xfe,0xff,0xff,0x0f,0x00,0xf8,0xff,0xff,0xff,0x0f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0x1f,0x00,0xf8,0xff,0xff,0xff,
- 0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0x1f,0x00,
- 0xff,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x80,0xff,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xd1,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xfe,0xff,0xff,0x7f,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x02,0x10,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0xff,
- 0xff,0x3f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x03,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0xfe,0xff,0xff,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x01,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0x0f,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xbf,0xf2,0x7f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1b,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x4f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xf1,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6f,0xe8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xdf,0x88,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x4f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe8,0xef,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0xee,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1e,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x06,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x1e,
- 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x1e,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x06,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x83,
- 0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x43,0xff,0xff,0xff,0x3f,0x06,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0x0f,0xff,0xff,0xff,0x3f,
- 0x02,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0x77,
- 0xff,0xff,0xff,0x18,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xc6,0xff,0xff,0xfc,0xff,0xff,0xff,0x3f,0x04,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xc7,0xfd,0xff,0xe1,0xdf,0xff,0xff,0x0f,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xf7,0xff,0x87,0xff,0xff,0xff,
- 0x00,0x02,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x0c,0x7f,0xb3,0xff,
- 0x00,0x30,0xff,0xff,0x08,0x02,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x30,0xff,0x01,0x00,0xfe,0xf7,0x1f,0x02,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x80,0xff,0x01,0x00,0xf8,0xe7,0x1f,0x03,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0x03,0x00,0xf8,
- 0xfd,0x03,0x03,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0xff,0x03,0x00,0xe0,0x3c,0xdf,0x03,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x40,0x38,0xff,0x01,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0x7f,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x7f,0xc0,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xc0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x06,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xf4,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0xfc,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xe0,0x9f,0x3f,0xfe,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x03,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xcf,0xff,0xff,0xff,0xe7,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x03,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,
- 0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xee,0xff,0xff,0xff,0xc7,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x9f,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0x87,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0x87,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x9f,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x38,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0x70,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x79,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xbf,0x38,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf1,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x38,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x8f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x18,0xfe,0xff,0xff,
- 0xef,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x7f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x83,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0xc0,0xff,0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0x07,0xfe,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x80,0x1f,0x00,0xc0,0xff,0xfd,0xff,0xff,0xff,0x03,
- 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x87,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x02,0x00,0x00,0x02,0x00,0x80,0x03,0xc3,
- 0xff,0xff,0xff,0x00,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0xff,0xff,0x1f,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf8,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfb,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xf7,0xf9,0xff,0x00,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xe7,0xfc,0xff,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f,
- 0xfc,0x7f,0x00,0xfe,0xff,0xff,0x3f,0xfc,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0x1f,0xfe,0x3f,0x00,0xff,0xff,0x7f,0x00,0xe0,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1f,0xff,0x3f,0xc0,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xbf,0xff,0x1f,0xc0,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0x07,0xc0,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0x00,0xc0,0xbf,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x3f,0x00,0xe0,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf4,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x1f,0x00,
- 0xe0,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x1f,0x00,0xe0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x3f,0x00,0xf0,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0xf8,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0x0f,0xfe,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0xfc,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0xf0,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
diff --git a/hacks/images/jigsaw/jigsaw.xbm b/hacks/images/jigsaw/jigsaw.xbm
deleted file mode 100644 (file)
index 90d0b1f..0000000
+++ /dev/null
@@ -1,1614 +0,0 @@
-#define jigsaw_width 523
-#define jigsaw_height 366
-static char jigsaw_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x10,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x18,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,
- 0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0xf0,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0xc0,0x07,
- 0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x1f,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,
- 0xe0,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x1c,
- 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
- 0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0xc0,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x18,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0c,
- 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x0c,0x00,0x00,
- 0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x80,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x06,0x00,0x00,0xf8,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0xf8,0x00,0x00,0x60,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x30,
- 0x00,0x00,0xf8,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xf8,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xf8,
- 0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x00,0xf8,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0xf8,0x00,0x80,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0xf8,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xf8,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xf8,
- 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x00,0xf8,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xf8,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x00,0xf8,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xf8,0x00,0x02,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xf8,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x02,0xf8,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xf8,0x80,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0xf8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf8,0x40,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xf8,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x10,0xf8,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xf8,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xf8,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xf8,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xf8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xf8,0x08,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xf8,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf9,0x04,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf9,
- 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf9,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfa,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0x02,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,
- 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfa,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfa,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0x02,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,
- 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfa,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf9,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf9,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf9,0x08,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xf8,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xf8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xf8,0x10,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xf8,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xf8,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0xf8,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xf8,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x10,0xf8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf8,0x80,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf8,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0xf8,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xf8,0x00,0x02,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x02,0xf8,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xf8,0x00,0x08,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xf8,
- 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x00,0xf8,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xf8,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0xf8,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xf8,0x00,0x80,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0xf8,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0xf8,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xf8,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x00,0x00,0xf8,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xf8,0x00,0x00,0x60,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xf8,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0xf8,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x18,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
- 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x0c,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x80,0x01,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0c,
- 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0xc0,0x00,0x00,
- 0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,
- 0x00,0x07,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x80,0x03,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x0e,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0xc0,0x07,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x1f,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,
- 0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x80,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,
- 0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
- 0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x07,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8};
diff --git a/hacks/images/jigsaw/jigsaw_a_e_f.xbm b/hacks/images/jigsaw/jigsaw_a_e_f.xbm
deleted file mode 100644 (file)
index 12cc9b1..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#define jigsaw_a_e_f_width 88
-#define jigsaw_a_e_f_height 78
-#define jigsaw_a_e_f_x_hot 20
-#define jigsaw_a_e_f_y_hot 6
-static unsigned char jigsaw_a_e_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0xff,
-   0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f,
-   0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00,
-   0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80,
-   0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff,
-   0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f,
-   0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00,
-   0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x7e, 0x80, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xc1, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0xc0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0x7f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0x03, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00,
-   0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80,
-   0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff,
-   0x3f, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f,
-   0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00,
-   0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00,
-   0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_e_h.xbm b/hacks/images/jigsaw/jigsaw_a_e_h.xbm
deleted file mode 100644 (file)
index 67bae2e..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#define jigsaw_a_e_h_width 88
-#define jigsaw_a_e_h_height 78
-#define jigsaw_a_e_h_x_hot 20
-#define jigsaw_a_e_h_y_hot 6
-static unsigned char jigsaw_a_e_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x3f, 0x0c, 0x00, 0x00, 0xc3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0x03, 0x18, 0x00, 0x80, 0x01, 0xfc, 0x03, 0x00, 0x00, 0xc0, 0x3f, 0x00,
-   0x30, 0x00, 0xc0, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x60,
-   0x00, 0x60, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
-   0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x01, 0x00, 0x60, 0x00,
-   0x00, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x80, 0x01, 0x00,
-   0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18,
-   0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00,
-   0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x38, 0x00, 0xc0,
-   0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0xc0, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0x03, 0x3c, 0x00, 0x00, 0x60, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x80, 0x0f, 0x1f, 0x00, 0x00, 0x60, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x07, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x7e, 0x80, 0x03,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0xff, 0xc1, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0xc1, 0xff, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x70, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0xe0, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0xc0, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x7f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x80, 0x0f, 0x1f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0xc0, 0x03, 0x3c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0,
-   0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00,
-   0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0xc0,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x38, 0x00, 0xc0, 0x01,
-   0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00,
-   0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00,
-   0x38, 0x00, 0xc0, 0x01, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x30,
-   0x00, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x00,
-   0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x7c,
-   0x00, 0x00, 0xc0, 0x3f, 0x00, 0x30, 0x00, 0xc0, 0x00, 0xc0, 0x3f, 0x00,
-   0x00, 0x00, 0xfc, 0x03, 0x18, 0x00, 0x80, 0x01, 0xfc, 0x03, 0x00, 0x00,
-   0x00, 0xc0, 0x3f, 0x0c, 0x00, 0x00, 0xc3, 0x3f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_f.xbm b/hacks/images/jigsaw/jigsaw_a_f.xbm
deleted file mode 100644 (file)
index b704691..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-#define jigsaw_a_f_width 108
-#define jigsaw_a_f_height 78
-#define jigsaw_a_f_x_hot 20
-#define jigsaw_a_f_y_hot 5
-static unsigned char jigsaw_a_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
-   0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f,
-   0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f,
-   0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f,
-   0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff,
-   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0,
-   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f,
-   0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x80, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xe0, 0x07, 0x00, 0xc0, 0xff,
-   0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8, 0x3f, 0x00,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0xc0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8,
-   0x3f, 0x00, 0x00, 0x7f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x1f, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0,
-   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f,
-   0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f,
-   0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f,
-   0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
-   0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00,
-   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07,
-   0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_h.xbm b/hacks/images/jigsaw/jigsaw_a_h.xbm
deleted file mode 100644 (file)
index 108e117..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-#define jigsaw_a_h_width 108
-#define jigsaw_a_h_height 78
-#define jigsaw_a_h_x_hot 20
-#define jigsaw_a_h_y_hot 5
-static unsigned char jigsaw_a_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
-   0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0c,
-   0x00, 0x00, 0xc3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0x03, 0x18, 0x00, 0x80, 0x01, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x3f, 0x00, 0x30, 0x00, 0xc0, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0x03, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x7c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
-   0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x01, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18,
-   0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x38, 0x00, 0xc0,
-   0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30,
-   0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0x03, 0x3c, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x0f, 0x1f, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xfe, 0x07,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-   0xf0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x80, 0x03,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x07, 0x00, 0xc0, 0xff,
-   0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xf8, 0x3f, 0x00,
-   0xe0, 0xc1, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f,
-   0x78, 0x00, 0x70, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xe0, 0x07, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x70, 0x00, 0x3e, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x00, 0xe0, 0x80,
-   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x70, 0x00,
-   0xc0, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xf8,
-   0x3f, 0x00, 0x00, 0x7f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x18, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xf0, 0x00,
-   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0xfe, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x80, 0x0f, 0x1f, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0xc0, 0x03, 0x3c, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0xc0,
-   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x38,
-   0x00, 0xc0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18,
-   0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
-   0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xe0, 0x03, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x3f, 0x00, 0x30, 0x00, 0xc0, 0x00, 0xc0, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x18, 0x00, 0x80, 0x01, 0xfc,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0c, 0x00, 0x00,
-   0xc3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07,
-   0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_n_f.xbm b/hacks/images/jigsaw/jigsaw_a_n_f.xbm
deleted file mode 100644 (file)
index ca6d1cd..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#define jigsaw_a_n_f_width 108
-#define jigsaw_a_n_f_height 73
-#define jigsaw_a_n_f_x_hot 21
-#define jigsaw_a_n_f_y_hot 1
-static unsigned char jigsaw_a_n_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x7e,
-   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xe0, 0x07, 0x00,
-   0xc0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8,
-   0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0xc0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0xf8, 0x3f, 0x00, 0x00, 0x7f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x1f, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xe0,
-   0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f,
-   0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f,
-   0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xe0,
-   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f,
-   0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
-   0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x80,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f,
-   0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_n_h.xbm b/hacks/images/jigsaw/jigsaw_a_n_h.xbm
deleted file mode 100644 (file)
index 9e8dccf..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#define jigsaw_a_n_h_width 108
-#define jigsaw_a_n_h_height 73
-#define jigsaw_a_n_h_x_hot 21
-#define jigsaw_a_n_h_y_hot 1
-static unsigned char jigsaw_a_n_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x7e,
-   0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x07, 0x00,
-   0xc0, 0xff, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xf8,
-   0x3f, 0x00, 0xe0, 0xc1, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xf0, 0x3f, 0x78, 0x00, 0x70, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0x07, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x1c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x70, 0x00,
-   0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x00,
-   0xe0, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
-   0x70, 0x00, 0xc0, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0xf8, 0x3f, 0x00, 0x00, 0x7f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x18, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-   0xf0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x80, 0x0f, 0x1f, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0x03, 0x3c, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30,
-   0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x38, 0x00, 0xc0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18,
-   0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x01, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x60,
-   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
-   0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0x03, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x7c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x30, 0x00, 0xc0, 0x00, 0xc0,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x18, 0x00, 0x80,
-   0x01, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0c,
-   0x00, 0x00, 0xc3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_ne_f.xbm b/hacks/images/jigsaw/jigsaw_a_ne_f.xbm
deleted file mode 100644 (file)
index c6e36e8..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_a_ne_f_width 89
-#define jigsaw_a_ne_f_height 74
-#define jigsaw_a_ne_f_x_hot 21
-#define jigsaw_a_ne_f_y_hot 1
-static unsigned char jigsaw_a_ne_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x7e, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xc0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xc0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x7f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_ne_h.xbm b/hacks/images/jigsaw/jigsaw_a_ne_h.xbm
deleted file mode 100644 (file)
index 52ac3ed..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_a_ne_h_width 89
-#define jigsaw_a_ne_h_height 74
-#define jigsaw_a_ne_h_x_hot 21
-#define jigsaw_a_ne_h_y_hot 1
-static unsigned char jigsaw_a_ne_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x7e, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0xc0, 0xff, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0xe0, 0xc1, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x70, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x70, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0xe0, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0xc0, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x7f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x0f, 0x3e, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0x03, 0x78, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x38, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0xe0, 0x03, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0xf8, 0x00,
-   0x00, 0x00, 0xc0, 0x3f, 0x00, 0x30, 0x00, 0x80, 0x01, 0x80, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0x03, 0x18, 0x00, 0x00, 0x03, 0xf8, 0x07, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0c, 0x00, 0x00, 0x86, 0x7f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_nw_f.xbm b/hacks/images/jigsaw/jigsaw_a_nw_f.xbm
deleted file mode 100644 (file)
index ff4cafe..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#define jigsaw_a_nw_f_width 88
-#define jigsaw_a_nw_f_height 74
-#define jigsaw_a_nw_f_x_hot 1
-#define jigsaw_a_nw_f_y_hot 1
-static unsigned char jigsaw_a_nw_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x7e, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0x03, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x83, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0x0f, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x07, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03,
-   0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00,
-   0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff,
-   0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x07, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07,
-   0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00,
-   0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe,
-   0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff,
-   0xff, 0x07, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x3c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_nw_h.xbm b/hacks/images/jigsaw/jigsaw_a_nw_h.xbm
deleted file mode 100644 (file)
index 39b6df6..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#define jigsaw_a_nw_h_width 88
-#define jigsaw_a_nw_h_height 74
-#define jigsaw_a_nw_h_x_hot 1
-#define jigsaw_a_nw_h_y_hot 1
-static unsigned char jigsaw_a_nw_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x7e, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0xff, 0x03, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x83, 0x07, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x0e, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x7c, 0x00, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0x01, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x83, 0xff, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0xfe, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0xf8, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x3c, 0xc0, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x0e, 0x00, 0x07, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03,
-   0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x03, 0x00,
-   0x1c, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00,
-   0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00,
-   0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06,
-   0x00, 0x80, 0x03, 0x00, 0x1c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x03, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x06, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06,
-   0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00,
-   0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
-   0xc0, 0x07, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xfc,
-   0x03, 0x00, 0x00, 0xc0, 0x3f, 0x80, 0x01, 0x00, 0x18, 0xc0, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xc3, 0x00, 0x00, 0x30, 0xfc, 0x03, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x3c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_s_f.xbm b/hacks/images/jigsaw/jigsaw_a_s_f.xbm
deleted file mode 100644 (file)
index 1ba034d..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#define jigsaw_a_s_f_width 108
-#define jigsaw_a_s_f_height 73
-#define jigsaw_a_s_f_x_hot 20
-#define jigsaw_a_s_f_y_hot 5
-static unsigned char jigsaw_a_s_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
-   0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f,
-   0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f,
-   0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f,
-   0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff,
-   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0,
-   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f,
-   0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xe0, 0x0f, 0x00, 0xc0, 0xff,
-   0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8, 0x3f, 0x00,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0xc0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8,
-   0x3f, 0x00, 0x00, 0x7e, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x1f, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_s_h.xbm b/hacks/images/jigsaw/jigsaw_a_s_h.xbm
deleted file mode 100644 (file)
index 4012c2a..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#define jigsaw_a_s_h_width 108
-#define jigsaw_a_s_h_height 73
-#define jigsaw_a_s_h_x_hot 20
-#define jigsaw_a_s_h_y_hot 5
-static unsigned char jigsaw_a_s_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
-   0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0c,
-   0x00, 0x00, 0xc3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0x03, 0x18, 0x00, 0x80, 0x01, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x3f, 0x00, 0x30, 0x00, 0xc0, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0x03, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x7c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
-   0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x01, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18,
-   0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x38, 0x00, 0xc0,
-   0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30,
-   0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0x03, 0x3c, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x0f, 0x1f, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xfe, 0x07,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-   0xf0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xe0, 0x0f, 0x00, 0xc0, 0xff,
-   0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xf8, 0x3f, 0x00,
-   0xe0, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
-   0x70, 0x00, 0x70, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x07, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x70, 0x00, 0x7e, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xe0, 0x00, 0xe0, 0xc1,
-   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x78, 0x00,
-   0xc0, 0xff, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xf8,
-   0x3f, 0x00, 0x00, 0x7e, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x1c, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_se_f.xbm b/hacks/images/jigsaw/jigsaw_a_se_f.xbm
deleted file mode 100644 (file)
index 13f0554..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#define jigsaw_a_se_f_width 88
-#define jigsaw_a_se_f_height 74
-#define jigsaw_a_se_f_x_hot 20
-#define jigsaw_a_se_f_y_hot 6
-static unsigned char jigsaw_a_se_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0xff,
-   0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f,
-   0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00,
-   0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80,
-   0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff,
-   0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff,
-   0x1f, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f,
-   0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00,
-   0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x7f, 0x80, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xc1, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0xc0, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0x7e, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
-   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_se_h.xbm b/hacks/images/jigsaw/jigsaw_a_se_h.xbm
deleted file mode 100644 (file)
index a023af2..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#define jigsaw_a_se_h_width 88
-#define jigsaw_a_se_h_height 74
-#define jigsaw_a_se_h_x_hot 20
-#define jigsaw_a_se_h_y_hot 6
-static unsigned char jigsaw_a_se_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x3f, 0x0c, 0x00, 0x00, 0xc3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0x03, 0x18, 0x00, 0x80, 0x01, 0xfc, 0x03, 0x00, 0x00, 0xc0, 0x3f, 0x00,
-   0x30, 0x00, 0xc0, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x60,
-   0x00, 0x60, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
-   0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x01, 0x00, 0x60, 0x00,
-   0x00, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x80, 0x01, 0x00,
-   0x18, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18,
-   0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00,
-   0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x38, 0x00, 0xc0,
-   0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0xc0, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0x03, 0x3c, 0x00, 0x00, 0x60, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x80, 0x0f, 0x1f, 0x00, 0x00, 0x60, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x7f, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0xff, 0xc1, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0x80, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x70, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0xe0, 0xc1, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0xc0, 0xff, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x7e, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
-   0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_sw_f.xbm b/hacks/images/jigsaw/jigsaw_a_sw_f.xbm
deleted file mode 100644 (file)
index 1b11399..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#define jigsaw_a_sw_f_width 88
-#define jigsaw_a_sw_f_height 74
-#define jigsaw_a_sw_f_x_hot 1
-#define jigsaw_a_sw_f_y_hot 6
-static unsigned char jigsaw_a_sw_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x3c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
-   0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01,
-   0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00,
-   0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe,
-   0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff,
-   0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff, 0x07,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01,
-   0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00,
-   0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff,
-   0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x0f, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x83, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0x03, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x7e, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_sw_h.xbm b/hacks/images/jigsaw/jigsaw_a_sw_h.xbm
deleted file mode 100644 (file)
index 4f4d5ad..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#define jigsaw_a_sw_h_width 88
-#define jigsaw_a_sw_h_height 74
-#define jigsaw_a_sw_h_x_hot 1
-#define jigsaw_a_sw_h_y_hot 6
-static unsigned char jigsaw_a_sw_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x3c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc3,
-   0x00, 0x00, 0x30, 0xfc, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x80, 0x01,
-   0x00, 0x18, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x03, 0x00,
-   0x0c, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x06, 0x00, 0x06,
-   0x00, 0xc0, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00,
-   0x06, 0x00, 0x80, 0x03, 0x00, 0x1c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06,
-   0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00,
-   0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00,
-   0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00,
-   0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x03, 0x00, 0x1c, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x3c, 0xc0, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0xf8, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0xe0, 0x7f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x0f, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x80, 0x01, 0xfe, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x83, 0xff, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfe, 0x01, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x7c, 0x00, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00,
-   0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x83, 0x07,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0xff, 0x03, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x7e, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_w_f.xbm b/hacks/images/jigsaw/jigsaw_a_w_f.xbm
deleted file mode 100644 (file)
index 5700499..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#define jigsaw_a_w_f_width 88
-#define jigsaw_a_w_f_height 78
-#define jigsaw_a_w_f_x_hot 1
-#define jigsaw_a_w_f_y_hot 6
-static unsigned char jigsaw_a_w_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x3c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
-   0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01,
-   0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00,
-   0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe,
-   0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff,
-   0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff, 0x07,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01,
-   0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00,
-   0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff,
-   0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x0f, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x01, 0x7e, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x83, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0x03, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0xc0,
-   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0x00, 0xff,
-   0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x01, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01,
-   0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00,
-   0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xfc,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff,
-   0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff, 0x07,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00,
-   0xfc, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0,
-   0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f,
-   0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
-   0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_a_w_h.xbm b/hacks/images/jigsaw/jigsaw_a_w_h.xbm
deleted file mode 100644 (file)
index 3993528..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#define jigsaw_a_w_h_width 88
-#define jigsaw_a_w_h_height 78
-#define jigsaw_a_w_h_x_hot 1
-#define jigsaw_a_w_h_y_hot 6
-static unsigned char jigsaw_a_w_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x3c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc3,
-   0x00, 0x00, 0x30, 0xfc, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x80, 0x01,
-   0x00, 0x18, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x03, 0x00,
-   0x0c, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x06, 0x00, 0x06,
-   0x00, 0xc0, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00,
-   0x06, 0x00, 0x80, 0x03, 0x00, 0x1c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06,
-   0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00,
-   0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01,
-   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00,
-   0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00,
-   0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x03, 0x00, 0x1c, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x60, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x3c, 0xc0, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0xf8, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0xe0, 0x7f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x0f, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x01, 0x7e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x83, 0xff, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xff, 0x83, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x7e, 0x00, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00,
-   0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x07,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xff, 0x03, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xfe, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x0f, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0xe0, 0x7f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xf8,
-   0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3c, 0xc0,
-   0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0e, 0x00, 0x07,
-   0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x03, 0x00, 0x1c, 0x00, 0xc0, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0xc0, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06,
-   0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00,
-   0x80, 0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80,
-   0x01, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01,
-   0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x80, 0x03, 0x00,
-   0x1c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x0c,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
-   0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x3e, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xc0, 0x07, 0x00, 0x00,
-   0xfc, 0x03, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xc0,
-   0x3f, 0x80, 0x01, 0x00, 0x18, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xc3, 0x00, 0x00, 0x30, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f,
-   0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
-   0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_e_f.xbm b/hacks/images/jigsaw/jigsaw_b_e_f.xbm
deleted file mode 100644 (file)
index d96d25a..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#define jigsaw_b_e_f_width 74
-#define jigsaw_b_e_f_height 108
-#define jigsaw_b_e_f_x_hot 6
-#define jigsaw_b_e_f_y_hot 21
-static unsigned char jigsaw_b_e_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0xff, 0xff,
-   0x00, 0x00, 0xf0, 0x01, 0xe0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0xff, 0x01, 0xe0, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0x01,
-   0xe0, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x07, 0xff, 0xff, 0x01, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0x1f, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xc0, 0x07, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
-   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0x07,
-   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0x1f, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xe0, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x07, 0xff, 0xff, 0x01,
-   0xe0, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0x01, 0xe0, 0x3f,
-   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xff, 0x01, 0xc0, 0x03, 0x00, 0xc0,
-   0xff, 0xff, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_e_h.xbm b/hacks/images/jigsaw/jigsaw_b_e_h.xbm
deleted file mode 100644 (file)
index d2e1db7..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#define jigsaw_b_e_h_width 74
-#define jigsaw_b_e_h_height 108
-#define jigsaw_b_e_h_x_hot 6
-#define jigsaw_b_e_h_y_hot 21
-static unsigned char jigsaw_b_e_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x60, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0x00, 0xc0,
-   0x00, 0x00, 0xf0, 0x01, 0xe0, 0x3f, 0x00, 0xe0, 0x00, 0x80, 0x01, 0x00,
-   0xff, 0x01, 0x60, 0xfc, 0x03, 0x70, 0x00, 0x00, 0x03, 0xf0, 0x8f, 0x01,
-   0x60, 0xc0, 0x3f, 0x38, 0x00, 0x00, 0x06, 0xff, 0x80, 0x01, 0x60, 0x00,
-   0xfc, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x80, 0x01, 0x30, 0x00, 0xc0, 0x0f,
-   0x00, 0x00, 0xf8, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0xf0,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0xf8, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x1f, 0xf0, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0xc0, 0x07, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x07,
-   0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x1f, 0xf0, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0xf8, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x18, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0xc0, 0x0f, 0x00, 0x00,
-   0xf8, 0x00, 0x80, 0x01, 0x60, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xfc, 0x0f,
-   0x80, 0x01, 0x60, 0xc0, 0x3f, 0x38, 0x00, 0x00, 0x06, 0xff, 0x80, 0x01,
-   0x60, 0xfc, 0x03, 0x70, 0x00, 0x00, 0x03, 0xf0, 0x8f, 0x01, 0xe0, 0x3f,
-   0x00, 0xe0, 0x00, 0x80, 0x01, 0x00, 0xff, 0x01, 0xc0, 0x03, 0x00, 0xc0,
-   0x00, 0xc0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_f.xbm b/hacks/images/jigsaw/jigsaw_b_f.xbm
deleted file mode 100644 (file)
index 4001dd3..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#define jigsaw_b_f_width 78
-#define jigsaw_b_f_height 108
-#define jigsaw_b_f_x_hot 5
-#define jigsaw_b_f_y_hot 20
-static unsigned char jigsaw_b_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0xff, 0xff,
-   0x00, 0x00, 0xf0, 0x00, 0xe0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0xff, 0x01, 0xe0, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0x01,
-   0xe0, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x07, 0xff, 0xff, 0x01, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0x1f, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0x03, 0xfe, 0x01, 0xc0, 0x07, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xf8, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x07,
-   0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0x00, 0xe0, 0x1f, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xfe, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xe0, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x07, 0xff, 0xff, 0x01,
-   0xe0, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0x01, 0xe0, 0x3f,
-   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xff, 0x01, 0xc0, 0x03, 0x00, 0xc0,
-   0xff, 0xff, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_h.xbm b/hacks/images/jigsaw/jigsaw_b_h.xbm
deleted file mode 100644 (file)
index 5fddc07..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#define jigsaw_b_h_width 78
-#define jigsaw_b_h_height 108
-#define jigsaw_b_h_x_hot 5
-#define jigsaw_b_h_y_hot 20
-static unsigned char jigsaw_b_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x70, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
-   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0x00, 0xc0,
-   0x00, 0x00, 0xf0, 0x00, 0xe0, 0x3f, 0x00, 0x60, 0x00, 0xc0, 0x01, 0x00,
-   0xff, 0x01, 0x60, 0xfc, 0x03, 0x30, 0x00, 0x80, 0x03, 0xf0, 0x8f, 0x01,
-   0x60, 0xc0, 0x3f, 0x18, 0x00, 0x00, 0x07, 0xff, 0x80, 0x01, 0x60, 0x00,
-   0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x0f, 0x80, 0x01, 0x30, 0x00, 0xc0, 0x07,
-   0x00, 0x00, 0xfc, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0xf0,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x06, 0x30, 0xf8, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0x07, 0x03, 0xe0, 0x1f, 0xf0, 0x00, 0x00, 0x00,
-   0xc0, 0x03, 0xfe, 0x01, 0xc0, 0x07, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00,
-   0xf8, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0x07,
-   0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0xe0, 0x1f, 0xf0, 0x00,
-   0x00, 0x00, 0xc0, 0x03, 0xfe, 0x01, 0x30, 0xf8, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0x07, 0x03, 0x18, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0x03, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0xc0, 0x07, 0x00, 0x00,
-   0xfc, 0x00, 0x00, 0x03, 0x60, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x0f,
-   0x80, 0x01, 0x60, 0xc0, 0x3f, 0x18, 0x00, 0x00, 0x07, 0xff, 0x80, 0x01,
-   0x60, 0xfc, 0x03, 0x30, 0x00, 0x80, 0x03, 0xf0, 0x8f, 0x01, 0xe0, 0x3f,
-   0x00, 0x60, 0x00, 0xc0, 0x01, 0x00, 0xff, 0x01, 0xc0, 0x03, 0x00, 0xc0,
-   0x00, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x80,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_n_f.xbm b/hacks/images/jigsaw/jigsaw_b_n_f.xbm
deleted file mode 100644 (file)
index 3a5f241..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_n_f_width 78
-#define jigsaw_b_n_f_height 88
-#define jigsaw_b_n_f_x_hot 6
-#define jigsaw_b_n_f_y_hot 1
-static unsigned char jigsaw_b_n_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0x1f,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0x01, 0xc0, 0x07, 0xc0, 0xff,
-   0xff, 0xff, 0xff, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
-   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0x00, 0x00, 0xc0, 0x07, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0x00,
-   0xe0, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0x01, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0x3f, 0xf8, 0xff, 0xff,
-   0x07, 0xff, 0xff, 0x01, 0xe0, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0,
-   0xff, 0x01, 0xe0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xff, 0x01,
-   0xc0, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_n_h.xbm b/hacks/images/jigsaw/jigsaw_b_n_h.xbm
deleted file mode 100644 (file)
index 70d1d5d..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_n_h_width 78
-#define jigsaw_b_n_h_height 88
-#define jigsaw_b_n_h_x_hot 6
-#define jigsaw_b_n_h_y_hot 1
-static unsigned char jigsaw_b_n_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x18, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x06,
-   0x30, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x03, 0xe0, 0x1f,
-   0xf0, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xfe, 0x01, 0xc0, 0x07, 0xc0, 0x01,
-   0x00, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00,
-   0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
-   0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x70, 0x00,
-   0x00, 0x00, 0xc0, 0x07, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x00,
-   0xe0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xfe, 0x01, 0x30, 0xf8,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x03, 0x18, 0xf0, 0x1f, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0x03, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00,
-   0xc0, 0x0f, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x03, 0x60, 0x00, 0xfc, 0x1f,
-   0x00, 0x00, 0xfc, 0x0f, 0x80, 0x01, 0x60, 0xc0, 0x3f, 0x38, 0x00, 0x00,
-   0x06, 0xff, 0x80, 0x01, 0x60, 0xfc, 0x03, 0x70, 0x00, 0x00, 0x03, 0xf0,
-   0x8f, 0x01, 0xe0, 0x3f, 0x00, 0xe0, 0x00, 0x80, 0x01, 0x00, 0xff, 0x01,
-   0xc0, 0x03, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x70, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_ne_f.xbm b/hacks/images/jigsaw/jigsaw_b_ne_f.xbm
deleted file mode 100644 (file)
index 20629f5..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_ne_f_width 74
-#define jigsaw_b_ne_f_height 88
-#define jigsaw_b_ne_f_x_hot 6
-#define jigsaw_b_ne_f_y_hot 1
-static unsigned char jigsaw_b_ne_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0x1f,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0x07, 0xc0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xc0, 0x07, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xe0, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0x3f, 0xf8, 0xff, 0xff,
-   0x07, 0xff, 0xff, 0x01, 0xe0, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0,
-   0xff, 0x01, 0xe0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xff, 0x01,
-   0xc0, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00,
-   0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_ne_h.xbm b/hacks/images/jigsaw/jigsaw_b_ne_h.xbm
deleted file mode 100644 (file)
index 2b5da10..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_ne_h_width 74
-#define jigsaw_b_ne_h_height 88
-#define jigsaw_b_ne_h_x_hot 6
-#define jigsaw_b_ne_h_y_hot 1
-static unsigned char jigsaw_b_ne_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x18, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x30, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x1f,
-   0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x07, 0xc0, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0c,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x07,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0xc0, 0x07, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0xe0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0xf8,
-   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0xf0, 0x1f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00,
-   0xc0, 0x0f, 0x00, 0x00, 0xf8, 0x00, 0x80, 0x01, 0x60, 0x00, 0xfc, 0x1f,
-   0x00, 0x00, 0xfc, 0x0f, 0x80, 0x01, 0x60, 0xc0, 0x3f, 0x38, 0x00, 0x00,
-   0x06, 0xff, 0x80, 0x01, 0x60, 0xfc, 0x03, 0x70, 0x00, 0x00, 0x03, 0xf0,
-   0x8f, 0x01, 0xe0, 0x3f, 0x00, 0xe0, 0x00, 0x80, 0x01, 0x00, 0xff, 0x01,
-   0xc0, 0x03, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00,
-   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x70, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_nw_f.xbm b/hacks/images/jigsaw/jigsaw_b_nw_f.xbm
deleted file mode 100644 (file)
index 441fe2f..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_nw_f_width 74
-#define jigsaw_b_nw_f_height 88
-#define jigsaw_b_nw_f_x_hot 1
-#define jigsaw_b_nw_f_y_hot 1
-static unsigned char jigsaw_b_nw_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x0f, 0x80, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x07, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x80, 0x0f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x1f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0x83, 0xff, 0xff, 0x7f,
-   0xf0, 0xff, 0x1f, 0x00, 0xfe, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff,
-   0x1f, 0x00, 0xfe, 0x03, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0xf0, 0x1f, 0x00,
-   0x3e, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-   0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_nw_h.xbm b/hacks/images/jigsaw/jigsaw_b_nw_h.xbm
deleted file mode 100644 (file)
index 9f9bc0f..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_nw_h_width 74
-#define jigsaw_b_nw_h_height 88
-#define jigsaw_b_nw_h_x_hot 1
-#define jigsaw_b_nw_h_y_hot 1
-static unsigned char jigsaw_b_nw_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x18, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x60, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0x30, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x3c, 0xe0, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x0e, 0x80, 0x0f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x0f, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xe0, 0x1f, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0x3f, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00,
-   0x7c, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x30, 0x00, 0x06, 0xc0, 0xff, 0x00,
-   0x00, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x06, 0xfc, 0x83, 0x01, 0x00, 0x70,
-   0xf0, 0x0f, 0x18, 0x00, 0xc6, 0x3f, 0x00, 0x03, 0x00, 0x38, 0x00, 0xff,
-   0x18, 0x00, 0xfe, 0x03, 0x00, 0x06, 0x00, 0x1c, 0x00, 0xf0, 0x1f, 0x00,
-   0x3e, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x1c,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x70, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_s_f.xbm b/hacks/images/jigsaw/jigsaw_b_s_f.xbm
deleted file mode 100644 (file)
index b1a5934..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_s_f_width 78
-#define jigsaw_b_s_f_height 88
-#define jigsaw_b_s_f_x_hot 5
-#define jigsaw_b_s_f_y_hot 20
-static unsigned char jigsaw_b_s_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0xff, 0xff,
-   0x00, 0x00, 0xf0, 0x00, 0xe0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0xff, 0x01, 0xe0, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0x01,
-   0xe0, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x07, 0xff, 0xff, 0x01, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0x1f, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0x03, 0xfe, 0x01, 0xc0, 0x07, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xf8, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x07,
-   0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0x00, 0xe0, 0x1f, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xfe, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_s_h.xbm b/hacks/images/jigsaw/jigsaw_b_s_h.xbm
deleted file mode 100644 (file)
index d1e496b..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_s_h_width 78
-#define jigsaw_b_s_h_height 88
-#define jigsaw_b_s_h_x_hot 5
-#define jigsaw_b_s_h_y_hot 20
-static unsigned char jigsaw_b_s_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x60, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0x00, 0xc0,
-   0x00, 0x00, 0xf0, 0x00, 0xe0, 0x3f, 0x00, 0xe0, 0x00, 0x80, 0x01, 0x00,
-   0xff, 0x01, 0x60, 0xfc, 0x03, 0x70, 0x00, 0x00, 0x03, 0xf0, 0x8f, 0x01,
-   0x60, 0xc0, 0x3f, 0x38, 0x00, 0x00, 0x06, 0xff, 0x80, 0x01, 0x60, 0x00,
-   0xfc, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x80, 0x01, 0x30, 0x00, 0xc0, 0x0f,
-   0x00, 0x00, 0xf8, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0xf0,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x06, 0x30, 0xf8, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0x07, 0x03, 0xe0, 0x1f, 0xf0, 0x00, 0x00, 0x00,
-   0xc0, 0x03, 0xfe, 0x01, 0xc0, 0x07, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00,
-   0xf8, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0x07,
-   0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0xe0, 0x1f, 0xf0, 0x00,
-   0x00, 0x00, 0xc0, 0x03, 0xfe, 0x01, 0x30, 0xf8, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0x07, 0x03, 0x18, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0x03, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_se_f.xbm b/hacks/images/jigsaw/jigsaw_b_se_f.xbm
deleted file mode 100644 (file)
index 5564b8a..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_se_f_width 74
-#define jigsaw_b_se_f_height 88
-#define jigsaw_b_se_f_x_hot 6
-#define jigsaw_b_se_f_y_hot 20
-static unsigned char jigsaw_b_se_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0xff, 0xff,
-   0x00, 0x00, 0xf0, 0x01, 0xe0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00,
-   0xff, 0x01, 0xe0, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0x01,
-   0xe0, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x07, 0xff, 0xff, 0x01, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0x1f, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xc0, 0x07, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
-   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0x07,
-   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0x1f, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_se_h.xbm b/hacks/images/jigsaw/jigsaw_b_se_h.xbm
deleted file mode 100644 (file)
index 2a11d93..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_se_h_width 74
-#define jigsaw_b_se_h_height 88
-#define jigsaw_b_se_h_x_hot 6
-#define jigsaw_b_se_h_y_hot 20
-static unsigned char jigsaw_b_se_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x60, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
-   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
-   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0x00, 0xc0,
-   0x00, 0x00, 0xf0, 0x01, 0xe0, 0x3f, 0x00, 0xe0, 0x00, 0x80, 0x01, 0x00,
-   0xff, 0x01, 0x60, 0xfc, 0x03, 0x70, 0x00, 0x00, 0x03, 0xf0, 0x8f, 0x01,
-   0x60, 0xc0, 0x3f, 0x38, 0x00, 0x00, 0x06, 0xff, 0x80, 0x01, 0x60, 0x00,
-   0xfc, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x80, 0x01, 0x30, 0x00, 0xc0, 0x0f,
-   0x00, 0x00, 0xf8, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0xf0,
-   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0xf8, 0x3f, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x1f, 0xf0, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0xc0, 0x07, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
-   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x07,
-   0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x1f, 0xf0, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0xf8, 0x3f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x18, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_sw_f.xbm b/hacks/images/jigsaw/jigsaw_b_sw_f.xbm
deleted file mode 100644 (file)
index d9a77db..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_sw_f_width 74
-#define jigsaw_b_sw_f_height 88
-#define jigsaw_b_sw_f_x_hot 1
-#define jigsaw_b_sw_f_y_hot 21
-static unsigned char jigsaw_b_sw_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xfc, 0xff, 0x0f,
-   0x00, 0x00, 0x0f, 0x00, 0xfe, 0x03, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0xf0,
-   0x1f, 0x00, 0xfe, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0x1f, 0x00,
-   0xfe, 0xff, 0x83, 0xff, 0xff, 0x7f, 0xf0, 0xff, 0x1f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0xe0, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x80,
-   0x0f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x80, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0xe0, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_sw_h.xbm b/hacks/images/jigsaw/jigsaw_b_sw_h.xbm
deleted file mode 100644 (file)
index d96c8c1..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#define jigsaw_b_sw_h_width 74
-#define jigsaw_b_sw_h_height 88
-#define jigsaw_b_sw_h_x_hot 1
-#define jigsaw_b_sw_h_y_hot 21
-static unsigned char jigsaw_b_sw_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x03,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x0c, 0x00, 0x0c,
-   0x00, 0x00, 0x0f, 0x00, 0xfe, 0x03, 0x00, 0x06, 0x00, 0x1c, 0x00, 0xf0,
-   0x1f, 0x00, 0xc6, 0x3f, 0x00, 0x03, 0x00, 0x38, 0x00, 0xff, 0x18, 0x00,
-   0x06, 0xfc, 0x83, 0x01, 0x00, 0x70, 0xf0, 0x0f, 0x18, 0x00, 0x06, 0xc0,
-   0xff, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x06, 0x00, 0x7c, 0x00,
-   0x00, 0xc0, 0x0f, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf0, 0x7f, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x3c, 0xe0, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x80,
-   0x0f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x0f, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x3c, 0xe0, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xf0, 0x7f, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f,
-   0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x18, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_w_f.xbm b/hacks/images/jigsaw/jigsaw_b_w_f.xbm
deleted file mode 100644 (file)
index 5d7ece9..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#define jigsaw_b_w_f_width 74
-#define jigsaw_b_w_f_height 108
-#define jigsaw_b_w_f_x_hot 1
-#define jigsaw_b_w_f_y_hot 21
-static unsigned char jigsaw_b_w_f_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xfc, 0xff, 0x0f,
-   0x00, 0x00, 0x0f, 0x00, 0xfe, 0x03, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0xf0,
-   0x1f, 0x00, 0xfe, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0x1f, 0x00,
-   0xfe, 0xff, 0x83, 0xff, 0xff, 0x7f, 0xf0, 0xff, 0x1f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x3f, 0xe0, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x80,
-   0x0f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
-   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x0f, 0x80, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0xe0, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x1f, 0x00, 0xfe, 0xff, 0x83, 0xff, 0xff, 0x7f, 0xf0, 0xff, 0x1f, 0x00,
-   0xfe, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0x1f, 0x00, 0xfe, 0x03,
-   0x00, 0xfe, 0xff, 0x1f, 0x00, 0xf0, 0x1f, 0x00, 0x3e, 0x00, 0x00, 0xfc,
-   0xff, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/jigsaw/jigsaw_b_w_h.xbm b/hacks/images/jigsaw/jigsaw_b_w_h.xbm
deleted file mode 100644 (file)
index 670ae11..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#define jigsaw_b_w_h_width 74
-#define jigsaw_b_w_h_height 108
-#define jigsaw_b_w_h_x_hot 1
-#define jigsaw_b_w_h_y_hot 21
-static unsigned char jigsaw_b_w_h_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-   0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x03,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x0c, 0x00, 0x0c,
-   0x00, 0x00, 0x0f, 0x00, 0xfe, 0x03, 0x00, 0x06, 0x00, 0x1c, 0x00, 0xf0,
-   0x1f, 0x00, 0xc6, 0x3f, 0x00, 0x03, 0x00, 0x38, 0x00, 0xff, 0x18, 0x00,
-   0x06, 0xfc, 0x83, 0x01, 0x00, 0x70, 0xf0, 0x0f, 0x18, 0x00, 0x06, 0xc0,
-   0xff, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x06, 0x00, 0x7c, 0x00,
-   0x00, 0xc0, 0x0f, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf0, 0x7f, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x3c, 0xe0, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x80,
-   0x0f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00,
-   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x0f, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x3c, 0xe0, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xf0, 0x7f, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f,
-   0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x7c, 0x00, 0x00, 0xc0,
-   0x0f, 0x00, 0x30, 0x00, 0x06, 0xc0, 0xff, 0x00, 0x00, 0xe0, 0xff, 0x00,
-   0x18, 0x00, 0x06, 0xfc, 0x83, 0x01, 0x00, 0x70, 0xf0, 0x0f, 0x18, 0x00,
-   0xc6, 0x3f, 0x00, 0x03, 0x00, 0x38, 0x00, 0xff, 0x18, 0x00, 0xfe, 0x03,
-   0x00, 0x06, 0x00, 0x1c, 0x00, 0xf0, 0x1f, 0x00, 0x3e, 0x00, 0x00, 0x0c,
-   0x00, 0x0c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
-   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x38,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
-   0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/hacks/images/lament.xpm b/hacks/images/lament.xpm
deleted file mode 100644 (file)
index 96c4dbd..0000000
+++ /dev/null
@@ -1,791 +0,0 @@
-/* XPM */
-static char *lament_faces[] = {
-/* width height num_colors chars_per_pixel */
-"   128   768       16            1",
-/* colors */
-". c #c7c913",
-"# c #241d15",
-"a c #5e5a1b",
-"b c #6a6a19",
-"c c #e7d60b",
-"d c #fceb05",
-"e c #d8c610",
-"f c #3e3a1b",
-"g c #2c2b16",
-"h c #88891a",
-"i c #99971a",
-"j c #a8a918",
-"k c #7c781b",
-"l c #050506",
-"m c #b9b817",
-"n c #4d4c1a",
-/* pixels */
-"lf........eeee.e.e.e..eee.eeee.ee..allfkkkbabaabnknabbbbbhhhhallajiiijiiiihmiiijiihjiiiillimmjjjijijjjjjjiiijjmmmmmjmm....ee.lll",
-"#lacdddccdicmjdbdedcdccjcjdjcjccmddcllgdddejd.ceceeddded.d.ddelliddddec.cmcjchchciejeddjlfdddicbeedi.h.ecjhejc..kchcbehedddeflll",
-"cnlbdddddddddddddddddddcdddedcdc.dddflleddcmd.dedc.dddidmdmddmlliddddcdcdmdjd.cje.ejeddnlidddec.ccdmcje.ceichcmdidhcieieddc#llia",
-"cdhlhdic.#####edekk#ggg##ggggggggkdccjiecdhgggggggggggfgggfcdcmmcdcngggggggfgfgfggfh.mdjic.cgggfffggggfgffgfnncdddbnnadijd#lljda",
-"edde.ki..bllll.dmljglllllllllllll#ecdkaaemjllllllllllll#iglee.nfmmelllllllllllllllljmmbnicekllllllllllllllllfmeijilllkb..kighcda",
-"edddblncbdklllkd.lgclllllllllllfbcde.hllkjdgllllllllllllkdjdjmllhdc#llllllllllllll#d.cll.lmfllllllllllllllliddllh#llidicglbdddda",
-"edd.dblgckcilllcdhmj.#lllllll.c.ajddcell#dhjllllk.i#lllg.j.cejllibeelllllllllllllladcilfdedmmjnllllllllllfedde..hllhdac#ll.cacda",
-".iemcealgc.mbllidddg#jllllllgcddcmjjccfllme.llfmefl#lllnededkmlli.cd#lllllllllllll.nc#lijmi.cajki#llllllk.kf#lljllkmjeallkjjckjn",
-"edjf.kdblgcdhhlbdd.ll.mlllamcecdmdmhde.llgmhnn.dffmcnll#cdbcdjllibeeillllllllllllfdcilleddbaah.dhmllllliellllllhlicecgllimcc#cdn",
-".hmlfdcdhlgekch#edc#f..jllecdj#iadddd.dgll.mehlhecn#bgll#cmddillih.ndcjlllllllllliadflhbhddcbmdkbdchlg.ddcccjfhbhdhc#llmebeg#hmn",
-"e.jllgcmdal#ebcbnddmckihflkddd.eaeddde.bllkmdb#.cenmhllllkhdeilli..gddd.lllllllllcjcllc.ddddddd#ljdcacddccemedd.ckegllh.hc#ll.cn",
-".jilllfdcdblg.cckjdddailjnd.iedddddddddell#dddc#hddif#ll#aedijllhaml.dddflllllllbmbal#.nddddddellbacdd.nlkfllmd.edgllhjec#ll#iif",
-"jkillllgc.jhl#cmcddddbfhjdjdh.ddddddihicbllhdc.limddddccdhacmhlliijlljddjlllllllccelli.cc.dddddckmheb#llljll#edhe#llm.e.#llllecn",
-"e.ebglll#mmeal#ehcdddilj.emijc..ddd.m#dj.llgdmchfaiabheddckcjhlliicii.mcd.lllllgmbjlgcnda.aaddddddjllllljblgmekegllicae#llll#imn",
-"mbdddeb#lfcadblgce.ddmlleklllgddddcl.#m.dlllei.ilcccmjhkhmdddkllijcdd#liddallllicdflhdddecg#cddddmlllllhefmdeedgllieac#l#lbagccn",
-"..ieddmccmmdacbl#eccddklgdmhbmddd..lja#mhjllf.c.g#.fhlll#jbcdblliidddjlgddhlllgegmll.ndmfmd.dddenllllljdiaecie#ll.jm.gbcccdddicn",
-"mjhkdclk.bmdd.cnl#ejcddnlhikmdi.dikbfebc.c#llejciidajllbjflcckllj.dhdd.ned.allb.enlndce#l#chacjlllllajcclbcaegllh.mcajddddccde.n",
-".jhl.dlcjllgcccdal#eiedcl#cllkigdcfdjmfi.cnllidd##ddflmbll#cdblljneebdagjddnllml.llckc#lllgmmglllfhc.lnd.j.c#lljdidddddddclgddcf",
-".ehlndadilllmddcdklgce.dflgmbnccd.kejbll.f.llgcbc.enlljlaeedjklljmd.mdhllmdblnmmal#c.cllllllllb.cdddjlkdemm#ll.ikdddddj#ncfijhmf",
-".ihlliddelllccdddcaf...millfecmddflfek##mmdflliej#llllj#dcaedblljhcm#cellnd.l.nillkhj.nillll#mi#jdddcmdcf.#llijecdddcdnlgi.nlecf",
-".eklll.dd#lgdbdncbdc##ejdallf.lbdgll.jed.damllgc.nllllmkdddddblljedd.ddillcegdcjl#cddcdfll##dflladdddchic#llmceddmagl.mecallljig",
-"ibhlll#.dblkdheagca.kl#ejchl#knljglgdglgid.ell#dijlllledd..cenlljkcel.cfmi.cdnj#lkeibnmb.iecm#l#..dddmee.#l.ehdmfllnmmaglllllccn",
-"m.hllllfde#bdddmnc.mmal#.c..i#bl.inidill#dmjbllhjellllkb.jaecalljcjkmcdl#ecf.mjllmcd.eddeddjhekmaaddekm#b.mhi.nl#hedi#lllllllm.n",
-"mkklllllndhkdjmdceh.jdbll.d.j#k#c#bddcbllcccclllckblllllllneimkamhceaadklgdeajnl#eacdhj.ldmelmblgddhgelll.hcjll#cddblllllllllceg",
-"..bllllllkccdmli.llfdacbl#mme.nndmheddamikacdflljeell#nbjmeddknbcdddccddhbcdhell.ec#meeeeilkme.mjdhmmllle.iilliekmkkllllllllljjn",
-".iblllllllbcdc##mg#mddkdall.idmjngned.n#.ilckillbemmmedmdkcddalleddmdcdmdedcbbl#dijfehlmmllfknclhekill#mjkml#hhachbelllllllllcef",
-"edklllllllgeddhlmddddddi.kll..malllkmlc#gdlhddnhccdcn..dcjafnlll#gnhjcdhegdddehjicgf#lbblll#mkcmenjlllebejllmkamflhjj.llllllljhf",
-".iklllllfjhcicd#ndddddddemkllm.bbllkil#iknlfcmeflndcin#nblllllllllllll#gajcdm#adbhllllllllllbjdhjjlllc.mj#n.ngjgllje.cfllllllccg",
-"e.hllllgeakllidagdddddcdcbdallmhckii.bif.ll#ddelllb#lllg.lllllllllllllllll#bglnddillllllllllncmcillg.cje.mj.li#nhkigadkllllllmig",
-".jillllfcblliddc#mdddjlmneacbll.#eiecddhagaddddglllllll#dllllllllllllllllllllladdecfllllllll.cihlllcjbmllllibd.a#bllgdallllllddg",
-".hilllllhjllcdddhg.#fhlljgcmihlljj.igkddccckdkgllllllllleglllllllllllllllllllll#h.ch.gllll#miaill#ci.dkbillhcd#fa#llkd.cilllljkf",
-".milllnjhmklcddd.l.gljbn..ccj.blljccaa.dccdj#llllllllllljn#gfnaanfg##llllllllllllfj.mdbllljjchllgeie.c#l.mfedcge.nkhejfej#llle.#",
-".ailllefjf.edddjm#g.lnddjggjmfcblljedhjdmccgllllllllll#bcddddddddddddehglllllllllllmdmemle.nbllledh.lfl#bfddde.ddb#jfllkjnll#hbg",
-"eehlllmjlkdddddddilnmehkbf.jjeichlle.ddchlg.lllllllnjcdddddddddddda#gajdejglllllll#efjcichmjll#ccjkahllfgnh##mddmhbjlllgcgll#ceg",
-"eddifl.cgndddbkaihlla.gijmalll..ma#eedcalllaklll#a.dddddddddddddddfllllcdddmalllllm#lljcdd.mlgeh.hjlmllilkflledddden##lacl#bedd#",
-"kddfcddjdddddkllillll#eelllllll.d.c#lh#lllllcglncdddddddddddddddddglll#dddddddalliallllbdklajckdaajfal#mlilladddddcj.ececjdihdd#",
-"lgcjc#e.ddddcckmgllllhmc#lllllll.jdillllllllf.mdddddddddddddddddddejm.cdddddddd.jhllllllgllfde.abacm.ccc.hllmccddd.lllhdc.kc.kgl",
-"##mnb.cadjddffhklllllijbmgllllllfdddglllllllbdddddddddddddddddddddfff#mddddddddddhllllllllgcci.gjncn#dddddjjk#bddddakm.jac..alll",
-"ee.nllfmdaefchgclllfl#djedkllllleddflllllllmddddddddddddddddddddddbgghddddddddddddelllllllbdd.#eccmlimdcjn.kmklkddddebfdmglbalgg",
-".ddcalllgbmmchcdeb#i.bm#ccehlllihckllllll#edddddddddddddddddddddddkkh.dddddddddddddefllllllbdh.diflhalj#lg.ige#kdjb...b#lllbe.dh",
-".ddjcebglllnmechccc.hhegc.lnllbcehllllllgcdddddddddddddddddddddddc#l#.ddddddddddddddegllllll.hddflfklbblljmbk.ceimi.allll#bmkddb",
-".mdjcfcd.glll#ad..hee#adddjlllcbdllllll#cddddddddddddddddddddddddddddddddddddddddddddd#llllllcadc.dnnd.fmkndcclcch#llllb.dhmhddb",
-".eeficdiceekllllnj.cmceddmhglmcckmfllll.ddddddddddddddddddddddddd.##bdddddddddddddddddcglllllicem##kn#gmdcjcacjn#lllgk.bei.iahjb",
-"...ll#hecebcehglllgi.chcccglfccilgmall.ddddddddddddddddddddddddddeabcdddddddddddddddddd.#llgmjinjblllfh...iejfllllgiemaj.hgllhjb",
-"ejmlllllgmccg.e.allllneccjdeeeellllijhdddddddddddddddddddddddddddcabdddddddddddddddddddd.lkc#llciilac.j#dealllllncjhge.#llllleea",
-".emlllllll#amcamkciflllgkmdmddnllllljddddddddddddddddddddddddddddhlkddddddddddddddddddddd.kllllnjmc.dhehgllllgj.chee.bhlllllljjn",
-".kmllllllllllfje.ke.jflllleecelllllleddddddddddddddddddddddddddddemdddddddddddddddddddddddglllllmdd.eb#llllnjcei.dmcflgjlllllecn",
-".djlllllllllllllgmdamdcil#d#lllllllkdddddddddddddddddddddddddddddbgdddddddddddddddddddddddjlllllndjjlllllidkjmddkclg.ecdilll#hkn",
-".hjlllllllllllllll#hdhcnemelllllll#ddddddddddddddddddddddddddddddnkddddddddddddddddddddddddalllllnlajla.chcjmakblfhfmkgicllllccn",
-".djllllllllllllllllfdem.jnd.glllllkddddddddddddddddddddddddddddddf.ddddddddddddddddddddddddclllllllndejch.icnljfb#jdd.llhbllljif",
-".djllllllllllllf#l.ddc#idddc#llll#cddddddddddddddddddddddddddddddjddddddddddddddddddddddddddflllllmde.ecallgc.jejeddfeallllllcdf",
-"mcjllllllllllg.dcedecdceccdjlllllhddddddddddddddddddddddddddddddddddddddddddddddddddddddddddjlllllmddkflllllg.dbibjd#billllllmhf",
-"mdjlllllllll#.dddea#cmkle.iallllledddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgllllg.h#ll#lllllkmbdbcb#hllllllmjf",
-".jjllllllll#eddkmllgillledd#lllllddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddklllllifbllhenllllllchcmlllllll#i.f",
-"mcillllllkcdddmbkllmb#gjdmclllllhecddddddddddddddddddddddddddddddddddddddddddddddddddddddddddmllllljmjlladdihj#l#dce#llllllllhmg",
-"ejjlllll#cddde#hcmeddccdc.hlllllenkijcdddddddddddddddddddddddddddddddddddddddddddddddddddddddclllllhbellm.deg#mllce.lllkgblg#c.n",
-".dmlllllcddecggcddhcccmdddnllll#dgfmllkdddddddddddddddddddddddddddddddddddddddddddddddddddddddnlniccc.nlgmed.lkhlji.llmccbmjljnh",
-".cmlllfic.klc.dm.hf.#h#dem#llllfd#lc#llm#nedddddddddddddddddddddddddddddddddddddddddddddddddddcjkf#ge.alljbmdbljbhi.#mdddem#leef",
-".ee##kdd###hddmieemdec.dcclllllbd#legll.llhhkeddddddddddddddddddddddddddddddddddddddddddddddddelllllchkl#nmn.mlbdnhiecmcie#l#bhf",
-"eddedededcdcdcdcddccdddddelllllkelljfllmllkhlhbkddddddddddddddddddddddddddddddddddddddddddddddclllllmkj#gfmjbegfdnihiigmgcfgadcg",
-"eddhcbdjdhekckdbeh.hcj.idelllllhde.c.ikeafii#haljiicddddddddddddddddddddddddddddddddddddddddddclllllhddkchckckchmb.ichckekchiddf",
-"gamjkhhihhhhihijijijiijdjhllllljddddddddddddcdc.c.k.ddddddddddddddddddddddddddddddddddddddddddclllllhcdhci.jcjcj.jejcickebcbjcdf",
-"llfnllllllllllllllllll#clllllllmdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddllllll#bj###########g###ggg#bdgn#",
-"ll#allllllllllllllllll#clllllll.dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddlllllllnhlllllllllllllllllllgelll",
-"fnkiffgg#g########ggg#ndgglllllmddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddclllll#nkmggg#g##############a.##l",
-"eddddecedddddddddddddddddclllllmddddddddddddddddddddddddddddddddddddddddddcimeedcddddddddddddddllllljdejdcdcdd.dcd.ddddddddc.ddg",
-".ddddiejdd.mjjcdjdjc.ddddelllllhdddddddddddddddddddddddddddddddddddddddddddmb#le#feghefejhecmedlllllidefekcimjamacbcackeijjkfdcl",
-".dcacdeccj.jcmdbhebkbkkmjmlllllbdddddddddddddddddddddddddddddddddddddddddddddcjelgmlbiljllhnlncllllliiddhddcccdddeijdde....m.ccl",
-"mdcfdddcd#aijacg#ciba#l#eelllllkddddddddddddddddddddddddddddddddddddddddddddddddceelbhlmll.llkelllllecdcem.imjdhbfljhllllllllbjl",
-".ddicddcflg.jk#hl.dddhllcdnfbijmdddddddddddddddddddddddddddddddddddddddddddddddddddm.ilmll.llj.llllleadfmmedddklngiclllllllll..l",
-".ddch..flllc.iljffdddblleddehfl#ddddddddddddddddddddddddddddddddddddddddddddddddddddddicnl.ll.hllllgdmdccddmfj#ljjdjllllllll#bil",
-"ehc#nlnllllcc.lgeggcdnll.emlllllcdddddddddddddddddddddddddddddddddddddddddddddddddddddddd.c#lcfllllfj.dh#a.llm#kdddnlllllllllccl",
-"ed.llllllll.dellgkh.dalljmclllllhddddddddddddddddddddddddddddddddddddddddddddddddddddddddddc..lllllkecbllbflncacmhallllllllllhjl",
-"ecellllllj#mdelbglllbjllb.d#llllgddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddillllljbc#lk.lidddelllllllllllllccl",
-".d.llll#fkcc.jcmdmlllllll.hallllledddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnlllllemdkcdceddddalllllllllllllh.l",
-"ed.llla#cgjd.akeddjlllllkcdmllllliddddddddddddddddddddddddddcdddddddddddddddddddddddddddddddd#llllkcjddddddcjd.#lllllllllllll..l",
-"ec.lllmhkebdemc.nacnl#kck.de#llllfddddddddddddddddddddddddddkcddddddddddddddddddddddddddddddhlllll.ddddcdde#lgllllllllllllll#mel",
-"edcllladn.dkfgfinlae.dmcceilllllllidddddddddddddddddddddddddnddddddddddddddddddddddddddddddcllllllg.cdnedmlllllllllllllllllllccl",
-"edelll#edchlbkljla.ddd.bgg.lglllllgddddddddddddddddddddddddmnddddddddddddddddddddddddddddddilllllllbih.cic.hfllllllllllllllllkjl",
-"edmllllkjlhb#eeceddc.alll#djcalllll.dddddddddddddddddddddddakdddddddddddddddddddddddddddddc#lllllk#j#llaeem.dmglllllllllllllli.l",
-".c.llllgelhdddddcdklllllne.cdcllllllcddddddddddddddddddddddjhdddddddddddddddddddddddddddddklllllbdde#llll#kcc.ccilllllllllll#jel",
-".d.lllllgmcdidd.b#lllfhecjeeddfllln.mdddddddddddddddddddddmlhddddddddddddddddddddddddddddcilllll.ddj.mnllll#ajc.chjnllllllll#jel",
-"eemllllgmcbd..nllllgjc.cd.b#enjllk.flmddddddddddddddddddddmicddddddddddddddddddddddddddddnh.#llbdd.iijcea#llllamch.j.a#lllllleel",
-"edellaed.jcklllllacdbeddcgllndejcalll#ddddddddddddddddddddbljdddddddddddddddddddddddddddjllgdklcaellkccf..m#lllllb.c.hd.flll#k.l",
-"eddh..ce.b#lllgh.jim.dj#nehm.dkcnlllllfcdddddddddddddddddilljddddddddddddddddddddddddddjllllg.cjenl#l#.de.jcmalllllnmcjc..kg#..l",
-"edd.ei.fllllfjchcmca#illjfgmcddkjllllllkdddddddddddddddddbnhcdddddddddddddddddddddddddc#llllladkilln.#kdddccmdck#llll#kckdjc.jjl",
-"edddkllll#icc.edj#h#c#lnafmlnddddalllllladdddddddddddddddhfl.ddddddddddddddddddddddddcllllllleac#lllhdddmaddde.ec.nlllllnmdmgdcl",
-"m.he#llnic..ecb.g#jiekickilncd.cdmfllllllkddddddddddddddillledddddddddddddddddddddddegllllll.j.fll###d.kmnenmddeea.mb#llllgjcdcl",
-"llle#a.cicmdd.fnlgdieddddkleddgncje#llllllacddddddddddddhkhhddddddddddddddddddddddd.gllllllbdkmlllnccdhl.cnllbdkcjegcch#lllfca.#",
-"llgddkc.dddddcmllcflcmddddcdibblbddclllllllleddddddddddca#lgcdddddddddddddddddddddillllllladcelllll#jdejjnlllli..#cccidceklf.lll",
-"fidkc.jaadddddd#kjlfhi#ambddeflamhc#llllllllgedddddddddjl###ddddddddddddddddddddeallllllll#id.illllllbife#llllndblmddddh.m.jclll",
-"eddddenheddddddfe.lhljllhl.jagae..ib#mllllllcgfcdddddddcm...dddddddddddddddddddeallllllllllfckcallllllaccblll#c.hbiddddeehk.cjfl",
-"edeaek#leneddddddddhljl#albajaeee#ledddglllahlllaedddd.llllbdddddddddddddddddjglcflllllkc#bmljm.hllllll.jlllfcallcddcdcjmjecbddn",
-"edmb.iajif.ddddddm.llj#kfl#b.db.llgcdde.alg.llllllnmddmglllkddddddddddddddciflll#.gllliddcjlllicjhlgihebhhllgcllledddakehllnjddn",
-"ed.bdmdjkemaddddcljlljgelllc.ne#l#e.dhmcck.nllllllllgjcc.kn.dddddddddddceklllllllkcl#mcdd..glll.iciellilfeflleaibcdddkl.llllleea",
-"ehmlllmhlmllcddd.lgehhiblliimelllecdfllm.ddfllllllllllllfkmeedddddeemj#llllllllllliecckk#.kd#lllijedjmccnlmllgdddddd.#hhilll#men",
-"ecjlllmij.hhcedd.ll#kmcglkjjjll#ejmnllllbc..jflllllllllllll#l#####lllhllllllllllla.ejdd.bnebeflllj.cdcffbl#illedddenmhahklll#ejn",
-"ejmlllhjdi#cf#dddjllliciim#mll#.bcnllllll#.ic.i#llllllllllllllllllllljlllllllll#m.eheedjbbneee#lllemjeblmgleglgcddblhj.nlllll.kn",
-"edjll#j.djjllgcajdi.emhdki.lll.hdnlllllllllgecdd#lllllllllllllllllllliflllllllmcdaehaadenllfckc#lllmcmegbeidmlladc#llmgllllll..n",
-"ehklllanchmln.nlbdkgnn.cjjll#.ejbbllllllflllleckliehfllllllllllllllllbklllfallkddi#fjlcbfnkjkcaenll#miecdddddbll.cflkk.lllll#hjn",
-"c.hllllfcink..llkal#ddmk.lll.h.jbilllllkelllabeejdddd.in#llllllllllllnenj.dc#lieail.ik#hdhnl#.cecglllcbcddddd.llndc.nhjlllll#ddf",
-"ejmllll#cdcafiljklllemk.lll.adicfhallljclacnccjlh.ddmea.ic..jhllf.mececfjkddcmfbjinilnkgd.m.kggjjc#lllmkedddddfllcddcnllllll#khn",
-"ejjllll#.ejlhehmll#jk.jll#.c.abeahillkjcmdbncmfl.icccecchcn.dcllfddicheiibhkcllgmjienlhdd.h#lllb.kegll#mmidjnf.lljdde#llllll#eef",
-"emjllllifjgkmgj#llmc.mlllma.dhjfdbmfahnkadjdjml#.egm.#.dcdmccciijddjknlllllejnllcheeemjddkgmglll.ch.#ll#ej.#llcnlnddd.#lllll#hjf",
-"ef.lllbhnccnim#lbechmllleacddblle#fedjklndddealmjemdc#gcljmhjcf#bgj#lllllllia.llajcclllmdklljm#jb.eecllll.heabb.ll.dedd#llll#edf",
-"ccilll.amaemnghedjmjll#...dddmnhcbnddmjmjfdid##djdd.cnlei.fc..llfccgaabbbklgcefll.ndiglfd.b#lnchlmbij.#llfcf.cjc.#mcadd.#lllgjif",
-"emjllbeeflkdcdddkcmlll.cjdddddh#lcmckllinlc..lndmcdg#egen.heamllnhjgbhmddmllikhllijdaeb#d#beflmg#mljcn.lll.che#ijmem#cddhlllgeef",
-"edjliblgdmcddeejeee#lejmbedddegjmglllllgkcik#l.jjfdclledi.mdcellndcfmece.lllg.mllgelej#.clllncikai#aacjc#mageccmil.nl.dddfllfkj#",
-"c..mdilhddddddejjlaeehdklfdddehfllllllllgd..lnddalhdhlhcg.ajb.llnamikhcghlllne.klljmd.hjkigllenfbbmllem.eillncjdc#.lljddkcllgjeg",
-"c.dddd.dddccdikjlll.cmmkl#d.blll#hhlllllkdhiljjd#lfdcafd.keccellfcdndmflilli.km.llfc.ai.lg.imddddddalidea.lllgdbdebllide#dblfmef",
-"ccdddddddf#cncjll#cmmbjfij#lllg.cbnc#lll.ec#l..hl#cdde.d.kccfmllfbi.#lkmg#ccll.c#lldccfaindddddddddelledcam#llgci.nllhdb#cdggimg",
-"ccdddeanfgmimill#eddjae.klll#hcdmglijfiediilnem#llmddalnciid.ellg.e#niblliecihmkmllhhmgfmgcdddddngacilkdd...gllne.eilic##cdhfccg",
-"cccanlllle.billl.bcehfhblllkcddddclncehbedfleeellllmcd#ladcdnmllgjjhmllllghe#gcdcgllcem#dbeddddmillfclnd.hea.lllfcgc.chl#dd.fbig",
-"ecillll#cajkll#eemm#lhalnjcdccdddcgbgllmddlgdmklllll#.mll.ddccllfcce..mm..ha.lbcjklliadkddddddjlg.llgnfddbacne#llfe.dejiidddcddg",
-"eeilllg.bchllg.j.ceihcmcdddcjbddddddb#he.ilk.clllllllideb.dda.llgjkjbj..ihkihljcej#lncmdddddddcnlnnllmkdddkhj..fllfmcmafbicddjjf",
-"cmjlllec.kll#efedgbcdddcdddklke.edcddcd.j#lekhlllllllkddjamdeellgcebakkcc.kjcjfac.kll.gcdddddhjc.bcglidiedclheee#llfcbd#llfmd.eg",
-"cdjlfcijbll#cbdbhlll#nbmdcmi#labl.ddddcimlbddflllllllleddglcf.llf.ih###lll#ec.l.dkmllndmdcddmlliagicmhklkdd#lbenc#llncncflllahe#",
-"c.cf.gckllgemenhfllllnic.giaklfm#ncjcdcmal.delllllllll#kchl..ellfccjkllllljjadmfbeegl#cmdddd.il#illkmeiljddeflhmm.glla.emfllnic#",
-"cdccmmbll#e.calm##gheddelllimnecccnlkdhellcdblllllllllllbelenellgcjhcblllaindeiljehjllijbcagljllmglfdnmlcdddjllh.me#llnc.d#lnm.#",
-"cccmibll#eedfl#ecdddddillllgkhcjl.j#fdcblidclllllllllllladfeeellfdckddjlllkefkdegncdfllemmlllmlljmbjcgiej#mdd#llbefc#llaehcfnj.#",
-"cdddkllf.eeallkgnjcdcalllllllljheccecm.f#demllllllllllll#c.daellgem.cddal#hgkckgllm#jlljjdglljik.mhi.lgd#lgdd#lllicemgllacaejjc#",
-"ecd.llgc.mnllldfgaee#llllllllllhgmcicc.lfdealllllllllllllhddcellgddacdclllljklllllfcclladcillb.hhmlllllmllfddnllllijbellla..ma.#",
-"edbk.fcicgllladdddallllllllllllllln.mknljm.lllllllllllllllidfellgce.dd.mllllllllllldbjlle#..ahel#llllll#mgcddcllllladnc#lln.bdd#",
-"ehllicbenlll#edd.glllllllllllllllll.dclfdcblllllllllllllll#d.ellfddngh.#llllllllllljce#lb..ebhklllllllllbceddd#lllllimcjglb.cdc#",
-"lllgelcbllll.ddallllllllllllllllllgdcd.ccdglllllllllllllll#dkdc.c.jfllg#lllllllllll#.md..dnclllllllllllllhancdglllllliefebe#fdcl",
-"ll#cdcccccecddeecccccce.cccecec.eecddflcddccccccccccecec.ecddcllfddcccecccccec.cjc.ccdd##jddccccccccecccccdecdceje.cecdcddfllkd#",
-"lghdddhcdd.edd.cddddddehdcd.dcd.ccddjlndddc..mddjm.e.cjcmc.ddell#cccccmceccdjdmcicmccddnlgcdd.ddddddddjdcdjdidhefcbckdddddcfllal",
-"lbanfffnnnanabhbafnnaanaafbnnnaaaaanglgjhhbbbibbbajbbkbkhkhjjhlllllllllll##g#g##gg#fgfnlllfnnnanabbbbbbabkjbaaanbabnbabbbhknllll",
-"llllllllllkim..mjijmhkkhjj.ijmim....himbhaa...ibkbnaabbbaaakfffgfnnang##nbbbanlffl#ggabbnafnbbbabbbkhhimmmhijimbkecc.flgmec.klll",
-"llfjcd.hlnddddddddddddddddddddddddddddddilcddddddddddddddddddddddddddddd.dddddjdd.dddddddcddcddddddddddddddddddddecddagcdddddj#l",
-"lnddddddcgdddddddddddddddddddddeeddddddnhfcddddddddddddddddddddddddddddddddddddddddddddddbhckddddddddddddjncekddalnddbddddddddml",
-"lcdddddddedddjf.dddddhbddddddd...ddddcbcdlcdddddddddddeddddfadddd.kddddd.dddddddddddddddddbhkdd.cddcjahd.gmddcdnfm#cdddddddddddf",
-"kddddddddddddjcddddcid.ecdcdddddd.jdddddd#ceedddhedddjgcddkiacdijebdmmddhdjkhiddddddehdddde#add.khajlmddmc.nddigcdg.dddddddddddk",
-".dddddddddddddddddddddddde.dddddd#iddddddkdddddd.#nhb#eddbmdecddd.imlcddjcacdcddddjddddddddmaddddemdfcdddengcjl.ddajdddddddddddk",
-"mddddddddddddddddddddddd.jdddddmn.ddddddddddddddddcaeddc#.dddddddihmf.ddnhddddddddkbcdcdddm.nddd.gddmdddchcfdkhdddh.ddddddddddd#",
-"jddddddddcddddddddddddddedddddmgdecddedddddc.dddddcidddi.ddddddddccdmeddidddddddddcnfnjdddecnddd.edddc.dddcndhcddd.ddmddddddddml",
-"gcdddddddbccdddddddddddddddddddddddddhdddddc#cdddd.mdddddddddddddddddddddddddddddddddddddddcfddddddddjaddddjdddddddddfjddddddd#l",
-"laddddddhleddddddddkidddddddcmdddddddmddddddddddddj.dddddddddddddddddddddddddddddddddddddddcfdddddddddddddddddddddddd#lacddde#ll",
-"gacdddddibcdddc.jb#ln..e.mmialannabhmmddddddddddm.aim....mjmmeedd.mee.e.e.eeeeedddddddddddce.eeeeeeeee..ee.ee....eeedmjjedddc.ml",
-"eddddddddd.###lllllllllllllllllllllllbddddddddddflllllllllllllldcllllllllllllll.ddddddddd.lllllllllllllllllllllllllliddddddddddn",
-".ddddddddd.lllllllllllllllllllllllllljdddddddddd#llllllllllll#cddcnllllllllllll.dddden#g.bllllllllllllllllllllllllllidddcingfddh",
-".ddddd.dddmllllllllllllllllllllllllll.dddddddddd#lllllllllllgeddddcflllllllllllndddddebddhllllllllllllllllllllllllllidddmaabkdcg",
-".didddidddmlllllllllllllllllllllllllgdddjddddddelllllllllllleddddddcllllllllllll.ddddcnddmlllllllllllllllllllllllllljdddddddddel",
-"hdddddjedd.lllllllllllllllllllllllllgdddecddddd.llllllllllfeddddddddcflllllllllhddcdddk.dellllllllllllllllllllllllll#iddjednadel",
-"fcddcdddddmlllllllllllllllllllllllllfddddddddddhlllllllllfcddddddddddcnllllllllf.dedddchddlllllllllllllllllllllllllllhdcghdbfdel",
-"jddmjdddddmlllllllllllllllllllllllllkddjmddddddallllllllleddddddddddddcllllllllllcddddddddfllllllllllllllllllllllllllcdaiddjfdcl",
-"mddnmdddddilllllllllllllllllllllllllmdddddddddclllllllll.ddddddddddddddcgllllllgeddjidddddblllllllllllllllllllllllllgddjdddeadcl",
-"mddnidddddilllllllllllllllllllllllllcdddddddddcllllllllfddddddddddddddddbllllll#ddd.iddmambllllllllllllllllllllllllllcddc.dcmdel",
-".dddddd.ddillllllllllllllllllllllllbdddddcmddd.lllllll..ndddddddddddddddflllllllddddjddchddnllllllllllllllllllllllllledde#ddddel",
-"mddddddmddilllllllllllllllllllllll#cddddddccddhllllll.ddeeddddddddddbl##l#.#llll.d.n#iddjdd.llllllllllllllllllllllllledfmdddddel",
-".ddcddddddilllllllllllllllllllllllbdd.edddceddnlllllbddddddddddddddckcdcmcdj#llladek.cddccdd#llllllllllllllllllllllllmd.ckcdddel",
-"eddfadddddilllllllllllllllllllllllmddhdddddddclllllbddddddddddddddddddddddddellll.dfddddddddmlllllllllllllllllllllllllhdddddddel",
-".ddc#jddddillllllllllllllllllllllnddc#gkddddbfllll#cddddddddddddddddddddddddde#llhdedddddddddallllllllllllllllllllllllfddddddd.l",
-"mdddhacdddilllllllllllllllllllllledddicdddddjllllnghcddddddddddddddddddddddddd.#lfdddiedddddd.lllllllllllllllllllllllleddddcdd.l",
-".ddd.lheddilllllllllllllllllllllifcdddddddddd#llkddgnddddddddddddddddddddddddddelljdddddd.ddddmllllllllllllllllllllllkddddmndbll",
-"iddddmheddjllllllllllllllllllll.ccdddddde.ddnllkdddcaedddddddddddddddddddddddddd.#gddddedhhddddnlllllllllllllllllllllmdddikdddel",
-"#idddddddd.lllllllllllllllllllmddddddddddddmlladddddcnjddddddddddddcakddddddddddd.g.dddaceacdddcglllllllllllllllllllleddd.ddddcl",
-"lnddddddddmlllllllllllllllllljdddejedddddddglkddddddddb#iaddddddddelllbdddddddddddcliadcddddddddc#lllllllllllllllllll.dcddddddd#",
-"mdddddddddjllllllllllllllllljdddahecddddddk#nbdddddddddbfcddddddddnlaklfeddddddddddekdddddddkadddcglllllllllllllllllljdckmddddd#",
-"jcddddddddillllllllllllllllkddh.fedddddddcf.dcdddddddde#edddddddddca.dhg#hcddddddddddddddkjdddddddcflllllllllllllllllkddcn.ecddg",
-"l#hdddkkddjllllllllllllll#.ddddifeddcddddiedddddddddddhfddddddddddddddddcimdddddddddddddc#cddddddddhi#llllllllllllll#cdddd#l#cdg",
-"geddddcgcdjlllllllllllllaedcddddcdddddddddddddddddddddb.dddddddddddddddddddddddddddddddddcdcakfhddddddj#llllllllllll#cddidcccmdn",
-"mddcdddkjdjlllllllllllamdddmhcddddddddddddddddddddddddkdddddddddddddddddddddddddddddddddddddcdeedddddddcb#llllllllllgddddddd.hda",
-"eddfeddddd.lllllllllbcddddddddcdddddddddddddddddddddddcdddddddddddddddddddddddddddddddddddddcdddddddddddddjllllllllladddddckfddk",
-".ddikddddd.lllllfbnadddddddeahcdeffidddddddddddjidddddddddddddddddddddddd.#iddddddddddddddddcdddddncdddddddc.k#lllllbddddmm.dddf",
-"mdddfcddddchbimcdd.cddddjdddcgfdd.cddddddddddchljddddddddddddddddddddddddebcddcddddddddddddddj.dddjiddccdddddddcmjih.ddddddddddg",
-"mdddj#dddddddddddddddddddddddccddddddddddddddaliddddddddddddddddddddddddddddddfeddddddddddddde#dddmbdclhdddddddddndddddekkmddddg",
-"bdddd.ddddddddddddcdddddagaedddddddddddddddddal.dddddddddddddddecddddddddddekljdddddddddddddddcddddaidcdddddddcecaddddcghm.ddddg",
-"ndddcdddddddddddddbcd.ddea.dddddddddddddd.g.dd.ddddddddddddddddk.ddd.k.ce.alljdddddddddddddddddddddcaaedddddckhbfmddddcmdddcmdd#",
-"kddbfdddddddddddd.id.lbdddicddddddddddddcln#.ddddddddddddddddddajdddjlllllllkddddddddddddddddddddddddhidihddkdddieddddddcddkndd#",
-"kdcmdddddddddiddd.bdegfnddddddjkddddddddhedhlfhcdddddddddddddddnkdddellllllidddddddddc#beddddddddddddkmd..ddcdddfcdddddcdddbcdcl",
-"kdcdddddddddcfd.ibbdddilidddca#cddddddckedddmafggfaieddddddddddfbdddellll#jddddddddddmgagnhmdddd.bccckddddmddchdhcdehddcdddaddd#",
-"kdfe.bddddddc#flfcdddelbcddnlleddddddcl.dddddddddddddddddddddddfndddclllgeddddddddddc#.ddccddddddclfhcddddamdk#cddml.dddddcidddf",
-"kdcjmehedddddja.cdddddcchfll#eddddddhg.ddddddddddddddddddddddddffdddd#n.ddddddddddddnadddddddddddd.#la.cddccddf.dbhcdddddd.fedd#",
-"bdcdddciddddddddddddejnllllljddddddb#geddddddddddddddddddddddddgfddddcdddddddddddddabddddddddddddddblll#nk.cdddddbhhmddddddhbdcl",
-"bdhjdddhddddddddddhgllllllleddddddddddccddddddcddddddddddddddddlgdddddddddddddddddbli.ddddddddddddnlllllllllniddddddddddddddeddl",
-"kddgedmmddeafg##llllllllll.dddddddddddddddddddcgiddddddddddddddl#ddddddddddenddddcjikicddddddddmcdeieeglllllll#gfabjmdddaeddjccl",
-"kddkkdi.dd.lllllllllllllljddddddddddddddddddddde#neddddddddddcjl#ecddddddd.ghdddcddddddddddddcklkddddd.llllllllllllllcddifijfdcl",
-"kdddddddddmlllllllllllll.dddddddddddccccddddddddellbdddddddeflllllllhddddilnddd.lmddddddddddhl#jddddddddlllllllllllllcddddd.ddd#",
-"hddddddddd.lllllllllllljddddddcibfg#llllllgfhcddd.llg.dddmnllllllllll#kdbllmdddkbcdddddddddcmedddddddddd.#llllllllll#cddddddddcl",
-"hddddddddd.llllllllllliddddddjfgg###llllllll#cddddm#lljdjllllllllllllllglladdddddddddddddddddddddddddddddjlllllllllllcdddddddk#l",
-"hdddddddddmlllllllllljddddddddddddddcjh#llllcddddddc#ll#lllllllllllllllll#ddddddddddddddddddddddddddddddddmllllllllll.ddddddddjl",
-"idddej..ddmlllllllllidddddddddddddddddddcjfadddddddd.llllllllllllllllllllliikaahcdddddddddddddddmfeddddddddmllllllllljddddddddd#",
-"mdddddcacd.lllllllladdddddddd.mcdddddddddddcdddddddddklllllllllllllllllllll#nj.ccddddddddddddddd#lfdddddddddmllllllllndjcdddddda",
-".ddddcc.fd.lllllllkdddddddddanedddddddddddddccddddddclllllllllllllllllllllljdddddddddddddddddddcllleddddddddallllllllkdddddddddb",
-".dhedmedmd.lllllll.cdddddddhjdddddddddddddiflledddddhlllllllllllllllllllllladdddddddddddddddddddinacdddddddemdenlllllkdddddddddf",
-"mdgmdddm.d.lllllgbaahme.mjaidddddddddddd.g#fnicdddddfllllllllllllllllllllllleddddddddddddddddddddddddddddddddddc#llllk.mmeeecdda",
-".dkkddemdd.lllladddddddddceddddddddddddckedddddddddellllllllllllllllllllllllhddddddddddddddddddddddddddddddddddddllllfkh#ln#fddi",
-"mdc#dddddd.lllncdddddddddddddddddddddddddddddddddddmllllllllllllllllllllllllfddddddddddddddddddddddddddddddddddddcnlljdd.cdkcddm",
-"mddfmdddddellfddddddddddddddddddddddddddddddcee.jik#lllllllllllllllllllllllllaanakj.eccdddddddddddddddddddddddddddcnlmdddddhdddm",
-"bddd.dddddclnddddddddddddddddddddddddddddckgllllllllllllllllllllllllllllllllllllllllllliddddd.dddkcdddddddddddddddddfeddddd.dddi",
-"bddddddddddbcdddddddddddddddddddddddddddd.ihknf#llllllllllllllllllllllllllllll#naij.ecdddddddhddd#cdddegicdddddddddddddddddddddi",
-"bddddddddddddddddddddddddddddddddddddddddddddddddejallllllllllllllllllllllll#cddcdddddddddddcgdddlcdddd.l#adddddddddccdddddddddm",
-"kddddddddddddddddddddddddddddddddddddddddddddddddddcllllllllllllllllllllllllgddddddddddddddd.lcdd#adddddjlhddddddddc#cdddddddddj",
-"bddejddm.de#eddddddddd.dddddddddddddddddddddddddddddfllllllllllllllllllllllladddddddddddddddi#dddkljdddcghddddddddeglcddddkedddn",
-"bddfiddcddelg.dddddddhl.dddddckddddddddddddddddddddeglllllllllllllllllllllll.dddddddebeddddd#fdddckeddeghddddddddcfllcceeejbdddf",
-"bd.mddddddelllmddddddjgl.dddhll.ddddddddddddddhddcffj#lllllllllllllllllllllnddddddddhleddddclbdddddddh#mdddddddddllllcelabbhddel",
-"adkedddddd.lllljddddddci#gflfimcddddddddddddddaaahedd.lllllllllllllllllllllhdddddddddeddddi#lkcce.ibfjcddddddddefllll.djmdddddcl",
-"ndfceabddd.llllljdddddddjllhdddddddddddddddcce#hcdddddnlllllllllllllllllllgcddddddeddddddddcag#gggniddddddddddcfllllljddicdddem#",
-"fdblncnddd.llllllhdddddddigdddddddddddddddddklfddddddbllllllllllllllllllllhddddddjlcdddddddddddddddddddddddddc#llllllmdddedddbll",
-"nmf.ddfcdd.llllllliddddddcedddddjnfbkjcddddddnjdddddillllllllllllllllllllllbdddddhmdmkddddddddddddddddddddddcflllllllmddddddddeg",
-"lnddddm.dd.llllllllhddddddddddddjlllll#mdddd.addddd.llladalllllllllllllgallladdddcdiiddceecddddddddddddddddcnlllllllljdddddddddg",
-"adddbddddd.lllllllllndddddddddddd#llllledddclcddddc#lgcdddhllllllllllaedd.lllhddddcddddiallgedddddddddddddd#llllllllljdcne##jddf",
-"addmfddddd.llllllllllacddddddddddallllmddddk.ddddcglkdddddddjalllla.cdddddeallhdddddddddddmklhdddddddddddcnllllllllllmdchdecdddg",
-"addddddddd.lllllllllllgcdddddddddjlllfdddddedddddbljdddddddddddgll.dddddddddjllmddddddddcjbkjddddddddckccflllllllllllmddmddddddf",
-"bdddddddddmlllllllllllllccjdddddddfllmddddddddddaadddddddddddddnlledddddddddddaldddddjje#.ddddddddddddnllllllllllllllmdce.cdddc#",
-"addbaci.dddmjjhaglllllll#fedddddddhlndddddddddddjddddddddddddddbllcddddddddddddmhddddd.iahcddddmdddddd.llllllllg#llll.ddd.cdddd#",
-"bddfl#aadddddddddmfbgllllfcdddddddeljddddddddddddddddddddddddddhl#dddddddddddddddddddddddjfidddidddddcfllll#nicdclll#cddddddddd#",
-"kddaniiiddddddddddcddd.all#cdddddddl.ddddddddddddccddddddddddddmlndddddddddddddddddddddddddm#.ddddddclllla.dddddddmcdddddddddibl",
-"bddddddddd.niddddddf#fkecjnacddddddhcdddddddddddnfcddddddddddddelhddddcaedddddddddddddddddddea.ddddcfllbedddddk.dddddddddddddfll",
-"hdddddddccmlidddddcnfnnhdddjhddddddddddddddddddde.dddddddddddddd#eddddcf.dcjeddddddddddddddddddddddn#kcdddddddecddc.eddddddedjll",
-".dddddddnhcjd.dddddddddddddddmcdddddddddddddddddddddddddddddddddfddddddddddc#jddddddddddddddddddddnjdddddddddddddd.aaddceddgdd#l",
-"iddddddddddebbdddddck.ddddddd.cdddddddddddddddddddddddddddddddddkdddddddcdddelf.dddddddddddddddddcmddddddddccdddddddddddhnnljdfl",
-"idddiddddd.lkdcdddddflacdddddddddddd.keddddddddddddddmdddebmddddcddddddd.fkfgjeddddddddddddddddddddddccddddd.dddddddddddddcghdfl",
-".dddbhddddddddmcddddddcedddeddddddddhllfcddddddddddddhidddmlhdddddddddcddjlmddddddddddddddmdddddddddd#.ddddcgeejdacddddddddfddll",
-"fijkn#dddddddddd.fdddddddddjcddddddd.lfhcddcmbh.ddddddgedddhleddddddddmfa#.ddddddddddddddnnddddddddddebbdddded.km.dddddddddddill",
-"fiihhidddddddcdddddddddddcigdddddddddjddddddddh#amccddakdddd#hddddddddddkaddddddddddddddclfdddddddddcihhdddddd.ecddde#eddddddall",
-"hdddddddddcgn#nhcddddddddcn.ddddddddddddddddddddc.gl#fggddddakdddddddddddddddddddddddddddflmddddddddcfmddddddddeaccegkddddceddc#",
-"iddddddddd.llllll#njdddddddbmddddddddddddddddddddddemkakdddd..dddddddddddddddddddddddddddck#hcddddddcjfcdddddeiallllfddddmihdedk",
-"idaeddddddjlllllllllg.dddddd.dddddddddddddddcmmcddddddddddddddddddddddddddddddddddddddddddddccdddddddcddddcjflllllllnddcakdddiek",
-"jdhcdddddmllllllllllllgmdddddddddde#edddddddaflledddddddddddddddddddddddddddddddddddddddddddddddddddddddcfllllllllllgdcljdeddbmb",
-"iddddddddnllllllllllllllb.dddddddddjgdddddddddckidddddddddddddddddddddddddddddddieddddddddddijijddddddch#lllllllllll#ddbndicda.b",
-"hdddcidddcnlllllllllllllllidddddddddadddddddddddddddddddddddddddddddddddddddcdddddddddddddddiddcddddd.glllllllllllll#cddg.e.da.b",
-"idddn.ddddelllllllllllllllladddfnaf#.dddddddddddddddddddddddddddddddddddddnlleddddddddddddddddddddddalllllllllllllll#cddhbdddnek",
-"kdcffddddd.llllllllllllllllln.cm.ijcddddddkidddddddccddd.kdddddebhcdddddcbhmcddddddddddddddddddddd.glllllllllllllllllcddmfdddaca",
-"hdal.ddced.lllllllllllllllllllcddddddddddd.l.dddddjaeddelkdddddnllidddddddddddecddddddddeeeddddddelllllllllllllllllllcddcbddekcb",
-"hddcdddddd.lllllllllllllllllllgcdddddddddddaliddcnaddddnlhdddddkllmdddddddddddkcddddddchedddddddklllllllllllllllllll#cddd.ddcldf",
-"iddddddddd.llllllllllllllllllllbdddddddemddjllkdnfcddddblbddddddmmddddddddddddhmddmddekicdddddcalllllllllllllllllllllcdddddddjd#",
-"bdddd.c.ddilllllllllllllllllllllcdddddcbgddclll#l.ddddddk#cddddddddddddddddddd.ndigdd.gl#cdddelllllllllllllllllllllllcdddddddddg",
-"g.dd.fdhdd.lllllllllllllllllllllfdddmkaddjednllladdddddddcdddddddddddddddddddddillmddddcgkdddc#lllllllllllllllllllllledddddddddf",
-"liddhnh#miallllllllllllllllllllll.ddi#hdck.dcllllkdddddddddddddddddddddddddddddallhddddd.bdddellllllllllllllllllllllledddddciddg",
-"gdddhjmecekllllllllllllllllllllllndddjlhddddilllllkdddddddddddddddddddddddddddkllgmdddddmidddhllllllllllllllllllllllleddddcddddf",
-"ldddidddddcllllllllllllllllllllllljdkhdfbddddilllllfddddddddddddddddddddddddcgllleddddddcddde#lllllllllllllllllllllllcddddcbcddf",
-"lcdd.dddddcllllllllllllllllllllllladcgn..ddddcllllllndddddd.ddddddddddddddddblllgddddddddddc#llllllllllllllllllllllllcdchfdeacdf",
-"ldddddddcdclllllllllllllllllllllllgdd.#hddddddnllllllfcdddd#eddddddddddddddblllladddddddddd.llllllllllllllllllllllll#ccgidcddddn",
-"gddddddddddllllllllllllllllllllllll.ddddddddddjlllllll#edde#dddddddddddddcfllllljddddddddjhgllllllllllllllllllllllllgddbeddddddn",
-"#ddddmcdddcllllllllllllllllllllllllfddcia.dddd.llllllll#ccnmddddddddddddcallllllcddddddddcnlllllllllllllllllllllllllfdddidddddda",
-"gdddddddddclllllllllllllllllllllllllcdelmddeddclllllllllgffdddddddddddddalllllllddddddddddmlllllllllllllllllllllllllnddddddddddb",
-"lcdddeihddcllllllllllllllllllllllllleddfdddddddglllllllllfcdddddddddeddnlllllllgddddddddddalllllllllllllllllllllllllnddddddcddda",
-"ledkkhceddclllllllllllllllllllllllll.ddgcedddddhlllllllllladddddddddifbllllllllgddddcdddddflllllllllllllllllllllllllnddddddacddn",
-"#mdcddddddcllllllllllllllllllllllllljddfjgc.dddhllllllllllladdddddddd#lllllllllfcecnfedddd#lllllllllllllllllllllllllnddddddimddf",
-"nddejddddddlllllllllllllllllllllllllhddk#hdfdddhllllllllllllnddddddc#llllllllllk.jdddddddcllllllllllllllllllllllllllfdddddddddda",
-"ndddddddddcllllllllllllllllllllllllladdddddcdddjllllllllllllladdddcalllllllllll.mhdddddddmlllllllllllllllllllllllllladdddddddddb",
-"ndddddddddclllll######llllllllllllllbddddddddddcllllllllllllllbdddallllllllllllc.bdddddddilllllllllllllllllllllllllliddddddddddg",
-"gji.dddddecdcccddddddddddaf.cdccdceecdddddddddcdcecc.fembhjllkheddhkan#l#g#g##gd.addddddde#ll#glgggfbbbkhkiikkhkkhijcddddddddddf",
-"ll#jdddddafdddddddddddcddcdddddddddddddddddddd.ddddddddddddimdddddddddifcdddddddddddddddddccdddddddddddddddddddddddddmiddddd.g#l",
-"lledddddddidddcdddddddddddddenjmddddddddddddddmdddddddddddddddddddddddddddicddddddddddddddddddddddddddcddcdddddddddddacddddddhll",
-"lhdddddddddddddddddddddddddmhcdcfdddddddddddddddddddddddajddddagdddddamddd#cdddddjjdddddcdddddddddd.bngddddjbnfkjddddcddddddddal",
-"l.dddddddddddddddddddddddddcddddgdddddddddddddddddddddddjedddibedddcdbeddc#dddddcmdddddhlcdddjddddddcendddddddchhnidddddddddddjl",
-"lddddddddddddddcdddjdddddddddddmmdddmmdddddddddddc.ddddddddddcdddddadddddclcddddmcdddddfkedcdcddddddifgdddddeddbcladdddddddddd.l",
-"l.dddddddddddddbmddcdddddddddc.cdddddddddddddddddcaddddddddddddddd.fddddddajcnddjcddddgjeejgdnhdddddddndddddcdbmhlhddddddddddd.l",
-"lkddddddddcddddbidddddcaddddjcdddddncdddddddddddddnicdddddddddddddenfnadddcanedddccd.kide.c.ddddddddddkddddddc#cjmddddddddddddml",
-"l#cddddddcfddddhnhbfcdefddddhddemdel.dddddddddddddddddddfkbbkdddddddddbddddcidddddekhedd.jddeabcddddddjedddddcl.ecdddeddddddddal",
-"lllhddddm##ddddc..ecdddddddddddddddbaddmdddddjddddddddddcccccddddddddccdddddddddddddddddmidddccdddddbkddddddddmbjddddnbddddddill",
-"llll#nngllgdceeecdddddddiecddcdddcddddddddddhjddddcddddddcddddddchdcccccdcddcccdc......ekiecccceee.bllkj...........j.flfhm.mnlll",
-"lllllllllllglllll##gnl#llllll#g###ff#gn##lllll##gg##ggggg#l####llll#llllglllllllllllllllllllllllllllllllllllllllllllllllllllllll",
-"lllfieehllfhihijmjmimjjmknjjmjjjjjmiimm.mjf.mmmm.jmmemmhbkbnlggggfnanff#l#bannllfflnbbmjmhiijjiihhhi..e.eecccccee....#lgieeehlll",
-"llhdddddcnjdddddddddddddddddddddddddddddjgaddddddddddddddddd.cdddddddddc.dddddbadkaddddddddddddddddde.cmddddddddddccd#nddddddm#l",
-"lhdddddddddddddddddddddddddddddddddddddhagbddddddddddddddddddddddddddddddddddddddddddddddddd.edddddd.ie#cdddddddd.#ndbddddddddil",
-"bddddddddddddddddddddkmdddddecdddm.ddddcdgjdddddddddddddddddddddddiddddddddddcdddddddibcdddchiddchaamddjcddddeedchh#ddddddddddel",
-"mddddddddddddddj.ddcknghmdddcddddemddddddg.cedddmddddd.jdddddddcddjddcddddchaancddddjlgeddcb#iddnncceddcdddcdddc.dc#cdddddddddd#",
-".ddddddddddddddddddecdeggdddddddddddddddd#.ddddd.bihjjkdcfeddd.eddidd.dddc#mddjmdddedbdckidcghdhlheddddddddkedd.cddfcdddddddddcg",
-"jdddddddddddddddddddddddjddicddddhmdkidddedddddddcefhcddddddddd.edceddddhncdddddd.dddddc.ddegmdgmm#hdddddcddddg.dddcddddddddddc#",
-"bdddddddddddmeddddddddddddceddddcdddfhddddde.ddddddacdddkkkddehjedjjdddd.edddddddddddcjcdddeecdfmdenddd.ecddddbcddddd.ddddddddhl",
-"#cdddddddcmdeddd.mddddddddddddddjnedfhdddddilhdddddbdddcbheddedddddddddddddb.ccccdddcbl.ddddjedejddedddecdddcddddddddfhddddddell",
-"lbdddddddgjddddddddenedddddddcdddeedfhdddddd.eddddcadddddddddddddddddddddddeeccccdddc#feddddddddddcddddddddddddddddddnliddddb##l",
-"jmdddddddecdddddddmhicddddddjnmjiimd#aee....mm.cddekddddejcdddddd.cddddddddddddcccccceddddddcccddcccdddddddccddddddddcm.dddcmeml",
-"ddddddddddddddddddddddddddddflllll#dlllllllllllm.ddaddddnl#ddddddicddddddddddddnlll###ffffmh##g#f#ladddddd.ll.dddddddddd.hfgl.el",
-"ddddddddddddddddddddddddddddgllllllclllllllllllj.ddcddddd..dddddddddddddddddde.lllllllllllhalllllllfdddddddhlemedddddddebflllcel",
-"dddddddddddddd..cddddddddddc#lllllld#llllllllllnedddddddddcddddddddddmhkcddddd.llllllllllliflllllllgdd.gfmddacddddddddddddcmjdel",
-"ddddddddddddddddddddddddddd.llllll#d#llllllllll#kkddddd.hbfddddddddddn#cdddddejlllllllllllmflllllllledcjcddddddcdddddddddddibe.l",
-"dddddddddddddddddddddddddddhllnnffndngggglllllll.edddddcllgdddddddddhgcdddddddnlllllllllllmlllllllllhddddddcddcjddddddd.bddili.l",
-"ddddjddccddddddc.i.ddddddddnlnddd.eddddddkllljglhmddddddm.gedddddcd.lmejicddcc#lmmmmjiiijicijijijhllfddddm.eeddddddddddhnddmlm.l",
-"dddeedddddddcmjieccdddddddd#l.dddecddddddhllleil#cidddddddddddddccdalnl#.dddcallncdddnefj#.#cfcgcdnllcddd#nklcdmcdddcdda.ddel.ml",
-"dddddddddddddjcdd.cddcjdddkl#ddi#######ikhllleellbecddddddddddddiddhnh.dddd.mllllfe...bkbkbbabbkmemllidddh.dkfdmcijddddddcdd#mel",
-"dddddddddddddddddkcddh.ddcllndcglllllllhehllledallckcddddddddddmbdddddddddccall#llg.he#lllllllllnmefll.ddccdc#mddfiddddde#eda.el",
-"ddddddjncddddddddh.ddadddkll.jmllll#bllhjillledd#lgcmddddddddddkjdddddddddehllbdfllgd.e#lllllllllenhllnddcddd.lkd#addddn.gedmcel",
-"dddddddmddddddddddadddddillhedfllll#illhchlll.mkjllneccdddddddddccinddddekhllfcdcnllnec.nllllllllgmcbllbddddddebf#bddecg.acdddel",
-"ddddemdddddddddddcn.ddde#l#ecmlllllle#lichllledd.hllacbdcdddmcimec.cdddkccll#cmcg.nllgcac#lllllgll.a.#llmddddd.ddcdddkjcefcdddel",
-"ddddc.mdddddddddddddddcllldcclllllll.hlidhlllmj#ecklllececddcdddcddddim.befl.c.#dmm#l#dd.e#lllgd#llcdmllljddddcddddddjleddd.dd.l",
-"ddddcdddddddddddddddd.#lliddhllllllljclhchllleelnmeilllbdjem.dcdmdcchchglgdcmm#l#mhckef#memahijdhlmjcgllllacdddddddddelcdddjcdml",
-"mcddmedceddddddddddcillllnc..#lllllladbhchlllmjllnmejglambmmmcaebd..hglllndde#lllg.fehll#ebcgllhcjk.gl#k#llfedddddddddhdd..ee.hl",
-"liddicdekcddddddddeglll#ll#.cc#lllllled..hllleclllgmiejcllll#fhan#lllll#mmdmlllllllcejglllejeflledcfllmdcflljjmcddddddddjl#####l",
-".cdd.m.cdddddddehhhllbedfllfeceglllllndd.hlllimllll#j.i.if#lllllllll#bmjc.allllllll#jhenll#me.fmdde#le.dikjnjll#nkim.eddh.ddddel",
-"#kddchh.ddcikagllleamcdd.fllfcb.#llllledchllle.llllllnjea.jibnllllkmcddjjfllllllllllg.nefll#mkdeenc.jcea..eeh#lllllllicfcdddddcl",
-"cdddddddddmlllll#kcd.decad#lllckc#llll#dj.llljjllllllllf..jkjdjlllcdddddmjjjhmijhiijmmdddlllledc#l#cdcfllhdmjmjflllllfdgndddddc#",
-"ccdddddddd.lllnee.jecal#.icgllgmejflllljcdm#l..lnigllllll#fbedilllcdjckdajikdkciej..jencdcnll#j#llmiddka.igk.enec#lll#ccfndddddg",
-"fgfcdddddd.llljdcm.kllllgj.jfllfehe#llliddd.nm.llaeiglllllllkmelllhmjjjiijjjiicmiiiiijihkknllllllhcmnkcdhlll#bjcd#lllnddeghib.c#",
-"lncdddddddmlllmcmlllllllll.md#lljdad#lliddddd.illlljdkllllllkdilllllllllllllllj#lllllllllllllllljijfll#hglllllli.glllcdncdfhhlcg",
-"mdddddd.ddjlllmjhllllllllllmkdamhg.jjglicimdddcnllllhdm#llllkimlllbkbkhabbkbkbehbkkbbkbkkbknllljmcfllllllllllllimgllledbaddddhjg",
-"cddddddcddjlllmdillllllllll#mie.ll#...#idblidmjdjng##.d.#gnhe.mlllcdejbchcaeh.hiejcjehdiddcnlljejnlllllllllllllj.glll.ddcddddijg",
-"cdddddddddekafe.hllllllllllll.c.glllmkdedklladddddddeeddd.jmdk.lllcddccc.djccdced.dmdeddddglljbefllllllllllllllhfglll.dddddde#cg",
-"d.dddddddd.abkceillllllllllllljjcnllgeacdklllmeddddddchcdgllhcmlll.jg#gggg#g##gg###ggg..cgllmkeglllllllllllllllmcejjjddddehbkcdf",
-"chmdddddddjlllm.hlllllllllllll#jh.all#eddbllleenmcdd.#lkcjllhi.llleclllllllllllllllllh.inllhcmnllllllllllllllllj.agfnedmhhcddddf",
-"ckgdddddccmlll.cklllllllllllllll.dcgllledalllhmlllfalll#ddalkdmlllmmllllllllllllllllindfllmdeflllllllllllllllllmd#lllemllljkhddf",
-"cm.dddddddjlll.mi########lllll#ll.cdall#eklll.mlllllllllide#kcc.m.celllllllllllllllicefllmkcfllllllllllllllllllim#lllefaeedb.ddg",
-"cddecdddddjlll.dce...mcjemm.mcme.ccdcall##llljjllllllllllf#lkdeg##.jllllllllllllllkcekllh..alllllllllllllllllllmcllllmlcdddnddd#",
-"cddcdddcddkllled.mjj.hdjdhiehdkekejdddfllllllijlllllllllllllh..lllemlllllllllllllhke.elm.mflllllllll#hlllllllll.d#lll.#cdddbddcl",
-"cenddddddchlllgfffffnnffffffnfcnnnnnfn#lllllle.llllllllll#ahedmll#e.fllllllllllljieflkcj.flllllllllnc.lllllllllmdllllejidddbddcl",
-"d.adcdddddjlllllllllllllllllll.llllllllllllllccgllllll#ajceedd.lllcdemb#lllllllkehnllbeealllllllllbeidgllllllll.d#lllednmddfedcl",
-"dcgcm#cdddjlllllllllllllllllll.#lllllllllllllceegllllhdeabecdeillgcdgmidhlllllijmnllheaallllllllf.j#lchllllllnedd#lll.ddmddifdcl",
-"ddenm.feddillllfffanannnffffffcnfgfgfggg#fgllfek.flbejikehng#lllll#fbmciccbllik.flliienlllllabhjkglllke#lllb.bddd#llledddcdklccl",
-"deddddeiddjllllkedddddcd.c.c.ee.d.cj.ece.dcbllg..mim.n.eblllllllllllllhecbdjkm.blla.ebllllllbnglllllll.il#ji.hingllllecmcdddkicl",
-"ddddedjjddellllll#.ddd.dkeb.jmibdaek.kiibdddalll..dmcnlgd#lfahijibgllgcl#m.hdjnllhchbllllllllllllllllladhmbcillll#khjde#lfkbgccl",
-"ddddcdjeddcee.ialllfemedknnnnnnnnnnnnnnnafme.bllg.diglllc.eddddddddcmejlllbccfllhj.nllllllllllllllllllledcmfllghjmhmaecgemj.cdc#",
-"dddd.jkcddcmcmddckglljmcm#lllllllllllllllllijebllghlll#iddddddddddddddeflllakllbjeklllllllllllllllllllncdc#l#kci.eddecdaedddmmcl",
-"ddddddddddddddddccdbllhmcelllllllllnglllllll.ackllllladdddddddddddddddddmlllllidjalllllllllllllllllllfmgddkfcfcdddde#edddck#ljcl",
-"dddccdddddddddddddecm#licjmllllln..a#llllllll.ddblllkdddddddddddddddddddde#ll#cdclllllllllllllllllllljimncdijcdddddil.d.a#niedcl",
-"dddddddddddddddddddddeglmedflllnde#lllllllll#cde#llkdddddddddddddddddddddde#llkccallllllllllllllllllkjjlljdccddddddbl.e#lg.dddcl",
-"ddddddddddddddmjdddddd.l#en.lllmdbllllllllll.cclllbdddddddddddddddddddddddd.llljl.lllllllllllg.llllnjeflacddddddcddal.dd.bl#edcl",
-"ddddddddddddddmidddddcdjlncdbl#cdmlllllllllgceillfddddddddddddddddddddddddddillg.chllla#llllln.llllijhllebdddddjdddnlj.ihdm##ccl",
-"dddddddddddddd..dcddddddflciefjdddig#aallllhcc#lljdddddddddddddddddddddddddddlllebelll.llllllnelllgjk#laidddddmbddcf#ggffmdgfdcl",
-"cddddddddddddd..ddddddddmlmddcfgeddd.allll#cghlladdddddddddddddddddddddddddddmllgcdgll.llllllbclllie.l#dkdddddfjddddddddddmbddcl",
-"ddddddddddddddciddddddddd.ddmmlllgg#llllllaccjgl.dddddddddddddddddddddddddddddfghefhllmllllllk.lllejnlaacddddd#mdijddddddddddddn",
-"dddddddddddddddbk.ddddddddajedllllllllllllj.cmemddddddddddddddddddddddddddddddc.hjmclljllllllk.ll#eelljnddddddf#afaijjjmm.mihddb",
-"cddddddddddddddddccdddddcelnddgllllllllllledjlljddddddddddddddddddddddddddddddjllb.mflm#lllllijlla#hl#hidddddddc.hbbnkki#fb#nddb",
-"cdddddddddddddddddddddddddg#eenllllllllllledbllmddddddddddddddddddddddddddddddellgecnl.gllllljjllhehlfecdddckmddcjmmedddbedfiddn",
-"cddddddddmkdddddddddddddceale.blllllllllllccflleddddddddddddddddddddddddddddddd#l#ckbljfllllljilljbblkhdddddj#aedgllgcddmcdamdcl",
-"cddddddddcedddmdddddddddddhl.hhllllllllllgce#l#ddddddddddddddddddddddddddddddddfl#cjcjd.hkhhhcehhcdnlidddddddel#edil#cdddddmcddf",
-"cdddddddddddddcdddddddddccbljdcj.m.jeieiemddll#ddddddddddddddddddddddddddddddddflledmhddcmha.ccbcddnljhdddddddjmcdd.nddddddddddf",
-"eddddddddddddddddcmdddddccblmc.i.jeheichcjcell#ddddddddddddddddddddddddddddddddfllmce.edce.medc.ee.#ljeddddcdddddddddddddddcdddf",
-"edddddddddddddddddhiddddemfllllllllllllllllllllcddddddddddddddddddddddddddddddc#lllllll.#llllcallllllkkdddddddeeddddcdddddhhdddg",
-"edjedddmdddddddddddimdddddfllllllllllllllllllllmddddddddddddddddddddddddddddddclllllllljhlllgcbllllllf.cddddmknfddddddcddd.gddd#",
-"ecfeddddddddddddcdddddddcc#l##########llllllllliddddddddddddddddddddddddddddddmllllllllhelllfdalllllllhhddddddcgbdddddccejaljdd#",
-"eddcddddddddddde#gcdddddd.laddddddddddddccccellfcdddddddddddddddddddddddddddddbllgjiihied.mmede.jjiklljedddddddilcdddddl#nhmcdd#",
-"e.dddddddddddddd.fcddddd.hljddbcnckckmjeeidddglledddddddddddddddddddddddddddddgllmddidacddieddcbckddnlamddddddd.lc.gkddabdde.dd#",
-"eicdehadddddddddccddddddcgled.mmjcmjjjmmjmmdealliddddddddddddddddddddddddddddcll#ee.mmjm.dejcdcmjmed.l#ciddddddcl..l#cddbedaljcl",
-"eieaadidddddddddddddddc.hlnhjllllillllllllljn.bmccdddddddddddddddddddddddddddm.fh.mlllll#dklidalllgddllfcdddddemlmilgcdddcd.lmc#",
-"ejgmd.jdddddddddddddddcdglccmlll#klllllllllnd.ck#bdddddddddddddddddddddddddd.lnmdk.llllllecnjdalllljaillmiddddmglenlgcddddddfjc#",
-"kkddddcdddddddddddddddcblb.enlllablllllllll#dk.llleddddddddddddddddddddddddcgllahbnllllllbdccdallllaecfl#e.dddd.ncflnddddddd.id#",
-"mdddcdddddddddddddddddjlfccillll.nlllllllllladjbllledddddddddddddddddddddddfllgdcillllllll.dddbllllligmllgckcdddddccdddffgfnajd#",
-".dddkddddddddddddddcddalei.#llllcflllllllllll.kcgllgedddddddddddddddddddddnlllmemflllllllladddhlllll#cjjllgjm.ddddddddca.....cc#",
-"mdddddddddddddddcdedibc.cdfllll#dglllllllllllfdd.lllgeddddddddddddddddddcalllkddillllllllll.ddhllllllamekll#.eaccdddddbgedhdbcd#",
-"jdd.edddddddddccicdfl#cdcalllll#dffhbf#llllllnddhlllllkdddddddddddddddddnlllllmcdblllllllll#ddilllllllac..lbmnc.bdicedcedddcjdc#",
-".ddfgcmmdddmemcemn#lfemdallllll#df#nbmcejallaeh.#la#lllgjcdddddddddddmagm#lb#lli..blllllllllmdmllllllllachec#l#nh.mcjddcddddddd#",
-".dd#lfifddc..jkgll#kcecnlllllll#cblllndjed.kdd.llgd.fllll#ideccccc.iflllh.edmllle.dfllllllll#eelllllllllacich#llll#fhdddddddddcg",
-".dde.ikkcd.lllllfmc.cj#lllllllllj.lll.d#lidddjllnddc.m#lllbhlll#lllllllljceddelllikebllllllllnelllllllllllid#cek#lllfddddddddmgl",
-"mdddddddddjlllheemcjalllllllllllfdhlhdkllacdd.gfccmm.kjif#mgllllllllllliddekc.i#llhcjhllllllllillllllllllllnidhdclllfdddddccd#ll",
-"mdddddddccillledd.bllllllllllllll.dicellnecmcdcdc.l#hjj.cecn#####gfhjllidellg...lll.hcallllllllllllllllllllllf.dc#llgdceddmadkll",
-"mdddddddnhmllledbllllllllllllllll#.ddflacbklgcddjlllllaednjkecedc.mdcllijmlll#eac#llcickllllllllllllllllllllll#.clllgddgcddnmc#l",
-"mdddddddhijllledblllllllllllllllll#hblncdillfcddfllllll#nh.me.mejcmdc#li.jllllf.kjf.hhcmhlllllllllllllllllllll#.clllgcdakialadgl",
-".dddddddbmjlllecbllllllllllllllllllllfcdmllgcccdillllllllll#gnbbbfkecllj.mlllllfjecklleadnllllllllllllllllllll#cclll#dddccefadgl",
-"mdddddcdddde..ddejiikhhikhabbaaannaaidmillfdcjgddfllllfbllllllllllamclljcmllllll#mfc#lliech##l###llll#lll#llllf.clllgdddddjl.cll",
-"mdddcddddd.fnfededmjcmeickdbeici.emdddm#lge.m#lidjlll.cnllllllllllaeclljijlllllllg.jmglljddc.iehejejimick.mejidddlll#edddenjdall",
-"nmcjkdddddjllljmee...m.ceme.e.eeececc.llgcd.lllgcc#amdilllllllllllaicllicmllllllllgmme#lljddknegj#cbgmbdfmbkjbmddllllg.ddddddfll",
-".dddddddddmllllllllllllmnllllllllllllllfc.illllleddcednlllllllllllaeelljhmllllllllll.bcgll#g#f#ffbfbagfnficanbabbllllgidddddddjl",
-"edddddddddmllllllllllll.nlllllllllllll#cj.#llllncjn#lgllllllllllllb.c##jejllllllllll#...flllllllllllllllln.lllllllllgcddb##gcncl",
-".dddddddddilllieeeee...dem.....mjjbllfcd.lllllndflllllllllllllllllbedeedimlllllllllll#edclllnkbabanaangggbcgfffgglllbdcbfehhd#e#",
-"jdicdddddfllll.dmdbenei..bdidicddjlllbdmlllll#c#llllllllllllllllllbcellmjjllllllllllllledflllhdddkda.nmmheadmdmdd#llhdkndecdd#.l",
-"idcddddcflllll.dmkbkhkkkkkkkhdcdjllllbejlllllf.lllllllllllllllllllbjellj.jlllllllllllllmdfllllkdceejmj..i.h.meedd#llfddg.cjdcl.l",
-"idddddddcflllleealllllllllllnddmlllllbjjllllllkhllllllllllllllllllbcellmjjlllllllllllllmjglllllijchllllllllllln.c#llnddiadaddl.l",
-"iddd.iddddjllledhllllllllllhdchllfc#lbfilllllllehlllllllllllllllllbjellmcilllllllllllll.d#l#dfllhdeillllllllllgdcllladddbcmmd#cl",
-"idddjbddddmllleddcja#lllllbcdhllfcc#lbeilllllll#chllllllllllllllllkc.ll.hjlllllllllllll.jglgdcfllbcdilllllllgbeddlllnddd.cdkcgel",
-"jdccc.cdddmlllai.dddcalllaec.llfddc#lbhhllllllllacnlllllllfbm..e.eccellmccmjjjjjjjjijjjdd#l#dce#ll.cdkllll#idcee.lllnddddcdh.#e#",
-"iddchjdkddmlllllllccddcaidei.nadcdd#lbcilllllllllkdalllk.ckci..hchddd#l.dcndndnijkcfd.ncd#lfmcdcg#dic.illjedeh#lllllbdddddd.l#el",
-"idegiddiddcjjiaglah#bcedddjlgdcime.#lbhhlllllllll#cchkehe.mikaannbimillijjiiijiii.dijjmjjllfemjhc.albc.jjehb.#lllll#mddcdddcgl.#",
-"hdeeddddddddddddedfllg.ddmllgdd.lec#lbcillllllllllfcdc..jfllllllllllllllllllllllln.llllllllfcile..#llijdjj#lhelfh.cdddddddddhle#",
-"iddddddddddddddddddhlllbillbdjjllmhglbkhllllllllllbddd.#lllfkj..mia#llll#kbkbhbab.ebnaanallaiillmdcfllkcglllgcddddddddjcddddc#c#",
-"idddeddhcdddddddddddmgllllhd.mlll.c#lacillllllllla.icddhfjmded.emccemb#l#hddd.hckeie.eddd#lndill#jdcfll#lllkcdddddddddcdddd.ijc#",
-"hddcneckieddddddcddddcnllgddellllmiglabhllllllllk.cigdddddmddddddddemc.fllacdcjckebem.dddllnmillllcdd#lll#mddddddddddddddceemdc#",
-"iddcedddddddecdc#fdddddbllkdc#llled.kmchlllllllaecallmddddddddddddddddc.mllgcdelll####g.ellndillllnddgllgcddddddddddddc.kdnmddcl",
-"mddccddddddddddnambdddddnll.cellleckkmahllllllgcjillkjeddddddddm.dddddd.d.#lfdcjlllllll.c#lajilllledkllgcdmngfakiddddddi#.cecdc#",
-"mdddddedddddddc#.daiddddc#lncealled#ladhlllllljgmllhcmddddddddjl#ddddddddcc#lhdd#lllllljj#lbdilllnmjll#cddblidddcdddddj#.mcddddf",
-"mdddjncddddddeljdddfdddddml#.dellecglbnhlllllaedglachdddddddddegkdddddddddi.lledellllllec.mekhll#edfllmdddd.gidkbdddddc#.ddddddk",
-"iddmkcddddddcajddddbidddddjmiccbled#lbchlllll.hil#dmddek.ddcddddddddddddddde.ejddblllllmmllndillkjjllbddddddefabdddddddjfcdddddk",
-"jdddddd.idddindddddi#dddddd#lmd.led#lbfhllllfkjllhedddgl.mgfcddddddddddddddednljdmlllllecllnhkll.d#llcdddddddd#iddddddddafdddddb",
-"mddddda#iddddcdddddmlcddddd#lfddedc#lbcc.mm.ceilgebddblekgjdddddddddjeddddddmjlgdciikimccllac.kicellfdddddddddcgdddddddddcdhdddn",
-"idhhkbjjmdddddddddd.l.dedddnllcdmcd#lbdekchdddnlh.ddcliekcddddddkcdddc.ddddd.d#lddejebddclladdjddmlljdddebdddddmidddddddd.bfdddg",
-"#cnacddidddddddddddel.dacddhllnkhkbllgihhdmkkh#l.kddelcdddddddddkeddddddddddd.al.ceic.cdclladdecdalgdd.jaeddm.ddedddddddjllgcddg",
-".dbgdddddddddddddddcicdbeddellllllllllllleflllllmiddmmdddddddddddddddddddddddcilllllikllllll#gc#llladdil#ghdjkdddddd.ddcemlbk.mf",
-".ddcdddddddddekedddddddecdddgllllllllllllefllllgceddcdddddemeddddddddceeddddde.llllliklllllll#cllllhddijjjiddddddddddddddefdddda",
-"edddcdddddddddddddddddddddddbllllll#lllllcfllllnccdddddddjll.ddddddddnlleddddcellllljklllllll#clllljddddddddddddddddddddddiddddi",
-"bmeddddddiiddddddddddddddddddccccdddhaannda##gge.dddddddddmndddddddddflleddddddk#gfn..anf##l#gcg##lmdddddddddddddddddddddddddddh",
-"ll#cdddddb#ddddddddddddddddddddddddddddddddcddeddddddddddddddddddddddk#fcddddddddddddddddcccccddcccdddddddddddddddddcbidddddhffl",
-"ll.dddddddjddddddddddddddddd.heddddddddcccddddccdddddddddddddddddddddddddceddddckddddddddddddddddddddc.ddddddcc.jdddmgedddddd#ll",
-"lnddddddddddddddddddddeddddd.mjg.ddddddddcddddcdddddddddhhdddddacddddddddhnddddfcddddddafddcdddddddiflgddddcdcddccddeedddddddjll",
-"liddddddddddddddddddddmcdddddddi#cdddddd.cddddcfakkddddd#iddddhjdddddddddbndddmnddddddel#ddjcdddddcmm.addddcemeiadddddddddddddgl",
-"lmddddddddddddddddd.dddddddddddiaddddmdjlndeddddd.gdddddedddddddddmacddddhndcdebddddddkllddddddddddcebaddddddddkcdddddddddddddfl",
-"lidddddddddddddddddddddddddddddcddddd.dca.dddddddel.cdddddddddddddejce.mdelehmd.dddddc#.ldddddddddd.mhadddddddfnddddddddddddddfl",
-"lndddddddddddddddddddddcddddddddddddddcdddcmdddddel#jddddddddddddddmhhbfddffa#cdcccc.bemlcddddddmiddddfddddcdclndddddddddddddc#l",
-"llhdddddddbcddddddcmjdc.dddddddddddccdddddcedddddencdd.iiab#hddddddccc#iddcglneddcmhmddjlcddddednhddddbcddddd.llbdddi.dddddddbll",
-"lllkdddde##ddddddd..cddddddddddddddccddddddddkjddcddddccdcejmdddddelchlcddd.cddddddddddjlcddckmdddd.gmdcddddddccddddkgcdddddelll",
-"llll#nbflll.ddddddddddcddddddddddddddddddddd.l.dcdddccddddddddddcnccdccdddddddcdddddccdkleddddcddd.#lg.eeeeee.eccdcdal#im.jb#lll",
-"lllllllllll#kbbihjkng#ll#nnaabijbbbnhi...jha#llg##gf#l##fffnkhhkflakababbbnfgf#ngffg#l##lganf##ffnllllllllllllllllllllllllllllll",
-"llllgnglllk.ee.......mjjhikiceceecccccee....ee.....mjijm.e.e.e.eecceeee..m.mmmm.alllllllge.meeeeeee.e..mjj.m..eeche.eallllllllll",
-"ll#jdddmfljdddddddcccdddddc.dddddddddddddddddddddddddddddddddddddddddddddddddddd.#nhiia#jddcbaababbahddddddddddddhdddhlfjcccilll",
-"ll.ddddddgicacdma#l#mdddddcmdddddddddddddddddmhdddddddddddddddddddddddddddcnedddddddddddddddddddddh.dddddddddddddcdddh#dddddde#l",
-"lkdddddddcccled#nmcddddddddiddddcddccddddddddd.bdd..ddcjeddddddddddddfcdcajl.dddddchnamddddddddcddddddiddhdddddddddddccdddddddml",
-"leddddddddddnddcdddddkdddddaagcdbedddddddddddddicddkd.ahkdc#jcdddddddacdccdgeddddcnanijcdddddddddddddddcnjcdddddddddddddddddddcl",
-"fdddddddddddddddddd..ddddddddddk#cdddddddddddddc.ddhkl.dddclkidddddddbcddddfddddddddhjdddddddddddddddddeee#ddmddddcdddddddddddd#",
-"gddddddddddddddkaddddcddddddddhacdigeddkedecdddccddcgkddddcgdddddddddkdddddbddddddddaedddddede.dddddddddj#jdi.dddnjdddddddddddcl",
-"l.ddddddddcdddd.bmddddddddddddidddflhddaabiddddddddd.cddddcfdd.hkiedddddddcgbmdddddi#.ddddddcicdddddddddmjbjidddcg.dddddddddddml",
-"ladddddddiadddddddddddddddddddddddjljddekdddddddddddddddddefddeeddddddddddddddddddhmceddddddddddddddddddddbkddddddddd.cdddddddfl",
-"llnddddd.lbdddddddddddddhdddddddjddddddddddddddddddddddmddebdddddddddddddddddddddddddddddddddddddddddddddddddddddddddh#cdddddfll",
-"bkacddddikmddddddddddddcfdddjkbalabkkbdiijijmm.cdddddddcdd.iddddddddddddddddddddddddddddjcccdcccccnmddddddddddddddddd.kcdddd.aal",
-"edddddddddddddddddddddddddddgllllllllld#llllllljicddddddddhjddddddddddddddddddchbkhimmcj#ll#ellllllkddddddddddddddddddddddddddda",
-"eddbkddddddddddddddccedddddd#lllllllllc#lllllllb.dddddddddfjddddddddddddddddddmllllllllllll#.lllllladddddddddddddddddddddddddddb",
-".djndddddddddejdee.jmfjddddelllllllllld#lllllllg..ddddddek#mdddddde.ddddddddddkllllllllllllgmllllllfddddcdddeddccdddddddddddddda",
-"mddfidddddddd.dddddddijddddilllllllllld#llllllll.eddddddddn.dddddcgcddddddddddnllllllllllll#jllllll#ddddgcddgekllndddddddddddddf",
-"jdddifcddddddddddddddndd.ddbllecccmemecemem.ejllj.dddddcngledddddhkmafnfcddddd#laiinllmjijjmchkhhblliddclcddklfmecdddddeg.dddddl",
-"jddddegiddddddddddddnjddhddgl#ddhckcbciek.bdddnlnccddddddeiddcadd.gh..ekdddddilldddhl#ddijeiimc.dd#lfddc#id.gbddddddddd.aahddddl",
-"idddddm.dddddddddddhaddccdellik.fnfnaaaakkih.djlli.ddddddddddjhddd.dddcddddddllgdddbllcdemdceeceddbllcdd#gclhdddijdddddddddddddl",
-"iddddddddddddddddbb.ddddddgllceblllllllllllled.llfe.ddddddddd.ddddddddddddddillhickalldcnggggggfjcclliddklljddddeeddddddddddddcl",
-"hdde.dddddddddddclcddddddjlln..#llllllllll#jcm#llljccdddddddddddddddddddddd.llfce.bbllchglllllllgecblledc#fdddddddddddddddddddcl",
-"hddigdddddddddddclcdddddc#ll.dhlllllllllll.c.llnnlljcedddddddddcjddddddddddgllmakm.alldd#llllllllifmllnddecdde.dddddddddddkmddel",
-"hdddbcddddddddddel#n.dddfllhe.glllll#lll#ejmllfcc#llhcddddddddddeddddddddc#llhc.ljgbl#.hgllllllll#cmjlladddddd#fjdddddddddddddel",
-"idddemdddddddcddchedddcallledmlllfkjnll#mc.#lfeddmlllh.ddddddddddddddddd.gllnejnlm.nl#c.lllllggllliddfllidddddghdddddddddddddd.l",
-"mddddddddddddkhdddddddnlllljddfnednlllledcel#cidc.ell#ccdeddddddddddcedehllndcbllmgflle.llkedd.lllledd#llidddde.dddddddddddddd.l",
-"mdddddddddddd.leddddeglllfllhjdd.#lllgcmjlbcche#g.c.bcflnmd.e..cdcidckgljjicihlll..nl#dd.cddddellllmddhlllnddddddddddddddddddd.l",
-"mddbedddddddddedddeehlllmdbl#dddglllfebm#ln.cj#ll#.jdillllfkmm.e.mhallllfdhmillllifnlfddddceddelllmjhblllllgjcdddddddddfffbeddhl",
-"mddalcddddddddddenl#d#gcdddnbddmc#llebell#ckc#lllll.ec.flllllllllllllllkmndalllll.cfbddddeflddcll.jdblllnnlll#mdddddddd#dmdddcgl",
-"mddde.dddddmibn#llllkcci.ekccdnidmbecjllfc..#lllllllacccikgllllllll#ni.nei#llllllmkdddddallledda..ialllkdd.glll#fkj.dddbcdddddml",
-".dddddddddcllllllllfmcjef#eddel#mjdiillfedcejjhiihhhhjccjdd.ihlllajeciejnllllllllmmddddellllkdddhcalllbcddickgllllllbddhmdddddcl",
-"mddddddddddllllllhec#cjlll#dddglledelllcddhca.kch.#mibim.dddddgll.dddiglllllllllleddenjk#llll.ddcblllhjgebcejdmbllllgdddcdddddcl",
-"mddhmdddddcllllmcjeejfllllbddkcfl#klllnbbbbbkkbbk..hhhhihiiiihlllmmhllllllllllll.ddm##cmllll#.ddilllkb.jll#b.mcddnllgdddddddddcl",
-"idddacdddddllllcd.iflllllledeckm#llllllllllllllllknllllllllllllllmiklllllllllllndddfl#.hlll#ebddcflkekhllllllamddfllfdddddccddcl",
-"bdddmamidddglll.mllllllll#ddb#cdd#lllllllllllllllballllllllllllllmdallllllllll#ddd.fl#ejll#dcdfmddchnhlllllllllmdfllfdddddddddc#",
-"bddmnke.dddfllle.llllllllgddnlgeheflgecce.eee....ccm.mmmmjjjjilllmbklllllllllljdcddfl#cml#ekmnllhddehllllllllllhgfllfddeddddddd#",
-"bddibdd.dddglll.hllllllllgddallncbm#lfcdefcbdn.gendbefeaeijecclllmeallllllllllcc#.jfl#e.geicgllljdddhllllllllllmmmiimdddddddddd#",
-"bddmaddddddglllc.llllllllgddklllgimc#l#cede..eececcdcdddddddddhabdhalllllllllidklcdfl#.edceflllekjkkddblllllllljbn#gkddddddddddl",
-"bdd.addddddflllmmllllllll#ddjllllne#m#ln.eillllllllll#######ecaaaehblllllllllcilljanl#ccncfll#mhebll#ni.mhblllljiflladddddddddd#",
-"bddckdddddclllle.#g#llllll.d.lllllnemillni.illllllllllllllllijlllmeallllllllgd#ll..fl#ddegll#mcialllllllgffllllmmglladddddddddd#",
-"bdddjdddddd#lllmi#.demihbamdd#lllllnehellamajlllllllllllllllccllleinllllllllkblll.hflgdc#lllcbbnlllllllllllllllj.#llbdddddce.ee#",
-"bdddddddddcllll.mllghcddddddddcce...dddmaamcmhlllllllllllllljhlll.cnllllllllmllll.iglge#ll#mmeblllllllllllllllljigllbdddh#lfflll",
-"bddddddddddlllliillllfmdddddddddddddddddddddddemjikbaanfgg#lmjlll.hallllllllmllllje#l##lllmddebaanffffffffggg#fe.#llbdddcfl.dc.l",
-"addddddddddllllcellllllhddccddehjmjijijdedjiidddjibaababbhgljjlllednllllllllllllledllllllcddmm.eim.jcd.djdjdedcdd#llbdddddggdddl",
-"bdddddddddd#lllmhlllllll#llfddillllllllhebhllbdcnllllllllllgjjlllehblllllllllllladd#llllaeee.e.e..cecccdmcmc.dedd#lljdddddc#kddl",
-"bdddddddddd#llle.llllllllll#cdcllllllllljb.hlladcnlllll#fi.ddclllcdcebgllllllllfede#lllllllllllll#cag#ggggggfnfnnlllmdddheda#ddl",
-"bddddddddddllll.mllllllllllleddflllllllllmf.hllabeflllicjifddclllcdj.je.flllllne#.llllllllllllllllcgllllllllllllllllhdddkedhlcd#",
-"#cddcedddddglllcdjglllllllllcddnllllllllllj.nbllkmjkhckcjcianglllgnbm.emcm#llaihegllllllllllllllllcgllllllllllllllllkddddddg#ddl",
-"ndddddddddclllleddcigllllll#dddnlllllllllllmaebllhmdee.mcflllllllllllghd.hcbnejjcnlf.e....mmmjjj.mdmiihhhihhhhkhklllkdddcchlkdcl",
-"fdddddddddcllllln.cbdhlllllbdddfllllllllllllcaaklladd.glnhllllllllllllf.bdijc#jllehddcfekejk.lc#.hchbiadmcdddd.hgllliddc#llhddcl",
-"addddddddddhbgllllbmckm#lllhddelllllllllllll#m.mallabllllekjeeccce.if#.#lg.ddj#llkddc.imm.mm...mee.mm.mcmcddiglllgfacdddc.edddcl",
-"fcddddddddddddekglllk.ec#ll.ddbllllllllllllll#jidnlllll#iddddddddddddcellllj.lllfene#lllllllllllllllll#mi.mgllgb..ehcdddddi.ddel",
-"ndddddddddddddemce#llgcddgbddd#lllllllllllllllnddellllbdddddddddddddddde#llllllgdcclllllllllllllllllll.cehll#jem.eceddddddhkddcl",
-"bddjjddddddddddcdechllgckcdddnlllllllllllllllgmiegll#mddddddddddddddddddckllllnc.j#llllllllllllllllllm.kallh.cidddddddddddjbddcl",
-"bdddbddjjdddddddddmmjll#ccddjllllllllllllllllmjjfll#mdddddddddddddddddddddnllljddnllllllllllllllllllajeilljc.dehcdddddddddbhddd#",
-"adddmbddddddddddddddd.llecdc#lllllllllllllllnhhalll.dddddddddddddddddddddddbll#cajlllllllllllllllllfdehll.h.cgllnddddddddm#cddd#",
-"f.j.iledddddddddddddde..dddc#llllllllllllll#cjjllliddddddddddddddddddddddddcglln.dnlllllllllllllllljhmllihddc.iglcddddd.hicdddd#",
-"be..m.dddddddmdddddddcdddddckllllllllllllllfhiallfdddddddddddddddddddddddddd.lllci.lllllllllllllllncdb#bdmdddddelmddcdddddddddd#",
-"mddddddddddddgdddddddddddmhfjllllllllllllllicdjlledddddddddddddddddddddddddddnllhdcllllllllllllllldm.mdj.dddneddnkdelfddddccddd#",
-"jddddddddddddnkdcddddddde#lecnllllllllllll#enbfjeddddddddddddddddddddddddddddellbemnlllllllllllll#jm#l.cddddfmddikc#l#ddddb#mdd#",
-"hddcdddddddddjlmjmddddddc#l.ijllllllllllllbedgll.dddddddddddddddddddddddddddddmm.ecmlllllllllllllaihllmiddddddddg.c#l#ddddk#cddl",
-"hddnbdddddddddc#flcddddd.klbdclllllllllllljhc#llcdddddddddddddddddddddddddddddhllked#llllllllllll.khlbcddddddddd.cddjmdddddddddl",
-"idddn.eddddddddck#mddddddmlg.m#lllllllllll..illnddddddddddddddddddddddddddddddmllnccglllllllllllgdjnlmhdddddddddddjgddddddddddd#",
-"jdddbl#dddddddddddcddddd..llcdn#########l#jballjddddddddddddddddddddddddddddddellfccnlllllllllllncdlleddcdddcdddde#jdddcddd.cd.l",
-".dddf.lcddddddddcfnjdddddcll.decddcmceeec.ddglljdddddddddddddddddddddddddddddddgl#cdmkaabananfnnieml#hmdcdddbddddifdddaljdda#dnl",
-"mddnndgedddddddddcjbmddddcllmdijkmmijhihemdc#llmdddddddddddddddddddddddddddddddgl#cddjdicicicjceddil#cddddddfcddd.ndddjhfdd.jdcl",
-"jddeddjcddddddddddddddddddll#gffafffnaanfffnlllmdddddddddddddddddddddddddddddddgllmmmjmj.jcj.m.eeeal#jmdddddfeddddcdddddjhdddddl",
-"iddddddddddddd.eddddddddddllllllllllllllllllllljdddddddddddddddddddddddddddddddglllllllllljlllllllll#ccdddddfjdddddddddddcdddddg",
-".dddcddddddddi#bbkcddddde.llllllllllllllllllllljddddddddddddddddddddddddddddddcllllllllllljlllllllll#eedddddcdddddcnmdddddddcdcl",
-".dddmddddddddicddmaeddddc.llhhbbabnnnnnffnaf#llbdddddddddddddddddddddddddddddd.lll########m####l##llljmdddddd..dddjllhddddddn.cl",
-"mdddddddddddddddddddddddbmladdkmgehmcm.mckdd.ll#ddddddddddddddddddddddddddddddjllbddedcdccceddeddddfledddddddfgdddc#heddddidkmcl",
-".dddddcdddddddddddddddddcblkddmmj.mmmje.emcdd#lledddddddddddddddddddddddddddddalljddici.ee..jejedddklkcddddddckddddddddddibdbecl",
-"edddcnacddddddddddddddddm#lmmhlllllllll#l#gc.nllmddddddddddddddddddddddddddddd#ll.iifgffggggfgnggjbjllcdddddcnidddddddddenddbcd#",
-".ddddmddddddddddddheddddhllddglllllllllllllidjndjedddddddddddddddddddddddddddcj#adc#llllllllllnllgdeglicddddckmdddddddddddddhcd#",
-"mdddmddddddddeddddddddddglmimllllllllllllllnj.mflkddddddddddddddddddddddddddc#nmdkcllllllllllgelll.bmlgcidddddddddddddddddddjcd#",
-"mdddkbdddddddnncddddddddffcdbllllllllllllll#dcill#cdddddddddddddddddddddddddbllfddklllllllllliellljee#lkkcdddddddddddddddddddddg",
-"jddddacddddd.hddddddddddddmmllllllllllllllllfi.glllcdddddddddddddddddddddddhll#ebmllllllllllhdjlllljb.llcddddddddddddddddddddddf",
-"jdddejedddd.kcdddddddcdddddnllfnlllllllllllll.ee#llncdddddddddddddddddddddilllidcalllllllllfcdhllllbcjijbmdedddc#ncdddddddndddd#",
-"jddcihbjmiabddddddccc#iddddalncglllllllllllllnddilllfcdddddddddddddddddddmlllljdcfllllllllfcddhllllljkdil#maccdd.gedddddcc#cdddl",
-"jddejfedddddddddcciilladddddcdiieeejflllllllljcdklllll.dddddddddddddddddnllllllhkcnllllll#cdddmllllllch.gllkegcddddddddc#gfmdddl",
-"hddd.lcdddddc.acimnllkjdmcddddddddddd.nllllljmbbllllll.i.ddddddddddddcigllla.nllmjefllll#cddddcllllllgmcikllfidbdhd.dddhjddddddl",
-"adddjmdddd.bjijjbll#icke#ndddddddddddddilllikehll#.j#killnjccdddddcecgllllkdddfllmccflllmdddddd#llllll#ebc.#llfiehdbcccbhdddddcl",
-"kdddddddddiagllllljdkiklllfdddddebaahcddcl..dnll#eddddlllllll#gf#ll#d#llfecdcmdnlljc.f#eddd.eddkllllllllm.hcillllll#al#hcdddddcl",
-"hdddegcdddnllllajj.b.nlllllbdddalllll#bcdceinll#jadccd.alllllllllllldffjed.ngcmcgllmeccddd.#fcdclllllllllbckmeiagllln.cdddddddml",
-"eddddeddddallllce#ehllllllllbdhllllllllndddhll#..mfg.ddclll#llllll#fcccedjlllgcccfl#cddddcgllmddalllllllll#mcmdddlllkddddddddbll",
-"edddddddddkllllccflllllllllllbgllllllllehddmlgeg.glllbdellgdcc.eedchdjcbllllllfcccaedddd.llllnddcllllllllllllbcdelllbdddddddddcl",
-".dddddddddblllle.llllllllllllllllllll#.ehnhdj.cjgllllfdcllgddcddcccihn#llllllllfdddddddc.lllllhddmllllllllllll.dclllbdddidcnmdel",
-"fifbcdddddhllllcmlllllllllllllllllll#ebjnllhdkm#lllllnjmllf..bffgglllllllllllllgddddden.g.#llllcdd#lllllllllll.aclllbddddddccddl",
-"jgddddddddbllllccbnnnffkfggfggggggggeadgllg.ednllllllfcellgjhllllllllllllllllljdddddc#lgece#lll#cd.lll#llllllledelllbdkcddddccdl",
-"ehbdddddddbllllccbck.i.hcidbcheidk.ddefllg.m.he#llllln..llfdillllllllllllllgicdddejdde#l#edcee.eeddcj.c.m.m.i.ddclllbcl.ekdd.mcl",
-"ed#eddddddbllllm.jm.mj..c..j.j.m.i.cenllge#mllbelllllahmllfkkllllllllllllfmddddckllbce.#l#eccc.cecddmcccec.cieccelllbeljchdd..dl",
-"eddaddddddnlllllllllllll.llllllllllllllfcej#lllamllllncellfcillllllllfh.dddddddclllladd.lllllllll#edclllllllllllllllbdl.dddc#cdl",
-"edd.ddddddbllllnaannffnfcfgfgggg##llllnchillllllkklllajckhmmhllllbmeee.mjkngadddhlllladmellll#g#g##cdj###l#ll###llllbd#..mdijdd#",
-"eddddddddn#lllldd.dmdjccdcd.ce.ddegllgdd.llllllllk#llbeckkjjillll#ll#llllllllmdddfllllkcd.ll#eddddcddddcec.ccccdhlllbdfeh#dddddg",
-"cdddddddddjllllcdmceeeecceceeccdc#lllfdelllllllllllllkbmllacilllllllllllllllllmdd.lllllkdclll#edddeeecddcdececddjlllhdaedddddddl",
-"edddddddddhllllc.llllllllll#n.d.#llllfd.lllllllllllllkc.llaaklllllllllllllllll#.ddillllfdd#lll#cjdg###bcb#####eeilllideddddddddl",
-"edddddddddhfnakehllllllllllfc#.#lln#lnd.lllllllllllllhb.llacillllllllllllllllll#dddnlllfdd#leglgej.#lllgeallllmamlllmdddddddddc#",
-"edddddddddehbande#llllllllnjjclllhc##khmlllllllllllllhdellbnklllllllllllllllllll#eddbllnielldell#edelllllnflllcdilll.dddbfddddd#",
-"eddmcdddddhlllldcjjallllladjefllhdcmj.ccannnnnannnffnejellkcillllllllllllllllllllgmdcnlfdclldd.ll#cee#lllllgh.ddjlll.dddm.ddddd#",
-".ddmedddddilllledje.enllacamndfbmcellndcidjcjmided.cccdellb#hl##lllllllllllllllllllmdcnn.ellddd.ll#e.e#llgidjcccklll.dddddcddddl",
-"edddddddddjllllllnmec.ejhimll#cmddelladddcccec.dececdcc.llbcdeddde.jfllllllllllllllladdccel#cdce.ll#edefjdhcckllllllcddddddddddl",
-".dddddddddehkngllllfiiddmhlllhehhj.llggg####lhh#########llkdcjeeejemd.iglllllllllllllfmddel#ccjde.ll#c.ddcmb.lllgnakddddeddjbcdl",
-".ddddddddddddddek#l#lnedjlllhh.klc.lllllllllljnlllll##llllgflglllgfh.eedhllllllllllllllkddb#dd#icc.llgcdchllmaheddebbcddddde.ddl",
-"nddddddddddddddddd.glllklllmcmbllkillnccececedcccddccdc#llll#faaagllllkddcnllllllllllllnedccdm#lked.ll#m#llgeddddflllidddddddddl",
-".ddd.hdddddddddddddchllllljehalllm.llnddkdbmk.bcjedddjgllajeeedcdcemb#lgicdhlllllllllllace#adcallkdj.lllllhddddddmm..ddd..dddddl",
-"mdddhnjddddddddddddddmlllfdd.lll#kjllndcbfbanfafaedekllfccdcdcddddddddhllbcijllllllllllbe.l#mijegleddklll.ddddddddddddddhidddddl",
-".ddjadddddddddddddddddclllbimflllemllnm.lllllllli.cnl#e.dddddddddddddddcal#eejlllllllllac.lldellllcecll#cdddddddddddddddbcc#cdcl",
-"mdcg.dddddddddddddcdddde#lljec#l#bhllbh.llllllla.cflfeecddddckneddddddddcilgmdbllllllllkh.l#ej#llbdjal#edddkf.dddddddddd.ddhcdcl",
-"jddacdddddddddddddnbddddjllgemkllcellbc.llllll#deblncdddddcn.bjddddddcddcdklgc.gllllllladjl#dellgdcmll.ddddddddcjddddddddddddddl",
-"mddeaddddedddddddddedddddh#eee.glbkllbi.lllllljekl#cddddddcbcdddddddil#.dddhlbdelllllllbhc##jjlljdeidcddddddddef#ddddddddddegcdl",
-"jdddiddddckddddddddddccdddea#cch#e.llbj.lllllnc.#l.mdddddddddddddeddcjflmdddfljmnllllllb.el#delldeflgdddd.hkmcnllcdddddddddelccl",
-"mdddddddddjddddemcccmfmdddkllbj.#hbllbf.llllljmalacddddddddcddddh.ddddcladddelaee#lllllkg.l#jhgkccllhdddhbcdddd.#cddddddddddlccl",
-"idddddddddddddddn.nn.ddddddlllcded.llbddee.m.del#cjddddddcgcdddjeddmacdhfdd.inl.dcecce.dcjl#ddcddjlgddcfedddddddddddddddddddmdel",
-"iddddddddddddjddmedddddddddnlleddd.llbddkehnddhlkcdddddddfaddddddddml.ddcdddceladmkekdbcdil#ddjddglbddcakcddddddddddddcahdddddcl",
-"hddddddddddddi.dcfdddddddddhllk.ccklln.m.dcmmj#l.eddekk.blcdbbcdddddkbhicddde.f#khhm.bhhb#llkhhkalljddddfaddddddddddddhfcdddddd#",
-"hddddddmdddddegcdcadddddddd.llllailllllll.nlllllecddikkafmddekl.ddddddccdddddcbllllbhlllllllllllllledddddbfdhedddbjddddddddddddl",
-"idddddddddddddddddbcdddddcdcllllaillllllljnllllaeedddddddddddeeeddddddddddddd.hllllhklllllllllllll#cddedddn#hddcnfcddddddddddddl",
-"jdddddddddddddddddddddddchddglllhilllllll.fllllicdddddmaaidddadddddddddddddddd.llll.blllllllllllllnd.cn.dddmddddicddddddddddddcl",
-".ddcddddddddddddddddddddcgddjkbfmj#lllllgdbfg#g.mddddd.knjdddiddddddddddddddddchkkhcejhkafglllll#gkdjedddddddddddddddddddddcecjl",
-"faedddddibddddddddddddddciddddddddddccccddddddddddcddddddddddedddddddddddddddddddddddddddddillnecdddjcddddddddddddddngiddddcalll",
-"l#cdddddcgeddddddddddddddddddddddddddddddddddddhng#acdddddddddddddddddddddddddddddddddddddddgndddddd.cdddddddddddddd#bdddddddgll",
-"lmddddddddddddddddddicddddddddnnddddddcdddddddddcilcddddddddddddddddddddddddddddddddddddcdddddddddddc.dddjnnkdddddddmdddddddddll",
-"fdddddddddddddddddddddddddddddbjfidddddddddddcddcckdddddddddddddddddcmmdddddddddcm.ddddddddddddddddekhddd.becdddddddddddddddddal",
-"bddddddddddddddddddddddddddidddddbaddddddddddcddcc#edddddcacdddddddddcfedddddddddddddddddddddddddddddfdddd.eddddddddddddddddddal",
-"bddddddddddddddbbmddddddddddddddddeiddddddddhddd.mlgdddcddflidddddddddeddd.mddddddddddcedddddhjdddcjegmddddbcdd.ddddddddddddddgl",
-"fddddddddddddddchfcdddddddddddddddddddddddddejddcenhddefha#j#ndddddiddeiddmeddddddddcjhjdddddcjdddcjhamddddhjddkcdddkcdddddddill",
-"l.dddddddcddddddddddddddddddddddmedddddddjecdidddddddcmllgcdd.dddddddddkcddddddddddddddddddckdddddddddddddd.gjdedddd#hddddddd#ll",
-"l#cdddddc#mddddddddddddddddddddddnedddddddejcddddddddnlfdddddddddddddddcjdddddddddddddddddddcdddddddmdddddddcdcjddddf#kddddcalll",
-"ll#hee.klljdddddd.jcdddcce#fccdccgheeecccccdddddddddcecccdccccccceeececdh.dddddddddddddiddddddddccbj.eecddeeccfj.eeenllnbba#llll",
-"lllllllllllgggg#nlll#fglllllll#lllllllllll#ggfffffn#ll#ll#llllllllllllllll#ffgg#gfnggff#ffff#####lllllll##ll#lllllllllllllllllll",
-"l#liiiiihkhhhihiiiijjmjmmjjmm..eeecefl#jmjjjmjijjjm.mmmmjmmmmmjll.ee.....eeeeeeeeeeceecemlfe...eeeeeeeee.ee.eeeeeeeeccccccecelll",
-"ke#kcddddddccededmdcdcdcddcdcd.cdcddjll.dddcmddd.e..cjdjdjdcdd.l#ddc.emcjchdmdhcjcjdjeddilbdddd..djdidickeicmeiccdedidkddddcbl#l",
-"idclbddddd.jmjdidjdcdmccccedmd.edcddclladddd.dddeedddddcdcddddml#ddceejdcdmdmd.dcdcd.cdcllmdddddddcdddddcdddcddddddddddddddall.#",
-"iddmfddcmdhbabbcdddmabababbaaaanaa.dchgacm.agg#g##gg###ggj##cjcaicemggffffffffffffggkc.mniddcg#############ll#ncdm#lllgdcdcflecl",
-"iddddjkc.dhllllmdekjllllllllll#ggghdeddcceckllllllllllll#ciaemchidcjllllllllllllllllhccmmdddblllllllllllllll#idddnlllfc.ckf.mdcl",
-"mcdhd.lbdbdklllhdclamllllllllled..cdddfl#db.lllllllllllllcddde.lld.cllllllllllllllll.i.l#dddlllllllllllllllkddddclllgccdall.ddcl",
-"m.dcm.m#fcejbll#ediidm#llllllljciiebeemllhmc#llllnjllllllhdddemlldcdillllllllllllllncmfladcdma.glllllllllnejagfjmll#cicfllehddcl",
-"mcdj.ecjlb.gckllidddjnj#llllgb.dkgjlcdd#l#cbillgkmlllllljicbdc.l#dcddhlllllllllllll.jell.eddd.ecgfglllllhcbngllablgeidblljeeceel",
-"eid#bdndmladi.nlbddcllgc#ll.ddecadmhdmdnllmcd#bdc#lknllllcdddd.l#ddmdd.lllllllllll#ddhlndcddblfdemmnlll.dddddkli#l.edblljdibimel",
-"mcdllnci.jlne.dafddcllhmmll.djlbaddddddmllachjm#.#mblllllgcac.ml#dchcddcnlllllllllkam#lmm.debj#ciiak##.ddddddd.h#cejnllea.flim.l",
-"ehdlllk..chlkchcb.dcancmkincckm.fcddddacgllmbdalcecfballllkeceml#dchhdddillllllll#ecil#ceddddd.nllhijeddcmbfgn.ie.mkl#jm.bllhdel",
-"mddblllbdfdjlnddckdddd.mbcdcn#k.ddddddcdillac.d.a.cddikbj.ecd.ml#dckl.ddkllllllllam.flieedddddcll#a.ddddhflllljdmdklljdhalllbjel",
-".hdd.bllbcmeklnc.dddddjl.ddehbjddddddbdiell#c.dh#mecccdce.cccjjl#ddejeddcjlllllllmc.l#cdcddddddmebfeddddddchl#ddcnll.minllllbdcl",
-"meddddehnme.cklacdddddhlhdilkdgjdddimgkedflljcecmfeh.dcemkaic.ml#dedj#bcddmlllll#cjalndhcmcddddddmmdddc.d..cmmdmhllijcklllllkj.l",
-"mjdiddi#hddcgdbladcdddcicmellckedddbaklci.ll#midafmhcgllgfkdmkml#dddc#lgcddallllhmclljddfljaedddddddcfll.llhdddhllhcail#ieccddcl",
-".icledblndkjc.eklacdddddi#djmddddddhlhk..dgll.edigmhakllllkcdmml#cmddealkddallllc.jlfdmdjech.cddddigll#m.iic.dblljijdcccddddddcl",
-"m.clbda#cellie.dklkcddddblaemdccddjmnbmecbkllkjdijhcchl#ain#.n.l#dddedcjjddnlllfecgli.dci#nd#idejnlllf.dk#j.jillki.cdddddddke.el",
-"eael#djndjllkddbdblbdeddkllmndklnddgmelbdielllcekllbcl#egl#iddmlgd.i#djlfdcalll.emllcmdhllli.malllln.mladdhcdjlid.cddddcddmfdn.l",
-".dellbd.dellcmc.ddblaeddmllgene.cddcc.lejdehllhj.llhilkhgecd.n.lgddcb.ellndcglfeealhkmdfllllllllnmcddfl#c.cb#jecaddddd.##ichidel",
-"emellledddgadjhdcedbnecicglla.m.dddfbcj.#djellgdealkllkbedcccjmlgc.cnmdi#lcdilhce#lccdmlblllll#imcdddhgj.cillheedddcj.elgbhlhcel",
-"meelllgdddijddmjjdjdd#addclllijidd.llejd.cde#lleh.lllljbdd.f.f.lgddddbdb.hedelmmblf.iel#jllllfe#l.ddddddmkllhd.cddelllm.i#llhdel",
-".kelllladdcmdcke#dcccnla.icnklm#kdalkdg#acde.llgde#llledddfgcemlg.mcd.dagcdmgkcellmmcalhgbg.hdblheddddiekllidmddm.e#hjkgllllbdcl",
-"e..lllllkddddelaemc..calkchdkljln.#l.djlled.dgllemilln.cealf.amlgdcecaeegadk#cdmlfdkdabb#iid.bemalmddjchllkdecb#lgedk#llllllbcel",
-".f.llllll.ddddaljdnjdednlb.c.ginmj..ddd##dh..hllhdd#lll#blllc.mgfdjh.eeddedc.ddnlimdddhlgnedklhbllcdechllhdejlllia.m#lllllllkcml",
-".c.lllllllhdddcl#d#ndcddaladmdhaig##cddjfd#cccll#ccblll#aimedddhjddecjkdbbdkec.llceddd#ncck#bem.jcdeiblli.ckllhcjkjnflllllllbcel",
-"ebmlllllll#cdddnlj.cdd.icnlhdeeekijhddee.d#kjeblljd.bj.cicmddd.lgddddideehdkcdblji.cmdecdblll.#eddjmhllbdijllhciebbj##llllllbj.l",
-"edjlllllla.fecdmlnddddddecnlbccelllleelendf#dd.#kcddcccdce.ihklllgfnhmecccdddd.nddd#bc#hcllllncechdkllkdchllkmmadkjdi.jlllllbjel",
-"mamllllljjkb#fddalcdddddjednlncmef#fejlg.cglmjecagddciag.flllllllllllll#gajcdif.dkelmgljjllll#e.c.nlliehi#gjjb..nglcikmlllllkccl",
-".imllllljegllnddml.ccde.dcnenlkcjc.kkeknnclladdmllka#lllinlllllllllllllllll#b#lmddil#llj#llllgdmmkllkhcjhhbhmed.l..dniklllllbhel",
-".imlllllndgll.ddc#hjgchlc.hednlnddc.ddcdbegacdd.llllllllnbllllllllllllllllllll#cdddklllllllllmjdbllkdeeflllmddd.l.ijeemfflllhdel",
-".k.lllljdmmlbddddjlm##j#hmdmndnlfc.difedcdcdciglllllllllljlllllllllllllllllllll#kcdcenllllll.jcflljd.kfeekmf.ddckiaff.cmhlllkecl",
-"ecmllljcbl..dddddd#aelfjjibd..ealbcd.fhddcddflllllllllll#ennkhiiihbag#lllllllllll#hccchllllidiblladejllajjdlmcdmlnn#dcfmbnllhe.l",
-".h.lll.ilfddddcddd#lbihiealddmadnlndjcfcc.hmflllllllllnjcddddddddddddddjallllllllllnddde#lmedfllhcd.illb#lcai#jd..iemnbhhnllk.el",
-"edcfllmdhlmcddkhcdlllhcgh..f#kdicaladddmegl#eglllllamcdddddddddddddb#gnkccmalllllllaehddcecdflliedca.lljlf.fh.addb#gafkbcll#.del",
-".ddd.jdieicddelbcalll#hcjagllli.ccaf.cdmglllgmllla.ddddddddddddddddfllll.dddeb#lll#cnlaccddjllkd.jnb.#bnlinllccddina#nfje#keddcl",
-"bmdmeddmmddccdec#llllnedjllllllhdgcd#nmllllllb.gcddddddddddddddddddiflllcdddddchllmflllgedjdghddhl#ccddmhkllbdddddddi.dddddmmd.#",
-"ll#kcccjdddddhg.lllllladikllllllkecdnllllllllgcddddddddddddddddddddaakjedddddddd.jjllllllflgcechgkfehddddebfhf.ddddigedcidcek#ll",
-"g#ll.bm.d.dcdig.flll##me.cnllllllmddmlllllllncddddddddddddddddddddc#llldddddddddddillllllllhdcj#.jcjledddcccifkcddde.dhcjmebllll",
-"edi#jll#kdcndddd.llad.khgddalllllecd#llllllhdddddddddddddddddddddddcmkadddddddddddd.#lllllliddbdddegh#hd.##iljibdddd#cch#lkbllll",
-"eddccblll#amcd.cd.a#habcadejhlll.mjfllllllmddddddddddddddddddddddde#gn.dddddddddddddefllllll.ddd.nlnilnilliji..c.dmdjb#lllkhgjel",
-".ddjc.chglllnmecddd.fh#dcedgfllbkebllllllmdddddddddddddddddddddddd.lll.ddddddddddddddc#lllll#eddkggmlli#lgcg.deemejnllllllhcddcl",
-"eidbedddd.nllllkcdm.dchdelg.glndcillllllmddddddddddddddddddddddddddcjiddddddddddddddddd#lllllnddcmdbl.c.j.dd.jdchlllllllbcdacdel",
-".cmllgkeicdehgll#fmc.c.ddkllll.bcefllllmddddddddddddddddddddddddddm#g.ddddddddddddddddd.lllllljdel#hjf#bdddmcjf#lllllnmcideec.cl",
-"ejmllll#becdeciflllgjemd.chglaccnbeklladdddddddddddddddddddddddddddikcdddddddddddddddddd.lll#h.cdhll#becmdchflllll#b.dhdm.k#ik.#",
-"e..lllllll#hdcgcckllllaedcedcdkmlllj.addddddddddddddddddddddddddddilbddddddddddddddddddddblgdklfecnjdd.deallllll#mcckjdi#lllkdel",
-".mjlllllllll#bjdcdmjnlllficjmdc#llllkdddddddddddddddddddddddddddddkljddddddddddddddddddddd.mgllljddcheiflllll#k.cicedcflllllhdel",
-".hmllllllllllllfjeid..bgllgccdklllllhdddddddddddddddddddddddddddddb#ddddddddddddddddddddddclllllnddchllllllficdmceddhn.#llllkmcl",
-"mdjllllllllllllllln.jmidmgnhln#llll#cdddddddddddddddddddddddddddddafdddddddddddddddddddddddblllllbf.llll#hdd.cdddjkhmncbllllhdcl",
-".hmlllllllllllllllllf.ede..iglllllljddddddddddddddddddddddddddddddajdddddddddddddddddddddddclllllllkhlamjjmdmbnjgkiadeic#lllkmcl",
-".djlllllllllllllll#nkcfmdjhd.lllllgddddddddddddddddddddddddddddddd.dddddddddddddddddddddddddallllllad.dmmmmfllkng#hdcjlenlllkdcl",
-"..mllllllllllllljfcdddcddddcilllllicddddddddddddddddddddddddddddddddddddddddddddddddddddddddcllllljddidcnlllllkim.dd#.lkalllbdcl",
-"mcjllllllllllliedddemddcc.denllll#cddddddddddddddddddddddddddddddddddddddddddddddddddddddddddallllhddiflllllllljlnjd#hfgglllhjd#",
-"mcjllllllllllbdddckgbma#jmdelllllkdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddjllll#cegllllllllgjbnkcng#lllllhec#",
-".h.lllllllllcdddcllle#lkjmdhlllll.dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddc#lllljnillllllllllabidnlllllllkam#",
-".cjllllllliedd.bkllhcmeddciflllllcbgidddddddddddddddddddddddddddddddddddddddddddddddddddddddddbllllic.llgemijinlgmjjllllflllkecl",
-"eijlllllliddd.lmmh.dcdmfjdcgllllad#lkkfccdddddddddddddddddddddddddddddddddddddddddddddddddddddjlll#hed#llm.ngljg#cijllaem#hlh.cl",
-"mdjlllllgdd.c#jdedbiheehib.lllllmellmglmlfcdddddddddddddddddddddddddddddddddddddddddddddddddddcbmecmdcfll.ddclfk#.hjlgddb.#lhkcl",
-".emlllnjeinleed.#bm.bmnjceelllllejllml#hlghfc.dddddddddddddddddddddddddddddddddddddddddddddddddbf#l#ceall.ddciligih.ljddmdllh.cl",
-".ccaabddiggmkddjjckjjejbii.llll#dkllilanlkafhlficddddddddddddddddddddddddddddddddddddddddddddddlllllekklfhccbclnehbmkmci.c#lhiel",
-".ddckddcidddddcddddddddcddmllll#deij.ama#cfkgllllgjddddddddddddddddddddddddddddddddddddddddddddgllll.ccj.ccdmdjjcc.ededd.dihcddl",
-"edccccdckdmdjdkd.dhen.kmedillllfddddddddcdccc...mjicdddddddddddddddddddddddddddddddddddddddddddnlllljceachdnekcncf.bckmiecdmddc#",
-"#f#gefffanaabbbbkkhhiiijeinllllfdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddallllaccicec.ccc.cmcmc.ej.cdjddc#",
-"lllljllllllllllllllllllfillllllndddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddbllllllhkllllllllllllll#llll.gfgl",
-"lllljllllllllllllllllllnkllllllndddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkllll##hhllllllllllllllllllljllll",
-"jmmjcjikbkbbbabbbkkkhhk.eibllllndddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddbllllfccc.mmjiiijbaaanfgg#g#.f#fl",
-".dddjdadcdndbebcmcaeijbiedellllfdddddddddddddddddddddddddddddddddddddddddddddibhbimdddccdddddddallllfdd.d.d.ckdbdncndkdidbdjddd#",
-".ddmmdecddcd.e.dmjemcdjjccellllgddddddddddddddddddddddddddddddddddddddddddddddmallgcac#fc#k.fadnllllncdmcjeddddddc.md.djcjdhcdd#",
-".dclldjeddecmbjdfleace#lmidllllgddddddddddddddddddddddddddddddddddddddddddddddddeki.aelfelbhl#d#llllb.dhejececdddelgcdcf#ffam.c#",
-"mdclndcddehl.hdamlbddcelkdd#ll#kddddddddddddddddddddddddddddddddddddddddddddddddddddcjlkjliflfclllllkcchjkibddd.ikaddcllllllkn.l",
-".ddkjf.h.#llmddgkfljddmlbjd.mmihcddddddddddddddddddddddddddddddddddddddddddddddddddddd.chlmllkclllll.cdicmddddhlneeddhllllllkjcl",
-".ccglk#fllll.ed##.ggnchlfdch#lllidddddddddddddddddddddddddddddddddddddddddddddddddddddddcielljmllll#ceddecdife#ndddde#llllllhael",
-"eiclllllllll.dd#l#mmmeel#.nkllllgdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddichllllgddcglf.llelecdjbllllllllijc#",
-".d.lllllllllec.#llllll#lljc.lllllcddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddglllladdk#.cbfidmddjlllllllllligjl",
-".celllllllghddcheilllllllki.#llll.dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddelllllhddhcddddddddc#llllllllllh.cl",
-".dmllllll#jndemfed.llllllfddalllladddddddddddddddddddddddddddddddddddddddddddddddddddddddddddhllllledmdedddddj.j#lllllllllllkajl",
-"ec.llllhllebdecjcajkllllamddjllll#eddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgllllfddccfkcd.alllllllllllllllk.c#",
-"ec.llllmflidcmmjk#lgl#aedcdcklllllkdddddddddddddddddddddddddddddddddddddddddddddddddddddddddmlllllacdbdcianlllllllllllllllllkfj#",
-"edellllndkjeg.ll.llfjdddd.dfllllll#dddddddddddddddddddddddddkddddddddddddddddddddddddddddddd#llllllfdedmdecnllllllllllllllllkdd#",
-"edellllldikj#femja.dddehflajnblllllhdddddddddddddddddddddddcndddddddddddddddddddddddddddddd.lllllgljblnjcicieh#lllllllllllllkae#",
-".d.llllljglb.hddcc.eeblllladdd#llll#cddddddddddddddddddddddbnddddddddddddddddddddddddddddddfllllfdie#lll#jeaehch#lllllllllllkcc#",
-"ecellllllmjmddddccigllllhddhddkllllledddddddddddddddddddddcladddddddddddddddddddddddddddddillllljdd.calllllnmedfdealllllllllki.l",
-"ec.llllllf.dded.kglllfiedidm.c.#llnmn.dddddddddddddddddddd.lkddddddddddddddddddddddddddddc.flllfcdcide.h#llllnjmcgemb#llllllhccl",
-"...llllnjdddceblllln.edbccklgddilimllfddddddddddddddddddddcnjddddddddddddddddddddddddddddff.allckcghek.jchgllll#ij.#cehgllllhhcl",
-"edclgjddddck#llllhc.dbdddmfn#ndddnllllndddddddddddddddddddfaedddddddddddddddddddddddddddilllj.kddalllncmmjd.flllllaeclei.nllkdcl",
-".dd.cddd.bglllfieecjddchjd.dckcdcllllllidddddddddddddddddcknmddddddddddddddddddddddddddilllllidbjllf##.dce.cc.alllllaicnjj.hmnel",
-"eddddcmnllllnmdjced.idblbhn.kcd.mblllllliddddddddddddddddkbmcddddddddddddddddddddddddd.lllllljidnllhdccmjaddmce.alllll#jcnejcmcl",
-"eddcc#lll#hddhedmakhdal#mgclgcdddcnlllllliddddddddddddddd#llmddddddddddddddddddddddddmllllllid.hll#lndb#df.#bccmbdm#lllllac..ddl",
-"jjb#.llnicecceifla.ec..cmjg#.j..mmcgllllllhddddddddddddddhafedddddddddddddddddddddddj#llllladi.lllamicjlch.al#kd.midjnllllfejddl",
-"llll.b.dccmddm##adcbgddddcfidghkfddc#llllllbddddddddddddbfhjdddddddddddddddddddddddhllllll#dddgllllg.dcacg#m#llejecdddenllljlnjl",
-"llljdddddddddddefdall.dddddddjl#dbdi#llllll#dedddddddddclllleddddddddddddddddddddcfllllllll.d.mllllllacndhllllljbladdddceifmllll",
-"hmcdddehgedddddblmmlgekcfjciclg.cecnfjkllllkb#kcddddddd.hihkcdddddddddddddddddddeklllllll#l#dhdhllllllhjhillllkdbjddddd.heccalll",
-"eddddck#lmddddd.hee.cffb#ikfcb.ceifddddallf.lllgmddddddnllgkdddddddddddddddddd.n#.llllllj.#ma..ehlllll#cdenllb.igcdddcdddmihechl",
-"eddkdggid..hccdddbl.d#mlaagbjdi.algdmddcmlmflllll#icddcflll#ddddddddddddddddj#lllnelll#edcdilljcejllnimjkjlllc#jjddddkkdcfjcdddg",
-"edcidg#ae##ledddclfcdmdghgl.endhlgedei.jdejllllllllgbedceibkddddddddddddd.bgllllllhhlncjcdjmll#.jcijcnjnm.jlleiddddddflic#lgmdd#",
-"e.egj.cdckk.edddcg.ddddm.##cc.kl#eddbll.cmdkllllllllllnh.cccddddddddddmkglllllllll#dmddc#ijdhlll.kcde#adc#bnlndddddcc#g.cfllbdd#",
-"e..lllmillnc#cddcajnddddcnde.blgdm.blllladcdcnlllllllllllll#fannnngg#mllllllllllllndddddmlbcmjll#mcedce#m#lmnljddd.lkcehhlllbkcg",
-"ee.lllihl#jfjmndjlincfiddccdklfe.dbllllllf.cbcjllllllllllllllllllllllmllllllllllnjdddeddkhlkdjjll#.mchj#ghg#jll.ddil#c.allllbhdg",
-"ei.ll#i.ne.mmi#e.lkkml#cdddkl#e.dhlllllfbllkdddfllllllllllllllllllllliflllllllgmddche#kcdn#licdhll#eicc.lidhd#lnddnlliblllllb.dg",
-".cmlllih..lljidhdgmdddcdmcblgcc.dblllllcfln#ejcll#ealllllllllllllllllkilllnhflfcdil#c#lmdcfgic.djll#ek.d.cdcdjllfc#lgcelllllkhd#",
-"ekalllllkdng.jil..manhd.dklfeheddj#lllidfmjf.icmabddeiaglllllllllllllheai.dd.lgddjljhjlbdemibiecdmll#ecddddcdclllhmiceflllllbjc#",
-"ed.lllllkcedd.llmd#lbdcdkllchdcciimllgddcdnhcdffedddddcdcmiannglfijm.dcdd.ddcbee.c#effkbdffb.hlmcdhllled.dddddflllcdefllllllbic#",
-"eamllllll.db.#ljdnlfddcalncedmmckmc#acd.cdbdaillnddddddddd.eddkljddbdcddcibmfj#lddjlenndcdig#fhddc.ill#efddjbnelllhdblllllllbmd#",
-"eemlllll#eh#if.djlfeccklgeccdjajhfbcckilnddhcalliiddmfedcdddddhf.ccihbn##llmmc#lkdc#mkmdddjihicdde.dill#chdnl#dallnddallllllbmcg",
-"encllllfcclkdddm#fcedkl#e.edclljm#gdc.fgjdcfc#lleeddclnddmccmjcmcfillllllllbhenlled.alliddflll#dm#cddbll#e.cj.mmll#cdc#lllllk.df",
-"ej.lllfml.jmfedccdcdklgcmcddcmmgnm.cddedfae.bllaimdddl#cdiccdcali.mlllbm#lll..mllhddhlllkdeklladngbhmchllbdccch.klliddclllllbjdf",
-"ecmllle.jjgllmddddce#g.ecdcdddflamnbnb#hlj.j#llecdddkmjddij..iblh.m#ejc.klllahcglgddcjfl#cgbjedc##hadc.h#maccdfkealndddjllllbmdn",
-"ej.llimfl.h#ndddcdjmccdccdddd.fmklllllim.di.llgdejddkl.d.mecddalihm#ddcbjlll#cimll.d.idjnalllh.gll.gcic.caladjcibjhfcdddklllbhdf",
-"cd.n.f.flidddddddklfdddklidddcbllllll#kgdcdnllkb.led.lndd#m.kialic.gcdcahllllmmcllfddkbdmm#llh#lnjdfbgj.dkllfce.cl#kdcdacallaicf",
-"cid.gfcc.cddddcdklgejcchlnddi#l#fanlllladk.lllcmblgccnfcdj.d.ealiec.cdjlilljbgjknllccilainiblmkjknnhlgjcaekllf.hdbllcdml.c#lb.cf",
-"eddc.dddcddcccdhlleedem.kbcfl#keddd.llleddblla.iglfccccddbndbinlhkee.ilfhlhellm..llkdell#nlj.calfikmllihm.efllnendnld.lljdmlkcdf",
-"eedddddddihd.cblgcccebcedjlgmddddigcekcdddgllmcelllccfl#mdecccalhe.llla.#gddn#bi.nll.jalgg#cdcmdclnejlaelhdcbllnc..mc#llkddakfdg",
-"eddccejbfaebckl#.dedmkfncijdddddd.lfc..mb.lllebnllliddflle.ejjnlijml#hkllbhejimcmilli.e#aakddddddnlih#gdk#ijcbllahicmf#ljddjaedg",
-"ejel#lllgdceblleecddkhmdddddddddd.#hblnccfllieelllllmdhlljddecalimc.d.ffkenhblbdl.#lfedbeddcdcdcdeli#n#ddfl.hmnllhe#cc.mddcc.gcf",
-"edmllllbcccbl#cecj.ddddddddn#hedddddmjdhell#djhllllllfcalhcdi.alh.egfnnaankkcl.cccjlljkdddddddd.cddblmaddcglhcjk#lacg.#l#n.ddccg",
-"ej.lllbcmeblg.idjllfidddddcnll#.ddddddecilla..gllllllledmjjdmmalhhchkkhkbbahcbkfdjcllfe.ddddddchgkem#accdd.llijdmllamjiglllnendg",
-"edmlladidflledcdemmmcddddhd.llladdddcdiegllj.illllllll.dml#ckhalidcahjj.mmmjdd#hdejfllc.dccdbfjbm#ahe#ilmddnll.ddfllbmie#lllbcdg",
-"eedlhcccnl#cdcd.ddddddddalmhjlkeeceddcejllnmbnllllllllncdjlmmmalib.mlllll#enbd.jbcjellkimcddc#blheblb.ellcddnllji.blladfe#llbadf",
-"cedjddealgmdemelnheddddbllgi.jcjl##cdcmnllhec#lllllllllghefjjjnlhmebhllllf#aehc#ge.efll.cdcecjhlgdinkgjbaddchll#hejbllbeh.glamdg",
-"ecddddfllcidkfhllllmddbllllfble.lgjeddd#llciillllllllllllfcei.alicdajklllla.flekege.illhnc#lkdcl#c.eecm.cddd.llll.bcfllbjjcgbgcg",
-"cddccglgc.dklkd..ccddgllllllllmdeededdhllbjj#llllllllllllledmenlhicacmebll#lle.hflkmc#lgc.klefckjcnahfgc#l#cdjlllljkcbllncfcecd#",
-"cdddjlgeechll.dddddmglllllllll#if#jdjc#ll.emllllllllllllllfcmmnlhecjcjaalllghnllll#dhjllijehk#cbnballllhlllcdelllllje.allaeb.idg",
-"eddkefcdehllgdddddilllllllllllllll#dc.llgdjklllllllllllllllmmenlhecfdmjbllllllllllle.cggkcjdknchjilllll#blkdddfllllljjcfllajcdc#",
-"ee#lndddklllmdddj#llllllllllllllllhccc..ccc#lllllllllllllllmbbhfmfckii.alllllllllllfib.nbcccb.mlllllllllbcddddc#llllljbckllhdddl",
-"bglneacilllncdcalllllllllllllllll#ejeffackjllllllllllllllll....iecclll#nllllllllllll..ellbj.hn#llllllllllacddddflllll#ciekfmkddl",
-"lllcdddce.edddd.m.mjjjjjiiijjiijm.dekllkdddemmmjmmmm..mmm..cdcaliedhbbkabbkbbbbbbbbhccdnll.dc.m...mm.m.emmcdddce.eeeeedcdddflicl",
-"lncdddd.dddcdccdedcddddkejdmm.bincddgll.ddcach.ikbbhicnjfmbeddalhddjmjn.icacndacndhdiddillkddcheacncndnef.neb.gjh.hkhb.gcddhllll",
-"lajjjmmjjjjjmmj...m..mmmm...mmmjjm.jlll.ecc.c.e.mmecee.e..meeeblhddeeejc.cmcmdmdedcdedddglfe..m.mmjjmmjjj.jijiiiijiijijijmjjglll",
-"lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllfnnnnnfffffffffffgffgfnllllllllllllllllllllllllllllllllllllllll",
-"llllllllllfiiijkkhj.e.mjjighe.ee.ceceeee.m.e.ee.e.mme..eeeeccccceeeeeeeeeee..ee.llllllllke.mjm...mjjm..eeeccccec.hceeglfjeekllll",
-"lllk.dcjalmdddddddddddddddhcddddcecdddddddddddecdcbcdddcdddddcdddddddd..cdddddddmbi..iafddbllll#llllf.ddddddd.cdckdddnbddddd.#ll",
-"ll.ddddddmmddddc.cddddddddedddddiddddddddddddngn.dgjdda#cdddddddddddddgllmncdddddddddddddde..m.m.j#mddmddedddehehhdddjddddjddell",
-"lhdddddddddddddcb.ddddddddbdddddcdddddddddcdjkddaddfcf.cmc.lfhdddddcddajcdjcdddddcng#feddddddddccedddcjdbjdddde.l.ddddddddddddhl",
-"gdddddddddddddddddddddddddfeddddj.ddddcddddddddckddik#cd.e.ammdddddjddddddeddddddmhdnjnedciddcmdddddddd.nceddddclahdddddddddddml",
-"hddddddddddddddddddegcbdddekddd.addddcajdddddddcmdddfhddddejdddddddccdddddddddddddddbddcdcedcddddddddddcdhedddddae.dddddddddddcl",
-"iddddddddddddddbddddmdeddddccdikdddddehmdddddddccddd.dc.dd.lakdddddd.ddddddddddddddcbdddddcfccjicddddddcbmddbkddj.ddddddddddddcl",
-"nddddddddddddddmdddddmdddddddeiddcddddcb...ddddjmiddddchdd.bijddddddneddddc.c.ddddeahddddddmbghd.jddcddccjmahddddcdddkddddddddjl",
-"l.dddddddddddddddddddddddddddcddddddddddjicenddiieddddcbddm.ddddddddjedddddcikddddddddddddddfcdalmdeadddddnidddddddddf.ddddddc#l",
-"lfdddddddhjdddddddddddcngj.ddddedddddddddddccdddcdddddcaddjeddddddddddddddddddddddddddddgjdddd.bmedddddddddddddddddddf#edddde#ll",
-"lgjddddddhccccee..mmminllllfhjnlfmmmjeddd.cdedddd..mmjhl#gl#gnkdddhffffnijmjihi.edddddddjbcmiijji#ahbkkkkbbbkhjjmjmmcdcddddddehl",
-".dddddddddc#lllllllllllllllllllllllllbddclkcldid.lllllllllllllmdddmllllllllllllllcddddddedhlllllllllllllllllllllllllidddddddddjl",
-"eddmddddddellllllllllllllllllllllllllkdddbgei.hd.llllllllllllidddddmlllllllllllledddddddcdkllllllllllllllllllllllllljdddddddddil",
-"edd.ddddddellllllllllllllllllllllllllkdccddddmkdmlllllllllllidddddddhlllllllllllddddddddddbllllllllllllllllllllllllliddeddddddbl",
-".dddddddddellllllllllllllllllllllllllmd.gmdcdkndhllllllllll.dddddddddklllllllllidddddddddeglllllllllllllllllllllllllhddgeddeedhl",
-".ddddddddd.lllllllllllllllllllllllll#dddccdcddcdbllllllll#mdddddddd.jd.llllllll.dddddddddcillllllllllllllllllllllllljddgfkcaadjl",
-"mddddde.dd.lllllllllllllllllllllllllbdddcdddddddgllllllllmdcdcddejalhddglllllllhddddddddddc#lllllllllllllllllllllllljddackllbdml",
-"mdddddcedd.lllllllllllllllllllllllllhdddcdddddddgllllllledddddddiaheddcgllllllladddddddddddblllllllllllllllllllllllljddhddhfcdml",
-".dddcmcdddelllllllllllllllllllllllll.ddd.ddddddd#llllllmdddddn.dddddddellllllllgdddddddddddillllllllllllllllllllllllmddbcddddd.l",
-"edddc#kcddelllllllllllllllllllllllllcdddcddddddjlllllljddddddgmdddddddckm.alllllcddddddcdccellllllllllllllllllllllll.ddkcdcdddml",
-"eddddicdddcllllllllllllllllllllllllkdddddddddddglllllmdddddddadddddddddddddbllllmdddcdchdejdlllllllllllllllllllllllljdd.ddddddjl",
-"edddddedddcllllllllllllllllllllllllcddddddddjdelllllmddddddddedddddcddddddddklllfddddddmddkdblllllllllllllllllllllllmdddddddddil",
-".dddddddddc#llllllllllllllllllllllfddddddddcjdillllmdddddddddddddddddddddddddfllledddddimdadcllllllllllllllllllllllljdddddddddhl",
-"menanijjedcgllllllllllllllllllllllmdddddddddddflll#cdddcddddddddddddddddddddddnllidddddindkddbllllllllllllllllllllllidddddddddbl",
-"mmbeeedccddklllllllllllllllllllllkdddddj##iddell#.h.dd.bdddfjdddddddddddddddddcnllcdddjm.dcddc#lllllllllllllllllllllidmb.kcdddnl",
-"jmmcdddddddbllllllllllllllllllllgcddddcbcjfaebl#mdddddeadddcdddddddejdddddddddddfladdjmeddddddilllllllllllllllllllllbdc#jlcdcall",
-".jmddddddddblllllllllllllllllll#cddddd.cdddefllcdddddddfddddddddddda#ddddddddddddfldd.ddddddddd#llllllllllllllllllllhddac#dddfll",
-".hcdddeddddhlllllllllllllllllll.ddddddddddddb#mddddddddkbdddddddddi#kidddddddddddiladdeddddddddcnlllllllllllllllllllbddedidddcbl",
-"jhdddeedddcglllllllllllllllllljddddddddddddel.dddddddddblhcddddddcn.djeddddddddddg#g.ddddddddcddmlllllllllllllllllllbddddddddd.l",
-"imdddkddddilllllllllllllllllljdddddddddddddheddddddddd.#j#lhcddddmcdddddddddcddddddddddddddddddddklllllllllllllllllladddddddddel",
-"idddcbddddcllllllllllllllllljdddckiddddddddcddddddddddhndcancdddddddddddddddfjddddddddddddddddddddnlllllllllllllllll#ecddddddd.l",
-"hddddcdddddallllllllllllll#.dddddcncdddhddddddddddddddbkddfdddddddddddddddd.gddddddddddddddddcmcdddbllllllllllllllll#.ddddddddel",
-"kddddddddddflllllllllllllgddddddddbddddiddddddddddddddbmd.addddddddddddddddj.ddddddddddddddddekdddddalllllllllllllllkdddddddkdel",
-"amjhkkkbbieallllllllllllhcdddddddmbdddedcbdddddc.cddddk.djjddddddddddddddddddddddddddddddddddecddddch.blllllllllllllkdcdddddcdel",
-"amka##lahk.kllllllllllf.dddddddddbh.jiddmgddddj#l#mdddh.d..ddddddddddddddddddddddddddddddddddcembddddddekgllllllllllhddiedddddcl",
-"nddjkda.dddbllllllllljdddcddmiddddmjddddd.dddmllllljddm.de.ddddddddddddddddddddddddddddddddd.gmehdddddddddefllllllllhddfkdddddcl",
-"nddedddcdddhllgnfnj.edddddenfhdcdddddddddddddalllllgddddddeddddddddddddddddddddddddddddddiabmcddcdddddddddddcma#llllkdddddddddel",
-"fdddcdddddddccddddddcdddd.fmckdddddddddddddddflllllledddddddddddddddddddddddddddddcddddd.#mddddddddddddcdddddddddmhkedddddddddel",
-"nddddddddddddddddddcccddddddeadddddddddddddddhlllllleddddddddddmddddddddddddddddddhdddddbcdddddddddedkllbdddddddddddddddbfglllll",
-"ndddddddddddcdddddddddddddcbngcddddddddddddddc#lllladddddddddddbdddddddddddddddmddimddddaddekdddjddkiacenmddd.iddddddddda#eeecml",
-"nddddddddddddddddddcmdddddcmdkmdddddddddddddedilllg.ddddddddddcgdddddddddddddddndd.l.dddeddj.ddddddhlcddddd.nf.dddddddddckbcddel",
-"fdddddemddddddddddddddddddddddadddddddddddcnlmdeecddddddddddddel.ddddddddddcddc#ddcl#edddddddddddddd.jddddd#mdddddddddddddigdd.l",
-"ndddddddddddddddddddddhcddddddmcdddddddddd.llkddddddddddddddddelidddddddddddddc#.efamddddddddddddddddddddddddddcmdddddddcddbidel",
-"fddi.ddddddddddddddddegmdddcmacdddddddddddcfl.ddddddddddddddddmlbddddddddddddddgffiddddddddddddddddddddddddddddjkdddddddbmdjgdel",
-"ledddddddcdddddddddddjcdddc##ddddddddddddcddddddddddddddddddddjladdddddddddddddhncdddddddddddddddddjjddacddddddceddddddddddmgdel",
-"lkddddmddddddddddcdddddchfl#.dddddddddddkgddddddddddddddddddddilfdddddddddddddddddddddddddddmjdddddcffalcddddddddmhjdddjdddmnd.l",
-"#dddddhdddddddjdefedcei#lllhdddddddddddd.mddddddcdddddddddddddhlgdddddeaddddddddddddddddddddbiddddddc#llgiecdddddeibeddnmddn.del",
-"ljddddddddddcilmnlf#lllllll#.dddddddddddddddddddnjddddddddddddkl#dddddcledddddddddddddddddddnnddddddddglllllficcdddddddd#inbddcl",
-"laddcmdddddhlllllllllllllkc.aeddddddddcddddddddde#bdddddddddddkl#dddddclmddddddddddddddddddda#ddddddddmlllllllll#fnkmddd.bjddd.l",
-"gdddkddddddklllllllllllljdddeiddddddddc.dddddddddmlkdddddddde.nlleddddclmdddchhdddddddddddddhlidddddddd.#llllllllllladdddcebnd.l",
-"fdddjddddddklllllllllll.dddddddddddddddicdddddddddnlfddddci#llllllgkcdml.dd.##cdddddddddddddelleddddddddclllllllllllnddde#lllccl",
-"gdddjidddddblllllllll#jddddddddddddddde.ddddddddddc#lg.ca#lllllllllllnffdca##edddddddddddicddabdddddddddd.#llllllllladddddehmdel",
-"#dcddhcddddallllllll#.ddddddddddddddddbddddddddddddjllfflllllllllllllllgmflljcddddddddddel.dddddddddddddddelllllllllbdci.cieddcl",
-"#dddddaddddhlllllll#dddddddddddddddddmddddddddddddddhllllllllllllllllllllllhdddddddddddd.icdddddddddddddddde#llllllladddddddddd#",
-"#hkkecfkdddkllllll#.dddddddddddddddddbddddedddddddddelllllllllllllllllllllkcddddieddddddddddddddddddddcddddde#lllllladdddddddddg",
-"#.eecddddddallllll.ddddddddddddddddddedcddmdddddddddhllllllllllllllllllll#cddddc#iddddddddddddddddddddhmddddif#lllllfcddddecddd#",
-"nddddddddddnlllllmcdcdddddddddddddddddddddcddddddddclllllllllllllllllllllladdddddd.edddddd..dddddddddedc.ddkhdcglllllfdddcl#hdd#",
-"ndddddddcddflll##fdddddddddddddddddddddddddddddddddblllllllllllllllllllllllmddddddbcddddddcdddddddddddddeiihdddegllllbddddamcddl",
-"gddddddddddfll#e.ndddddddddddddddddddddddddddddddddgllllllllllllllllllllllladddddddddddddddddddddddddddddigdddddelllkddddc.addc#",
-"#cdddddddddflndcddddddddddddddddddddddddddddddddddd#lllllllllllllllllllllll#cdddddddddddddddddddddddddnddacdddddde#lbdcdilgldddg",
-"lcdaedeicddfbcdddddddddddddddddddddddddddddddddcejbllllllllllllllllllllllllledddddddddddddddddddddddddnddidddddddd.#hcndn..edddl",
-"#ddedddedddmdddddddddddddddddddddddddddddde.iaf#llllllllllllllllllllllllllllkecccdddddddddddddddddddddkddddddddddddeec.cmdddddbl",
-"#cdd.dddddddddddddddddddddddddddddddddddcklllllllllllllllllllllllllllllllllllllllgniedddddddddddddddddddddddddddddddddddddmacdml",
-"#cddcdmmdddajddddddddddddddddddcddddddddddccc.mihkblllllllllllllllllllllllllll#g#akmcddddddddddddddddddddddddddddddddddijdelmdel",
-"lmdddddkdddnlmddddddddddddddddhiddddddddddddddddddd#llllllllllllllllllllllllkedddddddddddddddddddddddddddddddddddddheddnfddnedel",
-"nddddddceddnlljddddddddcddddddgiddddddddddddddddddd#llllllllllllllllllllllllcdedddddddddddddcdddddddddddddddddddddhledddn.diedel",
-"bddddddddddflll.ddddddccdddddd#ndddddddddddddddddddnlllllllllllllllllllllllfdddddddddddddddeleddcddddddddddddddddkllbcddceddddcl",
-"kdddddddddc#lll#edddddidddddddll.ddddddddddddddddddilllllllllllllllllllllllidddddddddddddddc.dddhbjdddddddddddddjllllkddddddddcl",
-"hddddddddddgllll#cdddaiddddddd#l#cddddddddddddddddddbllllllllllllllllllllllcdddddddddddddddddddddcbddddddddddddkllllnddddddddddg",
-"hddddcde.dc#lllll#.dibddddddddhlleddddddddceddddddddc#llllllllllllllllllllmddddddddddddddddddddddcedddddddddehblllllhdeacdddced#",
-"hddddcd.hdc#llllll#aledddddddddagcddddddcb#l#bcddddddmllllllllllllllllllladdddddddddddddddddddddd.cddddddddddglllllljdmlhdddc.dl",
-"hdddcdddddclllllllllmddddddddddddddddddddccenlfdddddclllllllllllllllllllliddddddddddddddddddddddehddddddddddillllllljddccddddmd#",
-"bdddi.ddddd#llllllllgcdddddddddddddddddddddddb#dddddjllglllllllllllllllll#ddddddddddcdddddddeddcedcedddddddkllllllllidddddddcidg",
-"hddddccdddd#lllllllllncddddddddddddddddddddddc#dddde#lnccallllllllllllafllkdddddddddmdddddddeddddddecdddddmlllllllllbdddddccmkd#",
-"iddddeedddd#llllllllll#cddddddddddddddddddddddaddddflnddddbf#lllllllhcddbllmddddddddddddddddmdddddddjdddchllllllllllidddddj#lid#",
-"idddd.fmeiallllllllllll#edcdddddddddddddddddddcdddhladddd.gddelll..cddddcklfdddddddddddddddddddddddddmdcglllllllllllcdddcdddmjd#",
-"iddddccdddclllllllllllllfcdddddddddddddddddddddddelbdddddbndddglgdddddddddhlhddddddddddddddddddddddddkimlllllllllllleddddddd.icl",
-"iddddmddddd#lllllllllllllgddddddddddd.dddddddddddbhdddddd#jdddalfdddddddddd.fddddddddcddddddddddddddddglllllllllllll.dddmddd.id#",
-"jddd.cdddddchaa#llllllllllfeddccddddd.fjcdddddddmkddddddifcdddklbdddddddddddcmdddddd.cdddddddddddddddallllllllllllll.dddkdddc.d#",
-"mdddddddddddddddc.ag#llllllljcncddddddcgfieeedddddddcjm.#kddddklidddddddddddddddddddcdddddddddddddddhlllllllllllllll.e..ndddddcl",
-"iddddcdddddddddddddddeifllllll.ddddddddddmb#gcddddddekgllleddd.l.ddddddddddddddddddddddecddddddddddnllllllllllnhjmc.#lll#dddddd#",
-".dddddcd.cdddcfcddddddddciflll.ddddddddddddddddddddddddbl#kddde#cddddddddddddddddddddddbeddddddd..fllllll#ajedddddddceceeddddcml",
-".dddmdde#eddddcjddddddddddd.nlkdddddddddddddddddddddccc#bcidddc#cddddddddddddddddddddddiddddddddnlllll#amcddddddddddddddddddefg#",
-"jdddccdddddddddddddddddddddddcgndddddddddddddddddddmgmll.ddddddaddddddddddddddddddddddneddddddddalllacdddddddd.njdddddddcmdddddf",
-"bimm.ecddddddcddddddddddddddcddmcdddddddddcddddddddmbdcb#cdddddcdddddmaddddddddddddddc.ddddddddi#fjedddecdddefhedddddddddedi.ddn",
-"fll#llkddddddddddddddddddddcfddddddddddddjfcdddddddejdddkjdddddddddddalicdddddddddddejdddddddddf.dddddhiddddm#ccddddd.iddcdddddb",
-"jjkcddddddddddddddddddddddd.adddddddddddbljddddddddddddddddddddddddddnllidddddddddddeddddddddddddddddddddddddl#jddddd.idjfddddda",
-"icncddddddddddddddddddddhedccddddddddddd.ncddddddddddddddddddddddddddd.hcddddddddddddddddddddddddddidddddddddmedddddd.kdddddccda",
-"hddjddddddddddddddddddddniddddddddb.ddddddddddciddddddddddddddddddddddddddddddddddcdddddddddddddddmbddddddjcdcddddddddcddddcacdf",
-"kddcddddddd.m.dddddddddddcdddddddd.lmdddddddddkfdddddddddddddddddddddddddddddddddddddddddddddddddddddddddil.daedddddddddckg#cddg",
-"hddddddmhkflll#gnbjedddddddddddddmd..dddddddddkkddddddddddddddddddddddddddddddddddddddddddddddddddddddddmgacdcdb.mjjcddde#nedddg",
-"bddddddddd.lllllllllbeddddd.dddddjddddddddddddkmdddddddcdddddddddddddddddddddddddddddddddddddjmiddddddddecddcjallllledddddcdddda",
-"hdddddadddelllllllllll#hcddcddddddddddddddddddi.ddddddel.ddddddddddddddddddddddddddddddddddddcckhddddddddck#lllllllleddddddddddb",
-"hddmingdddelllllllllllll#hidddh.deddddddddddddemdddddddjddddddddddddddddddddddddddddddddddddddddbddmddcjnllllllllllleddddddddddn",
-"kdddddkdddelllllllllllllllndddenemddddddddddddddddddddddddddddddddddddddddcdddddddddddddddddddddkddddefllllllllllllleddddddddddg",
-"hdddddddddcllllllllllllllllkddddddddddddddemddddddddddddddddddddddddddddddcfjdddddddddddddddcddiiddcalllllllllllllllcdddddce.ddf",
-"bdddddddddclllllllllllllllllnddddddddcm.ddcg.dddddddddddddddddciddddddddddflnddddddddddddddddddhad.glllllllllllllllleda#kbf.dddf",
-"ndddddddd.illlllllllllllllllladddddddj#mdddhledddddddddddcdddegmddddddddddn#hddddd.mddddddddddddab#lllllllllllllllllcdegdckdccdg",
-"gdddcdaddiklllllllllllllllllllkdddddcachdddclledddccdddddaddb#eddddddddddddcdddddh#cddddddddddddmllllllllllllllllllliddamdicdidg",
-"#mddddbdddmlllllllllllllllllllljdddd.edncdddmlfdddhjdddddgngn.ddddddddddddcdddddjlhddddddddcdddcflllllllllllllllllllgcdchdccdcdf",
-"#eddddhcdd.llllllllllllllllllll#.ddddddnkddddglfcdgadddddgacdddddddddddddelhdddml#ddddddmcdddddfllllllllllllllllllllljddeddddddf",
-"fddddddcddellllllllllllllllllllllmdcdddjlcdddhllgklbdddddbcddddddddddddddj#cddilliddddddciddddjllllllllllllllllllllllfddddddcddn",
-"fdddmihcdd.llllllllllllllllllllllfcdddddiddddelllllmdddddhmdddddeddddddddccddm#lledddddddddddmllllllllllllllllllllllmcdddddddddn",
-"gdddkaniddelllllllllllllllllllllllhddddddcddddallllcdddddmndddcaidddddddddddelllfddddddddddddfllllllllllllllllllllllcdddcdehddda",
-"fdddbcddddmlllllllllllllllllllllllgdddddddcbdd.llllfddddddfdd.lmddddddddccdmlllljdddddddddddhlllllllllllllllllllllllcddddddaddda",
-"nddcadddddjlllllllllllllllllllllllliddddddekddclllllndddddmhdcmddddddcddddm#llllcddddddddddcllllllllllllllllllllllllcdddaedidddn",
-"nddd.mdddklllllllllllllllllllllllll#cddddddddddflllllncddddgedddddddmmddd.lllllfdddddjcddddhllllllllllllllllllllllllcdddeddddddn",
-"fddddmdddelllllllllllllllllllllllllljdddddccdddhllllllndcdddacddddddn.ddhllllllfdddddeddddclllllllllllllllllllllllllcdddddddddda",
-"gddddcddddfllllllllllllllllllllllllladddddfbdddcllllllladddd.ncdjddd#idilllllllkddddddddddillllllllllllllllllllllllleddddddddddn",
-"gdddddddddhlllllllllllllllllllllllll#cddddmgdddd#llllllladdddjlj#dddjlfllllllllnccddddddddnlllllllllllllllllllllllllcdddddddddda",
-"fdddddddddmllllllllllllllllllllllllll.ddeddbjccdflllllllladdddm#gddddglllllllllmcddddddddclllllllllllllllllllllllllleddheddddddn",
-"fdddicccdc.llllllllllllllllllllllllllhddddde#eddnlllllllllhddddemddcflllllllllbddddddddddellllllllllllllllllllllllllcddkghedddda",
-"fdddajdeddclllllllllllllllllllllllllladcddcdmbddblllllllllledddddddflllllllllliddddddddddjlllllllllllllllllllllllllledddcjeddddn",
-"adddanddddellllllllllllllllllllllllllfdeedekgfedilllllllllll.dddddfllllllllllljdddddddddd#lllllllllllllllllllllllllledddddddddda",
-"bdcdj.ddddcllllllllllllllllllllllllllfddddddcdddmlllllllllllgeddcallllllllllllmddddddddddkllllllllllllllllllllllllll.ddddddddddf",
-"kdddddddddcllllllllllllllllllllllllllfdddddddddd.llllllllllllgddkllllllllllllleddddddddddalllllllllllllllllllllllllleddddddddddf",
-"gihedddddmccejmmjihbannbaakbkbnffggffidd.cddddddmlnnffffnbknab.cbffg##l###lll#cddddddddddm#llll#fnngllllijhkbkhjm.ecdijddddd.bbl",
-"llgedddddnhdddddddddddddddddddddddddddddm.ddddddemdddddddddddddddddddccdccccecdddddddddddddc.lgeddddddciddddddddddddd#bdddddenll",
-"l#cdddddddjddddcccddddcdddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddneddddddddncddddddddddddhddddddddnl",
-"lhddddddddddd.lnmcddddddddd.#cddddddddddddcddjadddddddddddddddddddddddddddddddd..ddddddddddddddddcdddbngddddacceedddddddddddddml",
-"lcddddddddddd.l.dddddddj.dd.#ddddddddddddddd.fikijddddjiddddddddddddddddddddddcfjddddddddddddddddcdddemfddmdikddddddddddddddddd#",
-"lddddddddddddcleddddddclaccj#dddddddddcddddcledddaddddddfjdddddkedddddd.cdddddd.idddddddcddddddddddddd.ndd.kdiedddddddddddddddc#",
-"leddddddddddddjmddcdddelgbbbhddddddmaniddddbnaeddjdddddddcddddeladddddcndddcddjljdddddmnadddddefgeddddendddkicadceedddddddddddel",
-"liddddddddddddd.ddcbacckddddddddddei.dddddddc#jdcjdcdddddddcdd.l#cdddeee.ddcddh#hdddddeeiddcddddddddddcinmdc.dn.h#.ddcddddddddhl",
-"l#ddddddddmdddddddddcdddddddddddiddddddddddefbddddddddddchghddc#lbddddifndddddddcdddddddidddjjddddddddddddddddab.hcddadddddddd#l",
-"ll#.dddddffddddddddddddddddddjdcl.ddddddddddcddddddddddddccdddddccdddddcabddddddddddddddhddddcddddccdddddddcdddddcdddg#.ddddegll",
-"llllfkik#l#.cddddddddceccjkem#..fg.ceeccccddccdccccddddddcceeee..m.ecccem#eecceeccccdddcbccccccdcdaicceeccccccccedddd#llgaafllll",
-"lllllllllllllgfg#gllllll#lllllllllllllll#l##l###lllgfgf##llllllllllllllllllllllllllll##ll#llll####lllllllllllllllabnalllllllllll"
-};
diff --git a/hacks/images/mac.xbm b/hacks/images/mac.xbm
deleted file mode 100644 (file)
index b4fe876..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#define mac_width 19
-#define mac_height 25
-static unsigned char mac_bits[] = {
-   0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x06, 0x00, 0x03, 0xfa, 0xff, 0x02,
-   0xaa, 0xaf, 0x02, 0xda, 0xdf, 0x02, 0xaa, 0xaf, 0x02, 0xfa, 0xf8, 0x02,
-   0xfa, 0xff, 0x02, 0x7a, 0xf0, 0x02, 0xba, 0xef, 0x02, 0xda, 0xdf, 0x02,
-   0xfa, 0xff, 0x02, 0x06, 0x00, 0x03, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03,
-   0xfe, 0xff, 0x03, 0xf2, 0x07, 0x02, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03,
-   0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, 0xfc, 0xff, 0x01, 0xfc, 0xff, 0x01,
-   0x00, 0x00, 0x00};
diff --git a/hacks/images/matrix.xbm b/hacks/images/matrix.xbm
deleted file mode 100644 (file)
index 9d29751..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-#define matrix_width 56
-#define matrix_height 837
-static char matrix_bits[] = {
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xf7,0xff,0xff,0x7b,0xff,
- 0xff,0xaf,0xc8,0xff,0xff,0x4d,0xfd,0xff,0x0f,0x22,0xff,0x7f,0x75,0xfb,0xff,
- 0x17,0x89,0xff,0xff,0xda,0xf5,0xff,0x47,0x25,0xfe,0xff,0xfd,0xfb,0xff,0x0b,
- 0x1f,0xff,0x7f,0xfa,0xf2,0xff,0x85,0x17,0xfe,0xbf,0xfd,0xf5,0xff,0x45,0x9d,
- 0xfe,0x7f,0xf5,0xf7,0xff,0x52,0x17,0xfd,0xaf,0xfd,0xe9,0xff,0x81,0x1f,0xfe,
- 0xbf,0xfe,0xf7,0xff,0x4a,0x2d,0xfa,0xbf,0xfa,0xe9,0xff,0xa1,0x1f,0xfd,0xbf,
- 0xfd,0xf7,0xff,0x92,0x2e,0xfc,0xdf,0xda,0xe9,0xff,0x85,0x9b,0xfe,0x7f,0xfd,
- 0xf7,0xff,0x52,0x0f,0xfe,0xdf,0xfa,0xf2,0xff,0x85,0x3d,0xfe,0xff,0xfa,0xfb,
- 0xff,0x47,0x8f,0xfe,0x7f,0xf9,0xea,0xff,0x0b,0x15,0xfe,0xff,0xdd,0xf5,0xff,
- 0x87,0x0b,0xff,0x7f,0x75,0xfb,0xff,0x17,0xad,0xfe,0xff,0xff,0xfe,0xff,0x5f,
- 0xa1,0xff,0xff,0x4b,0xff,0xff,0x5f,0xd4,0xff,0xff,0xff,0xff,0xff,0x77,0xeb,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,
- 0xff,0xff,0xf4,0xff,0xff,0x57,0xff,0xff,0x3f,0x90,0xff,0xff,0x4b,0xfd,0xff,
- 0x7f,0x48,0xff,0xff,0xa7,0xff,0xff,0x7f,0xe8,0xff,0xff,0xcf,0xff,0xff,0x3f,
- 0xe8,0xff,0xff,0xa7,0xff,0xff,0x7f,0xf8,0xff,0xff,0xcb,0xff,0xff,0x3f,0xfc,
- 0xff,0xff,0xcf,0xff,0xff,0x7f,0xf8,0xff,0xff,0xc7,0xff,0xff,0x3f,0xfa,0xff,
- 0xff,0xeb,0xff,0xff,0x7f,0xf8,0xff,0xff,0xa7,0xff,0xff,0x3f,0xfc,0xff,0xff,
- 0xcf,0xff,0xff,0x7f,0xf8,0xff,0xff,0xe7,0xff,0xff,0x3f,0xfa,0xff,0xff,0xcb,
- 0xff,0xff,0x7f,0xf8,0xff,0xff,0xcf,0xff,0xff,0x3f,0xfc,0xff,0xff,0xc7,0xff,
- 0xff,0x7f,0xf8,0xff,0xff,0xd7,0xff,0xff,0x3f,0xfc,0xff,0xff,0xcb,0xff,0xff,
- 0x7f,0xf8,0xff,0xff,0xcf,0xff,0xff,0x3f,0xf8,0xff,0xff,0xe7,0xff,0xff,0x5f,
- 0xfa,0xff,0xff,0xad,0xff,0xff,0x3f,0xe8,0xff,0xff,0xd7,0xff,0xff,0x57,0xf5,
- 0xff,0xff,0xff,0xff,0xff,0xbf,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xfb,0xff,0xff,0xed,0xff,0xff,0x4f,0xad,0xff,0xff,0xb5,0xfa,0xff,
- 0x0f,0x12,0xff,0x7f,0x79,0xfb,0xff,0x07,0x09,0xff,0xff,0xea,0xf5,0xff,0x97,
- 0x2a,0xff,0x7f,0xfd,0xff,0xff,0x87,0x5e,0xff,0xff,0xf4,0xf5,0xff,0x4b,0x2b,
- 0xff,0xff,0xfa,0xff,0xff,0x05,0xbf,0xff,0xff,0xfa,0xff,0xff,0x8b,0xfd,0xff,
- 0xff,0xfa,0xff,0xff,0x47,0xf7,0xff,0xff,0xda,0xff,0xff,0x8f,0xfe,0xff,0xff,
- 0xf5,0xff,0xff,0x27,0xfa,0xff,0xff,0xdb,0xff,0xff,0x1f,0xfd,0xff,0xff,0xee,
- 0xff,0xff,0xaf,0xea,0xff,0xff,0x57,0xff,0xff,0x5f,0xf4,0xff,0xff,0xef,0xff,
- 0xff,0x77,0xd1,0xff,0xff,0xbb,0xfe,0xff,0xaf,0xd4,0xff,0xbf,0x5f,0xfd,0xff,
- 0xbb,0x42,0xff,0xff,0x75,0xfb,0xff,0x4f,0x29,0xff,0x7f,0xdf,0xfa,0xff,0x25,
- 0x05,0xff,0xff,0x55,0xfb,0xff,0x97,0x40,0xff,0x7f,0xab,0xfa,0xff,0x2f,0x12,
- 0xff,0xff,0x75,0xfd,0xff,0x8b,0x44,0xff,0xff,0xdf,0xff,0xff,0x7f,0xb5,0xff,
- 0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf5,0xff,0xff,0x55,0xff,0xff,
- 0x8f,0xd2,0xff,0xff,0x7a,0xfd,0xff,0x17,0x44,0xff,0x7f,0x55,0xff,0xff,0x07,
- 0xa3,0xff,0xff,0xf9,0xfb,0xff,0x4f,0xa9,0xff,0xff,0xfc,0xfe,0xff,0x05,0x57,
- 0xff,0xff,0xda,0xff,0xff,0x8b,0xad,0xff,0x7f,0xf5,0xff,0xff,0x47,0xfa,0xff,
- 0xff,0xba,0xff,0xff,0x0f,0xfd,0xff,0xff,0xea,0xff,0xff,0x0f,0xf5,0xff,0xff,
- 0xd5,0xff,0xff,0x47,0xfc,0xff,0x7f,0xf5,0xff,0xff,0x17,0xf5,0xff,0xff,0xaa,
- 0xff,0xff,0x05,0xfa,0xff,0xbf,0xfd,0xff,0xff,0x4b,0xfd,0xff,0xff,0xf6,0xff,
- 0xff,0x25,0xfb,0xff,0x5f,0xfd,0xff,0xff,0x91,0xff,0xff,0xbf,0xfb,0xff,0xff,
- 0xc5,0xb6,0xff,0x7f,0xdd,0xfb,0xff,0x15,0x5b,0xff,0xff,0xfd,0xfa,0xff,0xc7,
- 0x0d,0xff,0xff,0x76,0xfb,0xff,0x95,0x26,0xff,0xff,0xdd,0xff,0xff,0x5f,0x91,
- 0xff,0xff,0x77,0xfd,0xff,0xaf,0xd4,0xff,0xff,0xdf,0xff,0xff,0x5f,0xd5,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x5f,0xfd,0xff,0xff,0xd7,0xff,0xff,0x7f,0xfc,0xff,0xff,0xe5,0xff,0xff,0x17,
- 0xf8,0xff,0xff,0xab,0xff,0xff,0xaf,0xf4,0xff,0xff,0xd7,0xff,0xff,0x2f,0xe8,
- 0xff,0xff,0x55,0xff,0xff,0x9f,0xe4,0xff,0x7f,0xaf,0xfe,0xff,0x57,0xd0,0xff,
- 0xff,0x55,0xff,0xff,0x2f,0xa2,0xff,0xff,0xaf,0xfa,0xff,0x5f,0x11,0xff,0xff,
- 0x6a,0xfb,0xff,0x2f,0x44,0xff,0xff,0xad,0xf5,0xff,0x97,0x22,0xfe,0xff,0xd6,
- 0xfa,0xff,0x2b,0x14,0xfd,0xff,0x55,0xeb,0xff,0x8f,0x48,0xfe,0xff,0x6a,0xf5,
- 0xff,0x05,0x02,0xfa,0x7f,0x91,0xed,0xff,0x17,0x50,0xfd,0xff,0x4a,0xf5,0xff,
- 0x03,0x08,0xfd,0x7f,0xeb,0xff,0xff,0x4d,0xd2,0xfe,0xff,0xb5,0xfe,0xff,0x2f,
- 0xfa,0xff,0xff,0xef,0xff,0xff,0x57,0xed,0xff,0xff,0xfb,0xff,0xff,0xaf,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0x5f,0xff,0xff,0xff,0xef,0xff,0xff,0x7f,0xfd,0xff,
- 0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xaf,0xf6,0xff,0xff,0x55,0xff,0xff,0x5f,0xc1,0xff,0xff,0x5f,0xfd,0xff,0x97,
- 0xa8,0xff,0xff,0xaa,0xfe,0xff,0x17,0x81,0xff,0xff,0x5f,0xfd,0xff,0x6f,0x62,
- 0xff,0xff,0xf7,0xfe,0xff,0xbf,0x95,0xff,0xff,0x5f,0xfb,0xff,0xdf,0xa2,0xff,
- 0xff,0xfe,0xfe,0xff,0xbf,0x4a,0xff,0xff,0x2b,0xfd,0xff,0xaf,0xa0,0xff,0xff,
- 0xab,0xfe,0xff,0x17,0x80,0xff,0x7f,0x55,0xfb,0xff,0x4f,0xd5,0xff,0xff,0xfa,
- 0xff,0xff,0x05,0xd2,0xff,0xff,0x6d,0xff,0xff,0x4b,0xf5,0xff,0x5f,0xf9,0xff,
- 0xff,0x85,0xfe,0xff,0x7f,0xfd,0xff,0xff,0x13,0xf7,0xff,0xdf,0xf6,0xff,0xff,
- 0xc5,0xfd,0xff,0xbf,0xfd,0xff,0xff,0x51,0xff,0xff,0xff,0xbe,0xff,0xff,0x8f,
- 0xa5,0xff,0xff,0xf5,0xfa,0xff,0x4b,0x2b,0xff,0xff,0xfe,0xff,0xff,0x97,0x95,
- 0xff,0xff,0xb7,0xfa,0xff,0xaf,0x4a,0xff,0xff,0xdf,0xff,0xff,0x5f,0xe5,0xff,
- 0xff,0x7b,0xff,0xff,0x7f,0xd2,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xfe,0xff,0xff,0xeb,0xff,0xff,
- 0x3f,0xfd,0xff,0xff,0xff,0xff,0xff,0xaf,0xfa,0xff,0xff,0xad,0xff,0xff,0x7f,
- 0xe9,0xff,0xff,0xff,0xfe,0xff,0xbf,0xd2,0xff,0xff,0x2f,0xff,0xff,0xff,0xc2,
- 0xff,0xff,0xff,0xfa,0xff,0x7f,0x2b,0xff,0xff,0xbf,0xfb,0xff,0xff,0x15,0xff,
- 0xff,0xff,0xf5,0xff,0x7f,0x8b,0xfe,0xff,0x5b,0xf5,0xff,0x4f,0x11,0xfe,0x7f,
- 0x6d,0xf1,0xff,0x97,0x04,0xff,0xff,0xa9,0xf4,0xff,0x0f,0x01,0xfe,0x7f,0xdd,
- 0xf2,0xff,0x45,0x14,0xfe,0xff,0xf5,0xf5,0xff,0x0b,0x8b,0xfe,0xbf,0xfe,0xf5,
- 0xff,0xc2,0x1d,0xff,0xdf,0xba,0xf7,0xff,0x2b,0x17,0xfe,0x7f,0xfd,0xf2,0xff,
- 0x81,0x9d,0xfe,0xbf,0xff,0xfb,0xff,0x55,0x17,0xfe,0xff,0xfa,0xf5,0xff,0xa5,
- 0x1b,0xff,0x7f,0xfb,0xf5,0xff,0x4b,0x8d,0xfe,0xff,0xbd,0xfa,0xff,0x0f,0x27,
- 0xff,0x7f,0xf5,0xf7,0xff,0xcb,0x92,0xfe,0xff,0x7f,0xfd,0xff,0xaf,0xaa,0xff,
- 0xff,0xd7,0xff,0xff,0x5f,0xd5,0xff,0xff,0x7f,0xff,0xff,0x7f,0xf5,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x5f,0xf5,0xff,0xff,0xdb,0xff,0xff,0xef,0x96,0xff,0xff,0x7e,0xfd,0xff,0x1f,
- 0x55,0xff,0xff,0xa9,0xf7,0xff,0x87,0x90,0xfe,0xff,0x74,0xf9,0xff,0x0f,0x0a,
- 0xfd,0xff,0xd2,0xee,0xff,0x07,0x49,0xfe,0xff,0xfa,0xfb,0xff,0x17,0x55,0xff,
- 0xff,0xad,0xff,0xff,0x4f,0xfa,0xff,0xff,0xfb,0xff,0xff,0x17,0xbd,0xff,0xff,
- 0xee,0xff,0xff,0xaf,0xfa,0xff,0xff,0xd7,0xff,0xff,0x5f,0xfa,0xff,0xff,0xef,
- 0xff,0xff,0x7f,0xfa,0xff,0xff,0xb7,0xff,0xff,0xbf,0xf8,0xff,0xff,0xef,0xff,
- 0xff,0x7f,0xed,0xff,0xff,0xbf,0xff,0xff,0xbf,0xf4,0xff,0xff,0xef,0xff,0xff,
- 0xff,0xea,0xff,0xff,0xbf,0xfe,0xff,0xff,0xe5,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xe7,0xff,0xff,0x7f,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xfd,0xff,0xff,0xa5,
- 0xff,0xff,0xbf,0xfe,0xff,0xff,0xa7,0xff,0xff,0xff,0xfb,0xff,0xff,0x57,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x2f,0xff,0xff,0xff,0xfb,0xff,0xff,0xbf,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x5f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0x6f,0xff,0xff,0xbf,0xd4,
- 0xff,0xff,0xfb,0xff,0xff,0xaf,0x56,0xff,0xff,0xb6,0xfa,0xff,0x5f,0x29,0xff,
- 0xff,0xfb,0xf5,0xff,0x87,0x8e,0xfe,0x7f,0xd9,0xf5,0xff,0x8f,0x12,0xfe,0xff,
- 0xfd,0xf5,0xff,0x0f,0x1b,0xff,0xff,0x74,0xf3,0xff,0x07,0x15,0xfe,0xff,0xda,
- 0xfa,0xff,0x97,0x8a,0xfe,0xff,0x6b,0xf5,0xff,0x0f,0x01,0xfe,0xff,0x15,0xf2,
- 0xff,0x5f,0x20,0xff,0xff,0x56,0xf9,0xff,0x17,0x04,0xfe,0xff,0xab,0xea,0xff,
- 0x4f,0x10,0xfd,0x7f,0xa5,0xf5,0xff,0x17,0x82,0xfe,0xff,0xda,0xf5,0xff,0x4f,
- 0x28,0xfe,0xff,0xe9,0xf6,0xff,0x0f,0x16,0xfd,0xff,0xfd,0xeb,0xff,0x87,0x55,
- 0xfd,0xff,0xb4,0xff,0xff,0x97,0x2e,0xfa,0xff,0xfb,0xea,0xff,0x0f,0x9b,0xfe,
- 0x7f,0xf9,0xf3,0xff,0x47,0x1d,0xfd,0xff,0xfd,0xeb,0xff,0x97,0x16,0xfe,0xff,
- 0xd7,0xfd,0xff,0x4f,0xab,0xfe,0xff,0x7d,0xf7,0xff,0x7f,0x55,0xff,0xff,0xff,
- 0xff,0xff,0xbf,0xaa,0xff,0xff,0xb7,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,
- 0xff,0xff,0x5f,0xff,0xff,0xbf,0xd6,0xff,0xff,0xf7,0xfd,0xff,0xaf,0x52,0xff,
- 0xff,0xdd,0xf7,0xff,0x5f,0x2d,0xff,0xff,0xf5,0xfa,0xff,0x07,0x15,0xfe,0xff,
- 0xfa,0xeb,0xff,0x97,0xae,0xfe,0xff,0xdd,0xfd,0xff,0x4f,0x1b,0xfa,0xff,0xfa,
- 0xf7,0xff,0x8f,0xae,0xfd,0xff,0xfd,0xdb,0xff,0x47,0x5b,0xfc,0xff,0xf4,0xf6,
- 0xff,0x0f,0x2f,0xfb,0xff,0xda,0xf7,0xff,0x8f,0x9a,0xfc,0xff,0xfa,0xea,0xff,
- 0x87,0x2a,0xfe,0xff,0x55,0xfb,0xff,0x17,0x04,0xfd,0xff,0x50,0xe9,0xff,0x0f,
- 0x81,0xfe,0xff,0xad,0xfa,0xff,0x07,0x14,0xff,0xff,0xd6,0xff,0xff,0x5f,0x50,
- 0xff,0xff,0xeb,0xff,0xff,0x97,0xfc,0xff,0xff,0x57,0xff,0xff,0x3f,0xea,0xff,
- 0xff,0xef,0xff,0xff,0xbf,0xe8,0xff,0xff,0xaf,0xfe,0xff,0x7f,0xe4,0xff,0xff,
- 0x77,0xff,0xff,0xff,0xd2,0xff,0xff,0xbf,0xff,0xff,0x7f,0xd5,0xff,0xff,0xff,
- 0xfd,0xff,0xff,0x57,0xff,0xff,0x7f,0xff,0xff,0xff,0xab,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0x7f,0xff,0xff,0xff,0xe2,0xff,0xff,
- 0x5f,0xff,0xff,0xff,0xe5,0xff,0xff,0xbf,0xfe,0xff,0xff,0xd3,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xe1,0xff,0xff,0xbf,0xfe,0xff,0xff,0xc7,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xe1,0xff,0xff,0xbf,0xfd,0xff,0xff,0x97,0xff,0xff,0xff,0xfe,0xff,
- 0xff,0x53,0xff,0xff,0xff,0xfb,0xff,0x7f,0xab,0xff,0xff,0x7f,0xff,0xff,0xdf,
- 0x16,0xff,0xff,0xed,0xf5,0xff,0x5f,0xad,0xfe,0xff,0xff,0xfb,0xff,0xa7,0x3f,
- 0xff,0xff,0xfa,0xfb,0xff,0x5b,0x8d,0xfe,0x7f,0xff,0xf7,0xff,0xa5,0x3f,0xff,
- 0xbf,0xed,0xfa,0xff,0x92,0x8a,0xfc,0xaf,0xbe,0xa5,0xff,0xc9,0x0a,0xe2,0xbf,
- 0xd6,0x52,0xff,0x20,0x02,0xd0,0x9f,0xbd,0xaa,0xff,0xa1,0x55,0xe8,0xff,0xff,
- 0xff,0xfe,0xf5,0x56,0xf7,0xbf,0xff,0xff,0xff,0xf5,0xff,0xfd,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xef,0xff,0xff,0xaf,0xfc,0xff,0xff,
- 0xf5,0xff,0xff,0x2f,0xfd,0xff,0xff,0xdb,0xff,0xff,0x5f,0xfa,0xff,0xff,0xb7,
- 0xff,0xff,0x7f,0xe9,0xff,0xff,0xdf,0xfe,0xff,0xbf,0xe4,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xd2,0xff,0xff,0xdf,0xfd,0xff,0xff,0x4b,0xff,0xff,0x7f,0xf7,0xff,
- 0xff,0x2d,0xff,0xff,0xff,0xfb,0xff,0xff,0x17,0xfe,0xff,0xff,0xf5,0xff,0xff,
- 0x5f,0xff,0xff,0xff,0xf5,0xff,0xff,0x1f,0xfd,0xff,0xff,0xf7,0xff,0xff,0x17,
- 0xfe,0xff,0x7f,0xfb,0xff,0xff,0xad,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0xff,
- 0xff,0xbf,0xfe,0xff,0xff,0xe5,0xff,0xff,0xdf,0xff,0xff,0x7f,0xea,0xff,0xff,
- 0x6b,0xff,0xff,0xbf,0xf4,0xff,0xff,0xef,0xff,0xff,0x7f,0xfa,0xff,0xff,0xef,
- 0xff,0xff,0x2f,0xfc,0xff,0xff,0xfb,0xff,0xff,0x9f,0xff,0xff,0xff,0xfd,0xff,
- 0xff,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xe5,0xff,0xff,0xb7,0xfe,0xff,0x5f,0xa9,0xff,0xff,0x7d,
- 0xff,0xff,0x57,0x45,0xff,0xbf,0xbf,0xfa,0xff,0x55,0x53,0xfd,0xff,0x76,0xed,
- 0xff,0xab,0x83,0xfa,0xbf,0xbf,0xf6,0xff,0xd1,0x51,0xfa,0x6f,0x7f,0xbf,0xff,
- 0x6a,0xc7,0xfa,0xbf,0x7f,0xed,0xff,0xf1,0xa1,0xea,0xbf,0x7f,0xbf,0xff,0xf4,
- 0xd7,0xea,0xdf,0xbe,0xf5,0xfe,0xd2,0x4b,0xd5,0xbf,0xff,0xdf,0x7d,0xf9,0xa5,
- 0xca,0xaf,0xff,0xf5,0xfe,0xe2,0x1f,0xa6,0x7f,0xff,0xbb,0xff,0xb9,0x57,0xd5,
- 0xaf,0xff,0xed,0xfd,0xe0,0x2f,0xca,0x7f,0xfb,0x77,0xff,0xf5,0x9f,0xea,0xbf,
- 0xef,0xdb,0xff,0x97,0x3e,0xe9,0xff,0xfe,0x6f,0xff,0x6d,0xdb,0xf4,0xff,0xfb,
- 0xbf,0xff,0x5f,0x7d,0xf9,0xff,0xef,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x6d,0xfd,0xff,0xdf,0xab,0xff,0xbf,0x55,0xaa,0xff,0xbf,0xd6,
- 0xfa,0xff,0x24,0x50,0xff,0xf7,0xd7,0xff,0x7f,0x5b,0xda,0xff,0xff,0xd7,0xff,
- 0xff,0x57,0xe8,0xff,0xff,0xdb,0xff,0xff,0xbf,0xfc,0xff,0xbf,0xcf,0xff,0xbf,
- 0x5a,0xb4,0xff,0xf7,0x6b,0xff,0xbf,0x5e,0xd8,0xff,0x7b,0xd7,0xfd,0x5f,0x25,
- 0xea,0xfe,0xef,0xcb,0xff,0x3f,0x5d,0xb4,0xff,0xff,0x6f,0xff,0x7f,0x2b,0xd4,
- 0xfe,0xff,0xd5,0xfb,0xff,0xbf,0xe8,0xff,0xdf,0xd7,0xff,0x7f,0x2b,0x7a,0xff,
- 0xff,0xd7,0xff,0xff,0x7f,0xf8,0xff,0xff,0xef,0xff,0xff,0xbf,0xfc,0xff,0xff,
- 0xd7,0xff,0xff,0x7f,0xfa,0xff,0xff,0xef,0xff,0xff,0x7f,0xfc,0xff,0xff,0xd7,
- 0xff,0xff,0x7f,0xfa,0xff,0xff,0xef,0xff,0xff,0x7f,0xfc,0xff,0xff,0xd7,0xff,
- 0xff,0xbf,0xf8,0xff,0xff,0xdf,0xff,0xff,0x7f,0xfa,0xff,0xff,0xe7,0xff,0xff,
- 0x7f,0xf4,0xff,0xff,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xef,
- 0xff,0xff,0x7f,0xfc,0xff,0xff,0xef,0xff,0xff,0x7f,0xfc,0xff,0xff,0xef,0xff,
- 0xff,0x7f,0xfd,0xff,0xff,0xef,0xff,0xff,0x7f,0xfc,0xff,0xff,0xef,0xff,0xff,
- 0x7f,0xfd,0xff,0xff,0xef,0xff,0xff,0x7f,0xfc,0xff,0xff,0xeb,0xff,0xff,0xbf,
- 0xfc,0xff,0xff,0xdf,0xff,0xff,0x7f,0xfc,0xff,0xff,0xef,0xff,0xff,0xbf,0xfc,
- 0xff,0xff,0xef,0xff,0xff,0x7f,0xfc,0xff,0xff,0xd7,0xff,0xff,0x7f,0xfd,0xff,
- 0xff,0xef,0xff,0xff,0x7f,0xfa,0xff,0xff,0xef,0xff,0xff,0x7f,0xfc,0xff,0xff,
- 0xdf,0xff,0xff,0xbf,0xfa,0xff,0xff,0xef,0xff,0xff,0xff,0xf4,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xea,0xff,0xff,0x7f,0xff,0xff,0xff,0xe3,0xff,0xff,0xbf,0xff,
- 0xff,0xff,0xd5,0xff,0xff,0xff,0xfe,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xaf,0xaa,0xfe,0xff,0x55,0xf5,0xff,0x5f,0x95,0xfa,0xff,0xff,0xdf,
- 0xff,0x2f,0x52,0xf9,0x7f,0xd9,0xb6,0xff,0x8f,0xad,0xfa,0xff,0xf6,0xdf,0xff,
- 0x97,0xb6,0xf0,0xff,0xfb,0xab,0xff,0x0f,0x55,0xfa,0xff,0xac,0xde,0xff,0xa7,
- 0x54,0xf1,0xff,0xd7,0xaa,0xff,0x17,0x02,0xf8,0xff,0xb4,0xaa,0xff,0x8d,0x54,
- 0xf2,0x7f,0xab,0xd5,0xff,0x43,0x82,0xe8,0xbf,0xdd,0x6a,0xff,0x29,0x11,0xf4,
- 0xaf,0xb6,0xda,0xff,0x05,0x8a,0xea,0x7f,0x6b,0xeb,0xff,0xaa,0x24,0xfa,0xff,
- 0xbd,0xb1,0xff,0x57,0x09,0xfa,0xff,0xd6,0xed,0xff,0x8f,0x14,0xfd,0xff,0x7b,
- 0xf5,0xff,0x2f,0x25,0xfa,0x7f,0xed,0xdb,0xff,0x8f,0x9a,0xfa,0xff,0xfa,0xff,
- 0xff,0x4f,0xab,0xfa,0xff,0xdd,0xee,0xff,0x17,0xed,0xfe,0xff,0xf7,0xff,0xff,
- 0x4f,0xb5,0xff,0xff,0x5a,0xff,0xff,0xaf,0xea,0xff,0xff,0xef,0xff,0xff,0x3f,
- 0xf4,0xff,0xff,0xb7,0xff,0xff,0x5f,0xe9,0xff,0xff,0xcf,0xff,0xff,0x7f,0xf4,
- 0xff,0xff,0x7f,0xff,0xff,0xbf,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xff,0xfa,0xff,
- 0xff,0x4b,0xff,0xff,0x7f,0xff,0xff,0xff,0xa5,0xff,0xff,0xdf,0xfa,0xff,0xbf,
- 0x25,0xff,0x7f,0x75,0xfb,0xff,0x41,0x95,0xfe,0x5f,0xad,0xf5,0xff,0x01,0x08,
- 0xff,0xbf,0xd5,0xfa,0xff,0x4a,0x25,0xfe,0xff,0x7a,0xf7,0xff,0x15,0x92,0xfe,
- 0xff,0xcf,0xfb,0xff,0x97,0xa8,0xfa,0xff,0xea,0xde,0xff,0x4f,0x56,0xfd,0xff,
- 0xaf,0xf7,0xff,0x3f,0xb8,0xfa,0xff,0xeb,0xdf,0xff,0xff,0xec,0xfa,0xff,0xdf,
- 0xff,0xff,0x3f,0xfa,0xfb,0xff,0xef,0xff,0xff,0x7f,0xe9,0xfd,0xff,0x7f,0xff,
- 0xff,0xff,0xed,0xff,0xff,0xbf,0xff,0xff,0x7f,0xe5,0xff,0xff,0xff,0xfe,0xff,
- 0xff,0xdb,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xff,0xff,0xff,0xfd,0xff,0xff,
- 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0x5b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xe7,0xff,0xff,0xbd,0xff,0xff,0x9f,0xf3,0xff,0xff,0xff,0xfe,0xff,
- 0xaf,0xc5,0xff,0xff,0x5a,0xff,0xff,0x97,0xe2,0xff,0xff,0xbd,0xfe,0xff,0x4f,
- 0xd3,0xff,0xff,0xba,0xfe,0xff,0x0f,0xc5,0xff,0xff,0x7b,0xff,0xff,0xa7,0xd1,
- 0xff,0xff,0x5c,0xfd,0xff,0x8f,0x42,0xff,0xff,0x55,0xfe,0xff,0x8a,0x64,0xff,
- 0x57,0xba,0xfa,0x3f,0x05,0x41,0xfd,0xef,0x29,0xd5,0xbf,0x44,0x80,0xfa,0x7b,
- 0xb5,0xfe,0xbf,0x0a,0x45,0xfd,0xef,0xba,0xfa,0x7f,0x47,0xa1,0xfe,0xff,0x6d,
- 0xff,0xff,0x17,0xa5,0xff,0x7f,0x7d,0xfd,0xff,0x8f,0x53,0xff,0xff,0xbb,0xf7,
- 0xff,0xaf,0x4a,0xff,0xff,0xfd,0xfd,0xff,0x8f,0x55,0xff,0x7f,0x75,0xfb,0xff,
- 0x4f,0x2b,0xff,0xff,0xfd,0xff,0xff,0x97,0x9f,0xfe,0xff,0xff,0xf5,0xff,0x4f,
- 0x5f,0xff,0xff,0xfa,0xfb,0xff,0x97,0x2f,0xfe,0xff,0xfd,0xff,0xff,0xdf,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xaf,0xff,0xfa,0xff,0xff,0xdf,0xff,0xdf,0xff,0xfd,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xfe,0xff,0xff,0xef,0xff,0xff,0x7f,0xfd,0xff,0xff,0xf7,0xff,0xff,
- 0x7f,0xfc,0xff,0xff,0xdf,0xff,0xff,0x7f,0xfa,0xff,0xff,0xe7,0xff,0xff,0xbf,
- 0xf8,0xff,0xff,0xdb,0xff,0xff,0x5b,0xfc,0xff,0x7f,0xa7,0xff,0xff,0x2a,0x48,
- 0xff,0x9f,0xad,0xf5,0xff,0xa1,0x24,0xfe,0xaf,0xc6,0xf6,0xff,0x10,0x10,0xfd,
- 0x5f,0x6b,0xeb,0x7f,0x41,0x4a,0xfd,0x5f,0xd7,0xfd,0xff,0x34,0x28,0xfd,0xbf,
- 0xcf,0xeb,0xff,0xa9,0x2c,0xfd,0x5f,0xe5,0xfe,0xff,0x20,0x94,0xfc,0x2f,0x57,
- 0xeb,0xff,0x51,0x28,0xfe,0xbf,0xa5,0xf5,0xff,0x01,0x80,0xfa,0xdf,0xae,0xeb,
- 0xff,0x6a,0x2a,0xfe,0xbf,0xd7,0xfe,0xff,0x35,0xb8,0xff,0xff,0xef,0xff,0xff,
- 0xbb,0x5c,0xfd,0xff,0xd7,0xff,0xff,0x7f,0xf4,0xff,0xff,0xef,0xff,0xff,0xbf,
- 0xfc,0xff,0xff,0xd7,0xff,0xff,0x7f,0xfa,0xff,0xff,0xef,0xff,0xff,0xbf,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xfd,0xff,0xff,0xef,0xff,0xff,0xff,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xef,0xff,0xff,0x7f,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xfd,0xff,0xff,
- 0x53,0xff,0xff,0xbf,0xfe,0xff,0xff,0x45,0xfd,0xff,0x7f,0xf5,0xff,0xff,0x53,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0x85,0xfe,0xff,0xff,0xf2,0xff,0xff,0x2b,0xff,
- 0xff,0xff,0xfb,0xff,0xff,0x97,0xfe,0xff,0x5f,0xf5,0xff,0xff,0x01,0xfe,0xff,
- 0x7f,0xfd,0xff,0x7f,0x55,0xff,0xff,0x5f,0xf5,0xff,0xff,0x02,0xfd,0xff,0x7f,
- 0xfb,0xff,0xff,0xa5,0xfe,0xff,0x5f,0xed,0xff,0xff,0x43,0xfd,0xff,0x7f,0xfd,
- 0xff,0xff,0x92,0xfe,0xff,0xbf,0xea,0xff,0xff,0x45,0xfa,0xff,0x7f,0xdb,0xff,
- 0xff,0x13,0xfa,0xff,0xff,0xed,0xff,0xff,0x85,0xfa,0xff,0x2f,0xf5,0xff,0x2f,
- 0x25,0xfd,0xbf,0xf5,0xda,0xff,0xb5,0x10,0xfd,0x7f,0x97,0xfd,0xff,0x0a,0x8a,
- 0xfe,0xff,0xfd,0xf7,0xff,0x6b,0x69,0xfd,0xdf,0xef,0xff,0xff,0xaa,0xbe,0xff,
- 0x7f,0xff,0xdf,0xff,0xef,0xff,0xf9,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0xff,0xff,0xef,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xf9,0xff,0xff,0xcf,0xff,0xff,0x7f,0xfc,0xff,0xff,0xeb,0xff,0xff,0x7f,0xf4,
- 0xff,0xff,0xaf,0xff,0xff,0x2b,0xd8,0xff,0xaf,0xa2,0xfd,0xff,0x21,0xa2,0xfe,
- 0x3f,0x8b,0xf6,0xff,0x08,0x28,0xfd,0x9f,0x6a,0xfb,0xff,0x50,0x80,0xfe,0xbf,
- 0xd7,0xee,0xff,0xa2,0xd4,0xfe,0xaf,0xbe,0xff,0xff,0x51,0x52,0xff,0xbf,0x6f,
- 0xfd,0xff,0x68,0xd5,0xff,0x5f,0xbf,0xff,0xff,0xb3,0xa2,0xff,0xbf,0xfb,0xfe,
- 0xff,0xd0,0xd3,0xff,0x7f,0x5f,0xff,0xff,0x6b,0xe5,0xff,0xdf,0x7d,0xfd,0xff,
- 0xa9,0xa2,0xff,0x7f,0xb7,0xff,0xff,0x55,0xd5,0xff,0xff,0xfd,0xfe,0xff,0x0b,
- 0xd5,0xff,0xff,0xd5,0xfb,0xff,0xa7,0xaa,0xfe,0xff,0xfa,0xff,0xff,0x17,0x3d,
- 0xff,0xff,0xed,0xeb,0xff,0x8f,0x5e,0xfd,0xff,0xff,0xff,0xff,0x5f,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xbf,0xff,0xff,0xff,0x51,0x9f,
- 0xfe,0xdf,0xfe,0xf5,0xff,0xea,0x5b,0xfe,0xbf,0xff,0xfb,0xff,0xb1,0x5f,0xfd,
- 0xdf,0xfe,0xef,0xff,0xea,0x3e,0xfd,0xbf,0xff,0xf7,0xff,0xd1,0x57,0xfd,0x7f,
- 0xff,0xdd,0xff,0x6a,0xaf,0xfa,0xaf,0xfb,0xf7,0xff,0xe9,0x3f,0xfd,0x7f,0xff,
- 0xfb,0xff,0xb1,0x5b,0xfd,0xbf,0xff,0xdf,0xff,0xea,0x2f,0xfa,0xdf,0xfe,0xf5,
- 0xff,0x69,0xbf,0xfd,0xbf,0xf7,0xef,0xff,0xe1,0x57,0xfc,0x5f,0xdf,0xf5,0xff,
- 0xb5,0x2e,0xfb,0xbf,0xff,0xdb,0xff,0xa1,0x15,0xfd,0x7f,0x75,0xf5,0xff,0x54,
- 0x95,0xfc,0x5f,0xdf,0xf7,0xff,0x43,0x15,0xfd,0xff,0xfd,0xed,0xff,0xb4,0x5b,
- 0xfd,0xbf,0xff,0xfb,0xff,0xeb,0x5f,0xfe,0xdf,0xff,0xff,0xff,0xf2,0x7f,0xfb,
- 0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xfe,0xff,0x7f,0xed,0xff,0xff,0x55,0x53,
- 0xfd,0xbf,0xb6,0xea,0xff,0x02,0x09,0xfa,0x5f,0x59,0xb5,0xff,0x41,0xa2,0xf4,
- 0xff,0xb6,0xfe,0xff,0x17,0x91,0xfa,0xff,0x5b,0xf7,0xff,0x57,0x64,0xff,0xff,
- 0xb7,0xfe,0xff,0x5f,0xd1,0xff,0xff,0x6f,0xff,0xff,0xaf,0xc2,0xff,0xff,0x5f,
- 0xfd,0xff,0xff,0x65,0xff,0xff,0x7f,0xff,0xff,0xff,0xd2,0xff,0xff,0xbf,0xfe,
- 0xff,0xff,0xe3,0xff,0xff,0x7f,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xe5,0xff,0xff,0xbf,0xfe,0xff,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xd3,0xff,0xff,0xff,0xfe,0xff,0xff,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xb7,
- 0xff,0xff,0xff,0xfb,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,0xff,0x5f,0xff,
- 0xff,0xff,0xfb,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,
- 0x9c,0xfe,0xff,0xd7,0xf5,0xff,0x7f,0x5a,0xfe,0xff,0xef,0xf7,0xff,0xbf,0x2c,
- 0xfd,0xff,0xdb,0xed,0xff,0x7f,0x3a,0xfd,0xff,0xef,0xfb,0xff,0x5f,0x98,0xfa,
- 0xff,0xab,0xd7,0xff,0x77,0x4c,0xfc,0xff,0xd7,0xea,0xff,0x1f,0x28,0xf2,0xff,
- 0x4a,0xab,0xff,0xa5,0x08,0xf9,0xff,0xd7,0xd5,0xff,0x17,0x52,0xe8,0xff,0x6b,
- 0xbb,0xff,0x5f,0x14,0xfa,0xff,0xd7,0xed,0xff,0x7f,0xa8,0xfa,0xff,0xdf,0xf7,
- 0xff,0xbf,0x2c,0xfd,0xff,0xe7,0xdb,0xff,0x7f,0xaa,0xfa,0xff,0xdf,0xf6,0xff,
- 0x7f,0x38,0xfd,0xff,0xeb,0xdb,0xff,0xbf,0x4c,0xfa,0xff,0xcf,0xff,0xff,0x7f,
- 0x3a,0xfd,0xff,0xef,0xeb,0xff,0x7f,0x94,0xfa,0xff,0xd7,0xf6,0xff,0x7f,0x5a,
- 0xfd,0xff,0xef,0xdb,0xff,0x7f,0x14,0xfd,0xff,0xaf,0xf6,0xff,0x7f,0x54,0xfc,
- 0xff,0xd7,0xf5,0xff,0x7f,0x08,0xfe,0xff,0xef,0xfb,0xff,0xbf,0xaa,0xfd,0xff,
- 0xff,0xef,0xff,0xff,0xbe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xa5,0xff,0xff,0xaf,0xfd,0xff,0xff,0xa9,0xeb,
- 0xff,0xbf,0x77,0xff,0xff,0x52,0x95,0xfe,0xff,0xde,0xe9,0xff,0xab,0x2a,0xf2,
- 0xff,0x6b,0x55,0xff,0x56,0x00,0xd4,0x7f,0xaf,0xeb,0xff,0x2b,0x15,0xf1,0xff,
- 0xf5,0xb5,0xff,0xaf,0xac,0xfc,0xff,0xdf,0xff,0xff,0x57,0x2a,0xf6,0xff,0xea,
- 0xd6,0xff,0x17,0xbd,0xfa,0xff,0xf5,0xff,0xff,0x4f,0xdd,0xfa,0xbf,0xde,0xbf,
- 0xff,0x25,0xfa,0xfa,0xff,0xf5,0xef,0xff,0x4b,0xfd,0xf9,0x5f,0xff,0xbf,0xff,
- 0x29,0xdd,0xf4,0x7f,0xd7,0xdf,0xff,0xe1,0xfa,0xfa,0xaf,0xff,0xbf,0xff,0x74,
- 0x7e,0xf1,0xff,0xd7,0xdf,0xff,0xb7,0xfa,0xf9,0xff,0xef,0xaf,0xff,0x7d,0xfc,
- 0xf8,0xff,0xb7,0xdf,0xff,0xbf,0x6c,0xf5,0xff,0xdf,0xf5,0xff,0xff,0x92,0xf8,
- 0xff,0x6f,0xad,0xff,0xbf,0x08,0xfd,0xff,0xbf,0xf5,0xff,0x7f,0x25,0xfc,0xff,
- 0xff,0xfe,0xff,0xff,0x95,0xff,0xff,0xff,0xfb,0xff,0xff,0x77,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,
- 0xff,0xff,0xfd,0xff,0xff,0xdf,0xfe,0xff,0xff,0xf7,0xff,0xff,0xaf,0xfe,0xfa,
- 0xff,0xff,0xdf,0xff,0x5f,0x5a,0xf9,0xff,0xd7,0xaf,0xff,0x2f,0xbd,0xf4,0xff,
- 0xed,0xfb,0xff,0x7f,0x5a,0xfa,0xff,0xd7,0xed,0xff,0x5f,0x2c,0xfd,0xff,0xef,
- 0xf7,0xff,0xbf,0xb8,0xfa,0xff,0xaf,0xfa,0xff,0x7f,0x0a,0xff,0xff,0xd7,0xff,
- 0xff,0xbf,0xd0,0xfe,0xff,0x3f,0xf5,0xff,0xff,0x44,0xff,0xff,0xaf,0xfe,0xff,
- 0x3f,0xa1,0xff,0xff,0xb7,0xfe,0xff,0xff,0xc4,0xff,0xff,0x2f,0xfd,0xff,0x5f,
- 0x50,0xff,0xff,0xbb,0xfe,0xff,0x7f,0xa1,0xff,0xff,0xd6,0xf5,0xff,0x05,0x8a,
- 0xfe,0xbf,0xea,0xfa,0xff,0x8b,0x14,0xfe,0xff,0xfa,0xf7,0xff,0x05,0x55,0xff,
- 0xbf,0xef,0xfd,0xff,0xd5,0x5e,0xfd,0xff,0xfe,0xf7,0xff,0xd5,0xff,0xfb,0xdf,
- 0xff,0xff,0xff,0xfb,0x7f,0xfd,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe9,0xff,0xff,
- 0x57,0xff,0xff,0xbf,0xd2,0xff,0xff,0xbf,0xfd,0xff,0xbf,0xc8,0xff,0xff,0xdf,
- 0xfe,0xff,0xff,0xa2,0xff,0xff,0x7f,0xff,0xff,0xff,0x95,0xff,0xff,0xdf,0xfd,
- 0xff,0xff,0xa3,0xff,0xff,0xff,0xfa,0xff,0xff,0x4a,0xff,0xfa,0x7f,0xfd,0xdf,
- 0xff,0x87,0xff,0xfa,0x7f,0xf9,0xef,0xff,0x0b,0x3f,0xf9,0xff,0xfd,0xfb,0xff,
- 0x8f,0x5d,0xfd,0xff,0xf6,0xef,0xff,0xa7,0xbe,0xfe,0xff,0xfb,0xfb,0xff,0x9f,
- 0x2a,0xff,0xff,0xd6,0xff,0xff,0x4f,0xbe,0xff,0xff,0xef,0xff,0xff,0x7f,0xf8,
- 0xff,0xff,0xab,0xff,0xff,0x3f,0xfc,0xff,0xff,0xef,0xff,0xff,0xff,0xea,0xff,
- 0xff,0xbf,0xfe,0xff,0x7f,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xff,
- 0xff,0xfe,0xff,0xff,0xd7,0xff,0xff,0xbf,0xff,0xff,0xff,0x55,0xff,0xff,0xff,
- 0xfb,0xff,0xff,0x2f,0xff,0xff,0xff,0xfd,0xff,0xff,0x5f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
diff --git a/hacks/images/matrix.xpm b/hacks/images/matrix.xpm
deleted file mode 100644 (file)
index 0aab685..0000000
+++ /dev/null
@@ -1,904 +0,0 @@
-/* XPM */
-static char * matrix[] = {
-"56 837 64 1",
-".     c #000000",
-"+     c #020E04",
-"@     c #021804",
-"#     c #062604",
-"$     c #0B3008",
-"%     c #021E04",
-"&     c #114410",
-"*     c #0C360E",
-"=     c #0D3E0E",
-"-     c #0E4E0C",
-";     c #1F561E",
-">     c #145417",
-",     c #136314",
-"'     c #1D5E1D",
-")     c #1C4E1C",
-"!     c #127410",
-"~     c #269624",
-"{     c #1AA614",
-"]     c #169614",
-"^     c #26B529",
-"/     c #178618",
-"(     c #246624",
-"_     c #2F832F",
-":     c #2B7729",
-"<     c #368B34",
-"[     c #3B9439",
-"}     c #298B27",
-"|     c #3AC237",
-"1     c #42D73C",
-"2     c #62DA61",
-"3     c #32D634",
-"4     c #88E688",
-"5     c #1E751C",
-"6     c #4CB34A",
-"7     c #44AB42",
-"8     c #42A244",
-"9     c #26C227",
-"0     c #FFFFFF",
-"a     c #40CC44",
-"b     c #52BB54",
-"c     c #3E9C3C",
-"d     c #5AC254",
-"e     c #286E26",
-"f     c #32CB34",
-"g     c #5ACA5C",
-"h     c #5ED05C",
-"i     c #2AA62C",
-"j     c #166E14",
-"k     c #62DE64",
-"l     c #3EDE3C",
-"m     c #36B634",
-"n     c #D9F9D8",
-"o     c #26CB24",
-"p     c #2E9A34",
-"q     c #66E561",
-"r     c #9DD89F",
-"s     c #7AF67C",
-"t     c #E8FEEA",
-"u     c #92F294",
-"v     c #D8F3D8",
-"w     c #76EE74",
-"x     c #73E774",
-"y     c #66E264",
-"z     c #D7F2D8",
-"........................................................",
-"...........++++++......................++++++...........",
-"........++++@++++++.................+@+@#@@@@++.........",
-".......+@@@###$#%@@++..............+@@#$$$&$#%@@+.......",
-"......+@####*#**$%%@+.............@@$$$=-=--&$#@@.......",
-".....+@$&;>>>,,'-)&$#++..........@%-!~{]]{{^]/!-$@+.....",
-"....+@#)(__:::<[_('&*@+.........+#$}|123|4442|{5-@+.....",
-"...+%%$([678[8668<:(=#@+.......+#%=90000000004a^,$%+....",
-"...+##-:[b8[<<c8c[<:;#@+.......@$&!a000044000041~&%@....",
-"..+@$-;_6d8_(e:_<86['*#@+.....+%-/~200019f|14000^-$%+...",
-".++%=;e[7gc:>>>>_8h6:=#++....++#,i|0000f]]]]1000a,$@+...",
-"..+@&(:cbg[j----:7k6:&##+.....@#5^|00009////|000a!=$@...",
-".+%#;:<c7b<e-&-&e8g6_>*$@....+%=~a400049////f0002]-=@...",
-".+@$;_[887_j---&:[g7_'&#@+...+%=i10000l9///!|0002i5&#+..",
-".+%$(<8777_'=&-&e[d6_()*@+...@%&^400001^!!/!|0002^/-%+..",
-".+@$(<888c_,--==:[b6<(;*%+...+#&m400003^//!!f0004^~-#+..",
-".+@*e[688c_>=&&=e8d6[('=@+...+%-|000003{!!!!|0000|i,#+..",
-".@@$([78cc:,--&&:[d6[e;=@+...@#&m000n0o{//!!|0000|~,#+..",
-".@@*;<c787<,--&&:[d6_;)*@+...@%-i400004^//!!f0004i/-#+..",
-".+@$':<86b<(----ecb7_;=#@+...+%=ia4000l9////|0002~,=@+..",
-".++$;e<86bp(--&-e[d8:)*#+....+%=~|400049////9000a/>$@...",
-".++#&;e[6g85->>>:8d6:&$#@....+@$!i|000qo/]]]f0003!-$%...",
-"..+@*-;cdk7:>>'(_7g8:=#++.....+#-/iq0003]]^^2000a,$@+...",
-"..+@$*)_dh75>,,e<7h6:$#@+.....+@=,/2000o]^^94000|-$@+...",
-"...+#*&e8bc_j::_<[8:'$@+.......@$-!a00n199o12002i=#@....",
-"...+@%$':<<_}_<[<:e'&@@+.......+@$=ia44214q041ri!%@+....",
-"....+%#='e_<cc8c<(&*$@+.........+#$,i|1400002^!>=#+.....",
-"....++@*&;;(ee::()=#@++.........+@@>!~im|||am/,=#++.....",
-".....++@$*&&))))=*#@+............++#=-!!}}/}!-$@%.......",
-".......+@@@##%%#%@+@...............+@#%$$$$$#%@%........",
-"........+++@@%+@@++.................++%@%#@@%++.........",
-"........................................................",
-"............+.+.........................+.+.............",
-"..........++@@+@++....................+@#%@@@+..........",
-".........+@%#$#%@++..................+%%$&=#%@+.........",
-"........+@#*=$*$#%++................+#$-,--=$#@+........",
-".......+@@)e<ee(;)&$+..............+@#/|4f|^~/5-@.......",
-".......+@#([d6[_:e()$..............@#$m000021|m}&.......",
-".......@@#_dskd8<<:(=..............@%=20t00002|m,.......",
-"......+@#*:gsh8_:(;=$.............+%$&a0t00aami5=.......",
-"......+@#*_bsd[;;))$@.............+#$-20t00ip}5=#.......",
-"......+@$$<dsb:&=##@+.............+#=-20t0a!,=$#+.......",
-"......+@#*<bu6:=$$@++.............+%=-20t0a,-=%@+.......",
-"......+%#*<bs6_=*#%@..............+#$>20t01,-$#%........",
-"......+@$$<dsb:=$#+@..............+#=-40t0a,-$@@........",
-"......+@$$<dsb:=##%+..............+%=-20t0f,=$#+........",
-"......@@#$<bs6:$$@++..............%%$-40t0a-=%%+........",
-"......+@$*<ds6:=##@...............+#=)20t0a,=$@.........",
-".....+@##$<bu6:=$@@..............+@$=-40t0|,=#@.........",
-"......+@$=<gsb:*##++..............%#=,20t01-=$@+........",
-".....+@#$$<bsb:=$#@+.............+@$=-40t01,=$@+........",
-".....+@#$=<gsb:=$#++.............+#$-,20t0o,-$@+........",
-".....++#$=_dsb:*$$@+.............+@$-,40t0a--=#+........",
-".....+%%$=<gs6:*$#@+.............+#$=,v0t0a,=*%+........",
-".....+%$$&_dwb_**#@+.............+#=-!40t01,-$#@........",
-".....@+$&;<6h8_,&=#@.............@@-!p20001{!,$@........",
-".....+@=)(_7d8_(>=#%+............+%,}m40002|],=%+.......",
-".....++=;e<[7[_e;&$@+............+@,i|20002|i5&#+.......",
-"......+$=);(:(;)=$@@..............+=,}ima|p_,=#@........",
-".......+%$*=&==$$@+................@$=),5,,=&#+.........",
-"........++@+@++@+...................+@@@@@@@+...........",
-".........++++++......................+++@++.............",
-"...........+++++.......................+++++............",
-"........+++@%++@++..................++@%#%%@@+..........",
-".......+@%#$*$#$#@++...............+##$=-=&=$%@+........",
-".....++@#$$=====$$%++............+@#$--,,,,,-=#@+.......",
-".....+@#&&))&)--&=*#@+...........+@=,!//////!,-=%+......",
-"....+%#;:<_ee(((((:'=+..........+#$~a429|9^^9|ai>@......",
-"...++#$e[d8[____<[[_)#+........+@$-|000011212002}$+.....",
-"...+%$=_bhdc<_<<[8b[;#+........+#=,2000044240000i$+.....",
-"...+#=)_bh6[:e(e_[7<;#+........+=,/40004ff9|2004p$@.....",
-"...+$)([bhc_,,>;(<c_;#+........@-/m00001^{{]|402~$+.....",
-"..+@=;([bg[e>--&;:[_)@+.......+%,~|0000f]//!ia02}#+.....",
-"..++$)([bh85--&&);(;$@+.......+@>/m00009//j!/imp>%+.....",
-"..+@$&;[6h8:--&*&&&&#+........+@-5i0000f//!,!55,$+......",
-"...+*&;[bh85--&=*$#@++.........@-5i0000o]/!,-=$#%+......",
-"...@$*)_8dc}j>-=$$#%+..........@=-/200039{/,-*$%%.......",
-"...+@$*:[78<_j'*=$#@++.........+%-,|000439{,,=$#++......",
-"..+@%$$(<[88c_,&=##@@+........+%#=-^400003{!,=$#@+......",
-"...+@#$>e_<p8_5>)=##++.........+#$-]91q4n3o{/,=$@+......",
-"...@@#$-'e_[7[}:,-*$@+.........@#$-/i910n0lo^/-=#@......",
-"...+%#*&->5~ccp[:'=##@+........+%=-!/]fl0n4qo{,=$@+.....",
-"..+@$$=->'e~[ccc_(>&$@+.......+%=-!/]{flqnnn19]!-%@.....",
-"...+$&;',!___~p8c}_(&#@........@&!]{^o331lqnn43^!$%.....",
-"...@=)'ee_555}c77c[:;#%+.......%,}^|93fool00n001~=%+....",
-"...@*;'5__}__~c7878};$++.......%>~if14l13l000004~=%+....",
-"...+$&;:<cp[[876778<>$++.......@=5~|40qq0n000004~=@+....",
-"...+$*):<878776768c_;#@........+&,}a000000000002~=%.....",
-"...+#*=(<8888c88c[[e)#+........+$-!m40000000000a/$@.....",
-"....+#$);(eee:ee((()*@+.........@$=/pm||mf|||mm}>%+.....",
-".....+@#$*=*&=&==**$@+...........@#$-),,!,!,,--*%+......",
-"......++@@######@@+++.............+@@%$$$$$$%%@%+.......",
-"........++.@++@+@++.................+++@@@@%%++.........",
-"..........++@+++......................++@+++............",
-"........+@@@###@++..................@%##$$$%%+..........",
-"......+@%#$*=$$*$%++..............+@#$&-,---*#@+........",
-".....++@$$=&&&&&$$@++............+%#=-,!!!!!-=%@+.......",
-"....++%=;';;;'';)=*#+...........+%%,]ii~iiii/,-$@.......",
-"....+%#;_c<:e::<:(;&#+..........+#=p2n4afa14am~5=+......",
-"...+@#*:7g6c_<[8[_:;=+.........+@$-a0000140002fp)@......",
-"...+@$&<bh6[_[[8[<:(=@.........+#&!400003400041m,@......",
-"...+$*)<6h7<e:_<_::;=@.........+=,_200029a222a|p,#......",
-"...+$);[6h8:''eeeee;*+.........@-/i0000f{^9|a||p>@......",
-"..+@=)([6g[e>';;(((;*+........+%,}^0000f]iiimmm~-+......",
-"..++*&)<7g7<(j';))&*#+........+@-!~4000499{~/}5>$+......",
-"..+@#$)_7g7[}:;&=$$%+.........+@$-/200001fi!j-=$+.......",
-"..+@#$&_8gbc<_;&$$@++.........+#=-!100004fi!-=%@+.......",
-"..+%$=)<8g67[_(&=$@@+.........+%=,/1000n01^!,=%%+.......",
-"..+@$&><8d67p_(;=#++..........%#-!~40000q19~,=@+........",
-"..+%=-;<7g68[_e;&*%++.........+#,/i4000002|~!-#%+.......",
-".+@@)(:[86c<:('-=$%@+........+@%/^o000n2f9i/,=#@+.......",
-"..+#;:<[cc<:,>)=$##+++........%$p|400043^]/,-*$@@+......",
-"..@#;<cc8p_,>-==*#$%@+........%$i40nnq3^]/!,-==#@+......",
-"..+#;:<ccc_j---->';)$+........+$~a000039////]ii/-@......",
-"..+@)e_<88_(>'>'e_<:)@+.......@#/|200019]{{{910a/#+.....",
-"..+%=;e[c6<!>>,e_8b['#+.......+#,i|40019]{^|2000i$+.....",
-"...+=&;:<8<:,ee__<c_;@+........@-5~a4n4o^9912002p%+.....",
-"...+#$&':___:___<__(=@+........+$-5ia413a122222m,#+.....",
-"....@@$&'ee_<<<[<e;)*++.........@#&!i||244404|i/-%+.....",
-"....+@+=);((:::ee;)=#@..........+@@,/im9|aa||i},$@......",
-".....+@#*=&)));;)=*$++...........+@$-,5//~~~_,-&@+......",
-".......++@###$###@+++..............+@#$$===$$%@++.......",
-"........+++@+@@@@@+.................++@@%%##%%+.........",
-"...........++++++.+....................++++++.+.........",
-"..........+.+.........................+.+...............",
-"........+@+@@++.....................@@%%@@+.............",
-"......+@@$##$@@++.................+@#=$&=#%++...........",
-"......+@$#**$$#@+.................+#==---=$#@...........",
-".....+@#&-;5e;=#@@...............+@=!/{9f~,$%@..........",
-".....@@=);_<8_'*$@++.............@#,/ia003i-=#@+........",
-"....+@#)(e8dh8e**$@+............+@$/^fn000f,-=%+........",
-"....+@%-(_c6h7<,-$%%+...........+#$/m100001^/-##@.......",
-"....@%#>j_86g7c_j-#%@+..........@#=]910000019/=#@+......",
-"....@#$;(_[6b68c_'*$@+..........%$=~^10000003{-=#@......",
-"....+##;e}[7bb78<(-=$@+.........@$=~f1q0000049/,=%+.....",
-"...+%%*,:}p77777c_5;*#@+.......+#$-{fl4n000n01f],$#+....",
-"...+%#*>:}pc77787p_:-$@+.......+#=-{olqnnn00n44f/=%@....",
-"...+%$=':~[i77i6ccc_'*#@+......+%=,iflq0n0n00n02i,$%+...",
-"...+#$-j_[88m7c8c87[e>*%+......+$-/91qnn0nn0nn0q|],$+...",
-"...+#=-([8i66i8}876c_'&$@......%=,/9qnn00nnl00003i!=%...",
-"..+@$&,5p766678}p6d8<()*@+....+%&!{f4n000nnl40004^/-#+..",
-"..++=>'<8b|ggmi87878_(>$%.....+@,~^4n00000nnn00029~-%...",
-"...@='e8bhghhb6i66mc_e;*@......@,i|n0000000n00002|p>%...",
-"..+@=;:cbghghg6m88c[_e;=%.....+#,ian00000000n0002|~,#...",
-"...+=-'_8mbmbi[}__ee;)=#+......%-/{1n0000nq1l3|9i/,=+...",
-"...@#$&e_ccc8}_,'>>-=$#@+......@$-!|10nn0lf^{]]/,-=@+...",
-"...+@##>(__<[5'&**$##%@+.......+#$=]91144f^!,>==$#%+....",
-"....@%$-(5___(-$*##%@+..........@$=/^fa149/--==%%+......",
-"....+@%=;(j::'&$#%%+++..........+@%'pm9a|i!=$##@++......",
-".....+@=);((e;=@@@+..............@#,/imm|~,#%@+.........",
-".....++$*&&))=$@++...............+@&>55//,=%++..........",
-".......+#$#$##++...................@$===&$++............",
-".........@+++........................@+++...............",
-"........................................................",
-"........................................................",
-"........++@+@+@+++..................++@@@@@@++..........",
-"......+@##$$*$*$#@+...............+#$&=-----=%@.........",
-".....++$=&)))>))=*%@+............+@=,5//}~//,-#%+.......",
-".....@#*);''';'()&$@+............@$>}~i^iiim}5&#@.......",
-"....+%$);ee__<<<_()&#+..........@$&/iaaa14401m/,$+......",
-"....@#=':<<<<87b[_;)$+..........@=,i|444000002i/-+......",
-"....%$=(_[c8cbghb[:;*@..........#=,m20n0000000ap>%......",
-"....+$*)(:_<_[6b7<:;&@+.........@=-~m|14100004ai,#+.....",
-"....@%$&;'j55}[7[<:'=@+.........%$&!]^9ool4001|i,@+.....",
-"...+@#$*&->',5_[<_e;&++........+@$=,!/]{{o1qq1ai!@+.....",
-"...++##&>'j5:[p7c_:'=%+........+%$=!]^9o3lq001ai,#+.....",
-"...+@#*>j__[~87b7<:;=++........+%$-]9334q00004ai,@+.....",
-"...+##*;:<876bgg6[:;=%+........@#=-ia400000000ap,#+.....",
-"..+@$*-:[8887876[_()$+........+@=,/o400nn00001^/-@......",
-"..++$)'}8d7c_<<<:')=#+........+%-/i400004144a^/,$+......",
-"..@%&'e8bg7~55(';)$$@+........@#!{f0000lf99^~_-&%+......",
-"..+#&e_86g8_j,'>&=#@++........+$5|2000039^{]!,=#@+......",
-"..@#>:<867<e'>>-=*$%++........@$~|4000qf{]]/,-=#@+......",
-"..+%;_cc[8_,-&&=$##%@.........%$p2n0003^/!!,-=$%%.......",
-"..+#;:<c[[_,-=&&==$#+.........+$~a00041{/!!!,,-$@.......",
-"..++&;:_[c_j>,,((;(;*+........+@5i|30039]{{^^im~>+......",
-"..@@*&;_[c_(>'e:___e&+........%@>!ia0029]{|a222|5@......",
-"...+$=-e<8_(>(:<<_[:&@.........%=,/|40l9]9o4440a5@......",
-"...+@$*;e_:5je_<:_e;*+.........+#=,{|2af9a2422|i>+......",
-"....@@#&>(e::__<:(;&$+..........@#$!~^|aa222ami5=+......",
-"....++%$&>(:__:_:;&*@+..........+@%-!]^a2a22|p5)#+......",
-".....+@#$=&);;(;)&$#@............+%$=,5]~iii}5=$@.......",
-"......++@#$$==**$$@...............+@#$=-,,)>==#+........",
-"........++@@+@@@+++.................+@@@%%##@++.........",
-"..........+++++++.....................+++++++...........",
-"........................................................",
-".......++###$%+@++.................+@$=$=$@@++..........",
-".......$=&);;)=#@++................=,5}pi/,&#@+.........",
-"......+=;e::_()=$#@++.............+,p|fa2m/,=$%++.......",
-"......+&;e:_<:(-&$@@+.............@,i|a24|^/!-##+.......",
-".....++*);(::__:(>*#@+...........++>_~ma2123^]-=%+......",
-".....++%*&;(:_c8<,&*#@+..........+@$-!i^f1004^!-$#+.....",
-".....+%#$*;;(<86c:>&*@+..........+%$=-]i92000f]!-%@.....",
-".....@@#$=->,:}8[<<(-$%+.........%#$-,/]^fl00449/=#@....",
-"....+@@$$=->,(_~[c7_(*%@........+@#=-,/]{93lqn04^-#@....",
-"....++##$*->>jj_p7b8(=#@+.......+%$=-,/]]991q000|,=#+...",
-"....@%$)(e555}}c7dh6:=$@+.......@#=/^9oooll00000f,=%+...",
-"...+@#=(<8c[[c77bgxb_-##+......+#=,m4000q0n000003/=$@...",
-"..++#$&_8g67876bgywg<-$#@.....++$-!30000n00000t04/=$@...",
-"..+@*)'<767p/[pcmgyb_-$#++....+%-/^2000qlqqn00003/-$@+..",
-"..+@&(e[76[_j55_[7h6_=*#@+....+#5^a00001^of340001!-$@+..",
-"..@#;:[[78<j'>>,:8d85&*#++....%$~a000019{{{{30009!-&%+..",
-"..+#;:c[88_,>>>,/cd8_=$#++....+$ia00001^]]]{3000a!=$@+..",
-"..+#;_[c[c_j->>>:cg75&$%@.....@$p2000n39/]]]f000o!-%@...",
-"..+#;_c[[[e,>---_pg8:=$@+.....@$i20000f^]/]/3000|,=#@...",
-"..+#)e<[[[_,->>,_8d85=#%+.....+$}a4400o^/]{{3000o,=#+...",
-"..++=;e<c8<j>,,(_8d8e*#%+.....+@,~|4n049]{^91000|-$#+...",
-"..+@$*):8b[e>,::[8b['$%+......+@=,/a004o{^fa4000^-%@....",
-"...+#*&e[8<:>e5__[8<'#@+.......@$-5|004f{9f12004i&@+....",
-"...+@$$)e_e5ee___:e;=%@+.......+%=-}|1a9|f122a|p,%%+....",
-"....+@#*)'(:::__e;&*#++.........+@$,/imaaaa2|i!-$@+.....",
-"....+++$=&'(::e:;)#@@++.........+@@*,!ima|aai!=##++.....",
-".....++@#*=&))))=$%@+............++#=-,!}//_,=#@+.......",
-".......+@@#$##$##@++...............+@#$=====$@@+........",
-".........+++@+@+++...................++@@@@@%+..........",
-"...........+++.+.......................+++.+............",
-"........................................................",
-"......+@#$#$$$*$#$##@+............+%$*&-----&==$%+......",
-".....+@$=);;;));)))=#@+..........+#-,/}~~}/~///,=%+.....",
-"....+@$&;'(eee(e'(;;=$@+........+#&5i^^|9|9|mmi~,&#+....",
-"....@#*;:<:__::_e_e()=#+........@$-pa422aaaaaaam},$@....",
-"....+#=:8d7[<<<<<[[<()=#........@$,a000044444004m/,$....",
-"....#$&<bxg7[[<<[86[:;&$........$&540t000q440000|i5=....",
-"....@$&[dxg6[[[<[[c[:;&#........%=500000q0q40000ap5=....",
-"....+#*:8g6c}_:e:::(;)*#........@$)2000nl1a9|aa|i5>$....",
-"....@@*([6c[_jj>);;&&*$+........%%-m00n0399]]~~5(>=@....",
-"....@@$'<8<__e'&==**$$#+........%#=i404419{!,,,--=$@....",
-"....+@@)(:<pc_,=&$$$#@@.........+@#/ma4403^!j-==$#@.....",
-".....@@=)(_[6_(==$#@@+...........@#,}^2002^,,-$%@+......",
-".....+@#=&:[b[,=$$#@+............+@*,/a00l9,-=$#%.......",
-"......+#$&e<8<e-=$#@@.............+$=!|2029/,-$@@.......",
-"......++%$;_[<(')$#@+.............+@$*i2049{/-$#+.......",
-".......@@#;:[_e')=#@+..............@#$~a02|i/,$#+.......",
-".......+%#=;(::_(&#%+..............+#$,i||119!$#@.......",
-"........+@$=)e<[:;#%@+..............+#=,/|20a~$#@+......",
-"........+@%$$'<6<;##++..............+@$=-^404{=$@+......",
-".........+@#$;<8<:=*#+...............+%$=i404|!-$+......",
-".........+@##;:8<:()$+...............+%$$~a0q|m}&@......",
-"..........+@#)e[<::;=@................+%$/|042|i,@......",
-"..........++@=;:::_e=+................++#(paaa2|,@......",
-"...........++$=)(:_e)+.................+@=,}ma2|5@......",
-"............++#$)e[:&@..................+@$=}|015@......",
-".............++@=;e;*+...................+@#(p|i;+......",
-"...............+$*&*#......................+=)5)$.......",
-".................++..........................++.........",
-"........................................................",
-"........................................................",
-"........................................................",
-"...........+++++++.....................+++@+++..........",
-".........+++@@%@+@++.................+@@%#%#@@@+........",
-".......++%$*===&$$%@+..............+@#&-,,,!-=$%@.......",
-"......+@#$&)'';';&*$%++...........+@$=!}iiii~!-=#@+.....",
-".....++@$=;(::::e'==$@+..........+@#&,~^aa1f|i!,=%@.....",
-".....+@=;(ee::::55:'&#@+.........+%,i||aaffaooai!$%@....",
-"....++#;_[<_e:5e_<c_'*%@........+@$~20419fff14n2i-#@....",
-"....+%#e[dc_ej55<7g85=#@+.......+#$|000199994000f,=#+...",
-"....+@$:7g8_5555}7g8e&$@+.......+%=a0001ooool000|,=%@...",
-"....+#$:6h7}(jjj[7g6_=##@.......@$&a00019999l0003!=$%...",
-"....@#$_6k7~jjj,}7h7_-$%@+......@$-2000l999930003/=$@+..",
-"...++#*e7g8p:___cbd6_-$#@+.....+%$-|000l3o33n0003/-$#+..",
-"...++#*e[6787i7m6|g85>$#++.....+@$-|000nnn000000f/-$@+..",
-"...+@$*;:[7mbghhhgg7:-&#%+.....+#=-ia0n000000000o/,=#+..",
-"...+@#$;_<6dhghhhgb7/&*$@+.....+#$-if0000000000n3/-=#+..",
-"...+%#*e_776gbb66bg8_>*#%+.....+%=-94n00000000003],=%@..",
-"...+%$$:cb|bdm7i7mg8_>&$@@.....+#=-fn00000nnn00n3],=%@..",
-"...+%#=5cb6|b7p}c6b7_'&$@+.....+#=,f00000nqln0001{!-%+..",
-"...+%$*:8g7cp}_5}p7c_,-*@+.....+#=,f0000ql3o14001^/-#+..",
-"...+@%=:7g7}55j!:}8p_(;*#+.....+%$,a00nloo993l0019],$@..",
-"...+%#=_6g8_>>,>5}[<_(,=%@.....+#$,20003{{{{o3441|i,#@..",
-"...+%#$:8hc5j>,>5<68_(;*@+.....+%=-|000o^{{]fq002^]>%+..",
-"....@%$:8g8_,',>5cd6_;)*++......@#-a0003^{{]o0002i/>@+..",
-"....@@$:8d8:,>>-:cg6<'&$@.......%#=|00no^{]/f0004i5=%...",
-"....++%;:[_:jj,,:<8<(&$@+.......+@#~a02a99^^f204m5-#+...",
-"....++@=;(ee:ee(:::e)$#@........++#,pm9|o|9|faa|}-$@....",
-"......+#$*;(e:::e(;)*@@+..........+$-,~m|a|a|mi/-#@+....",
-"......++%#=)';;;;&)*#@+...........+%%=,/i~pi~55>$@+.....",
-".......+@@#$=****$##.+.............+%#$&,>>--==$++......",
-"...........@+@+@++++..................+@@#@#@@++........",
-"............++++++......................++++++..........",
-"..........++@@@@+++...................++@@@%+++.........",
-"........++++@@@@@+++................++%@#####%@+........",
-".......++@$=)&))&*$#++.............+@#=,55//!-=$@+......",
-"......+@%#&;(((('&=*%@+...........@@#$!~9mmmi5,-$@+.....",
-".....+@@$$)e::::e'-=*@++.........+@#=-/9aaaa|{/,-#@+....",
-"....+@%=;(ee:::eee:()*%@........+%#,~9||afa9faa^/-$@....",
-"....+@#)_[__:e((:<[<'=$@+.......+%=~1441ff99|404^,=#+...",
-"...+@%*([68<55,,_868e)*#+......+%%-m0004f9^^1n00a/-=@...",
-"...+@#*ec6[_e(,'e<7[_>&$@+.....+@=-f00039^{{f400a~!=@+..",
-"...+%$*:cb[5,,>>j<c<:(>$@+.....+#=-an00f^{]]9404a^~-#+..",
-"...+@$*e8b[5>>>>(:<[:(;=%+.....%#=,f004o]]]]^f041|i,%@..",
-"..+@#*&_8gc5>,>-j_[[_e'=%@....+@$-!a000o{{]]91041|i,#@..",
-"...@%#=_7gc/>,>>j_8[_e'=#+.....@$=j100q3]{{]91n019i,$+..",
-"..+@$$=}6g8:>,',5_8c_e;=@+....+@==!100n3{{{{o1002|i,#@..",
-"...@%$&_6h6~5!5j_c6c_()$%+.....%$-j2000looo910001^/-#+..",
-"...@##=}bhdmc[~[c7b8:;&$@+.....@$=!10000nqlq0000ai!=@+..",
-"...+%$=_bkhb7667bbg8_)*%+......+#=,10000000000001/-$+...",
-"...+@#=:7ggdb66c877[(=$@+......+%=,a000000000000m,&#+...",
-"...+@##(<87bb7[___:()$@@.......+%$=^40000n03a2a|/-%@....",
-"....@#$>5<c76c/>>;)&$#++........@$=]f4n0003{]]/!&$%+....",
-"....++#&'5[8bp_'>=*$#@@+........+@$5if40041{]!,==#@+....",
-".....@@*&>_~8[_5(-*$#+++.........@#-!~1q00lf^/,*$@++....",
-".....+@#$*(<78c<5>*#%%+..........+@$-,m40004f]-=##+.....",
-"......+@##;:c[[[_'=$@++...........+@$={a0000a{,=#%+.....",
-".......@@#=;e:_<:';&$@.............%#$(~|a24a^]5=@......",
-"........+%$$=;(::ee;$+..............+%=-,~^aa||p-@......",
-".........++@%=;e(:e;&@...............+%%$,p||a|i,@......",
-"..........+@@$=))))=#+................+@#='}_}_,$+......",
-"...........+++@##$#@+..................++@#$*=$#+.......",
-"..............+++.+.......................@++++.........",
-"........................................................",
-"........................................................",
-"........................................................",
-"........................................................",
-".............++++........................++@+...........",
-"...........++@$$#+.....................+@%&=$@..........",
-"..........@#*&;e>&++..................@=-5i|~,@+........",
-"..........#*)(_[:)@+..................$>/m20a}%@........",
-".........+$=):[6<'#@+................+&,}a004i$%@.......",
-".........+#*)ecd[;$%@................+$)5|000i=#@.......",
-".........+@#*e[d[e$#%+...............+%=>r000|-$#@......",
-"........+@@#$(cg[e=#%@..............%%#$&|000|,*#@......",
-"........++%#*([6[e>=#@+.............+@#=-m000f],=@@.....",
-"......++%%#$$;_8<:()*%@...........++#%$=-{202a^/,#@.....",
-"......+@@##**'e[__e'=%++..........+%%$=--ia042|i,%@+....",
-".....+@$$&&));e::_:e)#@+.........@@&-!!//{|aa12|/$@+....",
-"....@@@=;';''';(:_[:>#@++.......@%%,~i{{i{i^f20a~&#@+...",
-"...+@%#)(:e(e,>-e_8_'*#@+......+##=/^1f9|^]/9102i-$@+...",
-"..+@#=&;:_5(;>>&(_8<(=#@++....+@=,!iaa|^{]]/^204^,$#@+..",
-".++%=;(e:_:,>>--j:8<'=$#@+...+%%,~^|a1f^]]//9104^,=$%@..",
-".+%#)e:___('---)(_8<(=*#%@+..+%$/||1129{////^104^!-=#%+.",
-".+@$;_[[<}:,'>>,_[6c}(;-=$#..+#-i20041f^{{{^300019~/,-$.",
-".+$=:cb8[__:(5__[6db8c<e()*+.%=,a000q41o99310000004a^/-@",
-"+@$&<bhb8____<c76dhgggb[:(&%+#=54000n123140000000000am5#",
-".@$&:6gc__:55_<[886666c[:;=%.#=!20004aff|12000000000ai,%",
-".+#=(<8_(;'>>;('e:::::e(')*+.@$,m2029~i]~i^m||aaaa|mi}>@",
-".@#$)e:;>*$$$*$*==&=&&&&&=$+.%$=~||i/,--->--(,5,55555,&+",
-".+@#=;'&*$$##$#%##$#$#$**$@..+#$'pi5-==$$=$$$=&$=*=>>=#.",
-"..+@$*=$#@@%@+@%@%@@@%@@@@@...+#&>,-$###%@#%#%%#%##%##@.",
-"....+@%+@@++++++++@+++@+........+#%%@@++++++++@+%+@+....",
-".......................+...........................+....",
-"........................................................",
-"........................................................",
-"..........+@@++.......................@@#@+.............",
-"........+@#$=$@+....................+@$-,=#+............",
-".......++%*&;=#++..................+@#>5~,=@+...........",
-".......@*=);()=@++.................#-,/im}>@@+..........",
-"......+$)'e:_(&#@++...............+-}i|12^!$%@+.........",
-"......+)e_<[[:>##%++..............+5|v200a]=$#@+........",
-"......+*(:<[[:()=$@++.............+,m2400am/,=%@+.......",
-"......+*&;e:<<_:,&$%++............+>5p|a4411^!=#@+......",
-".......+#*;e:<c8_'##@+.............@$)~|24002i=$@@......",
-".......++@&;:_87<(&*#%+............+@#5ia2004m!-=#@.....",
-".......+@@*&;(:<:_:(&$#+...........+@#-5~m|411a^5=$+....",
-"........+@#*=);(:<8_(=#@............@@$-(/i^a204^,=%....",
-"........++@#$*&):[68:&*#+...........+@%$=-!}a000a5-$+...",
-"........++@%$$=&e[bc:)$@+...........++%$=-,/|000|/-#+...",
-".........+@#$$=-e[68:)=#+............@@$=-,/9000a},$+...",
-".........+@@#$&&([6c:)$#+............+#%=-j!|000|/-$+...",
-"........++#$*);e::<:;=#+............++$=-/{||24ap,=@....",
-"........+@#$-(:<_e;;=#%+............+#*-/^a42|i~,=#+....",
-"........@@*&)e<c_(=$#@@.............@%-!/|402m,>$@%.....",
-".......+@$)(__:_()*#%++............@#=}m2222|/-$#@+.....",
-".......%$*(<c<:;)$$@@+.............#&,m402ai_-=%%+......",
-"......+#*):8dc(*$#+++.............+$,52000m-=$@++.......",
-"......+*)(:[c:;*%%@+..............+>}ma00ap-$#%+........",
-"......+=(_:ee;=@@++...............+,m2ar|~,#%++.........",
-".....++):[:;**$@+................++}a01p,>=%%...........",
-".......=;:;&*#+++..................,i|p5>$@++...........",
-".......#*)$$@%+....................$>}-=%#+.............",
-"........++++++......................+@++++..............",
-"..........+...........................+.................",
-"........................................................",
-"........................................................",
-"........................................................",
-".........+++@+@+@+...................++@@@@@@+..........",
-".......++@+%@%#%@+@++..............+@@@###$##@@@+.......",
-".....++%#**=&&&&&*$#@+...........++#&--,!!!!!,&$%+......",
-".....+@$=;;;'((e(;&*$+++........++@-,~~ii^9r^~!,&@++....",
-"...+@@#=;(ee:_<<_e')=%++.......+@#$,~|||a2442|i/,$@+....",
-"..++#$&;(eeee_<c<_e')=*#+.....++$-!~^9|||14041|i/,-$@...",
-"..+@=;e(e:(,':c6c<_ee')*@+....@#,p||rf9^{a00043||i/-%+..",
-".+@#;e<_:e(>-:[b7[__:e(&#@+..+%$~a221|^]/f000041aam5$#+.",
-"++@$'_[_:e'>-:cd6c____e)*#+.++#&i202f9i]/f00001111a}-$@.",
-".@$*(<[_'>>&=e[bc_jee::'&*$+.%=,m401^]]j!f00019f|a9i!,=+",
-"+#$&e[[_;==&&j[bc_',:_:('&$%+$=!|00ai!!!!94001{^f219~5-#",
-"+#$&:[8e>===&(<8[:,je::e(;=@%$-5a00|],,,,9400f{9ffa|mi,%",
-"@$=)ec7_>=*==>:[<_:_:ee::e)#@=,_f00a],,,,{a441aaf9|aa|}$",
-".$&;_[8e,*=**-(e__[_5ee_[<;#+&!p200f{>,,-/^a14q1f992q4p&",
-"@$&):c7:'=*=$->':_c[5,(_[<'*@=5~a001{,-,-/]^f4nqf^9z04i-",
-".%$):[7_>&=$=*->e<c[_ee:<_)$+$=5a002{!!-,,/]f2002f|122}=",
-".+#*ec6<(-&***=&j<78<e::_:)#.@$>r004^/!---,!92002f9a2a}$",
-".@+$([8_e>&=*$*=;<88<_e::e&#.%@=m002|]!!---,i4004aaaa|5$",
-".++#)(_ee('>>&==>e__<<_e()*+.+@$}ma||^{~]!,,]|22442|^~>@",
-"..++$&);(e('(>&$&;':_c<e&&#@..+%=5}pm|mim]!-!]^f40qr5,$@",
-"...++#$=;::ee'-$*&&;_8[(*#++...+@$=5i|a||i/-,!5i200m,$%+",
-"...+++#*&))))=*$$**);((&#++....++@$-5}}}/,)==--5i|m5$@+.",
-".....+@@$$$$$$$$###$*==$@+.......+@#*&-=--&=$=$=),,=@+..",
-".......++++@+@%#@@@@++++...........++@@@@@$$%@#@@%++....",
-"..........+++++@++++++................++++@%++++++......",
-"...............+...........................+............",
-"........................................................",
-"........................................................",
-"........................................................",
-".........++.+........................++.+...............",
-"..+++@+@@+@+@+@+++............++@@@%@@%@@@@+++..........",
-".++###$%@%%%#%@@@@++.........+@$$==#####$###%@@+........",
-".%#$$$=*$$##$#$##%@+++.......#$-&-,-=======$$#%@++......",
-"+#&);;>>->'(((>-&&&*#@+.....+=!}~~]]]]{^9^]/!!!-=%+.....",
-"@=;((:ee(5_[[_ee''')=#@+....@,~m|aa|9f1404a|^ii/,=%+....",
-"@&(:__<<__c7d7c:_:e(&$#+....#5m|22242100000aaaam5&$@....",
-"+*);(e(eje[7d8_(('')=$%@....@>}{^99f^f400019^ii},=#@....",
-"@$$&->,,',_8bc_'>>-&$#@+....%=-5/]{{^^100n1{]]/!-=#+....",
-"+##$$*&--,_7bc5-&=**$#@++...@$$=-,!//{3n00o]!,,-=$#@+...",
-"#$)>>>->',}8g8:>>-&=$$$@+...$-/]]]/]{^10003]]/!,-==@+...",
-"*)ee(>>,'j}6di},>,--=**@+...-}|a^{{{^9300nl^{{]/!,-#+...",
-"*(<c_e,j!5c7h7}j,>'>-&$$@...>|2039^999n00039^{{]/!-=%...",
-"$;:_ee''(!c6h7<j(''>)&*#+...=pa2|9{^99q00049^{{]/!,$@...",
-"$&;e'''(je[6g7}(,'-;-&*#+...&5i|ii{^99n0003^^i]~/5>$+...",
-"@*&))->',e<6g8_,,;>)&&*#+...#)5}/]~{^940001^^]]/5!-$+...",
-"+#$=&)->;,<8g8_'>>&&=*$++...+$-'!//]i{40003{]]5!,-&%+...",
-".@@#$**=->_8d[:&&=$$##@+.....@#$&>,,/]3000|!!,-=$$%+....",
-"..++@@#$$*:[b['=*##@++........+@#%$--,a000^,-=$#@+......",
-"....@@%#$$ecb['$*##@+...........@%%$=-|004^--$$@@.......",
-".....+@##*e[6<,*##+@+............+%$=-|004^-=$@%+.......",
-".....+.###e[6<'*##@+.............++%$=9004i-=$@+........",
-"......+@#$([b<'*$%++..............+#$=m001^-=#%+........",
-"......++@#([d[e=$#@+..............+@%$m0009,-$%+........",
-".......+%#([d[:)=#+................+#$m000f},$+.........",
-".......++@'[d[:)=#+................+@#i000|},=+.........",
-"........+@);_()*$@+.................+@5i2m},=@+.........",
-".........+$*=*$#@+...................+=)(,=$#+..........",
-"...........@+@++......................+@@@@+............",
-"............++.+........................++.+............",
-"........................................................",
-"...........++..........................+%...............",
-"........+@$*=$+.....................@%=>,&@.............",
-".......@#$&);&#....................%$>5_i,$.............",
-".......+$*)(e;$....................@&)}m|p).............",
-".......@#$;:[(*+...................@$=pa0i,+............",
-".......+@$;_8:&+...................+%&p2015+............",
-".......++$;[6:)++..................+@&i00a}@+...........",
-".......+%@;<6_)@+..................+##p402}@+...........",
-".......+%$;[6:)++..................+%&i00a}@@...........",
-".......@+#;<6_;%++.................@%$p002~#++..........",
-".......@@#;[6:;@@+.................@#$i002p#@+..........",
-".......@@$(_b_)#++.................@#=i402}$@+..........",
-".......@@$;[6_;#@+.................@#=i002~$#+..........",
-".......+@$;[6<;#%+.................@#&i004~$%@..........",
-".......@@$;[6_;##@+................@#=i004i$$@+.........",
-".......@@#(<b_'##@+................@#$m002{=$#+.........",
-".......+@#;[6_;$#@+................+#$i002i=$#@.........",
-".......+@#(:6<'$#%@+...............+#$i204i-=%@+........",
-".......++@;<c_(=*#++...............+@#i402^,-*@+........",
-"........@%)e[_e()$%+................@#_|02|^/-#@........",
-"........@+&;(::_e&$@+...............@%,p|a22|5=@+.......",
-".........+$=):[6_'#@+................@&,/|002i=#@.......",
-".........+@$*;:[:'&$@................+#=(ia0ai,=%.......",
-"..........+@$&;(';)=#.................@%&,pmip},$.......",
-"...........++#$*&;;)#..................+@$=>5~i}=.......",
-"............++@#*&;&$...................+%#$>5p5&.......",
-"..............++@$*$+.....................+@%&>=@.......",
-".................++..........................+@.........",
-"........................................................",
-"........................................................",
-"........................................................",
-"............+.+++.+.....................+.+++.+.........",
-"........+++@+@++@@+@+++.............++@@@%@@@%@@@++.....",
-".......+++%@%####%#@%@++...........++@###$$$$#$##%@+....",
-"......+#$===&=&*&=&&==$%@+........+$-,,,!,!,!!!!,,-$@+..",
-".....++=;((('(,(,,(,'>)*@+.......+@,~^m^^^^^^^^^{~/-#+..",
-"....+@@)(___________::'&#@+.....+%#/|232131a32a11f^!=%+.",
-"....+@#;_<<:_:_:_:__}__>$%+.....@#$~2022aa13a11114f]=#@.",
-"....@@#([8c_j55j555_[[<'*#@+....@%=m4041999o9oo34n4i,$@+",
-"...+%#*e[b~_jjjjj555p7c(&$@+...+#$-|00q399999oo3q009!=#+",
-"...+%#=:86c_j5,555/<cmcj=$@+...@#=,|000lo99o9ooln0n9!=#@",
-"..+@#*&:c68p<}}}}}}p7675&$%@..+@$-j3n0n43l3llllqn009!-#%",
-"..+@#*-_[78c8[pc878i66c/-##+..+@=,/f00nnnqqqnnnn00no/=$@",
-"..+@*)>_86m7i78i7i767m8:-*#@..+%-/]1n00nnnnnnnn00003/-$%",
-"..+#)(_<c8c888787m6668ce,=#@..@$/|20nnnnnnnnn000000f{!*%",
-"..+%;<c888iccip77m6m87p5'-*@..+$i20n0nn0nnnnn000nnq9{/-%",
-"..@#([78c8p88c8i76bm8p_e')*+..%$m000nnqnnqnnn000nq1fi/-%",
-"..@%)(_<pcp[ppcp8mgm7}_,-*$@..@#/m144nqq4qqqn000nl3^/,&@",
-"..++$&>e~cp[[}[p7bhb85,>=#@+..+@-5]fln4qqlqq0000nf^],=@+",
-"...@%$=,_c[}~}~}76hbp:>&$#++...%%=,^1nqllllln000qo]!=$@+",
-"...+%#*e[7p}<_:/~877<:'&$%+....%#=-940qll333l0004f^!=#+.",
-"...++#*j[bc}5/55_}p<_:(&#@+....+@$-9n0nloooo3lq41|^!=#+.",
-"...+%##e[b[:!5jj55_:::e)#+.....+%$=|0043oo99o93a1a|/$+..",
-"....@@$([8p_5jjj,(,''')*@+......%#*^40q3o9999^^^ii/-#+..",
-"....+@#'_8<__:5e'>)&&=$#+.......+#$i20413o99^]/!!,-$+...",
-".....@@)e_<___ej(-$*#@@+.........%%}|44111f9^/--&#@+....",
-".....+@&(e__[<_e'&$#%@+..........+#!ia24041a{!=$%#@.....",
-".....+@$=>:[7<_e'&#@@+...........+@&,]|000a|i!$%%+......",
-"......+@$$ecd7<e>*#++.............+#=>|0004|~,$@+.......",
-"......++@$;:<_(>&$@@..............++#=pa02m~!=%@........",
-".......++%*);;=*$@+................+@#)_i~5-=#+.........",
-".........+@%##%@++...................@%#$$%%@+..........",
-"........................................................",
-"........................................................",
-"...............+.+.........................+.+..........",
-".............++#%$##+....................+@$$==$@.......",
-"...........++##*==)=#+.................+@$=-,,/,$+......",
-".........++@%$*=);;)$+...............+@@#=-,}pi}-@......",
-"......+++%@##=>(((e;*@+...........++@##$=,]^^m|~>@+.....",
-"....++@+%###*>e:_::'&@+.........++@@#$$=-]|a1a|i!#@.....",
-"...++@%##$*=='_c<_e'&#@@.......++##$==-,,{1042ai!$%@....",
-"..+@$&>;>'>>'e_c[<<:;$%+......@#-5~]]{]{{f20044a~=#@....",
-".@%*;:<__<_::_}cc87<'*%@+....@%>pa44441aa1lqn004^-#@+...",
-".@$&:8d6668cp[<<c6bce*#@+....#&5a000000nq44l00009,$#+...",
-".@#=([7866878c[}c8bce&*@+....%$,m000000nnn4l0000|!-#@...",
-".@@#)(:<[87ccp}_[<c[e'&$@....%%=}ma40000nq43l0n0ai5=@...",
-"..+@$=)e<[887p_!_}<_:e'=@+....+%=,}|40nn0q1o1141a|i,%+..",
-"..+@%$=;:<c86[_j5e::::;&@+....+%$=,ia4000ql9ff1aa|i5#+..",
-"...++#$);(<i6c:',''(e:e)#@+....+@$=/i94n00f{{{i^|a|/&%+.",
-"...+++#$=-:cb[5---&)(:e;*#+....++@$-,/|n00o///!]ma|~>$+.",
-"....++%##=e[6<e-&**&;:e)*#+.....+@#$=,|0009/!,-5i||_>$@.",
-".....+@%##;_<<e'>&**&)=*#+.......+@%$=~a04|^]!--:},>$@..",
-"......+@%#)(::_:(-#$$##@+.........+%#$/^aaa1m/===&$#+...",
-".......++@$&((:_e)$#@%++...........+@%>/^|a1|/=$#%@+....",
-"........+@$$&;e:e)&*#@+.............+@=-5i|a|~!>$%+.....",
-".........+@#$;;:e;;&$++..............+@$*_ia|i~5&@+.....",
-"..........+++=;:e(;&$@+...............+%@,ia|mi5=@+.....",
-"...........++#&));;)*+.................++$,}}pp_>%......",
-"............++#$=&;&*#+.................+@$=,5p5)$@.....",
-"...............+$*)&*@@...................++=>}5>#@.....",
-"................+$*$#@......................@=-=$%......",
-".................@+++........................%@@+.......",
-"........................................................",
-"........................................................",
-"...........++++++......................++++++...........",
-"........+++++++@++..................+@+@@@@#@+..........",
-".......@$=$$#*);&$@+...............%&,==$-/p5-%+........",
-"......+$&;&=$)(_(=#@+.............@&5~5,=/m2^,$#+.......",
-".....+@=;(;=='_[:;$@@+...........+@,~|]!,{20a~=%#+......",
-"....+@@)e_e>=e<6_'$$#++.........@@#}|2|]!9404{-=$@+.....",
-"...+@@#;<c_(-e<b[j&##@++.......+%#*i402^/f0009!=$%@+....",
-"...+@#$([6<5'_8b[5==$#@+.......+%$&m004f{10009!,=$%+....",
-".+@%#$$:[6<5'_8gc/-=*#%@+....+##$=-f0049{100no/!-=$@+...",
-".+#$#$=:86c:j~8gc_>-=$$++....@$==-,|00039ln0q3]/,==@+...",
-"+@$**$=:c6p:j}7g8/>-*$$%++..+#----,fn0q39l00n3{/,-=$@+..",
-"@*)''';<7g7~:8mg6}5,,-=*%+..%-}ii{i400n33n0003o^{/,-#+..",
-"@&e_:eecbg78~7dkdc:5j',*#@+.@5|2aff0000nln000n3o9^{,=%+.",
-"#;<[[<[8bhb7cmghg6p~__()$%+.$i4004400000000000lllf|/&#+.",
-"@)(::::86g67}8dgm8__5('=#@+.@}maaa|n000nln000n13f^i,=#+.",
-"+$&);;;<mbc}/p6g6p5(,>&$%@..+=5}~~i4000l3q000q99^]!-%@..",
-".++##*=:cbp_j}cmc}j'&=$#++...+@$=-,a00q39ln0n19{!,=$%+..",
-".+++##*ecb<!'5p7p_j>-*#@@+...++@$&,|0049{oqnq39{/-=#@+..",
-"..+@%$#e[6<5,j_[<_:(-*$@+.....+@%=*|00qo{o1044|9/-=#@...",
-"...+@@$([6_(-(5__}<5>$#%@......+%%=m0029/^f31149]-$%%...",
-"....+@#(_6_(->,e:_<e>$#@+.......+#$m402^/]^9324a]-$#+...",
-"....+@@;<6_;&&>>(_[_'=$%+.......+%%i402i!!]~9202{,=%@...",
-".....+%;<8:;====;_[<(*$#@+.......+#i40ai,,,,i304^,=$@+..",
-".....+@;_8:;$$$*)e[_(&$#++.......+%p20a~----_|02m!-$@+..",
-"......+)e[(&####=;;;';&*@+........+}|0m!$$$$,~iii]5-#@..",
-".......&(_;=#@#@#*=&;(;=#@........+5m2p,$%$#$-,5~mp,$@..",
-".......*;e)*@+@+@@%$&(;=$++........)p|})%@@@%%#&5mi,&@+.",
-".......#*&*@@++++++#$==$@+.........$>5-#@+++++@$&,,&@+..",
-"........+@@+....+.++@#@+............@@@+....+.++#$#@....",
-"........................................................",
-"........................................................",
-"...........+++.........................+++..............",
-"........++@###@++...................++#$=$%++...........",
-".......++@$)(&*+++.................+@@-}m5-@@+..........",
-".....++@@#;:<e)#@+@+.............+@%#$~a4|/$%@@+........",
-"....+@%##$;_8:;$$%@++...........+@#$$=i401~=&##@+.......",
-"...+@@##$=e[6_,=$$#@++.........@#%$=-,|004^,-=$%@+......",
-"..@@#$$===:cb[(*=$$$%++.......@@$=-,,jf0009,,-==#@+.....",
-".+@#$&&&->_cdc:>-==*$%@+.....@%$-!!!/]1000f]/!!-=$@+....",
-"+%#=':__5([6h8_jj:5';=$@....+#$,{a33o94000399oo^~,-%....",
-"+#*):76c[_cbkbc__[c_e;&#+...+$,/10004l0000032404|~5=+...",
-"@$*'[bkbc~6dhb7}cc68_()=+...#=,i4000nl0000nl00002m}-@...",
-"+$*-<6d8}_pdhmc:}[8[_(;*+...@=,/4000l3n0000f10002m~>@...",
-"@$*&<6d8_5p7g7}j:<[<:(;$@...@=-/200n194000l93404am~-@...",
-"+#*&_8dp5,[7g7_>j_[<:(;*+...@$-!100qo^l00n1{9304am~>@...",
-"@#$=_7gc_jpbh7}5_<8<:(;*@...@$-j100qlo40003f34041m~>@...",
-"@#$=_7dm<_8bhbc_<c7[_()*+...%$=!a0004ln000n340002m}>@...",
-"+##*_6g6c~7gkb7_c768_()*@...@$=,10000400000400004m/)@...",
-"+%#$(<8[_:c6h7[:__8<:;)$+...+#$-90001fn0000f2404ai/&+...",
-"+@#$;:<e(,<7g7_'e:::;)*#+...+@$*~f2f^{20001{9|2ai},$+...",
-".+@#*)'--&e8b<(-)'(())*%.....@%$,}i//!|0009/}imi~5)$....",
-".++@$=)&**e[6[(==))&=*#%.....+@%=,/!,,|000^,!/~5,>$%....",
-"..++##$***ecb_(=$=**$@+.......++$=--->|002^,-,)>=#%.....",
-"....+@@%#$(<b_;$$#@++...........+@%#$*m002i=*$#@@.......",
-".....++@@#;_8_)%@%@+.............+@##$p202}$%#@+........",
-".......@@@):[e&#@++................%@%}|0r!$%@+.........",
-"........++&;_;&+@+..................++5i2i,@@+..........",
-"..........*)()$+.+...................+>}m}&+.+..........",
-"..........@$=$+.......................%&,=%.............",
-"...........+++.........................+@+..............",
-"........................................................",
-"........................................................",
-"...............++++++......................++++++.......",
-".............+@###@@@++..................+%==$%#%@+.....",
-"............+#*&=$*$#@@+................+$>5,--&$%#+....",
-"............+$&;;&=**$$+................@&5i~!,,-&=@....",
-"...........@+&':e'-&&*$@+..............%@,i1|i/!!,=%+...",
-"..........+@#):c<:'>-&=#+.............+#$/a02f^]/!,$+...",
-"..........@@#;<7[<(('>=#+.............@%$i200199i~,&@...",
-".........+@##(<68[_:'>=$@............+@$=^40001fi],=@...",
-".........++#$;_c[[<_(&$#+............+%$-i300041^!-$@...",
-".........+%$*>e<p87<(&$@@............%%=-]f440049!=#@...",
-"........+@#*&,e}pc7[,&$%@+..........+%=-!^flqn04^!=$@+..",
-"........++$&;:<8877<(-$#++..........+@=!~f4nnn049/-$@+..",
-"........+@$>(_cm7c8}e-=$++..........+@-]^10000n4|/,=@+..",
-"........@@=>e_8d77c_5>=$%+..........@#,]m4000n0l9],-#+..",
-".......+@@$-'_cb78p_e>-$@+.........+@%-/{3000n4lf]/-#@..",
-".......+@#$=-_8bmc}}5'-=#@.........+#$=!/1n00nl1f{/,$@..",
-"......+@@%**-jp668<_5'>=%@+.......+%#$-,/9q00n43f^],$@+.",
-".....@+@#$*=&:[b7i8<_e'&$++......@%%$=-,!fq00nn43|{!=@+.",
-"...++@%##$*=-!}76878}_(&$@+....++@#$==,!/9l000nn419!&%+.",
-"...++@#%*$==-5~877m8p_5)#@+....+%#$$--,!/oln0000q1f/=%+.",
-".+@#*=&->>,je<[8788c<:'&%@+..+#$-,!/]]^994q0nn0n4|i!$#+.",
-".+#$);e(e:__c[p[c88[e(-=%@+..@$-/i9|99140nq0nn04f^/,%@+.",
-".%*=':___<[8678pc[[<(-*$@+...%-,ia222400000400049/,=#@..",
-".@#*)(::::_<<_:e5:_5('&$@@...%$>}maaaa2222afffaf^i!-@%..",
-".+@$)'eeeee((;,;>'>'(;;*%+...@#=/i||||9^mi{~]i]i^i~,%+..",
-".+@@=;;';;)*$*$*$$$*'e'&+....+@#,~iiii/,----=--,i|i,%...",
-"..++$&)))-=*$###$%#$&))$+.....+@>,/}}/,-=$*$=$$-5}}=+...",
-"...+@#$$**##@%@+@%@%$$#@.......+#$-=--=$##%%##@#=-$#....",
-".....+++@@@@+@+@++++.+...........++@@@@@%%+@++++.+......",
-"........................................................",
-"........................................................",
-"...........++++........................++++.............",
-".........+@#$##@++...................+%=-=$%@+..........",
-".......+@+$&))=*#@+................+@@&5}/,-$%+.........",
-"......++%#&;e;)=*#++..............+@#$5p|i/,-$@+........",
-"....++@%##;:<:'=$#%@+...........+@##$=]a4aij-$#%+.......",
-"...+@###=$([6<'&$$$@+@.........+@$$=--^004^!--=#@@......",
-"..++@$$$=&:cg[:==*$$%++.......+@#=--,!|000f!,--=#@+.....",
-".+@#&'e(''<bh6<j,>-&=$#@.....+%$5i|^{^000029{{/!,-=%....",
-".+$=(<8<__7dybc__:e(';=$+....@=,m400110000031f|m{},&+...",
-".#$)<6gb8[bhxgbi[[__e(;$+....$-/40000000000n0442|m~-@...",
-"+@$=<bg6c[7dhg6cc<<:e;)$+...+#&540000400000n044a|i}&+...",
-".@$=:7d8_5<8b88c[_ee')=#+....%=,20001o4n00nnqlf|i/,=+...",
-".@#*:8d<:>!}[p<~__(;)*#@.....%$>|004a{o1q44l1a^i/-=@....",
-"+@@*:86<5'j:_~[p_5'>=*#@....+##>a0049{9f1lq41f^],-$%....",
-".@@$e86<(,,j5_p8_(>&$#@@.....@%-|0049{^9o1qn29]!-$#%....",
-".@@$([8<5>,>,:[6[j&=##@+.....@#=m004o{^{{30049!,=$@+....",
-".@@$([8<j',>,:<6<j&*$%@+.....@#=m0019{^{{o4049!-=##+....",
-".+@#;:[:_:jj,_<8<e-=##++.....+@=pa02ao99^14n4|/,=$@+....",
-".+@@)(:____:e_<<_'>&*@%+.....+@#}ma2113of3403^]!-%#+....",
-"..+@=(e:<<__5__<:(>)*#++......+%,i|a4021f112||]/-$@@....",
-"..+@$=):[7<<:5('(:e(;=$%+.....+%>5_a0002|f9m^||m~,&#+...",
-"...+@$=ecb8<:(;-;e<e(;&#+......+#=,a0004a^~/i|4a^~5=+...",
-"....@@#e[dc<:;&$)(<_e;&$+.......@#$|0004ai!-/|42|p5=+...",
-"....++%)(_e;;&*#=)(;;)=#+.......+@#5|2ri~!>$,}mi~/,=@...",
-".....++%&&&**$#@%$*===*#+........+@$,55)>=$%$=-(,,>$+...",
-".......++@+@++@%@++@$$$%+..........@+#@@@@%%@%@@&)&#+...",
-".........++++@++++++@#@+.............++++@++++++#$%+....",
-"....................+++.........................+++.....",
-"........................................................",
-"........................................................",
-"........................................................",
-"........................................................",
-"......++@+@+@+@+@+++..............+@@@@@@@@@@@++........",
-"....++@@%@##%#%@%@@@++..........+@@@##$$#$###%#%@+......",
-"...+@%###$#####$#$##%@+........+@#=$==$=$===$=$$#%+.....",
-"..++*)'>&*&$*$$#=&>)&$#@......+@-/i]!,,--=-=,!]/!-=%....",
-"..+#)e_:,>-==$==-':(;&=#+.....+$}|2f^]/,,-,,/ia|~5,$+...",
-".++#(<c_(,>-=&**>:<_e'&#@....+%$^4029{]/,!,,{f42|i!=@...",
-".+@#([8<5>>-*&&&,e<<e;)*+....+@=m0049{]/,!!!{f44|i}-@...",
-".+%#([8<e>--&&==,e<<:(;*@+...+%&m0049{//!j,!{944|^~>%+..",
-".+@$([8_(,--&&=&>:_<:(;=%+...+#=m0039{//!!!!{a423m~,#+..",
-".+@$([8<j--=&&&&':<_:('=@+...+%&m0029]/!!j!!{f4419i,#+..",
-".+@*([7<(,-&==&&>5[<_e;=%+...+#-|0049{/j,,!!{f42a9i,%@..",
-".@@$([8}j--==&=&>:<_:e;=%+...@%=m0019]/!,j,!{344a|ij#+..",
-".@%$([8<(,--===&,5[<_e'=@+...%#-m0019{//,!,!{fq4f|i,%+..",
-".+@$([7_j--====='5<_:('=#+...+#=|001^]/!>,!j{f44a9i,$@..",
-".+@$([8_(--&=*==,:[<_e'=@@...+#=m0019]/!,,,j{3q41|i,#@..",
-".+@$([7<5,,--->-j_[<_(;&@+...+#=|0049^{]//]/93041|{,#+..",
-".+@$([8[_e!j,,,(:<7[_e'=%+...+@=m0003o99{^^^a40029i,#@..",
-".+@#([7[[__:_::_<868<e;=%+...+#$m0004413afa140002|~,#+..",
-"..+#;<8c<_::eeee<[8c_e;=@+....@$i40041afff|f40001|~,%+..",
-"..+#;<[_e('';>',e_c<:';*++....@$i402f^i{~~{{9204a^~>@+..",
-"..+%;:[:'-&*=$=*>(<::;;*@.....+#pa0|i/!,,-,,]|42ai~)%...",
-"...@)e_()***$#$$&;ee';&$+......@}|2m/,--===-!i||ii5=+...",
-"...+$&)&$$##%##$*&))&)$#+......+=5}5-=$$$$$=-!_/55-$+...",
-"....+###@@@%%@@%%#$$###.........@$=$%%#%%#%%#=*&=$$+....",
-"......+++++++++@+@@@@+@...........+++++++++%@@#@#%@.....",
-"........+.+......+++................+.+......+++........",
-"........................................................",
-"........................................................",
-"........................................................",
-".......++++++++++..................++++@+++++...........",
-".....+++@@@%@@+++@+++............++@#####%@@@@@++.......",
-"....+@#####$$#$##%@++@+.........@#$$$$$=&$=$$#%@@@+.....",
-"...+%$*$$*$$**$*##$#%@%+.......+#=------,---==&$##%@....",
-"...@#&-------&-&&===*$#@@+.....@=!///////!/!!!,,--$%@+..",
-"...@&e____:5jj!5555(,(;=#@+....#!|2133o999oo99f9^^~,&%+.",
-"..+#(<7877[<_<<p[[[[<_e;=#@...+$m40000nl314qq00042ap,&@.",
-"..+#([b6bb78<p878888[[_'=$+...+$m000000n4qn0n000002i,=@.",
-"..+@)(_<88c8pc86c<_::e()$#@...+%}m20000nq0n0041fa|m5&$@.",
-"...+$=)e_ppcc877p_';;))=@+.....+&'}|24qnn0n043^{i~/,#+..",
-"...++#$)e_[}[i66[5>&&&=#++.....+@$*]f144qn00q9]!!!,$@+..",
-"....@@#&>(5__p8bc5-&=$$@+.......%#$,~^ff1q000o/!,-&%+...",
-"....++@$*->>,<cb[5-*$##++.......+%#=,/]{^3n00f/,-=$%+...",
-".....+@@#$*--_pdce**$%%+.........+@#$=,//10009,-=%#+....",
-"......+@@$$=&(c6<j=$$@@+..........+@#=-,!90049,-=#@+....",
-".......+@@#$='<6<(*$#%+............+@#$-,^401^,==%%.....",
-"........+@##*'_c_,$$#@+.............+%$$-i202{-=$@+.....",
-".........+@%#-:[_'&$$%+..............+#%=]|02{!-=#@.....",
-"..........+%#)e_e(-=#@@...............+#$/|2|^/,=%@.....",
-"..........+@@=;:e;;&*@+...............+@#(i||ii!-@@.....",
-"...........++$);'((;=$@+...............+@&/ii^m~,&%+....",
-"............@#*&)(e()=$@................@$-5}^am},&#....",
-".............++%&(_e;&*@.................+@#5m2|i5)%....",
-".............+@+*;e(;=*%.................+@@)~|m~,>#....",
-"..............+@#*&)**$@..................+@$>55,)&%....",
-"................++@####@....................+@#$$$$%....",
-"..................++@@++......................++#%@+....",
-"....................+@+.........................+%+.....",
-"........................................................",
-"........................................................",
-"........................................................",
-".........++@+@@+%+@@+++..............@+@@%@@%@%@@++.....",
-".......+@@#&)**#*=&&*#@+...........+@%&,/,-$-,5!,=%+....",
-"......++#$);:'&#&(e(')*#+.........+@$&/iai!=5^ami5,$+...",
-"......+@$=(<8:'=;_c<e'&#+.........+#=,m40ai,{a00ai5=@...",
-".....@@$$=e[7_'&;_8[_(>*%+.......@#=-,|004{!i200am]-#+..",
-"....+%#*=&e<b<(&(_[<_(;=@+......@#&-,5|0049!^1041m~,%@..",
-"....%$*==):[d<5>'_[<_e;&#@+.....#=),!}a000f]{1043|i!$%+.",
-"....@*&));_7d8:>:_c[<_()$@+.....#-5!/~2000f{f1n4419/-%+.",
-"....$=);(([6g7[5_c88[__;&$@.....=,_i^|0000qf1000q4ai!&#.",
-"....$&;e:<cdg68}[7b67c[e)=#+....&5i||40000n1q00000q|_,$+",
-"....$&;ee_cbhbc_p86688<e>=#....+=5p|az000001q000004|],$.",
-"....@$=&;(<6g7[e}p87c<:;=$@.....#=,5~m4000qf1q0004ai,=#.",
-"....++#$*&:8dc:,:<8[<:e)$@@.....+@==,5a0003{31n4qa|/>#@.",
-".....@+#$$e[dc5,j_p[_e(&#@+......@@$=-|000f{91q41f^!$#+.",
-".....+@@$*ec6[e-j_c<_:(&#@+......+%#=-|000f]910q1fm!$@+.",
-"......+@$#e[d[:-(_p[_5;&#++.......+%==|000f/^1401fi5$@+.",
-"......+@%$e[b<5-j:[<_e'=#@.......++%$*|0009]93q419i,$%..",
-"......++##([d[5-,_[__:;&@+........+%$=m000o/^3041fi!%@..",
-"......+@@$([b[e>,_p<:e'=%@........+@#=m0009]^344a|i,#@..",
-".......@@#(<b[e-,_<[_(;=@+.........@%$m0009/{10439i,#+..",
-".......+@#([d[_,e<c<_e'=%+.........+#$m0003^f4n02|i,#+..",
-".......++#(8d8<e_c7[_e;$@+.........+@$^0002f10002|~-#+..",
-".......+@@(cg6[_<868_(;*@..........+%#m0000240002m~>@...",
-"........++):[_e(::[_e;&$+...........+@}a02|^a242|i!=@...",
-"........++*;(;)=;(e(;)=#+...........++)pmi_!~m|^p/,$+...",
-".........++#$$$%*=))=*#@.............+@$=&*$-,_/(>=@....",
-"..........++@@@@$$=$$##+..............+@#%##=-,-=$$+....",
-"...........+@++++@##@++................+%++@@#$$%%+.....",
-".................+.+.........................+.+........",
-"........................................................",
-"........................................................",
-"...+@###$##@+%+@+@+++..........+%$===$$%@%@@@@+++.......",
-"..@#=;';&&=*##$$$#@++++.......%$,]i]/!,-$=&-==#@@++.....",
-".@#$;:_:e'-=*==&=*$$%@+@+....%$-ia2||{/,-,,!,-=&$%@@+...",
-".@$=e[8<_e'-*&);>)**$#%+++...%&(|0002f^/,!/]]/,-=$#@@+..",
-".+#*;:[__:(5,((5e::((;)&*#@..@$>ia021f99^99f|fa|^]}!>=@.",
-".+@$)e::::___}___[7c<_:';&#+.+#=_|a|af132121400042|i~5&+",
-".+@#&;(e:5_888[c7bgg78[_e'*@.+#$!]m9ff1n000000000002|i>@",
-"..%@=)>(5_[[8[__[8668<<:;)$+..%#,/{9f14400110000002ai_=+",
-".+@@$&>,:_~<8<:,_[88<_e;)=%+.+%%&!]^fll001f^140042ri/($+",
-"..+%#$-'/<<[p:j-'_<<_e;)$#@+..@#=-!^34q4q19/^1442|i5-$#+",
-"..@%$=-(_[p<[:'-'(::::()##+...@%=,/924q44f{/{91aff^/=$%.",
-"..@@*)':<8[[_5'=-;(':ee)$%@+..%#,/io4nqq1f{!/~^^a||/=#@+",
-"..@%=>(_[8c<_e,=&&-;e_e;$@+...@#,]^100n44f{j!j/i92a~-#@.",
-"..@@&(:_p[p[_j>=**=;e_:;$%@...%%59a1q0q419],,,,]|4|~=%%.",
-"..+#'_c<_:___(>==**;:[_;*@+...+$i2043f1119],,,,]a04i-@@.",
-"..@#ec7[5,(e_(>==**;:8['$@@...%=|000f{9|2^],,--~200i-%@.",
-"..+#(c6_'>,:_j-***=;_8[($@+...+$m002^]^a2^/,-,,]200m-#+.",
-"..++&(:;)&(<[:>=*==;:7c'*%+...+@5mai}!^101],-,,~20ni>#+.",
-"...+$=)&==(<7_'*=$=;_7[($++....@=,5!,,m402{,,-,p200m*%+.",
-"....+%$##$([8<,&&&&(:8[($@+.....@$==*-^004{!!j!^z00m&@+.",
-"....++%%##;:[<:(::__[[:)#+......+@%#$=pa04a9|a2200a}=@..",
-"......+@%#)e<[[c[88c[:e&#@........+%#$}|4000000002|5$%..",
-".......++@=;:<[866d8[e;=@+.........+@@,ia40000000|p,%+..",
-"........++$=);::_:__;)=#+...........+@&(}iaaa222i_,$+...",
-"..........%$*=);;;;;&*$@+.............%&-,}ppii}5>&#+...",
-"...........+%%$****$#++................@#$&>>))=$@+.....",
-"............+@@####%@+..................+@#$$$$$@++.....",
-".............++@+++++....................+@@@@%++.......",
-"................+...........................+...........",
-"........................................................",
-"........................................................",
-".........++++........................++++...............",
-".......@$==$$#+++++@@@++...........%-,,-=$@+++@@%%@+....",
-"......+$);))&=$@@@@#$=$+..........+&}i~}5,&%#%#$&>&@....",
-"......+='e(;;&*%%##$$=*#+.........+,i|mii!-##$=--,>*+...",
-"......+*(eeee;&$*=&;(e'&#+........@(i|r||~!=-,5~m|i5$+..",
-"......@=;e:__(>$&)'(:[_;$+........@,p|av2|]-!/ima02p=@..",
-".....++=;e__[:'=-;(:[8[($%+......+@(i|140f{,/]^1000m-#+.",
-".....++*&;:[8_'&;e__<<e;*@+......+%-5pa001^!~|2z44a~>%+.",
-"......@$*):[6<(-':<<::'&*@+.......@=,/|0049/^o04aai5>#+.",
-".....++%$*:[dc5>(_8[e;)=$#+......+%%&,f0009]9200|i},=$@.",
-".....+@%$=e[6c}5__<_()=$#+.......+@$=,900nlo1102m/,-$@..",
-".....+@##$e<77[[[__e;&*#@+.......+%$=-9400044l3|~!-$%+..",
-".....+@#$=,_c876[<e(=$#+++.......+@=-,^1n00002f^!=$%++..",
-".....+%#$=e<876d8<e;&##@+........@%$-,92n000019~!=$%+...",
-"....+@@$*=,_[mbg6_'>&$@%+.......+%#=-,^1000001^]!=%#+...",
-"...++%##=&j_c6gh6~'-$$#++......++#$=,!93n00004{/-=*%+...",
-"...+@$=->':_p86d8<e;-##@+......+#-,/]^f1q00004f{/=$@+...",
-"..+%=);:<[c[cp[pccc_'$#@+.....+#,/if2000040qn002i-$#@...",
-"..+#&;:[6d88<<:e<868e&#%@+....%$5i|0000n44a94000|!=%@+..",
-"..@$)e_[868[_:';:<6[:&*#@+....@=}|2000044f^i|q00f5-*%+..",
-"..+#)e__<<ee;>-&;(ee(;)=##+...@$}|2244||i]/!pm||mi},&$+.",
-"..+#)e_:e(;&*=$$==);;(;)=$@...+$_|2||m~!-,--,,}~pmi/,=%.",
-"...@&(:;;&=$#####%$=);;)=$@....%5m2i~5,-$$$$$$=,}ic/,&#.",
-"...+$&;&**$@@%@+@@@#*&=$%%+....+=5}5>-&#%##@@%#$>,,&$#+.",
-"....+@%#@@++++++++@+@@@@@+......@#$$%@@+++++++@+%###@+..",
-"........++++.........+..............++++.........+......",
-"........................................................",
-"........................................................",
-"........................................................",
-"........................................................",
-"........................................................",
-"...+@@#@+++....................+%%$%@++.................",
-"..++#*$$#@+...................+@*--=$@@.................",
-".+#$=&)=$$%@+................@$=,5/!-=$@+...............",
-"@$&>(eee'>=#++..............@&5~^|a|i],=@+..............",
-"+&(:_<[_:e;*@++.............@5ma24011m~-#@+.............",
-"@)':<[8<<:'=#@++............@5m|400042{,$@++............",
-"+$&;e<[<<<(-##@+++++@##+@...+&5p|40444m/=$%@++++%$$@@...",
-"+@$=(:[[[<e-*#%%+++@#$##%+..+%&,ma0000|/-$##@@@#$==$#@..",
-".+@$;::[[c:>$##%%%%#$&=$#@+..@#&~a240na]-=$###%=>!,-$@+.",
-".@@%&(:[76<(=*$#$*=;;:;&#+...@@$5^|0004^,-===-,/i|i5$@..",
-".+@@&)e[7g[,=$$#*);(:<:)$+...+@#!~90000^,-==-/~ma4|}=+..",
-"..+%$&;[bh8(&=$**;(e<[_;#+....@%-!i000q9!,--,~ma404~$+..",
-"..+@$=):cdc5>-=*-;:::e(*@+....+@&,/1000f]/,-/iaaa|m,#@..",
-"....##=:[8<:,>&$;(_:(;&$@+.....+$=,|000f^]!-]m2amp5&@+..",
-"...+@@#'_8[_e,-*;e<:;=$#+......+@%={20q1o^/,]|4|i,=$+...",
-"....+%$)(_<[c5>=&;(;&$#++.......%#=}m22009],5~mp5>$%+...",
-"....++%=>(_c6<,=&&)&$#@+........+@%,]^100q^,!!}!=$@%....",
-".....@@#$&_8hce=**#$@@@+.........%#=-510009,,-==##@+....",
-"......+%$=(<8<e'-=$##+@+..........+#-,m404f{/,=$$%@+....",
-"......++@$)(::__e&*##@++..........+@#=/m|a239/-$$@@+....",
-".......+@@#=)e_c:;#$@%++...........+##=,/|20a]==##@+....",
-"........@%#$=;e_:(;&$#@+............@%$-,i|2a^]!-$%+....",
-".........+@##&;(eee(&#@@.............+#$=5~||||^!=#%....",
-"..........+@@$=&(:[:'=#%..............+@%=,j^20ai,$#....",
-"...........++#$*)(:e;=*@+..............+@$&,_m1r],-%+...",
-"............++@$*&;);)&$+...............+@%*>5~}~}5&+...",
-"..............++%#$=&;)#+.................+@%$&,5~/&@...",
-"...............++++#*)&$+..................++@@&-}5=+...",
-"................+.++#$#+....................+.+@$=$@....",
-".....................++..........................++.....",
-"........................................................"};
diff --git a/hacks/images/noseguy/nose-f1.xbm b/hacks/images/noseguy/nose-f1.xbm
deleted file mode 100644 (file)
index 543af3e..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#define nose_f1_width 64
-#define nose_f1_height 64
-static unsigned char nose_f1_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x08,0x00,0xc0,0x1f,0x00,0x20,0x00,0x00,0x08,0x00,0x30,0x60,0x00,0x20,0x00,
- 0x00,0xf8,0xff,0x0f,0x80,0xff,0x3f,0x00,0x00,0x00,0x02,0x02,0x00,0x82,0x00,
- 0x00,0x00,0x00,0x03,0x01,0x00,0x84,0x01,0x00,0x00,0x00,0x81,0x00,0x00,0x08,
- 0x01,0x00,0x00,0x80,0x80,0x00,0x00,0x08,0x02,0x00,0x00,0x80,0x40,0x00,0x00,
- 0x10,0x02,0x00,0x00,0x40,0x40,0x00,0x00,0x10,0x04,0x00,0x00,0x40,0x20,0x00,
- 0x00,0x20,0x04,0x00,0x00,0x60,0x20,0x00,0x00,0x20,0x0c,0x00,0x00,0x20,0x20,
- 0x00,0x00,0x20,0x08,0x00,0x00,0x20,0x20,0x00,0x00,0x20,0x08,0x00,0x00,0x10,
- 0x20,0x00,0x00,0x20,0x10,0x00,0x00,0x10,0x20,0x00,0x00,0x20,0x10,0x00,0x00,
- 0x10,0x20,0x00,0x00,0x20,0x10,0x00,0x00,0x10,0x40,0x00,0x00,0x10,0x10,0x00,
- 0x00,0x10,0x40,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x80,0x00,0x00,0x08,0x10,
- 0x00,0x00,0x10,0x80,0x00,0x00,0x08,0x10,0x00,0x00,0x30,0x00,0x01,0x00,0x04,
- 0x18,0x00,0x00,0x20,0x00,0x02,0x00,0x02,0x08,0x00,0x00,0x20,0x00,0x0c,0x80,
- 0x01,0x08,0x00,0x00,0x60,0x00,0x30,0x60,0x00,0x0c,0x00,0x00,0x40,0x00,0xc0,
- 0x1f,0x00,0x04,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0xc0,0x0f,0x00,0x00,0x00,
- 0x00,0x40,0x10,0x20,0x10,0x00,0x00,0x00,0x00,0x20,0x60,0x30,0x20,0x00,0x00,
- 0x00,0x00,0x20,0xc0,0x18,0x20,0x00,0x00,0xc0,0x7f,0x10,0x80,0x0d,0x40,0xe0,
- 0x01,0x70,0xc0,0x18,0x00,0x05,0x40,0x1c,0x06,0x10,0x00,0x0f,0x00,0x05,0x80,
- 0x07,0x08,0x08,0x00,0x06,0x00,0x05,0x80,0x01,0x08,0x08,0x00,0x18,0x00,0x05,
- 0xc0,0x00,0x10,0x04,0x00,0x30,0x00,0x05,0x30,0x00,0x10,0x04,0x00,0x00,0x80,
- 0x08,0x18,0x00,0x20,0x04,0x00,0x00,0x80,0x08,0x00,0x00,0x20,0x04,0x00,0x00,
- 0x40,0x10,0x00,0x00,0x20,0x24,0x00,0x00,0x40,0x10,0x00,0x00,0x22,0x24,0x00,
- 0x00,0x40,0x10,0x00,0x00,0x22,0x44,0x00,0x00,0x40,0x10,0x00,0x00,0x11,0x84,
- 0x01,0x00,0xc0,0x18,0x00,0xc0,0x10,0x08,0x00,0x00,0x80,0x08,0x00,0x00,0x08,
- 0x30,0x00,0x00,0x80,0x08,0x00,0x00,0x04,0xe0,0xff,0xff,0xff,0xf8,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
diff --git a/hacks/images/noseguy/nose-f1.xpm b/hacks/images/noseguy/nose-f1.xpm
deleted file mode 100644 (file)
index a6e03bf..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* XPM */
-static char * nose_f1_xpm[] = {
-"64 64 7 1",
-"      c black         m black",
-".     c black         m white",
-"X     c gray          m black",
-"o     c yellow        m black",
-"O     c yellow2       m black",
-"+     c purple        m black",
-"@     c purple3       m black",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                      .....................                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"           ...........................................          ",
-"           .XXXXXXXXXXXXXXXXXX.......XXXXXXXXXXXXXXXX.          ",
-"           .XXXXXXXXXXXXXXXX..ooooooo..XXXXXXXXXXXXXX.          ",
-"           .................ooooooooooo...............          ",
-"                 .OOOOOOO.ooooooooooooooo.OOOOO.                ",
-"                ..OOOOOO.ooooooooooooooooo.OOOO..               ",
-"                .OOOOOO.ooooooooooooooooooo.OOOO.               ",
-"               .OOOOOOO.ooooooooooooooooooo.OOOOO.              ",
-"               .OOOOOO.ooooooooooooooooooooo.OOOO.              ",
-"              .OOOOOOO.ooooooooooooooooooooo.OOOOO.             ",
-"              .OOOOOO.ooooooooooooooooooooooo.OOOO.             ",
-"             ..OOOOOO.ooooooooooooooooooooooo.OOOO..            ",
-"             .OOOOOOO.ooooooooooooooooooooooo.OOOOO.            ",
-"             .OOOOOOO.ooooooooooooooooooooooo.OOOOO.            ",
-"            .OOOOOOOO.ooooooooooooooooooooooo.OOOOOO.           ",
-"            .OOOOOOOO.ooooooooooooooooooooooo.OOOOOO.           ",
-"            .OOOOOOOO.ooooooooooooooooooooooo.OOOOOO.           ",
-"            .OOOOOOOOO.ooooooooooooooooooooo.OOOOOOO.           ",
-"            .OOOOOOOOO.ooooooooooooooooooooo.OOOOOOO.           ",
-"            .OOOOOOOOOO.ooooooooooooooooooo.OOOOOOOO.           ",
-"            .OOOOOOOOOO.ooooooooooooooooooo.OOOOOOOO.           ",
-"            ..OOOOOOOOOO.ooooooooooooooooo.OOOOOOOO..           ",
-"             .OOOOOOOOOOO.ooooooooooooooo.OOOOOOOOO.            ",
-"             .OOOOOOOOOOOO..ooooooooooo..OOOOOOOOOO.            ",
-"             ..OOOOOOOOOOOOO..ooooooo..OOOOOOOOOOO..            ",
-"              .OOOOOOOOOOOOOOO.......OOOOOOOOOOOOO.             ",
-"              ..OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..             ",
-"                .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.              ",
-"                 ................................               ",
-"                                                                ",
-"                       .....          ......                    ",
-"                      .+++++.        .++++++.                   ",
-"                     .+++++++..     ..+++++++.                  ",
-"                     .++++++++..   ..++++++++.                  ",
-"      .........     .++++++++++.. ..++++++++++.      ....       ",
-"    ...+++++++..   ..+++++++++++. .+++++++++++.   ...++++..     ",
-"    .+++++++++++....@+++++++++++. .+++++++++++@....++++++++.    ",
-"   .+++++++++++++..@@+++++++++++. .++++++++++@@..++++++++++.    ",
-"   .+++++++++++++++..@++++++++++. .+++++++++@@..++++++++++++.   ",
-"  .+++++++++++++++++..@+++++++++. .++++++++@..++++++++++++++.   ",
-"  .++++++++++++++++++++++++++++.   .+++++++..++++++++++++++++.  ",
-"  .++++++++++++++++++++++++++++.   .+++++++++++++++++++++++++.  ",
-"  .+++++++++++++++++++++++++++.     .++++++++++++++++++++++++.  ",
-"  .+@.++++++++++++++++++++++++.     .++++++++++++++++++++.+++.  ",
-"  .+@.++++++++++++++++++++++++.     .++++++++++++++++++++.@++.  ",
-"  .+@@.+++++++++++++++++++++++.     .+++++++++++++++++++.@@+.   ",
-"  .++@@..+++++++++++++++++++++..   ..+++++++++++++++++..@@++.   ",
-"   .++@@++++++++++++++++++++++@.   .@++++++++++++++++++@@++.    ",
-"    ..@@@@@@@@@@@@@@@@@@@@@@@@@.   .@@@@@@@@@@@@@@@@@@@@@@.     ",
-"     ...........................   .......................      ",
-"                                                                ",
-"                                                                "};
diff --git a/hacks/images/noseguy/nose-f2.xbm b/hacks/images/noseguy/nose-f2.xbm
deleted file mode 100644 (file)
index 6851b20..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#define nose_f2_width 64
-#define nose_f2_height 64
-static unsigned char nose_f2_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x08,0x00,0xe0,0x0f,0x00,0x20,0x00,0x00,0x08,0x00,0x18,0x30,0x00,0x20,0x00,
- 0x00,0xf8,0xff,0x07,0xc0,0xff,0x3f,0x00,0x00,0x00,0x02,0x01,0x00,0x81,0x00,
- 0x00,0x00,0x00,0x83,0x00,0x00,0x82,0x01,0x00,0x00,0x00,0x41,0x00,0x00,0x04,
- 0x01,0x00,0x00,0x80,0x40,0x00,0x00,0x04,0x02,0x00,0x00,0x80,0x20,0x00,0x00,
- 0x08,0x02,0x00,0x00,0x40,0x20,0x00,0x00,0x08,0x04,0x00,0x00,0x40,0x10,0x00,
- 0x00,0x10,0x04,0x00,0x00,0x60,0x10,0x00,0x00,0x10,0x0c,0x00,0x00,0x20,0x10,
- 0x00,0x00,0x10,0x08,0x00,0x00,0x30,0x10,0x00,0x00,0x10,0x08,0x00,0x00,0x10,
- 0x10,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x00,
- 0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x20,0x00,0x00,0x08,0x10,0x00,
- 0x00,0x10,0x20,0x00,0x00,0x08,0x10,0x00,0x00,0x10,0x40,0x00,0x00,0x04,0x10,
- 0x00,0x00,0x30,0x40,0x00,0x00,0x04,0x10,0x00,0x00,0x20,0x80,0x00,0x00,0x02,
- 0x18,0x00,0x00,0x20,0x00,0x01,0x00,0x01,0x08,0x00,0x00,0x60,0x00,0x06,0xc0,
- 0x00,0x08,0x00,0x00,0x80,0x00,0x18,0x30,0x00,0x0c,0x00,0x00,0x80,0x00,0xe0,
- 0x0f,0x00,0x04,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x04,0x10,0x00,0x00,0x00,0xe0,0x00,0x07,0x02,0x10,0x00,0x00,
- 0x00,0x30,0x00,0x8c,0x01,0x20,0x00,0x00,0x00,0x0c,0x00,0x90,0x00,0x20,0x00,
- 0x00,0x00,0x04,0x03,0x60,0x00,0x20,0x00,0x00,0x00,0xc2,0x00,0xc0,0x00,0x20,
- 0x00,0x00,0x00,0x42,0x00,0x00,0x01,0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x02,
- 0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x06,0x20,0x00,0x00,0x00,0x21,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x18,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x10,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
diff --git a/hacks/images/noseguy/nose-f2.xpm b/hacks/images/noseguy/nose-f2.xpm
deleted file mode 100644 (file)
index 3763b58..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* XPM */
-static char * nose_f2_xpm[] = {
-"64 64 7 1",
-"      c black         m black",
-".     c black         m white",
-"X     c gray          m black",
-"o     c yellow        m black",
-"O     c yellow2       m black",
-"+     c purple        m black",
-"@     c purple3       m black",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                      .....................                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"           ...........................................          ",
-"           .XXXXXXXXXXXXXXXXX.......XXXXXXXXXXXXXXXXX.          ",
-"           .XXXXXXXXXXXXXXX..ooooooo..XXXXXXXXXXXXXXX.          ",
-"           ................ooooooooooo................          ",
-"                 .OOOOOO.ooooooooooooooo.OOOOOO.                ",
-"                ..OOOOO.ooooooooooooooooo.OOOOO..               ",
-"                .OOOOO.ooooooooooooooooooo.OOOOO.               ",
-"               .OOOOOO.ooooooooooooooooooo.OOOOOO.              ",
-"               .OOOOO.ooooooooooooooooooooo.OOOOO.              ",
-"              .OOOOOO.ooooooooooooooooooooo.OOOOOO.             ",
-"              .OOOOO.ooooooooooooooooooooooo.OOOOO.             ",
-"             ..OOOOO.ooooooooooooooooooooooo.OOOOO..            ",
-"             .OOOOOO.ooooooooooooooooooooooo.OOOOOO.            ",
-"            ..OOOOOO.ooooooooooooooooooooooo.OOOOOO.            ",
-"            .OOOOOOO.ooooooooooooooooooooooo.OOOOOOO.           ",
-"            .OOOOOOO.ooooooooooooooooooooooo.OOOOOOO.           ",
-"            .OOOOOOO.ooooooooooooooooooooooo.OOOOOOO.           ",
-"            .OOOOOOOO.ooooooooooooooooooooo.OOOOOOOO.           ",
-"            .OOOOOOOO.ooooooooooooooooooooo.OOOOOOOO.           ",
-"            .OOOOOOOOO.ooooooooooooooooooo.OOOOOOOOO.           ",
-"            ..OOOOOOOO.ooooooooooooooooooo.OOOOOOOOO.           ",
-"             .OOOOOOOOO.ooooooooooooooooo.OOOOOOOOO..           ",
-"             .OOOOOOOOOO.ooooooooooooooo.OOOOOOOOOO.            ",
-"             ..OOOOOOOOOO..ooooooooooo..OOOOOOOOOOO.            ",
-"               .OOOOOOOOOOO..ooooooo..OOOOOOOOOOOO..            ",
-"               .OOOOOOOOOOOOO.......OOOOOOOOOOOOOO.             ",
-"               ..OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..             ",
-"                .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.              ",
-"                 ................................               ",
-"                                                                ",
-"                                   .........                    ",
-"                ........          .+++++++++.                   ",
-"             ...++++++++...      .++++++++++.                   ",
-"            ..++++++++++++..   ..++++++++++++.                  ",
-"          ..++++++++++++++++.  .@++++++++++++.                  ",
-"          .++++@..+++++++++++..@@++++++++++++.                  ",
-"         .++++..++++++++++++++..@++++++++++++.                  ",
-"         .+++@.+++++++++++++++++.@+++++++++++.                  ",
-"        .+++@.+++++++++++++++++++.@++++++++++.                  ",
-"        .+++@.+++++++++++++++++++..++++++++++.                  ",
-"        .+++@.+++++++++++++++++++++++++++++++.                  ",
-"        .++++++++++++++++++++++++++++++++++++@.                 ",
-"        ..@++++++++++++++++++++++++++++++++++@.                 ",
-"         .@@+++++++++++++++++++++++++++++++++@.                 ",
-"         .@@++++++++++++++++++++++++++++++++@@.                 ",
-"          .@@@++++++++++++++++++++++++++++++@.                  ",
-"           ..@@@++++++++++++++++++++@@@++++@@.                  ",
-"            ...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.                   ",
-"              ..............................                    ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff --git a/hacks/images/noseguy/nose-f3.xbm b/hacks/images/noseguy/nose-f3.xbm
deleted file mode 100644 (file)
index e70f229..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#define nose_f3_width 64
-#define nose_f3_height 64
-static unsigned char nose_f3_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x02,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x04,0x00,0xf0,0x07,0x00,0x10,0x00,0x00,0x04,0x00,0x0c,0x18,0x00,0x10,0x00,
- 0x00,0xfc,0xff,0x03,0xe0,0xff,0x1f,0x00,0x00,0x00,0x81,0x00,0x80,0x40,0x00,
- 0x00,0x00,0x80,0x41,0x00,0x00,0xc1,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x82,
- 0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x02,0x01,0x00,0x00,0x40,0x10,0x00,0x00,
- 0x04,0x01,0x00,0x00,0x20,0x10,0x00,0x00,0x04,0x02,0x00,0x00,0x20,0x08,0x00,
- 0x00,0x08,0x02,0x00,0x00,0x30,0x08,0x00,0x00,0x08,0x06,0x00,0x00,0x10,0x08,
- 0x00,0x00,0x08,0x04,0x00,0x00,0x10,0x08,0x00,0x00,0x08,0x0c,0x00,0x00,0x08,
- 0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,
- 0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x10,0x00,0x00,0x04,0x08,0x00,
- 0x00,0x08,0x10,0x00,0x00,0x04,0x08,0x00,0x00,0x08,0x20,0x00,0x00,0x02,0x08,
- 0x00,0x00,0x08,0x20,0x00,0x00,0x02,0x0c,0x00,0x00,0x18,0x40,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x10,0x80,0x00,0x80,0x00,0x04,0x00,0x00,0x10,0x00,0x03,0x60,
- 0x00,0x06,0x00,0x00,0x30,0x00,0x0c,0x18,0x00,0x01,0x00,0x00,0x20,0x00,0xf0,
- 0x07,0x00,0x01,0x00,0x00,0x60,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x40,0x00,
- 0x00,0x00,0x80,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x20,0x00,0xff,0x00,0x00,0x00,0x00,0x08,0x40,0xe0,0x00,0x07,0x00,
- 0x00,0x00,0x04,0x80,0x31,0x00,0x0c,0x00,0x00,0x00,0x04,0x00,0x09,0x00,0x30,
- 0x00,0x00,0x00,0x04,0x00,0x06,0xc0,0x20,0x00,0x00,0x00,0x04,0x00,0x03,0x00,
- 0x43,0x00,0x00,0x00,0x04,0x80,0x00,0x00,0x42,0x00,0x00,0x00,0x04,0x40,0x00,
- 0x00,0x84,0x00,0x00,0x00,0x04,0x60,0x00,0x00,0x84,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x84,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0e,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
diff --git a/hacks/images/noseguy/nose-f3.xpm b/hacks/images/noseguy/nose-f3.xpm
deleted file mode 100644 (file)
index c60c5f3..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* XPM */
-static char * nose_f3_xpm[] = {
-"64 64 7 1",
-"      c black         m black",
-".     c black         m white",
-"X     c gray          m black",
-"o     c yellow        m black",
-"O     c yellow2       m black",
-"+     c purple        m black",
-"@     c purple3       m black",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                     .....................                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"          ...........................................           ",
-"          .XXXXXXXXXXXXXXXXX.......XXXXXXXXXXXXXXXXX.           ",
-"          .XXXXXXXXXXXXXXX..ooooooo..XXXXXXXXXXXXXXX.           ",
-"          ................ooooooooooo................           ",
-"                .OOOOOO.ooooooooooooooo.OOOOOO.                 ",
-"               ..OOOOO.ooooooooooooooooo.OOOOO..                ",
-"               .OOOOO.ooooooooooooooooooo.OOOOO.                ",
-"              .OOOOOO.ooooooooooooooooooo.OOOOOO.               ",
-"              .OOOOO.ooooooooooooooooooooo.OOOOO.               ",
-"             .OOOOOO.ooooooooooooooooooooo.OOOOOO.              ",
-"             .OOOOO.ooooooooooooooooooooooo.OOOOO.              ",
-"            ..OOOOO.ooooooooooooooooooooooo.OOOOO..             ",
-"            .OOOOOO.ooooooooooooooooooooooo.OOOOOO.             ",
-"            .OOOOOO.ooooooooooooooooooooooo.OOOOOO..            ",
-"           .OOOOOOO.ooooooooooooooooooooooo.OOOOOOO.            ",
-"           .OOOOOOO.ooooooooooooooooooooooo.OOOOOOO.            ",
-"           .OOOOOOO.ooooooooooooooooooooooo.OOOOOOO.            ",
-"           .OOOOOOOO.ooooooooooooooooooooo.OOOOOOOO.            ",
-"           .OOOOOOOO.ooooooooooooooooooooo.OOOOOOOO.            ",
-"           .OOOOOOOOO.ooooooooooooooooooo.OOOOOOOOO.            ",
-"           .OOOOOOOOO.ooooooooooooooooooo.OOOOOOOO..            ",
-"           ..OOOOOOOOO.ooooooooooooooooo.OOOOOOOOO.             ",
-"            .OOOOOOOOOO.ooooooooooooooo.OOOOOOOOOO.             ",
-"            .OOOOOOOOOOO..ooooooooooo..OOOOOOOOOO..             ",
-"            ..OOOOOOOOOOOO..ooooooo..OOOOOOOOOOO.               ",
-"             .OOOOOOOOOOOOOO.......OOOOOOOOOOOOO.               ",
-"             ..OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..               ",
-"              .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.                ",
-"               ................................                 ",
-"                                                                ",
-"                    .........                                   ",
-"                   .+++++++++.          ........                ",
-"                   .++++++++++.      ...++++++++...             ",
-"                  .++++++++++++..   ..++++++++++++..            ",
-"                  .++++++++++++@.  .++++++++++++++++..          ",
-"                  .++++++++++++@@..+++++++++++..@++++.          ",
-"                  .++++++++++++@..++++++++++++++..++++.         ",
-"                  .+++++++++++@.+++++++++++++++++.@+++.         ",
-"                  .++++++++++@.+++++++++++++++++++.@+++.        ",
-"                  .++++++++++..+++++++++++++++++++.@+++.        ",
-"                  .+++++++++++++++++++++++++++++++.@+++.        ",
-"                 .@++++++++++++++++++++++++++++++++++++.        ",
-"                 .@++++++++++++++++++++++++++++++++++@..        ",
-"                 .@+++++++++++++++++++++++++++++++++@@.         ",
-"                 .@@++++++++++++++++++++++++++++++++@@.         ",
-"                  .@++++++++++++++++++++++++++++++@@@.          ",
-"                  .@@++++@@@++++++++++++++++++++@@@..           ",
-"                   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...            ",
-"                    ..............................              ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff --git a/hacks/images/noseguy/nose-f4.xbm b/hacks/images/noseguy/nose-f4.xbm
deleted file mode 100644 (file)
index 024eead..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#define nose_f4_width 64
-#define nose_f4_height 64
-static unsigned char nose_f4_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x1e,0x00,
- 0x00,0x00,0x00,0x38,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x00,0x08,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x10,0x00,0x80,
- 0x1f,0x00,0x40,0x00,0x00,0x08,0x00,0x60,0x60,0x00,0x80,0x00,0x00,0x08,0x00,
- 0x10,0x80,0x00,0x80,0x00,0x00,0x04,0x00,0x08,0x00,0x01,0x00,0x01,0x00,0x04,
- 0x00,0x08,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x18,0x80,0x01,0x00,0x02,0x00,
- 0x02,0x00,0x68,0x60,0x01,0x00,0x02,0x00,0x02,0x00,0x88,0x1f,0x01,0x00,0x02,
- 0x00,0x02,0x00,0x08,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x10,0x80,0x00,0x00,
- 0x03,0x00,0x06,0x00,0x60,0x60,0x00,0x80,0x02,0x00,0x0c,0x00,0x80,0x1f,0x00,
- 0x40,0x01,0x00,0x14,0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x28,0x00,0x00,0x00,
- 0x00,0x90,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0xa0,0x01,0x00,
- 0x00,0x00,0x26,0x00,0x00,0x40,0x1e,0x00,0x00,0xc0,0x11,0x00,0x00,0x80,0xe1,
- 0x03,0x00,0x3c,0x0c,0x00,0x00,0x00,0x0e,0xfc,0xff,0x83,0x03,0x00,0x00,0x00,
- 0xf0,0x01,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x80,0x03,0x00,0x0c,0x00,0x00,0x00,0x00,0x80,0x02,0x00,0x14,0x00,0x00,
- 0x00,0x00,0x60,0x04,0x00,0x12,0x00,0x00,0xc0,0x7f,0x10,0x04,0x00,0x22,0xe0,
- 0x01,0x70,0xc0,0x18,0x08,0x00,0x61,0x1c,0x06,0x10,0x00,0x0f,0x30,0xc0,0x80,
- 0x07,0x08,0x08,0x00,0x06,0xc0,0x3f,0x80,0x01,0x08,0x08,0x00,0x18,0x00,0x02,
- 0xc0,0x00,0x10,0x04,0x00,0x30,0x00,0x05,0x30,0x00,0x10,0x04,0x00,0x00,0x80,
- 0x08,0x18,0x00,0x20,0x04,0x00,0x00,0x80,0x08,0x00,0x00,0x20,0x04,0x00,0x00,
- 0x40,0x10,0x00,0x00,0x20,0x24,0x00,0x00,0x40,0x10,0x00,0x00,0x22,0x24,0x00,
- 0x00,0x40,0x10,0x00,0x00,0x22,0x44,0x00,0x00,0x40,0x10,0x00,0x00,0x11,0x84,
- 0x01,0x00,0xc0,0x18,0x00,0xc0,0x10,0x08,0x00,0x00,0x80,0x08,0x00,0x00,0x08,
- 0x30,0x00,0x00,0x80,0x08,0x00,0x00,0x04,0xe0,0xff,0xff,0xff,0xf8,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
diff --git a/hacks/images/noseguy/nose-f4.xpm b/hacks/images/noseguy/nose-f4.xpm
deleted file mode 100644 (file)
index faa52e0..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/* XPM */
-static char * nose_f4_xpm[] = {
-"64 64 6 1",
-"      c black         m black",
-".     c black         m white",
-"X     c gray          m black",
-"o     c yellow        m black",
-"+     c purple        m black",
-"@     c purple3       m black",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                          ...............                       ",
-"                      ....XXXXXXXXXXXXXXX....                   ",
-"                   ...XXXXXXXXXXXXXXXXXXXXXXX...                ",
-"                 ..XXXXXXXXXXXXXXXXXXXXXXXXXXXXX..              ",
-"               ..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.             ",
-"              .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.            ",
-"             .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..          ",
-"            .XXXXXXXXXXXXXXXXXX......XXXXXXXXXXXXXXXXX.         ",
-"           .XXXXXXXXXXXXXXXXX..XXXXXX..XXXXXXXXXXXXXXXX.        ",
-"           .XXXXXXXXXXXXXXXX.XXXXXXXXXX.XXXXXXXXXXXXXXX.        ",
-"          .XXXXXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXXXX.       ",
-"          .XXXXXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXXXX.       ",
-"         .XXXXXXXXXXXXXXXXX..XXXXXXXXXX..XXXXXXXXXXXXXXXX.      ",
-"         .XXXXXXXXXXXXXXXXX.X..XXXXXX..X.XXXXXXXXXXXXXXXX.      ",
-"         .XXXXXXXXXXXXXXXXX.XXX......XXX.XXXXXXXXXXXXXXXX.      ",
-"         .XXXXXXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXXXXX.      ",
-"         .XXXXXXXXXXXXXXXXXX.XXXXXXXXXX.XXXXXXXXXXXXXXXX..      ",
-"         ..XXXXXXXXXXXXXXXXXX..XXXXXX..XXXXXXXXXXXXXXXX. .      ",
-"          ..XXXXXXXXXXXXXXXXXXX......XXXXXXXXXXXXXXXXX.X.       ",
-"          .X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.       ",
-"           .X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.        ",
-"            .X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.         ",
-"             .X..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..XX.          ",
-"              .XX....XXXXXXXXXXXXXXXXXXXXXXXXX...XXX.           ",
-"               ..XXXX.....XXXXXXXXXXXXXXXX....XXXX..            ",
-"                 ...XXXXXX................XXXXX...              ",
-"                    .....XXXXXXXXXXXXXXXXXX....                 ",
-"                         ...................                    ",
-"                       ...oooooooooooooooo..                    ",
-"                       .+.oooooooooooooooo.+.                   ",
-"                     ..+++.oooooooooooooo.++.                   ",
-"      .........     .+++++.oooooooooooooo.+++.       ....       ",
-"    ...+++++++..   ..++++++.oooooooooooo.++++..   ...++++..     ",
-"    .+++++++++++....@+++++++..oooooooo..++++++@....++++++++.    ",
-"   .+++++++++++++..@@+++++++++........+++++++@@..++++++++++.    ",
-"   .+++++++++++++++..@+++++++++++.++++++++++@@..++++++++++++.   ",
-"  .+++++++++++++++++..++++++++++. .+++++++++..++++++++++++++.   ",
-"  .++++++++++++++++++++++++++++.   .+++++++..++++++++++++++++.  ",
-"  .++++++++++++++++++++++++++++.   .+++++++++++++++++++++++++.  ",
-"  .+++++++++++++++++++++++++++.     .++++++++++++++++++++++++.  ",
-"  .+@.++++++++++++++++++++++++.     .++++++++++++++++++++.+++.  ",
-"  .++.++++++++++++++++++++++++.     .++++++++++++++++++++.@+@.  ",
-"  .@+@.+++++++++++++++++++++++.     .+++++++++++++++++++.@+@.   ",
-"  .@@+@..++++++++++++++++++++@..   ..@++++++++++++++++..@++@.   ",
-"   .@@+++++++++++++++++++++++@@.   .@@+++++++++++++++++++@@.    ",
-"    ..@@@@@@@@@@@@@@@@@@@@@@@@@.   .@@@@@@@@@@@@@@@@@@@@@@.     ",
-"     ...........................   .......................      ",
-"                                                                ",
-"                                                                "};
diff --git a/hacks/images/noseguy/nose-l1.xbm b/hacks/images/noseguy/nose-l1.xbm
deleted file mode 100644 (file)
index e3cb703..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#define nose_l1_width 64
-#define nose_l1_height 64
-static unsigned char nose_l1_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf0,0x03,0x00,0x00,0x80,0x00,
- 0x00,0x00,0x0e,0x0c,0x00,0x00,0x80,0x01,0x00,0x00,0x03,0x30,0x00,0x00,0x00,
- 0x01,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x40,0x00,0xc0,0x00,0x00,
- 0x00,0x02,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x08,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x01,0x00,0x00,
- 0x18,0x00,0x20,0x00,0x00,0x01,0x00,0x00,0x08,0x00,0x40,0x00,0x80,0x00,0x00,
- 0x00,0x08,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x0c,0x00,0x00,0x01,0x20,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x06,0x18,0x00,0x00,0x00,0x06,0x00,0x00,0xf8,0x07,
- 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x04,0x10,0x00,0x00,0x00,0xc0,0x00,0x03,0x03,0x10,0x00,0x00,
- 0x00,0x30,0x00,0x0c,0x01,0x20,0x00,0x00,0x00,0x08,0x00,0x98,0x00,0x20,0x00,
- 0x00,0x00,0x0c,0x03,0x60,0x00,0x20,0x00,0x00,0x00,0xc2,0x00,0xc0,0x00,0x20,
- 0x00,0x00,0x00,0x42,0x00,0x80,0x00,0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x01,
- 0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x01,0x20,0x00,0x00,0x00,0x21,0x00,0x00,
- 0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x18,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x10,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
diff --git a/hacks/images/noseguy/nose-l1.xpm b/hacks/images/noseguy/nose-l1.xpm
deleted file mode 100644 (file)
index 205d18b..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* XPM */
-static char * nose_l1_xpm[] = {
-"64 64 7 1",
-"      c black         m black",
-".     c black         m white",
-"X     c gray          m black",
-"o     c yellow        m black",
-"O     c yellow2       m black",
-"+     c purple        m black",
-"@     c purple3       m black",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                      .....................                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"           ...........................................          ",
-"           .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.          ",
-"           .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.          ",
-"           ...........................................          ",
-"            ......OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.                ",
-"         ...ooOOOO..OOOOOOOOOOOOOOOOOOOOOOOOOOO..               ",
-"        ..oooOOOOOOO..OOOOOOOOOOOOOOOOOOOOOOOOOO.               ",
-"       .oooOOOOOOOOOOO.OOOOOOOOOOOOOOOOOOOOOOOOOO.              ",
-"      .ooOOOOOOOOOOOOO..OOOOOOOOOOOOOOOOOOOOOOOOO.              ",
-"     .ooOOOOOOOOOOOOOOO.OOOOOOOOOOOOOOOOOOOOOOOOOO.             ",
-"    .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.             ",
-"    .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..            ",
-"   .oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.            ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.            ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"    .oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"    .ooooOOOOOOOOOOOOOOo.OOOOOOOOOOOOOOOOOOOOOOOOOO..           ",
-"     .ooooOOOOOOOOOOoooo.OOOOOOOOOOOOOOOOOOOOOOOOOO.            ",
-"      .oooooooOOOOOoooo.OOOOOOOOOOOOOOOOOOOOOOOOOOO.            ",
-"       .oooooooooooooo.OOOOOOOOOOOOOOOOOOOOOOOOOOO..            ",
-"        .oooooooooooo.OOOOOOOOOOOOOOOOOOOOOOOOOOOO.             ",
-"         ..oooooooo..OOOOOOOOOOOOOOOOOOOOOOOOOOOO..             ",
-"           ........OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.              ",
-"                   ..............................               ",
-"                                                                ",
-"                                   .........                    ",
-"                ........          .+++++++++.                   ",
-"             ...++++++++...      .++++++++++.                   ",
-"            ..++++++++++++..   ..++++++++++++.                  ",
-"          ..++++++++++++++++.  .@++++++++++++.                  ",
-"          .++++@..+++++++++++..@@++++++++++++.                  ",
-"         .++++..++++++++++++++..@++++++++++++.                  ",
-"         .+++@.+++++++++++++++++.@+++++++++++.                  ",
-"        .+++@.+++++++++++++++++++.@++++++++++.                  ",
-"        .+++@.+++++++++++++++++++..++++++++++.                  ",
-"        .+++@.+++++++++++++++++++++++++++++++.                  ",
-"        .++++++++++++++++++++++++++++++++++++@.                 ",
-"        ..@++++++++++++++++++++++++++++++++++@.                 ",
-"         .@@+++++++++++++++++++++++++++++++++@.                 ",
-"         .@@++++++++++++++++++++++++++++++++@@.                 ",
-"          .@@@++++++++++++++++++++++++++++++@.                  ",
-"           ..@@@++++++++++++++++++++@@@++++@@.                  ",
-"            ...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.                   ",
-"              ..............................                    ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff --git a/hacks/images/noseguy/nose-l2.xbm b/hacks/images/noseguy/nose-l2.xbm
deleted file mode 100644 (file)
index fa39343..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#define nose_l2_width 64
-#define nose_l2_height 64
-static unsigned char nose_l2_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x40,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf0,0x03,0x00,0x00,0x80,0x00,
- 0x00,0x00,0x0e,0x0c,0x00,0x00,0x80,0x01,0x00,0x00,0x03,0x30,0x00,0x00,0x00,
- 0x01,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x40,0x00,0xc0,0x00,0x00,
- 0x00,0x02,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x08,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x01,0x00,0x00,
- 0x18,0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x08,0x00,0x20,0x00,0x80,0x00,0x00,
- 0x00,0x08,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x0c,0x00,0x80,0x00,0x20,0x00,
- 0x00,0x00,0xe4,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x26,0x03,0x00,0xfc,0x07,
- 0x00,0x00,0x00,0x12,0x0c,0x00,0x00,0xf8,0xff,0xff,0xff,0x11,0x10,0x80,0x1f,
- 0x00,0x00,0x00,0x00,0x08,0x20,0x60,0x60,0xc0,0x07,0x00,0x00,0x04,0x40,0x10,
- 0xc0,0x20,0x08,0x00,0x1f,0x02,0x40,0x08,0x00,0x21,0x10,0xc0,0x60,0x02,0x40,
- 0x04,0x00,0x12,0x20,0x20,0x80,0x02,0x20,0xc2,0x00,0x14,0x40,0x18,0x00,0x03,
- 0x20,0x22,0x00,0x0c,0x80,0x04,0x03,0x02,0x10,0x12,0x00,0x08,0x80,0x86,0x00,
- 0x04,0x10,0x12,0x00,0x10,0x80,0x42,0x00,0x18,0x08,0x12,0x00,0x10,0x40,0x42,
- 0x00,0x00,0x04,0x02,0x00,0x20,0x40,0x42,0x00,0x00,0x04,0x02,0x00,0x00,0x20,
- 0x42,0x00,0x00,0x02,0x04,0x00,0x00,0x20,0x02,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x20,0x02,0x00,0x00,0x01,0x08,0x00,0x00,0x20,0x04,0x00,0x80,0x00,0x10,0x00,
- 0x00,0x20,0x0c,0x00,0x80,0x00,0x60,0x00,0x00,0x10,0x08,0x00,0x40,0x00,0x80,
- 0xff,0xff,0x0f,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
diff --git a/hacks/images/noseguy/nose-l2.xpm b/hacks/images/noseguy/nose-l2.xpm
deleted file mode 100644 (file)
index f08a72e..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* XPM */
-static char * nose_l2_xpm[] = {
-"64 64 7 1",
-"      c black         m black",
-".     c black         m white",
-"X     c gray          m black",
-"o     c yellow        m black",
-"O     c yellow2       m black",
-"+     c purple        m black",
-"@     c purple3       m black",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                      .....................                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"                      .XXXXXXXXXXXXXXXXXXX.                     ",
-"           ...........................................          ",
-"           .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.          ",
-"           .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.          ",
-"           ...........................................          ",
-"            ......OOOOOOOOOOOOOOOOOOOOOOOOOOOOO.                ",
-"         ...ooOOOO..OOOOOOOOOOOOOOOOOOOOOOOOOOO..               ",
-"        ..oooOOOOOOO..OOOOOOOOOOOOOOOOOOOOOOOOOO.               ",
-"       .oooOOOOOOOOOOO.OOOOOOOOOOOOOOOOOOOOOOOOOO.              ",
-"      .ooOOOOOOOOOOOOO..OOOOOOOOOOOOOOOOOOOOOOOOO.              ",
-"     .ooOOOOOOOOOOOOOOO.OOOOOOOOOOOOOOOOOOOOOOOOOO.             ",
-"    .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.             ",
-"    .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..            ",
-"   .oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.            ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.            ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"   .oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"    .oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.           ",
-"    .ooooOOOOOOOOOOOOOOo.OOOOOOOOOOOOOOOOOOOOOOOOOO..           ",
-"     .ooooOOOOOOOOOOoooo.OOOOOOOOOOOOOOOOOOOOOOOOOO.            ",
-"      .oooooooOOOOOoooo.OOOOOOOOOOOOOOOOOOOOOOOOOOO.            ",
-"       .oooooooooooooo.OOOOOOOOOOOOOOOOOOOOOOOOOOO..            ",
-"        .oooooooooooo.OOOOOOOOOOOOOOOOOOOOOOOOOOOO.  ...        ",
-"         ..oooooooo..OOOOOOOOOOOOOOOOOOOOOOOOOOOO..  .++..      ",
-"           ........OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.  .+++++..    ",
-"                   ..............................   .+++++++.   ",
-"       ......                                      .+++++++++.  ",
-"     ..++++++..       .....                       .++++++++++@. ",
-"    .+++++++++..     .+++++.            .....    .+++++++++++@. ",
-"   .++++++++++++.    .++++++.         ..+++++..  .++++++++++@@. ",
-"  .++++++++++++++.  .++++++++.       .+++++++++. .@+++++++++@.  ",
-" .++++..++++++++++. .+++++++++.    ..+++++++++++..@++++++++@@.  ",
-" .+++.@@++++++++++..@++++++++++.  .+++++..+++++++.@@+++++++@.   ",
-" .++.@+++++++++++++.@@+++++++++. ..++++.@@++++++++.@@+++++@@.   ",
-" .++.@++++++++++++++.@+++++++++. .++++.@+++++++++++..++++@@.    ",
-" .++.@++++++++++++++.@++++++++.  .++++.@+++++++++++++++++@.     ",
-" .@++++++++++++++++++.@+++++++.  .++++.@++++++++++++++++@@.     ",
-" .@@+++++++++++++++++++++++++.   .++++.@+++++++++++++++@@.      ",
-"  .@++++++++++++++++++++++++@.   .+++++++++++++++++++++@.       ",
-"  .@@+++++++++++++++++++++++@.   .++++++++++++++++++++@@.       ",
-"   .@@++++++++++++++++++++++@.    .+++++++++++++++++++@.        ",
-"    .@@@+++++++++++++++++++@@.    ..+++++++++++++++++@@.        ",
-"     ..@@@@@@@@@@@@@@@@@@@@@.      .@@@+++@@@++++++@@@.         ",
-"       .....................        ..@@@@@@@@@@@@@@..          ",
-"                                      ..............            ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff --git a/hacks/images/noseguy/nose-r1.xbm b/hacks/images/noseguy/nose-r1.xbm
deleted file mode 100644 (file)
index 72df86c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#define nose_r1_width 64
-#define nose_r1_height 64
-static unsigned char nose_r1_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x02,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x01,0x00,0x00,0xc0,0x0f,
- 0x00,0x00,0x80,0x01,0x00,0x00,0x30,0x70,0x00,0x00,0x80,0x00,0x00,0x00,0x0c,
- 0xc0,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x40,0x00,0x00,0x00,
- 0x03,0x00,0x02,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x18,0x00,0x00,0x80,0x00,
- 0x00,0x08,0x00,0x10,0x00,0x00,0x80,0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x02,0x00,0x30,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x20,0x00,0x00,
- 0x00,0x04,0x80,0x00,0x00,0x60,0x00,0x00,0x00,0x18,0x60,0x00,0x00,0x40,0x00,
- 0x00,0x00,0xe0,0x1f,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x20,0x00,0xff,0x00,0x00,0x00,0x00,0x08,0xc0,0xc0,0x00,0x03,0x00,
- 0x00,0x00,0x04,0x80,0x30,0x00,0x0c,0x00,0x00,0x00,0x04,0x00,0x19,0x00,0x10,
- 0x00,0x00,0x00,0x04,0x00,0x06,0xc0,0x30,0x00,0x00,0x00,0x04,0x00,0x03,0x00,
- 0x43,0x00,0x00,0x00,0x04,0x00,0x01,0x00,0x42,0x00,0x00,0x00,0x04,0x80,0x00,
- 0x00,0x84,0x00,0x00,0x00,0x04,0x80,0x00,0x00,0x84,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x84,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,
- 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
- 0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0e,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
diff --git a/hacks/images/noseguy/nose-r1.xpm b/hacks/images/noseguy/nose-r1.xpm
deleted file mode 100644 (file)
index 901dd42..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* XPM */
-static char * nose_r1_xpm[] = {
-"64 64 7 1",
-"      c black         m black",
-".     c black         m white",
-"X     c gray          m black",
-"o     c yellow        m black",
-"O     c yellow2       m black",
-"+     c purple        m black",
-"@     c purple3       m black",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                     .....................                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"          ...........................................           ",
-"          .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.           ",
-"          .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.           ",
-"          ...........................................           ",
-"                .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO......            ",
-"               ..OOOOOOOOOOOOOOOOOOOOOOOOOOO..OOOOoo...         ",
-"               .OOOOOOOOOOOOOOOOOOOOOOOOOO..OOOOOOOooo..        ",
-"              .OOOOOOOOOOOOOOOOOOOOOOOOOO.OOOOOOOOOOOooo.       ",
-"              .OOOOOOOOOOOOOOOOOOOOOOOOO..OOOOOOOOOOOOOoo.      ",
-"             .OOOOOOOOOOOOOOOOOOOOOOOOOO.OOOOOOOOOOOOOOOoo.     ",
-"             .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.    ",
-"            ..OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.    ",
-"            .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooo.   ",
-"            .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooo.    ",
-"           ..OOOOOOOOOOOOOOOOOOOOOOOOOO.oOOOOOOOOOOOOOOoooo.    ",
-"            .OOOOOOOOOOOOOOOOOOOOOOOOOO.ooooOOOOOOOOOOoooo.     ",
-"            .OOOOOOOOOOOOOOOOOOOOOOOOOOO.ooooOOOOOooooooo.      ",
-"            ..OOOOOOOOOOOOOOOOOOOOOOOOOOO.oooooooooooooo.       ",
-"             .OOOOOOOOOOOOOOOOOOOOOOOOOOOO.oooooooooooo.        ",
-"             ..OOOOOOOOOOOOOOOOOOOOOOOOOOOO..oooooooo..         ",
-"              .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO........           ",
-"               ..............................                   ",
-"                                                                ",
-"                    .........                                   ",
-"                   .+++++++++.          ........                ",
-"                   .++++++++++.      ...++++++++...             ",
-"                  .++++++++++++..   ..++++++++++++..            ",
-"                  .++++++++++++@.  .++++++++++++++++..          ",
-"                  .++++++++++++@@..+++++++++++..@++++.          ",
-"                  .++++++++++++@..++++++++++++++..++++.         ",
-"                  .+++++++++++@.+++++++++++++++++.@+++.         ",
-"                  .++++++++++@.+++++++++++++++++++.@+++.        ",
-"                  .++++++++++..+++++++++++++++++++.@+++.        ",
-"                  .+++++++++++++++++++++++++++++++.@+++.        ",
-"                 .@++++++++++++++++++++++++++++++++++++.        ",
-"                 .@++++++++++++++++++++++++++++++++++@..        ",
-"                 .@+++++++++++++++++++++++++++++++++@@.         ",
-"                 .@@++++++++++++++++++++++++++++++++@@.         ",
-"                  .@++++++++++++++++++++++++++++++@@@.          ",
-"                  .@@++++@@@++++++++++++++++++++@@@..           ",
-"                   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...            ",
-"                    ..............................              ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff --git a/hacks/images/noseguy/nose-r2.xbm b/hacks/images/noseguy/nose-r2.xbm
deleted file mode 100644 (file)
index eb750ca..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#define nose_r2_width 64
-#define nose_r2_height 64
-static unsigned char nose_r2_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x20,0x00,
- 0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x02,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x01,0x00,0x00,0xc0,0x0f,
- 0x00,0x00,0x80,0x01,0x00,0x00,0x30,0x70,0x00,0x00,0x80,0x00,0x00,0x00,0x0c,
- 0xc0,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x40,0x00,0x00,0x00,
- 0x03,0x00,0x02,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,
- 0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,
- 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x00,0x00,0x80,0x00,
- 0x00,0x08,0x00,0x10,0x00,0x00,0x80,0x00,0x00,0x08,0x00,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x04,0x00,0x30,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x27,0x00,0x00,
- 0x00,0x04,0x00,0x01,0xc0,0x64,0x00,0x00,0x00,0x18,0xc0,0x00,0x30,0x48,0x00,
- 0x00,0x00,0xe0,0x3f,0x00,0x08,0x88,0xff,0xff,0xff,0x1f,0x00,0x00,0x04,0x10,
- 0x00,0x00,0x00,0x00,0xf8,0x01,0x02,0x20,0x00,0x00,0xe0,0x03,0x06,0x06,0x02,
- 0x40,0xf8,0x00,0x10,0x04,0x03,0x08,0x02,0x40,0x06,0x03,0x08,0x84,0x00,0x10,
- 0x04,0x40,0x01,0x04,0x04,0x48,0x00,0x20,0x04,0xc0,0x00,0x18,0x02,0x28,0x00,
- 0x43,0x08,0x40,0xc0,0x20,0x01,0x30,0x00,0x44,0x08,0x20,0x00,0x61,0x01,0x10,
- 0x00,0x48,0x10,0x18,0x00,0x42,0x01,0x08,0x00,0x48,0x20,0x00,0x00,0x42,0x02,
- 0x08,0x00,0x48,0x20,0x00,0x00,0x42,0x02,0x04,0x00,0x40,0x40,0x00,0x00,0x42,
- 0x04,0x00,0x00,0x40,0x80,0x00,0x00,0x40,0x04,0x00,0x00,0x20,0x80,0x00,0x00,
- 0x40,0x04,0x00,0x00,0x20,0x00,0x01,0x00,0x20,0x04,0x00,0x00,0x10,0x00,0x01,
- 0x00,0x30,0x04,0x00,0x00,0x08,0x00,0x02,0x00,0x10,0x08,0x00,0x00,0x06,0x00,
- 0x0c,0x00,0x0c,0xf0,0xff,0xff,0x01,0x00,0xf0,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
diff --git a/hacks/images/noseguy/nose-r2.xpm b/hacks/images/noseguy/nose-r2.xpm
deleted file mode 100644 (file)
index ddf0eda..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* XPM */
-static char * nose_r2_xpm[] = {
-"64 64 7 1",
-"      c black         m black",
-".     c black         m white",
-"X     c gray          m black",
-"o     c yellow        m black",
-"O     c yellow2       m black",
-"+     c purple        m black",
-"@     c purple3       m black",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                     .....................                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"                     .XXXXXXXXXXXXXXXXXXX.                      ",
-"          ...........................................           ",
-"          .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.           ",
-"          .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.           ",
-"          ...........................................           ",
-"                .OOOOOOOOOOOOOOOOOOOOOOOOOOOOO......            ",
-"               ..OOOOOOOOOOOOOOOOOOOOOOOOOOO..OOOOoo...         ",
-"               .OOOOOOOOOOOOOOOOOOOOOOOOOO..OOOOOOOooo..        ",
-"              .OOOOOOOOOOOOOOOOOOOOOOOOOO.OOOOOOOOOOOooo.       ",
-"              .OOOOOOOOOOOOOOOOOOOOOOOOO..OOOOOOOOOOOOOoo.      ",
-"             .OOOOOOOOOOOOOOOOOOOOOOOOOO.OOOOOOOOOOOOOOOoo.     ",
-"             .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.    ",
-"            ..OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.    ",
-"            .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooo.   ",
-"            .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooo.   ",
-"           .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooo.    ",
-"           ..OOOOOOOOOOOOOOOOOOOOOOOOOO.oOOOOOOOOOOOOOOoooo.    ",
-"            .OOOOOOOOOOOOOOOOOOOOOOOOOO.ooooOOOOOOOOOOoooo.     ",
-"            .OOOOOOOOOOOOOOOOOOOOOOOOOOO.ooooOOOOOooooooo.      ",
-"            ..OOOOOOOOOOOOOOOOOOOOOOOOOOO.oooooooooooooo.       ",
-"        ...  .OOOOOOOOOOOOOOOOOOOOOOOOOOOO.oooooooooooo.        ",
-"      ..++.  ..OOOOOOOOOOOOOOOOOOOOOOOOOOOO..oooooooo..         ",
-"    ..+++++.  .OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO........           ",
-"   .+++++++.   ..............................                   ",
-"  .+++++++++.                                      ......       ",
-" .@++++++++++.                       .....       ..++++++..     ",
-" .@+++++++++++.    .....            .+++++.     ..+++++++++.    ",
-" .@@++++++++++.  ..+++++..         .++++++.    .++++++++++++.   ",
-"  .@+++++++++@. .+++++++++.       .++++++++.  .++++++++++++++.  ",
-"  .@@++++++++@..+++++++++++..    .+++++++++. .++++++++++..++++. ",
-"   .@+++++++@@.+++++++..+++++.  .++++++++++@..++++++++++@@.+++. ",
-"   .@@+++++@@.++++++++@@.++++.. .+++++++++@@.+++++++++++++@.++. ",
-"    .@@++++..+++++++++++@.++++. .+++++++++@.++++++++++++++@.++. ",
-"     .@+++++++++++++++++@.++++.  .++++++++@.++++++++++++++@.++. ",
-"     .@@++++++++++++++++@.++++.  .+++++++@.++++++++++++++++++@. ",
-"      .@@+++++++++++++++@.++++.   .+++++++++++++++++++++++++@@. ",
-"       .@+++++++++++++++++++++.   .@++++++++++++++++++++++++@.  ",
-"       .@@++++++++++++++++++++.   .@+++++++++++++++++++++++@@.  ",
-"        .@+++++++++++++++++++.    .@++++++++++++++++++++++@@.   ",
-"        .@@+++++++++++++++++..    .@@+++++++++++++++++++@@@.    ",
-"         .@@@++++++@@@+++@@@.      .@@@@@@@@@@@@@@@@@@@@@..     ",
-"          ..@@@@@@@@@@@@@@..        .....................       ",
-"            ..............                                      ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff --git a/hacks/images/som.xbm b/hacks/images/som.xbm
deleted file mode 100644 (file)
index cd24fd0..0000000
+++ /dev/null
@@ -1,1685 +0,0 @@
-#define som_width 464
-#define som_height 435
-static unsigned char som_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xdf,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xdf,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x8f,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0x07,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0x07,0xfe,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0x03,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0x03,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0xfc,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x01,0xf8,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x01,0xf8,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x07,0x00,0x00,
- 0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x03,0x00,0x00,0xe0,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0x7f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x01,0xfe,
- 0x01,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x01,0xfe,0x01,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x07,0x00,0xce,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x87,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0x07,0x00,0x80,0x03,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x3f,0x00,0x00,0x80,0x03,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0x00,
- 0x00,0x80,0x03,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0x00,0x00,0xc0,
- 0x01,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0xc0,0xfb,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0xc0,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xc0,0xff,0x7f,0x00,0xe0,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xc0,0xff,0x7f,0x00,0xe0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1f,
- 0x00,0xf8,0xff,0x0f,0xf0,0x0f,0xc0,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,
- 0xff,0x7f,0xf0,0x01,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x80,0xff,
- 0x7b,0x00,0x00,0xe0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0xfc,0x3f,0x00,
- 0x00,0x80,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0xfc,0x3f,0x00,0x00,0x80,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0xe0,0x7f,0x00,0x00,0x00,0x7e,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xff,0x03,0x00,0x00,0x70,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0xfe,0x03,0x00,0x00,0x00,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,
- 0x00,0xfe,0x03,0x00,0x00,0x00,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xf0,0xff,
- 0x1f,0x00,0x00,0x00,0x80,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0xfc,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0x00,0x00,0xff,0x47,0x7f,0x00,0x00,0x00,
- 0x00,0xf8,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0x07,0x80,0xff,0xff,0x3f,0x7c,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0x07,0x80,0xff,0xff,0x3f,0x7c,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x03,0xc0,0xff,0xfe,0xff,0x7d,0x00,0x00,0x00,0x00,0x80,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,0x40,
- 0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f,0x00,0x00,0x80,0x03,
- 0xf8,0x3f,0x00,0x00,0x00,0x00,0x80,0xe7,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x0f,0x00,0x00,0xf0,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x80,0xc7,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0x0f,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x80,0xc7,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0xf0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0xc0,0x0f,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0x7f,0x00,0x00,0x00,0xc0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xc0,0x0f,
- 0xfc,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0xf0,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0x80,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1c,0x00,0xfe,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0x1c,0x00,0xfe,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x70,0x1c,0x00,0xf0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x70,0x38,0x00,0xc0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,
- 0x78,0x00,0x00,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x70,0x00,0x00,0xfe,0x03,0xfe,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xf0,0x00,0x00,0xfe,0x0f,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x18,0xe0,0x00,0x80,0x9f,0xff,0x3f,0xfe,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x1c,0xe0,0x00,0x80,0x0f,0xff,0x07,0xc0,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x1c,0xe0,0x00,0x80,0x0f,0xff,0x07,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf1,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0xe0,
- 0x00,0xc0,0x07,0xfc,0x01,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe1,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0xe0,0x01,0xe0,
- 0x03,0x60,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc3,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0x01,0xf0,0x01,0x00,
- 0xe0,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0xf0,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0x03,0xf8,0x00,0x00,0xf8,0x1f,
- 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x07,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0x03,0xf8,0x00,0x00,0xf8,0x1f,0xe0,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x0f,0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x07,0x80,0x03,0x78,0x00,0x00,0xf8,0x7f,0xe0,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x0f,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x03,0x80,0x03,0x3e,0x00,0x00,0x78,0x7e,0xc0,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x1e,0x1c,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xf3,
- 0x9f,0x03,0x1f,0x00,0x00,0x00,0xf0,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x70,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0xfe,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,
- 0x0f,0x00,0x00,0x00,0xe0,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0xfe,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x0f,0x00,
- 0x00,0x00,0xe0,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xfc,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x87,0x07,0x00,0x00,0x00,
- 0xe0,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xf8,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0x3f,0xf4,0xc7,0x07,0x00,0x00,0x00,0xe0,0x00,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0x03,0x80,0xe7,0x01,0x00,0x00,0x00,0xe0,0x00,0x07,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0x00,0x00,0xff,0x01,0x00,0x00,0x00,0xe0,0x80,0x07,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0xf8,0x80,0x03,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00,0xf8,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,
- 0x00,0x00,0x00,0x7c,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x80,0x07,
- 0xe0,0x3f,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0xc0,0xff,0xff,0x0f,
- 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0xe0,0xff,0xff,0x03,0xe0,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0xe0,0xff,0xff,0x03,0xe0,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x07,0x00,0x80,0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x1e,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0x0f,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,
- 0x00,0x00,0x80,0xcf,0x3f,0x00,0x00,0xfe,0x01,0x00,0xc0,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,
- 0x80,0xcf,0x3f,0x00,0x00,0xfe,0x01,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0xe0,0xe7,
- 0xff,0x00,0x00,0xfe,0x0f,0x00,0xc0,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0xf0,0xff,0xf9,0xff,0x01,
- 0x00,0xe0,0x1f,0x00,0xc0,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0xc0,0xff,0x7f,0xfe,0xe1,0x07,0x00,0xc0,
- 0xff,0x00,0xc0,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x1e,0x00,0x00,0x00,0xfc,0xff,0x1f,0xff,0x81,0x0f,0x00,0x80,0xf1,0x03,
- 0xc0,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,
- 0x00,0x00,0x00,0xfc,0xff,0x1f,0xff,0x81,0x0f,0x00,0x80,0xf1,0x03,0xc0,0xe1,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x81,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,
- 0x00,0xff,0x3f,0x80,0xff,0x00,0x1f,0x00,0x80,0xc1,0x07,0xc0,0xe1,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0x03,0xc0,0x3f,
- 0x00,0xe0,0x7f,0x00,0x7e,0x00,0x80,0x01,0x1f,0xe0,0xe1,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x80,0x07,0xf0,0x07,0x00,0xf0,
- 0x3f,0x00,0xf8,0x00,0x80,0x01,0x3c,0xe0,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x80,0xff,0xff,0x01,0x00,0xfc,0x1f,0x00,
- 0xf0,0x01,0xc0,0x01,0x38,0xe0,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xf0,0x00,0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0x03,0x00,0xfe,0x1f,0x00,0x80,0xbf,0x07,0x00,0x80,0x07,
- 0xc0,0x01,0xe0,0xf1,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xf0,0x00,0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0x03,0x00,0xfe,0x1f,0x00,0x80,0xbf,0x07,0x00,0x80,0x07,0xc0,0x01,
- 0xe0,0xf1,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xf0,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0x01,0x00,0xf8,0x03,0x00,0xc0,0xcf,0x03,0x00,0x80,0x1f,0xf0,0x01,0xe0,0x71,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf0,0x00,
- 0x00,0xe0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xe7,0x03,0x00,0x00,0x7e,0xff,0x00,0xc0,0x73,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xf0,0x00,0x00,0x00,
- 0xfc,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xf3,0x00,0x00,0x00,0xfc,0x7f,0x00,0x00,0x7f,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xe0,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x7c,
- 0xf8,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xe0,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x7c,0xf8,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x7f,0x7c,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0xc0,0x1f,0x3e,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x7c,0x00,0x00,0x00,0x00,0xf0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x0f,0x00,0x00,0x00,0x00,0xe0,0x07,0x1f,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,
- 0x3c,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,
- 0x00,0x00,0x00,0xfc,0x83,0x0f,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x38,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
- 0x00,0xfc,0x83,0x0f,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x38,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0xff,
- 0x80,0x07,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0xe0,0x1f,0xe0,0x03,
- 0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,0x00,0xff,0x3f,0xe0,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0xf8,0x07,0xf0,0x01,0x00,0x00,
- 0x00,0x00,0xf0,0x01,0x00,0x1e,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0xe0,0xff,0x01,0xfe,0x3f,0x00,0x00,
- 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0xfe,0x01,0xf8,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0x03,0x00,0x0e,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x80,0x07,0x00,0x00,0x00,0xe0,0xff,0x01,0xfe,0x3f,0x00,0x00,0x00,0x00,
- 0xf0,0x00,0x00,0x00,0x00,0xfe,0x01,0xf8,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,
- 0x00,0x0e,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x80,
- 0x07,0x00,0x00,0x00,0x00,0xf8,0x07,0xc0,0xff,0x01,0x00,0x00,0x00,0xf8,0x00,
- 0x00,0x00,0x80,0x7f,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0x0e,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xc0,0xe3,0xff,
- 0xff,0x00,0x00,0xc0,0x1f,0x80,0xff,0x03,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,
- 0xe0,0x1f,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x07,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xc0,0xfb,0xff,0xff,0x0f,
- 0x00,0x00,0x3e,0x80,0xf3,0x1f,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0xf8,0x07,
- 0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x07,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x7c,0xc0,0x81,0xff,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0xff,0x01,0x00,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x80,0x07,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0xc0,0x7f,0x00,0xe0,0xff,0x3f,0x00,0xf0,0xc0,
- 0x01,0xfe,0x03,0x00,0x00,0x0f,0x00,0x00,0xc0,0x7f,0x00,0xc0,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xc0,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0xc0,0x7f,0x00,0xe0,0xff,0x3f,0x00,0xf0,0xc0,0x01,0xfe,
- 0x03,0x00,0x00,0x0f,0x00,0x00,0xc0,0x7f,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xc0,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0xc0,0x0f,0x00,0x00,0xfc,0xff,0x03,0xc0,0xe3,0x01,0xf0,0x07,0x00,
- 0x80,0x07,0x00,0x00,0xf0,0x1f,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xc1,0x01,0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0xc0,0x07,0x00,0x00,0x00,0xfc,0xff,0x00,0xf7,0x00,0x00,0x3f,0x00,0xc0,0x03,
- 0x00,0x00,0xff,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe3,
- 0x01,0x00,0x00,0xc0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xc0,0x01,
- 0x00,0x00,0x00,0xc0,0xff,0x07,0x7f,0x00,0x00,0xfc,0x00,0xe0,0x03,0x00,0xe0,
- 0x3f,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,
- 0x00,0x00,0xfe,0x7f,0x7f,0x00,0x00,0xf8,0x01,0xe0,0x01,0x00,0xfc,0x07,0x00,
- 0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,
- 0xfe,0x7f,0x7f,0x00,0x00,0xf8,0x01,0xe0,0x01,0x00,0xfc,0x07,0x00,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0x03,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0x3f,0x00,0x00,0xf0,0x07,0xf0,0x00,0x00,0xff,0x03,0x00,0x00,0x7c,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0xfe,0x3f,0x00,
- 0x00,0xc0,0x3f,0xf8,0x00,0xf8,0x3f,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,
- 0x7f,0x7c,0x00,0xfe,0x07,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x1e,0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,
- 0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x7f,0x00,0x00,0xfc,0x3e,
- 0xe0,0x7f,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x1f,0x00,0x00,0xf8,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x7f,0x00,0x00,0xfc,0x3e,0xe0,0x7f,
- 0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x80,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x1f,0x00,0xf0,0x1f,0xfe,0x0f,0x00,0x00,
- 0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x03,0x00,0x00,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0x3f,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0x0f,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xe0,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0xf8,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0xf8,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x7c,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x03,
- 0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,
- 0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,
- 0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x07,0x00,0xe0,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xfe,0x00,0x00,
- 0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0x00,0xc0,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,0xc0,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xf8,0x03,0x00,0x00,0x00,
- 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0xe0,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x80,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xe0,0x0f,0x00,0x00,0x00,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0xf8,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x70,0xe0,0x0f,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0xf8,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x70,0x00,0x3f,0x00,0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x01,0x00,0xfe,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0x03,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x70,0x00,0xfe,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x7e,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0x0f,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,
- 0x00,0xf8,0x01,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,
- 0xc0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x3f,
- 0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x80,
- 0x0f,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0xf8,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x3f,0x00,0xf8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x80,0x0f,0x00,
- 0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0xf8,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0xe0,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x3e,0x00,0xf0,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x03,0xc0,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0xfc,0x00,0x78,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x01,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x0f,0xc0,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x78,0x00,0x00,0xe0,0x03,0x3c,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x7c,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x7c,0x00,0x00,0xc0,0x1f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x3e,0x00,0xf0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0x1f,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x7c,0x00,0x00,0xc0,0x1f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,
- 0xf0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0x7f,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,
- 0x00,0x00,0x3f,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0xfc,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0x01,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,
- 0xfc,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0x00,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x03,0x78,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0xf8,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x07,0xf0,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0xfc,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x00,0xf0,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x07,0xf0,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0xfc,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0xf0,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0xe0,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x7e,0x00,0xf8,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x1e,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,
- 0xfe,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0x01,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,
- 0x00,0x00,0x80,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x80,0xff,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0x07,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,
- 0xc0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0xe0,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0x0f,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0xe0,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0xf8,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x7c,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0xe0,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x01,0xf8,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x3f,0xf0,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x7e,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x7f,0xe0,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x07,0x00,0x00,0xfc,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x3e,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xe0,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x07,0x00,0x00,0xfc,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xc0,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xc1,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x03,0x00,0x00,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0xf0,0xff,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xc1,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,
- 0x00,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0xf0,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0x83,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0xf8,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0x0f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0xc0,0xef,0x03,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0x01,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x0f,0x1c,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0xe0,0xf3,0x01,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x38,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0xf0,0xf9,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x78,0xe0,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x38,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x70,0x00,0x00,0xf0,0xf9,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xe0,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x7f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x78,0x00,0x00,0x78,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0xf0,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,
- 0x00,0x7e,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0xf8,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x3e,
- 0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xfe,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xc1,0x03,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x0f,0x1e,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x0f,0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xc1,0x03,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x0f,0x1e,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x0f,0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x83,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0xc0,0x07,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x07,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x07,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x0f,0x00,0xe0,0x83,0x0f,0x00,0x00,0x00,0x00,0x00,0x80,0xc7,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x0f,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x07,0x00,0xf0,0x81,0x07,0x00,0x00,0x00,0x00,0x00,0xc0,0xc3,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x1f,0x1c,0x00,0x00,0x00,0x00,0x80,0x03,
- 0x00,0x7c,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0xe1,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0x3f,0x3c,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x3f,
- 0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0xe0,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0x3f,0x3c,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x3f,0xe0,0x01,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xe0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0x3f,0x3c,0x00,0x00,0x00,0x00,0xe0,0x01,0x80,0x1f,0xe0,0x01,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,
- 0x38,0x00,0x00,0x00,0x00,0xe0,0x00,0xe0,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x78,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x38,0x00,
- 0x00,0x00,0x00,0xf0,0x00,0xf0,0x03,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x78,
- 0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x38,0x00,0x00,0x00,
- 0x00,0x70,0x00,0xfe,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0xfc,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x38,0x00,0x00,0x00,0x00,0x70,
- 0x00,0xfe,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0xfc,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x38,0x00,0x00,0x00,0x00,0x38,0x80,0x3f,
- 0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xfc,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0x3f,0x38,0x00,0x00,0x00,0x00,0x1c,0xc0,0x0f,0x00,0x1c,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0x1f,0x38,0x00,0x00,0x00,0x00,0x1e,0xf0,0x03,0x00,0x1e,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x1e,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0x1f,0x38,0x00,0x00,0x00,0x00,0x0f,0x7f,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x0f,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x1f,0x38,
- 0x00,0x00,0x00,0x00,0x0f,0x7f,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x0f,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x1f,0x38,0x00,0x00,
- 0x00,0x00,0xe7,0x3f,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xfc,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0f,0x38,0x00,0x00,0x00,0x80,
- 0xfb,0x0f,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xfc,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0x38,0x00,0x00,0x00,0xc0,0xff,0x01,
- 0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0xf8,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0x07,0x38,0x00,0x00,0x00,0xe0,0x3f,0x00,0x00,0xc0,
- 0x01,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0x07,0x38,0x00,0x00,0x00,0xe0,0x3f,0x00,0x00,0xc0,0x01,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0x03,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0x07,0x38,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x03,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03,
- 0x38,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x38,0x00,
- 0x00,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,
- 0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x01,0x38,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0xf0,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0x38,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xf0,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x38,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xf0,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x78,0x00,0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,
- 0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x78,0x00,0xc0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x18,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,
- 0x00,0xc0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x18,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0xc0,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x7f,0x00,0x1c,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x80,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x80,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0x1f,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x80,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0x1f,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0x1f,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x1f,0x00,0x00,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,
- 0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x0f,0x00,0x00,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x1c,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,
- 0x00,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x07,0x00,0x1c,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0xfe,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0xfe,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x70,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0x07,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0x03,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x03,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03,
- 0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0x03,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0x1e,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,
- 0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0x1e,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,
- 0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x01,0x00,0x1e,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,0xf8,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xf0,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xf0,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,
- 0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0x01,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,
- 0x3c,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x01,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0x38,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,
- 0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x38,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xe0,
- 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0x1f,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0x1f,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x01,0x00,0x00,0x80,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,
- 0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0x03,0x00,0x00,0x80,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x38,
- 0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,
- 0x00,0x00,0x00,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x3c,0x00,0x00,
- 0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,
- 0x00,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,
- 0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x07,0x00,0x00,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x3e,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0xfe,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x0f,0x00,0xe0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0x0f,0x3c,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x0e,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,
- 0x3c,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x0e,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x38,0x00,
- 0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,
- 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,0x00,0x38,0x00,0x00,0x00,
- 0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,
- 0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0x03,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0xc0,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xf8,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0x1f,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0xfe,0x00,0x00,
- 0x00,0x70,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0x03,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x1f,0x00,0xf8,0xff,0x00,0x00,0x00,0x70,
- 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x03,0x00,0x00,0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0x7f,0x00,0xe0,0xff,0x7f,0x00,0x00,0x00,0x70,0x00,0x00,
- 0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,
- 0x00,0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0x03,0x00,0xf0,0xff,0x3f,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,
- 0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0xe0,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0x03,0x00,0xf0,0xff,0x3f,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x78,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0xe0,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0x00,0x00,
- 0xf8,0xff,0x3f,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0x00,0x00,0xf8,0xff,
- 0x1f,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,
- 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0x07,0x00,0xc0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0x1f,0x00,0x00,0x00,0xfe,0xff,0x1f,0x00,0x00,0x00,
- 0xe0,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0x3f,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x1f,0x00,0x00,0x00,0xfe,0xff,0x1f,0x00,0x00,0x00,0xe0,0x00,
- 0x00,0x00,0x00,0x3c,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x3f,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x03,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,
- 0x00,0x3e,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,
- 0x80,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x3f,
- 0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x3f,0x80,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0x07,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,0xfc,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0x07,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0xf7,0x03,0x00,0x3c,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,0xc0,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x07,
- 0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0xf7,0x03,0x00,0x3c,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,0xc0,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03,0x00,0x00,
- 0x00,0xc0,0x01,0x00,0x00,0x80,0xe3,0x0f,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x7f,0x00,0xf8,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03,0x00,0x00,0x00,0xc0,
- 0x01,0x00,0x00,0x80,0xe3,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0x03,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03,0x00,0x00,0x00,0xc0,0x01,0x00,
- 0x00,0x80,0xc3,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0x01,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,
- 0x01,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0x01,0xfe,
- 0x7f,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0x01,0xfe,0x7f,0x38,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0x00,0x00,0x00,0x00,0xc1,0x01,0x00,0x00,0xe0,0x00,0x3e,0x00,0x38,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0x00,
- 0x00,0x80,0xc3,0x01,0x00,0x00,0xe0,0x00,0x7c,0x00,0x3c,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0x00,0xf0,
- 0xc3,0x01,0x00,0x00,0xf0,0x00,0xf0,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x7f,0x00,0x00,0x00,0xf8,0xc3,0x01,
- 0x00,0x00,0xf0,0x00,0xe0,0x01,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0x7f,0x00,0x00,0x00,0xf8,0xc3,0x01,0x00,0x00,
- 0xf0,0x00,0xe0,0x01,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0x7f,0x00,0x00,0x00,0xff,0xc3,0x03,0x00,0x00,0x70,0x00,
- 0xc0,0x03,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0x3f,0x00,0x00,0x80,0xff,0xc3,0x03,0x00,0x00,0x70,0x00,0xc0,0x03,
- 0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,
- 0xf0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0x1f,0x00,0x00,0xe0,0xff,0xc3,0x03,0x00,0x00,0x78,0x00,0x80,0x07,0x3c,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f,0x00,0x00,0x00,
- 0xfc,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,
- 0x00,0xf8,0xff,0xc3,0x03,0x00,0x00,0x78,0x00,0x00,0x0f,0x3c,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0xf8,
- 0xff,0xc3,0x03,0x00,0x00,0x78,0x00,0x00,0x0f,0x3c,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0xfe,0xff,0x83,
- 0x03,0x00,0x00,0x3c,0x00,0x00,0x1e,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0x01,0xe0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x80,0xff,0xff,0x87,0x03,0x00,
- 0x00,0x3c,0x00,0x00,0x3c,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xe1,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0xc0,0xff,0xff,0x87,0x03,0x00,0x00,0x3c,
- 0x00,0x00,0x78,0x1c,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xe1,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0x07,0x00,0xf8,0xff,0xff,0xc7,0x03,0x00,0x00,0x1c,0x00,0x00,
- 0xe0,0x1c,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0x07,0x00,0xf8,0xff,0xff,0xc7,0x03,0x00,0x00,0x1c,0x00,0x00,0xe0,0x1c,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x03,
- 0x00,0xfe,0xff,0xff,0xc7,0x03,0x00,0x00,0x1c,0x00,0x00,0xe0,0x1f,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03,0x00,0xff,
- 0xff,0xff,0xc7,0x03,0x00,0x00,0x1c,0x00,0x00,0x80,0x1f,0x00,0x00,0x00,0xff,
- 0xff,0x03,0x00,0x00,0x00,0xfc,0x03,0x80,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03,0xc0,0xff,0xff,0xff,
- 0xc7,0x03,0x00,0x00,0x1e,0x00,0x00,0x00,0x1f,0x00,0x00,0xf8,0xff,0x0f,0x00,
- 0x80,0xff,0xff,0xff,0x1f,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x01,0xf0,0xff,0xff,0xff,0xc3,0x03,
- 0x00,0x00,0xfe,0xff,0x00,0x00,0x1f,0x00,0xe0,0xff,0x3f,0x00,0x00,0x80,0xff,
- 0xff,0xff,0x3f,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0x01,0xfc,0xff,0xff,0xff,0xc1,0x03,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x80,0xff,0xff,0xff,
- 0x7f,0x00,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0x01,0xfc,0xff,0xff,0xff,0xc1,0x03,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0x01,0xff,0xff,0xff,0xff,0x80,0x03,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0xfe,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0xf5,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x07,0xfe,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x7f,0xf0,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0xfe,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0xf8,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0x3f,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0xf8,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0x3f,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
diff --git a/hacks/imsmap.c b/hacks/imsmap.c
deleted file mode 100644 (file)
index 15cb66a..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-/* imsmap, Copyright (c) 1992 Juergen Nickelsen <nickel@cs.tu-berlin.de>
- * Derived from code by Markus Schirmer, TU Berlin.
- *
- * 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.
- *
- * Revision History:
- * 24-aug-92: jwz: hacked.
- * 17-May-97: jwz: hacked more.
- */
-
-#include <stdio.h>
-#include <math.h>
-#include <sys/time.h> /* for gettimeofday() */
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#include "screenhack.h"
-
-#define NSTEPS 7
-#define COUNT (1 << NSTEPS)
-#define CELL(c, r) cell[((unsigned int)(c)) + ((unsigned int) (r)) * xmax]
-
-static enum mode_t { MODE_H, MODE_S, MODE_V, MODE_RANDOM } mode;
-
-static GC gc, gc2;
-static XWindowAttributes xgwa;
-
-#if defined(sun) && !__STDC__  /* sun cc doesn't know "signed char" */
-#define signed /**/
-#endif
-
-static Colormap cmap;
-static int ncolors;
-static XColor *colors;
-static Bool cycle_p;
-static int cycle_direction;
-static Bool extra_krinkly_p;
-
-static int delay, cycle_delay;
-static signed char *cell = NULL;
-static int xmax, ymax;
-static int iterations;
-
-static void
-init_map (Display *dpy, Window window)
-{
-  unsigned long fg_pixel = 0, bg_pixel = 0;
-  int fg_h, bg_h;
-  double fg_s, fg_v, bg_s, bg_v;
-
-  enum mode_t this_mode;
-  static Bool rv_p;
-    
-  XGCValues gcv;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-
-  if (!ncolors)
-    {
-      char *mode_str = get_string_resource ("mode", "Mode");
-      rv_p = get_boolean_resource ("reverseVideo", "ReverseVideo");
-      cycle_p = get_boolean_resource ("cycle", "Cycle");
-      ncolors = get_integer_resource ("ncolors", "Integer");
-      delay = get_integer_resource ("delay", "Integer");
-      cycle_delay = get_integer_resource ("cycleDelay", "Integer");
-      iterations = get_integer_resource ("iterations", "Integer");
-      if (iterations < 0) iterations = 0;
-      else if (iterations > 7) iterations = 7;
-
-      if (ncolors <= 2) ncolors = 0;
-      if (ncolors == 0) mono_p = True;
-
-      fg_pixel = get_pixel_resource ("background", "Background", dpy, cmap);
-      bg_pixel = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-
-      if (fg_pixel == bg_pixel)
-       {
-         XColor black, white;
-         black.red = black.green = black.blue = 0;
-         white.red = white.green = white.blue = 0xFFFF;
-         black.flags = white.flags = DoRed|DoGreen|DoBlue;
-         XAllocColor(dpy, cmap, &black);
-         XAllocColor(dpy, cmap, &white);
-         if (bg_pixel == black.pixel)
-           fg_pixel = white.pixel;
-         else
-           fg_pixel = black.pixel;
-       }
-
-      if (mono_p) cycle_p = False;
-
-      gcv.foreground = fg_pixel;
-      gcv.background = bg_pixel;
-      gc = XCreateGC (dpy, window, GCForeground|GCBackground, &gcv);
-      gcv.foreground = bg_pixel;
-      gc2 = XCreateGC (dpy, window, GCForeground, &gcv);
-
-      if (!mode_str || !strcmp (mode_str, "random"))
-       mode = MODE_RANDOM;
-      else if (!strcmp (mode_str, "h") || !strcmp (mode_str, "hue"))
-       mode = MODE_H;
-      else if (!strcmp (mode_str, "s") || !strcmp (mode_str, "saturation"))
-       mode = MODE_S;
-      else if (!strcmp (mode_str, "v") || !strcmp (mode_str, "value"))
-       mode = MODE_V;
-      else
-       {
-         fprintf (stderr,
-          "%s: mode must be hue, saturation, value, or random, not \"%s\"\n",
-                  progname, mode_str);
-         mode = MODE_RANDOM;
-       }
-    }
-
-  this_mode = mode;
-  if (!mono_p && mode == MODE_RANDOM)
-    switch (random () % 6) {
-    case 0: this_mode = MODE_H; break;
-    case 1: this_mode = MODE_S; break;
-    case 2: this_mode = MODE_V; break;
-    default: break;
-    }
-
-  if (mono_p)
-    extra_krinkly_p = !(random() % 15);
-  else
-    extra_krinkly_p = !(random() % 5);
-
-  if (!mono_p)
-    {
-      double distance, fg_H, bg_H, dh;
-
-    RETRY:
-      fg_h = random() % 360;
-      fg_s = frand(1.0);
-      fg_v = frand(1.0);
-
-      bg_h = fg_h;
-      bg_s = fg_s;
-      bg_v = fg_v;
-
-      switch (this_mode)
-       {
-       case MODE_H:
-         bg_h = random() % 360;
-         if (fg_v < 0.4)
-           goto RETRY;
-         distance = fg_h - bg_h;
-         if (distance < 0)
-           distance = -distance;
-         if (distance > 360)
-           distance = 180 - (distance - 180);
-         if (distance < 30)
-           goto RETRY;
-         break;
-
-       case MODE_S:
-         bg_s = frand(1.0);
-         if (fg_v < 0.4)
-           goto RETRY;
-         distance = fg_s - bg_s;
-         if (distance < 0)
-           distance = -distance;
-         if (distance < 0.2)
-           goto RETRY;
-         break;
-
-       case MODE_V:
-         bg_v = frand(1.0);
-         distance = fg_v - bg_v;
-         if (distance < 0)
-           distance = -distance;
-         if (distance < 0.4)
-           goto RETRY;
-         break;
-
-       default:
-         bg_h = random() % 360;
-         bg_s = frand(1.0);
-         bg_v = frand(1.0);
-
-         fg_H = ((double) fg_h) / 360;
-         bg_H = ((double) bg_h) / 360;
-         dh = fg_H - bg_H;
-         if (dh < 0) dh = -dh;
-         if (dh > 0.5) dh = 0.5 - (dh - 0.5);
-         distance = sqrt ((dh * dh) +
-                          ((fg_s - bg_s) * (fg_s - bg_s)) +
-                          ((fg_v - bg_v) * (fg_v - bg_v)));
-         if (distance < 0.2)
-           goto RETRY;
-       }
-
-      cycle_p = True;
-      if (colors)
-       free_colors (dpy, cmap, colors, ncolors);
-      else
-       colors = (XColor *) malloc (ncolors * sizeof(*colors));
-
-      cycle_direction = (random() & 1 ? 1 : -1);
-
-    RETRY_NON_WRITABLE:
-      {
-       int n = ncolors;
-       make_color_ramp (dpy, cmap,
-                        fg_h, fg_s, fg_v,
-                        bg_h, bg_s, bg_v,
-                        colors, &n,
-                        True, True, cycle_p);
-       if (n == 0 && cycle_p)
-         {
-           cycle_p = False;
-           goto RETRY_NON_WRITABLE;
-         }
-       ncolors = n;
-      }
-
-      if (ncolors <= 0)
-       mono_p = 1;
-    }
-
-  if (mono_p)
-    {
-      static Bool done = False;
-      static XColor c[50];
-         colors = c;
-      cycle_p = False;
-      ncolors = sizeof(c)/sizeof(*c);
-      if (!done)
-       {
-         int i;
-         done = True;
-         colors[0].pixel = fg_pixel;
-         for (i = 1; i < ncolors; i++)
-           colors[i].pixel = bg_pixel;
-       }
-    }
-
-  XSetForeground (dpy, gc, colors[1].pixel);
-  XFillRectangle (dpy, window, gc, 0, 0, xgwa.width, xgwa.height);
-}
-
-
-#define HEIGHT_TO_PIXEL(height)                                \
-       ((height) < 0                                   \
-        ? (extra_krinkly_p                             \
-           ? ncolors - ((-(height)) % ncolors)         \
-           : 0)                                        \
-        : ((height) >= ncolors                         \
-           ? (extra_krinkly_p                          \
-              ? (height) % ncolors                     \
-              : ncolors-1)                             \
-           : (height)))
-
-
-static unsigned int
-set (unsigned int l,
-     unsigned int c,
-     unsigned int size,
-     int height)
-{
-  int rang = 1 << (NSTEPS - size);
-  height = height + (random () % rang) - rang / 2;
-  height = HEIGHT_TO_PIXEL(height);
-  CELL (l, c) = height;
-  return colors[height].pixel;
-}
-
-static void
-floyd_steinberg (Display *dpy, Window window)
-{
-  int x, y, err;
-
-  /* Instead of repeatedly calling XPutPixel(), we make an Image and then
-     send its bits over all at once.  This consumes much less network
-     bandwidth.  The image we create is Wx1 intead of WxH, so that we
-     don't use enormous amounts of memory.
-   */
-  XImage *image =
-    XCreateImage (dpy, xgwa.visual,
-                 1, XYBitmap, 0,               /* depth, format, offset */
-                 (char *) calloc ((xmax + 8) / 8, 1),  /* data */
-                 xmax, 1, 8, 0);               /* w, h, pad, bpl */
-
-  XSetForeground (dpy, gc, colors[0].pixel);
-  XSetBackground (dpy, gc, colors[1].pixel);
-
-  for (y = 0; y < ymax - 1; y++)
-    {
-      for (x = 0; x < xmax - 1; x++)
-       {
-         if (CELL(x, y) < 0)
-           {
-             err = CELL (x, y);
-             XPutPixel (image, x, 0, 1);
-           }
-         else
-           {
-             err = CELL (x, y) - 1;
-             XPutPixel (image, x, 0, 0);
-           }
-         /* distribute error */
-         CELL (x,   y+1) += (int) (((float) err) * 3.0/8.0);
-         CELL (x+1, y)   += (int) (((float) err) * 3.0/8.0);
-         CELL (x+1, y+1) += (int) (((float) err) * 1.0/4.0);
-       }
-      XPutImage (dpy, window, gc, image, 0, 0, 0, y, xmax, 1);
-    }
-  XDestroyImage (image);
-}
-
-static void
-draw (Display *dpy, Window window,
-      int x, int y, unsigned long pixel, int grid_size)
-{
-  static unsigned int last_pixel, last_valid = 0;
-  if (! (last_valid && pixel == last_pixel))
-    XSetForeground (dpy, gc, pixel);
-  last_valid = 1, last_pixel = pixel;
-  if (grid_size == 1)
-    XDrawPoint (dpy, window, gc, x, y);
-  else
-    XFillRectangle (dpy, window, gc, x, y, grid_size, grid_size);
-}
-
-
-static void 
-draw_map (Display *dpy, Window window)
-{
-  int xstep, ystep, xnextStep, ynextStep;
-  int x, y, i, x1, x2, y1, y2;
-  unsigned int pixel, qpixels [4];
-
-  int backwards = random() & 1;
-
-  xmax = xgwa.width;
-  ymax = xgwa.height;
-
-  cell = (signed char *) calloc (xmax * ymax, 1);
-  if (cell == NULL)
-    exit (1);
-
-  CELL (0, 0) = 0;
-  xstep = (backwards ? -COUNT : COUNT);
-  ystep = COUNT;
-  for (i = 0; i < iterations; i++)
-    {
-      xnextStep = xstep / 2;
-      ynextStep = ystep / 2;
-      for (x = (backwards ? xmax-1 : 0);
-          (backwards ? x >= 0 : x < xmax);
-          x += xstep)
-       {
-         x1 = x + xnextStep;
-         if (x1 < 0)
-           x1 = xmax-1;
-         else if (x1 >= xmax)
-           x1 = 0;
-
-         x2 = x + xstep;
-         if (x2 < 0)
-           x2 = xmax-1;
-         else if (x2 >= xmax)
-           x2 = 0;
-
-         for (y = 0; y < ymax; y += ystep)
-           {
-             y1 = y + ynextStep;
-             if (y1 < 0)
-               y1 = ymax-1;
-             else if (y1 >= ymax)
-               y1 = 0;
-
-             y2 = y + ystep;
-             if (y2 < 0)
-               y2 = ymax-1;
-             else if (y2 >= ymax)
-               y2 = 0;
-
-             qpixels [0] = colors [HEIGHT_TO_PIXEL (CELL (x, y))].pixel;
-             qpixels [1] = colors [HEIGHT_TO_PIXEL (CELL (x, y2))].pixel;
-             qpixels [2] = colors [HEIGHT_TO_PIXEL (CELL (x2, y))].pixel;
-             qpixels [3] = colors [HEIGHT_TO_PIXEL (CELL (x2, y2))].pixel;
-
-             pixel = set (x, y1, i,
-                          ((int) CELL (x, y) + (int) CELL (x, y2) + 1) / 2);
-             if (! mono_p &&
-                 (pixel != qpixels[0] || pixel != qpixels[1] || 
-                  pixel != qpixels[2] || pixel != qpixels[3]))
-               draw (dpy, window, x, y1, pixel, ynextStep);
-
-             pixel = set (x1, y, i,
-                          ((int) CELL (x, y) + (int) CELL (x2, y) + 1) / 2);
-             if (! mono_p &&
-                 (pixel != qpixels[0] || pixel != qpixels[1] || 
-                  pixel != qpixels[2] || pixel != qpixels[3]))
-               draw (dpy, window, x1, y, pixel, ynextStep);
-
-             pixel = set (x1, y1, i,
-                          ((int) CELL (x, y) + (int) CELL (x, y2) +
-                           (int) CELL (x2, y) + (int) CELL (x2, y2) + 2)
-                          / 4);
-             if (! mono_p &&
-                 (pixel != qpixels[0] || pixel != qpixels[1] || 
-                  pixel != qpixels[2] || pixel != qpixels[3]))
-               draw (dpy, window, x1, y1, pixel, ynextStep);
-
-
-             if (cycle_p)
-               {
-                 struct timeval now;
-                 static struct timeval then = { 0, };
-                 unsigned long diff;
-#ifdef GETTIMEOFDAY_TWO_ARGS
-                 struct timezone tzp;
-                 gettimeofday(&now, &tzp);
-#else
-                 gettimeofday(&now);
-#endif
-                 diff = (((now.tv_sec - then.tv_sec)  * 1000000) +
-                         (now.tv_usec - then.tv_usec));
-                 if (diff > cycle_delay)
-                   {
-                     rotate_colors (dpy, cmap, colors, ncolors,
-                                    cycle_direction);
-                     then = now;
-                   }
-               }
-           }
-       }
-      xstep = xnextStep;
-      ystep = ynextStep;
-      if (!mono_p)
-       XSync (dpy, False);
-      screenhack_handle_events (dpy);
-    }
-  if (mono_p)
-    /* in mono-mode, we do all the drawing at the end */
-    floyd_steinberg (dpy, window);
-  
-  free (cell);
-  XSync (dpy, False);
-}
-
-
-char *progclass = "Imsmap";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        black",
-  "*mode:      random",
-  "*ncolors:   50",
-  "*iterations:        7",
-  "*delay:     10",
-  "*cycleDelay:        100000",
-  "*cycle:     true",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-ncolors",                ".ncolors",     XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-cycle-delay",    ".cycleDelay",  XrmoptionSepArg, 0 },
-  { "-mode",           ".mode",        XrmoptionSepArg, 0 },
-  { "-iterations",     ".iterations",  XrmoptionSepArg, 0 },
-  { "-cycle",          ".cycle",       XrmoptionNoArg, "True"  },
-  { "-no-cycle",       ".cycle",       XrmoptionNoArg, "False" },
-  { 0, 0, 0, 0 }
-};
-
-
-void
-screenhack (Display *dpy, Window window)
-{
-    while (1)
-      {
-       init_map (dpy, window);
-       draw_map (dpy, window);
-       if (delay)
-         {
-           if (cycle_p)
-             {
-               time_t start = time((time_t) 0);
-               while (start + delay > time((time_t) 0))
-                 {
-                   rotate_colors (dpy, cmap, colors, ncolors,
-                                  cycle_direction);
-                   if (cycle_delay) usleep(cycle_delay);
-                    screenhack_handle_events (dpy);
-                 }
-             }
-           else
-              {
-                screenhack_handle_events (dpy);
-                sleep (delay);
-              }
-         }
-      }
-}
diff --git a/hacks/imsmap.man b/hacks/imsmap.man
deleted file mode 100644 (file)
index b8f81ad..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-.TH XScreenSaver 1 "17-May-97" "X Version 11"
-.SH NAME
-imsmap - generate fractal maps
-.SH SYNOPSIS
-.B imsmap
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIint\fP] [\-delay \fIseconds\fP] [\-iterations \fIint\fP] [\-mode h|s|v|random] [\-cycle] [\-no\-cycle]
-.SH DESCRIPTION
-The \fIimsmap\fP program generates map or cloud-like patterns.  It looks
-quite different in monochrome and color.
-.SH OPTIONS
-.I imsmap
-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 \-ncolors \fIinteger\fP
-How many colors to use.  Default 50.
-.TP 8
-.B \-delay \fIinteger\fP
-How long to delay between images.  Default 10 seconds.
-.TP 8
-.B \-iterations \fIinteger\fP
-A measure of the resolution of the resultant image, from 0 to 7.  Default 7.
-.TP 8
-.B \-mode [ hue | saturation | value | random ]
-The axis upon which colors should be interpolated between the foreground
-and background color.  Default random.  
-.TP 8
-.B \-cycle
-.TP 8
-.B \-no\-cycle
-Whether to do colormap cycling.  Default is to cycle.
-.TP 8
-.B \-cycle\-delay
-Number of microseconds between shifts of the colormap; default 100000,
-or 1/10th 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 AUTHOR
-Juergen Nickelsen <nickel@cs.tu-berlin.de>, 23-aug-92.
-
-Hacked on by Jamie Zawinski <jwz@jwz.org>, 24-aug-92, 17-May-97.
diff --git a/hacks/interference.c b/hacks/interference.c
deleted file mode 100644 (file)
index a7a9195..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-/* interference.c --- colored fields via decaying sinusoidal waves.
- * An entry for the RHAD Labs Screensaver Contest.
- *
- * Author: Hannu Mallat <hmallat@cs.hut.fi>
- *
- * Copyright (C) 1998 Hannu Mallat.
- *
- * 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.
- *
- * decaying sinusoidal waves, which extend spherically from their
- * respective origins, move around the plane. a sort of interference
- * between them is calculated and the resulting twodimensional wave
- * height map is plotted in a grid, using softly changing colours.
- *
- * not physically (or in any sense) accurate, but fun to look at for 
- * a while. you may tune the speed/resolution/interestingness tradeoff 
- * with X resources, see below.
- *
- * Created      : Wed Apr 22 09:30:30 1998, hmallat
- * Last modified: Wed Apr 22 09:30:30 1998, hmallat
- *
- * TODO:
- *
- *    This really needs to be sped up.
- *
- *    I've tried making it use XPutPixel/XPutImage instead of XFillRectangle,
- *    but that doesn't seem to help (it's the same speed at gridsize=1, and
- *    it actually makes it slower at larger sizes.)
- *
- *    I played around with shared memory, but clearly I still don't know how
- *    to use the XSHM extension properly, because it doesn't work yet.
- *
- *    Hannu had put in code to use the double-buffering extension, but that
- *    code didn't work for me on Irix.  I don't think it would help anyway,
- *    since it's not the swapping of frames that is the bottleneck (or a source
- *    of visible flicker.)
- *
- *     -- jwz, 4-Jun-98
- */
-
-#include <math.h>
-
-#include "screenhack.h"
-
-# include <X11/Xutil.h>
-
-/* I thought it would be faster this way, but it turns out not to be... -jwz */
-#undef USE_XIMAGE
-
-#ifndef USE_XIMAGE
-# undef HAVE_XSHM_EXTENSION  /* only applicable when using XImages */
-#endif /* USE_XIMAGE */
-
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-# include "xdbe.h"
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-#ifdef HAVE_XSHM_EXTENSION
-# include "xshm.h"
-#endif /* HAVE_XSHM_EXTENSION */
-
-char *progclass="Interference";
-
-char *defaults [] = {
-  "*count:       3",     /* number of waves */
-  "*gridsize:    4",     /* pixel size, smaller values for better resolution */
-  "*ncolors:     128",   /* number of colours used */
-  "*speed:       30",    /* speed of wave origins moving around */
-  "*delay:       30000", /* or something */
-  "*color-shift: 60",    /* h in hsv space, smaller values for smaller
-                         * color gradients */
-  "*radius:      800",   /* wave extent */
-  "*gray:        false", /* color or grayscale */
-  "*mono:        false", /* monochrome, not very much fun */
-
-  "*doubleBuffer: True",
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  "*useDBE:      True", /* use double buffering extension */
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-#ifdef HAVE_XSHM_EXTENSION
-  "*useSHM:      True", /* use shared memory extension */
-#endif /*  HAVE_XSHM_EXTENSION */
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-count",       ".count",       XrmoptionSepArg, 0 }, 
-  { "-ncolors",     ".ncolors",     XrmoptionSepArg, 0 }, 
-  { "-gridsize",    ".gridsize",    XrmoptionSepArg, 0 }, 
-  { "-speed",       ".speed",       XrmoptionSepArg, 0 },
-  { "-delay",       ".delay",       XrmoptionSepArg, 0 },
-  { "-color-shift", ".color-shift", XrmoptionSepArg, 0 },
-  { "-radius",      ".radius",      XrmoptionSepArg, 0 },
-  { "-gray",        ".gray",        XrmoptionNoArg,  "True" },
-  { "-mono",        ".mono",        XrmoptionNoArg,  "True" },
-  { "-db",         ".doubleBuffer", XrmoptionNoArg,  "True" },
-  { "-no-db",      ".doubleBuffer", XrmoptionNoArg,  "False" },
-#ifdef HAVE_XSHM_EXTENSION
-  { "-shm",    ".useSHM",      XrmoptionNoArg, "True" },
-  { "-no-shm", ".useSHM",      XrmoptionNoArg, "False" },
-#endif /*  HAVE_XSHM_EXTENSION */
-  { 0, 0, 0, 0 }
-};
-
-int options_size = (sizeof (options) / sizeof (XrmOptionDescRec));
-
-struct inter_source {
-  int x; 
-  int y;
-  double x_theta;
-  double y_theta;
-};
-
-struct inter_context {
-  /*
-   * Display-related entries 
-   */
-  Display* dpy;
-  Window   win;
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  XdbeBackBuffer back_buf;
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-  Pixmap   pix_buf;
-
-  GC       copy_gc;
-#ifdef USE_XIMAGE
-  XImage  *ximage;
-#endif /* USE_XIMAGE */
-
-#ifdef HAVE_XSHM_EXTENSION
-  Bool use_shm;
-  XShmSegmentInfo shm_info;
-#endif /* HAVE_XSHM_EXTENSION */
-
-  /*
-   * Resources
-   */
-  int count;
-  int grid_size;
-  int colors;
-  int speed;
-  int delay;
-  int shift;
-  int radius;
-
-  /*
-   * Drawing-related entries
-   */
-  int w;
-  int h;
-  Colormap cmap;
-  XColor* pal;
-  GC* gcs;
-
-  /*
-   * lookup tables
-   */
-  int* wave_height;
-    
-  /*
-   * Interference sources
-   */
-  struct inter_source* source;
-};
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-# define TARGET(c) ((c)->back_buf ? (c)->back_buf : \
-                    (c)->pix_buf ? (c)->pix_buf : (c)->win)
-#else  /* HAVE_DOUBLE_BUFFER_EXTENSION */
-# define TARGET(c) ((c)->pix_buf ? (c)->pix_buf : (c)->win)
-#endif /* !HAVE_DOUBLE_BUFFER_EXTENSION */
-
-void inter_init(Display* dpy, Window win, struct inter_context* c) 
-{
-  XWindowAttributes xgwa;
-  double H[3], S[3], V[3];
-  int i;
-  int mono;
-  int gray;
-  XGCValues val;
-  unsigned long valmask = 0;
-  Bool dbuf = get_boolean_resource ("doubleBuffer", "Boolean");
-
-  memset (c, 0, sizeof(*c));
-
-  c->dpy = dpy;
-  c->win = win;
-
-  XGetWindowAttributes(c->dpy, c->win, &xgwa);
-  c->w = xgwa.width;
-  c->h = xgwa.height;
-  c->cmap = xgwa.colormap;
-
-#ifdef HAVE_XSHM_EXTENSION
-  c->use_shm = get_boolean_resource("useSHM", "Boolean");
-#endif /*  HAVE_XSHM_EXTENSION */
-
-  if (dbuf)
-    {
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-      c->back_buf = xdbe_get_backbuffer (c->dpy, c->win, XdbeUndefined);
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-      if (!c->back_buf)
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-        c->pix_buf = XCreatePixmap (dpy, win, xgwa.width, xgwa.height,
-                                    xgwa.depth);
-    }
-
-  val.function = GXcopy;
-  c->copy_gc = XCreateGC(c->dpy, TARGET(c), GCFunction, &val);
-
-  c->count = get_integer_resource("count", "Integer");
-  if(c->count < 1)
-    c->count = 1;
-  c->grid_size = get_integer_resource("gridsize", "Integer");
-  if(c->grid_size < 1)
-    c->grid_size = 1;
-  mono = get_boolean_resource("mono", "Boolean");
-  if(!mono) {
-    c->colors = get_integer_resource("ncolors", "Integer");
-    if(c->colors < 2)
-      c->colors = 2;
-  }
-  c->speed = get_integer_resource("speed", "Integer");
-  c->shift = get_float_resource("color-shift", "Float");
-  while(c->shift >= 360.0)
-    c->shift -= 360.0;
-  while(c->shift <= -360.0)
-    c->shift += 360.0;
-  c->radius = get_integer_resource("radius", "Integer");;
-  if(c->radius < 1)
-    c->radius = 1;
-
-#ifdef USE_XIMAGE
-
-  c->ximage = 0;
-
-# ifdef HAVE_XSHM_EXTENSION
-  if (c->use_shm)
-    {
-      c->ximage = create_xshm_image(dpy, xgwa.visual, xgwa.depth,
-                                   ZPixmap, 0, &c->shm_info,
-                                   xgwa.width, c->grid_size);
-      if (!c->ximage)
-       c->use_shm = False;
-    }
-# endif /* HAVE_XSHM_EXTENSION */
-
-  if (!c->ximage)
-    {
-      c->ximage =
-       XCreateImage (dpy, xgwa.visual,
-                     xgwa.depth, ZPixmap, 0, 0, /* depth, fmt, offset, data */
-                     xgwa.width, c->grid_size,  /* width, height */
-                     8, 0);                     /* pad, bpl */
-      c->ximage->data = (unsigned char *)
-       calloc(c->ximage->height, c->ximage->bytes_per_line);
-    }
-#endif /* USE_XIMAGE */
-
-  if(!mono) {
-    c->pal = calloc(c->colors, sizeof(XColor));
-
-    srand48(time(NULL));
-
-    gray = get_boolean_resource("gray", "Boolean");
-    if(!gray) {
-      H[0] = frand(360.0); 
-      H[1] = H[0] + c->shift < 360.0 ? H[0]+c->shift : H[0] + c->shift-360.0; 
-      H[2] = H[1] + c->shift < 360.0 ? H[1]+c->shift : H[1] + c->shift-360.0; 
-      S[0] = S[1] = S[2] = 1.0;
-      V[0] = V[1] = V[2] = 1.0;
-    } else {
-      H[0] = H[1] = H[2] = 0.0;
-      S[0] = S[1] = S[2] = 0.0;
-      V[0] = 1.0; V[1] = 0.5; V[2] = 0.0;
-    }
-
-    make_color_loop(c->dpy, c->cmap, 
-                   H[0], S[0], V[0], 
-                   H[1], S[1], V[1], 
-                   H[2], S[2], V[2], 
-                   c->pal, &(c->colors), 
-                   True, False);
-    if(c->colors < 2) { /* color allocation failure */
-      mono = 1;
-      free(c->pal);
-    }
-  }
-
-  if(mono) { /* DON'T else this with the previous if! */
-    c->colors = 2;
-    c->pal = calloc(2, sizeof(XColor));
-    c->pal[0].pixel = BlackPixel(c->dpy, DefaultScreen(c->dpy));
-    c->pal[1].pixel = WhitePixel(c->dpy, DefaultScreen(c->dpy));
-  }    
-
-  valmask = GCForeground;
-  c->gcs = calloc(c->colors, sizeof(GC));
-  for(i = 0; i < c->colors; i++) {
-    val.foreground = c->pal[i].pixel;    
-    c->gcs[i] = XCreateGC(c->dpy, TARGET(c), valmask, &val);
-  }
-
-  c->wave_height = calloc(c->radius, sizeof(int));
-  for(i = 0; i < c->radius; i++) {
-    float max = 
-      ((float)c->colors) * 
-      ((float)c->radius - (float)i) /
-      ((float)c->radius);
-    c->wave_height[i] = 
-      (int)
-      ((max + max*cos((double)i/50.0)) / 2.0);
-  }
-
-  c->source = calloc(c->count, sizeof(struct inter_source));
-  for(i = 0; i < c->count; i++) {
-    c->source[i].x_theta = frand(2.0)*3.14159;
-    c->source[i].y_theta = frand(2.0)*3.14159;
-  }
-
-}
-
-#define source_x(c, i) \
-  (c->w/2 + ((int)(cos(c->source[i].x_theta)*((float)c->w/2.0))))
-#define source_y(c, i) \
-  (c->h/2 + ((int)(cos(c->source[i].y_theta)*((float)c->h/2.0))))
-
-/*
- * this is rather suboptimal. the sqrt() doesn't seem to be a big
- * performance hit, but all those separate XFillRectangle()'s are.
- * hell, it's just a quick hack anyway -- if someone wishes to tune
- * it, go ahead! 
- */
-
-void do_inter(struct inter_context* c) 
-{
-  int i, j, k;
-  int result;
-  int dist;
-  int g;
-
-  int dx, dy;
-
-  for(i = 0; i < c->count; i++) {
-    c->source[i].x_theta += (c->speed/1000.0);
-    if(c->source[i].x_theta > 2.0*3.14159)
-      c->source[i].x_theta -= 2.0*3.14159;
-    c->source[i].y_theta += (c->speed/1000.0);
-    if(c->source[i].y_theta > 2.0*3.14159)
-      c->source[i].y_theta -= 2.0*3.14159;
-    c->source[i].x = source_x(c, i);
-    c->source[i].y = source_y(c, i);
-  }
-
-  g = c->grid_size;
-
-  for(j = 0; j < c->h/g; j++) {
-    for(i = 0; i < c->w/g; i++) {
-      result = 0;
-      for(k = 0; k < c->count; k++) {
-       dx = i*g + g/2 - c->source[k].x;
-       dy = j*g + g/2 - c->source[k].y;
-       dist = sqrt(dx*dx + dy*dy); /* what's the performance penalty here? */
-       result += (dist > c->radius ? 0 : c->wave_height[dist]);
-      }
-      result %= c->colors;
-
-#ifdef USE_XIMAGE
-      /* Fill in these `gridsize' horizontal bits in the scanline */
-      for(k = 0; k < g; k++)
-       XPutPixel(c->ximage, (g*i)+k, 0, c->pal[result].pixel);
-
-#else  /* !USE_XIMAGE */
-      XFillRectangle(c->dpy, TARGET(c), c->gcs[result], g*i, g*j, g, g); 
-#endif /* !USE_XIMAGE */
-    }
-
-#ifdef USE_XIMAGE
-
-    /* Only the first scanline of the image has been filled in; clone that
-       scanline to the rest of the `gridsize' lines in the ximage */
-    for(k = 0; k < (g-1); k++)
-      memcpy(c->ximage->data + (c->ximage->bytes_per_line * (k + 1)),
-            c->ximage->data + (c->ximage->bytes_per_line * k),
-            c->ximage->bytes_per_line);
-
-    /* Move the bits for this horizontal stripe to the server. */
-# ifdef HAVE_XSHM_EXTENSION
-    if (c->use_shm)
-      XShmPutImage(c->dpy, TARGET(c), c->copy_gc, c->ximage,
-                  0, 0, 0, g*j, c->ximage->width, c->ximage->height,
-                  False);
-    else
-# endif /*  HAVE_XSHM_EXTENSION */
-      XPutImage(c->dpy, TARGET(c), c->copy_gc, c->ximage,
-               0, 0, 0, g*j, c->ximage->width, c->ximage->height);
-
-#endif /* USE_XIMAGE */
-  }
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  if (c->back_buf)
-    {
-      XdbeSwapInfo info[1];
-      info[0].swap_window = c->win;
-      info[0].swap_action = XdbeUndefined;
-      XdbeSwapBuffers(c->dpy, info, 1);
-    }
-  else
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-    if (c->pix_buf)
-      {
-        XCopyArea (c->dpy, c->pix_buf, c->win, c->copy_gc,
-                   0, 0, c->w, c->h, 0, 0);
-      }
-
-  XSync(c->dpy, False);
-}
-
-void screenhack(Display *dpy, Window win) 
-{
-  struct inter_context c;
-  int delay;
-
-  delay = get_integer_resource("delay", "Integer");
-
-  inter_init(dpy, win, &c);
-  while(1) {
-    do_inter(&c); 
-    screenhack_handle_events (dpy);
-    if(delay) usleep(delay);
-  }
-}
diff --git a/hacks/jigsaw.c b/hacks/jigsaw.c
deleted file mode 100644 (file)
index 246c9da..0000000
+++ /dev/null
@@ -1,581 +0,0 @@
-/* xscreensaver, Copyright (c) 1997, 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.
- */
-
-/*
-  TODO:
-
-    =  Rather than just flickering the pieces before swapping them,
-       show them lifting up and moving to their new positions.
-       The path on which they move shouldn't be a straight line;
-       try to avoid having them cross each other by moving them in
-       oppositely-positioned arcs.
-
-    =  Rotate the pieces as well, so that we can swap the corner
-       and edge pieces with each other.
-
-    =  The shapes of the piece bitmaps still aren't quite right.
-       They should line up with no overlap.  They don't...
-    
-    =  Have it drop all pieces to the "floor" then pick them up to
-       reassemble the picture.
-
-    =  As a joke, maybe sometimes have one piece that doesn't fit?
-       Or lose a piece?
- */
-
-#include "screenhack.h"
-
-#define DEBUG
-
-#include "images/jigsaw/jigsaw_a_h.xbm"
-#include "images/jigsaw/jigsaw_a_n_h.xbm"
-#include "images/jigsaw/jigsaw_a_ne_h.xbm"
-#include "images/jigsaw/jigsaw_a_e_h.xbm"
-#include "images/jigsaw/jigsaw_a_se_h.xbm"
-#include "images/jigsaw/jigsaw_a_s_h.xbm"
-#include "images/jigsaw/jigsaw_a_sw_h.xbm"
-#include "images/jigsaw/jigsaw_a_w_h.xbm"
-#include "images/jigsaw/jigsaw_a_nw_h.xbm"
-
-#include "images/jigsaw/jigsaw_b_h.xbm"
-#include "images/jigsaw/jigsaw_b_n_h.xbm"
-#include "images/jigsaw/jigsaw_b_ne_h.xbm"
-#include "images/jigsaw/jigsaw_b_e_h.xbm"
-#include "images/jigsaw/jigsaw_b_se_h.xbm"
-#include "images/jigsaw/jigsaw_b_s_h.xbm"
-#include "images/jigsaw/jigsaw_b_sw_h.xbm"
-#include "images/jigsaw/jigsaw_b_w_h.xbm"
-#include "images/jigsaw/jigsaw_b_nw_h.xbm"
-
-#include "images/jigsaw/jigsaw_a_f.xbm"
-#include "images/jigsaw/jigsaw_a_n_f.xbm"
-#include "images/jigsaw/jigsaw_a_ne_f.xbm"
-#include "images/jigsaw/jigsaw_a_e_f.xbm"
-#include "images/jigsaw/jigsaw_a_se_f.xbm"
-#include "images/jigsaw/jigsaw_a_s_f.xbm"
-#include "images/jigsaw/jigsaw_a_sw_f.xbm"
-#include "images/jigsaw/jigsaw_a_w_f.xbm"
-#include "images/jigsaw/jigsaw_a_nw_f.xbm"
-
-#include "images/jigsaw/jigsaw_b_f.xbm"
-#include "images/jigsaw/jigsaw_b_n_f.xbm"
-#include "images/jigsaw/jigsaw_b_ne_f.xbm"
-#include "images/jigsaw/jigsaw_b_e_f.xbm"
-#include "images/jigsaw/jigsaw_b_se_f.xbm"
-#include "images/jigsaw/jigsaw_b_s_f.xbm"
-#include "images/jigsaw/jigsaw_b_sw_f.xbm"
-#include "images/jigsaw/jigsaw_b_w_f.xbm"
-#include "images/jigsaw/jigsaw_b_nw_f.xbm"
-
-#define GRID_WIDTH  66
-#define GRID_HEIGHT 66
-
-#define CENTER   0
-#define NORTH    1
-#define NORTHEAST 2
-#define EAST     3
-#define SOUTHEAST 4
-#define SOUTH    5
-#define SOUTHWEST 6
-#define WEST     7
-#define NORTHWEST 8
-
-struct piece {
-  int width, height;
-  int x, y;
-  Pixmap pixmap;
-};
-
-struct set {
-  struct piece pieces[9];
-};
-
-#define PIECE_A_HOLLOW 0
-#define PIECE_A_FILLED 1
-#define PIECE_B_HOLLOW 2
-#define PIECE_B_FILLED 3
-
-static struct set all_pieces[4];
-
-static void
-init_images(Display *dpy, Window window)
-{
-# define LOAD_PIECE(PIECE,NAME)                                        \
-    PIECE.x = jigsaw_##NAME##_x_hot;                           \
-    PIECE.y = jigsaw_##NAME##_y_hot;                           \
-    PIECE.pixmap =                                             \
-    XCreatePixmapFromBitmapData(dpy, window,                   \
-                               (char *) jigsaw_##NAME##_bits,  \
-                               jigsaw_##NAME##_width,          \
-                               jigsaw_##NAME##_height,         \
-                               1, 0, 1)
-
-# define LOAD_PIECES(SET,PREFIX,SUFFIX)                                \
-    LOAD_PIECE(SET.pieces[CENTER],    PREFIX##_##SUFFIX);      \
-    LOAD_PIECE(SET.pieces[NORTH],     PREFIX##_n_##SUFFIX);    \
-    LOAD_PIECE(SET.pieces[NORTHEAST], PREFIX##_ne_##SUFFIX);   \
-    LOAD_PIECE(SET.pieces[EAST],      PREFIX##_e_##SUFFIX);    \
-    LOAD_PIECE(SET.pieces[SOUTHEAST], PREFIX##_se_##SUFFIX);   \
-    LOAD_PIECE(SET.pieces[SOUTH],     PREFIX##_s_##SUFFIX);    \
-    LOAD_PIECE(SET.pieces[SOUTHWEST], PREFIX##_sw_##SUFFIX);   \
-    LOAD_PIECE(SET.pieces[WEST],      PREFIX##_w_##SUFFIX);    \
-    LOAD_PIECE(SET.pieces[NORTHWEST], PREFIX##_nw_##SUFFIX)
-
-  LOAD_PIECES(all_pieces[PIECE_A_HOLLOW],a,h);
-  LOAD_PIECES(all_pieces[PIECE_A_FILLED],a,f);
-  LOAD_PIECES(all_pieces[PIECE_B_HOLLOW],b,h);
-  LOAD_PIECES(all_pieces[PIECE_B_FILLED],b,f);
-
-# undef LOAD_PIECE
-# undef LOAD_PIECES
-}
-
-static Pixmap
-read_screen (Display *dpy, Window window, int *widthP, int *heightP)
-{
-  Pixmap p;
-  XWindowAttributes xgwa;
-  XGCValues gcv;
-  GC gc;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  *widthP = xgwa.width;
-  *heightP = xgwa.height;
-
-  XClearWindow(dpy, window);
-  grab_screen_image(xgwa.screen, window);
-  p = XCreatePixmap(dpy, window, *widthP, *heightP, xgwa.depth);
-  gcv.function = GXcopy;
-  gc = XCreateGC (dpy, window, GCFunction, &gcv);
-  XCopyArea (dpy, window, p, gc, 0, 0, *widthP, *heightP, 0, 0);
-
-  XFreeGC (dpy, gc);
-
-  return p;
-}
-
-
-static int width, height;
-static int x_border, y_border;
-static Pixmap source;
-static GC gc;
-static Bool tweak;
-static int fg, bg;
-static XPoint *state = 0;
-
-static void
-jigsaw_init(Display *dpy, Window window)
-{
-  XWindowAttributes xgwa;
-  int x, y;
-  XGCValues gcv;
-  Colormap cmap;
-  int source_w, source_h;
-
-  tweak = random()&1;
-
-  source = read_screen (dpy, window, &source_w, &source_h);
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  width  = xgwa.width  / GRID_WIDTH;
-  height = xgwa.height / GRID_HEIGHT;
-  x_border = (xgwa.width  - (width  * GRID_WIDTH)) / 2;
-  y_border = (xgwa.height - (height * GRID_WIDTH)) / 2;
-
-  if (!state)
-    state = (XPoint *) malloc(width * height * sizeof(XPoint));
-  gc = XCreateGC (dpy, window, 0, &gcv);
-
-  {
-    XColor fgc, bgc;
-    char *fgs = get_string_resource("foreground", "Foreground");
-    char *bgs = get_string_resource("background", "Background");
-    Bool fg_ok, bg_ok;
-    if (!XParseColor (dpy, cmap, fgs, &fgc))
-      XParseColor (dpy, cmap, "gray", &fgc);
-    if (!XParseColor (dpy, cmap, bgs, &bgc))
-      XParseColor (dpy, cmap, "black", &bgc);
-
-    fg_ok = XAllocColor (dpy, cmap, &fgc);
-    bg_ok = XAllocColor (dpy, cmap, &bgc);
-
-    /* If we weren't able to allocate the two colors we want from the
-       colormap (which is likely if the screen has been grabbed on an
-       8-bit SGI visual -- don't ask) then just go through the map
-       and find the closest color to the ones we wanted, and use those
-       pixels without actually allocating them.
-     */
-    if (fg_ok)
-      fg = fgc.pixel;
-    else
-      fg = 0;
-
-    if (bg_ok)
-      bg = bgc.pixel;
-    else
-      bg = 1;
-
-    if (!fg_ok || bg_ok)
-      {
-       int i;
-       unsigned long fgd = ~0;
-       unsigned long bgd = ~0;
-       int max = visual_cells (xgwa.screen, xgwa.visual);
-       XColor *all = (XColor *) calloc(sizeof (*all), max);
-       for (i = 0; i < max; i++)
-         {
-           all[i].flags = DoRed|DoGreen|DoBlue;
-           all[i].pixel = i;
-         }
-       XQueryColors (dpy, cmap, all, max);
-       for(i = 0; i < max; i++)
-         {
-           long rd, gd, bd;
-           unsigned long d;
-           if (!fg_ok)
-             {
-               rd = (all[i].red   >> 8) - (fgc.red   >> 8);
-               gd = (all[i].green >> 8) - (fgc.green >> 8);
-               bd = (all[i].blue  >> 8) - (fgc.blue  >> 8);
-               if (rd < 0) rd = -rd;
-               if (gd < 0) gd = -gd;
-               if (bd < 0) bd = -bd;
-               d = (rd << 1) + (gd << 2) + bd;
-               if (d < fgd)
-                 {
-                   fgd = d;
-                   fg = all[i].pixel;
-                   if (d == 0)
-                     fg_ok = True;
-                 }
-             }
-
-           if (!bg_ok)
-             {
-               rd = (all[i].red   >> 8) - (bgc.red   >> 8);
-               gd = (all[i].green >> 8) - (bgc.green >> 8);
-               bd = (all[i].blue  >> 8) - (bgc.blue  >> 8);
-               if (rd < 0) rd = -rd;
-               if (gd < 0) gd = -gd;
-               if (bd < 0) bd = -bd;
-               d = (rd << 1) + (gd << 2) + bd;
-               if (d < bgd)
-                 {
-                   bgd = d;
-                   bg = all[i].pixel;
-                   if (d == 0)
-                     bg_ok = True;
-                 }
-             }
-
-           if (fg_ok && bg_ok)
-             break;
-         }
-       XFree(all);
-      }
-  }
-
-  /* Reset the window's background color... */
-  XSetWindowBackground (dpy, window, bg);
-  XClearWindow(dpy, window);
-
-  for (y = 0; y < height; y++)
-    for (x = 0; x < width; x++)
-      {
-       state[y * width + x].x = x;
-       state[y * width + x].y = y;
-      }
-}
-
-
-static void
-get_piece(int x, int y, struct piece **hollow, struct piece **filled)
-{
-  int p;
-  Bool which = (x & 1) == (y & 1);
-
-  if      (x == 0       && y == 0)       p = NORTHWEST;
-  else if (x == width-1 && y == 0)       p = NORTHEAST;
-  else if (x == width-1 && y == height-1) p = SOUTHEAST;
-  else if (x == 0       && y == height-1) p = SOUTHWEST;
-  else if (y == 0)                       p = NORTH;
-  else if (x == width-1)                 p = EAST;
-  else if (y == height-1)                p = SOUTH;
-  else if (x == 0)                       p = WEST;
-  else                                   p = CENTER;
-
-  if (tweak) which = !which;
-  if (hollow)
-    *hollow = (which
-              ? &all_pieces[PIECE_A_HOLLOW].pieces[p]
-              : &all_pieces[PIECE_B_HOLLOW].pieces[p]);
-  if (filled)
-    *filled = (which
-              ? &all_pieces[PIECE_A_FILLED].pieces[p]
-              : &all_pieces[PIECE_B_FILLED].pieces[p]);
-}
-
-
-static void
-draw_piece(Display *dpy, Window window, int x, int y, int clear_p)
-{
-  struct piece *hollow, *filled;
-  int from_x = state[y * width + x].x;
-  int from_y = state[y * width + x].y;
-
-  get_piece(x, y, &hollow, &filled);
-         
-  XSetClipMask(dpy, gc, filled->pixmap);
-  XSetClipOrigin(dpy, gc,
-                x_border + (x * GRID_WIDTH) - filled->x - 1,
-                y_border + (y * GRID_WIDTH) - filled->y - 1);
-
-  if (clear_p)
-    {
-      XSetForeground(dpy, gc, bg);
-      XFillRectangle(dpy, window, gc,
-                    x_border + (x * GRID_WIDTH)  - GRID_WIDTH/2,
-                    y_border + (y * GRID_HEIGHT) - GRID_HEIGHT/2,
-                    GRID_WIDTH*2, GRID_HEIGHT*2);
-    }
-  else
-    XCopyArea(dpy, source, window, gc,
-             x_border + (from_x * GRID_WIDTH)  - GRID_WIDTH/2,
-             y_border + (from_y * GRID_HEIGHT) - GRID_HEIGHT/2,
-             GRID_WIDTH*2, GRID_HEIGHT*2,
-             x_border + (x * GRID_WIDTH)  - GRID_WIDTH/2,
-             y_border + (y * GRID_HEIGHT) - GRID_HEIGHT/2);
-
-  if (clear_p > 1)
-    return;
-
-  XSetForeground(dpy, gc, fg);
-  XSetClipMask(dpy, gc, hollow->pixmap);
-  XSetClipOrigin(dpy, gc,
-                x_border + (x * GRID_WIDTH) - hollow->x - 1,
-                y_border + (y * GRID_WIDTH) - hollow->y - 1);
-  XFillRectangle(dpy, window, gc,
-                x_border + (x * GRID_WIDTH)  - GRID_WIDTH/2,
-                y_border + (y * GRID_HEIGHT) - GRID_HEIGHT/2,
-                GRID_WIDTH*2, GRID_HEIGHT*2);
-
-  if (clear_p)
-    {
-      /* If the pieces lined up right, we could do this by just not drawing
-        the outline -- but that doesn't look right, since it eats the outlines
-        of the adjascent pieces.  So draw the outline, then chop off the outer
-        edge if this is a border piece.
-       */
-      XSetForeground(dpy, gc, bg);
-      if (x == 0)
-       XFillRectangle(dpy, window, gc,
-                      x_border - 2,
-                      y_border + (y * GRID_HEIGHT),
-                      3, GRID_HEIGHT);
-      else if (x == width-1)
-       XFillRectangle(dpy, window, gc,
-                      x_border + ((x+1) * GRID_WIDTH) - 2,
-                      y_border + (y * GRID_HEIGHT),
-                      3, GRID_HEIGHT);
-
-      if (y == 0)
-       XFillRectangle(dpy, window, gc,
-                      x_border + (x * GRID_WIDTH),
-                      y_border - 2,
-                      GRID_WIDTH, 3);
-      else if (y == height-1)
-       XFillRectangle(dpy, window, gc,
-                      x_border + (x * GRID_WIDTH),
-                      y_border + ((y+1) * GRID_HEIGHT) - 2,
-                      GRID_WIDTH, 3);
-    }
-}
-
-
-static void
-swap_pieces(Display *dpy, Window window,
-           int src_x, int src_y, int dst_x, int dst_y,
-           Bool draw_p)
-{
-  XPoint swap;
-  int i;
-  if (draw_p)
-    for (i = 0; i < 3; i++)
-      {
-       draw_piece(dpy, window, src_x, src_y, 1);
-       draw_piece(dpy, window, dst_x, dst_y, 1);
-       XSync(dpy, False);
-       usleep(50000);
-       draw_piece(dpy, window, src_x, src_y, 0);
-       draw_piece(dpy, window, dst_x, dst_y, 0);
-       XSync(dpy, False);
-       usleep(50000);
-      }
-
-  swap = state[src_y * width + src_x];
-  state[src_y * width + src_x] = state[dst_y * width + dst_x];
-  state[dst_y * width + dst_x] = swap;
-
-  if (draw_p)
-    {
-      draw_piece(dpy, window, src_x, src_y, 0);
-      draw_piece(dpy, window, dst_x, dst_y, 0);
-      XSync(dpy, False);
-    }
-}
-
-
-static void
-shuffle(Display *dpy, Window window, Bool draw_p)
-{
-  struct piece *p1, *p2;
-  int src_x, src_y, dst_x = -1, dst_y = -1;
-
- AGAIN:
-  p1 = p2 = 0;
-  src_x = random() % width;
-  src_y = random() % height;
-
-  get_piece(src_x, src_y, &p1, 0);
-
-  /* Pick random coordinates until we find one that has the same kind of
-     piece as the first one we picked.  Note that it's possible for there
-     to be only one piece of a particular shape on the board (this commonly
-     happens with the corner pieces.)
-   */
-  while (p1 != p2)
-    {
-      dst_x = random() % width;
-      dst_y = random() % height;
-      get_piece(dst_x, dst_y, &p2, 0);
-    }
-
-  if (src_x == dst_x && src_y == dst_y)
-    goto AGAIN;
-
-  swap_pieces(dpy, window, src_x, src_y, dst_x, dst_y, draw_p);
-}
-
-
-static void
-shuffle_all(Display *dpy, Window window)
-{
-  int i = (width * height * 10);
-  while (i > 0)
-    {
-      shuffle(dpy, window, False);
-      i--;
-    }
-}
-
-static void
-unshuffle(Display *dpy, Window window)
-{
-  int i;
-  for (i = 0; i < width * height * 4; i++)
-    {
-      int x = random() % width;
-      int y = random() % height;
-      int x2 = state[y * width + x].x;
-      int y2 = state[y * width + x].y;
-      if (x != x2 || y != y2)
-       {
-         swap_pieces(dpy, window, x, y, x2, y2, True);
-         break;
-       }
-    }
-}
-
-static void
-clear_all(Display *dpy, Window window)
-{
-  int n = width * height;
-  while (n > 0)
-    {
-      int x = random() % width;
-      int y = random() % height;
-      XPoint *p = &state[y * width + x];
-      if (p->x == -1)
-       continue;
-      draw_piece(dpy, window, p->x, p->y, 2);
-      XSync(dpy, False);
-      usleep(1000);
-      p->x = p->y = -1;
-      n--;
-    }
-}
-
-static Bool
-done(void)
-{
-  int x, y;
-  for (y = 0; y < height; y++)
-    for (x = 0; x < width; x++)
-      {
-       int x2 = state[y * width + x].x;
-       int y2 = state[y * width + x].y;
-       if (x != x2 || y != y2)
-         return False;
-      }
-  return True;
-}
-
-
-\f
-char *progclass = "Jigsaw";
-
-char *defaults [] = {
-  ".background:                Black",
-  ".foreground:                Gray40",
-  "*delay:             70000",
-  "*delay2:            5",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
-  { "-delay2",         ".delay2",              XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  int delay = get_integer_resource("delay", "Integer");
-  int delay2 = get_integer_resource("delay2", "Integer");
-
-  init_images(dpy, window);
-
-  while (1)
-    {
-      int x, y;
-      jigsaw_init (dpy, window);
-      shuffle_all(dpy, window);
-
-      for (y = 0; y < height; y++)
-       for (x = 0; x < width; x++)
-         draw_piece(dpy, window, x, y, 0);
-
-      while (!done())
-       {
-         unshuffle(dpy, window);
-         XSync (dpy, False);
-          screenhack_handle_events (dpy);
-         if (delay) usleep (delay);
-       }
-
-      screenhack_handle_events (dpy);
-      if (delay2)
-       usleep (delay2 * 1000000);
-
-      clear_all(dpy, window);
-    }
-}
diff --git a/hacks/jigsaw.man b/hacks/jigsaw.man
deleted file mode 100644 (file)
index ae9f7a0..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-.TH XScreenSaver 1 "25-Nov-97" "X Version 11"
-.SH NAME
-jigsaw - permute the screen image like a jigsaw puzzle
-.SH SYNOPSIS
-.B jigsaw
-[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP] [\-delay \fIusecs\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP]
-.SH DESCRIPTION
-The \fIjigsaw\fP program takes an image of the screen, carves it up into
-a jigsaw puzzle, shuffles it, and then solves it.
-.SH OPTIONS
-.I jigsaw
-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
-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 long to wait between shuffling pieces; default 700000, or 0.7 seconds.
-.SH RESOURCES
-On some systems (currently, only SGIs), this program can, instead of grabbing
-a desktop image, grab a frame of video from an external camera and manipulate
-that instead.  The following resources control that.
-.PP
-.TP 8
-.B grabVideoProbability \fR(Float)\fP
-What portion of the time to grab video rather than a screen image, 
-between 0.0 and 1.0.  Defaults to 0.5, or half the time.
-.TP 8
-.B videoDevice \fR(Integer)\fP
-The number of the default video input device to check first.  If unspecified, 
-the default camera (from videopanel(1)) will be checked first.  After that, all
-other available video input devices will be checked in order.  
-
-The first one which produces a non-black image will be used.  If all images
-are black, the others will be re-checked a few times before giving up and
-falling back to simply grabbing a desktop image (but note that this takes a
-few seconds, so if you don't actually have any video sources hooked up, you
-should consider turning off video grabbing by setting
-\fBgrabVideoProbability\fP to 0.0.)
-.TP 8
-.B videoGain \fR(Float)\fP
-The amount by which to brighten the grabbed image.  This defaults to 2.2.
-.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 1997 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 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>, 25-Nov-97.
diff --git a/hacks/julia.c b/hacks/julia.c
deleted file mode 100644 (file)
index 29cbb55..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * julia --- continuously varying Julia set.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)julia.c      4.03 97/04/10 xlockmore";
-#endif
-
-/* Copyright (c) 1995 Sean McCullough <bankshot@mailhost.nmt.edu>.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 28-May-97: jwz@jwz.org: added interactive frobbing with the mouse.
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 02-Dec-95: snagged boilerplate from hop.c
- *           used ifs {w0 = sqrt(x-c), w1 = -sqrt(x-c)} with random iteration 
- *           to plot the julia set, and sinusoidially varied parameter for set 
- *          and plotted parameter with a circle.
- */
-
-/*-
- * One thing to note is that batchcount is the *depth* of the search tree,
- * so the number of points computed is 2^batchcount - 1.  I use 8 or 9
- * on a dx266 and it looks okay.  The sinusoidal variation of the parameter
- * might not be as interesting as it could, but it still gives an idea of
- * the effect of the parameter.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Julia"
-# define HACK_INIT                                     init_julia
-# define HACK_DRAW                                     draw_julia
-# define julia_opts                                    xlockmore_opts
-# define DEFAULTS      "*count:                1000  \n"                       \
-                                       "*cycles:               20    \n"                       \
-                                       "*delay:                10000 \n"                       \
-                                       "*ncolors:              200   \n"
-# define UNIFORM_COLORS
-# include "xlockmore.h"                                /* in xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* in xlockmore distribution */
-#endif /* !STANDALONE */
-
-
-static Bool track_p;
-
-#define DEF_MOUSE "False"
-
-static XrmOptionDescRec opts[] =
-{
-       {"-mouse", ".julia.mouse", XrmoptionNoArg, (caddr_t) "on"},
-       {"+mouse", ".julia.mouse", XrmoptionNoArg, (caddr_t) "off"},
-};
-static argtype vars[] =
-{
-       {(caddr_t *) & track_p, "mouse", "Mouse", DEF_MOUSE, t_Bool},
-};
-static OptionStruct desc[] =
-{
-       {"-/+mouse", "turn on/off mouse tracking"},
-};
-
-ModeSpecOpt julia_opts = { 2, opts, 1, vars, desc };
-
-
-#define numpoints ((0x2<<jp->depth)-1)
-
-typedef struct {
-       int         centerx;
-       int         centery;    /* center of the screen */
-       double      cr;
-       double      ci;         /* julia params */
-       int         depth;
-       int         inc;
-       int         circsize;
-       int         erase;
-       int         pix;
-       long        itree;
-       int         buffer;
-       int         nbuffers;
-       int         redrawing, redrawpos;
-       Pixmap      pixmap;
-       Cursor      cursor;
-       GC          stippledGC;
-       XPoint    **pointBuffer;        /* pointer for XDrawPoints */
-
-} juliastruct;
-
-static juliastruct *julias = NULL;
-
-/* How many segments to draw per cycle when redrawing */
-#define REDRAWSTEP 3
-
-static void
-apply(juliastruct * jp, register double xr, register double xi, int d)
-{
-       double      theta, r;
-
-       jp->pointBuffer[jp->buffer][jp->itree].x =
-               (int) (0.5 * xr * jp->centerx + jp->centerx);
-       jp->pointBuffer[jp->buffer][jp->itree].y =
-               (int) (0.5 * xi * jp->centery + jp->centery);
-       jp->itree++;
-
-       if (d > 0) {
-               xi -= jp->ci;
-               xr -= jp->cr;
-
-/* Avoid atan2: DOMAIN error message */
-               if (xi == 0.0 && xr == 0.0)
-                       theta = 0.0;
-               else
-                       theta = atan2(xi, xr) / 2.0;
-
-               /*r = pow(xi * xi + xr * xr, 0.25); */
-               r = sqrt(sqrt(xi * xi + xr * xr));      /* 3 times faster */
-
-               xr = r * cos(theta);
-               xi = r * sin(theta);
-
-               d--;
-               apply(jp, xr, xi, d);
-               apply(jp, -xr, -xi, d);
-       }
-}
-
-static void
-incr(ModeInfo * mi, juliastruct * jp)
-{
-       int cx, cy;
-
-       if (track_p)
-         {
-               Window r, c;
-               int rx, ry;
-               unsigned int m;
-               XQueryPointer(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                         &r, &c, &rx, &ry, &cx, &cy, &m);
-               if (cx <= 0 || cy <= 0 ||
-                       cx >= MI_WIN_WIDTH(mi) || cy >= MI_WIN_HEIGHT(mi))
-                 goto NOTRACK;
-         }
-
-       if (track_p)
-         {
-               jp->cr = ((double) (cx + 2 - jp->centerx)) * 2 / jp->centerx;
-               jp->ci = ((double) (cy + 2 - jp->centery)) * 2 / jp->centery;
-         }
-       else
-         {
-         NOTRACK:
-               jp->cr = 1.5 * (sin(M_PI * (jp->inc / 300.0)) *
-                                               sin(jp->inc * M_PI / 200.0));
-               jp->ci = 1.5 * (cos(M_PI * (jp->inc / 300.0)) *
-                                               cos(jp->inc * M_PI / 200.0));
-
-               jp->cr += 0.5 * cos(M_PI * jp->inc / 400.0);
-               jp->ci += 0.5 * sin(M_PI * jp->inc / 400.0);
-         }
-}
-
-void
-init_julia(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       juliastruct *jp;
-       XGCValues   gcv;
-       int         i;
-
-       if (julias == NULL) {
-               if ((julias = (juliastruct *) calloc(MI_NUM_SCREENS(mi),
-                                             sizeof (juliastruct))) == NULL)
-                       return;
-       }
-       jp = &julias[MI_SCREEN(mi)];
-
-       jp->centerx = MI_WIN_WIDTH(mi) / 2;
-       jp->centery = MI_WIN_HEIGHT(mi) / 2;
-
-       jp->depth = MI_BATCHCOUNT(mi);
-       if (jp->depth > 10)
-               jp->depth = 10;
-
-
-       if (track_p && !jp->cursor)
-         {
-               Pixmap bit;
-               XColor black;
-               black.red = black.green = black.blue = 0;
-               black.flags = DoRed|DoGreen|DoBlue;
-               bit = XCreatePixmapFromBitmapData (display, window, "\000", 1, 1,
-                                                                                  MI_WIN_BLACK_PIXEL(mi),
-                                                                                  MI_WIN_BLACK_PIXEL(mi), 1);
-               jp->cursor = XCreatePixmapCursor (display, bit, bit, &black, &black,
-                                                                                 0, 0);
-               XFreePixmap (display, bit);
-         }
-
-       if (jp->pixmap != None &&
-           jp->circsize != (MIN(jp->centerx, jp->centery) / 60) * 2 + 1) {
-               XFreePixmap(display, jp->pixmap);
-               jp->pixmap = None;
-       }
-       if (jp->pixmap == None) {
-               GC          fg_gc = None, bg_gc = None;
-
-               jp->circsize = (MIN(jp->centerx, jp->centery) / 96) * 2 + 1;
-               jp->pixmap = XCreatePixmap(display, window, jp->circsize, jp->circsize, 1);
-               gcv.foreground = 1;
-               fg_gc = XCreateGC(display, jp->pixmap, GCForeground, &gcv);
-               gcv.foreground = 0;
-               bg_gc = XCreateGC(display, jp->pixmap, GCForeground, &gcv);
-               XFillRectangle(display, jp->pixmap, bg_gc,
-                              0, 0, jp->circsize, jp->circsize);
-               if (jp->circsize < 2)
-                       XDrawPoint(display, jp->pixmap, fg_gc, 0, 0);
-               else
-                       XFillArc(display, jp->pixmap, fg_gc,
-                                0, 0, jp->circsize, jp->circsize, 0, 23040);
-               if (fg_gc != None)
-                       XFreeGC(display, fg_gc);
-               if (bg_gc != None)
-                       XFreeGC(display, bg_gc);
-       }
-
-       if (MI_WIN_IS_INROOT(mi))
-         ;
-       else if (jp->circsize > 0)
-         XDefineCursor (display, window, jp->cursor);
-       else
-         XUndefineCursor (display, window);
-
-       if (!jp->stippledGC) {
-               gcv.foreground = MI_WIN_BLACK_PIXEL(mi);
-               gcv.background = MI_WIN_BLACK_PIXEL(mi);
-               if ((jp->stippledGC = XCreateGC(display, window,
-                                GCForeground | GCBackground, &gcv)) == None)
-                       return;
-       }
-       if (MI_NPIXELS(mi) > 2)
-               jp->pix = NRAND(MI_NPIXELS(mi));
-       jp->inc = ((LRAND() & 1) * 2 - 1) * NRAND(200);
-       jp->nbuffers = (MI_CYCLES(mi) + 1);
-       if (!jp->pointBuffer)
-               jp->pointBuffer = (XPoint **) calloc(jp->nbuffers, sizeof (XPoint *));
-       for (i = 0; i < jp->nbuffers; ++i)
-               if (jp->pointBuffer[i])
-                       (void) memset((char *) jp->pointBuffer[i], 0,
-                                     numpoints * sizeof (XPoint));
-               else
-                       jp->pointBuffer[i] = (XPoint *) calloc(numpoints, sizeof (XPoint));
-       jp->buffer = 0;
-       jp->redrawing = 0;
-       jp->erase = 0;
-       XClearWindow(display, window);
-}
-
-
-/* hack: moved here by jwz. */
-#define ERASE_IMAGE(d,w,g,x,y,xl,yl,xs,ys) \
-if (yl<y) \
-(y<yl+ys)?XFillRectangle(d,w,g,xl,yl,xs,y-yl): \
-XFillRectangle(d,w,g,xl,yl,xs,ys); \
-else if (yl>y) \
-(y>yl-ys)?XFillRectangle(d,w,g,xl,y+ys,xs,yl-y): \
-XFillRectangle(d,w,g,xl,yl,xs,ys); \
-if (xl<x) \
-(x<xl+xs)?XFillRectangle(d,w,g,xl,yl,x-xl,ys): \
-XFillRectangle(d,w,g,xl,yl,xs,ys); \
-else if (xl>x) \
-(x>xl-xs)?XFillRectangle(d,w,g,x+xs,yl,xl-x,ys): \
-XFillRectangle(d,w,g,xl,yl,xs,ys)
-
-
-void
-draw_julia(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       juliastruct *jp = &julias[MI_SCREEN(mi)];
-       double      r, theta;
-       register double xr = 0.0, xi = 0.0;
-       int         k = 64, rnd = 0, i, j;
-       XPoint     *xp = jp->pointBuffer[jp->buffer], old_circle, new_circle;
-
-       old_circle.x = (int) (jp->centerx * jp->cr / 2) + jp->centerx - 2;
-       old_circle.y = (int) (jp->centery * jp->ci / 2) + jp->centery - 2;
-       incr(mi, jp);
-       new_circle.x = (int) (jp->centerx * jp->cr / 2) + jp->centerx - 2;
-       new_circle.y = (int) (jp->centery * jp->ci / 2) + jp->centery - 2;
-       XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-       ERASE_IMAGE(display, window, gc, new_circle.x, new_circle.y,
-                   old_circle.x, old_circle.y, jp->circsize, jp->circsize);
-       /* draw a circle at the c-parameter so you can see it's effect on the
-          structure of the julia set */
-       XSetTSOrigin(display, jp->stippledGC, new_circle.x, new_circle.y);
-       XSetForeground(display, jp->stippledGC, MI_WIN_WHITE_PIXEL(mi));
-       XSetStipple(display, jp->stippledGC, jp->pixmap);
-       XSetFillStyle(display, jp->stippledGC, FillOpaqueStippled);
-       XFillRectangle(display, window, jp->stippledGC, new_circle.x, new_circle.y,
-                      jp->circsize, jp->circsize);
-       XFlush(display);
-       if (jp->erase == 1) {
-               XDrawPoints(display, window, gc,
-                   jp->pointBuffer[jp->buffer], numpoints, CoordModeOrigin);
-       }
-       jp->inc++;
-       if (MI_NPIXELS(mi) > 2) {
-               XSetForeground(display, gc, MI_PIXEL(mi, jp->pix));
-               if (++jp->pix >= MI_NPIXELS(mi))
-                       jp->pix = 0;
-       } else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       while (k--) {
-
-               /* save calls to LRAND by using bit shifts over and over on the same
-                  int for 32 iterations, then get a new random int */
-               if (!(k % 32))
-                       rnd = LRAND();
-
-               /* complex sqrt: x^0.5 = radius^0.5*(cos(theta/2) + i*sin(theta/2)) */
-
-               xi -= jp->ci;
-               xr -= jp->cr;
-
-               /* Avoid atan2: DOMAIN error message */
-               if (xi == 0.0 && xr == 0.0)
-                       theta = 0.0;
-               else
-                       theta = atan2(xi, xr) / 2.0;
-
-               /*r = pow(xi * xi + xr * xr, 0.25); */
-               r = sqrt(sqrt(xi * xi + xr * xr));      /* 3 times faster */
-
-               xr = r * cos(theta);
-               xi = r * sin(theta);
-
-               if ((rnd >> (k % 32)) & 0x1) {
-                       xi = -xi;
-                       xr = -xr;
-               }
-               xp->x = jp->centerx + (int) ((jp->centerx >> 1) * xr);
-               xp->y = jp->centery + (int) ((jp->centery >> 1) * xi);
-               xp++;
-       }
-
-       jp->itree = 0;
-       apply(jp, xr, xi, jp->depth);
-
-       XDrawPoints(display, window, gc,
-                   jp->pointBuffer[jp->buffer], numpoints, CoordModeOrigin);
-
-       jp->buffer++;
-       if (jp->buffer > jp->nbuffers - 1) {
-               jp->buffer -= jp->nbuffers;
-               jp->erase = 1;
-       }
-       if (jp->redrawing) {
-               for (i = 0; i < REDRAWSTEP; i++) {
-                       j = (jp->buffer - jp->redrawpos + jp->nbuffers) % jp->nbuffers;
-                       XDrawPoints(display, window, gc,
-                            jp->pointBuffer[j], numpoints, CoordModeOrigin);
-
-                       if (++(jp->redrawpos) >= jp->nbuffers) {
-                               jp->redrawing = 0;
-                               break;
-                       }
-               }
-       }
-}
-
-void
-release_julia(ModeInfo * mi)
-{
-       if (julias != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       Display    *display = MI_DISPLAY(mi);
-                       juliastruct *jp = &julias[screen];
-                       int         buffer;
-
-                       if (jp->pointBuffer) {
-                               for (buffer = 0; buffer < jp->nbuffers; buffer++)
-                                       if (jp->pointBuffer[buffer])
-                                               (void) free((void *) jp->pointBuffer[buffer]);
-                               (void) free((void *) jp->pointBuffer);
-                       }
-                       if (jp->stippledGC != None)
-                               XFreeGC(display, jp->stippledGC);
-                       if (jp->pixmap != None)
-                               XFreePixmap(display, jp->pixmap);
-                       if (jp->cursor)
-                         XFreeCursor (display, jp->cursor);
-               }
-               (void) free((void *) julias);
-               julias = NULL;
-       }
-}
-
-void
-refresh_julia(ModeInfo * mi)
-{
-       juliastruct *jp = &julias[MI_SCREEN(mi)];
-
-       jp->redrawing = 1;
-       jp->redrawpos = 0;
-}
diff --git a/hacks/julia.man b/hacks/julia.man
deleted file mode 100644 (file)
index 1aa6809..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-.TH XScreenSaver 1 "28-May-97" "X Version 11"
-.SH NAME
-julia - draws spinning, animating julia-set fractals
-.SH SYNOPSIS
-.B julia
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-mouse] [\-nomouse]
-
-.SH DESCRIPTION
-The \fIjulia\fP program draws spinning, animating julia-set fractals.
-
-It uses ifs {w0 = sqrt(x-c), w1 = -sqrt(x-c)} with random iteration 
-to plot the julia set, and sinusoidially varied parameters for the set,
-and plots parameters with a circle.
-
-One thing to note is that count is the \fIdepth\fP of the search tree,
-so the number of points computed is (2^count)-1.  I use 8 or 9 on a
-dx266 and it looks okay.  The sinusoidal variation of the parameter
-might not be as interesting as it could, but it still gives an idea 
-of the effect of the parameter.
-
-.SH OPTIONS
-.I julia
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-The colors used cycle through the hue, making N stops around
-the color wheel.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.TP 8
-.B \-mouse
-.TP 8
-.B \-nomouse
-If \fI\-mouse\fP is specified, the control point of the Julia set will
-be derived from the position of the mouse in the window.  When the mouse
-is not in the window, the control point is chosen the normal way.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1995 by Sean McCullough.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Sean McCullough <bankshot@mailhost.nmt.edu>, 1995.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/kaleidescope.c b/hacks/kaleidescope.c
deleted file mode 100644 (file)
index 6e66fdd..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-/* kaleidescope, Copyright (c) 1997 Ron Tapia <tapia@nmia.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. 
- */
-
-/*
- * The above, for lack of a better copyright statement in easy reach
- * was just lifted from the xscreensaver source.
- *
- * One of the odd things about this hack is that the radial motion of the
- * segments depends on roundoff error alone. 
- *
- * I tried to make the source easy to add other shapes. So far, I've
- * only messed with elipses and I couldn't do much with them that looked
- * cool. A nice addition would be to add some sort of spline based shapes.
- * Maybe rectangles would look nice.
- *
- */
-
-
-#include <stdio.h>
-#include <math.h>
-#include <time.h>
-#include <X11/Xlib.h>
-#include "spline.h"
-#include "screenhack.h"
-
-#define NEWX(x,y) ((x*g.costheta) + (y*g.sintheta))
-#define NEWY(x,y) ((y*g.costheta) - (x*g.sintheta))
-
-
-typedef struct {
-  int  xoff, yoff;                    /* offset of origin xmax/2, ymax/2 */
-  int  xmax, ymax;                    /* width, height of window */
-  float costheta, sintheta;           
-  int symmetry;                       
-  int ntrails;          
-  int nsegments;
-  int narcs;
-  int nobjects;
-  int local_rotation;
-  int global_rotation;
-  int spring_constant;
-  Colormap cmap;
-  GC  draw_gc;
-  GC  erase_gc;
-  unsigned int default_fg_pixel;
-  Display *dpy;
-  Window window;
-  unsigned long delay;
-  unsigned short redmin,redrange,greenmin,greenrange,bluemin,bluerange;
-  int color_mode;
-} GLOBAL;
-
-typedef struct Obj OBJECT;
-struct Obj {
-  int type;
-  int time;
-  void (*propogate) (OBJECT *);
-  void (*draw) (OBJECT *);
-  void (*init) (OBJECT *);
-  void *cur;
-};
-
-typedef struct KSEGMENT {
-  struct KSEGMENT *next;
-  XColor color;
-  int drawn;
-  short int x1,y1,x2,y2;  /* these are in the natural coordinate system */
-  XSegment  *xsegments;  /* these are in the X coordinate system */
-} Ksegment;
-
-/* BEGIN global variables */
-
-GLOBAL g;
-OBJECT *objects;
-
-char *progclass = "Kaleidescope";
-char *defaults [] = {
-  ".background:             black",
-  ".foreground:             white",
-  "*color_mode:      nice",
-  "*symmetry:         11",
-  "*ntrails:         100",
-  "*nsegments:          7",
-  "*local_rotation:   -59",
-  "*global_rotation:    1",
-  "*spring_constant:    5",
-  "*delay:          20000",
-  "*redmin:         30000",
-  "*redrange:       20000",
-  "*greenmin:       30000",
-  "*greenrange:     20000",
-  "*bluemin:        30000",
-  "*bluerange:      20000",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-color_mode",       ".color_mode",     XrmoptionSepArg, 0 },
-  { "-symmetry",       ".symmetry",        XrmoptionSepArg, 0 },
-  { "-nsegments",       ".nsegments",       XrmoptionSepArg, 0 },
-  { "-ntrails",                ".ntrails",         XrmoptionSepArg, 0 },
-  { "-local_rotation",  ".local_rotation",  XrmoptionSepArg, 0 },
-  { "-global_rotation", ".global_rotation", XrmoptionSepArg, 0 },
-  { "-delay",           ".delay",           XrmoptionSepArg, 0 },
-  { "-spring_constant", ".spring_constant", XrmoptionSepArg, 0 },
-  { "-redmin",          ".redmin",          XrmoptionSepArg, 0 },
-  { "-redrange",        ".redmin",          XrmoptionSepArg, 0 },
-  { "-bluemin",         ".bluemin",         XrmoptionSepArg, 0 },
-  { "-bluerange",       ".bluerange",       XrmoptionSepArg, 0 },
-  { "-greenmin",        ".greenmin",        XrmoptionSepArg, 0 },
-  { "-greenrange",      ".greenrange",      XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-/* END global variables */
-
-static void
-krandom_color(XColor *color)
-{
-  int r;
-  r = random() % 3;
-
-  if((g.color_mode == 0) || (g.color_mode == 1)) {
-
-    color->blue  = ((r = random()) % g.bluerange) + g.bluemin;
-    color->green = ((r = random()) % g.greenrange) + g.greenmin;
-    color->red   = ((r = random()) % g.redrange) + g.redmin;
-
-    if(!XAllocColor(g.dpy, g.cmap, color)) {
-      color->pixel = g.default_fg_pixel;
-    } 
-    return;
-  } else {
-    color->pixel = g.default_fg_pixel;
-    return;
-  }
-}
-
-
-static void
-kcopy_color(XColor *to, XColor *from)
-{
-  to->red   = from->red;
-  to->green = from->green;
-  to->blue  = from->blue;
-  to->pixel = from->pixel;
-}
-
-static void
-kcycle_color(XColor *color,
-            unsigned short redstep,
-            unsigned short greenstep,
-            unsigned short bluestep) 
-{
-  unsigned short red,green,blue;
-
-  if (! g.color_mode) {
-    XColor copy;
-    color->flags = DoRed|DoGreen|DoBlue;
-    color->red   = (red = color->red) - redstep;
-    color->green = (green = color->green) - greenstep;
-    color->blue  = (blue = color->blue)  - bluestep;
-    copy = *color;
-
-    if(!XAllocColor(g.dpy, g.cmap, color)) {
-      /* printf("couldn't alloc color...\n"); */
-      color->pixel = g.default_fg_pixel;
-    }
-    copy.pixel = color->pixel;
-    *color = copy;
-
-    color->red   = red   - redstep;
-    color->green = green- greenstep;
-    color->blue  = blue  - bluestep;
-    return;
-  } 
-}
-
-
-static Ksegment *
-create_ksegment (void)
-{
-  Ksegment *seg, *prev;
-  XColor new_color;
-  int i;
-  unsigned short redstep,bluestep,greenstep;
-
-  krandom_color(&new_color);
-
-  redstep = new_color.red/(2 * g.ntrails);
-  greenstep = new_color.green/(2 * g.ntrails);
-  bluestep = new_color.blue/(2 * g.ntrails);
-
-  seg            = (Ksegment *) malloc(sizeof(Ksegment));
-  seg->xsegments = (XSegment  *) malloc(g.symmetry * sizeof(XSegment));
-
-  prev = seg;
-  for(i=0; i< (g.ntrails - 1); i++) {
-
-    kcycle_color(&new_color,redstep,greenstep,bluestep);
-
-    kcopy_color(&(prev->color), &new_color);
-
-    prev->next              = (Ksegment*)malloc(sizeof(Ksegment));
-    (prev->next)->xsegments = (XSegment*)malloc(g.symmetry * sizeof(XSegment));
-    prev->drawn             = 0;
-    prev = (prev->next);
-  } 
-
-  prev->drawn = 0;
-  prev->next = seg;
-  kcopy_color(&(prev->color), &new_color);
-
-  return seg;
-}
-
-static void
-init_ksegment (OBJECT *obj)
-{
-
-  /* Give the segment some random values */
-  ((Ksegment *)obj->cur)->x1 = random() % g.xoff;
-  ((Ksegment *)obj->cur)->y1 = random() % g.yoff;
-  ((Ksegment *)obj->cur)->x2 = random() % g.xoff;
-  ((Ksegment *)obj->cur)->y2 = random() % g.yoff;
-}
-
-
-static void
-draw_ksegment (OBJECT *obj)
-{
-  register short x1, y1, x2, y2;
-  int dx, dy;
-  int i;
-  static int counter=0;
-
-  counter++;
-
-  x1 = ((Ksegment *)obj->cur)->x1;   /* in the natural coordinate system */
-  y1 = ((Ksegment *)obj->cur)->y1;
-  x2 = ((Ksegment *)obj->cur)->x2;
-  y2 = ((Ksegment *)obj->cur)->y2;
-
-  dx = x2 - x1;
-  dy = y2 - y1;
-
-  /* maybe throw away values and start over */
-  if( ((dx*dx) + (dy * dy)) < 100) {
-    init_ksegment (obj);
-    x1 = ((Ksegment *)obj->cur)->x1;   /* in the natural coordinate system */
-    y1 = ((Ksegment *)obj->cur)->y1;
-    x2 = ((Ksegment *)obj->cur)->x2;
-    y2 = ((Ksegment *)obj->cur)->y2;
-  }
-
-  for (i=0; i<g.symmetry; i++) {
-    (((Ksegment *)obj->cur)->xsegments)[i].x1 = NEWX(x1,y1);
-    (((Ksegment *)obj->cur)->xsegments)[i].y1 = NEWY(x1,y1);
-    (((Ksegment *)obj->cur)->xsegments)[i].x2 = NEWX(x2,y2);
-    (((Ksegment *)obj->cur)->xsegments)[i].y2 = NEWY(x2,y2);
-
-    (((Ksegment *)obj->cur)->xsegments)[i].x1 = (x1 = (((Ksegment *)obj->cur)->xsegments)[i].x1) + g.xoff; 
-    (((Ksegment *)obj->cur)->xsegments)[i].y1 = (y1 = (((Ksegment *)obj->cur)->xsegments)[i].y1) + g.yoff;
-    (((Ksegment *)obj->cur)->xsegments)[i].x2 = (x2 = (((Ksegment *)obj->cur)->xsegments)[i].x2) + g.xoff;
-    (((Ksegment *)obj->cur)->xsegments)[i].y2 = (y2 = (((Ksegment *)obj->cur)->xsegments)[i].y2) + g.yoff;
-  }
-
-  XSetForeground(g.dpy, g.draw_gc, (((Ksegment *)obj->cur)->color).pixel);
-
-  XDrawSegments(g.dpy, g.window, g.draw_gc, ((Ksegment *)obj->cur)->xsegments, g.symmetry);
-  ((Ksegment *)obj->cur)->drawn = 1;
-
-  if (((((Ksegment *)obj->cur)->next)->drawn) != 0) {
-    XDrawSegments(g.dpy, g.window, g.erase_gc, ((Ksegment *)obj->cur)->next->xsegments, g.symmetry);
-  }
-}
-
-static void
-propogate_ksegment(OBJECT *obj)
-{
-  int t;
-  short int x1,y1,x2,y2;
-  short int midx,midy,nmidx,nmidy;
-  float lsin, lcos, gsin, gcos;
-
-  lsin = sin((2*M_PI/10000)*g.local_rotation);
-  lcos = cos((2*M_PI/10000)*g.local_rotation);
-  gsin = sin((2*M_PI/10000)*g.global_rotation);
-  gcos = cos((2*M_PI/10000)*g.global_rotation);
-
-  t=obj->time;
-  obj->time = t + 1;
-
-  x1 = ((Ksegment *) obj->cur)->x1;
-  y1 = ((Ksegment *) obj->cur)->y1;
-  x2 = ((Ksegment *) obj->cur)->x2;
-  y2 = ((Ksegment *) obj->cur)->y2;
-
-  midx = (x1 + x2)/2;
-  midy = (y1 + y2)/2;
-
-  nmidx = midx*gcos + midy*gsin;
-  nmidy = midy*gcos - midx*gsin;
-
-  x1 = x1 - midx;
-  x2 = x2 - midx;
-  y1 = y1 - midy;
-  y2 = y2 - midy;
-
-
-  /* This is where we move to the next ksegment... */
-  obj->cur = ((Ksegment *)obj->cur)->next;
-
-  ((Ksegment *)obj->cur)->x1 = ((x1*lcos) + (y1*lsin)) + nmidx;
-  ((Ksegment *)obj->cur)->y1 = ((y1*lcos) - (x1*lsin)) + nmidy;
-  ((Ksegment *)obj->cur)->x2 = ((x2*lcos) + (y2*lsin)) + nmidx;
-  ((Ksegment *)obj->cur)->y2 = ((y2*lcos) - (x2*lsin)) + nmidy;
-
-  return ;
-}
-
-static void
-init_objects (void)
-{
-  int i;
-  for (i=0; i<g.nobjects; i++) {
-    (objects[i].init)(objects + i);
-  }
-}
-
-static void
-create_objects (void)
-{
-  int i;
-
-  objects = (OBJECT *) malloc(g.nobjects * sizeof(OBJECT));
-
-  for (i=0; i< g.nsegments; i++) {
-    objects[i].cur = create_ksegment();
-    objects[i].type = 1;
-    objects[i].time = 0;
-    objects[i].propogate = propogate_ksegment;
-    objects[i].draw      = draw_ksegment;
-    objects[i].init      = init_ksegment;
-  }
-
-  /* Here we can add creation functions for other object types. */
-}
-
-
-static void
-propogate_objects (void)
-{
-  int i;
-
-  for(i=0; i<g.nobjects; i++) {
-    objects[i].propogate(objects + i);
-  }
-}
-
-static void
-draw_objects (void)
-{
-  int i;
-
-  for(i=0; i<g.nobjects; i++) {
-    objects[i].draw(objects + i);
-  }
-}
-
-static void
-init_g (Display *dpy, Window window)
-{
-  XWindowAttributes xgwa;
-  XGCValues gcv;
-  char *color_mode_str;
-
-  g.dpy    = dpy;
-  g.window = window;
-
-  g.symmetry        = get_integer_resource("symmetry",         "Integer");
-  g.ntrails         = get_integer_resource("ntrails"  ,        "Integer");
-  g.nsegments       = get_integer_resource("nsegments",        "Integer");
-  g.narcs           = get_integer_resource("narcs",            "Integer");
-  g.local_rotation  = get_integer_resource("local_rotation",   "Integer");
-  g.global_rotation = get_integer_resource("global_rotation",  "Integer");
-  g.spring_constant = get_integer_resource("sprint_constatnt", "Integer");
-  g.delay           = get_integer_resource("delay", "Integer");
-  g.nobjects        = g.nsegments + g.narcs;
-
-  color_mode_str = get_string_resource("color_mode", "color_mode");
-
-  /* make into an enum... */
-  if(!color_mode_str) {
-    g.color_mode = 0;
-  } else if (!strcmp(color_mode_str, "greedy")) {
-    g.color_mode = 0;
-  } else if (!strcmp(color_mode_str, "nice")) {
-    g.color_mode = 1;
-  } else {
-    g.color_mode = 2;
-  }
-
-  XGetWindowAttributes (dpy, (Drawable) window, &xgwa);
-  g.xmax     = xgwa.width;
-  g.ymax     = xgwa.height;  
-  g.xoff     = g.xmax/2;
-  g.yoff     = g.ymax/2;
-  g.costheta = cos(2*M_PI/g.symmetry);
-  g.sintheta  = sin(2*M_PI/g.symmetry);
-  g.cmap     = xgwa.colormap;
-
-  g.redmin     = get_integer_resource("redmin",     "Integer");
-  g.redrange   = get_integer_resource("redrange",   "Integer");
-  g.greenmin   = get_integer_resource("greenmin",   "Integer");
-  g.greenrange = get_integer_resource("greenrange", "Integer");
-  g.bluemin    = get_integer_resource("bluemin",    "Integer");
-  g.bluerange  = get_integer_resource("bluerange",  "Integer");
-
-  gcv.line_width = 1;
-  gcv.cap_style  = CapRound;
-  gcv.foreground = g.default_fg_pixel = get_pixel_resource ("foreground", "Foreground", dpy, g.cmap);
-  g.draw_gc      = XCreateGC (dpy, (Drawable) window, GCForeground|GCLineWidth|GCCapStyle, &gcv);
-
-  gcv.foreground = get_pixel_resource ("background", "Background", g.dpy, g.cmap);
-  g.erase_gc     = XCreateGC (dpy, (Drawable) window, GCForeground|GCLineWidth|GCCapStyle,&gcv);
-}
-
-void
-screenhack (Display *dpy, Window window)
-{
-  init_g (dpy, window);
-  create_objects();
-  init_objects ();
-
-  while (1)
-    {
-     draw_objects ();
-     XSync (dpy, False);
-     if(g.delay) {
-       screenhack_handle_events (dpy);
-       usleep(g.delay);
-     }
-     propogate_objects(); 
-   }
-}
diff --git a/hacks/kaleidescope.man b/hacks/kaleidescope.man
deleted file mode 100644 (file)
index 6eca5e3..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-.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 Kaleidescpe 1 "14-Dec-95" "X Version 11"
-.SH NAME
-Kaleidescope - rotating line segments
-.SH SYNOPSIS
-.B kaleidescope
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-color_mode \fImono | nice | greedy\fP] [-nsegments \fIint\fP] [\-ntrails \fIint\fP] [\-local_rotation \fIint\fP] [\-global_rotation \fIint\fP] [\-delay \fIusecs\fP] [\-redmin \fIint\fP] [\-greenmin \fIint\fP] [\-bluemin \fIint\fP] [\-redrange \fIint\fP] [\-greenrange \fIint\fP] [\-bluerange \fIint\fP]
-.SH DESCRIPTION
-The \fIkaleidescope\fP program draws line segments in a symmetric pattern
-that evolves over time. 
-.SH OPTIONS
-.I kaleidescope
-accepts the following options:
-.TP 8
-.B \-root
-Draw on the root window.
-.TP 8
-.B \-color_mode "mono | nice | greedy"
-Specify how kaleidescope uses colors. Mono uses
-just the default foreground and background colors. Nice uses one
-color for each segment (specified by nsegments). Greedy uses (ntrails * nsegments) + 1  colors.
-.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 \-nsegments integer
-The number of segments to draw. Default is 7.
-.TP 8
-.B \-ntrails integer
-The number of trails to draw. Default is 100.
-.TP 8
-.B \-local_rotation integer
-The rate at which segments rotate around their center. Default is -59.
-.TP 8
-.B \-global_rotation integer 
-The rate at which segments rotate around the center of the window.
-Default is 1. 
-.TP 8
-.B \-redmin, \-greenmin, \-bluemin, \-redrange, \-greenrange, \-bluerange
-All take an integer argument. When colors are randomly chosen, they 
-are chosen from the interval min to min plus range. The minimums default
-to 30000. The ranges default to 20000. 
-.TP 8
-.B \-delay microseconds
-How much of a delay should be introduced between steps of the animation.
-Default is 20000, or about 5 frames a 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 kaleidescope (1)
-.SH COPYRIGHT
-Copyright \(co 1997 by Ron Tapia.  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
-Ron Tapia <tapia@nmia.com>, 20-Mar-97.
-
diff --git a/hacks/kumppa.c b/hacks/kumppa.c
deleted file mode 100644 (file)
index 7e88392..0000000
+++ /dev/null
@@ -1,482 +0,0 @@
-/*
-
-Copyright (C) Teemu Suutari (temisu@utu.fi) Feb 1998
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from the X Consortium.
-
-*/
-
-
-
-
-/*
-
-*** This is contest-version. Don't look any further, code is *very* ugly.
-
-*/
-
-
-#include <math.h>
-#include "screenhack.h"
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-# include "xdbe.h"
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-char *progclass="Kumppa";
-
-char *defaults [] ={
-       ".background:           black",
-       "*speed:                0.1",
-       "*delay:                0",
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-        /* leave this off by default, since it slows things down.  -- jwz. */
-        "*useDBE:              False",
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-       0
-};
-
-XrmOptionDescRec options [] = {
-       {"-delay",".delay",XrmoptionSepArg,0},
-       {"-speed",".speed",XrmoptionSepArg,0},
-       {"-random",".random",XrmoptionIsArg,0},
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-       {"-dbuf",".dbuf",XrmoptionIsArg,0},
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-       {0,0,0,0}
-};
-
-const char colors[96]=
-       {0,0,255, 0,51,255, 0,102,255, 0,153,255, 0,204,255,
-       0,255,255,0,255,204, 0,255,153, 0,255,102, 0,255,51,
-       0,255,0, 51,255,0, 102,255,0, 153,255,0, 204,255,0,
-       255,255,0, 255,204,0, 255,153,0, 255,102,0, 255,51,0,
-       255,0,0, 255,0,51, 255,0,102, 255,0,153, 255,0,204,
-       255,0,255, 219,0,255, 182,0,255, 146,0,255, 109,0,255,
-       73,0,255, 37,0,255};
-const float cosinus[8][6]={{-0.07,0.12,-0.06,32,25,37},{0.08,-0.03,0.05,51,46,32},{0.12,0.07,-0.13,27,45,36},
-       {0.05,-0.04,-0.07,36,27,39},{-0.02,-0.07,0.1,21,43,42},{-0.11,0.06,0.02,51,25,34},{0.04,-0.15,0.02,42,32,25},
-       {-0.02,-0.04,-0.13,34,20,15}};
-
-static float acosinus[8][3]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
-static int coords[8];
-static int ocoords[8]={0,0,0,0,0,0,0,0};
-
-static Display *dpy;
-static Window win[2];
-static GC fgc[33];
-static GC cgc;
-static int sizx,sizy;
-static int midx,midy;
-static unsigned long delay;
-static Bool cosilines=True;
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-static Bool usedouble=False;
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-static int *Xrotations;
-static int *Yrotations;
-static int *Xrottable;
-static int *Yrottable;
-
-static int *rotateX;
-static int *rotateY;
-
-static int rotsizeX,rotsizeY;
-static int stateX,stateY;
-
-static int rx,ry;
-
-
-int Satnum(int maxi)
-{
-return (int)(maxi*frand(1));
-}
-
-
-void palaRotate(int x,int y)
-{
-int ax,ay,bx,by,cx,cy;
-
-ax=rotateX[x];
-ay=rotateY[y];
-bx=rotateX[x+1]+2;
-by=rotateY[y+1]+2;
-cx=rotateX[x]-(y-ry)+x-rx;
-cy=rotateY[y]+(x-rx)+y-ry;
-if (cx<0)
-       {
-       ax-=cx;
-       cx=0;
-       }
-if (cy<0)
-       {
-       ay-=cy;
-       cy=0;
-       }
-if (cx+bx-ax>sizx) bx=ax-cx+sizx;
-if (cy+by-ay>sizy) by=ay-cy+sizy;
-if (ax<bx && ay<by)
-       XCopyArea(dpy,win[0],win[1],cgc,ax,ay,bx-ax,by-ay,cx,cy);
-}
-
-
-void rotate(void)
-{
-int x,y;
-int dx,dy;
-
-rx=Xrottable[stateX+1]-Xrottable[stateX];
-ry=Yrottable[stateY+1]-Yrottable[stateY];
-
-
-for (x=0;x<=rx;x++)
-       rotateX[x]=(x)?midx-1-Xrotations[Xrottable[stateX+1]-x]:0;
-for (x=0;x<=rx;x++)
-       rotateX[x+rx+1]=(x==rx)?sizx-1:midx+Xrotations[Xrottable[stateX]+x];
-for (y=0;y<=ry;y++)
-       rotateY[y]=(y)?midy-1-Yrotations[Yrottable[stateY+1]-y]:0;
-for (y=0;y<=ry;y++)
-       rotateY[y+ry+1]=(y==ry)?sizy-1:midy+Yrotations[Yrottable[stateY]+y];
-
-x=(rx>ry)?rx:ry;
-for (dy=0;dy<(x+1)<<1;dy++)
-       for (dx=0;dx<(x+1)<<1;dx++)
-               {
-               y=(rx>ry)?ry-rx:0;
-               if (dy+y>=0 && dy<(ry+1)<<1 && dx<(rx+1)<<1)
-                       if (dy+y+dx<=ry+rx && dy+y-dx<=ry-rx)
-                               {
-                               palaRotate((rx<<1)+1-dx,dy+y);
-                               palaRotate(dx,(ry<<1)+1-dy-y);
-                               }
-               y=(ry>rx)?rx-ry:0;
-               if (dy+y>=0 && dx<(ry+1)<<1 && dy<(rx+1)<<1)
-                       if (dy+y+dx<=ry+rx && dx-dy-y>=ry-rx)
-                               {
-                               palaRotate(dy+y,dx);
-                               palaRotate((rx<<1)+1-dy-y,(ry<<1)+1-dx);
-                               }
-               }
-stateX++;
-if (stateX==rotsizeX) stateX=0;
-stateY++;
-if (stateY==rotsizeY) stateY=0;
-}
-
-
-
-Bool make_rots(double xspeed,double yspeed)
-{
-int a,b,c,f,g,j,k=0,l;
-double m,om,ok;
-double d,ix,iy;
-int maxi;
-
-Bool *chks;
-
-rotsizeX=(int)(2/xspeed+1);
-ix=(double)(midx+1)/(double)(rotsizeX);
-rotsizeY=(int)(2/yspeed+1);
-iy=(double)(midy+1)/(double)(rotsizeY);
-
-Xrotations=malloc((midx+2)*sizeof(unsigned int));
-Xrottable=malloc((rotsizeX+1)*sizeof(unsigned int));
-Yrotations=malloc((midy+2)*sizeof(unsigned int));
-Yrottable=malloc((rotsizeY+1)*sizeof(unsigned int));
-chks=malloc(((midx>midy)?midx:midy)*sizeof(Bool));
-if (!Xrottable || !Yrottable || !Xrotations || !Yrotations || !chks) return False;
-
-
-maxi=0;
-c=0;
-d=0;
-g=0;
-for (a=0;a<midx;a++) chks[a]=True;
-for (a=0;a<rotsizeX;a++)
-       {
-       Xrottable[a]=c;
-       f=(int)(d+ix)-g;                                /*viivojen lkm.*/
-       g+=f;
-       if (g>midx)
-               {
-               f-=g-midx;
-               g=midx;
-               }
-       for (b=0;b<f;b++)
-               {
-               m=0;
-               for (j=0;j<midx;j++)                    /*testi*/
-                       {
-                       if (chks[j])
-                               {
-                               om=0;
-                               ok=1;
-                               l=0;
-                               while (j+l<midx && om+12*ok>m)
-                                       {
-                                       if (j-l>=0) if (chks[j-l]) om+=ok;
-                                               else; else if (chks[l-j]) om+=ok;
-                                       if (chks[j+l]) om+=ok;
-                                       ok/=1.5;
-                                       l++;
-                                       }
-                               if (om>=m)
-                                       {
-                                       k=j;
-                                       m=om;
-                                       }
-                               }
-                       }
-               chks[k]=False;
-               l=c;
-               while (l>=Xrottable[a])
-                       {
-                       if (l!=Xrottable[a]) Xrotations[l]=Xrotations[l-1];
-                       if (k>Xrotations[l] || l==Xrottable[a])
-                               {
-                               Xrotations[l]=k;
-                               c++;
-                               l=Xrottable[a];
-                               }
-                       l--;
-                       }
-               }
-       d+=ix;
-       if (maxi<c-Xrottable[a]) maxi=c-Xrottable[a];
-       }
-Xrottable[a]=c;
-rotateX=malloc((maxi+2)*sizeof(int)<<1);
-if (!rotateX) return False;
-
-maxi=0;
-c=0;
-d=0;
-g=0;
-for (a=0;a<midy;a++) chks[a]=True;
-for (a=0;a<rotsizeY;a++)
-       {
-       Yrottable[a]=c;
-       f=(int)(d+iy)-g;                                /*viivojen lkm.*/
-       g+=f;
-       if (g>midy)
-               {
-               f-=g-midy;
-               g=midy;
-               }
-       for (b=0;b<f;b++)
-               {
-               m=0;
-               for (j=0;j<midy;j++)                    /*testi*/
-                       {
-                       if (chks[j])
-                               {
-                               om=0;
-                               ok=1;
-                               l=0;
-                               while (j+l<midy && om+12*ok>m)
-                                       {
-                                       if (j-l>=0) if (chks[j-l]) om+=ok;
-                                               else; else if (chks[l-j]) om+=ok;
-                                       if (chks[j+l]) om+=ok;
-                                       ok/=1.5;
-                                       l++;
-                                       }
-                               if (om>=m)
-                                       {
-                                       k=j;
-                                       m=om;
-                                       }
-                               }
-                       }
-               chks[k]=False;
-               l=c;
-               while (l>=Yrottable[a])
-                       {
-                       if (l!=Yrottable[a]) Yrotations[l]=Yrotations[l-1];
-                       if (k>Yrotations[l] || l==Yrottable[a])
-                               {
-                               Yrotations[l]=k;
-                               c++;
-                               l=Yrottable[a];
-                               }
-                       l--;
-                       }
-
-               }
-       d+=iy;
-       if (maxi<c-Yrottable[a]) maxi=c-Yrottable[a];
-       }
-Yrottable[a]=c;
-rotateY=malloc((maxi+2)*sizeof(int)<<1);
-if (!rotateY) return False;
-
-free(chks);
-return (True);
-}
-
-
-Bool InitializeAll(void)
-{
-XGCValues xgcv;
-XWindowAttributes xgwa;
-XSetWindowAttributes xswa;
-Colormap cmap;
-XColor color;
-int n,i;
-double rspeed;
-
-XGetWindowAttributes(dpy,win[0],&xgwa);
-cmap=xgwa.colormap;
-xswa.backing_store=Always;
-XChangeWindowAttributes(dpy,win[0],CWBackingStore,&xswa);
-xgcv.function=GXcopy;
-
-xgcv.foreground=get_pixel_resource ("background", "Background", dpy, cmap);
-fgc[32]=XCreateGC(dpy,win[0],GCForeground|GCFunction,&xgcv);
-
-n=0;
-if (mono_p)
-       {
-       fgc[0]=fgc[32];
-       xgcv.foreground=get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-       fgc[1]=XCreateGC(dpy,win[0],GCForeground|GCFunction,&xgcv);
-       for (i=0;i<32;i+=2) fgc[i]=fgc[0];
-       for (i=1;i<32;i+=2) fgc[i]=fgc[1];
-       } else
-       for (i=0;i<32;i++)
-       {
-               color.red=colors[n++]<<8;
-               color.green=colors[n++]<<8;
-               color.blue=colors[n++]<<8;
-               color.flags=DoRed|DoGreen|DoBlue;
-               XAllocColor(dpy,cmap,&color);
-               xgcv.foreground=color.pixel;
-               fgc[i]=XCreateGC(dpy,win[0],GCForeground|GCFunction,&xgcv);
-       }
-cgc=XCreateGC(dpy,win[0],GCForeground|GCFunction,&xgcv);
-XSetGraphicsExposures(dpy,cgc,False);
-
-if (get_string_resource("random","String")!=NULL && get_string_resource("random","String")[0]!=0) cosilines=False;
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
- usedouble = True;
- win[1] = xdbe_get_backbuffer (dpy, win[0], XdbeUndefined);
- if (!win[1])
-   {
-     usedouble = False;
-     win[1] = win[0];
-   }
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-delay=get_integer_resource("delay","Integer");
-rspeed=get_float_resource("speed","Float");
-if (rspeed<0.0001 || rspeed>0.2)
-       {
-       fprintf(stderr,"Speed not in valid range! (0.0001 - 0.2), using 0.1 \n");
-       rspeed=0.1;
-       }
-
-sizx=xgwa.width;
-sizy=xgwa.height;
-midx=sizx>>1;
-midy=sizy>>1;
-stateX=0;
-stateY=0;
-
-if (!make_rots(rspeed,rspeed))
-       {
-       fprintf(stderr,"Not enough memory for tables!\n");
-       return False;
-       }
-return True;
-}
-
-
-void screenhack(Display *d, Window w)
-{
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-XdbeSwapInfo xdswp;
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-int a,b,c=0,e;
-float f;
-
-dpy=d;
-win[0]=w;
-if (!InitializeAll()) return;
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-if (usedouble)
-       {
-       xdswp.swap_action=XdbeUndefined;
-       xdswp.swap_window=win[0];
-       }
- else
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-   win[1]=win[0];
-
-while (0==0)
-       {
-       if (cosilines)
-               {
-               c++;
-               for (a=0;a<8;a++)
-                       {
-                       f=0;
-                       for (b=0;b<3;b++)
-                               {
-                               acosinus[a][b]+=cosinus[a][b];
-                               f+=cosinus[a][b+3]*sin((double)acosinus[a][b]);
-                               }
-                       coords[a]=(int)f;
-                       }
-               for (a=0;a<4;a++)
-                       {
-                       XDrawLine(dpy,win[0],(mono_p)?fgc[1]:fgc[((a<<2)+c)&31],midx+ocoords[a<<1],midy+ocoords[(a<<1)+1]
-                       ,midx+coords[a<<1],midy+coords[(a<<1)+1]);
-                       ocoords[a<<1]=coords[a<<1];
-                       ocoords[(a<<1)+1]=coords[(a<<1)+1];
-                       }
-
-               } else {
-               for (e=0;e<8;e++)
-                       {
-                       a=Satnum(50);
-                       if (a>=32) a=32;
-                       b=Satnum(32)-16+midx;
-                       c=Satnum(32)-16+midy;
-                       XFillRectangle(dpy,win[0],fgc[a],b,c,2,2);
-                       }
-               }
-       XFillRectangle(dpy,win[0],fgc[32],midx-2,midy-2,4,4);
-       rotate();
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-       if (usedouble) XdbeSwapBuffers(dpy,&xdswp,1);
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-       XSync(dpy, False);
-        screenhack_handle_events (dpy);
-       if (delay) usleep (delay);
-       }
-}
diff --git a/hacks/laser.c b/hacks/laser.c
deleted file mode 100644 (file)
index de2a914..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * laser --- draws swinging laser beams.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)laser.c      4.00 97/01/01 xlockmore";
-#endif
-
-/* Copyright (c) 1995 Pascal Pensa <pensa@aurora.unice.fr>
- *
- * 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.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Laser"
-# define HACK_INIT                                     init_laser
-# define HACK_DRAW                                     draw_laser
-# define laser_opts                                    xlockmore_opts
-# define DEFAULTS      "*count:                10    \n"                       \
-                                       "*cycles:               200   \n"                       \
-                                       "*delay:                40000 \n"                       \
-                                       "*ncolors:              64   \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt laser_opts = {
-  0, NULL, 0, NULL, NULL };
-
-#define MINREDRAW 3            /* Number of redrawn on each frame */
-#define MAXREDRAW 8
-
-#define MINLASER  1            /* Laser number */
-
-#define MINWIDTH  2            /* Laser ray width range */
-#define MAXWIDTH 40
-
-#define MINSPEED  2            /* Speed range */
-#define MAXSPEED 17
-
-#define MINDIST  10            /* Minimal distance from edges */
-
-#define COLORSTEP 2            /* Laser color step */
-
-#define RANGE_RAND(min,max) ((min) + LRAND() % ((max) - (min)))
-
-typedef enum {
-       TOP, RIGHT, BOTTOM, LEFT
-} border;
-
-typedef struct {
-       int         bx;         /* border x */
-       int         by;         /* border y */
-       border      bn;         /* active border */
-       int         dir;        /* direction */
-       int         speed;      /* laser velocity from MINSPEED to MAXSPEED */
-       int         sx[MAXWIDTH];       /* x stack */
-       int         sy[MAXWIDTH];       /* x stack */
-       XGCValues   gcv;        /* for color */
-} laserstruct;
-
-typedef struct {
-       int         width;
-       int         height;
-       int         cx;         /* center x */
-       int         cy;         /* center y */
-       int         lw;         /* laser width */
-       int         ln;         /* laser number */
-       int         lr;         /* laser redraw */
-       int         sw;         /* stack width */
-       int         so;         /* stack offset */
-       int         time;       /* up time */
-       GC          stippledGC;
-       XGCValues   gcv_black;  /* for black color */
-       laserstruct *laser;
-} lasersstruct;
-
-static lasersstruct *lasers = NULL;
-
-
-void
-init_laser(ModeInfo * mi)
-{
-       int         i, c = 0;
-       lasersstruct *lp;
-
-       if (lasers == NULL) {
-               if ((lasers = (lasersstruct *) calloc(MI_NUM_SCREENS(mi),
-                                            sizeof (lasersstruct))) == NULL)
-                       return;
-       }
-       lp = &lasers[MI_SCREEN(mi)];
-
-       lp->width = MI_WIN_WIDTH(mi);
-       lp->height = MI_WIN_HEIGHT(mi);
-       lp->time = 0;
-
-       lp->ln = MI_BATCHCOUNT(mi);
-       if (lp->ln < -MINLASER) {
-               /* if lp->ln is random ... the size can change */
-               if (lp->laser != NULL) {
-                       (void) free((void *) lp->laser);
-                       lp->laser = NULL;
-               }
-               lp->ln = NRAND(-lp->ln - MINLASER + 1) + MINLASER;
-       } else if (lp->ln < MINLASER)
-               lp->ln = MINLASER;
-
-       if (!lp->laser) {
-               lp->laser = (laserstruct *) malloc(lp->ln * sizeof (laserstruct));
-       }
-       if (lp->stippledGC == NULL) {
-               XGCValues   gcv;
-
-               gcv.foreground = MI_WIN_WHITE_PIXEL(mi);
-               gcv.background = MI_WIN_BLACK_PIXEL(mi);
-               lp->gcv_black.foreground = MI_WIN_BLACK_PIXEL(mi);
-               lp->stippledGC = XCreateGC(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                          GCForeground | GCBackground, &gcv);
-       }
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-
-       if (MINDIST < lp->width - MINDIST)
-               lp->cx = RANGE_RAND(MINDIST, lp->width - MINDIST);
-       else
-               lp->cx = RANGE_RAND(0, lp->width);
-       if (MINDIST < lp->height - MINDIST)
-               lp->cy = RANGE_RAND(MINDIST, lp->height - MINDIST);
-       else
-               lp->cy = RANGE_RAND(0, lp->height);
-       lp->lw = RANGE_RAND(MINWIDTH, MAXWIDTH);
-       lp->lr = RANGE_RAND(MINREDRAW, MAXREDRAW);
-       lp->sw = 0;
-       lp->so = 0;
-
-       if (MI_NPIXELS(mi) > 2)
-               c = NRAND(MI_NPIXELS(mi));
-
-       for (i = 0; i < lp->ln; i++) {
-               laserstruct *l = &lp->laser[i];
-
-               l->bn = (border) NRAND(4);
-
-               switch (l->bn) {
-                       case TOP:
-                               l->bx = NRAND(lp->width);
-                               l->by = 0;
-                               break;
-                       case RIGHT:
-                               l->bx = lp->width;
-                               l->by = NRAND(lp->height);
-                               break;
-                       case BOTTOM:
-                               l->bx = NRAND(lp->width);
-                               l->by = lp->height;
-                               break;
-                       case LEFT:
-                               l->bx = 0;
-                               l->by = NRAND(lp->height);
-               }
-
-               l->dir = LRAND() & 1;
-               l->speed = ((RANGE_RAND(MINSPEED, MAXSPEED) * lp->width) / 1000) + 1;
-               if (MI_NPIXELS(mi) > 2) {
-                       l->gcv.foreground = MI_PIXEL(mi, c);
-                       c = (c + COLORSTEP) % MI_NPIXELS(mi);
-               } else
-                       l->gcv.foreground = MI_WIN_WHITE_PIXEL(mi);
-       }
-}
-
-static void
-draw_laser_once(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       lasersstruct *lp = &lasers[MI_SCREEN(mi)];
-       int         i;
-
-       for (i = 0; i < lp->ln; i++) {
-               laserstruct *l = &lp->laser[i];
-
-               if (lp->sw >= lp->lw) {
-                       XChangeGC(display, lp->stippledGC, GCForeground, &(lp->gcv_black));
-                       XDrawLine(display, MI_WINDOW(mi), lp->stippledGC,
-                                 lp->cx, lp->cy,
-                                 l->sx[lp->so], l->sy[lp->so]);
-               }
-               if (l->dir) {
-                       switch (l->bn) {
-                               case TOP:
-                                       l->bx -= l->speed;
-                                       if (l->bx < 0) {
-                                               l->by = -l->bx;
-                                               l->bx = 0;
-                                               l->bn = LEFT;
-                                       }
-                                       break;
-                               case RIGHT:
-                                       l->by -= l->speed;
-                                       if (l->by < 0) {
-                                               l->bx = lp->width + l->by;
-                                               l->by = 0;
-                                               l->bn = TOP;
-                                       }
-                                       break;
-                               case BOTTOM:
-                                       l->bx += l->speed;
-                                       if (l->bx >= lp->width) {
-                                               l->by = lp->height - l->bx % lp->width;
-                                               l->bx = lp->width;
-                                               l->bn = RIGHT;
-                                       }
-                                       break;
-                               case LEFT:
-                                       l->by += l->speed;
-                                       if (l->by >= lp->height) {
-                                               l->bx = l->by % lp->height;
-                                               l->by = lp->height;
-                                               l->bn = BOTTOM;
-                                       }
-                       }
-               } else {
-                       switch (l->bn) {
-                               case TOP:
-                                       l->bx += l->speed;
-                                       if (l->bx >= lp->width) {
-                                               l->by = l->bx % lp->width;
-                                               l->bx = lp->width;
-                                               l->bn = RIGHT;
-                                       }
-                                       break;
-                               case RIGHT:
-                                       l->by += l->speed;
-                                       if (l->by >= lp->height) {
-                                               l->bx = lp->width - l->by % lp->height;
-                                               l->by = lp->height;
-                                               l->bn = BOTTOM;
-                                       }
-                                       break;
-                               case BOTTOM:
-                                       l->bx -= l->speed;
-                                       if (l->bx < 0) {
-                                               l->by = lp->height + l->bx;
-                                               l->bx = 0;
-                                               l->bn = LEFT;
-                                       }
-                                       break;
-                               case LEFT:
-                                       l->by -= l->speed;
-                                       if (l->by < 0) {
-                                               l->bx = -l->bx;
-                                               l->by = 0;
-                                               l->bn = TOP;
-                                       }
-                       }
-               }
-
-               XChangeGC(display, lp->stippledGC, GCForeground, &l->gcv);
-               XDrawLine(display, MI_WINDOW(mi), lp->stippledGC,
-                         lp->cx, lp->cy, l->bx, l->by);
-
-               l->sx[lp->so] = l->bx;
-               l->sy[lp->so] = l->by;
-
-       }
-
-       if (lp->sw < lp->lw)
-               ++lp->sw;
-
-       lp->so = (lp->so + 1) % lp->lw;
-}
-
-void
-draw_laser(ModeInfo * mi)
-{
-       lasersstruct *lp = &lasers[MI_SCREEN(mi)];
-       int         i;
-
-       for (i = 0; i < lp->lr; i++)
-               draw_laser_once(mi);
-
-       if (++lp->time > MI_CYCLES(mi))
-               init_laser(mi);
-}
-
-void
-release_laser(ModeInfo * mi)
-{
-       if (lasers != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       lasersstruct *lp = &lasers[screen];
-
-                       if (lp->laser != NULL)
-                               (void) free((void *) lp->laser);
-                       if (lp->stippledGC != NULL)
-                               XFreeGC(MI_DISPLAY(mi), lp->stippledGC);
-               }
-               (void) free((void *) lasers);
-               lasers = NULL;
-       }
-}
-
-void
-refresh_laser(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/laser.man b/hacks/laser.man
deleted file mode 100644 (file)
index 70cec4e..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-laser - draws vaguely laser-like moving lines
-.SH SYNOPSIS
-.B laser
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
-
-.SH DESCRIPTION
-The \fIlaser\fP program draws vaguely laser-like moving lines
-.SH OPTIONS
-.I laser
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors used cycle through the hue, making N stops around the color wheel.
-.TP 8
-.B \-cycles \fIinteger\fP
-Default 200.
-.TP 8
-.B \-count \fIinteger\fP
-Default 10.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1995 by Pascal Pensa.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Pascal Pensa <pensa@aurora.unice.fr>, 1995.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/lightning.c b/hacks/lightning.c
deleted file mode 100644 (file)
index 77be578..0000000
+++ /dev/null
@@ -1,580 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * lightning --- fractal lightning bolts.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)lightning.c  4.00 97/01/01 xlockmore";
-#endif
-
-/* Copyright (c) 1996 by Keith Romberg <kromberg@saxe.com>.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 14-Jul-96: Cleaned up code.
- * 27-Jun-96: Written and submitted by Keith Romberg <kromberg@saxe.com>.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Lightning"
-# define HACK_INIT                                     init_lightning
-# define HACK_DRAW                                     draw_lightning
-# define lightning_opts                                xlockmore_opts
-# define DEFAULTS      "*delay:                10000 \n"                       \
-                                       "*ncolors:              200   \n"
-# define BRIGHT_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt lightning_opts = {
-  0, NULL, 0, NULL, NULL };
-
-/*----------------------------   defines   -------------------------------*/
-
-#define BOLT_NUMBER 4
-#define BOLT_ITERATION 4
-#define LONG_FORK_ITERATION 3
-#define MEDIUM_FORK_ITERATION 2
-#define SMALL_FORK_ITERATION 1
-
-#define WIDTH_VARIATION 30
-#define HEIGHT_VARIATION 15
-
-#define DELAY_TIME_AMOUNT 15
-#define MULTI_DELAY_TIME_BASE 5
-
-#define MAX_WIGGLES 16
-#define WIGGLE_BASE 8
-#define WIGGLE_AMOUNT 14
-
-#define RANDOM_FORK_PROBILITY   4
-
-#define FIRST_LEVEL_STRIKE 0
-#define LEVEL_ONE_STRIKE 1
-#define LEVEL_TWO_STRIKE 2
-
-#define BOLT_VERTICIES ((1<<BOLT_ITERATION)-1)
-  /* BOLT_ITERATION = 4. 2^(BOLT_ITERATION) - 1 = 15 */
-
-#define NUMBER_FORK_VERTICIES 9
-
-#define FLASH_PROBILITY 20
-#define MAX_FLASH_AMOUNT 2     /*  half the total duration of the bolt  */
-
-typedef struct {
-       XPoint      ForkVerticies[NUMBER_FORK_VERTICIES];
-       int         num_used;
-} Fork;
-
-typedef struct {
-       XPoint      end1, end2;
-       XPoint      middle[BOLT_VERTICIES];
-       int         fork_number;
-       int         forks_start[2];
-       Fork        branch[2];
-       int         wiggle_number;
-       int         wiggle_amount;
-       int         delay_time;
-       int         flash;
-       int         flash_begin, flash_stop;
-       int         visible;
-       int         strike_level;
-} Lightning;
-
-typedef struct {
-       Lightning   bolts[BOLT_NUMBER];
-       int         scr_width, scr_height;
-       int         multi_strike;
-       int         give_it_hell;
-       int         draw_time;
-       int         stage;
-       unsigned long color;
-} Storm;
-
-static Storm *Helga = NULL;
-
-/*-------------------   function prototypes  ----------------------------*/
-
-static int  distance(XPoint a, XPoint b);
-
-static int  setup_multi_strike(void);
-static int  flashing_strike(void);
-static void flash_duration(int *start, int *end, int total_duration);
-static void random_storm(Storm * st);
-static void generate(XPoint A, XPoint B, int iter, XPoint * verts, int *index);
-static void create_fork(Fork * f, XPoint start, XPoint end, int level);
-
-static void first_strike(Lightning bolt, ModeInfo * mi);
-static void draw_bolt(Lightning * bolt, ModeInfo * mi);
-static void draw_line(ModeInfo * mi, XPoint * p, int number, GC use, int x_offset);
-static void level1_strike(Lightning bolt, ModeInfo * mi);
-static void level2_strike(Lightning bolt, ModeInfo * mi);
-
-static int  storm_active(Storm * st);
-static void update_bolt(Lightning * bolt, int time);
-static void wiggle_bolt(Lightning * bolt);
-static void wiggle_line(XPoint * p, int number, int wiggle_amount);
-
-/*-------------------------  functions  ---------------------------------*/
-
-static int
-setup_multi_strike(void)
-{
-       int         result, multi_prob;
-
-       multi_prob = NRAND(100);
-
-       if (multi_prob < 50)
-               result = 1;
-       else if ((multi_prob >= 51) && (multi_prob < 75))
-               result = 2;
-       else if ((multi_prob >= 76) && (multi_prob < 92))
-               result = 3;
-       else
-               result = BOLT_NUMBER;   /* 4 */
-
-       return (result);
-}
-
-/*-------------------------------------------------------------------------*/
-
-static int
-flashing_strike(void)
-{
-       int         tmp = NRAND(FLASH_PROBILITY);
-
-       if (tmp <= FLASH_PROBILITY)
-               return (1);
-       return (0);
-}
-
-/*-------------------------------------------------------------------------*/
-
-static void
-flash_duration(int *start, int *end, int total_duration)
-{
-       int         mid, d;
-
-       mid = total_duration / MAX_FLASH_AMOUNT;
-       d = NRAND(total_duration / MAX_FLASH_AMOUNT) / 2;
-       *start = mid - d;
-       *end = mid + d;
-}
-
-/*-------------------------------------------------------------------------*/
-
-static void
-random_storm(Storm * st)
-{
-       int         i, j, tmp;
-       XPoint      p;
-
-       for (i = 0; i < st->multi_strike; i++) {
-               st->bolts[i].end1.x = NRAND(st->scr_width);
-               st->bolts[i].end1.y = 0;
-               st->bolts[i].end2.x = NRAND(st->scr_width);
-               st->bolts[i].end2.y = st->scr_height;
-               st->bolts[i].wiggle_number = WIGGLE_BASE + NRAND(MAX_WIGGLES);
-               if ((st->bolts[i].flash = flashing_strike()))
-                       flash_duration(&(st->bolts[i].flash_begin), &(st->bolts[i].flash_stop),
-                                      st->bolts[i].wiggle_number);
-               else
-                       st->bolts[i].flash_begin = st->bolts[i].flash_stop = 0;
-               st->bolts[i].wiggle_amount = WIGGLE_AMOUNT;
-               if (i == 0)
-                       st->bolts[i].delay_time = NRAND(DELAY_TIME_AMOUNT);
-               else
-                       st->bolts[i].delay_time = NRAND(DELAY_TIME_AMOUNT) +
-                               (MULTI_DELAY_TIME_BASE * i);
-               st->bolts[i].strike_level = FIRST_LEVEL_STRIKE;
-               tmp = 0;
-               generate(st->bolts[i].end1, st->bolts[i].end2, BOLT_ITERATION,
-                        st->bolts[i].middle, &tmp);
-               st->bolts[i].fork_number = 0;
-               st->bolts[i].visible = 0;
-               for (j = 0; j < BOLT_VERTICIES; j++) {
-                       if (st->bolts[i].fork_number >= 2)
-                               break;
-                       if (NRAND(100) < RANDOM_FORK_PROBILITY) {
-                               p.x = NRAND(st->scr_width);
-                               p.y = st->scr_height;
-                               st->bolts[i].forks_start[st->bolts[i].fork_number] = j;
-                               create_fork(&(st->bolts[i].branch[st->bolts[i].fork_number]),
-                                           st->bolts[i].middle[j], p, j);
-                               st->bolts[i].fork_number++;
-                       }
-               }
-       }
-}
-
-static void
-generate(XPoint A, XPoint B, int iter, XPoint * verts, int *index)
-{
-       XPoint      mid;
-
-       mid.x = (A.x + B.x) / 2 + NRAND(WIDTH_VARIATION) - WIDTH_VARIATION / 2;
-       mid.y = (A.y + B.y) / 2 + NRAND(HEIGHT_VARIATION) - HEIGHT_VARIATION / 2;
-
-       if (!iter) {
-               verts[*index].x = mid.x;
-               verts[*index].y = mid.y;
-               (*index)++;
-               return;
-       }
-       generate(A, mid, iter - 1, verts, index);
-       generate(mid, B, iter - 1, verts, index);
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-create_fork(Fork * f, XPoint start, XPoint end, int level)
-{
-       int         tmp = 1;
-
-       f->ForkVerticies[0].x = start.x;
-       f->ForkVerticies[0].y = start.y;
-
-       if (level <= 6) {
-               generate(start, end, LONG_FORK_ITERATION, f->ForkVerticies, &tmp);
-               f->num_used = 9;
-       } else if ((level > 6) && (level <= 11)) {
-               generate(start, end, MEDIUM_FORK_ITERATION, f->ForkVerticies, &tmp);
-               f->num_used = 5;
-       } else {
-               if (distance(start, end) > 100) {
-                       generate(start, end, MEDIUM_FORK_ITERATION, f->ForkVerticies, &tmp);
-                       f->num_used = 5;
-               } else {
-                       generate(start, end, SMALL_FORK_ITERATION, f->ForkVerticies, &tmp);
-                       f->num_used = 3;
-               }
-       }
-
-       f->ForkVerticies[f->num_used - 1].x = end.x;
-       f->ForkVerticies[f->num_used - 1].y = end.y;
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-update_bolt(Lightning * bolt, int time)
-{
-       wiggle_bolt(bolt);
-       if ((bolt->wiggle_amount == 0) && (bolt->wiggle_number > 2))
-               bolt->wiggle_number = 0;
-       if (((time % 3) == 0))
-               bolt->wiggle_amount++;
-
-       if (((time >= bolt->delay_time) && (time < bolt->flash_begin)) ||
-           (time > bolt->flash_stop))
-               bolt->visible = 1;
-       else
-               bolt->visible = 0;
-
-       if (time == bolt->delay_time)
-               bolt->strike_level = FIRST_LEVEL_STRIKE;
-       else if (time == (bolt->delay_time + 1))
-               bolt->strike_level = LEVEL_ONE_STRIKE;
-       else if ((time > (bolt->delay_time + 1)) &&
-                (time <= (bolt->delay_time + bolt->flash_begin - 2)))
-               bolt->strike_level = LEVEL_TWO_STRIKE;
-       else if (time == (bolt->delay_time + bolt->flash_begin - 1))
-               bolt->strike_level = LEVEL_ONE_STRIKE;
-       else if (time == (bolt->delay_time + bolt->flash_stop + 1))
-               bolt->strike_level = LEVEL_ONE_STRIKE;
-       else
-               bolt->strike_level = LEVEL_TWO_STRIKE;
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-draw_bolt(Lightning * bolt, ModeInfo * mi)
-{
-       if (bolt->visible) {
-               if (bolt->strike_level == FIRST_LEVEL_STRIKE)
-                       first_strike(*bolt, mi);
-               else if (bolt->strike_level == LEVEL_ONE_STRIKE)
-                       level1_strike(*bolt, mi);
-               else
-                       level2_strike(*bolt, mi);
-       }
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-first_strike(Lightning bolt, ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       int         i;
-
-       XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       XDrawLine(display, window, gc,
-              bolt.end1.x, bolt.end1.y, bolt.middle[0].x, bolt.middle[0].y);
-       draw_line(mi, bolt.middle, BOLT_VERTICIES, gc, 0);
-       XDrawLine(display, window, gc,
-       bolt.middle[BOLT_VERTICIES - 1].x, bolt.middle[BOLT_VERTICIES - 1].y,
-                 bolt.end2.x, bolt.end2.y);
-
-       for (i = 0; i < bolt.fork_number; i++)
-               draw_line(mi, bolt.branch[i].ForkVerticies, bolt.branch[i].num_used,
-                         gc, 0);
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-draw_line(ModeInfo * mi, XPoint * points, int number, GC to_use, int offset)
-{
-       int         i;
-
-       for (i = 0; i < number - 1; i++) {
-               if (points[i].y <= points[i + 1].y)
-                       XDrawLine(MI_DISPLAY(mi), MI_WINDOW(mi), to_use, points[i].x + offset,
-                                 points[i].y, points[i + 1].x + offset, points[i + 1].y);
-               else {
-                       if (points[i].x < points[i + 1].x)
-                               XDrawLine(MI_DISPLAY(mi), MI_WINDOW(mi), to_use, points[i].x +
-                                         offset, points[i].y + offset, points[i + 1].x + offset,
-                                         points[i + 1].y + offset);
-                       else
-                               XDrawLine(MI_DISPLAY(mi), MI_WINDOW(mi), to_use, points[i].x -
-                                         offset, points[i].y + offset, points[i + 1].x - offset,
-                                         points[i + 1].y + offset);
-               }
-       }
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-level1_strike(Lightning bolt, ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       Storm      *st = &Helga[MI_SCREEN(mi)];
-       GC          gc = MI_GC(mi);
-       int         i;
-
-       if (MI_NPIXELS(mi) > 2) /* color */
-               XSetForeground(display, gc, MI_PIXEL(mi, st->color));
-       else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       XDrawLine(display, window, gc,
-       bolt.end1.x - 1, bolt.end1.y, bolt.middle[0].x - 1, bolt.middle[0].y);
-       draw_line(mi, bolt.middle, BOLT_VERTICIES, gc, -1);
-       XDrawLine(display, window, gc,
-                 bolt.middle[BOLT_VERTICIES - 1].x - 1,
-           bolt.middle[BOLT_VERTICIES - 1].y, bolt.end2.x - 1, bolt.end2.y);
-       XDrawLine(display, window, gc,
-       bolt.end1.x + 1, bolt.end1.y, bolt.middle[0].x + 1, bolt.middle[0].y);
-       draw_line(mi, bolt.middle, BOLT_VERTICIES, gc, 1);
-       XDrawLine(display, window, gc,
-                 bolt.middle[BOLT_VERTICIES - 1].x + 1,
-           bolt.middle[BOLT_VERTICIES - 1].y, bolt.end2.x + 1, bolt.end2.y);
-
-       for (i = 0; i < bolt.fork_number; i++) {
-               draw_line(mi, bolt.branch[i].ForkVerticies, bolt.branch[i].num_used,
-                         gc, -1);
-               draw_line(mi, bolt.branch[i].ForkVerticies, bolt.branch[i].num_used,
-                         gc, 1);
-       }
-       first_strike(bolt, mi);
-}
-
-/*------------------------------------------------------------------------*/
-
-static int
-distance(XPoint a, XPoint b)
-{
-       return ((int) sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)));
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-level2_strike(Lightning bolt, ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       Storm      *st = &Helga[MI_SCREEN(mi)];
-       GC          gc = MI_GC(mi);
-       int         i;
-
-       /* This was originally designed to be a little darker then the
-          level1 strike.  This was changed to get it to work on
-          multiscreens and to add more color variety.   I tried
-          stippling but it did not look good. */
-       if (MI_NPIXELS(mi) > 2)
-               XSetForeground(display, gc, MI_PIXEL(mi, st->color));
-       else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       XDrawLine(display, window, gc,
-       bolt.end1.x - 2, bolt.end1.y, bolt.middle[0].x - 2, bolt.middle[0].y);
-       draw_line(mi, bolt.middle, BOLT_VERTICIES, gc, -2);
-       XDrawLine(display, window, gc,
-                 bolt.middle[BOLT_VERTICIES - 1].x - 2,
-           bolt.middle[BOLT_VERTICIES - 1].y, bolt.end2.x - 2, bolt.end2.y);
-
-       XDrawLine(display, window, gc,
-       bolt.end1.x + 2, bolt.end1.y, bolt.middle[0].x + 2, bolt.middle[0].y);
-       draw_line(mi, bolt.middle, BOLT_VERTICIES, gc, 2);
-       XDrawLine(display, window, gc,
-                 bolt.middle[BOLT_VERTICIES - 1].x + 2,
-           bolt.middle[BOLT_VERTICIES - 1].y, bolt.end2.x + 2, bolt.end2.y);
-
-       for (i = 0; i < bolt.fork_number; i++) {
-               draw_line(mi, bolt.branch[i].ForkVerticies, bolt.branch[i].num_used,
-                         gc, -2);
-               draw_line(mi, bolt.branch[i].ForkVerticies, bolt.branch[i].num_used,
-                         gc, 2);
-       }
-       level1_strike(bolt, mi);
-}
-
-/*------------------------------------------------------------------------*/
-
-static int
-storm_active(Storm * st)
-{
-       int         i, atleast_1 = 0;
-
-       for (i = 0; i < st->multi_strike; i++)
-               if (st->bolts[i].wiggle_number > 0)
-                       atleast_1++;
-
-       return (atleast_1);
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-wiggle_bolt(Lightning * bolt)
-{
-       int         i;
-
-       wiggle_line(bolt->middle, BOLT_VERTICIES, bolt->wiggle_amount);
-       bolt->end2.x += NRAND(bolt->wiggle_amount) - bolt->wiggle_amount / 2;
-       bolt->end2.y += NRAND(bolt->wiggle_amount) - bolt->wiggle_amount / 2;
-
-       for (i = 0; i < bolt->fork_number; i++) {
-               wiggle_line(bolt->branch[i].ForkVerticies, bolt->branch[i].num_used,
-                           bolt->wiggle_amount);
-               bolt->branch[i].ForkVerticies[0].x = bolt->middle[bolt->forks_start[i]].x;
-               bolt->branch[i].ForkVerticies[0].y = bolt->middle[bolt->forks_start[i]].y;
-       }
-
-       if (bolt->wiggle_amount > 1)
-               bolt->wiggle_amount -= 1;
-       else
-               bolt->wiggle_amount = 0;
-}
-
-/*------------------------------------------------------------------------*/
-
-static void
-wiggle_line(XPoint * p, int number, int amount)
-{
-       int         i;
-
-       for (i = 0; i < number; i++) {
-               p[i].x += NRAND(amount) - amount / 2;
-               p[i].y += NRAND(amount) - amount / 2;
-       }
-}
-
-/*------------------------------------------------------------------------*/
-
-void
-init_lightning(ModeInfo * mi)
-{
-       Storm      *st;
-
-       if (Helga == NULL) {
-               if ((Helga = (Storm *) calloc(MI_NUM_SCREENS(mi),
-                                             sizeof (Storm))) == NULL)
-                       return;
-       }
-       st = &Helga[MI_SCREEN(mi)];
-
-       st->scr_width = MI_WIN_WIDTH(mi);
-       st->scr_height = MI_WIN_HEIGHT(mi);
-
-       st->multi_strike = setup_multi_strike();
-       random_storm(st);
-       st->stage = 0;
-}
-
-/*------------------------------------------------------------------------*/
-
-void
-draw_lightning(ModeInfo * mi)
-{
-       Storm      *st = &Helga[MI_SCREEN(mi)];
-       int         i;
-
-       switch (st->stage) {
-               case 0:
-                       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-                       st->color = NRAND(MI_NPIXELS(mi));
-                       st->draw_time = 0;
-                       if (storm_active(st))
-                               st->stage++;
-                       else
-                               st->stage = 3;
-                       break;
-               case 1:
-                       for (i = 0; i < st->multi_strike; i++) {
-                               if (st->bolts[i].visible)
-                                       draw_bolt(&(st->bolts[i]), mi);
-                               update_bolt(&(st->bolts[i]), st->draw_time);
-                       }
-                       st->draw_time++;
-                       XFlush(MI_DISPLAY(mi));
-                       MI_PAUSE(mi) = 60000;
-                       st->stage++;
-                       break;
-               case 2:
-                       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-                       if (storm_active(st))
-                               st->stage = 1;
-                       else
-                               st->stage++;
-                       break;
-               case 3:
-                       MI_PAUSE(mi) = 1000000;
-                       init_lightning(mi);
-                       break;
-       }
-}
-
-void
-release_lightning(ModeInfo * mi)
-{
-       if (Helga != NULL) {
-               (void) free((void *) Helga);
-               Helga = NULL;
-       }
-}
-
-void
-refresh_lightning(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/lightning.man b/hacks/lightning.man
deleted file mode 100644 (file)
index 786ee99..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-lightning - draws fractal lightning bolts
-.SH SYNOPSIS
-.B lightning
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
-
-.SH DESCRIPTION
-The \fIlightning\fP program draws fractal lightning bolts
-.SH OPTIONS
-.I lightning
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors are chosen randomly.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1996 by Keith Romberg.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Keith Romberg <kromberg@saxe.com>, 27-Jun-96.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/link_axp.com b/hacks/link_axp.com
deleted file mode 100644 (file)
index 58ce031..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-$! We fisrt test the version of DECW/Motif ; if 1.2 we need to link with new
-$! X11R5 libraries
-$@sys$update:decw$get_image_version sys$share:decw$xlibshr.exe decw$version
-$ if f$extract(4,3,decw$version).eqs."1.2"
-$ then
-$! DECW/Motif 1.2 : link with X11R5 libraries
-$ link/exe=attraction.exe   screenhack,attraction,vms_axp_12.opt/opt
-$ link/exe=blitspin.exe     screenhack,blitspin,vms_axp_12.opt/opt
-$ link/exe=bouboule.exe     screenhack-xlock,bouboule,xlockmore,vms_axp_12.opt/opt
-$ link/exe=braid.exe        screenhack-xlock,braid,xlockmore,vms_axp_12.opt/opt
-$ link/exe=bubbles.exe      screenhack,bubbles,bubbles_default,vms_axp_12.opt/opt
-$ link/exe=coral.exe        screenhack,coral,vms_axp_12.opt/opt
-$ link/exe=decayscreen.exe  screenhack,decayscreen,vms_axp_12.opt/opt
-$ link/exe=deco.exe         screenhack,deco,vms_axp_12.opt/opt
-$ link/exe=drift.exe        screenhack-xlock,drift,xlockmore,vms_axp_12.opt/opt
-$ link/exe=fadeplot.exe     screenhack-xlock,fadeplot,xlockmore,vms_axp_12.opt/opt
-$ link/exe=flag.exe         screenhack-xlock,flag,xlockmore,vms_axp_12.opt/opt
-$ link/exe=flame.exe        screenhack,flame,vms_axp_12.opt/opt
-$ link/exe=forest.exe       screenhack-xlock,forest,xlockmore,vms_axp_12.opt/opt
-$ link/exe=vines.exe        screenhack-xlock,vines,xlockmore,vms_axp_12.opt/opt
-$ link/exe=galaxy.exe       screenhack-xlock,galaxy,xlockmore,vms_axp_12.opt/opt
-$ link/exe=grav.exe         screenhack-xlock,grav,xlockmore,vms_axp_12.opt/opt
-$ link/exe=greynetic        screenhack,greynetic,vms_axp_12.opt/opt
-$ link/exe=halo.exe         screenhack,halo,vms_axp_12.opt/opt
-$ link/exe=helix.exe        screenhack,helix,vms_axp_12.opt/opt
-$ link/exe=hopalong.exe     screenhack-xlock,hopalong,xlockmore,vms_axp_12.opt/opt
-$ link/exe=hypercube.exe    screenhack,hypercube,vms_axp_12.opt/opt
-$ link/exe=ifs.exe          screenhack-xlock,ifs,xlockmore,vms_axp_12.opt/opt
-$ link/exe=imsmap.exe       screenhack,imsmap,vms_axp_12.opt/opt
-$ link/exe=julia.exe        screenhack-xlock,julia,xlockmore,vms_axp_12.opt/opt
-$ link/exe=kaleidescope.exe screenhack,kaleidescope,vms_axp_12.opt/opt
-$ link/exe=laser.exe        screenhack-xlock,laser,xlockmore,vms_axp_12.opt/opt
-$ link/exe=lightning.exe    screenhack-xlock,lightning,xlockmore,vms_axp_12.opt/opt
-$ link/exe=lisa.exe         screenhack-xlock,lisa,xlockmore,vms_axp_12.opt/opt
-$ link/exe=lmorph.exe       screenhack,lmorph,vms_axp_12.opt/opt
-$ link/exe=maze.exe         screenhack,maze,vms_axp_12.opt/opt
-$ link/exe=moire.exe        screenhack,moire,vms_axp_12.opt/opt
-$ link/exe=noseguy.exe      screenhack,noseguy,vms_axp_12.opt/opt
-$ link/exe=pedal.exe        screenhack,pedal,vms_axp_12.opt/opt
-$ link/exe=penrose.exe      screenhack-xlock,penrose,xlockmore,vms_axp_12.opt/opt
-$ link/exe=pyro.exe         screenhack,pyro,vms_axp_12.opt/opt
-$ link/exe=qix.exe          screenhack,qix,vms_axp_12.opt/opt
-$ link/exe=rd-bomb.exe      screenhack,rd-bomb,vms_axp_12.opt/opt
-$ link/exe=rocks.exe        screenhack,rocks,vms_axp_12.opt/opt
-$ link/exe=rorschach.exe    screenhack,rorschach,vms_axp_12.opt/opt
-$ link/exe=sierpinski.exe   screenhack-xlock,sierpinski,xlockmore,vms_axp_12.opt/opt
-$ link/exe=slidescreen.exe  screenhack,slidescreen,vms_axp_12.opt/opt
-$ link/exe=slip.exe         screenhack-xlock,slip,xlockmore,vms_axp_12.opt/opt
-$ 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
-$ else
-$! Else, link with X11R4 libraries
-$ link/exe=attraction.exe   screenhack,attraction,vms_axp.opt/opt
-$ link/exe=blitspin.exe     screenhack,blitspin,vms_axp.opt/opt
-$ link/exe=bouboule.exe     screenhack-xlock,bouboule,xlockmore,vms_axp.opt/opt
-$ link/exe=braid.exe        screenhack-xlock,braid,xlockmore,vms_axp.opt/opt
-$ link/exe=bubbles.exe      screenhack,bubbles,bubbles_default,vms_axp.opt/opt
-$ link/exe=coral.exe        screenhack,coral,vms_axp.opt/opt
-$ link/exe=decayscreen.exe  screenhack,decayscreen,vms_axp.opt/opt
-$ link/exe=deco.exe         screenhack,deco,vms_axp.opt/opt
-$ link/exe=drift.exe        screenhack-xlock,drift,xlockmore,vms_axp.opt/opt
-$ link/exe=fadeplot.exe     screenhack-xlock,fadeplot,xlockmore,vms_axp.opt/opt
-$ link/exe=flag.exe         screenhack-xlock,flag,xlockmore,vms_axp.opt/opt
-$ link/exe=flame.exe        screenhack,flame,vms_axp.opt/opt
-$ link/exe=forest.exe       screenhack-xlock,forest,xlockmore,vms_axp.opt/opt
-$ link/exe=vines.exe        screenhack-xlock,vines,xlockmore,vms_axp.opt/opt
-$ link/exe=galaxy.exe       screenhack-xlock,galaxy,xlockmore,vms_axp.opt/opt
-$ link/exe=grav.exe         screenhack-xlock,grav,xlockmore,vms_axp.opt/opt
-$ link/exe=greynetic        screenhack,greynetic,vms_axp.opt/opt
-$ link/exe=halo.exe         screenhack,halo,vms_axp.opt/opt
-$ link/exe=helix.exe        screenhack,helix,vms_axp.opt/opt
-$ link/exe=hopalong.exe     screenhack-xlock,hopalong,xlockmore,vms_axp.opt/opt
-$ link/exe=hypercube.exe    screenhack,hypercube,vms_axp.opt/opt
-$ link/exe=ifs.exe          screenhack-xlock,ifs,xlockmore,vms_axp.opt/opt
-$ link/exe=imsmap.exe       screenhack,imsmap,vms_axp.opt/opt
-$ link/exe=julia.exe        screenhack-xlock,julia,xlockmore,vms_axp.opt/opt
-$ link/exe=kaleidescope.exe screenhack,kaleidescope,vms_axp.opt/opt
-$ link/exe=laser.exe        screenhack-xlock,laser,xlockmore,vms_axp.opt/opt
-$ link/exe=lightning.exe    screenhack-xlock,lightning,xlockmore,vms_axp.opt/opt
-$ link/exe=lisa.exe         screenhack-xlock,lisa,xlockmore,vms_axp.opt/opt
-$ link/exe=lmorph.exe       screenhack,lmorph,vms_axp.opt/opt
-$ link/exe=maze.exe         screenhack,maze,vms_axp.opt/opt
-$ link/exe=moire.exe        screenhack,moire,vms_axp.opt/opt
-$ link/exe=noseguy.exe      screenhack,noseguy,vms_axp.opt/opt
-$ link/exe=pedal.exe        screenhack,pedal,vms_axp.opt/opt
-$ link/exe=penrose.exe      screenhack-xlock,penrose,xlockmore,vms_axp.opt/opt
-$ link/exe=pyro.exe         screenhack,pyro,vms_axp.opt/opt
-$ link/exe=qix.exe          screenhack,qix,vms_axp.opt/opt
-$ link/exe=rd-bomb.exe      screenhack,rd-bomb,vms_axp.opt/opt
-$ link/exe=rocks.exe        screenhack,rocks,vms_axp.opt/opt
-$ link/exe=rorschach.exe    screenhack,rorschach,vms_axp.opt/opt
-$ link/exe=sierpinski.exe   screenhack-xlock,sierpinski,xlockmore,vms_axp.opt/opt
-$ link/exe=slidescreen.exe  screenhack,slidescreen,vms_axp.opt/opt
-$ link/exe=slip.exe         screenhack-xlock,slip,xlockmore,vms_axp.opt/opt
-$ 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
-$ endif
diff --git a/hacks/link_decc.com b/hacks/link_decc.com
deleted file mode 100644 (file)
index 3e001cd..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-$! We fisrt test the version of DECW/Motif ; if 1.2 we need to link with new
-$! X11R5 libraries
-$@sys$update:decw$get_image_version sys$share:decw$xlibshr.exe decw$version
-$ if f$extract(4,3,decw$version).eqs."1.2"
-$ then
-$! DECW/Motif 1.2 : link with X11R5 libraries
-$ link/exe=attraction.exe   screenhack,attraction,vms_decc_12.opt/opt
-$ link/exe=blitspin.exe     screenhack,blitspin,vms_decc_12.opt/opt
-$ link/exe=bouboule.exe     screenhack-xlock,bouboule,xlockmore,vms_decc_12.opt/opt
-$ link/exe=braid.exe        screenhack-xlock,braid,xlockmore,vms_decc_12.opt/opt
-$ link/exe=bubbles.exe      screenhack,bubbles,bubbles_default,vms_decc_12.opt/opt
-$ link/exe=coral.exe        screenhack,coral,vms_decc_12.opt/opt
-$ link/exe=decayscreen.exe  screenhack,decayscreen,vms_decc_12.opt/opt
-$ link/exe=deco.exe         screenhack,deco,vms_decc_12.opt/opt
-$ link/exe=drift.exe        screenhack-xlock,drift,xlockmore,vms_decc_12.opt/opt
-$ link/exe=fadeplot.exe     screenhack-xlock,fadeplot,xlockmore,vms_decc_12.opt/opt
-$ link/exe=flag.exe         screenhack-xlock,flag,xlockmore,vms_decc_12.opt/opt
-$ link/exe=flame.exe        screenhack,flame,vms_decc_12.opt/opt
-$ link/exe=forest.exe       screenhack-xlock,forest,xlockmore,vms_decc_12.opt/opt
-$ link/exe=vines.exe        screenhack-xlock,vines,xlockmore,vms_decc_12.opt/opt
-$ link/exe=galaxy.exe       screenhack-xlock,galaxy,xlockmore,vms_decc_12.opt/opt
-$ link/exe=grav.exe         screenhack-xlock,grav,xlockmore,vms_decc_12.opt/opt
-$ link/exe=greynetic        screenhack,greynetic,vms_decc_12.opt/opt
-$ link/exe=halo.exe         screenhack,halo,vms_decc_12.opt/opt
-$ link/exe=helix.exe        screenhack,helix,vms_decc_12.opt/opt
-$ link/exe=hopalong.exe     screenhack-xlock,hopalong,xlockmore,vms_decc_12.opt/opt
-$ link/exe=hypercube.exe    screenhack,hypercube,vms_decc_12.opt/opt
-$ link/exe=ifs.exe          screenhack-xlock,ifs,xlockmore,vms_decc_12.opt/opt
-$ link/exe=imsmap.exe       screenhack,imsmap,vms_decc_12.opt/opt
-$ link/exe=julia.exe        screenhack-xlock,julia,xlockmore,vms_decc_12.opt/opt
-$ link/exe=kaleidescope.exe screenhack,kaleidescope,vms_decc_12.opt/opt
-$ link/exe=laser.exe        screenhack-xlock,laser,xlockmore,vms_decc_12.opt/opt
-$ link/exe=lightning.exe    screenhack-xlock,lightning,xlockmore,vms_decc_12.opt/opt
-$ link/exe=lisa.exe         screenhack-xlock,lisa,xlockmore,vms_decc_12.opt/opt
-$ link/exe=lmorph.exe       screenhack,lmorph,vms_decc_12.opt/opt
-$ link/exe=maze.exe         screenhack,maze,vms_decc_12.opt/opt
-$ link/exe=moire.exe        screenhack,moire,vms_decc_12.opt/opt
-$ link/exe=noseguy.exe      screenhack,noseguy,vms_decc_12.opt/opt
-$ link/exe=pedal.exe        screenhack,pedal,vms_decc_12.opt/opt
-$ link/exe=penrose.exe      screenhack-xlock,penrose,xlockmore,vms_decc_12.opt/opt
-$ link/exe=pyro.exe         screenhack,pyro,vms_decc_12.opt/opt
-$ link/exe=qix.exe          screenhack,qix,vms_decc_12.opt/opt
-$ link/exe=rd-bomb.exe      screenhack,rd-bombs,vms_decc_12.opt/opt
-$ link/exe=rocks.exe        screenhack,rocks,vms_decc_12.opt/opt
-$ link/exe=rorschach.exe    screenhack,rorschach,vms_decc_12.opt/opt
-$ link/exe=sierpinski.exe   screenhack-xlock,sierpinski,xlockmore,vms_decc_12.opt/opt
-$ link/exe=slidescreen.exe  screenhack,slidescreen,vms_decc_12.opt/opt
-$ link/exe=slip.exe         screenhack-xlock,slip,xlockmore,vms_decc_12.opt/opt
-$ link/exe=sphere.exe       screenhack-xlock,sphere,xlockmore,vms_decc_12.opt/opt
-$ 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
-$ else
-$! Else, link with X11R4 libraries
-$ link/exe=attraction.exe   screenhack,attraction,vms_decc.opt/opt
-$ link/exe=blitspin.exe     screenhack,blitspin,vms_decc.opt/opt
-$ link/exe=bouboule.exe     screenhack-xlock,bouboule,xlockmore,vms_decc.opt/opt
-$ link/exe=braid.exe        screenhack-xlock,braid,xlockmore,vms_decc.opt/opt
-$ link/exe=bubbles.exe      screenhack,bubbles,bubbles_default,vms_decc.opt/opt
-$ link/exe=coral.exe        screenhack,coral,vms_decc.opt/opt
-$ link/exe=decayscreen.exe  screenhack,decayscreen,vms_decc.opt/opt
-$ link/exe=deco.exe         screenhack,deco,vms_decc.opt/opt
-$ link/exe=drift.exe        screenhack-xlock,drift,xlockmore,vms_decc.opt/opt
-$ link/exe=fadeplot.exe     screenhack-xlock,fadeplot,xlockmore,vms_decc.opt/opt
-$ link/exe=flag.exe         screenhack-xlock,flag,xlockmore,vms_decc.opt/opt
-$ link/exe=flame.exe        screenhack,flame,vms_decc.opt/opt
-$ link/exe=forest.exe       screenhack-xlock,forest,xlockmore,vms_decc.opt/opt
-$ link/exe=vines.exe        screenhack-xlock,vines,xlockmore,vms_decc.opt/opt
-$ link/exe=galaxy.exe       screenhack-xlock,galaxy,xlockmore,vms_decc.opt/opt
-$ link/exe=grav.exe         screenhack-xlock,grav,xlockmore,vms_decc.opt/opt
-$ link/exe=greynetic        screenhack,greynetic,vms_decc.opt/opt
-$ link/exe=halo.exe         screenhack,halo,vms_decc.opt/opt
-$ link/exe=helix.exe        screenhack,helix,vms_decc.opt/opt
-$ link/exe=hopalong.exe     screenhack-xlock,hopalong,xlockmore,vms_decc.opt/opt
-$ link/exe=hypercube.exe    screenhack,hypercube,vms_decc.opt/opt
-$ link/exe=ifs.exe          screenhack-xlock,ifs,xlockmore,vms_decc.opt/opt
-$ link/exe=imsmap.exe       screenhack,imsmap,vms_decc.opt/opt
-$ link/exe=julia.exe        screenhack-xlock,julia,xlockmore,vms_decc.opt/opt
-$ link/exe=kaleidescope.exe screenhack,kaleidescope,vms_decc.opt/opt
-$ link/exe=laser.exe        screenhack-xlock,laser,xlockmore,vms_decc.opt/opt
-$ link/exe=lightning.exe    screenhack-xlock,lightning,xlockmore,vms_decc.opt/opt
-$ link/exe=lisa.exe         screenhack-xlock,lisa,xlockmore,vms_decc.opt/opt
-$ link/exe=lmorph.exe       screenhack,lmorph,vms_decc.opt/opt
-$ link/exe=maze.exe         screenhack,maze,vms_decc.opt/opt
-$ link/exe=moire.exe        screenhack,moire,vms_decc.opt/opt
-$ link/exe=noseguy.exe      screenhack,noseguy,vms_decc.opt/opt
-$ link/exe=pedal.exe        screenhack,pedal,vms_decc.opt/opt
-$ link/exe=penrose.exe      screenhack-xlock,penrose,xlockmore,vms_decc.opt/opt
-$ link/exe=pyro.exe         screenhack,pyro,vms_decc.opt/opt
-$ link/exe=qix.exe          screenhack,qix,vms_decc.opt/opt
-$ link/exe=rd-bombs.exe     screenhack,rd-bombs,vms_decc.opt/opt
-$ link/exe=rocks.exe        screenhack,rocks,vms_decc.opt/opt
-$ link/exe=rorschach.exe    screenhack,rorschach,vms_decc.opt/opt
-$ link/exe=sierpinski.exe   screenhack-xlock,sierpinski,xlockmore,vms_decc.opt/opt
-$ link/exe=slidescreen.exe  screenhack,slidescreen,vms_decc.opt/opt
-$ link/exe=slip.exe         screenhack-xlock,slip,xlockmore,vms_decc.opt/opt
-$ 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
-$ endif
diff --git a/hacks/lisa.c b/hacks/lisa.c
deleted file mode 100644 (file)
index af680ea..0000000
+++ /dev/null
@@ -1,485 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* lisa --- animated full-loop lisajous figures */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)lisa.c       4.04 97/07/28 xlockmore";
-#endif
-
-/* Copyright (c) 1997 by Caleb Cullen.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- *
- * The inspiration for this program, Lasp, was written by Adam B. Roach 
- * in 1990, assisted by me, Caleb Cullen.  It was written first in C, then
- * in assembly, and used pre-calculated data tables to graph lisajous
- * figures on 386 machines and lower.  This version bears only superficial
- * resemblances to the original Lasp.
- *
- * The `lissie' module's source code was studied as an example of how
- * to incorporate a new module into xlock.  Resemblances to it are
- * expected, but not intended to be plaigiaristic.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Lisa"
-# define HACK_INIT                                     init_lisa
-# define HACK_DRAW                                     draw_lisa
-# define lisa_opts                                     xlockmore_opts
-# define DEFAULTS      "*delay:                25000   \n"                     \
-                                       "*count:                1       \n"                     \
-                                       "*cycles:               256     \n"                     \
-                                       "*size:                 -1      \n"                     \
-                                       "*ncolors:              200     \n"
-# define UNIFORM_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-  void refresh_lisa(ModeInfo * mi);
-  void change_lisa(ModeInfo * mi);
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-#define  DEF_ADDITIVE     "True"
-
-static Bool additive;
-
-static XrmOptionDescRec lisa_xrm_opts[] =
-{
-       {"-additive", ".lisa.additive", XrmoptionNoArg, (caddr_t) "True"},
-       {"+additive", ".lisa.additive", XrmoptionNoArg, (caddr_t) "False"}
-};
-
-static argtype lisa_vars[] =
-{
-       {(caddr_t *) & additive, "additive", "Additive", DEF_ADDITIVE, t_Bool}
-};
-
-static OptionStruct lisa_vars_desc[] =
-{
-       {"-/+additive", "turn on/off additive functions mode"}
-};
-
-ModeSpecOpt lisa_opts =
-{2, lisa_xrm_opts, 1, lisa_vars, lisa_vars_desc};
-
-
-#define  DRAWLINES    1
-#define  TWOLOOPS     1
-#define  XVMAX        10       /* Maximum velocities */
-#define  YVMAX        10
-#define  LISAMAXFUNCS 2
-#define  NUMSTDFUNCS  10
-#define  MAXCYCLES    3
-#define  MINLISAS 1
-#define  lisasetcolor() \
-if (MI_NPIXELS(mi) > 2) { \
-  XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_PIXEL(mi, loop->color)); \
-  if (++(loop->color) >= MI_NPIXELS(mi)) { loop->color=0; } \
-  } else { XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WIN_WHITE_PIXEL(mi)); }
-#define getRadius(context) \
-  ((context->width > context->height)?context->height:context->width) * 3 / 8
-#define checkRadius(loop, context) \
-  if ((context->height / 2 > MI_SIZE(mi)) && (context->width / 2 > MI_SIZE(mi))) \
-      loop->radius = MI_SIZE(mi); \
-  if ((loop->radius < 0) || \
-      (loop->radius > loop->center.x) || \
-      (loop->radius > loop->center.y)) loop->radius = getRadius(context)
-
-
-typedef struct lisafunc_struct {
-       double      xcoeff[2], ycoeff[2];
-       int         nx, ny;
-       int         index;
-} lisafuncs;
-
-typedef struct lisa_struct {
-       int         radius, color, dx, dy, nsteps, nfuncs, melting;
-       double      pistep, phi, theta;
-       XPoint      center, *lastpoint;
-       lisafuncs  *function[LISAMAXFUNCS];
-} lisas;
-
-typedef struct lisacontext_struct {
-       lisas      *lisajous;
-       int         width, height, nlisajous, loopcount;
-       int         maxcycles;
-} lisacons;
-
-static lisacons *Lisa = NULL;
-
-static lisafuncs Function[NUMSTDFUNCS] =
-{
-       {
-               {1.0, 2.0},
-               {1.0, 2.0}, 2, 2, 0},
-       {
-               {1.0, 2.0},
-               {1.0, 1.0}, 2, 2, 1},
-       {
-               {1.0, 3.0},
-               {1.0, 2.0}, 2, 2, 2},
-       {
-               {1.0, 3.0},
-               {1.0, 3.0}, 2, 2, 3},
-       {
-               {2.0, 4.0},
-               {1.0, 2.0}, 2, 2, 4},
-       {
-               {1.0, 4.0},
-               {1.0, 3.0}, 2, 2, 5},
-       {
-               {1.0, 4.0},
-               {1.0, 4.0}, 2, 2, 6},
-       {
-               {1.0, 5.0},
-               {1.0, 5.0}, 2, 2, 7},
-       {
-               {2.0, 5.0},
-               {2.0, 5.0}, 2, 2, 8},
-       {
-               {1.0, 0.0},
-               {1.0, 0.0}, 1, 1, 9}
-};
-
-static void
-drawlisa(ModeInfo * mi, lisas * loop)
-{
-       XPoint     *np;
-       XPoint     *lp = loop->lastpoint;
-       lisacons   *lc = &Lisa[MI_SCREEN(mi)];
-       lisafuncs **lf = loop->function;
-       int         phase = lc->loopcount % loop->nsteps;
-       int         pctr, fctr, xctr, yctr;
-       double      xprod, yprod, xsum, ysum;
-
-       /* Allocate the np array */
-       np = (XPoint *) calloc(loop->nsteps, sizeof (XPoint));
-
-       /* Update the center */
-       loop->center.x += loop->dx;
-       loop->center.y += loop->dy;
-       checkRadius(loop, lc);
-       if ((loop->center.x - loop->radius) <= 0) {
-               loop->center.x = loop->radius;
-               loop->dx = NRAND(XVMAX);
-       } else if ((loop->center.x + loop->radius) >= lc->width) {
-               loop->center.x = lc->width - loop->radius;
-               loop->dx = -NRAND(XVMAX);
-       };
-       if ((loop->center.y - loop->radius) <= 0) {
-               loop->center.y = loop->radius;
-               loop->dy = NRAND(YVMAX);
-       } else if ((loop->center.y + loop->radius) >= lc->height) {
-               loop->center.y = lc->height - loop->radius;
-               loop->dy = -NRAND(YVMAX);
-       };
-
-       /* Now draw the points, and erase the ones from the last cycle */
-
-       for (pctr = 0; pctr < loop->nsteps; pctr++) {
-               fctr = loop->nfuncs;
-               loop->phi = (double) (pctr - phase) * loop->pistep;
-               loop->theta = (double) (pctr + phase) * loop->pistep;
-               xsum = ysum = 0;
-               while (fctr--) {
-                       xctr = lf[fctr]->nx;
-                       yctr = lf[fctr]->ny;
-                       if (additive) {
-                               xprod = yprod = 0.0;
-                               while (xctr--)
-                                       xprod += sin(lf[fctr]->xcoeff[xctr] * loop->theta);
-                               while (yctr--)
-                                       yprod += sin(lf[fctr]->ycoeff[yctr] * loop->phi);
-                               if (loop->melting) {
-                                       if (fctr) {
-                                               xsum += xprod \
-                                                       *(double) (loop->nsteps - loop->melting) \
-                                                       /(double) loop->nsteps;
-                                               ysum += yprod \
-                                                       *(double) (loop->nsteps - loop->melting) \
-                                                       /(double) loop->nsteps;
-                                       } else {
-                                               xsum += xprod \
-                                                       *(double) loop->melting \
-                                                       /(double) loop->nsteps;
-                                               ysum += yprod \
-                                                       *(double) loop->melting \
-                                                       /(double) loop->nsteps;
-                                       }
-                               } else {
-                                       xsum = xprod;
-                                       ysum = yprod;
-                               }
-                               if (!fctr) {
-                                       xsum = xsum \
-                                               *(double) loop->radius \
-                                               /(double) lf[fctr]->nx;
-                                       ysum = ysum \
-                                               *(double) loop->radius \
-                                               /(double) lf[fctr]->ny;
-                               }
-                       } else {
-                               if (loop->melting) {
-                                       if (fctr) {
-                                               yprod = xprod = (double) loop->radius \
-                                                       *(double) (loop->nsteps - loop->melting) \
-                                                       /(double) (loop->nsteps);
-                                       } else {
-                                               yprod = xprod = (double) loop->radius \
-                                                       *(double) (loop->melting) \
-                                                       /(double) (loop->nsteps);
-                                       }
-                               } else {
-                                       xprod = yprod = (double) loop->radius;
-                               }
-                               while (xctr--)
-                                       xprod *= sin(lf[fctr]->xcoeff[xctr] * loop->theta);
-                               while (yctr--)
-                                       yprod *= sin(lf[fctr]->ycoeff[yctr] * loop->phi);
-                               xsum += xprod;
-                               ysum += yprod;
-                       }
-               }
-               if ((loop->nfuncs > 1) && (!loop->melting)) {
-                       xsum /= (double) loop->nfuncs;
-                       ysum /= (double) loop->nfuncs;
-               }
-               xsum += (double) loop->center.x;
-               ysum += (double) loop->center.y;
-
-               np[pctr].x = (int) ceil(xsum);
-               np[pctr].y = (int) ceil(ysum);
-       }
-       if (loop->melting) {
-               if (!--loop->melting) {
-                       loop->nfuncs = 1;
-                       loop->function[0] = loop->function[1];
-               }
-       }
-       for (pctr = 0; pctr < loop->nsteps; pctr++) {
-
-#if defined DRAWLINES
-               /* erase the last cycle's point */
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WIN_BLACK_PIXEL(mi));
-               XDrawLine(MI_DISPLAY(mi), MI_WINDOW(mi), \
-                         MI_GC(mi), lp[pctr].x, lp[pctr].y, \
-                         lp[(pctr + 1) % loop->nsteps].x, \
-                         lp[(pctr + 1) % loop->nsteps].y);
-
-               /* Set the new color */
-               lisasetcolor();
-
-               /* plot this cycle's point */
-               XDrawLine(MI_DISPLAY(mi), MI_WINDOW(mi), \
-                         MI_GC(mi), np[pctr].x, np[pctr].y, \
-                         np[(pctr + 1) % loop->nsteps].x, \
-                         np[(pctr + 1) % loop->nsteps].y);
-#else
-               /* erase the last cycle's point */
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WIN_BLACK_PIXEL(mi));
-               XDrawPoint(MI_DISPLAY(mi), MI_WINDOW(mi), \
-                          MI_GC(mi), lp[pctr].x, lp[pctr].y);
-
-               /* Set the new color */
-               lisasetcolor();
-
-               /* plot this cycle's point */
-               XDrawPoint(MI_DISPLAY(mi), MI_WINDOW(mi), \
-                          MI_GC(mi), np[pctr].x, np[pctr].y);
-#endif
-       }
-       (void) free((void *) lp);
-       loop->lastpoint = np;
-}
-
-static void
-initlisa(ModeInfo * mi, lisas * loop)
-{
-       lisacons   *lc = &Lisa[MI_SCREEN(mi)];
-       lisafuncs **lf = loop->function;
-       XPoint     *lp;
-       int         phase, pctr, fctr, xctr, yctr;
-       double      xprod, yprod, xsum, ysum;
-
-       if (MI_NPIXELS(mi) > 2) {
-               loop->color = 0;
-       } else
-               loop->color = MI_WIN_WHITE_PIXEL(mi);
-       loop->nsteps = MI_CYCLES(mi);
-       if (loop->nsteps == 0)
-               loop->nsteps = 1;
-       lc->maxcycles = (MAXCYCLES * loop->nsteps) - 1;
-       loop->melting = 0;
-       loop->nfuncs = 1;
-       loop->pistep = 2.0 * M_PI / (double) loop->nsteps;
-       loop->center.x = lc->width / 2;
-       loop->center.y = lc->height / 2;
-       loop->radius = MI_SIZE(mi);
-       checkRadius(loop, lc);
-       loop->dx = NRAND(XVMAX);
-       loop->dy = NRAND(YVMAX);
-       loop->dx++;
-       loop->dy++;
-       lf[0] = &Function[lc->loopcount % NUMSTDFUNCS];
-       if ((lp = loop->lastpoint = (XPoint *)
-            calloc(loop->nsteps, sizeof (XPoint))) == NULL)
-               return;
-       phase = lc->loopcount % loop->nsteps;
-
-       for (pctr = 0; pctr < loop->nsteps; pctr++) {
-               loop->phi = (double) (pctr - phase) * loop->pistep;
-               loop->theta = (double) (pctr + phase) * loop->pistep;
-               fctr = loop->nfuncs;
-               xsum = ysum = 0.0;
-               while (fctr--) {
-                       xprod = yprod = (double) loop->radius;
-                       xctr = lf[fctr]->nx;
-                       yctr = lf[fctr]->ny;
-                       while (xctr--)
-                               xprod *= sin(lf[fctr]->xcoeff[xctr] * loop->theta);
-                       while (yctr--)
-                               yprod *= sin(lf[fctr]->ycoeff[yctr] * loop->phi);
-                       xsum += xprod;
-                       ysum += yprod;
-               }
-               if (loop->nfuncs > 1) {
-                       xsum /= 2.0;
-                       ysum /= 2.0;
-               }
-               xsum += (double) loop->center.x;
-               ysum += (double) loop->center.y;
-
-               lp[pctr].x = (int) ceil(xsum);
-               lp[pctr].y = (int) ceil(ysum);
-       }
-       for (pctr = 0; pctr < loop->nsteps; pctr++) {
-               /* Set the color */
-               lisasetcolor();
-#if defined DRAWLINES
-               XDrawLine(MI_DISPLAY(mi), MI_WINDOW(mi), \
-                         MI_GC(mi), lp[pctr].x, lp[pctr].y, \
-                         lp[(pctr + 1) % loop->nsteps].x, \
-                         lp[(pctr + 1) % loop->nsteps].y);
-#else
-               XDrawPoint(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi), \
-                          lp[pctr].x, lp[pctr].y);
-#endif
-       }
-
-       {
-         int line_width = -15;  /* #### make this a resource */
-         if (line_width == 0)
-               line_width = -8;
-         if (line_width < 0)
-               line_width = NRAND(-line_width)+1;
-         XSetLineAttributes(MI_DISPLAY(mi), MI_GC(mi), line_width,
-                                                LineSolid, CapProjecting, JoinMiter);
-       }
-}
-
-void
-init_lisa(ModeInfo * mi)
-{
-       lisacons   *lc;
-       int         lctr;
-
-       if (Lisa == NULL) {
-               if ((Lisa = (lisacons *) calloc(MI_NUM_SCREENS(mi), sizeof (lisacons))) \
-                   == NULL)
-                       return;
-       }
-       lc = &Lisa[MI_SCREEN(mi)];
-       lc->width = MI_WIN_WIDTH(mi);
-       lc->height = MI_WIN_HEIGHT(mi);
-       lc->loopcount = 0;
-       lc->nlisajous = MI_BATCHCOUNT(mi);
-       if (lc->nlisajous <= 0)
-               lc->nlisajous = 1;
-
-       if (lc->lisajous == NULL) {
-               if ((lc->lisajous = (lisas *) calloc(lc->nlisajous, sizeof (lisas))) \
-                   == NULL)
-                       return;
-               XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-               for (lctr = 0; lctr < lc->nlisajous; lctr++) {
-                       initlisa(mi, &lc->lisajous[lctr]);
-                       lc->loopcount++;
-               }
-       } else {
-               refresh_lisa(mi);
-       }
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-}
-
-void
-draw_lisa(ModeInfo * mi)
-{
-       lisacons   *lc = &Lisa[MI_SCREEN(mi)];
-
-       if (++lc->loopcount > lc->maxcycles) {
-               change_lisa(mi);
-       }
-       refresh_lisa(mi);
-}
-
-void
-refresh_lisa(ModeInfo * mi)
-{
-       lisacons   *lc = &Lisa[MI_SCREEN(mi)];
-       int         lctr;
-
-       for (lctr = 0; lctr < lc->nlisajous; lctr++) {
-               drawlisa(mi, &lc->lisajous[lctr]);
-       }
-}
-
-void
-release_lisa(ModeInfo * mi)
-{
-       lisacons   *lc;
-       int         lctr, sctr;
-
-       if (Lisa) {
-               for (sctr = 0; sctr < MI_NUM_SCREENS(mi); sctr++) {
-                       lc = &Lisa[sctr];
-                       while (lc->lisajous) {
-                               for (lctr = 0; lctr < lc->nlisajous; lctr++) {
-                                       (void) free(lc->lisajous[lctr].lastpoint);
-                               }
-                               (void) free(lc->lisajous);
-                               lc->lisajous = NULL;
-                       }
-               }
-               (void) free(Lisa);
-               Lisa = NULL;
-       }
-}
-
-void
-change_lisa(ModeInfo * mi)
-{
-       lisacons   *lc = &Lisa[MI_SCREEN(mi)];
-       lisas      *loop;
-       int         lctr;
-
-       lc->loopcount = 0;
-       for (lctr = 0; lctr < lc->nlisajous; lctr++) {
-               loop = &lc->lisajous[lctr];
-               loop->function[1] = &Function[(loop->function[0]->index + 1) %
-                                             NUMSTDFUNCS];
-               loop->melting = loop->nsteps - 1;
-               loop->nfuncs = 2;
-       }
-}
diff --git a/hacks/lisa.man b/hacks/lisa.man
deleted file mode 100644 (file)
index 64cc06f..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-.TH XScreenSaver 1 "27-May-97" "X Version 11"
-.SH NAME
-lisa - draws animated full-loop lisajous figures
-.SH SYNOPSIS
-.B lisa
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-size \fIinteger\fP]
-
-.SH DESCRIPTION
-The \fIlisa\fP program draws animated full-loop lisajous figures.
-.SH OPTIONS
-.I lisa
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-The colors are chosen randomly.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.TP 8
-.B \-size \fIinteger\fP
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1997 by Caleb Cullen.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Caleb Cullen, 1997.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 27-May-97.
diff --git a/hacks/lissie.c b/hacks/lissie.c
deleted file mode 100644 (file)
index 2a8fafa..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* lissie --- the Lissajous worm */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)lissie.c     4.04 97/07/28 xlockmore";
-#endif
-
-/*-
- * lissie.c - The Lissajous worm for xlock, the X Window System
- *               lockscreen.
- *
- * Copyright (c) 1996 by Alexander Jolk <ub9x@rz.uni-karlsruhe.de>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- * 18-Aug-96: added refresh-hook.
- * 01-May-96: written.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS "Lissie"
-# define HACK_INIT init_lissie
-# define HACK_DRAW draw_lissie
-# define lissie_opts xlockmore_opts
-# define DEFAULTS      "*delay:   10000 \n"    \
-                                       "*count:   1     \n"    \
-                                       "*cycles:  2000  \n"    \
-                                       "*size:   -200   \n"    \
-                                       "*ncolors: 64    \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                /* in xscreensaver distribution */
-#else /* STANDALONE */
-# include "xlock.h"            /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-ModeSpecOpt lissie_opts =
-{0, NULL, 0, NULL, NULL};
-
-#define MINSIZE 1
-
-#define Lissie(n)\
-       if (lissie->loc[(n)].x > 0 && lissie->loc[(n)].y > 0 &&\
-               lissie->loc[(n)].x <= lp->width && lissie->loc[(n)].y <= lp->height) {\
-               if (lissie->ri < 2)\
-                       XDrawPoint(display, MI_WINDOW(mi),\
-                               gc, lissie->loc[(n)].x, lissie->loc[(n)].y);\
-               else\
-                       XDrawArc(display, MI_WINDOW(mi), gc,\
-                               lissie->loc[(n)].x - lissie->ri / 2,\
-                               lissie->loc[(n)].y - lissie->ri / 2,\
-                               lissie->ri, lissie->ri, 0, 23040);\
-       }
-
-#define FLOATRAND(min,max)     ((min)+(LRAND()/MAXRAND)*((max)-(min)))
-#define INTRAND(min,max)     ((min)+NRAND((max)-(min)+1))
-
-#define MINDT  0.01
-#define MAXDT  0.15
-
-#define MAXLISSIELEN  100
-#define MINLISSIELEN  10
-#define MINLISSIES 1
-
-/* How many segments to draw per cycle when redrawing */
-#define REDRAWSTEP 3
-
-typedef struct {
-       double      tx, ty, dtx, dty;
-       int         xi, yi, ri, rx, ry, len, pos;
-       int         redrawing, redrawpos;
-       XPoint      loc[MAXLISSIELEN];
-       int         color;
-} lissiestruct;
-
-typedef struct {
-       int         width, height;
-       int         nlissies;
-       lissiestruct *lissie;
-       int         loopcount;
-} lissstruct;
-
-static lissstruct *lisses = NULL;
-
-
-static void
-drawlissie(ModeInfo * mi, lissiestruct * lissie)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       lissstruct *lp = &lisses[MI_SCREEN(mi)];
-       int         p = (++lissie->pos) % MAXLISSIELEN;
-       int         oldp = (lissie->pos - lissie->len + MAXLISSIELEN) % MAXLISSIELEN;
-
-       /* Let time go by ... */
-       lissie->tx += lissie->dtx;
-       lissie->ty += lissie->dty;
-       if (lissie->tx > 2 * M_PI)
-               lissie->tx -= 2 * M_PI;
-       if (lissie->ty > 2 * M_PI)
-               lissie->ty -= 2 * M_PI;
-
-       /* vary both (x/y) speeds by max. 1% */
-       lissie->dtx *= FLOATRAND(0.99, 1.01);
-       lissie->dty *= FLOATRAND(0.99, 1.01);
-       if (lissie->dtx < MINDT)
-               lissie->dtx = MINDT;
-       else if (lissie->dtx > MAXDT)
-               lissie->dtx = MAXDT;
-       if (lissie->dty < MINDT)
-               lissie->dty = MINDT;
-       else if (lissie->dty > MAXDT)
-               lissie->dty = MAXDT;
-
-       lissie->loc[p].x = lissie->xi + (int) (sin(lissie->tx) * lissie->rx);
-       lissie->loc[p].y = lissie->yi + (int) (sin(lissie->ty) * lissie->ry);
-
-       /* Mask */
-       XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-       Lissie(oldp);
-
-       /* Redraw */
-       if (MI_NPIXELS(mi) > 2) {
-               XSetForeground(display, gc, MI_PIXEL(mi, lissie->color));
-               if (++lissie->color >= MI_NPIXELS(mi))
-                       lissie->color = 0;
-       } else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       Lissie(p);
-       if (lissie->redrawing) {
-               int         i;
-
-               lissie->redrawpos++;
-               /* This compensates for the changed p
-                  since the last callback. */
-
-               for (i = 0; i < REDRAWSTEP; i++) {
-                       Lissie((p - lissie->redrawpos + MAXLISSIELEN) % MAXLISSIELEN);
-                       if (++(lissie->redrawpos) >= lissie->len) {
-                               lissie->redrawing = 0;
-                               break;
-                       }
-               }
-       }
-}
-
-static void
-initlissie(ModeInfo * mi, lissiestruct * lissie)
-{
-       lissstruct *lp = &lisses[MI_SCREEN(mi)];
-       int         size = MI_SIZE(mi);
-       int         i;
-
-       if (MI_NPIXELS(mi) > 2)
-               lissie->color = NRAND(MI_NPIXELS(mi));
-       else
-               lissie->color = MI_WIN_WHITE_PIXEL(mi);
-       /* Initialize parameters */
-       if (size < -MINSIZE)
-               lissie->ri = NRAND(MIN(-size, MAX(MINSIZE,
-                  MIN(lp->width, lp->height) / 4)) - MINSIZE + 1) + MINSIZE;
-       else if (size < MINSIZE) {
-               if (!size)
-                       lissie->ri = MAX(MINSIZE, MIN(lp->width, lp->height) / 4);
-               else
-                       lissie->ri = MINSIZE;
-       } else
-               lissie->ri = MIN(size, MAX(MINSIZE, MIN(lp->width, lp->height) / 4));
-       lissie->xi = INTRAND(lp->width / 4 + lissie->ri,
-                            lp->width * 3 / 4 - lissie->ri);
-       lissie->yi = INTRAND(lp->height / 4 + lissie->ri,
-                            lp->height * 3 / 4 - lissie->ri);
-       lissie->rx = INTRAND(lp->width / 4,
-                  MIN(lp->width - lissie->xi, lissie->xi)) - 2 * lissie->ri;
-       lissie->ry = INTRAND(lp->height / 4,
-                 MIN(lp->height - lissie->yi, lissie->yi)) - 2 * lissie->ri;
-       lissie->len = INTRAND(MINLISSIELEN, MAXLISSIELEN - 1);
-       lissie->pos = 0;
-
-       lissie->redrawing = 0;
-
-       lissie->tx = FLOATRAND(0, 2 * M_PI);
-       lissie->ty = FLOATRAND(0, 2 * M_PI);
-       lissie->dtx = FLOATRAND(MINDT, MAXDT);
-       lissie->dty = FLOATRAND(MINDT, MAXDT);
-
-       for (i = 0; i < MAXLISSIELEN; i++)
-               lissie->loc[i].x = lissie->loc[i].y = 0;
-       /* Draw lissie */
-       drawlissie(mi, lissie);
-}
-
-void
-init_lissie(ModeInfo * mi)
-{
-       lissstruct *lp;
-       unsigned char ball;
-
-       if (lisses == NULL) {
-               if ((lisses = (lissstruct *) calloc(MI_NUM_SCREENS(mi),
-                                              sizeof (lissstruct))) == NULL)
-                       return;
-       }
-       lp = &lisses[MI_SCREEN(mi)];
-
-       lp->width = MI_WIN_WIDTH(mi);
-       lp->height = MI_WIN_HEIGHT(mi);
-
-       lp->nlissies = MI_BATCHCOUNT(mi);
-       if (lp->nlissies < -MINLISSIES) {
-               if (lp->lissie) {
-                       (void) free((void *) lp->lissie);
-                       lp->lissie = NULL;
-               }
-               lp->nlissies = NRAND(-lp->nlissies - MINLISSIES + 1) + MINLISSIES;
-       } else if (lp->nlissies < MINLISSIES)
-               lp->nlissies = MINLISSIES;
-
-       lp->loopcount = 0;
-
-       if (!lp->lissie)
-               lp->lissie = (lissiestruct *) calloc(lp->nlissies, sizeof (lissiestruct));
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-       for (ball = 0; ball < (unsigned char) lp->nlissies; ball++)
-               initlissie(mi, &lp->lissie[ball]);
-
-}
-
-void
-draw_lissie(ModeInfo * mi)
-{
-       lissstruct *lp = &lisses[MI_SCREEN(mi)];
-       register unsigned char ball;
-
-       if (++lp->loopcount > MI_CYCLES(mi))
-               init_lissie(mi);
-       else
-               for (ball = 0; ball < (unsigned char) lp->nlissies; ball++)
-                       drawlissie(mi, &lp->lissie[ball]);
-}
-
-void
-release_lissie(ModeInfo * mi)
-{
-       if (lisses != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       lissstruct *lp = &lisses[screen];
-
-                       if (lp->lissie) {
-                               (void) free((void *) lp->lissie);
-                               lp->lissie = NULL;
-                       }
-               }
-               (void) free((void *) lisses);
-               lisses = NULL;
-       }
-}
-
-void
-refresh_lissie(ModeInfo * mi)
-{
-       if (lisses != NULL) {
-               lissstruct *lp = &lisses[MI_SCREEN(mi)];
-               int         i;
-
-               for (i = 0; i < lp->nlissies; i++) {
-                       lp->lissie[i].redrawing = 1;
-                       lp->lissie[i].redrawpos = 0;
-               }
-       }
-}
diff --git a/hacks/lmorph.c b/hacks/lmorph.c
deleted file mode 100644 (file)
index 11099d2..0000000
+++ /dev/null
@@ -1,513 +0,0 @@
-
-/**************************************************************************
- *
- *  FILE            lmorph.c
- *  MODULE OF       xscreensaver
- *
- *  DESCRIPTION     Bilinear interpolation for morphing line shapes.
- *
- *  WRITTEN BY      Sverre H. Huseby                Glenn T. Lines
- *                  Kurvn. 30                       Ã˜stgaardsgt. 5
- *                  N-0495 Oslo                     N-0474 Oslo
- *                  Norway                          Norway
- *
- *                  Phone:  +47 901 63 579          Phone:  +47 22 04 67 28
- *                  E-mail: sverrehu@online.no      E-mail: gtl@si.sintef.no
- *                  URL:    http://home.sol.no/~sverrehu/
- *
- *                  The original idea, and the bilinear interpolation
- *                  mathematics used, emerged in the head of the wise
- *                  Glenn T. Lines.
- *
- *  MODIFICATIONS   june 1998 (shh)
- *                    * Minor code cleanup.
- *
- *                  march 1997 (shh)
- *                    * Added -mailfile option to allow checking for
- *                      new mail while the screensaver is active.
- *
- *                  january 1997 (shh)
- *                    * Some code reformatting.
- *                    * Added possibility to use float arithmetic.
- *                    * Added -figtype option.
- *                    * Made color blue default.
- *
- *                  december 1995 (jwz)
- *                    * Function headers converted from ANSI to K&R.
- *                    * Added posibility for random number of steps, and
- *                      made this the default.
- *
- *                  march 1995 (shh)
- *                    * Converted from an MS-Windows program to X Window.
- *
- **************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include "screenhack.h"
-
-/**************************************************************************
- *                                                                        *
- *                       P R I V A T E    D A T A                         *
- *                                                                        *
- **************************************************************************/
-
-/* define MARGINS to make some space around the figure. */
-#define MARGINS
-
-/* define USE_FLOAT to avoid using integer calculations in
-   createPoints. integer calculation is supposed to be faster, but it
-   won't work for displays larger than 2048x2048 or so pixels. */
-#undef USE_FLOAT
-
-#define MAXFIGS    20
-#define TWO_PI     (2.0 * M_PI)
-#define RND(x)     (random() % (x))
-
-#define FT_OPEN    1
-#define FT_CLOSED  2
-#define FT_ALL     (FT_OPEN | FT_CLOSED)
-
-static int
-    numFigs = 0,                /* number of figure arrays. */
-    numPoints,                  /* number of points in each array. */
-    nWork,                      /* current work array number. */
-    nFrom,                      /* current from array number. */
-    nTo,                        /* current to array number. */
-    figType;
-static long delay;              /* usecs to wait between updates. */
-static XPoint
-    *aWork[2],                  /* working arrays. */
-    *a[MAXFIGS],                /* the figure arrays. */
-    *aTmp,                      /* used as source when interrupting morph */
-    *aPrev,                     /* previous points displayed. */
-    *aCurr,                     /* the current points displayed. */  
-    *aFrom,                     /* figure converting from. */
-    *aTo;                       /* figure converting to. */
-static int         scrWidth, scrHeight;
-static double      currGamma, maxGamma = 1.0, deltaGamma;
-static GC          gcDraw, gcClear;
-static Display     *dpy;
-static Window      window;
-
-
-
-/**************************************************************************
- *                                                                        *
- *                        P U B L I C    D A T A                          *
- *                                                                        *
- **************************************************************************/
-
-char *progclass = "LMorph";
-
-char *defaults [] = {
-    ".background: black",
-    ".foreground: blue",
-    "*points: 150",
-    "*steps: 0",
-    "*delay: 50000",
-    "*figtype: all",
-    0
-};
-
-XrmOptionDescRec options [] = {
-  { "-points",      ".points",      XrmoptionSepArg, 0 },
-  { "-steps",       ".steps",       XrmoptionSepArg, 0 },
-  { "-delay",       ".delay",       XrmoptionSepArg, 0 },
-  { "-figtype",     ".figtype",     XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-int options_size = (sizeof (options) / sizeof (options[0]));
-
-
-
-/**************************************************************************
- *                                                                        *
- *                   P R I V A T E    F U N C T I O N S                   *
- *                                                                        *
- **************************************************************************/
-
-static void *
-xmalloc(size_t size)
-{
-    void *ret;
-
-    if ((ret = malloc(size)) == NULL) {
-       fprintf(stderr, "lmorph: out of memory\n");
-       exit(1);
-    }
-    return ret;
-}
-
-static void
-initPointArrays(void)
-{
-    int q, w,
-        mx, my,                 /* max screen coordinates. */
-        mp,                     /* max point number. */
-        s, rx, ry,
-        marginx, marginy;
-    double scalex, scaley;
-
-    mx = scrWidth - 1;
-    my = scrHeight - 1;
-    mp = numPoints - 1;
-
-    aWork[0] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-    aWork[1] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-    aTmp     = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-
-    if (figType & FT_CLOSED) {
-       /* rectangle */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       s = numPoints / 4;
-       for (q = 0; q < s; q++) {
-           a[numFigs][q].x = ((double) q / s) * mx;
-           a[numFigs][q].y = 0;
-           a[numFigs][s + q].x = mx;
-           a[numFigs][s + q].y = ((double) q / s) * my;
-           a[numFigs][2 * s + q].x = mx - ((double) q / s) * mx;
-           a[numFigs][2 * s + q].y = my;
-           a[numFigs][3 * s + q].x = 0;
-           a[numFigs][3 * s + q].y = my - ((double) q / s) * my;
-       }
-       for (q = 4 * s; q < numPoints; q++) 
-           a[numFigs][q].x = a[numFigs][q].y = 0;
-       a[numFigs][mp].x = a[numFigs][0].x;
-       a[numFigs][mp].y = a[numFigs][0].y;
-       ++numFigs;
-
-       /*  */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       rx = mx / 2;
-       ry = my / 2;
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = mx / 2 + rx * sin(1 * TWO_PI * (double) q / mp);
-           a[numFigs][q].y = my / 2 + ry * cos(3 * TWO_PI * (double) q / mp);
-       }
-       a[numFigs][mp].x = a[numFigs][0].x;
-       a[numFigs][mp].y = a[numFigs][0].y;
-       ++numFigs;
-
-       /*  */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       rx = mx / 2;
-       ry = my / 2;
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = mx / 2 + ry * sin(3 * TWO_PI * (double) q / mp);
-           a[numFigs][q].y = my / 2 + ry * cos(1 * TWO_PI * (double) q / mp);
-       }
-       a[numFigs][mp].x = a[numFigs][0].x;
-       a[numFigs][mp].y = a[numFigs][0].y;
-       ++numFigs;
-
-       /*  */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       rx = mx / 2;
-       ry = my / 2;
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = mx / 2 + ry 
-               * (0.8 - 0.2 * sin(30 * TWO_PI * q / mp))
-               * sin(TWO_PI * (double) q / mp);
-           a[numFigs][q].y = my / 2 + ry
-               * (0.8 - 0.2 * sin(30 * TWO_PI * q / mp))
-               * cos(TWO_PI * (double) q / mp);
-       }
-       a[numFigs][mp].x = a[numFigs][0].x;
-       a[numFigs][mp].y = a[numFigs][0].y;
-       ++numFigs;
-
-       /*  */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       rx = mx / 2;
-       ry = my / 2;
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = mx / 2 + ry * sin(TWO_PI * (double) q / mp);
-           a[numFigs][q].y = my / 2 + ry * cos(TWO_PI * (double) q / mp);
-       }
-       a[numFigs][mp].x = a[numFigs][0].x;
-       a[numFigs][mp].y = a[numFigs][0].y;
-       ++numFigs;
-
-       /*  */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       rx = mx / 2;
-       ry = my / 2;
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = mx / 2 + rx * cos(TWO_PI * (double) q / mp);
-           a[numFigs][q].y = my / 2 + ry * sin(TWO_PI * (double) q / mp);
-       }
-       a[numFigs][mp].x = a[numFigs][0].x;
-       a[numFigs][mp].y = a[numFigs][0].y;
-       ++numFigs;
-
-       /*  */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       rx = mx / 2;
-       ry = my / 2;
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = mx / 2 + rx * sin(2 * TWO_PI * (double) q / mp);
-           a[numFigs][q].y = my / 2 + ry * cos(3 * TWO_PI * (double) q / mp);
-       }
-       a[numFigs][mp].x = a[numFigs][0].x;
-       a[numFigs][mp].y = a[numFigs][0].y;
-       ++numFigs;
-    }
-
-    if (figType & FT_OPEN) {
-       /* sine wave, one period */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = ((double) q / numPoints) * mx;
-           a[numFigs][q].y = (1.0 - sin(((double) q / mp) * TWO_PI))
-               * my / 2.0;
-       }
-       ++numFigs;
-
-       /*  */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = ((double) q / mp) * mx;
-           a[numFigs][q].y = (1.0 - cos(((double) q / mp) * 3 * TWO_PI))
-               * my / 2.0;
-       }
-       ++numFigs;
-
-       /* spiral, one endpoint at bottom */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       rx = mx / 2;
-       ry = my / 2;
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = mx / 2 + ry * sin(5 * TWO_PI * (double) q / mp)
-               * ((double) q / mp);
-           a[numFigs][q].y = my / 2 + ry * cos(5 * TWO_PI * (double) q / mp)
-               * ((double) q / mp);
-       }
-       ++numFigs;
-
-       /* spiral, one endpoint at top */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       rx = mx / 2;
-       ry = my / 2;
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = mx / 2 + ry * sin(6 * TWO_PI * (double) q / mp)
-               * ((double) q / mp);
-           a[numFigs][q].y = my / 2 - ry * cos(6 * TWO_PI * (double) q / mp)
-               * ((double) q / mp);
-       }
-       ++numFigs;
-
-       /*  */
-       a[numFigs] = (XPoint *) xmalloc(numPoints * sizeof(XPoint));
-       for (q = 0; q < numPoints; q++) {
-           a[numFigs][q].x = ((double) q / mp) * mx;
-           a[numFigs][q].y = (1.0 - sin(((double) q / mp) * 5 * TWO_PI))
-               * my / 2.0;
-       }
-       ++numFigs;
-    }
-
-#ifdef MARGINS
-    /* make some space around the figures.  */
-    marginx = (mx + 1) / 10;
-    marginy = (my + 1) / 10;
-    scalex = (double) ((mx + 1) - 2.0 * marginx) / (mx + 1.0);
-    scaley = (double) ((my + 1) - 2.0 * marginy) / (my + 1.0);
-    for (q = 0; q < numFigs; q++)
-       for (w = 0; w < numPoints; w++) {
-           a[q][w].x = marginx + a[q][w].x * scalex;
-           a[q][w].y = marginy + a[q][w].y * scaley;
-       }
-#endif
-}
-
-static void
-initLMorph(void)
-{
-    int               steps;
-    XGCValues         gcv;
-    XWindowAttributes wa;
-    Colormap          cmap;
-    char              *ft;
-    
-    numPoints = get_integer_resource("points", "Integer");
-    steps = get_integer_resource("steps", "Integer");
-    delay = get_integer_resource("delay", "Integer");
-    ft = get_string_resource("figtype", "String");
-
-    if (strcmp(ft, "all") == 0)
-       figType = FT_ALL;
-    else if (strcmp(ft, "open") == 0)
-       figType = FT_OPEN;
-    else if (strcmp(ft, "closed") == 0)
-       figType = FT_CLOSED;
-    else {
-       fprintf(stderr, "figtype should be `all', `open' or `closed'.\n");
-       figType = FT_ALL;
-    }
-
-    if (steps <= 0)
-      steps = (random() % 400) + 100;
-
-    deltaGamma = 1.0 / steps;
-    XGetWindowAttributes(dpy, window, &wa);
-    scrWidth = wa.width;
-    scrHeight = wa.height;
-    cmap = wa.colormap;
-    gcv.foreground = get_pixel_resource("foreground", "Foreground", dpy, cmap);
-    gcDraw = XCreateGC(dpy, window, GCForeground, &gcv);
-    XSetForeground(dpy, gcDraw, gcv.foreground);
-    gcv.foreground = get_pixel_resource("background", "Background", dpy, cmap);
-    gcClear = XCreateGC(dpy, window, GCForeground, &gcv);
-    XClearWindow(dpy, window);
-
-    srandom(time(NULL));
-    initPointArrays();
-    aCurr = aWork[nWork = 0];
-    aPrev = NULL;
-    currGamma = maxGamma + 1.0;  /* force creation of new figure at startup */
-    nTo = RND(numFigs);
-
-    { /* jwz for version 2.11 */
-      int width = random() % 10;
-      int style = LineSolid;
-      int cap   = (width > 1 ? CapRound  : CapButt);
-      int join  = (width > 1 ? JoinRound : JoinBevel);
-      if (width == 1) width = 0;
-      XSetLineAttributes(dpy, gcDraw,  width, style, cap, join);
-      XSetLineAttributes(dpy, gcClear, width, style, cap, join);
-    }
-}
-
-/* 55% of execution time */
-static void
-createPoints(void)
-{
-    int             q;
-    XPoint *pa = aCurr, *pa1 = aFrom, *pa2 = aTo;
-#ifdef USE_FLOAT
-    float           fg, f1g;
-#else
-    long            lg, l1g;
-#endif
-
-#ifdef USE_FLOAT
-    fg  = currGamma;
-    f1g = 1.0 - currGamma;
-#else
-    lg  = 8192L * currGamma;
-    l1g = 8192L * (1.0 - currGamma);
-#endif
-    for (q = numPoints; q; q--) {
-#ifdef USE_FLOAT
-        pa->x = (short) (f1g * pa1->x + fg * pa2->x);
-        pa->y = (short) (f1g * pa1->y + fg * pa2->y);
-#else
-        pa->x = (short) ((l1g * pa1->x + lg * pa2->x) / 8192L);
-        pa->y = (short) ((l1g * pa1->y + lg * pa2->y) / 8192L);
-#endif
-        ++pa;
-        ++pa1;
-        ++pa2;
-    }
-}
-
-/* 36% of execution time */
-static void
-drawImage(void)
-{
-    int             q;
-    XPoint *old0, *old1, *new0, *new1;
-
-    /* Problem: update the window without too much flickering. I do
-     * this by handling each linesegment separately. First remove a
-     * line, then draw the new line. The problem is that this leaves
-     * small black pixels on the figure. To fix this, I draw the
-     * entire figure using XDrawLines() afterwards. */
-    if (aPrev) {
-       old0 = aPrev;
-       old1 = aPrev + 1;
-       new0 = aCurr;
-       new1 = aCurr + 1;
-       for (q = numPoints - 1; q; q--) {
-           XDrawLine(dpy, window, gcClear,
-                     old0->x, old0->y, old1->x, old1->y);
-           XDrawLine(dpy, window, gcDraw,
-                     new0->x, new0->y, new1->x, new1->y);
-           ++old0;
-           ++old1;
-           ++new0;
-           ++new1;
-       }
-    }
-    XDrawLines(dpy, window, gcDraw, aCurr, numPoints, CoordModeOrigin);
-
-    XFlush(dpy);
-}
-
-/* neglectible % of execution time */
-static void
-animateLMorph(void)
-{
-    if (currGamma > maxGamma) {
-        currGamma = 0.0;
-        if (maxGamma == 1.0) {
-            nFrom = nTo;
-            aFrom = a[nFrom];
-        } else {
-            memcpy(aTmp, aCurr, numPoints * sizeof(XPoint));
-            aFrom = aTmp;
-            nFrom = -1;
-        }
-        do {
-            nTo = RND(numFigs);
-        } while (nTo == nFrom);
-        aTo = a[nTo];
-        if (RND(2)) {
-            /* reverse the array to get more variation. */
-            int    i1, i2;
-            XPoint p;
-            
-            for (i1 = 0, i2 = numPoints - 1; i1 < numPoints / 2; i1++, i2--) {
-                p = aTo[i1];
-                aTo[i1] = aTo[i2];
-                aTo[i2] = p;
-            }
-        }
-        /* occationally interrupt the next run. */
-        if (RND(4) == 0)
-            maxGamma = 0.1 + 0.7 * (RND(1001) / 1000.0); /* partial run */
-        else
-            maxGamma = 1.0;                              /* full run */
-    }
-
-    createPoints();
-    drawImage();
-    aPrev = aCurr;
-    aCurr = aWork[nWork ^= 1];
-
-    currGamma += deltaGamma;
-}
-
-
-
-/**************************************************************************
- *                                                                        *
- *                    P U B L I C    F U N C T I O N S                    *
- *                                                                        *
- **************************************************************************/
-
-void
-screenhack(Display *disp, Window win)
-{
-    dpy = disp;
-    window = win;
-    initLMorph();
-    for (;;) {
-       animateLMorph();
-        screenhack_handle_events (dpy);
-       usleep(delay);
-    }
-}
diff --git a/hacks/lmorph.man b/hacks/lmorph.man
deleted file mode 100644 (file)
index 50cf8d2..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH LMORPH 1 "xscreensaver hack"
-.SH NAME
-lmorph \- morphing lines
-.SH SYNOPSIS
-.B lmorph
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-points \fIint\fP] [\-steps \fIint\fP] [\-delay \fIusecs\fP] [\-figtype \fItype\fP]
-.SH DESCRIPTION
-The \fIlmorph\fP program morphs between simple linedrawings using bilinear
-interpolation.
-.SH OPTIONS
-.I lmorph
-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 \-points \fIinteger\fP
-Number of points in each line drawing. Default is 150 points.
-.TP 8
-.B \-steps \fIinteger\fP
-Interpolation steps from one drawing to the next. Default is 0, which
-means a random number between 100 and 500.
-.TP 8
-.B \-delay \fImicroseconds\fP
-How much of a delay should be introduced between steps of the animation.
-Default 50000.
-.TP 8
-.B \-figtype \fItype\fP
-Limit the figures to only open or closed figures. Possible types are
-"all" (default), "open" and "closed".
-.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 AUTHOR
-Sverre H. Huseby <sverrehu@online.no> and Glenn T. Lines <gtl@si.sintef.no>,
-built on top of the screen saver routines by Jamie Zawinski <jwz@jwz.org>.
diff --git a/hacks/loop.c b/hacks/loop.c
deleted file mode 100644 (file)
index c7280ea..0000000
+++ /dev/null
@@ -1,1430 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* loop --- Chris Langton's self-producing loops */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)loop.c       4.13 98/10/18 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1996 by David Bagley.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 18-Oct-98: Started creating a hexagon version, probably will not work
- *            for a while since some work has to go into getting not
- *            only the program to handle the hexagonal data but the loop
- *            has to be "programmed" as well.  I suspect it should be easier
- *            than the original since the loop will have six sides to
- *            store its genes (data).
- * 10-May-97: Compatible with xscreensaver
- * 15-Nov-95: Coded from Chris Langton's Self-Reproduction in Cellular
- *            Automata Physica 10D 135-144 1984
- *            also used wire.c as a guide.
- */
-
-/*-
-  Grid     Number of Neigbors
-  ----     ------------------
-  Square   4
-  Hexagon  6  (currently in development)
-*/
-
-/*-
- * From Steven Levy's Artificial Life
- * Chris Langton's cellular automata "loops" reproduce in the spirit of life.
- * Beginning from a single organism, the loops from a colony.  As the loops
- * on the outer fringes reproduce, the inner loops -- blocked by their
- * daughters -- can no longer produce offspring.  These dead progenitors
- * provide a base for future generations' expansion, much like the formation
- * of a coral reef.  This self-organizing behavior emerges spontaneously,
- * from the bottom up -- a key characteristic of artificial life.
- */
-
-/*-
-   Don't Panic  --  When the artificial life tries to leave its petri
-   dish (ie. the screen) it will (usually) die...
-   The loops are short of "real" life because a general purpose Turing
-   machine is not contained in the loop.  This is a simplification of
-   von Neumann and Codd's self-producing Turing machine.
-   The data spinning around could be viewed as both its DNA and its internal
-   clock.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS "loop"
-# define HACK_INIT init_loop
-# define HACK_DRAW draw_loop
-# define loop_opts xlockmore_opts
-# define DEFAULTS      "*delay:  100000 \n" \
-                                       "*cycles:   1600 \n" \
-                                       "*size:      -12 \n" \
-                                       "*ncolors:    15 \n" \
-                                       "*neighbors:   0 \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                /* in xscreensaver distribution */
-#else /* STANDALONE */
-# include "xlock.h"            /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-#include "automata.h"
-
-/*-
- * neighbors of 0 randomizes between 4 and 6.
- */
-#ifdef STANDALONE
-static int neighbors;
-#else
-extern int  neighbors;
-#endif /* !STANDALONE */
-
-ModeSpecOpt loop_opts =
-{0, NULL, 0, NULL, NULL};
-
-#ifdef USE_MODULES
-ModStruct   loop_description =
-{"loop", "init_loop", "draw_loop", "release_loop",
- "refresh_loop", "init_loop", NULL, &loop_opts,
- 100000, 1, 1600, -12, 64, 1.0, "",
- "Shows Langton's self-producing loops", 0, NULL};
-
-#endif
-
-#define LOOPBITS(n,w,h)\
-  lp->pixmaps[lp->init_bits++]=\
-  XCreatePixmapFromBitmapData(display,window,(char *)n,w,h,1,0,1)
-
-static int  local_neighbors = 0;
-static int  neighbor_kind = 0;
-
-#define COLORS 8
-#define REALCOLORS (COLORS-2)
-#define MINLOOPS 1
-#define REDRAWSTEP 2000                /* How many cells to draw per cycle */
-#define ADAM_SIZE 8 /* MIN 5 */
-#if 1
-# define ADAM_LOOPX  (ADAM_SIZE+2)
-# define ADAM_LOOPY  (ADAM_SIZE+2)
-#else
-# define ADAM_LOOPX 16
-# define ADAM_LOOPY 10
-#endif
-#define MINGRIDSIZE (3*ADAM_LOOPX)
-/* TRIA stuff was an attempt to make a triangular lifeform on a
-   hex grid but I got bored.  You probably need an additional 7th
-   state for a coherent step by step process of separation and
-   initial stem development.
- */
-/* #define TRIA 1 */
-#ifdef TRIA
-# define HEX_ADAM_SIZE 3 /* MIN 3 */
-#else
-# define HEX_ADAM_SIZE 5 /* MIN 3 */
-#endif
-#if 1
-# define HEX_ADAM_LOOPX (2*HEX_ADAM_SIZE+1)
-# define HEX_ADAM_LOOPY (2*HEX_ADAM_SIZE+1)
-#else
-# define HEX_ADAM_LOOPX 3 
-# define HEX_ADAM_LOOPY 7
-#endif
-#define HEX_MINGRIDSIZE (6*HEX_ADAM_LOOPX)
-#define MINSIZE 5                        /* jwz -- really tiny cells don't look good */
-#define NEIGHBORKINDS 2
-#define ANGLES 360
-#define MAXNEIGHBORS 6
-
-/* Singly linked list */
-typedef struct _CellList {
-       XPoint      pt;
-       struct _CellList *next;
-} CellList;
-
-typedef struct {
-       int         init_bits;
-       int         generation;
-       int         xs, ys;
-       int         xb, yb;
-       int         nrows, ncols;
-       int         bx, by, bnrows, bncols;
-       int         mincol, minrow, maxcol, maxrow;
-       int         width, height;
-       int         redrawing, redrawpos;
-       unsigned char *newcells, *oldcells;
-       int         ncells[COLORS];
-       CellList   *cellList[COLORS];
-       unsigned long colors[COLORS];
-       GC          stippledGC;
-       Pixmap      pixmaps[COLORS];
-       union {
-               XPoint      hexagon[6];
-       } shape;
-} loopstruct;
-
-static loopstruct *loops = NULL;
-
-#define TRANSITION(TT,V) V=TT&7;TT>>=3
-#define TABLE(R,T,L,B) (table[((B)<<9)|((L)<<6)|((T)<<3)|(R)])
-#define HEX_TABLE(R,T,t,l,b,B) (table[((B)<<15)|((b)<<12)|((l)<<9)|((t)<<6)|((T)<<3)|(R)])
-#ifdef RAND_RULES              /* Hack, see below */
-#define TABLE_IN(C,R,T,L,B,I) (TABLE(R,T,L,B)&=~(7<<((C)*3)));\
-(TABLE(R,T,L,B)|=((I)<<((C)*3)))
-#define HEX_TABLE_IN(C,R,T,t,l,b,B,I) (HEX_TABLE(R,T,t,l,b,B)&=~(7<<((C)*3)));\
-(HEX_TABLE(R,T,t,l,b,B)|=((I)<<((C)*3)))
-#else
-#define TABLE_IN(C,R,T,L,B,I) (TABLE(R,T,L,B)|=((I)<<((C)*3)))
-#define HEX_TABLE_IN(C,R,T,t,l,b,B,I) (HEX_TABLE(R,T,t,l,b,B)|=((I)<<((C)*3)))
-#endif
-#define TABLE_OUT(C,R,T,L,B) ((TABLE(R,T,L,B)>>((C)*3))&7)
-#define HEX_TABLE_OUT(C,R,T,t,l,b,B) ((HEX_TABLE(R,T,t,l,b,B)>>((C)*3))&7)
-
-static unsigned int *table = NULL;     /* 8*8*8*8 = 2^12 = 2^3^4 = 4K */
-  /* 8*8*8*8*8*8 = too big? */
-
-static char plots[NEIGHBORKINDS] =
-{
-  4, 6 /* Neighborhoods */
-};
-
-static unsigned int transition_table[] =
-{                              /* Octal  CBLTR->I */
-  /* CBLTRI   CBLTRI   CBLTRI   CBLTRI   CBLTRI */
-    0000000, 0025271, 0113221, 0202422, 0301021,
-    0000012, 0100011, 0122244, 0202452, 0301220,
-    0000020, 0100061, 0122277, 0202520, 0302511,
-    0000030, 0100077, 0122434, 0202552, 0401120,
-    0000050, 0100111, 0122547, 0202622, 0401220,
-    0000063, 0100121, 0123244, 0202722, 0401250,
-    0000071, 0100211, 0123277, 0203122, 0402120,
-    0000112, 0100244, 0124255, 0203216, 0402221,
-    0000122, 0100277, 0124267, 0203226, 0402326,
-    0000132, 0100511, 0125275, 0203422, 0402520,
-    0000212, 0101011, 0200012, 0204222, 0403221,
-    0000220, 0101111, 0200022, 0205122, 0500022,
-    0000230, 0101244, 0200042, 0205212, 0500215,
-    0000262, 0101277, 0200071, 0205222, 0500225,
-    0000272, 0102026, 0200122, 0205521, 0500232,
-    0000320, 0102121, 0200152, 0205725, 0500272,
-    0000525, 0102211, 0200212, 0206222, 0500520,
-    0000622, 0102244, 0200222, 0206722, 0502022,
-    0000722, 0102263, 0200232, 0207122, 0502122,
-    0001022, 0102277, 0200242, 0207222, 0502152,
-    0001120, 0102327, 0200250, 0207422, 0502220,
-    0002020, 0102424, 0200262, 0207722, 0502244,
-    0002030, 0102626, 0200272, 0211222, 0502722,
-    0002050, 0102644, 0200326, 0211261, 0512122,
-    0002125, 0102677, 0200423, 0212222, 0512220,
-    0002220, 0102710, 0200517, 0212242, 0512422,
-    0002322, 0102727, 0200522, 0212262, 0512722,
-    0005222, 0105427, 0200575, 0212272, 0600011,
-    0012321, 0111121, 0200722, 0214222, 0600021,
-    0012421, 0111221, 0201022, 0215222, 0602120,
-    0012525, 0111244, 0201122, 0216222, 0612125,
-    0012621, 0111251, 0201222, 0217222, 0612131,
-    0012721, 0111261, 0201422, 0222272, 0612225,
-    0012751, 0111277, 0201722, 0222442, 0700077,
-    0014221, 0111522, 0202022, 0222462, 0701120,
-    0014321, 0112121, 0202032, 0222762, 0701220,
-    0014421, 0112221, 0202052, 0222772, 0701250,
-    0014721, 0112244, 0202073, 0300013, 0702120,
-    0016251, 0112251, 0202122, 0300022, 0702221,
-    0017221, 0112277, 0202152, 0300041, 0702251,
-    0017255, 0112321, 0202212, 0300076, 0702321,
-    0017521, 0112424, 0202222, 0300123, 0702525,
-    0017621, 0112621, 0202272, 0300421, 0702720,
-    0017721, 0112727, 0202321, 0300622
-};
-
-static unsigned int hex_transition_table[] =
-{                              /* Octal CBbltTR->I */
-  /* CBbltTRI   CBbltTRI   CBbltTRI   CBbltTRI   CBbltTRI */
-
-#ifdef TRIA
-    000000000, 000000020, 000000220, 000002220, 000022220,
-    011122121, 011121221, 011122221, 011221221,
-    011222221, 011112121, 011112221,
-    020021122, 020002122, 020211222, 021111222,
-    020221122, 020027122, 020020722, 020021022,
-    001127221,
-    011122727, 011227227, 010122121, 010222211,
-    021117222, 020112272,
-    070221220,
-    001227221,
-    010221121, 011721221, 011222277,
-    020111222, 020221172,
-    070211220,
-    001217221,
-    010212277, 010221221,
-    020122112,
-    070122220,
-    001722221,
-    010221271,
-    020002022, 021122172,
-    070121220,
-    011122277, 011172121,
-    010212177, 011212277,
-    070112220,
-    001772221,
-    021221772,
-    070121270, 070721220,
-    000112721, 000272211,
-    010022211, 012222277,
-    020072272, 020227122, 020217222,
-    010211121,
-    020002727,
-    070222220,
-    001727721,
-    020021072, 020070722,
-    070002072, 070007022,
-    001772721,
-    070002022,
-    000000070, 000000770, 000072220, 000000270,
-    020110222, 020220272, 020220722,
-    070007071, 070002072, 070007022,
-    000000012, 000000122, 000000212, 001277721,
-    020122072, 020202212,
-    010002121,
-    020001122, 020002112,
-    020021722,
-    020122022, 020027022, 020070122, 020020122,
-    010227027,
-    020101222,
-    010227227, 010227277,
-    021722172,
-    001727221,
-    010222277,
-    020702272,
-    070122020,
-    000172721,
-    010022277, 010202177, 010227127,
-
-    001214221,
-    010202244,
-    020024122, 020020422,
-    040122220,
-    001422221,
-    010221241, 010224224,
-    021122142,
-    040121220,
-    001124221,
-    010224274,
-    020112242, 021422172,
-    040221220,
-    001224221, 001427221,
-    010222244,
-    020227042,
-    040122020,
-    000142721,
-    010022244, 010202144, 010224124,
-    040112220,
-    001442221,
-    021221442,
-    040121240, 040421220,
-    000242211, 000112421,
-    020042242, 020214222, 020021422, 020220242, 020024022,
-    011224224,
-    020224122,
-    020220422,
-    012222244,
-    020002424,
-    040222220,
-    001244421, 000000420, 000000440, 000000240, 000000040,
-    020040121, 020021042,
-    040004022, 040004042, 040002042,
-    010021121,
-    020011122, 020002112,
-    001424421,
-    020040422,
-    001442421,
-    040002022,
-    001724221,
-    010227247,
-    020224072, 021417222,
-    000172421,
-    010021721,
-    020017022,
-    020120212,
-    020271727,
-    070207072, 070701220,
-    000001222,
-    020110122,
-    001277221,
-    001777721,
-    020021222, 020202272, 020120222, 020221722,
-    020027227,
-    070070222,
-    000007220,
-    020101272, 020272172, 020721422, 020721722,
-    020011222, 020202242,
-#if 0
-              {2,2,0,0,2,7,0},
-             {2,0,2,0,2,0,2},
-            {2,4,1,2,2,1,2},
-           {2,1,2,1,2,1,2},
-          {2,0,2,2,1,1,2},
-         {2,7,1,1,1,1,2},
-        {0,2,2,2,2,2,2},
-              {2,2,0,0,7,7,0},
-             {2,1,2,0,2,0,7},
-            {2,0,1,2,2,1,2},
-           {2,4,2,1,2,1,2},
-          {2,1,2,2,1,1,2},
-         {2,0,7,1,1,1,2},
-        {0,2,2,2,2,2,2},
-#endif
-#else
-    000000000, 000000020, 000000220, 000002220,
-    011212121, 011212221, 011221221, 011222221,
-    020002122, 020021122, 020211122,
-
-    010221221, 010222121,
-    020002022, 020021022, 020020122, 020112022,
-
-    010202121,
-    020102022, 020202112,
-
-    000000012, 000000122, 000000212,
-    010002121, 
-    020001122, 020002112, 020011122,
-
-
-    001227221, 001272221, 001272721,
-    012212277, 011222727, 011212727,
-    020021722, 020027122, 020020722, 020027022,
-    020211722, 020202172, 020120272,
-    020271122, 020202172, 020207122, 020217122,
-    020120272, 020210722, 020270722,
-    070212220, 070221220, 070212120,
-
-
-    012222277,
-    020002727,
-    070222220,
-
-    001277721, 000000070, 000000270, 000000720, 000000770,
-    020070122, 020021072,
-    070002072, 070007022, 070007071,
-
-    020070722,
-    070002022,
-
-    010227227, 010222727, 010202727,
-    020172022, 020202712,
-
-    001224221, 001242221, 001242421,
-    012212244, 011222424, 011212424,
-    020021422, 020024122, 020020422, 020024022,
-    020211422, 020202142, 020120242,
-    020241122, 020202142, 020204122, 020214122,
-    020120242, 020210422, 020240422,
-    040212220, 040221220, 040212120,
-
-
-    012222244,
-    020002424,
-    040222220,
-
-    001244421, 000000040, 000000240, 000000420, 000000440,
-    020040122, 020021042,
-    040002042,
-    040004021, 040004042,
-
-    020040422,
-    040002022,
-    
-    010224224, 010222424, 010202424,
-    020142022, 020202412,
-    020011722, 020112072, 020172072, 020142072,
-
-
-
-    000210225, 000022015, 000022522,
-    011225521, 
-    020120525, 020020152, 020005122, 020214255, 020021152,
-    020255242,
-    050215222, 050225121,
-
-    000225220, 001254222,
-    010221250, 011221251, 011225221,
-    020025122, 020152152, 020211252, 020214522, 020511125,
-    050212241, 05221120,
-    040521225,
-
-    000000250, 000000520, 000150220, 000220520, 000222210,
-    001224251,
-    010022152, 010251221, 010522121, 011212151, 011221251,
-    011215221,
-    020000220, 020002152, 020020220, 020021020, 020022152,
-    020021422, 020022152, 020022522, 020025425, 020050422,
-    020051022, 020051122, 020211122, 020211222, 020215222,
-    020245122,
-    050021125, 050021025, 050011125, 051242221,
-    041225220,
-
-    000220250, 000220520, 001227521, 001275221,
-    011257227, 011522727,
-    020002052, 020002752, 020021052, 020057125,
-    050020722, 050027125,
-    070215220,
-
-    070212255,
-    071225220,
-    020275122,
-    051272521,
-    020055725,
-    020021552,
-    012252277,
-    050002521,
-    020005725,     
-
-    050011022,
-    000000155,
-    020050722,
-    001227250,
-    010512727,
-    010002151,
-    020027112,
-    001227251,
-    012227257,
-    050002125,
-    020517122,
-    050002025,
-    020050102,
-    050002725,
-    020570722,
-    001252721,
-    020007051,
-    020102052,
-    020271072,
-    050001122,
-    010002151,
-    011227257,
-    020051722,
-    020057022,
-    020050122,
-
-
-    020051422,
-    011224254,
-    012224254,
-
-    020054022,
-    050002425,
-    040252220,
-    020002454,
-
-
-    000000540,
-    001254425,
-    050004024,
-    040004051,
-
-    000000142,
-    040001522,
-    010002547,
-    020045122,
-    051221240,
-    020002512,
-    020021522,
-
-
-    020020022,
-    021125522,
-    020521122,
-    020025022,
-    020025522,
-    020020522, 
-
-    020202222,
-    020212222,
-    021212222,
-    021222722,
-    021222422,
-    020002222,
-    020021222,
-    020022122,
-    020212122,
-    020027222,
-    020024222,
-    020020222,
-    020212722,
-    020212422,
-    020202122,
-    001222221,
-    020002522,
-
-    020017125,
-    010022722,
-    020212052,
-
-    020205052,
-#endif
-};
-
-
-/*-
-Neighborhoods are read as follows (rotations are not listed):
-    T
-  L C R  ==>  I
-    B
-
-   t T
-  l C R  ==>  I
-   b B
- */
-
-static unsigned char self_reproducing_loop[ADAM_LOOPY][ADAM_LOOPX] =
-{
-/* 10x10 */
-       {0, 2, 2, 2, 2, 2, 2, 2, 2, 0},
-       {2, 4, 0, 1, 4, 0, 1, 1, 1, 2},
-       {2, 1, 2, 2, 2, 2, 2, 2, 1, 2},
-       {2, 0, 2, 0, 0, 0, 0, 2, 1, 2},
-       {2, 7, 2, 0, 0, 0, 0, 2, 7, 2},
-       {2, 1, 2, 0, 0, 0, 0, 2, 0, 2},
-       {2, 0, 2, 0, 0, 0, 0, 2, 1, 2},
-       {2, 7, 2, 2, 2, 2, 2, 2, 7, 2},
-       {2, 1, 0, 6, 1, 0, 7, 1, 0, 2},
-       {0, 2, 2, 2, 2, 2, 2, 2, 2, 0}
-};
-
-static unsigned char hex_self_reproducing_loop[HEX_ADAM_LOOPY][HEX_ADAM_LOOPX] =
-{
-#if 0
-/* Experimental TRIA5:7x7 */
-             {2,2,0,0,0,0,0},
-            {2,1,2,0,2,2,0},
-           {2,0,4,2,2,0,2},
-          {2,7,2,0,2,0,2},
-         {2,1,2,2,1,1,2},
-        {2,0,7,1,0,7,2},
-       {0,2,2,2,2,2,2},
-  /* Stem cells, only "5" will fully reproduce itself */
-/* 3:12x7 */
-             {2,2,2,2,0,0,0,0,0,0,0,0},
-            {2,1,1,1,2,0,0,0,0,0,0,0},
-           {2,1,2,2,1,2,2,2,2,2,2,0},
-          {2,1,2,0,2,7,1,1,1,1,1,2},
-         {0,2,1,2,2,0,2,2,2,2,2,2},
-        {0,0,2,0,4,1,2,0,0,0,0,0},
-       {0,0,0,2,2,2,2,0,0,0,0,0}
-/* 4:14x9 */
-               {2,2,2,2,2,0,0,0,0,0,0,0,0,0},
-              {2,1,1,1,1,2,0,0,0,0,0,0,0,0},
-             {2,1,2,2,2,1,2,0,0,0,0,0,0,0},
-            {2,1,2,0,0,2,1,2,2,2,2,2,2,0},
-           {2,1,2,0,0,0,2,7,1,1,1,1,1,2},
-          {0,2,1,2,0,0,2,0,2,2,2,2,2,2},
-         {0,0,2,0,2,2,2,1,2,0,0,0,0,0},
-        {0,0,0,2,4,1,0,7,2,0,0,0,0,0},
-       {0,0,0,0,2,2,2,2,2,0,0,0,0,0}
-/* 5:16x11 */
-                 {2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0},
-                {2,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0},
-               {2,1,2,2,2,2,1,2,0,0,0,0,0,0,0,0},
-              {2,1,2,0,0,0,2,1,2,0,0,0,0,0,0,0},
-             {2,1,2,0,0,0,0,2,1,2,2,2,2,2,2,0},
-            {2,1,2,0,0,0,0,0,2,7,1,1,1,1,1,2},
-           {0,2,1,2,0,0,0,0,2,0,2,2,2,2,2,2},
-          {0,0,2,0,2,0,0,0,2,1,2,0,0,0,0,0},
-         {0,0,0,2,4,2,2,2,2,7,2,0,0,0,0,0},
-        {0,0,0,0,2,1,0,7,1,0,2,0,0,0,0,0},
-       {0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0}
-/* test:3x7  (0,4) is blank  ... very strange.
-          init_adam seems ok something after that I guess */
-                    {2,2,0},
-                   {2,0,2},
-                  {0,2,2},
-                 {0,0,0},
-                {2,2,0},
-               {2,1,2},
-              {0,2,2},
-#else /* this might be better for hexagons, spacewise efficient... */
-#ifdef TRIA
-/* Experimental TRIA5:7x7 */
-             {2,2,0,0,2,2,0},
-            {2,4,2,0,2,7,2},
-           {2,1,0,2,2,0,2},
-          {2,0,2,1,2,1,2},
-         {2,7,2,2,7,7,2},
-        {2,1,0,7,1,0,2},
-       {0,2,2,2,2,2,2},
-#else
-/* 5:11x11 */
-                 {2,2,2,2,2,2,0,0,0,0,0},
-                {2,1,1,7,0,1,2,0,0,0,0},
-               {2,1,2,2,2,2,7,2,0,0,0},
-              {2,1,2,0,0,0,2,0,2,0,0},
-             {2,1,2,0,0,0,0,2,1,2,0},
-            {2,1,2,0,0,0,0,0,2,7,2},
-           {0,2,1,2,0,0,0,0,2,0,2},
-          {0,0,2,1,2,0,0,0,2,1,2},
-         {0,0,0,2,1,2,2,2,2,4,2},
-        {0,0,0,0,2,1,1,1,1,5,2},
-       {0,0,0,0,0,2,2,2,2,2,2}
-#endif
-#endif
-};
-
-static void
-position_of_neighbor(int dir, int *pcol, int *prow)
-{
-       int         col = *pcol, row = *prow;
-
-       /* NO WRAPING */
-
-       if (local_neighbors == 6) {
-               switch (dir) {
-                       case 0:
-                               col = col + 1;
-                               break;
-                       case 60:
-                               if (row & 1)
-                                       col = col + 1;
-                               row = row - 1;
-                               break;
-                       case 120:
-                               if (!(row & 1))
-                                       col = col - 1;
-                               row = row - 1;
-                               break;
-                       case 180:
-                               col = col - 1;
-                               break;
-                       case 240:
-                               if (!(row & 1))
-                                       col = col - 1;
-                               row = row + 1;
-                               break;
-                       case 300:
-                               if (row & 1)
-                                       col = col + 1;
-                               row = row + 1;
-                               break;
-                       default:
-                               (void) fprintf(stderr, "wrong direction %d\n", dir);
-               }
-       } else {
-               switch (dir) {
-                       case 0:
-                               col = col + 1;
-                               break;
-                       case 90:
-                               row = row - 1;
-                               break;
-                       case 180:
-                               col = col - 1;
-                               break;
-                       case 270:
-                               row = row + 1;
-                               break;
-                       default:
-                               (void) fprintf(stderr, "wrong direction %d\n", dir);
-               }
-       }
-       *pcol = col;
-       *prow = row;
-}
-
-static      Bool
-withinBounds(loopstruct * lp, int col, int row)
-{
-       return (row >= 1 && row < lp->bnrows - 1 &&
-               col >= 1 && col < lp->bncols - 1 - (local_neighbors == 6 && (row % 2)));
-}
-
-static void
-fillcell(ModeInfo * mi, GC gc, int col, int row)
-{
-       loopstruct *lp = &loops[MI_SCREEN(mi)];
-
-       if (local_neighbors == 6) {
-               int         ccol = 2 * col + !(row & 1), crow = 2 * row;
-
-               lp->shape.hexagon[0].x = lp->xb + ccol * lp->xs;
-               lp->shape.hexagon[0].y = lp->yb + crow * lp->ys;
-               if (lp->xs == 1 && lp->ys == 1)
-                       XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                               lp->shape.hexagon[0].x, lp->shape.hexagon[0].y, 1, 1);
-               else
-                       XFillPolygon(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                               lp->shape.hexagon, 6, Convex, CoordModePrevious);
-       } else {
-               XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                       lp->xb + lp->xs * col, lp->yb + lp->ys * row,
-                       lp->xs - (lp->xs > 3), lp->ys - (lp->ys > 3));
-       }
-}
-
-static void
-drawcell(ModeInfo * mi, int col, int row, int state)
-{
-       loopstruct *lp = &loops[MI_SCREEN(mi)];
-       XGCValues   gcv;
-       GC          gc;
-
-       if (MI_NPIXELS(mi) >= COLORS) {
-               gc = MI_GC(mi);
-               XSetForeground(MI_DISPLAY(mi), gc, lp->colors[state]);
-       } else {
-               gcv.stipple = lp->pixmaps[state];
-               gcv.foreground = MI_WHITE_PIXEL(mi);
-               gcv.background = MI_BLACK_PIXEL(mi);
-               XChangeGC(MI_DISPLAY(mi), lp->stippledGC,
-                         GCStipple | GCForeground | GCBackground, &gcv);
-               gc = lp->stippledGC;
-       }
-       fillcell(mi, gc, col, row);
-}
-
-static void
-addtolist(ModeInfo * mi, int col, int row, unsigned char state)
-{
-       loopstruct *lp = &loops[MI_SCREEN(mi)];
-       CellList   *current = lp->cellList[state];
-
-       lp->cellList[state] = NULL;
-       if ((lp->cellList[state] = (CellList *) malloc(sizeof (CellList))) == NULL) {
-               lp->cellList[state] = current;
-               return;
-       }
-       lp->cellList[state]->pt.x = col;
-       lp->cellList[state]->pt.y = row;
-       lp->cellList[state]->next = current;
-       lp->ncells[state]++;
-}
-
-#ifdef DEBUG
-static void
-print_state(ModeInfo * mi, int state)
-{
-       loopstruct *lp = &loops[MI_SCREEN(mi)];
-       CellList   *locallist = lp->cellList[state];
-       int         i = 0;
-
-       (void) printf("state %d\n", state);
-       while (locallist) {
-               (void) printf("%d x %d, y %d\n", i,
-                             locallist->pt.x, locallist->pt.y);
-               locallist = locallist->next;
-               i++;
-       }
-}
-
-#endif
-
-static void
-free_state(loopstruct * lp, int state)
-{
-       CellList   *current;
-
-       while (lp->cellList[state]) {
-               current = lp->cellList[state];
-               lp->cellList[state] = lp->cellList[state]->next;
-               (void) free((void *) current);
-       }
-       lp->ncells[state] = 0;
-}
-
-static void
-draw_state(ModeInfo * mi, int state)
-{
-       loopstruct *lp = &loops[MI_SCREEN(mi)];
-       GC          gc;
-       XGCValues   gcv;
-       CellList   *current = lp->cellList[state];
-
-       if (MI_NPIXELS(mi) >= COLORS) {
-               gc = MI_GC(mi);
-               XSetForeground(MI_DISPLAY(mi), gc, lp->colors[state]);
-       } else {
-               gcv.stipple = lp->pixmaps[state];
-               gcv.foreground = MI_WHITE_PIXEL(mi);
-               gcv.background = MI_BLACK_PIXEL(mi);
-               XChangeGC(MI_DISPLAY(mi), lp->stippledGC,
-                         GCStipple | GCForeground | GCBackground, &gcv);
-               gc = lp->stippledGC;
-       }
-
-       if (local_neighbors == 6) {       /* Draw right away, slow */
-               while (current) {
-                       int      col, row, ccol, crow;
-
-                       col = current->pt.x;
-                       row = current->pt.y;
-                       ccol = 2 * col + !(row & 1), crow = 2 * row;
-                       lp->shape.hexagon[0].x = lp->xb + ccol * lp->xs;
-                       lp->shape.hexagon[0].y = lp->yb + crow * lp->ys;
-                       if (lp->xs == 1 && lp->ys == 1)
-                               XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                                       lp->shape.hexagon[0].x, lp->shape.hexagon[0].y, 1, 1);
-                       else
-                               XFillPolygon(MI_DISPLAY(mi), MI_WINDOW(mi), gc,
-                                       lp->shape.hexagon, 6, Convex, CoordModePrevious);
-                       current = current->next;
-               }
-       } else {
-               /* Take advantage of XFillRectangles */
-               XRectangle *rects = NULL;
-               int         nrects = 0;
-
-               /* Create Rectangle list from part of the cellList */
-               if ((rects = (XRectangle *) malloc(lp->ncells[state] * sizeof (XRectangle))) == NULL) {
-                       return;
-               }
-
-               while (current) {
-                       rects[nrects].x = lp->xb + current->pt.x * lp->xs;
-                       rects[nrects].y = lp->yb + current->pt.y * lp->ys;
-                       rects[nrects].width = lp->xs - (lp->xs > 3);
-                       rects[nrects].height = lp->ys - (lp->ys > 3);
-                       current = current->next;
-                       nrects++;
-               }
-               /* Finally get to draw */
-               XFillRectangles(MI_DISPLAY(mi), MI_WINDOW(mi), gc, rects, nrects);
-               /* Free up rects list and the appropriate part of the cellList */
-               (void) free((void *) rects);
-       }
-       free_state(lp, state);
-       XFlush(MI_DISPLAY(mi));
-}
-
-static int
-init_table(void)
-{
-       if (table == NULL) {
-               int mult = 1;
-               unsigned int tt, c, n[MAXNEIGHBORS], i;
-               int         j, k;
-               int  size_transition_table = sizeof (transition_table) /
-                       sizeof (unsigned int);
-               int  size_hex_transition_table = sizeof (hex_transition_table) /
-                       sizeof (unsigned int);
-
-               for (j = 0; j < local_neighbors; j++)
-                       mult *= 8;
-
-               if ((table = (unsigned int *) calloc(mult, sizeof (unsigned int))) == NULL) {
-                       return 1;
-               }
-
-#ifdef RAND_RULES
-               /* Here I was interested to see what happens when it hits a wall....
-                  Rules not normally used take over... takes too much time though */
-               {
-                       for (j = 0; j < mult; j++) {
-                               for (k = 0; k < 8; k++)
-                                       table[j] |= (unsigned int) ((unsigned int) (NRAND(8)) << (k * 3));
-                       }
-               }
-#endif
-               if (local_neighbors == 6) {
-                       for (j = 0; j < size_hex_transition_table; j++) {
-                               tt = hex_transition_table[j];
-                               TRANSITION(tt, i);
-                               for (k = 0; k < local_neighbors; k++) {
-                                       TRANSITION(tt, n[k]);
-                               }
-                               TRANSITION(tt, c);
-                               HEX_TABLE_IN(c, n[0], n[1], n[2], n[3], n[4], n[5], i);
-                               HEX_TABLE_IN(c, n[1], n[2], n[3], n[4], n[5], n[0], i);
-                               HEX_TABLE_IN(c, n[2], n[3], n[4], n[5], n[0], n[1], i);
-                               HEX_TABLE_IN(c, n[3], n[4], n[5], n[0], n[1], n[2], i);
-                               HEX_TABLE_IN(c, n[4], n[5], n[0], n[1], n[2], n[3], i);
-                               HEX_TABLE_IN(c, n[5], n[0], n[1], n[2], n[3], n[4], i);
-                       }
-               } else {
-                       for (j = 0; j < size_transition_table; j++) {
-                               tt = transition_table[j];
-                               TRANSITION(tt, i);
-                               for (k = 0; k < local_neighbors; k++) {
-                                       TRANSITION(tt, n[k]);
-                               }
-                               TRANSITION(tt, c);
-                               TABLE_IN(c, n[0], n[1], n[2], n[3], i);
-                               TABLE_IN(c, n[1], n[2], n[3], n[0], i);
-                               TABLE_IN(c, n[2], n[3], n[0], n[1], i);
-                               TABLE_IN(c, n[3], n[0], n[1], n[2], i);
-                       }
-               }
-       }
-       return 0;
-}
-
-static void
-init_adam(ModeInfo * mi)
-{
-       loopstruct *lp = &loops[MI_SCREEN(mi)];
-       XPoint      start, dirx, diry;
-       int         i, j;
-
-  if (local_neighbors == 6) {
-               int k;
-
-               /* switch (0) */
-               switch (NRAND(6)) {
-                       case 0:
-                               start.x = (lp->bncols - HEX_ADAM_LOOPX / 2) / 2;
-                               start.y = (lp->bnrows - HEX_ADAM_LOOPY) / 2;
-                               lp->mincol = start.x - 2;
-                               lp->minrow = start.y - 1;
-                               lp->maxcol = start.x + HEX_ADAM_LOOPX + 1;
-                               lp->maxrow = start.y + HEX_ADAM_LOOPY + 1;
-                               for (j = 0; j < HEX_ADAM_LOOPY; j++) {
-                                       for (i = 0; i < HEX_ADAM_LOOPX; i++) {
-                                               k = (((lp->bnrows / 2 + HEX_ADAM_LOOPY / 2) % 2) ? -j / 2 : -(j + 1) / 2);
-                                               lp->newcells[(start.y + j) * lp->bncols + start.x + i + k] =
-                                                       hex_self_reproducing_loop[j][i];
-                                       }
-                               }
-                               break;
-                       case 1:
-                               start.x = (lp->bncols - (HEX_ADAM_LOOPX + HEX_ADAM_LOOPY) / 2) / 2;
-                               start.y = (lp->bnrows - HEX_ADAM_LOOPX + HEX_ADAM_LOOPY) / 2;
-                               lp->mincol = start.x - 1;
-                               lp->minrow = start.y - HEX_ADAM_LOOPX;
-                               lp->maxcol = start.x + (HEX_ADAM_LOOPX + HEX_ADAM_LOOPY) / 2 + 1;
-                               lp->maxrow = start.y + HEX_ADAM_LOOPY + 1;
-                               for (j = 0; j < HEX_ADAM_LOOPY; j++) {
-                                       for (i = 0; i < HEX_ADAM_LOOPX; i++) {
-                                               k = (((lp->bnrows / 2 + (HEX_ADAM_LOOPX + HEX_ADAM_LOOPY) / 2) % 2)
-              ? -(i + j + 1) / 2 : -(i + j) / 2);
-                                               lp->newcells[(start.y + j - i) * lp->bncols + start.x + i + j + k] =
-                                                       hex_self_reproducing_loop[j][i];
-                                       }
-                               }
-                               break;
-                       case 2:
-                               start.x = (lp->bncols - HEX_ADAM_LOOPY / 2) / 2;
-                               start.y = (lp->bnrows - HEX_ADAM_LOOPX) / 2;
-                               lp->mincol = start.x - 2;
-                               lp->minrow = start.y - 1;
-                               lp->maxcol = start.x + HEX_ADAM_LOOPY + 1;
-                               lp->maxrow = start.y + HEX_ADAM_LOOPX + 1;
-                               for (j = 0; j < HEX_ADAM_LOOPX; j++) {
-                                       for (i = 0; i < HEX_ADAM_LOOPY; i++) {
-                                               k = (((lp->bnrows / 2 + HEX_ADAM_LOOPX / 2) % 2) ? -(HEX_ADAM_LOOPX - j - 1) / 2 : -(HEX_ADAM_LOOPX - j) / 2);
-                                               lp->newcells[(start.y + j) * lp->bncols + start.x + i + k] =
-                                                       hex_self_reproducing_loop[i][HEX_ADAM_LOOPX - j - 1];
-                                       }
-                               }
-                               break;
-                       case 3:
-                               start.x = (lp->bncols - HEX_ADAM_LOOPX / 2) / 2;
-                               start.y = (lp->bnrows - HEX_ADAM_LOOPY) / 2;
-                               lp->mincol = start.x - 1, lp->minrow = start.y - 1;
-                               lp->maxcol = start.x + HEX_ADAM_LOOPX + 1, lp->maxrow = start.y + HEX_ADAM_LOOPY + 1;
-                               for (j = 0; j < HEX_ADAM_LOOPY; j++) {
-                                       for (i = 0; i < HEX_ADAM_LOOPX; i++) {
-                                               k = (((lp->bnrows / 2 + HEX_ADAM_LOOPY / 2) % 2) ? -j / 2 : -(j + 1) / 2);
-                                               lp->newcells[(start.y + j) * lp->bncols + start.x + i + k] =
-                                                       hex_self_reproducing_loop[HEX_ADAM_LOOPY - j - 1][HEX_ADAM_LOOPX - i - 1];
-                                       }
-                               }
-                               break;
-                       case 4:
-                               start.x = (lp->bncols - (HEX_ADAM_LOOPX + HEX_ADAM_LOOPY) / 2) / 2;
-                               start.y = (lp->bnrows - HEX_ADAM_LOOPX + HEX_ADAM_LOOPY) / 2;
-                               lp->mincol = start.x - 1;
-                               lp->minrow = start.y - HEX_ADAM_LOOPX;
-                               lp->maxcol = start.x + (HEX_ADAM_LOOPX + HEX_ADAM_LOOPY) / 2 + 1;
-                               lp->maxrow = start.y + HEX_ADAM_LOOPY + 1;
-                               for (j = 0; j < HEX_ADAM_LOOPY; j++) {
-                                       for (i = 0; i < HEX_ADAM_LOOPX; i++) {
-                                               k = (((lp->bnrows / 2 + (HEX_ADAM_LOOPX + HEX_ADAM_LOOPY) / 2) % 2)
-              ? -(i + j + 1) / 2 : -(i + j) / 2);
-                                               lp->newcells[(start.y + j - i) * lp->bncols + start.x + i + j + k] =
-                                                       hex_self_reproducing_loop[HEX_ADAM_LOOPY - j - 1][HEX_ADAM_LOOPX - i - 1];
-                                       }
-                               }
-                               break;
-                       case 5:
-                               start.x = (lp->bncols - HEX_ADAM_LOOPY / 2) / 2;
-                               start.y = (lp->bnrows - HEX_ADAM_LOOPX) / 2;
-                               lp->mincol = start.x - 2;
-                               lp->minrow = start.y - 1;
-                               lp->maxcol = start.x + HEX_ADAM_LOOPY + 1;
-                               lp->maxrow = start.y + HEX_ADAM_LOOPX + 1;
-                               for (j = 0; j < HEX_ADAM_LOOPX; j++) {
-                                       for (i = 0; i < HEX_ADAM_LOOPY; i++) {
-                                               k = (((lp->bnrows / 2 + HEX_ADAM_LOOPX / 2) % 2) ? -(HEX_ADAM_LOOPX - j - 1) / 2 : -(HEX_ADAM_LOOPX - j) / 2);
-                                               lp->newcells[(start.y + j) * lp->bncols + start.x + i + k] =
-                                                       hex_self_reproducing_loop[HEX_ADAM_LOOPX - i - 1][j];
-                                       }
-                               }
-                               break;
-               }
-#if DEBUGTEST
-                               /* printf ("s %d  s %d \n", start.x, start.y); */
-               printf ("%d %d %d %d %d\t",
-     start.x + i + ((lp->bnrows / 2 % 2) ? -j / 2 : -(j + 1) / 2) - lp->bx,
-                start.y + j - lp->by, i, j, hex_self_reproducing_loop[j][i]);
-               /* Draw right away */
-               drawcell(mi, start.x + i + ((lp->bnrows / 2 % 2) ? -j / 2 : -(j + 1) / 2) - lp->bx,
-                start.y + j - lp->by,
-                hex_self_reproducing_loop[j][i]);
-#endif
-#if DEBUGTEST
-                        printf ("\n");
-#endif
-#if DEBUGTEST
-                        printf ("\n");
-#endif
-  } else {
-               switch (NRAND(4)) {
-                       case 0:
-                               start.x = (lp->bncols - ADAM_LOOPX) / 2;
-                               start.y = (lp->bnrows - ADAM_LOOPY) / 2;
-                               dirx.x = 1, dirx.y = 0;
-                               diry.x = 0, diry.y = 1;
-                               lp->mincol = start.x, lp->minrow = start.y;
-                               lp->maxcol = start.x + ADAM_LOOPX, lp->maxrow = start.y + ADAM_LOOPY;
-                               break;
-                       case 1:
-                               start.x = (lp->bncols + ADAM_LOOPY) / 2;
-                               start.y = (lp->bnrows - ADAM_LOOPX) / 2;
-                               dirx.x = 0, dirx.y = 1;
-                               diry.x = -1, diry.y = 0;
-                               lp->mincol = start.x - ADAM_LOOPY, lp->minrow = start.y;
-                               lp->maxcol = start.x, lp->maxrow = start.y + ADAM_LOOPX;
-                               break;
-                       case 2:
-                               start.x = (lp->bncols + ADAM_LOOPX) / 2;
-                               start.y = (lp->bnrows + ADAM_LOOPY) / 2;
-                               dirx.x = -1, dirx.y = 0;
-                               diry.x = 0, diry.y = -1;
-                               lp->mincol = start.x - ADAM_LOOPX, lp->minrow = start.y - ADAM_LOOPY;
-                               lp->maxcol = start.x, lp->maxrow = start.y;
-                               break;
-                       case 3:
-                               start.x = (lp->bncols - ADAM_LOOPY) / 2;
-                               start.y = (lp->bnrows + ADAM_LOOPX) / 2;
-                               dirx.x = 0, dirx.y = -1;
-                               diry.x = 1, diry.y = 0;
-                               lp->mincol = start.x, lp->minrow = start.y - ADAM_LOOPX;
-                               lp->maxcol = start.x + ADAM_LOOPY, lp->maxrow = start.y;
-                               break;
-               }
-               for (j = 0; j < ADAM_LOOPY; j++)
-                       for (i = 0; i < ADAM_LOOPX; i++)
-                               lp->newcells[(start.y + dirx.y * i + diry.y * j) * lp->bncols +
-                                            start.x + dirx.x * i + diry.x * j] =
-                                       self_reproducing_loop[j][i];
-#if DEBUG
-               /* Draw right away */
-               drawcell(mi, start.x + dirx.x * i + diry.x * j - lp->bx,
-                start.y + dirx.y * i + diry.y * j - lp->by,
-                self_reproducing_loop[j][i]);
-#endif
-       }
-}
-
-
-static void
-do_gen(loopstruct * lp)
-{
-       int         i, j, k;
-       unsigned char *z;
-       unsigned int n[MAXNEIGHBORS];
-       unsigned int c;
-
-#define LOC(X, Y) (*(lp->oldcells + (X) + ((Y) * lp->bncols)))
-
-       for (j = lp->minrow; j <= lp->maxrow; j++) {
-               for (i = lp->mincol; i <= lp->maxcol; i++) {
-                       z = lp->newcells + i + j * lp->bncols;
-                       c = LOC(i, j);
-                       for (k = 0; k < local_neighbors; k++) {
-                               int         newi = i, newj = j;
-
-                               position_of_neighbor(k * ANGLES / local_neighbors, &newi, &newj);
-                               n[k] = 0;
-                   if (withinBounds(lp, newi, newj)) {
-                                       n[k] = LOC(newi, newj);
-                               }
-                       }
-                       if (local_neighbors == 6) {
-                               *z = HEX_TABLE_OUT(c, n[0], n[1], n[2], n[3], n[4], n[5]);
-                       } else {
-                               *z = TABLE_OUT(c, n[0], n[1], n[2], n[3]);
-                       }
-               }
-       }
-}
-
-static void
-free_list(loopstruct * lp)
-{
-       int         state;
-
-       for (state = 0; state < COLORS; state++)
-               free_state(lp, state);
-}
-
-void
-release_loop(ModeInfo * mi)
-{
-       if (loops != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       loopstruct *lp = &loops[screen];
-                       int         shade;
-
-                       for (shade = 0; shade < lp->init_bits; shade++)
-                               if (lp->pixmaps[shade] != None)
-                                       XFreePixmap(MI_DISPLAY(mi), lp->pixmaps[shade]);
-                       if (lp->stippledGC != None)
-                               XFreeGC(MI_DISPLAY(mi), lp->stippledGC);
-                       if (lp->oldcells != NULL)
-                               (void) free((void *) lp->oldcells);
-                       if (lp->newcells != NULL)
-                               (void) free((void *) lp->newcells);
-                       free_list(lp);
-               }
-               (void) free((void *) loops);
-               loops = NULL;
-       }
-       if (table != NULL) {
-               (void) free((void *) table);
-               table = NULL;
-       }
-}
-
-void
-init_loop(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       int         i, size = MI_SIZE(mi);
-       loopstruct *lp;
-       XGCValues   gcv;
-
-       if (loops == NULL) {
-               if ((loops = (loopstruct *) calloc(MI_NUM_SCREENS(mi),
-                                              sizeof (loopstruct))) == NULL)
-                       return;
-       }
-       lp = &loops[MI_SCREEN(mi)];
-
-       lp->redrawing = 0;
-
-       if ((MI_NPIXELS(mi) < COLORS) && (lp->init_bits == 0)) {
-               if (lp->stippledGC == None) {
-                       gcv.fill_style = FillOpaqueStippled;
-                       lp->stippledGC = XCreateGC(display, window, GCFillStyle, &gcv);
-                       if (lp->stippledGC == None) {
-                               release_loop(mi);
-                               return;
-                       }
-               }
-               LOOPBITS(stipples[0], STIPPLESIZE, STIPPLESIZE);
-               LOOPBITS(stipples[2], STIPPLESIZE, STIPPLESIZE);
-               LOOPBITS(stipples[3], STIPPLESIZE, STIPPLESIZE);
-               LOOPBITS(stipples[4], STIPPLESIZE, STIPPLESIZE);
-               LOOPBITS(stipples[6], STIPPLESIZE, STIPPLESIZE);
-               LOOPBITS(stipples[7], STIPPLESIZE, STIPPLESIZE);
-               LOOPBITS(stipples[8], STIPPLESIZE, STIPPLESIZE);
-               LOOPBITS(stipples[10], STIPPLESIZE, STIPPLESIZE);
-       if (lp->pixmaps[COLORS - 1] == None) {
-                       release_loop(mi);
-                       return;
-               }
-       }
-       if (MI_NPIXELS(mi) >= COLORS) {
-               /* Maybe these colors should be randomized */
-               lp->colors[0] = MI_BLACK_PIXEL(mi);
-               lp->colors[1] = MI_PIXEL(mi, 0);        /* RED */
-               lp->colors[5] = MI_PIXEL(mi, MI_NPIXELS(mi) / REALCOLORS);      /* YELLOW */
-               lp->colors[4] = MI_PIXEL(mi, 2 * MI_NPIXELS(mi) / REALCOLORS);  /* GREEN */
-               lp->colors[6] = MI_PIXEL(mi, 3 * MI_NPIXELS(mi) / REALCOLORS);  /* CYAN */
-               lp->colors[2] = MI_PIXEL(mi, 4 * MI_NPIXELS(mi) / REALCOLORS);  /* BLUE */
-               lp->colors[3] = MI_PIXEL(mi, 5 * MI_NPIXELS(mi) / REALCOLORS);  /* MAGENTA */
-               lp->colors[7] = MI_WHITE_PIXEL(mi);
-       }
-       free_list(lp);
-       lp->generation = 0;
-       lp->width = MI_WIDTH(mi);
-       lp->height = MI_HEIGHT(mi);
-
-  if (!local_neighbors) {
-    for (i = 0; i < NEIGHBORKINDS; i++) {
-      if (neighbors == plots[i]) {
-        local_neighbors = neighbors;
-        neighbor_kind = i;
-        break;
-      }
-                       if (i == NEIGHBORKINDS - 1) {
-
-#if 1
-                               local_neighbors = plots[NRAND(NEIGHBORKINDS)];
-                               neighbor_kind = (local_neighbors == 4) ? 0 : 1;
-#else
-                               local_neighbors = 4;
-                               neighbor_kind = 0;
-#endif
-                               break;
-                       }
-               }
-       }
-
-
-  if (local_neighbors == 6) {
-    int         nccols, ncrows;
-
-    if (lp->width < 4)
-      lp->width = 4;
-    if (lp->height < 4)
-      lp->height = 4;
-    if (size < -MINSIZE) {
-      lp->ys = NRAND(MIN(-size, MAX(MINSIZE, MIN(lp->width, lp->height) /
-              HEX_MINGRIDSIZE)) - MINSIZE + 1) + MINSIZE;
-    } else if (size < MINSIZE) {
-      if (!size)
-        lp->ys = MAX(MINSIZE, MIN(lp->width, lp->height) / HEX_MINGRIDSIZE);
-      else
-        lp->ys = MINSIZE;
-    } else
-      lp->ys = MIN(size, MAX(MINSIZE, MIN(lp->width, lp->height) /
-                 HEX_MINGRIDSIZE));
-    lp->xs = lp->ys;
-               nccols = MAX(lp->width / lp->xs - 2, HEX_ADAM_LOOPX + 1);
-               ncrows = MAX(lp->height / lp->ys - 1, HEX_ADAM_LOOPY + 1);
-    lp->ncols = nccols / 2;
-    lp->nrows = ncrows / 2;
-               lp->nrows -= !(lp->nrows & 1);  /* Must be odd */
-    lp->xb = (lp->width - lp->xs * nccols) / 2 + lp->xs;
-    lp->yb = (lp->height - lp->ys * ncrows) / 2 + lp->ys;
-    for (i = 0; i < 6; i++) {
-      lp->shape.hexagon[i].x = (lp->xs - 1) * hexagonUnit[i].x;
-      lp->shape.hexagon[i].y = ((lp->ys - 1) * hexagonUnit[i].y / 2) * 4 / 3;
-    }
-  } else {
-               if (size < -MINSIZE)
-                       lp->ys = NRAND(MIN(-size, MAX(MINSIZE, MIN(lp->width, lp->height) /
-                                             MINGRIDSIZE)) - MINSIZE + 1) + MINSIZE;
-               else if (size < MINSIZE) {
-                       if (!size)
-                               lp->ys = MAX(MINSIZE, MIN(lp->width, lp->height) / MINGRIDSIZE);
-                       else
-                               lp->ys = MINSIZE;
-               } else
-                       lp->ys = MIN(size, MAX(MINSIZE, MIN(lp->width, lp->height) /
-                                              MINGRIDSIZE));
-               lp->xs = lp->ys;
-               lp->ncols = MAX(lp->width / lp->xs, ADAM_LOOPX + 1);
-               lp->nrows = MAX(lp->height / lp->ys, ADAM_LOOPX + 1);
-               lp->xb = (lp->width - lp->xs * lp->ncols) / 2;
-               lp->yb = (lp->height - lp->ys * lp->nrows) / 2;
-       }
-       lp->bx = 1;
-       lp->by = 1;
-       lp->bncols = lp->ncols + 2 * lp->bx;
-       lp->bnrows = lp->nrows + 2 * lp->by;
-
-       MI_CLEARWINDOW(mi);
-
-       if (lp->oldcells != NULL) {
-               (void) free((void *) lp->oldcells);
-               lp->oldcells = NULL;
-       }       
-       if ((lp->oldcells = (unsigned char *) calloc(lp->bncols * lp->bnrows, sizeof (unsigned char))) == NULL) {
-               release_loop(mi);
-               return;
-       }
-       if (lp->newcells != NULL) {
-               (void) free((void *) lp->newcells);
-               lp->newcells = NULL;
-       }
-       if ((lp->newcells = (unsigned char *) calloc(lp->bncols * lp->bnrows, sizeof (unsigned char))) == NULL) {
-               release_loop(mi);
-               return;
-       }
-  if (init_table()) {
-               release_loop(mi);
-               return;
-       }
-       init_adam(mi);
-}
-
-void
-draw_loop(ModeInfo * mi)
-{
-       loopstruct *lp = &loops[MI_SCREEN(mi)];
-       int         offset, i, j, life = 0;
-       unsigned char *z, *znew;
-
-       if (loops == NULL) {
-               init_loop(mi);
-               return;
-       }
-       MI_IS_DRAWN(mi) = True;
-
-       for (j = lp->minrow; j <= lp->maxrow; j++) {
-               for (i = lp->mincol; i <= lp->maxcol; i++) {
-                       offset = j * lp->bncols + i;
-                       z = lp->oldcells + offset;
-                       znew = lp->newcells + offset;
-                       if (*z != *znew) {
-                               *z = *znew;
-                               addtolist(mi, i - lp->bx, j - lp->by, *znew);
-                               life = 1;
-                               if (i == lp->mincol && i > lp->bx)
-                                       lp->mincol--;
-                               if (j == lp->minrow && j > lp->by)
-                                       lp->minrow--;
-                               if (i == lp->maxcol && i < lp->bncols - 2 * lp->bx)
-                                       lp->maxcol++;
-                               if (j == lp->maxrow && j < lp->bnrows - 2 * lp->by)
-                                       lp->maxrow++;
-                       }
-               }
-       }
-       for (i = 0; i < COLORS; i++)
-               draw_state(mi, i);
-       if (++lp->generation > MI_CYCLES(mi) /* || !life */) {
-               init_loop(mi);
-               return;
-       } else
-               do_gen(lp);
-
-       if (lp->redrawing) {
-               for (i = 0; i < REDRAWSTEP; i++) {
-                       if ((*(lp->oldcells + lp->redrawpos))) {
-                               drawcell(mi, lp->redrawpos % lp->bncols - lp->bx,
-                                        lp->redrawpos / lp->bncols - lp->by,
-                                        *(lp->oldcells + lp->redrawpos));
-                       }
-                       if (++(lp->redrawpos) >= lp->bncols * (lp->bnrows - lp->bx)) {
-                               lp->redrawing = 0;
-                               break;
-                       }
-               }
-       }
-}
-
-void
-refresh_loop(ModeInfo * mi)
-{
-       loopstruct *lp = &loops[MI_SCREEN(mi)];
-
-       if (loops == NULL) {
-               init_loop(mi);
-               return;
-       }
-       MI_CLEARWINDOW(mi);
-       lp->redrawing = 1;
-       lp->redrawpos = lp->by * lp->ncols + lp->bx;
-}
diff --git a/hacks/maze.c b/hacks/maze.c
deleted file mode 100644 (file)
index 40edf41..0000000
+++ /dev/null
@@ -1,1764 +0,0 @@
-/******************************************************************************
- * [ maze ] ...
- *
- * modified:  [ 6-28-98 ]  Zack Weinberg <zack@rabi.phys.columbia.edu>
- *
- *              Made the maze-solver somewhat more intelligent.  There are
- *              three optimizations:
- *
- *              - Straight-line lookahead: the solver does not enter dead-end
- *                corridors.  This is a win with all maze generators.
- *
- *              - First order direction choice: the solver knows where the
- *                exit is in relation to itself, and will try paths leading in
- *                that direction first. This is a major win on maze generator 1
- *                which tends to offer direct routes to the exit.
- *
- *              - Dead region elimination: the solver already has a map of
- *                all squares visited.  Whenever it starts to backtrack, it
- *                consults this map and marks off all squares that cannot be
- *                reached from the exit without crossing a square already
- *                visited.  Those squares can never contribute to the path to
- *                the exit, so it doesn't bother checking them.  This helps a
- *                lot with maze generator 2 and somewhat less with generator 1.
- *
- *              Further improvements would require knowledge of the wall map
- *              as well as the position of the exit and the squares visited.
- *              I would consider that to be cheating.  Generator 0 makes
- *              mazes which are remarkably difficult to solve mechanically --
- *              even with these optimizations the solver generally must visit
- *              at least two-thirds of the squares.  This is partially
- *              because generator 0's mazes have longer paths to the exit.
- *
- * modified:  [ 4-10-97 ]  Johannes Keukelaar <johannes@nada.kth.se>
- *              Added multiple maze creators. Robustified solver.
- *              Added bridge option.
- * modified:  [ 8-11-95 ] Ed James <james@mml.mmc.com>
- *              added fill of dead-end box to solve_maze while loop.
- * modified:  [ 3-7-93 ]  Jamie Zawinski <jwz@jwz.org>
- *             added the XRoger logo, cleaned up resources, made
- *             grid size a parameter.
- * modified:  [ 3-3-93 ]  Jim Randell <jmr@mddjmr.fc.hp.com>
- *             Added the colour stuff and integrated it with jwz's
- *             screenhack stuff.  There's still some work that could
- *             be done on this, particularly allowing a resource to
- *             specify how big the squares are.
- * modified:  [ 10-4-88 ]  Richard Hess    ...!uunet!cimshop!rhess  
- *              [ Revised primary execution loop within main()...
- *              [ Extended X event handler, check_events()...
- * modified:  [ 1-29-88 ]  Dave Lemke      lemke@sun.com  
- *              [ Hacked for X11...
- *              [  Note the word "hacked" -- this is extremely ugly, but at 
- *              [   least it does the job.  NOT a good programming example 
- *              [   for X.
- * original:  [ 6/21/85 ]  Martin Weiss    Sun Microsystems  [ SunView ]
- *
- ******************************************************************************
- Copyright 1988 by Sun Microsystems, Inc. Mountain View, CA.
-  
- All Rights Reserved
-  
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose and without fee is hereby granted, 
- provided that the above copyright notice appear in all copies and that
- both that copyright notice and this permission notice appear in 
- supporting documentation, and that the names of Sun or MIT not be
- used in advertising or publicity pertaining to distribution of the
- software without specific prior written permission. Sun and M.I.T. 
- make no representations about the suitability of this software for 
- any purpose. It is provided "as is" without any express or implied warranty.
- SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE. IN NO EVENT SHALL SUN BE LIABLE FOR ANY SPECIAL, INDIRECT
- OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
- OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
- OR PERFORMANCE OF THIS SOFTWARE.
- *****************************************************************************/
-
-#include "screenhack.h"
-#include "erase.h"
-
-#define XROGER
-
-static int solve_delay, pre_solve_delay, post_solve_delay;
-
-#include  <stdio.h>
-#include  <X11/Xlib.h>
-#include  <X11/Xutil.h>
-#ifndef VMS
-# include  <X11/bitmaps/gray1>
-#else  /* VMS */
-# include "sys$common:[decw$include.bitmaps]gray1.xbm"
-#endif /* VMS */
-
-#define MAX_MAZE_SIZE_X        500
-#define MAX_MAZE_SIZE_Y        500
-
-#define MOVE_LIST_SIZE  (MAX_MAZE_SIZE_X * MAX_MAZE_SIZE_Y)
-
-#define NOT_DEAD       0x8000
-#define SOLVER_VISIT    0x4000
-#define START_SQUARE   0x2000
-#define END_SQUARE     0x1000
-
-#define WALL_TOP       0x8
-#define WALL_RIGHT     0x4
-#define WALL_BOTTOM    0x2
-#define WALL_LEFT      0x1
-#define WALL_ANY       0xF
-
-#define DOOR_IN_TOP    0x800
-#define DOOR_IN_RIGHT  0x400
-#define DOOR_IN_BOTTOM 0x200
-#define DOOR_IN_LEFT   0x100
-#define DOOR_IN_ANY    0xF00
-
-#define DOOR_OUT_TOP   0x80
-#define DOOR_OUT_RIGHT 0x40
-#define DOOR_OUT_BOTTOM        0x20
-#define DOOR_OUT_LEFT  0x10
-
-
-#define        border_x        (0)
-#define        border_y        (0)
-
-#define        get_random(x)   (random() % (x))
-
-
-static int logo_x, logo_y;
-
-#ifdef XROGER
-# define logo_width  128
-# define logo_height 128
-#else
-# include  <X11/bitmaps/xlogo64>
-# define logo_width xlogo64_width
-# define logo_height xlogo64_height
-# define logo_bits xlogo64_bits
-#endif
-
-static unsigned short maze[MAX_MAZE_SIZE_X][MAX_MAZE_SIZE_Y];
-
-static struct {
-  unsigned char x;
-  unsigned char y;
-  unsigned char dir, ways;
-} move_list[MOVE_LIST_SIZE], save_path[MOVE_LIST_SIZE], path[MOVE_LIST_SIZE];
-
-static int maze_size_x, maze_size_y;
-static int sqnum, cur_sq_x, cur_sq_y, path_length;
-static int start_x, start_y, start_dir, end_x, end_y, end_dir;
-static int grid_width, grid_height;
-static int bw;
-
-static Display *dpy;
-static Window  win;
-static GC      gc, cgc, tgc, sgc, ugc, logo_gc, erase_gc;
-static Pixmap  logo_map;
-
-static int     x = 0, y = 0, restart = 0, stop = 1, state = 1, max_length;
-static int      sync_p, bridge_p;
-
-static int
-check_events (void)                        /* X event handler [ rhess ] */
-{
-  XEvent       e;
-
-  if (XPending(dpy)) {
-    XNextEvent(dpy, &e);
-    switch (e.type) {
-
-    case ButtonPress:
-      switch (e.xbutton.button) {
-      case 3:
-       exit (0);
-       break;
-      case 2:
-       stop = !stop ;
-       if (state == 5) state = 4 ;
-       else {
-         restart = 1;
-         stop = 0;
-       }
-       break;
-      default:
-       restart = 1 ;
-       stop = 0 ;
-       break;
-      }
-      break;
-
-    case ConfigureNotify:
-      restart = 1;
-      break;
-    case UnmapNotify:
-      stop = 1;
-      XClearWindow (dpy, win);
-      XSync (dpy, False);
-      break;
-    case Expose:
-      restart = 1;
-      break;
-    default:
-      screenhack_handle_event(dpy, &e);
-      break;
-    }
-    return(1);
-  }
-  return(0);
-}
-
-
-static void
-set_maze_sizes (int width, int height)
-{
-  maze_size_x = width / grid_width;
-  maze_size_y = height / grid_height;
-}
-
-
-static void
-initialize_maze (void) /* draw the surrounding wall and start/end squares */
-{
-  register int i, j, wall;
-  int logow = 1 + logo_width / grid_width;
-  int logoh = 1 + logo_height / grid_height;
-  
-  /* initialize all squares */
-  for ( i=0; i<maze_size_x; i++) {
-    for ( j=0; j<maze_size_y; j++) {
-      maze[i][j] = 0;
-    }
-  }
-  
-  /* top wall */
-  for ( i=0; i<maze_size_x; i++ ) {
-    maze[i][0] |= WALL_TOP;
-  }
-  
-  /* right wall */
-  for ( j=0; j<maze_size_y; j++ ) {
-    maze[maze_size_x-1][j] |= WALL_RIGHT;
-  }
-  
-  /* bottom wall */
-  for ( i=0; i<maze_size_x; i++ ) {
-    maze[i][maze_size_y-1] |= WALL_BOTTOM;
-  }
-  
-  /* left wall */
-  for ( j=0; j<maze_size_y; j++ ) {
-    maze[0][j] |= WALL_LEFT;
-  }
-  
-  /* set start square */
-  wall = get_random(4);
-  switch (wall) {
-  case 0:      
-    i = get_random(maze_size_x);
-    j = 0;
-    break;
-  case 1:      
-    i = maze_size_x - 1;
-    j = get_random(maze_size_y);
-    break;
-  case 2:      
-    i = get_random(maze_size_x);
-    j = maze_size_y - 1;
-    break;
-  case 3:      
-    i = 0;
-    j = get_random(maze_size_y);
-    break;
-  }
-  maze[i][j] |= START_SQUARE;
-  maze[i][j] |= ( DOOR_IN_TOP >> wall );
-  maze[i][j] &= ~( WALL_TOP >> wall );
-  cur_sq_x = i;
-  cur_sq_y = j;
-  start_x = i;
-  start_y = j;
-  start_dir = wall;
-  sqnum = 0;
-  
-  /* set end square */
-  wall = (wall + 2)%4;
-  switch (wall) {
-  case 0:
-    i = get_random(maze_size_x);
-    j = 0;
-    break;
-  case 1:
-    i = maze_size_x - 1;
-    j = get_random(maze_size_y);
-    break;
-  case 2:
-    i = get_random(maze_size_x);
-    j = maze_size_y - 1;
-    break;
-  case 3:
-    i = 0;
-    j = get_random(maze_size_y);
-    break;
-  }
-  maze[i][j] |= END_SQUARE;
-  maze[i][j] |= ( DOOR_OUT_TOP >> wall );
-  maze[i][j] &= ~( WALL_TOP >> wall );
-  end_x = i;
-  end_y = j;
-  end_dir = wall;
-  
-  /* set logo */
-  if ((maze_size_x-logow >= 6) && (maze_size_y-logoh >= 6))
-    {
-      /* not closer than 3 grid units from a wall */
-      logo_x = get_random (maze_size_x - logow - 5) + 3;
-      logo_y = get_random (maze_size_y - logoh - 5) + 3;
-      for (i=0; i<logow; i++)
-       for (j=0; j<logoh; j++)
-         maze[logo_x + i][logo_y + j] |= DOOR_IN_TOP;
-    }
-  else
-    logo_y = logo_x = -1;
-}
-
-static int choose_door (void);
-static int backup (void);
-static void draw_wall (int, int, int, GC);
-static void draw_solid_square (int, int, int, GC);
-/*static void enter_square (int);*/
-static void build_wall (int, int, int);
-/*static void break_wall (int, int, int);*/
-
-static void join_sets(int, int);
-
-/* For set_create_maze. */
-/* The sets that our squares are in. */
-static int *sets = 0;
-/* The `list' of hedges. */
-static int *hedges = 0;
-
-#define DEBUG_SETS 0
-
-/* Initialise the sets. */
-static void 
-init_sets(void)
-{
-  int i, t, r, x, y;
-
-  if(sets)
-    free(sets);
-  sets = (int *)malloc(maze_size_x*maze_size_y*sizeof(int));
-  if(!sets)
-    abort();
-  for(i = 0; i < maze_size_x*maze_size_y; i++)
-    {
-      sets[i] = i;
-    }
-  
-  if(hedges)
-    free(hedges);
-  hedges = (int *)malloc(maze_size_x*maze_size_y*2*sizeof(int));
-  if(!hedges)
-    abort();
-  for(i = 0; i < maze_size_x*maze_size_y*2; i++)
-    {
-      hedges[i] = i;
-    }
-  /* Mask out outside walls. */
-  for(i = 0; i < maze_size_y; i++)
-    {
-      hedges[2*((maze_size_x)*i+maze_size_x-1)+1] = -1;
-    }
-  for(i = 0; i < maze_size_x; i++)
-    {
-      hedges[2*((maze_size_y-1)*maze_size_x+i)] = -1;
-    }
-  /* Mask out a possible logo. */
-  if(logo_x!=-1)
-    {
-      int logow = 1 + logo_width / grid_width;
-      int logoh = 1 + logo_height / grid_height;
-      int bridge_dir, bridge_c;
-
-      if(bridge_p && logoh>=3 && logow>=3)
-       {
-         bridge_dir = 1+random()%2;
-         if(bridge_dir==1)
-           {
-             bridge_c = logo_y+random()%(logoh-2)+1;
-           }
-         else
-           {
-             bridge_c = logo_x+random()%(logow-2)+1;
-           }
-       }
-      else
-       {
-         bridge_dir = 0;
-         bridge_c = -1;
-       }
-
-      for(x = logo_x; x < logo_x+logow; x++)
-       for(y = logo_y; y < logo_y+logoh; y++)
-         {
-           /* I should check for the bridge here, except that I join the
-             * bridge together below.
-             */
-           hedges[2*(x+maze_size_x*y)+1] = -1;
-           hedges[2*(x+maze_size_x*y)] = -1;
-         }
-      for(x = logo_x; x < logo_x+logow; x++)
-       {
-         if(!(bridge_dir==2 && x==bridge_c))
-           {
-             build_wall(x, logo_y, 0);
-             build_wall(x, logo_y+logoh, 0);
-           }
-         hedges[2*(x+maze_size_x*(logo_y-1))] = -1;
-         if(bridge_dir==1)
-           {
-             build_wall(x, bridge_c, 0);
-             build_wall(x, bridge_c, 2);
-           }
-       }
-      for(y = logo_y; y < logo_y+logoh; y++)
-       {
-         if(!(bridge_dir==1 && y==bridge_c))
-           {
-             build_wall(logo_x, y, 3);
-             build_wall(logo_x+logow, y, 3);
-           }
-         hedges[2*(logo_x-1+maze_size_x*y)+1] = -1;
-         if(bridge_dir==2)
-           {
-             build_wall(bridge_c, y, 1);
-             build_wall(bridge_c, y, 3);
-           }
-       }
-      /* Join the whole bridge together. */
-      if(bridge_p)
-       {
-         if(bridge_dir==1)
-           {
-             x = logo_x-1;
-             y = bridge_c;
-             for(i = logo_x; i < logo_x+logow+1; i++)
-               join_sets(x+y*maze_size_x, i+y*maze_size_x);
-           }
-         else
-           {
-             y = logo_y-1;
-             x = bridge_c;
-             for(i = logo_y; i < logo_y+logoh+1; i++)
-               join_sets(x+y*maze_size_x, x+i*maze_size_x);
-           }
-       }
-    }
-
-  for(i = 0; i < maze_size_x*maze_size_y*2; i++)
-    {
-      t = hedges[i];
-      r = random()%(maze_size_x*maze_size_y*2);
-      hedges[i] = hedges[r];
-      hedges[r] = t;
-    }
-}
-
-/* Get the representative of a set. */
-static int
-get_set(int num)
-{
-  int s;
-
-  if(sets[num]==num)
-    return num;
-  else
-    {
-      s = get_set(sets[num]);
-      sets[num] = s;
-      return s;
-    }
-}
-
-/* Join two sets together. */
-static void
-join_sets(num1, num2)
-     int num1, num2;
-{
-  int s1, s2;
-
-  s1 = get_set(num1);
-  s2 = get_set(num2);
-  
-  if(s1<s2)
-    sets[s2] = s1;
-  else
-    sets[s1] = s2;
-}
-
-/* Exitialise the sets. */
-static void
-exit_sets(void)
-{
-  if(hedges)
-    free(hedges);
-  hedges = 0;
-  if(sets)
-    free(sets);
-  sets = 0;
-}
-
-#if DEBUG_SETS
-/* Temporary hack. */
-static void
-show_set(int num, GC gc)
-{
-  int x, y, set;
-
-  set = get_set(num);
-
-  for(x = 0; x < maze_size_x; x++)
-    for(y = 0; y < maze_size_y; y++)
-      {
-       if(get_set(x+y*maze_size_x)==set)
-         {
-           XFillRectangle(dpy, win, gc,  border_x + bw + grid_width * x, 
-                        border_y + bw + grid_height * y, 
-                        grid_width-2*bw , grid_height-2*bw);
-         }
-      }
-}
-#endif
-
-/* Second alternative maze creator: Put each square in the maze in a 
- * separate set. Also, make a list of all the hedges. Randomize that list.
- * Walk through the list. If, for a certain hedge, the two squares on both
- * sides of it are in different sets, union the sets and remove the hedge.
- * Continue until all hedges have been processed or only one set remains.
- */
-static void
-set_create_maze(void)
-{
-  int i, h, x, y, dir, v, w;
-#if DEBUG_SETS
-  int cont = 0;
-  char c;
-#endif
-
-  /* Do almost all the setup. */
-  init_sets();
-
-  /* Start running through the hedges. */
-  for(i = 0; i < 2*maze_size_x*maze_size_y; i++)
-    { 
-      h = hedges[i];
-
-      /* This one is in the logo or outside border. */
-      if(h==-1)
-       continue;
-
-      dir = h%2?1:2;
-      x = (h>>1)%maze_size_x;
-      y = (h>>1)/maze_size_x;
-
-      v = x;
-      w = y;
-      switch(dir)
-       {
-       case 1:
-         v++;
-         break;
-       case 2:
-         w++;
-         break;
-       }
-
-#if DEBUG_SETS
-      show_set(x+y*maze_size_x, logo_gc);
-      show_set(v+w*maze_size_x, tgc);
-#endif
-      if(get_set(x+y*maze_size_x)!=get_set(v+w*maze_size_x))
-       {
-#if DEBUG_SETS
-         printf("Join!");
-#endif
-         join_sets(x+y*maze_size_x, v+w*maze_size_x);
-         /* Don't draw the wall. */
-       }
-      else
-       {
-#if DEBUG_SETS
-         printf("Build.");
-#endif
-         /* Don't join the sets. */
-         build_wall(x, y, dir); 
-       }
-#if DEBUG_SETS
-      if(!cont)
-       {
-         XSync(dpy, False);
-         c = getchar();
-         if(c=='c')
-           cont = 1;
-       }
-      show_set(x+y*maze_size_x, erase_gc);
-      show_set(v+w*maze_size_x, erase_gc);
-#endif
-    }
-
-  /* Free some memory. */
-  exit_sets();
-}
-
-/* First alternative maze creator: Pick a random, empty corner in the maze.
- * Pick a random direction. Draw a wall in that direction, from that corner
- * until we hit a wall. Option: Only draw the wall if it's going to be 
- * shorter than a certain length. Otherwise we get lots of long walls.
- */
-static void
-alt_create_maze(void)
-{
-  char *corners;
-  int *c_idx;
-  int i, j, height, width, open_corners, k, dir, x, y;
-
-  height = maze_size_y+1;
-  width = maze_size_x+1;
-
-  /* Allocate and clear some mem. */
-  corners = (char *)calloc(height*width, 1);
-  if(!corners)
-    return;
-
-  /* Set up the indexing array. */
-  c_idx = (int *)malloc(sizeof(int)*height*width);
-  if(!c_idx)
-    {
-      free(corners);
-      return;
-    }
-  for(i = 0; i < height*width; i++)
-    c_idx[i] = i;
-  for(i = 0; i < height*width; i++)
-    {
-      j = c_idx[i];
-      k = random()%(height*width);
-      c_idx[i] = c_idx[k];
-      c_idx[k] = j;
-    }
-
-  /* Set up some initial walls. */
-  /* Outside walls. */
-  for(i = 0; i < width; i++)
-    {
-      corners[i] = 1;
-      corners[i+width*(height-1)] = 1;
-    }
-  for(i = 0; i < height; i++)
-    {
-      corners[i*width] = 1;
-      corners[i*width+width-1] = 1;
-    }
-  /* Walls around logo. In fact, inside the logo, too. */
-  /* Also draw the walls. */
-  if(logo_x!=-1)
-    {
-      int logow = 1 + logo_width / grid_width;
-      int logoh = 1 + logo_height / grid_height;
-      int bridge_dir, bridge_c;
-
-      if(bridge_p && logoh>=3 && logow>=3)
-       {
-         bridge_dir = 1+random()%2;
-         if(bridge_dir==1)
-           {
-             bridge_c = logo_y+random()%(logoh-2)+1;
-           }
-         else
-           {
-             bridge_c = logo_x+random()%(logow-2)+1;
-           }
-       }
-      else
-       {
-         bridge_dir = 0;
-         bridge_c = -1;
-       }
-      for(i = logo_x; i <= logo_x + logow; i++)
-       {
-         for(j = logo_y; j <= logo_y + logoh; j++)
-           {
-             corners[i+width*j] = 1;
-           }
-       }
-      for(x = logo_x; x < logo_x+logow; x++)
-       {
-         if(!(bridge_dir==2 && x==bridge_c))
-           {
-             build_wall(x, logo_y, 0);
-             build_wall(x, logo_y+logoh, 0);
-           }
-         if(bridge_dir==1)
-           {
-             build_wall(x, bridge_c, 0);
-             build_wall(x, bridge_c, 2);
-           }
-       }
-      for(y = logo_y; y < logo_y+logoh; y++)
-       {
-         if(!(bridge_dir==1 && y==bridge_c))
-           {
-             build_wall(logo_x, y, 3);
-             build_wall(logo_x+logow, y, 3);
-           }
-         if(bridge_dir==2)
-           {
-             build_wall(bridge_c, y, 1);
-             build_wall(bridge_c, y, 3);
-           }
-       }
-      /* Connect one wall of the logo with an outside wall. */
-      if(bridge_p)
-       dir = (bridge_dir+1)%4;
-      else
-       dir = random()%4;
-      switch(dir)
-       {
-       case 0:
-         x = logo_x+(random()%(logow+1));
-         y = logo_y;
-         break;
-       case 1:
-         x = logo_x+logow;
-         y = logo_y+(random()%(logoh+1));
-         break;
-       case 2:
-         x = logo_x+(random()%(logow+1));
-         y = logo_y+logoh;
-         break;
-       case 3:
-         x = logo_x;
-         y = logo_y+(random()%(logoh+1));
-         break;
-       }
-      do
-       {
-         corners[x+width*y] = 1;
-         switch(dir)
-           {
-           case 0:
-             build_wall(x-1, y-1, 1);
-             y--;
-             break;
-           case 1:
-             build_wall(x, y, 0);
-             x++;
-             break;
-           case 2:
-             build_wall(x, y, 3);
-             y++;
-             break;
-           case 3:
-             build_wall(x-1, y-1, 2);
-             x--;
-             break;      
-           }
-       }
-      while(!corners[x+width*y]);
-      if(bridge_p)
-       {
-         dir = (dir+2)%4;
-         switch(dir)
-           {
-           case 0:
-             x = logo_x+(random()%(logow+1));
-             y = logo_y;
-             break;
-           case 1:
-             x = logo_x+logow;
-             y = logo_y+(random()%(logoh+1));
-             break;
-           case 2:
-             x = logo_x+(random()%(logow+1));
-             y = logo_y+logoh;
-             break;
-           case 3:
-             x = logo_x;
-             y = logo_y+(random()%(logoh+1));
-             break;
-           }
-         do
-           {
-             corners[x+width*y] = 1;
-             switch(dir)
-               {
-               case 0:
-                 build_wall(x-1, y-1, 1);
-                 y--;
-                 break;
-               case 1:
-                 build_wall(x, y, 0);
-                 x++;
-                 break;
-               case 2:
-                 build_wall(x, y, 3);
-                 y++;
-                 break;
-               case 3:
-                 build_wall(x-1, y-1, 2);
-                 x--;
-                 break;          
-               }
-           }
-         while(!corners[x+width*y]);
-       }
-    }
-
-  /* Count open gridpoints. */
-  open_corners = 0;
-  for(i = 0; i < width; i++)
-    for(j = 0; j < height; j++)
-      if(!corners[i+width*j])
-       open_corners++;
-
-  /* Now do actual maze generation. */
-  while(open_corners>0)
-    {
-      for(i = 0; i < width*height; i++)
-       {
-         if(!corners[c_idx[i]])
-           {
-             x = c_idx[i]%width;
-             y = c_idx[i]/width;
-             /* Choose a random direction. */
-             dir = random()%4;
-             
-             k = 0;
-             /* Measure the length of the wall we'd draw. */
-             while(!corners[x+width*y])
-               {
-                 k++;
-                 switch(dir)
-                   {
-                   case 0:
-                     y--;
-                     break;
-                   case 1:
-                     x++;
-                     break;
-                   case 2:
-                     y++;
-                     break;
-                   case 3:
-                     x--;
-                     break;
-                   }
-               }
-             
-             if(k<=max_length)
-               {
-                 x = c_idx[i]%width;
-                 y = c_idx[i]/width;
-                 
-                 /* Draw a wall until we hit something. */
-                 while(!corners[x+width*y])
-                   {
-                     open_corners--;
-                     corners[x+width*y] = 1;
-                     switch(dir)
-                       {
-                       case 0:
-                         build_wall(x-1, y-1, 1);
-                         y--;
-                         break;
-                       case 1:
-                         build_wall(x, y, 0);
-                         x++;
-                         break;
-                       case 2:
-                         build_wall(x, y, 3);
-                         y++;
-                         break;
-                       case 3:
-                         build_wall(x-1, y-1, 2);
-                         x--;
-                         break;
-                       }
-                   }
-               }
-           }
-       }
-    }
-
-  /* Free some memory we used. */
-  free(corners);
-  free(c_idx);
-}
-
-/* The original maze creator. Start somewhere. Take a step in a random 
- * direction. Keep doing this until we hit a wall. Then, backtrack until
- * we find a point where we can go in another direction.
- */
-static void
-create_maze (void)    /* create a maze layout given the initialized maze */
-{
-  register int i, newdoor = 0;
-  int logow = 1 + logo_width / grid_width;
-  int logoh = 1 + logo_height / grid_height;
-  
-  /* Maybe we should make a bridge? */
-  if(bridge_p && logo_x>=0 && logow>=3 && logoh>=3)
-    {
-      int bridge_dir, bridge_c;
-
-      bridge_dir = 1+random()%2;
-      if(bridge_dir==1)
-       {
-         if(logoh>=3)
-           bridge_c = logo_y+random()%(logoh-2)+1;
-         else
-           bridge_c = logo_y+random()%logoh;
-       }
-      else
-       {
-         if(logow>=3)
-           bridge_c = logo_x+random()%(logow-2)+1;
-         else
-           bridge_c = logo_x+random()%logow;
-       }
-
-      if(bridge_dir==1)
-       {
-         for(i = logo_x; i < logo_x+logow; i++)
-           {
-             maze[i][bridge_c] &= ~DOOR_IN_TOP;
-           }
-       }
-      else
-       {
-         for(i = logo_y; i < logo_y+logoh; i++)
-           {
-             maze[bridge_c][i] &= ~DOOR_IN_TOP;
-           }
-       }
-    }
-
-  do {
-    move_list[sqnum].x = cur_sq_x;
-    move_list[sqnum].y = cur_sq_y;
-    move_list[sqnum].dir = newdoor;
-    while ( ( newdoor = choose_door() ) == -1 ) { /* pick a door */
-      if ( backup() == -1 ) { /* no more doors ... backup */
-       return; /* done ... return */
-      }
-    }
-    
-    /* mark the out door */
-    maze[cur_sq_x][cur_sq_y] |= ( DOOR_OUT_TOP >> newdoor );
-    
-    switch (newdoor) {
-    case 0: cur_sq_y--;
-      break;
-    case 1: cur_sq_x++;
-      break;
-    case 2: cur_sq_y++;
-      break;
-    case 3: cur_sq_x--;
-      break;
-    }
-    sqnum++;
-    
-    /* mark the in door */
-    maze[cur_sq_x][cur_sq_y] |= ( DOOR_IN_TOP >> ((newdoor+2)%4) );
-    
-    /* if end square set path length and save path */
-    if ( maze[cur_sq_x][cur_sq_y] & END_SQUARE ) {
-      path_length = sqnum;
-      for ( i=0; i<path_length; i++) {
-       save_path[i].x = move_list[i].x;
-       save_path[i].y = move_list[i].y;
-       save_path[i].dir = move_list[i].dir;
-      }
-    }
-    
-  } while (1);
-  
-}
-
-
-static int
-choose_door (void)                                   /* pick a new path */
-{
-  int candidates[3];
-  register int num_candidates;
-  
-  num_candidates = 0;
-  
-  /* top wall */
-  if ( maze[cur_sq_x][cur_sq_y] & DOOR_IN_TOP )
-    goto rightwall;
-  if ( maze[cur_sq_x][cur_sq_y] & DOOR_OUT_TOP )
-    goto rightwall;
-  if ( maze[cur_sq_x][cur_sq_y] & WALL_TOP )
-    goto rightwall;
-  if ( maze[cur_sq_x][cur_sq_y - 1] & DOOR_IN_ANY ) {
-    maze[cur_sq_x][cur_sq_y] |= WALL_TOP;
-    maze[cur_sq_x][cur_sq_y - 1] |= WALL_BOTTOM;
-    draw_wall(cur_sq_x, cur_sq_y, 0, gc);
-    goto rightwall;
-  }
-  candidates[num_candidates++] = 0;
-  
- rightwall:
-  /* right wall */
-  if ( maze[cur_sq_x][cur_sq_y] & DOOR_IN_RIGHT )
-    goto bottomwall;
-  if ( maze[cur_sq_x][cur_sq_y] & DOOR_OUT_RIGHT )
-    goto bottomwall;
-  if ( maze[cur_sq_x][cur_sq_y] & WALL_RIGHT )
-    goto bottomwall;
-  if ( maze[cur_sq_x + 1][cur_sq_y] & DOOR_IN_ANY ) {
-    maze[cur_sq_x][cur_sq_y] |= WALL_RIGHT;
-    maze[cur_sq_x + 1][cur_sq_y] |= WALL_LEFT;
-    draw_wall(cur_sq_x, cur_sq_y, 1, gc);
-    goto bottomwall;
-  }
-  candidates[num_candidates++] = 1;
-  
- bottomwall:
-  /* bottom wall */
-  if ( maze[cur_sq_x][cur_sq_y] & DOOR_IN_BOTTOM )
-    goto leftwall;
-  if ( maze[cur_sq_x][cur_sq_y] & DOOR_OUT_BOTTOM )
-    goto leftwall;
-  if ( maze[cur_sq_x][cur_sq_y] & WALL_BOTTOM )
-    goto leftwall;
-  if ( maze[cur_sq_x][cur_sq_y + 1] & DOOR_IN_ANY ) {
-    maze[cur_sq_x][cur_sq_y] |= WALL_BOTTOM;
-    maze[cur_sq_x][cur_sq_y + 1] |= WALL_TOP;
-    draw_wall(cur_sq_x, cur_sq_y, 2, gc);
-    goto leftwall;
-  }
-  candidates[num_candidates++] = 2;
-  
- leftwall:
-  /* left wall */
-  if ( maze[cur_sq_x][cur_sq_y] & DOOR_IN_LEFT )
-    goto donewall;
-  if ( maze[cur_sq_x][cur_sq_y] & DOOR_OUT_LEFT )
-    goto donewall;
-  if ( maze[cur_sq_x][cur_sq_y] & WALL_LEFT )
-    goto donewall;
-  if ( maze[cur_sq_x - 1][cur_sq_y] & DOOR_IN_ANY ) {
-    maze[cur_sq_x][cur_sq_y] |= WALL_LEFT;
-    maze[cur_sq_x - 1][cur_sq_y] |= WALL_RIGHT;
-    draw_wall(cur_sq_x, cur_sq_y, 3, gc);
-    goto donewall;
-  }
-  candidates[num_candidates++] = 3;
-  
- donewall:
-  if (num_candidates == 0)
-    return ( -1 );
-  if (num_candidates == 1)
-    return ( candidates[0] );
-  return ( candidates[ get_random(num_candidates) ] );
-  
-}
-
-
-static int
-backup (void)                                          /* back up a move */
-{
-  sqnum--;
-  cur_sq_x = move_list[sqnum].x;
-  cur_sq_y = move_list[sqnum].y;
-  return ( sqnum );
-}
-
-
-static void
-draw_maze_border (void)                         /* draw the maze outline */
-{
-  register int i, j;
-  
-  
-  for ( i=0; i<maze_size_x; i++) {
-    if ( maze[i][0] & WALL_TOP ) {
-      XDrawLine(dpy, win, gc,
-               border_x + grid_width * i,
-               border_y,
-               border_x + grid_width * (i+1) - 1,
-               border_y);
-    }
-    if ((maze[i][maze_size_y - 1] & WALL_BOTTOM)) {
-      XDrawLine(dpy, win, gc,
-               border_x + grid_width * i,
-               border_y + grid_height * (maze_size_y) - 1,
-               border_x + grid_width * (i+1) - 1,
-               border_y + grid_height * (maze_size_y) - 1);
-    }
-  }
-  for ( j=0; j<maze_size_y; j++) {
-    if ( maze[maze_size_x - 1][j] & WALL_RIGHT ) {
-      XDrawLine(dpy, win, gc,
-               border_x + grid_width * maze_size_x - 1,
-               border_y + grid_height * j,
-               border_x + grid_width * maze_size_x - 1,
-               border_y + grid_height * (j+1) - 1);
-    }
-    if ( maze[0][j] & WALL_LEFT ) {
-      XDrawLine(dpy, win, gc,
-               border_x,
-               border_y + grid_height * j,
-               border_x,
-               border_y + grid_height * (j+1) - 1);
-    }
-  }
-  
-  if (logo_x != -1)
-    {
-      Window r;
-      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);
-    }
-  draw_solid_square (start_x, start_y, WALL_TOP >> start_dir, tgc);
-  draw_solid_square (end_x, end_y, WALL_TOP >> end_dir, tgc);
-}
-
-
-static void
-draw_wall(int i, int j, int dir, GC gc)                /* draw a single wall */
-{
-  switch (dir) {
-  case 0:
-    XDrawLine(dpy, win, gc,
-             border_x + grid_width * i, 
-             border_y + grid_height * j,
-             border_x + grid_width * (i+1), 
-             border_y + grid_height * j);
-    break;
-  case 1:
-    XDrawLine(dpy, win, gc,
-             border_x + grid_width * (i+1), 
-             border_y + grid_height * j,
-             border_x + grid_width * (i+1), 
-             border_y + grid_height * (j+1));
-    break;
-  case 2:
-    XDrawLine(dpy, win, gc,
-             border_x + grid_width * i, 
-             border_y + grid_height * (j+1),
-             border_x + grid_width * (i+1), 
-             border_y + grid_height * (j+1));
-    break;
-  case 3:
-    XDrawLine(dpy, win, gc,
-             border_x + grid_width * i, 
-             border_y + grid_height * j,
-             border_x + grid_width * i, 
-             border_y + grid_height * (j+1));
-    break;
-  }
-  if(sync_p)
-    XSync(dpy, False);
-}
-
-/* Actually build a wall. */
-static void
-build_wall(i, j, dir)
-     int i, j, dir;
-{
-  /* Draw it on the screen. */
-  draw_wall(i, j, dir, gc);
-  /* Put it in the maze. */
-  switch(dir)
-    {
-    case 0:
-      maze[i][j] |= WALL_TOP;
-      if(j>0)
-       maze[i][j-1] |= WALL_BOTTOM;
-      break;
-    case 1:
-      maze[i][j] |= WALL_RIGHT;
-      if(i<maze_size_x-1)
-       maze[i+1][j] |= WALL_LEFT;
-      break;
-    case 2:
-      maze[i][j] |= WALL_BOTTOM;
-      if(j<maze_size_y-1)
-       maze[i][j+1] |= WALL_TOP;
-      break;
-    case 3:
-      maze[i][j] |= WALL_LEFT;
-      if(i>0)
-       maze[i-1][j] |= WALL_RIGHT;
-      break;
-    }
-}
-
-/* Break out a wall. */
-#if 0
-static void
-break_wall(i, j, dir)
-     int i, j, dir;
-{
-  /* Draw it on the screen. */
-  draw_wall(i, j, dir, erase_gc);
-  /* Put it in the maze. */
-  switch(dir)
-    {
-    case 0:
-      maze[i][j] &= ~WALL_TOP;
-      if(j>0)
-       maze[i][j-1] &= ~WALL_BOTTOM;
-      break;
-    case 1:
-      maze[i][j] &= ~WALL_RIGHT;
-      if(i<maze_size_x-1)
-       maze[i+1][j] &= ~WALL_LEFT;
-      break;
-    case 2:
-      maze[i][j] &= ~WALL_BOTTOM;
-      if(j<maze_size_y-1)
-       maze[i][j+1] &= ~WALL_BOTTOM;
-      break;
-    case 3:
-      maze[i][j] &= ~WALL_LEFT;
-      if(i>0)
-       maze[i-1][j] &= ~WALL_RIGHT;
-      break;
-    }
-}
-#endif /* 0 */
-
-
-static void
-draw_solid_square(int i, int j,          /* draw a solid square in a square */
-                 int dir, GC gc)
-{
-  switch (dir) {
-  case WALL_TOP:
-      XFillRectangle(dpy, win, gc,
-                    border_x + bw + grid_width * i, 
-                    border_y - bw + grid_height * j, 
-                    grid_width - (bw+bw), grid_height);
-      break;
-  case WALL_RIGHT:
-      XFillRectangle(dpy, win, gc,
-                    border_x + bw + grid_width * i, 
-                    border_y + bw + grid_height * j, 
-                    grid_width, grid_height - (bw+bw));
-      break;
-  case WALL_BOTTOM:
-      XFillRectangle(dpy, win, gc,
-                    border_x + bw + grid_width * i, 
-                    border_y + bw + grid_height * j, 
-                    grid_width - (bw+bw), grid_height);
-      break;
-  case WALL_LEFT:
-      XFillRectangle(dpy, win, gc,
-                    border_x - bw + grid_width * i, 
-                    border_y + bw + grid_height * j, 
-                    grid_width, grid_height - (bw+bw));
-      break;
-  }
-  XSync (dpy, False);
-}
-
-int
-longdeadend_p(int x1, int y1, int x2, int y2, int endwall)
-{
-    int dx = x2 - x1, dy = y2 - y1;
-    int sidewalls;
-
-    sidewalls = endwall | (endwall >> 2 | endwall << 2);
-    sidewalls = ~sidewalls & WALL_ANY;
-
-    while((maze[x2][y2] & WALL_ANY) == sidewalls)
-    {
-       x2 += dx;
-       y2 += dy;
-    }
-
-    if((maze[x2][y2] & WALL_ANY) == (sidewalls | endwall))
-    {
-       endwall = (endwall >> 2 | endwall << 2) & WALL_ANY;
-       while(x1 != x2 || y1 != y2)
-       {
-           x1 += dx;
-           y1 += dy;
-           draw_solid_square(x1, y1, endwall, sgc);
-           maze[x1][y1] |= SOLVER_VISIT;
-       }
-       return 1;
-    }
-    else
-       return 0;
-}
-
-/* Find all dead regions -- areas from which the goal cannot be reached --
-   and mark them visited. */
-void
-find_dead_regions(void)
-{
-    int x, y, flipped;
-
-    /* Find all not SOLVER_VISIT squares bordering NOT_DEAD squares
-       and mark them NOT_DEAD also.  Repeat until no more such squares. */
-    maze[start_x][start_y] |= NOT_DEAD;
-    
-    do
-    {
-       flipped = 0;
-       for(x = 0; x < maze_size_x; x++)
-           for(y = 0; y < maze_size_y; y++)
-               if(!(maze[x][y] & (SOLVER_VISIT | NOT_DEAD))
-                  && (   (x && (maze[x-1][y] & NOT_DEAD))
-                      || (y && (maze[x][y-1] & NOT_DEAD))))
-               {
-                   flipped = 1;
-                   maze[x][y] |= NOT_DEAD;
-               }
-       for(x = maze_size_x-1; x >= 0; x--)
-           for(y = maze_size_y-1; y >= 0; y--)
-               if(!(maze[x][y] & (SOLVER_VISIT | NOT_DEAD))
-                  && (   (x != maze_size_x-1 && (maze[x+1][y] & NOT_DEAD))
-                      || (y != maze_size_y-1 && (maze[x][y+1] & NOT_DEAD))))
-               {
-                   flipped = 1;
-                   maze[x][y] |= NOT_DEAD;
-               }
-    }
-    while(flipped);
-
-    for (y = 0; y < maze_size_y; y++)
-      for (x = 0; x < maze_size_x; x++)
-      {
-       if (maze[x][y] & NOT_DEAD)
-         maze[x][y] &= ~NOT_DEAD;
-       else if (!(maze[x][y] & SOLVER_VISIT))
-       {
-         maze[x][y] |= SOLVER_VISIT;
-         if((x < logo_x || x > logo_x + logo_width / grid_width) ||
-            (y < logo_y || y > logo_y + logo_height / grid_height))
-         {
-           if (!maze[x][y] & WALL_ANY)
-             XFillRectangle(dpy, win, ugc,
-                            border_x + bw + grid_width * x,
-                            border_y + bw + grid_height * y,
-                            grid_width - (bw+bw), grid_height - (bw+bw));
-           else
-           {
-             if (! (maze[x][y] & WALL_LEFT))
-               draw_solid_square(x, y, WALL_LEFT, ugc);
-             if (! (maze[x][y] & WALL_RIGHT))
-               draw_solid_square(x, y, WALL_RIGHT, ugc);
-             if (! (maze[x][y] & WALL_TOP))
-               draw_solid_square(x, y, WALL_TOP, ugc);
-             if (! (maze[x][y] & WALL_BOTTOM))
-               draw_solid_square(x, y, WALL_BOTTOM, ugc);
-           }
-         }
-       }
-      }
-    XSync(dpy, False);
-}
-
-static void
-solve_maze (void)                     /* solve it with graphical feedback */
-{
-    int i, dir, from, x, y, ways, bt = 0;
-
-    /* plug up the surrounding wall */
-    maze[end_x][end_y] |= (WALL_TOP >> end_dir);
-    
-    /* initialize search path */
-    i = 0;
-    path[i].x = end_x;
-    path[i].y = end_y;
-    path[i].dir = 0;
-    maze[end_x][end_y] |= SOLVER_VISIT;
-    
-    /* do it */
-    while (1)
-    {
-       if ( maze[path[i].x][path[i].y] & START_SQUARE )
-           return;
-
-       /* Abort solve on expose - cheapo repaint strategy */
-       if (check_events()) return;
-       
-       if (solve_delay) usleep (solve_delay);
-       
-       if(!path[i].dir)
-       {
-           ways = 0;
-           /* First visit this square.  Which adjacent squares are open? */
-           for(dir = WALL_TOP; dir & WALL_ANY; dir >>= 1)
-           {
-               if(maze[path[i].x][path[i].y] & dir)
-                   continue;
-               
-               y = path[i].y - !!(dir & WALL_TOP) + !!(dir & WALL_BOTTOM);
-               x = path[i].x + !!(dir & WALL_RIGHT) - !!(dir & WALL_LEFT);
-               
-               if(maze[x][y] & SOLVER_VISIT)
-                   continue;
-               
-               from = (dir << 2 & WALL_ANY) | (dir >> 2 & WALL_ANY);
-               /* don't enter obvious dead ends */
-               if(((maze[x][y] & WALL_ANY) | from) != WALL_ANY)
-               {
-                   if(!longdeadend_p(path[i].x, path[i].y, x, y, dir))
-                       ways |= dir;
-               }
-               else
-               {
-                   draw_solid_square(x, y, from, sgc);
-                   maze[x][y] |= SOLVER_VISIT;
-               }
-           }
-       }
-       else
-           ways = path[i].ways;
-       /* ways now has a bitmask of open paths. */
-       
-       if(!ways)
-           goto backtrack;
-      
-       x = path[i].x - start_x;
-       y = path[i].y - start_y;
-       /* choice one */
-       if(abs(y) <= abs(x))
-           dir = (x > 0) ? WALL_LEFT : WALL_RIGHT;
-       else
-           dir = (y > 0) ? WALL_TOP : WALL_BOTTOM;
-       
-       if(dir & ways)
-           goto found;
-       
-       /* choice two */
-       switch(dir)
-       {
-       case WALL_LEFT:
-       case WALL_RIGHT:
-           dir = (y > 0) ? WALL_TOP : WALL_BOTTOM; break;
-       case WALL_TOP:
-       case WALL_BOTTOM:
-           dir = (x > 0) ? WALL_LEFT : WALL_RIGHT;
-       }
-       
-       if(dir & ways)
-           goto found;
-       
-       /* choice three */
-       
-       dir = (dir << 2 & WALL_ANY) | (dir >> 2 & WALL_ANY);
-       if(dir & ways)
-           goto found;
-       
-       /* choice four */
-       dir = ways;
-       if(!dir)
-           goto backtrack;
-
-    found:
-       bt = 0;
-       ways &= ~dir;  /* tried this one */
-       
-       y = path[i].y - !!(dir & WALL_TOP) + !!(dir & WALL_BOTTOM);
-       x = path[i].x + !!(dir & WALL_RIGHT) - !!(dir & WALL_LEFT);
-       
-       /* advance in direction dir */
-       path[i].dir = dir;
-       path[i].ways = ways;
-       draw_solid_square(path[i].x, path[i].y, dir, tgc);
-       
-       i++;
-       path[i].dir = 0;
-       path[i].ways = 0;
-       path[i].x = x;
-       path[i].y = y;
-       maze[x][y] |= SOLVER_VISIT;
-       continue;
-
-    backtrack:
-       if(i == 0)
-       {
-           printf("Unsolvable maze.\n");
-           return;
-       }
-
-       if(!bt)
-           find_dead_regions();
-       bt = 1;
-       from = path[i-1].dir;
-       from = (from << 2 & WALL_ANY) | (from >> 2 & WALL_ANY);
-       
-       draw_solid_square(path[i].x, path[i].y, from, cgc);
-       i--;
-    }
-} 
-
-#if 0
-static void
-enter_square (int n)                      /* move into a neighboring square */
-{
-  draw_solid_square( (int)path[n].x, (int)path[n].y, 
-                   (int)path[n].dir, tgc);
-  
-  path[n+1].dir = -1;
-  switch (path[n].dir) {
-  case 0: path[n+1].x = path[n].x;
-    path[n+1].y = path[n].y - 1;
-    break;
-  case 1: path[n+1].x = path[n].x + 1;
-    path[n+1].y = path[n].y;
-    break;
-  case 2: path[n+1].x = path[n].x;
-    path[n+1].y = path[n].y + 1;
-    break;
-  case 3: path[n+1].x = path[n].x - 1;
-    path[n+1].y = path[n].y;
-    break;
-  }
-}
-#endif /* 0 */
-
-
-/*
- *  jmr additions for Jamie Zawinski's <jwz@jwz.org> screensaver stuff,
- *  note that the code above this has probably been hacked about in some
- *  arbitrary way.
- */
-
-char *progclass = "Maze";
-
-char *defaults[] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*gridSize:  0",
-  "*solveDelay:        5000",
-  "*preDelay:  2000000",
-  "*postDelay: 4000000",
-  "*liveColor: green",
-  "*deadColor: red",
-  "*skipColor:  orange",
-  "*surroundColor: slateblue",
-  "*generator:  -1",
-  "*maxLength:  5",
-  "*syncDraw:   False",
-  "*bridge:     False",
-#ifdef XROGER
-  "*logoColor: red3",
-#endif
-  0
-};
-
-XrmOptionDescRec options[] = {
-  { "-grid-size",      ".gridSize",    XrmoptionSepArg, 0 },
-  { "-solve-delay",    ".solveDelay",  XrmoptionSepArg, 0 },
-  { "-pre-delay",      ".preDelay",    XrmoptionSepArg, 0 },
-  { "-post-delay",     ".postDelay",   XrmoptionSepArg, 0 },
-  { "-live-color",     ".liveColor",   XrmoptionSepArg, 0 },
-  { "-dead-color",     ".deadColor",   XrmoptionSepArg, 0 },
-  { "-skip-color",     ".skipColor",   XrmoptionSepArg, 0 },
-  { "-surround-color", ".surroundColor",XrmoptionSepArg, 0 },
-  { "-generator",       ".generator",   XrmoptionSepArg, 0 },
-  { "-max-length",      ".maxLength",   XrmoptionSepArg, 0 },
-  { "-bridge",          ".bridge",      XrmoptionNoArg, "True" },
-  { "-no-bridge",       ".bridge",      XrmoptionNoArg, "False" },
-  { 0, 0, 0, 0 }
-};
-
-#ifdef XROGER
-extern void skull (Display *, Window, GC, GC, int, int, int, int);
-#endif
-
-void
-screenhack(Display *display, Window window)
-{
-  Pixmap gray;
-  int size, root, generator, this_gen;
-  XWindowAttributes xgwa;
-  unsigned long bg, fg, pfg, pbg, lfg, sfg, ufg;
-
-  size = get_integer_resource ("gridSize", "Dimension");
-  root = get_boolean_resource("root", "Boolean");
-  solve_delay = get_integer_resource ("solveDelay", "Integer");
-  pre_solve_delay = get_integer_resource ("preDelay", "Integer");
-  post_solve_delay = get_integer_resource ("postDelay", "Integer");
-  generator = get_integer_resource("generator", "Integer");
-  max_length = get_integer_resource("maxLength", "Integer");
-  bridge_p = get_boolean_resource("bridge", "Boolean");
-
-  if (size < 2) size = 7 + (random () % 30);
-  grid_width = grid_height = size;
-  bw = (size > 6 ? 3 : (size-1)/2);
-
-  dpy = display; win = window; /* the maze stuff uses global variables */
-
-  XGetWindowAttributes (dpy, win, &xgwa);
-
-  x = 0;
-  y = 0;
-
-  set_maze_sizes (xgwa.width, xgwa.height);
-
-  if (! root)
-    {
-      XWindowAttributes xgwa;
-      XGetWindowAttributes (dpy, window, &xgwa);
-      XSelectInput (dpy, win,
-                    xgwa.your_event_mask | ExposureMask |
-                    ButtonPressMask |StructureNotifyMask);
-    }
-  
-  gc  = XCreateGC(dpy, win, 0, 0);
-  cgc = XCreateGC(dpy, win, 0, 0);
-  tgc = XCreateGC(dpy, win, 0, 0);
-  sgc = XCreateGC(dpy, win, 0, 0);
-  ugc = XCreateGC(dpy, win, 0, 0);
-  logo_gc = XCreateGC(dpy, win, 0, 0);
-  erase_gc = XCreateGC(dpy, win, 0, 0);
-  
-  gray = XCreateBitmapFromData (dpy,win,gray1_bits,gray1_width,gray1_height);
-
-  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);
-  XSetForeground (dpy, cgc, pbg);
-  XSetBackground (dpy, cgc, bg);
-  XSetForeground (dpy, tgc, pfg);
-  XSetBackground (dpy, tgc, bg);
-  XSetForeground (dpy, sgc, sfg);
-  XSetBackground (dpy, sgc, bg);
-  XSetForeground (dpy, ugc, ufg);
-  XSetBackground (dpy, ugc, bg);
-  XSetForeground (dpy, logo_gc, lfg);
-  XSetBackground (dpy, logo_gc, bg);
-  XSetForeground (dpy, erase_gc, bg);
-  XSetBackground (dpy, erase_gc, bg);
-
-  XSetStipple (dpy, cgc, gray);
-  XSetFillStyle (dpy, cgc, FillOpaqueStippled);
-  XSetStipple (dpy, sgc, gray);
-  XSetFillStyle (dpy, sgc, FillOpaqueStippled);
-  XSetStipple (dpy, ugc, gray);
-  XSetFillStyle (dpy, ugc, FillOpaqueStippled);
-  
-#ifdef XROGER
-  {
-    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);
-  }
-#else
-  if  (!(logo_map = XCreateBitmapFromData (dpy, win, logo_bits,
-                                          logo_width, logo_height)))
-    {
-      fprintf (stderr, "Can't create logo pixmap\n");
-      exit (1);
-    }
-#endif
-  XMapRaised(dpy, win);
-
-  restart = root;
-
-  sync_p = !(random() % 10);
-
-  while (1) {                            /* primary execution loop [ rhess ] */
-    if (check_events()) continue ;
-    if (restart || stop) goto pop;
-    switch (state) {
-    case 1:
-      initialize_maze();
-      break;
-    case 2:
-      XClearWindow(dpy, win);
-      draw_maze_border();
-      break;
-    case 3:
-      this_gen = generator;
-      if(this_gen<0 || this_gen>2)
-       this_gen = random()%3;
-
-      switch(this_gen)
-       {
-       case 0:
-         create_maze();
-         break;
-       case 1:
-         alt_create_maze();
-         break;
-       case 2:
-         set_create_maze();
-         break;
-       }
-      break;
-    case 4:
-      XSync (dpy, False);
-      usleep (pre_solve_delay);
-      break;
-    case 5:
-      solve_maze();
-      break;
-    case 6:
-      XSync (dpy, False);
-      usleep (post_solve_delay);
-      state = 0 ;
-      erase_full_window(display, window);
-      break;
-    default:
-      abort ();
-    }
-    ++state;
-  pop:
-    if (restart)
-      {
-       static XWindowAttributes wattr;
-       restart = 0;
-       stop = 0;
-       state = 1;
-       XGetWindowAttributes (dpy, win, &wattr);
-       set_maze_sizes (wattr.width, wattr.height);
-       XClearWindow (dpy, win);
-       XSync (dpy, False);
-       sync_p = !(random() % 10);
-      }
-  }
-}
diff --git a/hacks/maze.man b/hacks/maze.man
deleted file mode 100644 (file)
index f482650..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-.TH XScreenSaver 1 "7-mar-93" "X Version 11"
-.SH NAME
-maze \- an automated X11 demo repeatedly creating and solving a random maze
-.SH SYNOPSIS
-.B maze 
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-grid\-size \fIpixels\fP] [\-live\-color \fIcolor\fP] [\-dead\-color \fIcolor\fP] [\-solve\-delay \fIusecs\fP] [\-pre\-delay \fIusecs\fP] [\-post\-delay \fIusecs\fP] [\-generator \fIinteger\fP] [\-max\-length \fIinteger\fP] [\-bridge] [\-no\-bridge]
-.SH DESCRIPTION
-The \fImaze\fP program creates a "random" maze and then solves it with 
-graphical feedback. 
-.SH OPTIONS
-.I maze
-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
-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 \-grid\-size \fIpixels\fP
-The size of each block of the maze, in pixels; default is 0, meaning
-pick a random grid size.
-.TP 8
-.B \-live\-color \fIcolor\fP
-The color of the path.
-.TP 8
-.B \-dead\-color \fIcolor\fP
-The color of the failed path (it is also stippled with a 50% pattern.)
-.TP 8
-.B \-skip\-color \fIcolor\fP
-The maze solver will choose to not go down a path if it can "see" (in a
-straight line) that it is a dead end.  This is the color to use for paths
-that are skipped for this reason.
-.TP 8
-.B \-surround\-color \fIcolor\fP
-If the maze solver ever completely encloses an area within the maze, then
-it knows that the exit is not in there (and in fact the interior of that
-area might not even be reachable.)  It will mark out those cells using this
-color.
-.TP 8
-.B \-solve\-delay \fIinteger\fP
-Delay (in microseconds) between each step of the solution path.
-Default 5000, or about 1/200th second.
-.TP 8
-.B \-pre\-delay \fIinteger\fP
-Delay (in microseconds) between generating a maze and starting to solve it.
-Default 2000000 (2 seconds.)
-.TP 8
-.B \-post\-delay \fIinteger\fP
-Delay (in microseconds) after solving a maze and before generating a new one.
-Default 4000000 (4 seconds.)
-.TP 8
-.B \-generator \fInum\fP
-Sets the algorithm that will be used to generate the mazes. The
-default is \-1, which randomly selects an algorithm for each maze that
-is generated. Generator 0 is the original one, and works by walking
-around randomly until we hit a place we've been before, then
-backtracking and trying a new direction somewhere. Generator 1 picks a
-random spot in the maze, then draws a straight wall from that spot in
-a random direction until it hits another wall (and continues until the
-maze is complete). Generator 2 is based on sets. Initially all cells
-are in different sets. Then two neighboring cells are chosen and if
-they are in different sets, their sets are joined. If they were in the
-same set, a wall is built between them. This continues until the maze is
-complete. 
-
-All generators generate mazes with a certain 'characteristic'. See if you
-can spot them!
-.TP 8
-.B \-max\-length \fInum\fP
-Controls the maximum length of walls drawn in one go by generator 1.
-.TP 8
-.B \-bridge
-.TP 8
-.B \-no\-bridge
-Controls whether or not a 'bridge' will appear over the logo.
-.PP
-Clicking the mouse in the maze window controls it.
-.TP 16
-.B "LeftButton
-Clears the window and restarts maze.
-.TP 16
-.B MiddleButton
-Pause or unpause the program.
-.TP 16
-.B RightButton
-Exit.
-.SH BUGS
-Expose events force a restart of maze.
-
-Mouse actions are based on "raw" values (Button1, Button2 and Button3)
-instead of using the pointer map.
-.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
-.PP
-Copyright \(co 1988 by Sun Microsystems, Inc. Mountain View, CA.
-.PP  
-All Rights Reserved
-.PP
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided that
-the above copyright notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting documentation, and that
-the names of Sun or MIT not be used in advertising or publicity pertaining to
-distribution of the software without specific prior written permission. Sun
-and M.I.T.  make no representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or implied warranty.
-.PP
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN
-NO EVENT SHALL SUN BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-.SH AUTHOR(s)
-.nf
-Zack Weinberg [ Smarter maze-solver ] zack@rabi.phys.columbia.edu
-Johannes Keukelaar [ Generators 1 and 2 ] johannes@nada.kth.se 
-  Royal Institute of Technology, Stockholm, Sweden
-Jim Randell    [ XScreenSaver version ] jmr@mddjmr.fc.hp.com
-  HPLabs, Bristol
-Richard Hess   [ X11 extensions ]      {...}!uunet!cimshop!rhess
-  Consilium, Mountain View, CA
-Dave Lemke     [ X11 version ]         lemke@sun.COM
-  Sun MicroSystems, Mountain View, CA
-Martin Weiss   [ SunView version ]
-  Sun MicroSystems, Mountain View, CA
-.fi
diff --git a/hacks/moire.c b/hacks/moire.c
deleted file mode 100644 (file)
index 9b95c6b..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-/* xscreensaver, Copyright (c) 1997, 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.
- *
- * Concept snarfed from Michael D. Bayne in
- * http://www.go2net.com/internet/deep/1997/04/16/body.html
- */
-
-#include "screenhack.h"
-#include <X11/Xutil.h>
-#include <stdio.h>
-
-#ifdef HAVE_XSHM_EXTENSION
-# include "xshm.h"
-static Bool use_shm;
-static XShmSegmentInfo shm_info;
-#endif /* HAVE_XSHM_EXTENSION */
-
-static int offset = 0;
-static XColor *colors = 0;
-static int ncolors = 0;
-static GC gc = 0;
-static unsigned long fg_pixel = 0;
-static unsigned long bg_pixel = 0;
-
-static void
-init_moire (Display *dpy, Window window)
-{
-  int oncolors;
-  int i;
-  int fgh, bgh;
-  double fgs, fgv, bgs, bgv;
-  XWindowAttributes xgwa;
-  XColor fgc, bgc;
-  XGCValues gcv;
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  offset = get_integer_resource ("offset", "Integer");
-  if (offset < 2) offset = 2;
-
-#ifdef HAVE_XSHM_EXTENSION
-  use_shm = get_boolean_resource("useSHM", "Boolean");
-#endif /*  HAVE_XSHM_EXTENSION */
-
- MONO:
-  if (colors)
-    {
-      for (i = 0; i < ncolors; i++)
-       XFreeColors (dpy, xgwa.colormap, &colors[i].pixel, 1, 0);
-      free(colors);
-      colors = 0;
-    }
-
-  if (mono_p)
-    {
-      fg_pixel = WhitePixelOfScreen (DefaultScreenOfDisplay(dpy));
-      bg_pixel = BlackPixelOfScreen (DefaultScreenOfDisplay(dpy));
-    }
-  else
-    {
-      fg_pixel = get_pixel_resource ("foreground", "Foreground", dpy,
-                                    xgwa.colormap);
-      bg_pixel = get_pixel_resource ("background", "Background", dpy,
-                                    xgwa.colormap);
-    }
-
-  if (mono_p)
-    {
-      offset *= 20;   /* compensate for lack of shading */
-      gcv.foreground = fg_pixel;
-    }
-  else
-    {
-      ncolors = get_integer_resource ("ncolors", "Integer");
-      if (ncolors < 2) ncolors = 2;
-      oncolors = ncolors;
-
-      fgc.flags = bgc.flags = DoRed|DoGreen|DoBlue;
-      if (get_boolean_resource("random","Boolean"))
-       {
-         fgc.red   = random() & 0xFFFF;
-         fgc.green = random() & 0xFFFF;
-         fgc.blue  = random() & 0xFFFF;
-         bgc.red   = random() & 0xFFFF;
-         bgc.green = random() & 0xFFFF;
-         bgc.blue  = random() & 0xFFFF;
-       }
-      else
-       {
-         fgc.pixel = fg_pixel;
-         bgc.pixel = bg_pixel;
-         XQueryColor (dpy, xgwa.colormap, &fgc);
-         XQueryColor (dpy, xgwa.colormap, &bgc);
-       }
-      rgb_to_hsv (fgc.red, fgc.green, fgc.blue, &fgh, &fgs, &fgv);
-      rgb_to_hsv (bgc.red, bgc.green, bgc.blue, &bgh, &bgs, &bgv);
-
-      colors = (XColor *) malloc (sizeof (XColor) * (ncolors+2));
-      memset(colors, 0, (sizeof (XColor) * (ncolors+2)));
-      make_color_ramp (dpy, xgwa.colormap,
-                      fgh, fgs, fgv, bgh, bgs, bgv,
-                      colors, &ncolors,
-                      True, True, False);
-      if (ncolors != oncolors)
-       fprintf(stderr, "%s: got %d of %d requested colors.\n",
-               progname, ncolors, oncolors);
-
-      if (ncolors <= 2)
-       {
-         mono_p = True;
-         goto MONO;
-       }
-
-      gcv.foreground = colors[0].pixel;
-    }
-  gc = XCreateGC (dpy, window, GCForeground, &gcv);
-}
-
-
-static void
-moire (Display *dpy, Window window, int offset, XColor *colors, int ncolors)
-{
-  long x, y, xo, yo;
-  int factor = (random() % offset) + 1;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  XImage *image;
-  int depth;
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  xo = (random() % xgwa.width)  - xgwa.width/2;
-  yo = (random() % xgwa.height) - xgwa.height/2;
-
-  depth = visual_depth(DefaultScreenOfDisplay(dpy), xgwa.visual);
-
-  image = 0;
-# ifdef HAVE_XSHM_EXTENSION
-  if (use_shm)
-    {
-      image = create_xshm_image(dpy, xgwa.visual, depth, ZPixmap, 0,
-                               &shm_info, xgwa.width, 1);
-      if (!image)
-       use_shm = False;
-    }
-# endif /* HAVE_XSHM_EXTENSION */
-
-  if (!image)
-    {
-      image = XCreateImage (dpy, xgwa.visual,
-                           depth, ZPixmap, 0,      /* depth, format, offset */
-                           0, xgwa.width, 1, 8, 0); /* data, w, h, pad, bpl */
-      image->data = (char *) calloc(image->height, image->bytes_per_line);
-    }
-
-  for (y = 0; y < xgwa.height; y++)
-    {
-      for (x = 0; x < xgwa.width; x++)
-       {
-         double xx = x + xo;
-         double yy = y + yo;
-         double i = ((xx * xx) + (yy * yy)) / (double) factor;
-         if (mono_p)
-           gcv.foreground = ((((long) i) & 1) ? fg_pixel : bg_pixel);
-         else
-           gcv.foreground = colors[((long) i) % ncolors].pixel;
-         XPutPixel (image, x, 0, gcv.foreground);
-       }
-
-# ifdef HAVE_XSHM_EXTENSION
-      if (use_shm)
-       XShmPutImage(dpy, window, gc, image, 0, 0, 0, y, xgwa.width, 1, False);
-      else
-# endif /*  HAVE_XSHM_EXTENSION */
-       XPutImage (dpy, window, gc, image, 0, 0, 0, y, xgwa.width, 1);
-
-      XSync(dpy, False);
-    }
-
-# ifdef HAVE_XSHM_EXTENSION
-  if (!use_shm)
-# endif /*  HAVE_XSHM_EXTENSION */
-    if (image->data)
-      {
-       free(image->data);
-       image->data = 0;
-      }
-
-  XDestroyImage (image);
-}
-
-\f
-char *progclass = "Moire";
-
-char *defaults [] = {
-  ".background:                blue",
-  ".foreground:                red",
-  "*random:            true",
-  "*delay:             5",
-  "*ncolors:           64",
-  "*offset:            50",
-#ifdef HAVE_XSHM_EXTENSION
-  "*useSHM:          True",
-#endif /*  HAVE_XSHM_EXTENSION */
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-random",         ".random",      XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-ncolors",                ".ncolors",     XrmoptionSepArg, 0 },
-  { "-offset",         ".offset",      XrmoptionSepArg, 0 },
-#ifdef HAVE_XSHM_EXTENSION
-  { "-shm",            ".useSHM",      XrmoptionNoArg, "True" },
-  { "-no-shm",         ".useSHM",      XrmoptionNoArg, "False" },
-#endif /*  HAVE_XSHM_EXTENSION */
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  int delay = get_integer_resource ("delay", "Integer");
-  while (1)
-    {
-      init_moire (dpy, window);
-      moire (dpy, window, offset, colors, ncolors);
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay)
-       sleep(delay);
-    }
-}
diff --git a/hacks/moire.man b/hacks/moire.man
deleted file mode 100644 (file)
index c810265..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-.TH XScreenSaver 1 "27-Apr-97" "X Version 11"
-.SH NAME
-halo - draw circular interference patterns
-.SH SYNOPSIS
-.B halo
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-random \fIboolean\fP] [\-ncolors \fIint\fP] [\-offset \fIint\fP] 
-.SH DESCRIPTION
-The \fImoire\fP program draws cool circular interference patterns.
-.SH OPTIONS
-.I moire
-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 \fIseconds\fP
-How long to wait before starting over.  Default 5 seconds.
-.TP 8
-.B \-random \fIboolean\fP
-Whether to ignore the foreground/background colors, and pick them randomly
-instead.
-.TP 8
-.B \-offset \fIinteger\fP
-The maximum random radius increment to use.
-.TP 8
-.B \-ncolors \fIinteger\fP
-How many colors should be allocated in the color ramp (note that this
-value interacts with \fIoffset\fP.)
-.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 1997 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 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>, 27-Apr-97, based on code by
-Michael D. Bayne <mdb@go2net.com>.
diff --git a/hacks/moire2.c b/hacks/moire2.c
deleted file mode 100644 (file)
index 67199aa..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-/* xscreensaver, Copyright (c) 1997, 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 "screenhack.h"
-#include <X11/Xutil.h>
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-# include "xdbe.h"
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-static int ncolors;
-static XColor *colors = 0;
-static int fg_pixel, bg_pixel;
-static Pixmap p0 = 0, p1 = 0, p2 = 0, p3 = 0;
-static GC copy_gc = 0, erase_gc = 0, window_gc = 0;
-static int width, height, size;
-static int x1, x2, y1, y2, x3, y3;
-static int dx1, dx2, dx3, dy1, dy2, dy3;
-static int othickness, thickness;
-static Bool do_three;
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-XdbeBackBuffer back_buf = 0;
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-static void
-init_moire2 (Display *dpy, Window window)
-{
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  othickness = get_integer_resource("thickness", "Thickness");
-
-  if (mono_p)
-    ncolors = 2;
-  else
-    ncolors = get_integer_resource ("colors", "Colors");
-  if (ncolors < 2) ncolors = 2;
-  if (ncolors <= 2) mono_p = True;
-
-  if (mono_p)
-    colors = 0;
-  else
-    colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-
-  if (mono_p)
-    ;
-  else
-    make_smooth_colormap (dpy, xgwa.visual, xgwa.colormap, colors, &ncolors,
-                         True, 0, True);
-
-  bg_pixel = get_pixel_resource("background", "Background", dpy,
-                               xgwa.colormap);
-  fg_pixel = get_pixel_resource("foreground", "Foreground", dpy,
-                               xgwa.colormap);
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  back_buf = xdbe_get_backbuffer (dpy, window, XdbeUndefined);
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-}
-
-
-static void
-reset_moire2 (Display *dpy, Window window)
-{
-  GC gc;
-  XWindowAttributes xgwa;
-  XGCValues gcv;
-  Bool xor;
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  do_three = (0 == (random() % 3));
-
-  width = xgwa.width;
-  height = xgwa.height;
-  size = width > height ? width : height;
-
-  if (p0) XFreePixmap(dpy, p0);
-  if (p1) XFreePixmap(dpy, p1);
-  if (p2) XFreePixmap(dpy, p2);
-  if (p3) XFreePixmap(dpy, p3);
-
-  p0 = XCreatePixmap(dpy, window, width, height, 1);
-  p1 = XCreatePixmap(dpy, window, width*2, height*2, 1);
-  p2 = XCreatePixmap(dpy, window, width*2, height*2, 1);
-  if (do_three)
-    p3 = XCreatePixmap(dpy, window, width*2, height*2, 1);
-  else
-    p3 = 0;
-
-  thickness = (othickness > 0 ? othickness : (1 + (random() % 4)));
-
-  gcv.foreground = 0;
-  gcv.line_width = (thickness == 1 ? 0 : thickness);
-  gc = XCreateGC (dpy, p1, GCForeground|GCLineWidth, &gcv);
-
-  XFillRectangle(dpy, p1, gc, 0, 0, width*2, height*2);
-  XFillRectangle(dpy, p2, gc, 0, 0, width*2, height*2);
-  if (do_three)
-    XFillRectangle(dpy, p3, gc, 0, 0, width*2, height*2);
-
-  XSetForeground(dpy, gc, 1);
-
-  xor = (do_three || (thickness == 1) || (random() & 1));
-
-  {
-    int i, ii, maxx, maxy;
-
-#define FROB(P) do { \
-    maxx = (size*4); \
-    maxy = (size*4); \
-    if (0 == (random() % 5)) { \
-       float f = 1.0 + frand(0.05); \
-       if (random() & 1) maxx *= f; \
-       else maxy *= f; \
-      } \
-    ii = (thickness + 1 + (xor ? 0 : 1) + (random() % (4 * thickness)));  \
-    for (i = 0; i < (size*2); i += ii)  \
-      XDrawArc(dpy, (P), gc, i-size, i-size, maxx-i-i, maxy-i-i, 0, 360*64); \
-    if (0 == (random() % 5)) \
-      { \
-       XSetFunction(dpy, gc, GXxor); \
-       XFillRectangle(dpy, (P), gc, 0, 0, width*2, height*2); \
-       XSetFunction(dpy, gc, GXcopy); \
-      } \
-    } while(0)
-
-    FROB(p1);
-    FROB(p2);
-    if (do_three)
-      FROB(p3);
-#undef FROB
-  }
-
-  XFreeGC(dpy, gc);
-
-  if (copy_gc) XFreeGC(dpy, copy_gc);
-  gcv.function = (xor ? GXxor : GXor);
-  gcv.foreground = 1;
-  gcv.background = 0;
-
-  copy_gc = XCreateGC (dpy, p0, GCFunction|GCForeground|GCBackground, &gcv);
-
-  gcv.foreground = 0;
-  if (erase_gc) XFreeGC(dpy, erase_gc);
-  erase_gc = XCreateGC (dpy, p0, GCForeground, &gcv);
-
-  gcv.foreground = fg_pixel;
-  gcv.background = bg_pixel;
-  if (window_gc) XFreeGC(dpy, window_gc);
-  window_gc = XCreateGC (dpy, window, GCForeground|GCBackground, &gcv);
-
-#define FROB(N,DN,MAX) \
-  N = (MAX/2) + (random() % MAX); \
-  DN = ((1 + (random() % (7*thickness))) * ((random() & 1) ? 1 : -1))
-
-  FROB(x1,dx1,width);
-  FROB(x2,dx2,width);
-  FROB(x3,dx3,width);
-  FROB(y1,dy1,height);
-  FROB(y2,dy2,height);
-  FROB(y3,dy3,height);
-#undef FROB
-}
-
-
-
-static void
-moire2 (Display *dpy, Window window)
-{
-#define FROB(N,DN,MAX) \
-  N += DN; \
-  if (N <= 0) N = 0, DN = -DN; \
-  else if (N >= MAX) N = MAX, DN = -DN; \
-  else if (0 == (random() % 100)) DN = -DN; \
-  else if (0 == (random() % 50)) \
-    DN += (DN <= -20 ? 1 : (DN >= 20 ? -1 : ((random() & 1) ? 1 : -1)))
-
-  FROB(x1,dx1,width);
-  FROB(x2,dx2,width);
-  FROB(x3,dx3,width);
-  FROB(y1,dy1,height);
-  FROB(y2,dy2,height);
-  FROB(y3,dy3,height);
-#undef FROB
-
-  XFillRectangle(dpy, p0, erase_gc, 0, 0, width, height);
-  XCopyArea(dpy, p1, p0, copy_gc, x1, y1, width, height, 0, 0);
-  XCopyArea(dpy, p2, p0, copy_gc, x2, y2, width, height, 0, 0);
-  if (do_three)
-    XCopyArea(dpy, p3, p0, copy_gc, x3, y3, width, height, 0, 0);
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  if (back_buf)
-    {
-      XdbeSwapInfo info[1];
-      info[0].swap_window = window;
-      info[0].swap_action = XdbeUndefined;
-      XCopyPlane (dpy, p0, back_buf, window_gc, 0, 0, width, height, 0, 0, 1L);
-      XdbeSwapBuffers (dpy, info, 1);
-    }
-  else
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-    XCopyPlane (dpy, p0, window, window_gc, 0, 0, width, height, 0, 0, 1L);
-
-  XSync(dpy, False);
-
-#if 0
-  XCopyPlane(dpy, p1, window, window_gc, (width*2)/3, (height*2)/3,
-            width/2, height/2,
-            0, height/2, 1L);
-  XCopyPlane(dpy, p2, window, window_gc, (width*2)/3, (height*2)/3,
-            width/2, height/2,
-            width/2, height/2, 1L);
-#endif
-}
-
-
-
-\f
-char *progclass = "Moire2";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*delay:             50000",
-  "*thickness:         0",
-  "*colors:            150",
-  "*colorShift:                5",
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-  /* Off by default, since it slows it down a lot, and the flicker isn't really
-     all that bad without it... Or rather, it flickers just as badly with it.
-     The XFree86 implementation of the XDBE extension totally blows!  There is
-     just *no* excuse for the "swap buffers" operation to flicker like it does.
-   */
-  "*useDBE:            False",
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-ncolors",                ".colors",      XrmoptionSepArg, 0 },
-  { "-thickness",      ".thickness",   XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  int delay = get_integer_resource ("delay", "Integer");
-  int color_shift = get_integer_resource ("colorShift", "Integer");
-  int pix = 0;
-  Bool flip_a, flip_b;
-
-  if (color_shift <= 0) color_shift = 1;
-  init_moire2 (dpy, window);
-  while (1)
-    {
-      int iterations = 30 + (random() % 70) + (random() % 70);
-      reset_moire2 (dpy, window);
-
-      flip_a = mono_p ? False : (random() & 1);
-      flip_b = mono_p ? False : (random() & 1);
-
-      if (flip_b)
-       {
-         XSetForeground(dpy, window_gc, bg_pixel);
-         XSetBackground(dpy, window_gc, fg_pixel);
-       }
-      else
-       {
-         XSetForeground(dpy, window_gc, fg_pixel);
-         XSetBackground(dpy, window_gc, bg_pixel);
-       }
-
-      while (--iterations > 0)
-       {
-         int i;
-
-         if (!mono_p)
-           {
-             pix++;
-             pix = pix % ncolors;
-
-             if (flip_a)
-               XSetBackground(dpy, window_gc, colors[pix].pixel);
-             else
-               XSetForeground(dpy, window_gc, colors[pix].pixel);
-           }
-
-         for (i = 0; i < color_shift; i++)
-           {
-             moire2 (dpy, window);
-              screenhack_handle_events (dpy);
-             if (delay)
-               usleep(delay);
-           }
-       }
-    }
-}
diff --git a/hacks/mountain.c b/hacks/mountain.c
deleted file mode 100644 (file)
index 1853b93..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* mountain -- square grid mountains */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)mountain.c   4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1995 Pascal Pensa <pensa@aurora.unice.fr>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- */
-
-#ifdef STANDALONE
-# define PROGCLASS "Mountain"
-# define HACK_INIT init_mountain
-# define HACK_DRAW draw_mountain
-# define mountain_opts xlockmore_opts
-# define DEFAULTS      "*delay: 0 \n"          \
-                                       "*count: 30 \n"         \
-                                       "*cycles: 100 \n"       \
-                                       "*ncolors: 64 \n"
-# define SMOOTH_COLORS
-#include "xlockmore.h"         /* in xscreensaver distribution */
-#else /* STANDALONE */
-#include "xlock.h"             /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-ModeSpecOpt mountain_opts =
-{0, NULL, 0, NULL, NULL};
-
-/* ~ 5000 Max mountain height (1000 - 10000) */
-#define MAXHEIGHT  (3 * (mp->width + mp->height))
-
-#define WORLDWIDTH 50          /* World size x * y */
-
-#define RANGE_RAND(min,max) ((min) + NRAND((max) - (min)))
-
-typedef struct {
-       int         pixelmode;
-       int         width;
-       int         height;
-       int         x, y;
-       int         offset;
-       int         stage;
-       int         h[WORLDWIDTH][WORLDWIDTH];
-       int         time;       /* up time */
-       int         first;
-       GC          stippled_GC;
-} mountainstruct;
-
-static mountainstruct *mountains = NULL;
-
-static void
-spread(int  (*m)[50], int x, int y)
-{
-       int         x2, y2;
-       int         h = m[x][y];
-
-       for (y2 = y - 1; y2 <= y + 1; y2++)
-               for (x2 = x - 1; x2 <= x + 1; x2++)
-                       if (x2 >= 0 && y2 >= 0 && x2 < WORLDWIDTH && y2 < WORLDWIDTH)
-                               m[x2][y2] = (m[x2][y2] + h) / 2;
-}
-
-static void
-drawamountain(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       mountainstruct *mp = &mountains[MI_SCREEN(mi)];
-       int         x2, y2, x3, y3, y4, y5, c = 0;
-       XPoint      p[5];
-
-       if (MI_NPIXELS(mi) > 2) {
-               c = (mp->h[mp->x][mp->y] + mp->h[mp->x + 1][mp->y] +
-                 mp->h[mp->x][mp->y + 1] + mp->h[mp->x + 1][mp->y + 1]) / 4;
-               c = (c / 10 + mp->offset) % MI_NPIXELS(mi);
-       }
-       x2 = mp->x * (2 * mp->width) / (3 * WORLDWIDTH);
-       y2 = mp->y * (2 * mp->height) / (3 * WORLDWIDTH);
-       p[0].x = (x2 - y2 / 2) + (mp->width / 4);
-       p[0].y = (y2 - mp->h[mp->x][mp->y]) + mp->height / 4;
-
-       x3 = (mp->x + 1) * (2 * mp->width) / (3 * WORLDWIDTH);
-       y3 = mp->y * (2 * mp->height) / (3 * WORLDWIDTH);
-       p[1].x = (x3 - y3 / 2) + (mp->width / 4);
-       p[1].y = (y3 - mp->h[mp->x + 1][mp->y]) + mp->height / 4;
-
-       y4 = (mp->y + 1) * (2 * mp->height) / (3 * WORLDWIDTH);
-       p[2].x = (x3 - y4 / 2) + (mp->width / 4);
-       p[2].y = (y4 - mp->h[mp->x + 1][mp->y + 1]) + mp->height / 4;
-
-       y5 = (mp->y + 1) * (2 * mp->height) / (3 * WORLDWIDTH);
-       p[3].x = (x2 - y5 / 2) + (mp->width / 4);
-       p[3].y = (y5 - mp->h[mp->x][mp->y + 1]) + mp->height / 4;
-
-       p[4].x = p[0].x;
-       p[4].y = p[0].y;
-
-       if (MI_NPIXELS(mi) > 2)
-               XSetForeground(display, gc, MI_PIXEL(mi, c));
-       else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       XFillPolygon(display, window, gc, p, 4, Complex, CoordModeOrigin);
-
-       if (!mp->pixelmode) {
-               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-               XDrawLines(display, window, gc, p, 5, CoordModeOrigin);
-       }
-       mp->x++;
-       if (mp->x == WORLDWIDTH - 1) {
-               mp->y++;
-               mp->x = 0;
-       }
-       if (mp->y == WORLDWIDTH - 1)
-               mp->stage++;
-}
-
-void
-init_mountain(ModeInfo * mi)
-{
-       mountainstruct *mp;
-       int         i, j, x, y;
-       XGCValues   gcv;
-
-       if (mountains == NULL) {
-               if ((mountains = (mountainstruct *) calloc(MI_NUM_SCREENS(mi),
-                                          sizeof (mountainstruct))) == NULL)
-                       return;
-       }
-       mp = &mountains[MI_SCREEN(mi)];
-       mp->width = MI_WIN_WIDTH(mi);
-       mp->height = MI_WIN_HEIGHT(mi);
-       mp->pixelmode = (mp->width + mp->height < 200);
-       mp->stage = 0;
-       mp->time = 0;
-       mp->x = mp->y = 0;
-       if (!mp->first) {
-               mp->first = 1;
-               gcv.foreground = MI_WIN_WHITE_PIXEL(mi);
-               gcv.background = MI_WIN_BLACK_PIXEL(mi);
-
-               mp->stippled_GC = XCreateGC(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                         GCForeground | GCBackground, &gcv);
-       }
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-
-       for (y = 0; y < WORLDWIDTH; y++)
-               for (x = 0; x < WORLDWIDTH; x++)
-                       mp->h[x][y] = 0;
-
-       j = MI_BATCHCOUNT(mi);
-       if (j < 0)
-               j = NRAND(-j) + 1;
-       for (i = 0; i < j; i++)
-               mp->h[RANGE_RAND(1, WORLDWIDTH - 1)][RANGE_RAND(1, WORLDWIDTH - 1)] =
-                       NRAND(MAXHEIGHT);
-
-       for (y = 0; y < WORLDWIDTH; y++)
-               for (x = 0; x < WORLDWIDTH; x++)
-                       spread(mp->h, x, y);
-
-       for (y = 0; y < WORLDWIDTH; y++)
-               for (x = 0; x < WORLDWIDTH; x++) {
-                       mp->h[x][y] = mp->h[x][y] + NRAND(10) - 5;
-                       if (mp->h[x][y] < 10)
-                               mp->h[x][y] = 0;
-               }
-
-       if (MI_NPIXELS(mi) > 2)
-               mp->offset = NRAND(MI_NPIXELS(mi));
-       else
-               mp->offset = 0;
-}
-
-void
-draw_mountain(ModeInfo * mi)
-{
-       mountainstruct *mp = &mountains[MI_SCREEN(mi)];
-
-       switch (mp->stage) {
-               case 0:
-                       drawamountain(mi);
-                       break;
-               case 1:
-                       MI_PAUSE(mi) = 2000000;
-                       /*if (++mp->time > MI_CYCLES(mi)); */
-                       mp->stage++;
-                       break;
-               case 2:
-                       init_mountain(mi);
-                       break;
-       }
-}
-
-void
-release_mountain(ModeInfo * mi)
-{
-       if (mountains != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       mountainstruct *mp = &mountains[screen];
-
-                       XFreeGC(MI_DISPLAY(mi), mp->stippled_GC);
-               }
-               (void) free((void *) mountains);
-               mountains = NULL;
-       }
-}
-
-void
-refresh_mountain(ModeInfo * mi)
-{
-       mountainstruct *mp = &mountains[MI_SCREEN(mi)];
-
-       mp->x = 0;
-       mp->y = 0;
-}
diff --git a/hacks/munch.c b/hacks/munch.c
deleted file mode 100644 (file)
index b3cd735..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-/* munch.c
- * A munching squares implementation for X
- * Tim Showalter <tjs@andrew.cmu.edu>
- * 
- * Copyright 1997, Tim Showalter
- * Permission is granted to copy, modify, and use this as long
- * as this notice remains intact.  No warranties are expressed or implied.
- * CMU Sucks.
- * 
- * Some code stolen from / This is meant to work with
- * xscreensaver, Copyright (c) 1992, 1995, 1996
- * 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.
- */
-
-/* Munching Squares is this simplistic, silly screen hack (according
-   to HAKMEM, discovered by Jackson Wright in 1962) where you take
-   Y = X XOR T and graph it over and over.  According to HAKMEM, it 
-   takes 5 instructions of PDP-1 assembly.  This is a little more
-   complicated than that, mostly X's fault, but it does some other
-   random things.
-
-   http://www.inwap.com/pdp10/hbaker/hakmem/hacks.html#item146
- */
-
-#include <math.h>
-/*#include <assert.h>*/
-#include "screenhack.h"
-
-/* flags for random things.  Must be < log2(random's maximum), incidentially.
- */
-#define SHIFT_KX (0x01)
-#define SHIFT_KT (0x02)
-#define SHIFT_KY (0x04)
-#define GRAV     (0x08)
-
-char *progclass = "Munch";
-
-char *defaults [] = {
-    ".background:      black",
-    ".foreground:      white",
-    "*delay:           5000",
-    "*hold:            100000",
-    "*clear:           50",
-    "*logminwidth:     7",
-    "*shift:           True",
-    "*xor:             True",
-    0
-};
-
-XrmOptionDescRec options [] = {
-    { "-delay",                ".delay",       XrmoptionSepArg, 0 },
-    { "-hold",         ".hold",        XrmoptionSepArg, 0 },
-    { "-clear",         ".clear",       XrmoptionSepArg, "true" },
-    { "-shift",         ".shift",       XrmoptionNoArg, "true" },
-    { "-no-shift",     ".shift",       XrmoptionNoArg, "false" },
-    { "-logminwidth",  ".logminwidth", XrmoptionSepArg, 0 },
-    { "-xor",           ".xor",                XrmoptionNoArg, "true" },
-    { "-no-xor",       ".xor",         XrmoptionNoArg, "false" },
-    { 0, 0, 0, 0 }
-};
-
-
-static GC gc;
-/* only configurable things right now */
-static int delay, hold, clear, logminwidth, shiftk, xor;
-
-static void munchOnce (Display* dpy, Window w,
-                      int width, /* pixels */
-                      int atX, int atY, /* pixels */
-                      int kX, int kT, int kY, /* pixels */
-                      int grav /* 0 or not */) {
-
-    int x, y, t;
-    static Colormap cmap;
-    XWindowAttributes xgwa;
-    XColor fgc;
-    int drawX, drawY;
-
-    /*
-    fprintf(stderr,"Doing width %d at %d %d shift %d %d %d grav %d\n",
-           width, atX, atY, kX, kT, kY, grav);
-           */
-    
-    XGetWindowAttributes (dpy, w, &xgwa);
-
-    if (!mono_p) {
-       /* XXX there are probably bugs with this. */
-       cmap = xgwa.colormap;
-   
-       fgc.red = random() % 65535;
-       fgc.green = random() % 65535;
-       fgc.blue = random() % 65535;
-    
-       if (XAllocColor(dpy, cmap, &fgc)) {
-           XSetForeground(dpy, gc, fgc.pixel);
-       }
-    }
-    
-    /* Finally draw this munching square. */
-    for(t = 0; t < width; t++) {
-       for(x = 0; x < width; x++) {
-           /* figure out the next point */
-           y = ((x ^ ((t + kT) % width)) + kY) % width;
-
-           drawX = ((x + kX) % width) + atX;
-           drawY = (grav ? y + atY : atY + width - 1 - y);
-
-           /* used to be bugs where it would draw partially offscreen.
-              while that might be a pretty feature, I didn't want it to do
-              that yet.  if these trigger, please let me know.
-              */
-/*         assert(drawX >= 0 && drawX < xgwa.width);
-           assert(drawY >= 0 && drawY < xgwa.height);
-*/
-
-           XDrawPoint(dpy, w, gc, drawX, drawY);
-           /* XXX may want to change this to XDrawPoints,
-              but it's fast enough without it for the moment. */
-           
-       }
-       
-       /* we've drawn one pass' worth of points.  let the server catch up
-          or this won't be interesting to watch at all.  we call this here
-          in the hopes of having one whole sequence of dots appear at the
-          same time (one for each value of x, surprisingly enough)
-          */
-       XSync(dpy, False);
-        screenhack_handle_events (dpy);
-       if (delay) usleep(delay);
-    }
-}
-
-/*
- * dumb way to get # of digits in number.  Probably faster than actually
- * doing a log and a division, maybe.
- */
-static int dumb_log_2(int k) {
-    int r = -1;
-    while (k > 0) {
-       k >>= 1; r++;
-    }
-    return r;
-}
-
-/* This parses arguments, initializes the window, etc., and finally starts
- * calling munchOnce ad infinitum.
- */
-void
-screenhack (dpy, w) Display *dpy; Window w;
-{
-    int logmaxwidth;
-    int maxwidth;
-    XWindowAttributes xgwa;
-    Colormap cmap;
-    XGCValues gcv;
-    int n = 0;  /* number of squares before we have to clear */
-    int randflags;
-    int thiswidth;
-    
-    /* get the dimensions of the window */
-    XGetWindowAttributes (dpy, w, &xgwa);
-    
-    /* We need a square; limit on screen size? */
-    /* we want a power of 2 for the width or the munch doesn't fill up.
-     */
-    logmaxwidth = (int)
-       dumb_log_2(xgwa.height < xgwa.width ? xgwa.height : xgwa.width);
-
-    maxwidth = 1 << logmaxwidth;
-
-    if (logmaxwidth < logminwidth) {
-       /* off-by-one error here?  Anyone running on < 640x480? */
-       fprintf(stderr, "munch: screen too small; use -logminwidth\n");
-       fprintf(stderr, "\t(width is %d; log is %d; log must be at least "
-               "%d)\n", 
-               (xgwa.height < xgwa.width ? xgwa.height : xgwa.width),
-               logmaxwidth, logminwidth);
-       exit(0);
-    }
-    
-    /* create the gc */
-    cmap = xgwa.colormap;
-    gcv.foreground= get_pixel_resource("foreground","Foreground",
-                                      dpy, cmap);
-    gcv.background= get_pixel_resource("background","Background",
-                                      dpy, cmap);
-    
-    gc = XCreateGC(dpy, w, GCForeground|GCBackground, &gcv);
-    
-    delay = get_integer_resource ("delay", "Integer");
-    if (delay < 0) delay = 0;
-    
-    hold = get_integer_resource ("hold", "Integer");
-    if (hold < 0) hold = 0;
-    
-    clear = get_integer_resource ("clear", "Integer");
-    if (clear < 0) clear = 0;
-
-    logminwidth = get_integer_resource ("logminwidth", "Integer");
-    if (logminwidth < 2) logminwidth = 2;
-
-    shiftk = get_boolean_resource("shift", "Boolean");
-
-    xor = get_boolean_resource("xor", "Boolean");
-
-    /* always draw xor on mono. */
-    if (mono_p || xor) {
-       XSetFunction(dpy, gc, GXxor);
-    }
-
-    for(;;) {
-       /* saves some calls to random.  big deal */
-       randflags = random();
-
-       /* choose size -- power of two */
-       thiswidth = 1 << (logminwidth +
-                         (random() % (1 + logmaxwidth - logminwidth)));
-
-       munchOnce(dpy, w,
-                 thiswidth, /* Width, in pixels */
-                 
-                 /* draw at this location */
-                 (random() % (xgwa.width <= thiswidth ? 1
-                              : xgwa.width - thiswidth)),
-                 (random() % (xgwa.height <= thiswidth ? 1
-                              : xgwa.width - thiswidth)),
-                 
-                 /* wrap-around by these values; no need to %
-                    as we end up doing that later anyway*/
-                 ((shiftk && (randflags & SHIFT_KX))
-                  ? (random() % thiswidth) : 0),
-                 ((shiftk && (randflags & SHIFT_KT))
-                  ? (random() % thiswidth) : 0),
-                 ((shiftk && (randflags & SHIFT_KY))
-                  ? (random() % thiswidth) : 0),
-                 
-                 /* set the gravity of the munch, or rather,
-                    which direction we draw stuff in. */
-                 (randflags & GRAV)
-                 );
-       
-        screenhack_handle_events (dpy);
-       if (hold) usleep(hold);
-       
-       if (clear && ++n >= clear) {
-           XClearWindow(dpy, w);
-           n = 0;
-       }
-    }
-}
diff --git a/hacks/munch.man b/hacks/munch.man
deleted file mode 100644 (file)
index 97b1b79..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-.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 "17-Jun-97" "X Version 11"
-.SH NAME
-munch - munching squares screen hack
-.SH SYNOPSIS
-.B munch
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-xor] [\-noxor] [\-shift]
-[\-noshift] [\-logminwidth \fIminimum width\fP]
-.SH DESCRIPTION
-The
-.I munch
-program preforms the munching squares hack until killed.  It picks square
-size, position, and gravity randomly; configurable options are listed
-below.
-.PP
-The munching squares hack cosists of drawing Y = X XOR T for a range of X
-and T over and over until all the possible combinations of X and T have
-come up.  It was reportedly discovered by Jackson Wright in 1962 and took 5
-instructions of PDP-6 code.
-.SH OPTIONS
-.I munch
-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 \fIseconds\fP
-How long to wait before starting over.  Default 5 seconds.
-.TP 8
-.B \-xor
-Use the XOR drawing function.  (Default.)
-.TP 8
-.B \-no\-xor
-Don't use the XOR drawing function.
-.TP 8
-.B \-shift
-Start drawing the square at weird starting points.  (Default.)
-.TP 8
-.B \-no\-shift
-Don't shift and start drawing the square at weird starting points.
-.TP 8
-.B \-logminwidth \fIminimum\-width\fP
-The logarithm (base 2) of the minimum with of a square (must be a power of
-2, or some parts of the square aren't.)
-.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),
-.BR http://www.inwap.com/pdp10/hbaker/hakmem/hakmem.html,
-.BR http://www.comedia.com/Hot/jargon_3.0/JARGON_M/MUNCHSQR.HTML
-.SH HISTORY
-Quoted from HAKMEM, for historical interest.  As that document says, "Unless
-otherwise stated, all computer programs are in PDP-6/10 assembly language."
-.TP 8
-ITEM 146: MUNCHING SQUARES
-Another simple display program. It is thought that this was discovered by
-Jackson Wright on the RLE PDP-1 circa 1962.
-
-.EX
-    DATAI 2
-    ADDB 1,2
-    ROTC 2,-22
-    XOR 1,2
-    JRST .-4
-.EE
-.RS 8
-2=X, 3=Y. Try things like 1001002 in data switches. This also does
-interesting things with operations other than XOR, and rotations other 
-than -22. (Try IOR; AND; TSC; FADR; FDV(!); ROT -14, -9, -20, ...)
-.RE
-.TP 8
-ITEM 147 (Schroeppel):
-Munching squares is just views of the graph Y = X XOR T for consecutive
-values of T = time.
-.TP 8
-ITEM 148 (Cohen, Beeler):
-A modification to munching squares which reveals them in frozen states
-through opening and closing curtains: insert FADR 2,1 before the XOR. Try
-data switches =
-
-.EX
-    4000,,4    1000,,2002    2000,,4    0,,1002
-.EE
-.RS 8
-(Notation: <left half>,,<right half>)
-
-Also try the FADR after the XOR, switches = 1001,,1. 
-.SH COPYRIGHT
-Copyright \(co 1997 by Tim Showalter.  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
-Tim Showalter <tjs@andrew.cmu.edu>, 17-Jun-97, based on what's in the
-Jargon File and stealing stuff from existing xscreensaver modules.
diff --git a/hacks/noseguy.c b/hacks/noseguy.c
deleted file mode 100644 (file)
index f0fa57f..0000000
+++ /dev/null
@@ -1,723 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1996, 1997, 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.
- */
-
-/* Make a little guy with a big nose and a hat wanter around the screen,
-   spewing out messages.  Derived from xnlock by Dan Heller <argv@sun.com>.
- */
-
-#include "screenhack.h"
-#include <stdio.h>
-
-extern FILE *popen (const char *, const char *);
-extern int pclose (FILE *);
-
-#define font_height(font)              (font->ascent + font->descent)
-#define FONT_NAME                      "-*-times-*-*-*-*-18-*-*-*-*-*-*-*"
-
-static Display *dpy;
-static Window window;
-static int Width, Height;
-static GC fg_gc, bg_gc, text_fg_gc, text_bg_gc;
-static char *words;
-static char *get_words (void);
-static int x, y;
-static XFontStruct *font;
-static char *def_words = "I'm out running around.";
-static void walk (int dir);
-static void talk (int erase);
-static void talk_1 (void);
-static int think (void);
-static unsigned long interval;
-static unsigned long look (void); 
-static Pixmap left1, left2, right1, right2;
-static Pixmap left_front, right_front, front, down;
-
-static char *program, *orig_program, *filename, *text;
-
-#define FROM_ARGV    1
-#define FROM_PROGRAM 2
-#define FROM_FILE    3
-#define FROM_RESRC   4
-static int getwordsfrom;
-
-#define IS_MOVING  1
-#define GET_PASSWD 2
-static int state;      /* indicates states: walking or getting passwd */
-
-static void (*next_fn) (void);
-
-#ifdef HAVE_XPM
-# include <X11/xpm.h>
-
-# include "images/noseguy/nose-f1.xpm"
-# include "images/noseguy/nose-f2.xpm"
-# include "images/noseguy/nose-f3.xpm"
-# include "images/noseguy/nose-f4.xpm"
-# include "images/noseguy/nose-l1.xpm"
-# include "images/noseguy/nose-l2.xpm"
-# include "images/noseguy/nose-r1.xpm"
-# include "images/noseguy/nose-r2.xpm"
-#else
-# include "images/noseguy/nose-f1.xbm"
-# include "images/noseguy/nose-f2.xbm"
-# include "images/noseguy/nose-f3.xbm"
-# include "images/noseguy/nose-f4.xbm"
-# include "images/noseguy/nose-l1.xbm"
-# include "images/noseguy/nose-l2.xbm"
-# include "images/noseguy/nose-r1.xbm"
-# include "images/noseguy/nose-r2.xbm"
-#endif
-
-static void
-init_images (void)
-{
-  static Pixmap *images[] = {
-    &left1, &left2, &right1, &right2,
-    &left_front, &right_front, &front, &down
-  };
-  int i;
-#ifdef HAVE_XPM
-  static char **bits[] = {
-    nose_l1_xpm, nose_l2_xpm, nose_r1_xpm, nose_r2_xpm,
-    nose_f2_xpm, nose_f3_xpm, nose_f1_xpm, nose_f4_xpm
-  };
-  for (i = 0; i < sizeof (images) / sizeof(*images); i++)
-    {
-      XWindowAttributes xgwa;
-      XpmAttributes xpmattrs;
-      Pixmap pixmap = 0;
-      int result;
-      xpmattrs.valuemask = 0;
-
-      XGetWindowAttributes (dpy, window, &xgwa);
-
-# ifdef XpmCloseness
-      xpmattrs.valuemask |= XpmCloseness;
-      xpmattrs.closeness = 40000;
-# endif
-# ifdef XpmVisual
-      xpmattrs.valuemask |= XpmVisual;
-      xpmattrs.visual = xgwa.visual;
-# endif
-# ifdef XpmDepth
-      xpmattrs.valuemask |= XpmDepth;
-      xpmattrs.depth = xgwa.depth;
-# endif
-# ifdef XpmColormap
-      xpmattrs.valuemask |= XpmColormap;
-      xpmattrs.colormap = xgwa.colormap;
-# endif
-
-      result = XpmCreatePixmapFromData(dpy, window, bits[i],
-                                      &pixmap, 0 /* mask */, &xpmattrs);
-      if (!pixmap || (result != XpmSuccess && result != XpmColorError))
-       {
-         fprintf (stderr, "%s: Can't load nose images\n", progname);
-         exit (1);
-       }
-      *images[i] = pixmap;
-    }
-#else
-  static unsigned char *bits[] = {
-    nose_l1_bits, nose_l2_bits, nose_r1_bits, nose_r2_bits,
-    nose_f2_bits, nose_f3_bits, nose_f1_bits, nose_f4_bits
-  };
-
-  for (i = 0; i < sizeof (images) / sizeof(*images); i++)
-    if (!(*images[i] =
-         XCreatePixmapFromBitmapData(dpy, window,
-                                     (char *) bits[i], 64, 64, 1, 0, 1)))
-      {
-       fprintf (stderr, "%s: Can't load nose images\n", progname);
-       exit (1);
-      }
-#endif
-}
-
-#define LEFT   001
-#define RIGHT  002
-#define DOWN   004
-#define UP     010
-#define FRONT  020
-#define X_INCR 3
-#define Y_INCR 2
-
-static void
-move (void)
-{
-    static int      length,
-                    dir;
-
-    if (!length)
-    {
-       register int    tries = 0;
-       dir = 0;
-       if ((random() & 1) && think())
-       {
-           talk(0);            /* sets timeout to itself */
-           return;
-       }
-       if (!(random() % 3) && (interval = look()))
-       {
-           next_fn = move;
-           return;
-       }
-       interval = 20 + random() % 100;
-       do
-       {
-           if (!tries)
-               length = Width / 100 + random() % 90, tries = 8;
-           else
-               tries--;
-           switch (random() % 8)
-           {
-           case 0:
-               if (x - X_INCR * length >= 5)
-                   dir = LEFT;
-               break;
-           case 1:
-               if (x + X_INCR * length <= Width - 70)
-                   dir = RIGHT;
-               break;
-           case 2:
-               if (y - (Y_INCR * length) >= 5)
-                   dir = UP, interval = 40;
-               break;
-           case 3:
-               if (y + Y_INCR * length <= Height - 70)
-                   dir = DOWN, interval = 20;
-               break;
-           case 4:
-               if (x - X_INCR * length >= 5 && y - (Y_INCR * length) >= 5)
-                   dir = (LEFT | UP);
-               break;
-           case 5:
-               if (x + X_INCR * length <= Width - 70 &&
-                   y - Y_INCR * length >= 5)
-                   dir = (RIGHT | UP);
-               break;
-           case 6:
-               if (x - X_INCR * length >= 5 &&
-                   y + Y_INCR * length <= Height - 70)
-                   dir = (LEFT | DOWN);
-               break;
-           case 7:
-               if (x + X_INCR * length <= Width - 70 &&
-                   y + Y_INCR * length <= Height - 70)
-                   dir = (RIGHT | DOWN);
-               break;
-           default:
-               /* No Defaults */
-               break;
-           }
-       } while (!dir);
-    }
-    walk(dir);
-    --length;
-    next_fn = move;
-}
-
-#ifdef HAVE_XPM
-# define COPY(dpy,frame,window,gc,x,y,w,h,x2,y2) \
-  XCopyArea (dpy,frame,window,gc,x,y,w,h,x2,y2)
-#else
-# define COPY(dpy,frame,window,gc,x,y,w,h,x2,y2) \
-  XCopyPlane(dpy,frame,window,gc,x,y,w,h,x2,y2,1L)
-#endif
-
-static void
-walk(int dir)
-{
-    register int    incr = 0;
-    static int      lastdir;
-    static int      up = 1;
-    static Pixmap   frame;
-
-    if (dir & (LEFT | RIGHT))
-    {                          /* left/right movement (mabye up/down too) */
-       up = -up;               /* bouncing effect (even if hit a wall) */
-       if (dir & LEFT)
-       {
-           incr = X_INCR;
-           frame = (up < 0) ? left1 : left2;
-       }
-       else
-       {
-           incr = -X_INCR;
-           frame = (up < 0) ? right1 : right2;
-       }
-       if ((lastdir == FRONT || lastdir == DOWN) && dir & UP)
-       {
-
-           /*
-            * workaround silly bug that leaves screen dust when guy is
-            * facing forward or down and moves up-left/right.
-            */
-           COPY(dpy, frame, window, fg_gc, 0, 0, 64, 64, x, y);
-           XFlush(dpy);
-       }
-       /* note that maybe neither UP nor DOWN is set! */
-       if (dir & UP && y > Y_INCR)
-           y -= Y_INCR;
-       else if (dir & DOWN && y < Height - 64)
-           y += Y_INCR;
-    }
-    /* Explicit up/down movement only (no left/right) */
-    else if (dir == UP)
-       COPY(dpy, front, window, fg_gc, 0, 0, 64, 64, x, y -= Y_INCR);
-    else if (dir == DOWN)
-       COPY(dpy, down, window, fg_gc, 0, 0, 64, 64, x, y += Y_INCR);
-    else if (dir == FRONT && frame != front)
-    {
-       if (up > 0)
-           up = -up;
-       if (lastdir & LEFT)
-           frame = left_front;
-       else if (lastdir & RIGHT)
-           frame = right_front;
-       else
-           frame = front;
-       COPY(dpy, frame, window, fg_gc, 0, 0, 64, 64, x, y);
-    }
-    if (dir & LEFT)
-       while (--incr >= 0)
-       {
-           COPY(dpy, frame, window, fg_gc, 0, 0, 64, 64, --x, y + up);
-           XFlush(dpy);
-       }
-    else if (dir & RIGHT)
-       while (++incr <= 0)
-       {
-           COPY(dpy, frame, window, fg_gc, 0, 0, 64, 64, ++x, y + up);
-           XFlush(dpy);
-       }
-    lastdir = dir;
-}
-
-static int
-think (void)
-{
-    if (random() & 1)
-       walk(FRONT);
-    if (random() & 1)
-    {
-       if (getwordsfrom == FROM_PROGRAM)
-           words = get_words();
-       return 1;
-    }
-    return 0;
-}
-
-#define MAXLINES 40
-
-static void
-talk(int force_erase)
-{
-    int             width = 0,
-                    height,
-                    Z,
-                    total = 0;
-    static int      X,
-                    Y,
-                    talking;
-    static struct
-    {
-       int             x,
-                       y,
-                       width,
-                       height;
-    }               s_rect;
-    register char  *p,
-                   *p2;
-    char            buf[BUFSIZ],
-                    args[MAXLINES][256];
-
-    /* clear what we've written */
-    if (talking || force_erase)
-    {
-       if (!talking)
-           return;
-       XFillRectangle(dpy, window, bg_gc, s_rect.x - 5, s_rect.y - 5,
-                      s_rect.width + 10, s_rect.height + 10);
-       talking = 0;
-       if (!force_erase)
-         next_fn = move;
-       interval = 0;
-       {
-         /* might as well check the window for size changes now... */
-         XWindowAttributes xgwa;
-         XGetWindowAttributes (dpy, window, &xgwa);
-         Width = xgwa.width + 2;
-         Height = xgwa.height + 2;
-       }
-       return;
-    }
-    talking = 1;
-    walk(FRONT);
-    p = strcpy(buf, words);
-
-    if (!(p2 = strchr(p, '\n')) || !p2[1])
-      {
-       total = strlen (words);
-       strcpy (args[0], words);
-       width = XTextWidth(font, words, total);
-       height = 0;
-      }
-    else
-      /* p2 now points to the first '\n' */
-      for (height = 0; p; height++)
-       {
-         int             w;
-         *p2 = 0;
-         if ((w = XTextWidth(font, p, p2 - p)) > width)
-           width = w;
-         total += p2 - p;      /* total chars; count to determine reading
-                                * time */
-         (void) strcpy(args[height], p);
-         if (height == MAXLINES - 1)
-           {
-             puts("Message too long!");
-             break;
-           }
-         p = p2 + 1;
-         if (!(p2 = strchr(p, '\n')))
-           break;
-       }
-    height++;
-
-    /*
-     * Figure out the height and width in pixels (height, width) extend the
-     * new box by 15 pixels on the sides (30 total) top and bottom.
-     */
-    s_rect.width = width + 30;
-    s_rect.height = height * font_height(font) + 30;
-    if (x - s_rect.width - 10 < 5)
-       s_rect.x = 5;
-    else if ((s_rect.x = x + 32 - (s_rect.width + 15) / 2)
-            + s_rect.width + 15 > Width - 5)
-       s_rect.x = Width - 15 - s_rect.width;
-    if (y - s_rect.height - 10 < 5)
-       s_rect.y = y + 64 + 5;
-    else
-       s_rect.y = y - 5 - s_rect.height;
-
-    XFillRectangle(dpy, window, text_bg_gc,
-        s_rect.x, s_rect.y, s_rect.width, s_rect.height);
-
-    /* make a box that's 5 pixels thick. Then add a thin box inside it */
-    XSetLineAttributes(dpy, text_fg_gc, 5, 0, 0, 0);
-    XDrawRectangle(dpy, window, text_fg_gc,
-                  s_rect.x, s_rect.y, s_rect.width - 1, s_rect.height - 1);
-    XSetLineAttributes(dpy, text_fg_gc, 0, 0, 0, 0);
-    XDrawRectangle(dpy, window, text_fg_gc,
-        s_rect.x + 7, s_rect.y + 7, s_rect.width - 15, s_rect.height - 15);
-
-    X = 15;
-    Y = 15 + font_height(font);
-
-    /* now print each string in reverse order (start at bottom of box) */
-    for (Z = 0; Z < height; Z++)
-    {
-       XDrawString(dpy, window, text_fg_gc, s_rect.x + X, s_rect.y + Y,
-                   args[Z], strlen(args[Z]));
-       Y += font_height(font);
-    }
-    interval = (total / 15) * 1000;
-    if (interval < 2000) interval = 2000;
-    next_fn = talk_1;
-}
-
-static void talk_1 (void) 
-{
-  talk(0);
-}
-
-
-static unsigned long
-look (void)
-{
-    if (random() % 3)
-    {
-       COPY(dpy, (random() & 1) ? down : front, window, fg_gc,
-            0, 0, 64, 64, x, y);
-       return 1000L;
-    }
-    if (!(random() % 5))
-       return 0;
-    if (random() % 3)
-    {
-       COPY(dpy, (random() & 1) ? left_front : right_front,
-            window, fg_gc, 0, 0, 64, 64, x, y);
-       return 1000L;
-    }
-    if (!(random() % 5))
-       return 0;
-    COPY(dpy, (random() & 1) ? left1 : right1, window, fg_gc,
-        0, 0, 64, 64, x, y);
-    return 1000L;
-}
-
-
-static void
-init_words (void)
-{
-  char *mode = get_string_resource ("mode", "Mode");
-
-  program = get_string_resource ("program", "Program");
-  filename = get_string_resource ("filename", "Filename");
-  text = get_string_resource ("text", "Text");
-
-  if (program) /* get stderr on stdout, so it shows up on the window */
-    {
-      orig_program = program;
-      program = (char *) malloc (strlen (program) + 10);
-      strcpy (program, "( ");
-      strcat (program, orig_program);
-      strcat (program, " ) 2>&1");
-    }
-
-  if (!mode || !strcmp (mode, "program"))
-    getwordsfrom = FROM_PROGRAM;
-  else if (!strcmp (mode, "file"))
-    getwordsfrom = FROM_FILE;
-  else if (!strcmp (mode, "string"))
-    getwordsfrom = FROM_RESRC;
-  else
-    {
-      fprintf (stderr,
-              "%s: mode must be program, file, or string, not %s\n",
-              progname, mode);
-      exit (1);
-    }
-
-  if (getwordsfrom == FROM_PROGRAM && !program)
-    {
-      fprintf (stderr, "%s: no program specified.\n", progname);
-      exit (1);
-    }
-  if (getwordsfrom == FROM_FILE && !filename)
-    {
-      fprintf (stderr, "%s: no file specified.\n", progname);
-      exit (1);
-    }
-
-  words = get_words(); 
-}
-
-static int first_time = 1;
-
-static char *
-get_words (void)
-{
-    FILE           *pp;
-    static char     buf[BUFSIZ];
-    register char  *p = buf;
-
-    buf[0] = '\0';
-
-    switch (getwordsfrom)
-    {
-    case FROM_PROGRAM:
-#ifndef VMS
-       if ((pp = popen(program, "r")))
-       {
-           while (fgets(p, sizeof(buf) - strlen(buf), pp))
-           {
-               if (strlen(buf) + 1 < sizeof(buf))
-                   p = buf + strlen(buf);
-               else
-                   break;
-           }
-           (void) pclose(pp);
-           if (! buf[0])
-             sprintf (buf, "\"%s\" produced no output!", orig_program);
-           else if (!first_time &&
-                    (strstr (buf, ": not found") ||
-                     strstr (buf, ": Not found") ||
-                      strstr (buf, ": command not found") ||
-                      strstr (buf, ": Command not found")))
-             switch (random () % 20)
-               {
-               case 1: strcat (buf, "( Get with the program, bub. )\n");
-                 break;
-               case 2: strcat (buf,
-                 "( I blow my nose at you, you silly person! ) \n"); break;
-               case 3: strcat (buf,
-                 "\nThe resource you want to\nset is `noseguy.program'\n");
-                 break;
-               case 4:
-                 strcat(buf,"\nHelp!!  Help!!\nAAAAAAGGGGHHH!!  \n\n"); break;
-               case 5: strcpy (buf, "You have new mail.\n"); break;
-               case 6:
-                 strcat(buf,"( Hello?  Are you paying attention? )\n");break;
-               case 7:
-                 strcat (buf, "sh: what kind of fool do you take me for? \n");
-                 break;
-               }
-           first_time = 0;
-           p = buf;
-       }
-       else
-       {
-           perror(program);
-           p = def_words;
-       }
-       break;
-#endif /* VMS */
-    case FROM_FILE:
-       if ((pp = fopen(filename, "r")))
-       {
-           while (fgets(p, sizeof(buf) - strlen(buf), pp))
-           {
-               if (strlen(buf) + 1 < sizeof(buf))
-                   p = buf + strlen(buf);
-               else
-                   break;
-           }
-           (void) fclose(pp);
-           if (! buf[0])
-             sprintf (buf, "file \"%s\" is empty!", filename);
-           p = buf;
-       }
-       else
-       {
-         sprintf (buf, "couldn't read file \"%s\"!", filename);
-         p = buf;
-       }
-       break;
-    case FROM_RESRC:
-       p = text;
-       break;
-    default:
-       p = def_words;
-       break;
-    }
-
-    if (!p || *p == '\0')
-       p = def_words;
-    return p;
-}
-
-
-\f
-char *progclass = "Noseguy";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                gray80",
-#ifndef VMS
-  "*mode:              program",
-#else
-  "*mode:              string",
-#endif
-  "*program:           " ZIPPY_PROGRAM,
-  "noseguy.font:       -*-new century schoolbook-*-r-*-*-*-180-*-*-*-*-*-*",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-mode",           ".mode",                XrmoptionSepArg, 0 },
-  { "-program",                ".program",             XrmoptionSepArg, 0 },
-  { "-text",           ".text",                XrmoptionSepArg, 0 },
-  { "-filename",       ".filename",            XrmoptionSepArg, 0 },
-  { "-font",           ".font",                XrmoptionSepArg, 0 },
-  { "-text-foreground",        ".textForeground",      XrmoptionSepArg, 0 },
-  { "-text-background",        ".textBackground",      XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-
-static void
-noseguy_init (Display *d, Window w)
-{
-  unsigned long fg, bg, text_fg, text_bg;
-  XWindowAttributes xgwa;
-  Colormap cmap;
-  char *fontname = get_string_resource ("font", "Font");
-  char **list;
-  int foo, i;
-  XGCValues gcvalues;
-  dpy = d;
-  window = w;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  Width = xgwa.width + 2;
-  Height = xgwa.height + 2;
-  cmap = xgwa.colormap;
-
-  init_words();
-  init_images();
-
-  if (!fontname || !(font = XLoadQueryFont(dpy, fontname)))
-    {
-       list = XListFonts(dpy, FONT_NAME, 32767, &foo);
-       for (i = 0; i < foo; i++)
-           if ((font = XLoadQueryFont(dpy, list[i])))
-               break;
-       if (!font)
-         {
-           fprintf (stderr, "%s: Can't find a large font.", progname);
-           exit (1);
-         }
-       XFreeFontNames(list);
-    }
-
-  fg = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  bg = get_pixel_resource ("background", "Background", dpy, cmap);
-  text_fg = get_pixel_resource ("textForeground", "Foreground", dpy, cmap);
-  text_bg = get_pixel_resource ("textBackground", "Background", dpy, cmap);
-  /* notice when unspecified */
-  if (! get_string_resource ("textForeground", "Foreground"))
-    text_fg = bg;
-  if (! get_string_resource ("textBackground", "Background"))
-    text_bg = fg;
-
-  gcvalues.font = font->fid;
-  gcvalues.graphics_exposures = False;
-  gcvalues.foreground = fg;
-  gcvalues.background = bg;
-  fg_gc = XCreateGC (dpy, window,
-                    GCForeground|GCBackground|GCGraphicsExposures|GCFont,
-                    &gcvalues);
-  gcvalues.foreground = bg;
-  gcvalues.background = fg;
-  bg_gc = XCreateGC (dpy, window,
-                    GCForeground|GCBackground|GCGraphicsExposures|GCFont,
-                    &gcvalues);
-  gcvalues.foreground = text_fg;
-  gcvalues.background = text_bg;
-  text_fg_gc = XCreateGC (dpy, window,
-                         GCForeground|GCBackground|GCGraphicsExposures|GCFont,
-                         &gcvalues);
-  gcvalues.foreground = text_bg;
-  gcvalues.background = text_fg;
-  text_bg_gc = XCreateGC (dpy, window,
-                         GCForeground|GCBackground|GCGraphicsExposures|GCFont,
-                         &gcvalues);
-  x = Width / 2;
-  y = Height / 2;
-  state = IS_MOVING;
-}
-     
-void
-screenhack (Display *d, Window w)
-{
-  noseguy_init (d, w);
-  next_fn = move;
-  while (1)
-    {
-      next_fn();
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      usleep (interval * 1000);
-    }
-}
-
diff --git a/hacks/noseguy.man b/hacks/noseguy.man
deleted file mode 100644 (file)
index f23746b..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-.TH XScreenSaver 1 "13-aug-92" "X Version 11"
-.SH NAME
-noseguy - a little guy with a big nose wanders around being witty
-.SH SYNOPSIS
-.B noseguy
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-text-foreground \fIcolor\fP] [\-text-background \fIcolor\fP] [\-font \fIfont\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-mode \fImode\fP] [\-program \fIprogram\fP] [\-filename \file\fP] [\-text \fItext\fP]
-.SH DESCRIPTION
-A little man with a big nose and a hat runs around spewing out messages to
-the screen.  This code (and its bitmaps) were extracted from the \fIxnlock\fP
-program.
-.SH OPTIONS
-.I noseguy
-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
-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 \-font \fIfont\fP
-The font used for the messages.
-.TP 8
-.B \-mode [ program | file | string ]
-In \fIprogram\fP mode, the messages are gotten by running a program.
-The program used is controlled by the \fI\-program\fP option, and 
-the \fI.program\fP resource.
-
-In \fIfilename\fP mode, the message used is the contents of a file.
-The file used is controlled by the \fI\-file\fP option, and 
-the \fI.filename\fP resource.
-
-In \fIstring\fP mode, the message is whatever was specified on the 
-command line as the \fI\-text\fP option, or in the resource database
-as the \fI.text\fP resource.
-.TP 8
-.B \-program \fIprogram\fP
-If \fImode\fP is \fIprogram\fP (the default), then this program will be
-run periodically, and its output will be the text of the messages.  The
-default program is \fI"fortune -s"\fP, but \fIyow\fP is also a good choice.
-.TP 8
-.B \-filename \fIfile\fP
-If \fImode\fP is \fIfile\fP, then the contents of this file will be used
-for all messages.
-.TP 8
-.B \-text \fIstring\fP
-If \fImode\fP is \fIstring\fP, then this text will be used for all messages.
-.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),
-.BR xnlock (1)
-.SH COPYRIGHT
-Copyright 1985, 1990 by Dan Heller <argv@sun.com>.
-.SH AUTHOR
-Dan Heller <argv@sun.com>, 1985.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
diff --git a/hacks/pedal.c b/hacks/pedal.c
deleted file mode 100644 (file)
index 7f8e5bd..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * pedal
- *
- * Based on a program for some old PDP-11 Graphics Display Processors
- * at CMU.
- *
- * X version by
- *
- *  Dale Moore  <Dale.Moore@cs.cmu.edu>
- *  24-Jun-1994
- *
- *  Copyright (c) 1994, by Carnegie Mellon University.  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 implied
- *  warranty.
- */
-
-#include <math.h>
-#include <stdlib.h>
-#include "screenhack.h"
-
-/* If MAXLINES is too big, we might not be able to get it
- * to the X server in the 2byte length field. Must be less
- * than 16k
- */
-#define MAXLINES (16 * 1024)
-#define MAXPOINTS MAXLINES
-XPoint *points;
-
-/* 
- * If the pedal has only this many lines, it must be ugly and we dont
- * want to see it.
- */
-#define MINLINES 7
-
-static int sizex, sizey;
-static int delay;
-static int fadedelay;
-static int maxlines;
-static GC gc;
-static XColor foreground, background;
-static Colormap cmap;
-
-static Bool fade_p;
-
-
-/*
- * Routine (Macro actually)
- *   mysin
- * Description:
- *   Assume that degrees is .. oh 360... meaning that
- *   there are 360 degress in a circle.  Then this function
- *   would return the sin of the angle in degrees.  But lets
- *   say that they are really big degrees, with 4 big degrees
- *   the same as one regular degree.  Then this routine
- *   would be called mysin(t, 90) and would return sin(t degrees * 4)
- */
-#define mysin(t, degrees) sin(t * 2 * M_PI / (degrees))
-#define mycos(t, degrees) cos(t * 2 * M_PI / (degrees))
-
-/*
- * Macro:
- *   rand_range
- * Description:
- *   Return a random number between a inclusive  and b exclusive.
- *    rand (3, 6) returns 3 or 4 or 5, but not 6.
- */
-#define rand_range(a, b) (a + random() % (b - a))
-
-
-static int
-gcd(int m, int n) /* Greatest Common Divisor (also Greates common factor). */
-{
-    int r;
-
-    for (;;) {
-        r = m % n;
-        if (r == 0) return (n);
-        m = n;
-        n = r;
-    }
-}
-
-static int numlines (int a, int b, int d)
-/*
- * Description:
- *
- *      Given parameters a and b, how many lines will we have to draw?
- *
- * Algorithm:
- *
- *      This algorithm assumes that r = sin (theta * a), where we
- *      evaluate theta on multiples of b.
- *
- *      LCM (i, j) = i * j / GCD (i, j);
- *
- *      So, at LCM (b, 360) we start over again.  But since we
- *      got to LCM (b, 360) by steps of b, the number of lines is
- *      LCM (b, 360) / b.
- *
- *      If a is odd, then at 180 we cross over and start the
- *      negative.  Someone should write up an elegant way of proving
- *      this.  Why?  Because I'm not convinced of it myself. 
- *
- */
-{
-#define odd(x) (x & 1)
-#define even(x) (!odd(x))
-    if ( odd(a) && odd(b) && even(d)) d /= 2;
-    return  (d / gcd (d, b));
-#undef odd
-}
-
-static int
-compute_pedal(XPoint *points, int maxpoints)
-/*
- * Description:
- *
- *    Basically, it's combination spirograph and string art.
- *    Instead of doing lines, we just use a complex polygon,
- *    and use an even/odd rule for filling in between.
- *
- *    The spirograph, in mathematical terms is a polar
- *    plot of the form r = sin (theta * c);
- *    The string art of this is that we evaluate that
- *    function only on certain multiples of theta.  That is
- *    we let theta advance in some random increment.  And then
- *    we draw a straight line between those two adjacent points.
- *
- *    Eventually, the lines will start repeating themselves
- *    if we've evaluated theta on some rational portion of the
- *    whole.
- *
- *    The number of lines generated is limited to the
- *    ratio of the increment we put on theta to the whole.
- *    If we say that there are 360 degrees in a circle, then we
- *    will never have more than 360 lines.   
- *
- * Return:
- *
- *    The number of points.
- *
- */
-{
-    int a, b, d;  /* These describe a unique pedal */
-
-    double r;
-    int theta = 0;
-    XPoint *pp = points;
-    int count;
-    int numpoints;
-
-    /* Just to make sure that this division is not done inside the loop */
-    int h_width = sizex / 2, h_height = sizey / 2 ;
-
-    for (;;) {
-       d = rand_range (MINLINES, maxlines);
-
-       a = rand_range (1, d);
-       b = rand_range (1, d);
-       numpoints = numlines(a, b, d);
-       if (numpoints > MINLINES) break;
-    }
-
-    /* it might be nice to try to move as much sin and cos computing
-     * (or at least the argument computing) out of the loop.
-     */
-    for (count = numpoints; count-- ; )
-    {
-        r = mysin (theta * a, d);
-
-        /* Convert from polar to cartesian coordinates */
-       /* We could round the results, but coercing seems just fine */
-        pp->x = mysin (theta, d) * r * h_width  + h_width;
-        pp->y = mycos (theta, d) * r * h_height + h_height;
-
-        /* Advance index into array */
-        pp++;
-
-        /* Advance theta */
-        theta += b;
-        theta %= d;
-    }
-
-    return(numpoints);
-}
-
-static void
-init_pedal (Display *dpy, Window window)
-{
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-
-  fade_p = !mono_p;
-
-  delay = get_integer_resource ("delay", "Integer");
-  if (delay < 0) delay = 0;
-
-  fadedelay = get_integer_resource ("fadedelay", "Integer");
-  if (fadedelay < 0) fadedelay = 0;
-
-  maxlines = get_integer_resource ("maxlines", "Integer");
-  if (maxlines < MINLINES) maxlines = MINLINES;
-  else if (maxlines > MAXLINES) maxlines = MAXLINES;
-
-  points = (XPoint *)malloc(sizeof(XPoint) * maxlines);
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  sizex = xgwa.width;
-  sizey = xgwa.height;
-
-  if ((xgwa.visual->class != GrayScale) && (xgwa.visual->class != PseudoColor))
-    fade_p = False;
-
-  cmap = xgwa.colormap;
-
-  gcv.function = GXcopy;
-  gcv.foreground = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  gcv.background = get_pixel_resource ("background", "Background", dpy, cmap);
-  gc = XCreateGC (dpy, window, GCForeground | GCBackground |GCFunction, &gcv);
-
-  if (fade_p)
-  {
-      int status;
-      foreground.pixel = gcv.foreground;
-      XQueryColor (dpy, cmap, &foreground);
-
-      status = XAllocColorCells (
-                       dpy,
-                       cmap,
-                       0,
-                       NULL,
-                       0,
-                       &foreground.pixel,
-                       1);
-      if (status)
-      {
-         XStoreColor ( dpy, cmap, &foreground);
-         XSetForeground (dpy, gc, foreground.pixel);
-
-         background.pixel = gcv.background;
-         XQueryColor (dpy, cmap, &background);
-      }
-      else
-      {
-         /* If we cant allocate a color cell, then just forget the
-           * whole fade business.
-           */
-         fade_p = False;
-      }
-  }
-}
-
-static void
-fade_foreground (Display *dpy, Colormap cmap,
-                XColor from, XColor to, int steps)
-/*
- * This routine assumes that we have a writeable colormap.
- * That means that the default colormap is not full, and that
- * the visual class is PseudoColor or GrayScale.
- */
-{
-    int i;
-    XColor inbetween;
-    int udelay = fadedelay / (steps + 1);
-
-    inbetween = foreground;
-    for (i = 0; i <= steps; i++ )
-    {
-      inbetween.red   = from.red   + (to.red   - from.red)   * i / steps ;
-      inbetween.green = from.green + (to.green - from.green) * i / steps ;
-      inbetween.blue  = from.blue  + (to.blue  - from.blue)  * i / steps ;
-      XStoreColor (dpy, cmap, &inbetween);
-      /* If we don't sync, these can bunch up */
-      XSync(dpy, False);
-      screenhack_handle_events (dpy);
-      usleep(udelay);
-    }
-}
-
-static void
-pedal (Display *dpy, Window window)
-/*
- *    Since the XFillPolygon doesn't require that the last
- *    point == first point, the number of points is the same
- *    as the number of lines.  We just let XFillPolygon supply
- *    the line from the last point to the first point.
- *
- */
-{
-   int numpoints;
-
-   numpoints = compute_pedal(points, maxlines);
-
-   /* Fade out, make foreground the same as background */
-   if (fade_p)
-     fade_foreground (dpy, cmap, foreground, background, 32);
-
-    /* Clear the window of previous garbage */
-    XClearWindow (dpy, window);
-
-    XFillPolygon (
-                dpy,
-                window,
-                gc,
-                points,
-                numpoints,
-                Complex,
-                CoordModeOrigin);
-
-   /* Pick a new foreground color (added by jwz) */
-   if (! mono_p)
-     {
-       XColor color;
-       hsv_to_rgb (random()%360, 1.0, 1.0,
-                  &color.red, &color.green, &color.blue);
-       XSync(dpy, False);
-       if (fade_p)
-        {
-          foreground.red = color.red;
-          foreground.green = color.green;
-          foreground.blue = color.blue;
-          /* don't do this here -- let fade_foreground() bring it up! */
-          /* XStoreColor (dpy, cmap, &foreground); */
-        }
-       else if (XAllocColor (dpy, cmap, &color))
-        {
-          XSetForeground (dpy, gc, color.pixel);
-          XFreeColors (dpy, cmap, &foreground.pixel, 1, 0);
-          foreground.red = color.red;
-          foreground.green = color.green;
-          foreground.blue = color.blue;
-          foreground.pixel = color.pixel;
-        }
-       XSync(dpy, False);
-     }
-
-    /* Fade in by bringing the foreground back from background */
-    if (fade_p)
-       fade_foreground (dpy, cmap, background, foreground, 32);
-}
-
-\f
-char *progclass = "Pedal";
-
-/*
- * If we are trying to save the screen, the background
- * should be dark.
- */
-char *defaults [] = {
-  ".background:                        black",
-  ".foreground:                        white",
-  "*delay:                     5",
-  "*fadedelay:                 200000",
-  "*maxlines:                  1000",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
-  { "-fadedelay",      ".fadedelay",           XrmoptionSepArg, 0 },
-  { "-maxlines",       ".maxlines",            XrmoptionSepArg, 0 },
-  { "-foreground",      ".foreground",          XrmoptionSepArg, 0 },
-  { "-background",      ".background",          XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-    init_pedal (dpy, window);
-    for (;;) {
-       pedal (dpy, window);
-       XSync(dpy, False);
-        screenhack_handle_events (dpy);
-       if (delay) sleep (delay);
-    }
-}
diff --git a/hacks/pedal.man b/hacks/pedal.man
deleted file mode 100644 (file)
index 7a0c3e5..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-.TH XScreenSaver 1 "24-Jun-94" "X Version 11"
-.SH NAME
-pedal - pretty geometric picture program
-.SH SYNOPSIS
-.B pedal
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-delay \fIseconds\fP] [-maxlines \fInumber\fP] [-fadedelay \fIuseconds\fP] [-mono] [\-install] [\-visual \fIvisual\fP]
-.SH DESCRIPTION
-The \fIpedal\fP program displays pretty geometric pictures.
-.SH OPTIONS
-.I pedal
-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 \-foreground \fIcolor\fP
-The color for the foreground.  Default is white.
-.TP 8
-.B \-background \fIcolor\fP
-The color for the background.  Default is black.
-.TP 8
-.B \-delay \fIseconds\fP
-The number of seconds to pause between each picture.
-.TP 8
-.B \-maxlines \fInumber\fP
-The maximum number of lines in the drawing.  Good values are
-between 20 and 2000.  Maximum value is 16K.
-.TP 8
-.B \-fadedelay \fImicroseconds\fP
-The number of micro seconds to take when fading in and out.
-.TP 8
-.B \-mono
-Don't do fading.  Pretend we're on a monochrome display.
-.PP
-To make your X server grunt under load, and to impress your
-friends, try \fIpedal -mono -delay 0 -maxlines 100\fp.
-.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 1994, by Carnegie Mellon University.  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 implied
-warranty.
-.SH AUTHOR
-Dale Moore <Dale.Moore@cs.cmu.edu>, 24-Jun-1994.
diff --git a/hacks/penetrate.c b/hacks/penetrate.c
deleted file mode 100644 (file)
index 3e41af8..0000000
+++ /dev/null
@@ -1,912 +0,0 @@
-/* Copyright (c) 1999
- *  Adam Miller adum@aya.yale.edu
- *
- * 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.
-
- * penetrate simulates the arcade classic with the cities and the stuff
- * shooting down from the sky and stuff. The computer plays against itself,
- * desperately defending the forces of good against those thingies raining
- * down. Bonus cities are awarded at ever-increasing intervals. Every five
- * levels appears a bonus round. The computer player gets progressively
- * more intelligent as the game progresses. Better aim, more economical with
- * ammo, and better target selection. Points are in the bottom right, and
- * high score is in the bottom left. Start with -smart to have the computer
- * player skip the learning process.
-
- */
-
-#include "screenhack.h"
-
-#define kSleepTime 10000
-
-#define font_height(font)              (font->ascent + font->descent)
-#define FONT_NAME                      "-*-times-*-*-*-*-80-*-*-*-*-*-*-*"
-
-#define kCityPause 500000
-#define kLevelPause 1
-#define SCORE_MISSILE 100
-#define kFirstBonus 5000
-#define kMinRate 30
-#define kMaxRadius 100
-
-static XFontStruct *font, *scoreFont;
-static GC draw_gc, erase_gc, level_gc;
-static unsigned int default_fg_pixel;
-static XColor scoreColor;
-
-int bgrowth;
-int lrate = 80, startlrate;
-long loop = 0;
-long score = 0, highscore = 0;
-long nextBonus = kFirstBonus;
-int numBonus = 0;
-int bround = 0;
-long lastLaser = 0;
-int gamez = 0;
-int aim = 180;
-int econpersen = 0;
-int choosypersen = 0;
-int carefulpersen = 0;
-int smart = 0;
-
-typedef struct {
-  int alive;
-  int x, y;
-  int startx, starty;
-  int endx, endy;
-  int dcity;
-  float pos;
-  int enemies;
-  int jenis;
-  int splits;
-  XColor color;
-} Missile;
-
-typedef struct {
-  int alive;
-  int x, y, rad, oflaser;
-  int max, outgoing;
-  XColor color;
-} Boom;
-
-typedef struct {
-  int alive;
-  int x;
-  XColor color;
-} City;
-
-typedef struct {
-  int alive;
-  int x, y;
-  int startx, starty;
-  int endx, endy;
-  int oldx, oldy;
-  float velx, vely, fposx, fposy;
-  float lenMul;
-  XColor color;
-  int target;
-} Laser;
-
-#define kMaxMissiles 256
-#define kMaxBooms 512
-#define kMaxLasers 128
-#define kBoomRad 40
-#define kNumCities 5
-
-#define kLaserLength 12
-
-#define kMissileSpeed 0.003
-#define kLaserSpeed (kMissileSpeed * 6)
-
-Missile missile[kMaxMissiles];
-Boom boom[kMaxBooms];
-City city[kNumCities];
-Laser laser[kMaxLasers];
-int blive[kNumCities];
-
-static void Explode(int x, int y, int max, XColor color, int oflaser)
-{
-  int i;
-  Boom *m = 0;
-  for (i=0;i<kMaxBooms;i++)
-        if (!boom[i].alive) {
-               m = &boom[i];
-               break;
-        }
-  if (!m)
-        return;
-
-  m->alive = 1;
-  m->x = x;
-  m->y = y;
-  m->rad = 0;
-  if (max > kMaxRadius)
-        max = kMaxRadius;
-  m->max = max;
-  m->outgoing = 1;
-  m->color = color;
-  m->oflaser = oflaser;
-}
-
-static void launch (int xlim, int ylim,
-       Display *dpy, Colormap cmap, int src)
-{
-  int i;
-  Missile *m = 0, *msrc;
-  for (i=0;i<kMaxMissiles;i++)
-        if (!missile[i].alive) {
-               m = &missile[i];
-               break;
-        }
-  if (!m)
-        return;
-
-  m->alive = 1;
-  m->startx = (random() % xlim);
-  m->starty = 0;
-  m->endy = ylim;
-  m->pos = 0.0;
-  m->jenis = random() % 360;
-  m->splits = 0;
-  if (m->jenis < 50) {
-        m->splits = random() % ((int) (ylim * 0.4));
-        if (m->splits < ylim * 0.08)
-               m->splits = 0;
-  }
-
-  /* special if we're from another missile */
-  if (src >= 0) {
-        int dc = random() % (kNumCities - 1);
-        msrc = &missile[src];
-        if (dc == msrc->dcity)
-               dc++;
-        m->dcity = dc;
-        m->startx = msrc->x;
-        m->starty = msrc->y;
-        if (m->starty > ylim * 0.4 || m->splits <= m->starty)
-               m->splits = 0;  /* too far down already */
-        m->jenis = msrc->jenis;
-  }
-  else
-        m->dcity = random() % kNumCities;
-  m->endx = city[m->dcity].x + (random() % 20) - 10;
-  m->x = m->startx;
-  m->y = m->starty;
-  m->enemies = 0;
-
-  if (!mono_p) {
-        hsv_to_rgb (m->jenis, 1.0, 1.0,
-                                        &m->color.red, &m->color.green, &m->color.blue);
-        m->color.flags = DoRed | DoGreen | DoBlue;
-        if (!XAllocColor (dpy, cmap, &m->color)) {
-               m->color.pixel = WhitePixel (dpy, DefaultScreen (dpy));
-               m->color.red = m->color.green = m->color.blue = 0xFFFF;
-        }
-  }
-}
-
-static int fire(int xlim, int ylim,
-       Display *dpy, Window window, Colormap cmap)
-{
-  int i, j, cnt = 0;
-  int dcity;
-  long dx, dy, ex, ey;
-  Missile *mis = 0;
-  Laser *m = 0;
-  int untargeted = 0;
-  int choosy = 0, economic = 0, careful = 0;
-  int suitor[kMaxMissiles];
-  int livecity = 0;
-  int ytargetmin = ylim * 0.75;
-  int deepest = 0;
-  int misnum = 0;
-
-  choosy = (random() % 100) < choosypersen;
-  economic = (random() % 100) < econpersen;
-  careful = (random() % 100) < carefulpersen;
-
-  /* count our cities */
-  for (i=0;i<kNumCities;i++)
-        livecity += city[i].alive;
-  if (livecity == 0)
-        return 1;  /* no guns */
-
-  for (i=0;i<kMaxLasers;i++)
-        if (!laser[i].alive) {
-               m = &laser[i];
-               break;
-        }
-  if (!m)
-        return 1;
-
-  /* if no missiles on target, no need to be choosy */
-  if (choosy) {
-        int choo = 0;
-        for (j=0;j<kMaxMissiles;j++) {
-               mis = &missile[j];
-               if (!mis->alive || (mis->y > ytargetmin))
-                 continue;
-               if (city[mis->dcity].alive)
-                 choo++;
-        }
-        if (choo == 0)
-               choosy = 0;
-  }
-
-  for (j=0;j<kMaxMissiles;j++) {
-        mis = &missile[j];
-        suitor[j] = 0;
-        if (!mis->alive || (mis->y > ytargetmin))
-               continue;
-        if (choosy && (city[mis->dcity].alive == 0))
-               continue;
-        cnt++;
-        suitor[j] = 1;
-  }
-
-  /* count missiles that are on target and not being targeted */
-  if (choosy && economic)
-        for (j=0;j<kMaxMissiles;j++)
-               if (suitor[j] && missile[j].enemies == 0)
-                 untargeted++;
-
-  if (economic)
-        for (j=0;j<kMaxMissiles;j++) {
-               if (suitor[j] && cnt > 1)
-                 if (missile[j].enemies > 0)
-                        if (missile[j].enemies > 1 || untargeted == 0) {
-                               suitor[j] = 0;
-                               cnt--;
-                        }
-               /* who's closest? biggest threat */
-               if (suitor[j] && missile[j].y > deepest)
-                 deepest = missile[j].y;
-        }
-
-  if (deepest > 0 && careful) {
-        /* only target deepest missile */
-        cnt = 1;
-        for (j=0;j<kMaxMissiles;j++)
-               if (suitor[j] && missile[j].y != deepest)
-                 suitor[j] = 0;
-  }
-
-  if (cnt == 0)
-        return 1;  /* no targets available */
-  cnt = random() % cnt;
-  for (j=0;j<kMaxMissiles;j++)
-        if (suitor[j])
-               if (cnt-- == 0) {
-                 mis = &missile[j];
-                 misnum = j;
-                 break;
-               }
-
-  if (mis == 0)
-        return 1;  /* shouldn't happen */
-
-  dcity = random() % livecity;
-  for (j=0;j<kNumCities;j++)
-        if (city[j].alive)
-               if (dcity-- == 0) {
-                 dcity = j;
-                 break;
-               }
-  m->startx = city[dcity].x;
-  m->starty = ylim;
-#define kExpHelp 0.2
-#define kSpeedDiff 3.5
-  ex = mis->startx + ((float) (mis->endx - mis->startx)) * (mis->pos + kExpHelp + (1.0 - mis->pos) / kSpeedDiff);
-  ey = mis->starty + ((float) (mis->endy - mis->starty)) * (mis->pos + kExpHelp + (1.0 - mis->pos) / kSpeedDiff);
-  m->endx = ex + random() % 16 - 8 + (random() % aim) - aim / 2;
-  m->endy = ey + random() % 16 - 8 + (random() % aim) - aim / 2;
-  if (ey > ylim * 0.75)
-        return 0;  /* too far down */
-  mis->enemies++;
-  m->target = misnum;
-  m->x = m->startx;
-  m->y = m->starty;
-  m->oldx = m->x;
-  m->oldy = m->y;
-  m->fposx = m->x;
-  m->fposy = m->y;
-  dx = (m->endx - m->x);
-  dy = (m->endy - m->y);
-  m->velx = dx / 100.0;
-  m->vely = dy / 100.0;
-  m->alive = 1;
-  /* m->lenMul = (kLaserLength * kLaserLength) / (m->velx * m->velx + m->vely * m->vely); */
-  m->lenMul = -(kLaserLength / m->vely);
-
-  if (!mono_p) {
-        m->color.blue = 0x0000;
-        m->color.green = 0xFFFF;
-        m->color.red = 0xFFFF;
-        m->color.flags = DoRed | DoGreen | DoBlue;
-        if (!XAllocColor (dpy, cmap, &m->color)) {
-               m->color.pixel = WhitePixel (dpy, DefaultScreen (dpy));
-               m->color.red = m->color.green = m->color.blue = 0xFFFF;
-        }
-  }
-  return 1;
-}
-
-static Colormap
-init_penetrate(Display *dpy, Window window)
-{
-  int i;
-  /*char *fontname =   "-*-new century schoolbook-*-r-*-*-*-380-*-*-*-*-*-*"; */
-  char *fontname =   "-*-courier-*-r-*-*-*-380-*-*-*-*-*-*";
-  char **list;
-  int foo;
-  Colormap cmap;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-
-  if (get_string_resource("smart","String")!=NULL && get_string_resource("smart","String")[0]!=0)
-        smart = 1;
-  bgrowth = get_integer_resource ("bgrowth", "Integer");
-  lrate = get_integer_resource ("lrate", "Integer");
-  if (bgrowth < 0) bgrowth = 2;
-  if (lrate < 0) lrate = 2;
-  startlrate = lrate;
-
-  if (!fontname || !(font = XLoadQueryFont(dpy, fontname))) {
-        list = XListFonts(dpy, FONT_NAME, 32767, &foo);
-        for (i = 0; i < foo; i++)
-               if ((font = XLoadQueryFont(dpy, list[i])))
-                 break;
-        if (!font) {
-               fprintf (stderr, "%s: Can't find a large font.", progname);
-           exit (1);
-        }
-        XFreeFontNames(list);
-  }
-
-  if (!(scoreFont = XLoadQueryFont(dpy, "-*-times-*-r-*-*-*-180-*-*-*-*-*-*")))
-        fprintf(stderr, "%s: Can't load Times font.", progname);
-
-  for (i = 0; i < kMaxMissiles; i++)
-    missile[i].alive = 0;
-
-  for (i = 0; i < kMaxLasers; i++)
-    laser[i].alive = 0;
-
-  for (i = 0; i < kMaxBooms; i++)
-    boom[i].alive = 0;
-
-  for (i = 0; i < kNumCities; i++) {
-        City *m = &city[i];
-    m->alive = 1;
-        m->color.red = m->color.green = m->color.blue = 0xFFFF;
-        m->color.blue = 0x1111; m->color.green = 0x8888;
-        m->color.flags = DoRed | DoGreen | DoBlue;
-        if (!XAllocColor (dpy, cmap, &m->color)) {
-               m->color.pixel = WhitePixel (dpy, DefaultScreen (dpy));
-               m->color.red = m->color.green = m->color.blue = 0xFFFF;
-        }
-  }
-
-  gcv.foreground = default_fg_pixel =
-    get_pixel_resource("foreground", "Foreground", dpy, cmap);
-  gcv.font = scoreFont->fid;
-  draw_gc = XCreateGC(dpy, window, GCForeground | GCFont, &gcv);
-  gcv.font = font->fid;
-  level_gc = XCreateGC(dpy, window, GCForeground | GCFont, &gcv);
-  XSetForeground (dpy, level_gc, city[0].color.pixel);
-  gcv.foreground = get_pixel_resource("background", "Background", dpy, cmap);
-  erase_gc = XCreateGC(dpy, window, GCForeground, &gcv);
-
-  /* make a gray color for score */
-  if (!mono_p) {
-        scoreColor.red = scoreColor.green = scoreColor.blue = 0xAAAA;
-        scoreColor.flags = DoRed | DoGreen | DoBlue;
-        if (!XAllocColor (dpy, cmap, &scoreColor)) {
-               scoreColor.pixel = WhitePixel (dpy, DefaultScreen (dpy));
-               scoreColor.red = scoreColor.green = scoreColor.blue = 0xFFFF;
-        }
-  }
-
-  XClearWindow(dpy, window);
-  return cmap;
-}
-
-static void DrawScore(Display *dpy, Window window, Colormap cmap, int xlim, int ylim)
-{
-  char buf[16];
-  int width, height;
-  sprintf(buf, "%ld", score);
-  width = XTextWidth(scoreFont, buf, strlen(buf));
-  height = font_height(scoreFont);
-  XSetForeground (dpy, draw_gc, scoreColor.pixel);
-  XFillRectangle(dpy, window, erase_gc,
-                                 xlim - width - 6, ylim - height - 2, width + 6, height + 2);
-  XDrawString(dpy, window, draw_gc, xlim - width - 2, ylim - 2,
-                   buf, strlen(buf));
-
-  sprintf(buf, "%ld", highscore);
-  width = XTextWidth(scoreFont, buf, strlen(buf));
-  XFillRectangle(dpy, window, erase_gc,
-                                 4, ylim - height - 2, width + 4, height + 2);
-  XDrawString(dpy, window, draw_gc, 4, ylim - 2,
-                   buf, strlen(buf));
-}
-
-static void AddScore(Display *dpy, Window window, Colormap cmap, int xlim, int ylim, long dif)
-{
-  int i, sumlive = 0;
-  for (i=0;i<kNumCities;i++)
-        sumlive += city[i].alive;
-  if (sumlive == 0)
-        return;   /* no cities, not possible to score */
-
-  score += dif;
-  if (score > highscore)
-        highscore = score;
-  DrawScore(dpy, window, cmap, xlim, ylim);
-}
-
-static void DrawCity(Display *dpy, Window window, Colormap cmap, int x, int y, XColor col)
-{
-        XSetForeground (dpy, draw_gc, col.pixel);
-        XFillRectangle(dpy, window, draw_gc,
-                                 x - 30, y - 40, 60, 40);
-        XFillRectangle(dpy, window, draw_gc,
-                                                x - 20, y - 50, 10, 10);
-        XFillRectangle(dpy, window, draw_gc,
-                                 x + 10, y - 50, 10, 10);
-}
-
-static void DrawCities(Display *dpy, Window window, Colormap cmap, int xlim, int ylim)
-{
-  int i, x;
-  for (i = 0; i < kNumCities; i++) {
-        City *m = &city[i];
-        if (!m->alive)
-               continue;
-        x = (i + 1) * (xlim / (kNumCities + 1));
-        m->x = x;
-
-        DrawCity(dpy, window, cmap, x, ylim, m->color);
-  }
-}
-
-static void LoopMissiles(Display *dpy, Window window, Colormap cmap, int xlim, int ylim)
-{
-  int i, j, max = 0;
-  for (i = 0; i < kMaxMissiles; i++) {
-        int old_x, old_y;
-        Missile *m = &missile[i];
-        if (!m->alive)
-               continue;
-        old_x = m->x;
-        old_y = m->y;
-        m->pos += kMissileSpeed;
-        m->x = m->startx + ((float) (m->endx - m->startx)) * m->pos;
-        m->y = m->starty + ((float) (m->endy - m->starty)) * m->pos;
-
-      /* erase old one */
-
-        XSetLineAttributes(dpy, draw_gc, 4, 0,0,0);
-    XSetForeground (dpy, draw_gc, m->color.pixel);
-        XDrawLine(dpy, window, draw_gc,
-                                 old_x, old_y, m->x, m->y);
-
-        /* maybe split off a new missile? */
-        if (m->splits && (m->y > m->splits)) {
-               m->splits = 0;
-               launch(xlim, ylim, dpy, cmap, i);
-        }
-        
-        if (m->y >= ylim) {
-               m->alive = 0;
-               if (city[m->dcity].alive) {
-                 city[m->dcity].alive = 0;
-                 Explode(m->x, m->y, kBoomRad * 2, m->color, 0);
-               }
-        }
-
-        /* check hitting explosions */
-        for (j=0;j<kMaxBooms;j++) {
-               Boom *b = &boom[j];
-               if (!b->alive)
-                 continue;
-               else {
-                 int dx = abs(m->x - b->x);
-                 int dy = abs(m->y - b->y);
-                 int r = b->rad + 2;
-                 if ((dx < r) && (dy < r))
-                        if (dx * dx + dy * dy < r * r) {
-                               m->alive = 0;
-                               max = b->max + bgrowth - kBoomRad;
-                               AddScore(dpy, window, cmap, xlim, ylim, SCORE_MISSILE);
-                 }
-               }
-        }
-
-        if (m->alive == 0) {
-               /* we just died */
-               Explode(m->x, m->y, kBoomRad + max, m->color, 0);
-               XSetLineAttributes(dpy, erase_gc, 5, 0,0,0);
-               XDrawLine(dpy, window, erase_gc,
-                                        m->startx, m->starty, m->x, m->y);             
-        }
-  }
-}
-
-static void LoopLasers(Display *dpy, Window window, Colormap cmap, int xlim, int ylim)
-{
-  int i, j, miny = ylim * 0.8;
-  int x, y;
-  for (i = 0; i < kMaxLasers; i++) {
-        Laser *m = &laser[i];
-        if (!m->alive)
-               continue;
-        m->fposx += m->velx;
-        m->fposy += m->vely;
-        m->x = m->fposx;
-        m->y = m->fposy;
-        
-        x = m->fposx + (-m->velx * m->lenMul);
-        y = m->fposy + (-m->vely * m->lenMul);
-
-        XSetLineAttributes(dpy, erase_gc, 4, 0,0,0);
-        XDrawLine(dpy, window, erase_gc,
-                                 x, y, m->oldx, m->oldy);              
-        m->oldx = x;
-        m->oldy = y;
-
-        XSetLineAttributes(dpy, draw_gc, 2, 0,0,0);
-    XSetForeground (dpy, draw_gc, m->color.pixel);
-        XDrawLine(dpy, window, draw_gc,
-                                 m->x, m->y, x, y);
-        
-        if (m->y < m->endy) {
-               m->alive = 0;
-        }
-
-        /* check hitting explosions */
-        if (m->y < miny)
-               for (j=0;j<kMaxBooms;j++) {
-                 Boom *b = &boom[j];
-                 if (!b->alive)
-                        continue;
-                 else {
-                        int dx = abs(m->x - b->x);
-                        int dy = abs(m->y - b->y);
-                        int r = b->rad + 2;
-                        if (b->oflaser)
-                               continue;
-                        if ((dx < r) && (dy < r))
-                               if (dx * dx + dy * dy < r * r) {
-                                 m->alive = 0;
-                                 /* one less enemy on this missile -- it probably didn't make it */
-                                 if (missile[m->target].alive)
-                                        missile[m->target].enemies--;
-                               }
-                 }
-               }
-        
-        if (m->alive == 0) {
-               /* we just died */
-               XDrawLine(dpy, window, erase_gc,
-                                 m->x, m->y, x, y);
-               Explode(m->x, m->y, kBoomRad, m->color, 1);
-        }
-  }
-}
-
-static void LoopBooms(Display *dpy, Window window, Colormap cmap, int xlim, int ylim)
-{
-  int i;
-  for (i = 0; i < kMaxBooms; i++) {
-        Boom *m = &boom[i];
-        if (!m->alive)
-               continue;
-        
-        if (loop & 1)
-               if (m->outgoing) {
-                 m->rad++;
-                 if (m->rad >= m->max)
-                        m->outgoing = 0;
-                 XSetLineAttributes(dpy, draw_gc, 1, 0,0,0);
-                 XSetForeground (dpy, draw_gc, m->color.pixel);
-                 XDrawArc(dpy, window, draw_gc, m->x - m->rad, m->y - m->rad, m->rad * 2, m->rad * 2, 0, 360 * 64);
-               }
-               else {
-                 XSetLineAttributes(dpy, erase_gc, 1, 0,0,0);
-                 XDrawArc(dpy, window, erase_gc, m->x - m->rad, m->y - m->rad, m->rad * 2, m->rad * 2, 0, 360 * 64);
-                 m->rad--;
-                 if (m->rad <= 0)
-                        m->alive = 0;
-               }
-  }
-}
-
-int level = 0, levMissiles, levFreq;
-
-/* after they die, let's change a few things */
-static void Improve(void)
-{
-  if (smart)
-        return;
-  if (level > 20)
-        return;  /* no need, really */
-  aim -= 4;
-  if (level <= 2) aim -= 8;
-  if (level <= 5) aim -= 6;
-  if (gamez < 3)
-        aim -= 10;
-  carefulpersen += 6;
-  choosypersen += 4;
-  if (level <= 5) choosypersen += 3;
-  econpersen += 4;
-  lrate -= 2;
-  if (startlrate < kMinRate) {
-        if (lrate < startlrate)
-               lrate = startlrate;
-  }
-  else {
-        if (lrate < kMinRate)
-               lrate = kMinRate;
-  }
-  if (level <= 5) econpersen += 3;
-  if (aim < 1) aim = 1;
-  if (choosypersen > 100) choosypersen = 100;
-  if (carefulpersen > 100) carefulpersen = 100;
-  if (econpersen > 100) econpersen = 100;
-}
-
-static void NewLevel(Display *dpy, Window window, Colormap cmap, int xlim, int ylim)
-{
-  char buf[32];
-  int width, i, sumlive = 0;
-  int liv[kNumCities];
-  int freecity = 0;
-
-  if (level == 0) {
-        level++;
-        goto END_LEVEL;
-  }
-
-  /* check for a free city */
-  if (score >= nextBonus) {
-        numBonus++;
-        nextBonus += kFirstBonus * numBonus;
-        freecity = 1;
-  }
-
-  for (i=0;i<kNumCities;i++) {
-        if (bround)
-               city[i].alive = blive[i];
-        liv[i] = city[i].alive;
-        sumlive += liv[i];
-        if (!bround)
-               city[i].alive = 0;
-  }
-
-  /* print out screen */
-  XFillRectangle(dpy, window, erase_gc,
-                                 0, 0, xlim, ylim);
-  if (bround)
-        sprintf(buf, "Bonus Round Over");
-  else {
-        if (sumlive || freecity)
-               sprintf(buf, "Level %d Cleared", level);
-        else
-               sprintf(buf, "GAME OVER");
-  }
-  if (level > 0) {
-        width = XTextWidth(font, buf, strlen(buf));
-        XDrawString(dpy, window, level_gc, xlim / 2 - width / 2, ylim / 2 - font_height(font) / 2,
-                                        buf, strlen(buf));
-        XSync(dpy, False);
-         screenhack_handle_events(dpy);
-        sleep(1);
-  }
-
-  if (!bround) {
-        if (sumlive || freecity) {
-               int sumwidth;
-               /* draw live cities */
-               XFillRectangle(dpy, window, erase_gc,
-                                                       0, ylim - 100, xlim, 100);
-
-               sprintf(buf, "X %ld", level * 100L);
-               /* how much they get */
-               sumwidth = XTextWidth(font, buf, strlen(buf));
-               /* add width of city */
-               sumwidth += 60;
-               /* add spacer */
-               sumwidth += 40;
-               DrawCity(dpy, window, cmap, xlim / 2 - sumwidth / 2 + 30, ylim * 0.70, city[0].color);
-               XDrawString(dpy, window, level_gc, xlim / 2 - sumwidth / 2 + 40 + 60, ylim * 0.7, buf, strlen(buf));
-               for (i=0;i<kNumCities;i++) {
-                 if (liv[i]) {
-                        city[i].alive = 1;
-                        AddScore(dpy, window, cmap, xlim, ylim, 100 * level);
-                        DrawCities(dpy, window, cmap, xlim, ylim);
-                        XSync(dpy, False);
-                         screenhack_handle_events(dpy);
-                        usleep(kCityPause);
-                 }
-               }
-        }
-        else {
-               /* we're dead */
-                screenhack_handle_events(dpy);
-               sleep(3);
-                screenhack_handle_events(dpy);
-               /* start new */
-               gamez++;
-               Improve();
-               for (i=0;i<kNumCities;i++)
-                 city[i].alive = 1;
-               level = 0;
-               loop = 1;
-               score = 0;
-               nextBonus = kFirstBonus;
-               numBonus = 0;
-               DrawCities(dpy, window, cmap, xlim, ylim);
-        }
-  }
-
-  /* do free city part */
-  if (freecity && sumlive < 5) {
-        int ncnt = random() % (5 - sumlive) + 1;
-        for (i=0;i<kNumCities;i++)
-               if (!city[i].alive)
-                 if (!--ncnt)
-                        city[i].alive = 1;
-        strcpy(buf, "Bonus City");
-        width = XTextWidth(font, buf, strlen(buf));
-        XDrawString(dpy, window, level_gc, xlim / 2 - width / 2, ylim / 4, buf, strlen(buf));
-        DrawCities(dpy, window, cmap, xlim, ylim);
-        XSync(dpy, False);
-         screenhack_handle_events(dpy);
-        sleep(1);
-  }
-
-  XFillRectangle(dpy, window, erase_gc,
-                                         0, 0, xlim, ylim - 100);
-  
-  if (!bround)
-        level++;
-  if (level == 1) {
-        nextBonus = kFirstBonus;
-  }
-
-  if (level > 3 && (level % 5 == 1)) {
-        if (bround) {
-               bround = 0;
-               DrawCities(dpy, window, cmap, xlim, ylim);
-        }
-        else {
-               /* bonus round */
-               bround = 1;
-               levMissiles = 20 + level * 10;
-               levFreq = 10;
-               for (i=0;i<kNumCities;i++)
-                 blive[i] = city[i].alive;
-               sprintf(buf, "Bonus Round");
-               width = XTextWidth(font, buf, strlen(buf));
-               XDrawString(dpy, window, level_gc, xlim / 2 - width / 2, ylim / 2 - font_height(font) / 2, buf, strlen(buf));
-               XSync(dpy, False);
-                screenhack_handle_events(dpy);
-               sleep(1);
-               XFillRectangle(dpy, window, erase_gc,
-                                                       0, 0, xlim, ylim - 100);
-        }
-  }
-
- END_LEVEL: ;
-
-  if (!bround) {
-        levMissiles = 5 + level * 3;
-        if (level > 5)
-               levMissiles += level * 5;
-        /*  levMissiles = 2; */
-        levFreq = 120 - level * 5;
-        if (levFreq < 30)
-               levFreq = 30;
-  }
-
-  /* ready to fire */
-  lastLaser = 0;
-}
-
-static void penetrate(Display *dpy, Window window, Colormap cmap)
-{
-  XWindowAttributes xgwa;
-  static int xlim, ylim;
-
-  XGetWindowAttributes(dpy, window, &xgwa);
-  xlim = xgwa.width;
-  ylim = xgwa.height;
-
-  /* see if just started */
-  if (loop == 0) {
-        if (smart) {
-               choosypersen = econpersen = carefulpersen = 100;
-               lrate = kMinRate; aim = 1;
-        }
-        NewLevel(dpy, window, cmap, xlim, ylim);
-        DrawScore(dpy, window, cmap, xlim, ylim);
-  }
-
-  loop++;
-
-  if (levMissiles == 0) {
-        /* see if anything's still on the screen, to know when to end level */
-        int i;
-        for (i=0;i<kMaxMissiles;i++)
-               if (missile[i].alive)
-                 goto END_CHECK;
-        for (i=0;i<kMaxBooms;i++)
-               if (boom[i].alive)
-                 goto END_CHECK;
-        for (i=0;i<kMaxLasers;i++)
-               if (laser[i].alive)
-                 goto END_CHECK;
-        /* okay, nothing's alive, start end of level countdown */
-         screenhack_handle_events(dpy);
-        sleep(kLevelPause);
-        NewLevel(dpy, window, cmap, xlim, ylim);
-        return;
-  END_CHECK: ;
-  }
-  else if ((random() % levFreq) == 0) {
-        launch(xlim, ylim, dpy, cmap, -1);
-        levMissiles--;
-  }
-
-  if (loop - lastLaser >= lrate) {
-        if (fire(xlim, ylim, dpy, window, cmap))
-               lastLaser = loop;
-  }
-
-  XSync(dpy, False);
-  screenhack_handle_events(dpy);
-  if (kSleepTime)
-        usleep(kSleepTime);
-
-  if ((loop & 7) == 0)
-        DrawCities(dpy, window, cmap, xlim, ylim);
-  LoopMissiles(dpy, window, cmap, xlim, ylim);
-  LoopLasers(dpy, window, cmap, xlim, ylim);
-  LoopBooms(dpy, window, cmap, xlim, ylim);
-}
-
-char *progclass = "Penetrate";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*bgrowth:   5",
-  "*lrate:     80",
-  "*geometry:  800x500",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-bgrowth",                ".bgrowth",     XrmoptionSepArg, 0 },
-  { "-lrate",          ".lrate",       XrmoptionSepArg, 0 },
-       {"-smart", ".smart", XrmoptionIsArg,0},
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  Colormap cmap = init_penetrate(dpy, window);
-  while (1)
-    penetrate(dpy, window, cmap);
-}
diff --git a/hacks/penrose.c b/hacks/penrose.c
deleted file mode 100644 (file)
index a8af2e5..0000000
+++ /dev/null
@@ -1,1291 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * penrose --- quasiperiodic tilings.
- */
-
-/*  As reported in News of the Weird:
-
-         In April, Sir Roger Penrose, a British math professor who has worked
-         with Stephen Hawking on such topics as relativity, black holes, and
-         whether time has a beginning, filed a copyright-infringement lawsuit
-         against the Kimberly-Clark Corporation, which Penrose said copied a
-         pattern he created (a pattern demonstrating that "a nonrepeating
-         pattern could exist in nature") for its Kleenex quilted toilet paper.
-         Penrose said he doesn't like litigation but, "When it comes to the
-         population of Great Britain being invited by a multinational to wipe
-         their bottoms on what appears to be the work of a Knight of the
-         Realm, then a last stand must be taken."
-
-                                NOTW #491, 4-jul-1997, by Chuck Shepherd.
-                                http://www.nine.org/notw/notw.html
- */
-
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)penrose.c    4.00 97/01/01 xlockmore";
-#endif
-
-/* Copyright (c) 1996 by Timo Korvola <tkorvola@dopey.hut.fi>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 09-Sep-96: Written.  */
-
-/*-
-Be careful, this probably still has a few bugs (many of which may only
-appear with a very low probability).  These are seen with -verbose .
-If one of these are hit penrose will reinitialize.
-*/
-
-/*-
- * See Onoda, Steinhardt, DiVincenzo and Socolar in
- * Phys. Rev. Lett. 60, #25, 1988 or
- * Strandburg in Computers in Physics, Sep/Oct 1991.
- *
- * This implementation uses the simpler version of the growth
- * algorithm, i.e., if there are no forced vertices, a randomly chosen
- * tile is added to a randomly chosen vertex (no preference for those
- * 108 degree angles).
- *
- * There are two essential differences to the algorithm presented in
- * the literature: First, we do not allow the tiling to enclose an
- * untiled area.  Whenever this is in danger of happening, we just
- * do not add the tile, hoping for a better random choice the next
- * time.  Second, when choosing a vertex randomly, we will take
- * one that lies withing the viewport if available.  If this seems to
- * cause enclosures in the forced rule case, we will allow invisible
- * vertices to be chosen.
- *
- * Tiling is restarted whenever one of the following happens: there
- * are no incomplete vertices within the viewport or the tiling has
- * extended a window's length beyond the edge of the window
- * horizontally or vertically or forced rule choice has failed 100
- * times due to areas about to become enclosed.
- *
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Penrose"
-# define HACK_INIT                                     init_penrose
-# define HACK_DRAW                                     draw_penrose
-# define penrose_opts                          xlockmore_opts
-# define DEFAULTS      "*delay:                10000 \n"                       \
-                                       "*size:                 40    \n"                       \
-                                       "*ncolors:              64   \n"
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-
-/*-
- * Annoyingly the ANSI C library people have reserved all identifiers
- * ending with _t for future use.  Hence we use _c as a suffix for
- * typedefs (c for class, although this is not C++).
- */
-
-#define MINSIZE 5
-
-/*-
- * In theory one could fit 10 tiles to a single vertex.  However, the
- * vertex rules only allow at most seven tiles to meet at a vertex.
- */
-
-#define MAX_TILES_PER_VERTEX 7
-#define N_VERTEX_RULES 8
-#define ALLOC_NODE( type) ((type *)malloc( sizeof( type)))
-#define DEF_AMMANN  "False"
-
-static Bool ammann;
-
-/* How long in seconds should we wait before starting a new tiling? */
-static long redo_delay = 3;
-static long redo_delay_usec;
-
-static XrmOptionDescRec opts[] =
-{
-       {"-ammann", ".penrose.ammann", XrmoptionNoArg, (caddr_t) "on"},
-       {"+ammann", ".penrose.ammann", XrmoptionNoArg, (caddr_t) "off"},
-       {"-redoDelay", ".penrose.redoDelay", XrmoptionSepArg, NULL}
-};
-static argtype vars[] =
-{
-       {(caddr_t *) & ammann, "ammann", "Ammann", DEF_AMMANN, t_Bool},
-       {(caddr_t *) & redo_delay, "redoDelay", "RedoDelay", "3", t_Int}
-};
-static OptionStruct desc[] =
-{
-       {"-/+ammann", "turn on/off Ammann lines"},
-       {"-redoDelay", "delay between new tilings"}
-};
-
-ModeSpecOpt penrose_opts = { 3, opts, 2, vars, desc };
-
-
-/*-
- * These are used to specify directions.  They can also be used in bit
- * masks to specify a combination of directions.
- */
-#define S_LEFT 1
-#define S_RIGHT 2
-
-
-/*-
- * We do not actually maintain objects corresponding to the tiles since
- * we do not really need them and they would only consume memory and
- * cause additional bookkeeping.  Instead we only have vertices, and
- * each vertex lists the type of each adjacent tile as well as the
- * position of the vertex on the tile (hereafter refered to as
- * "corner").  These positions are numbered in counterclockwise order
- * so that 0 is where two double arrows meet (see one of the
- * articles).  The tile type and vertex number are stored in a single
- * integer (we use char, and even most of it remains unused).
- *
- * The primary use of tile objects would be draw traversal, but we do
- * not currently do redraws at all (we just start over).
- */
-#define VT_CORNER_MASK 0x3
-#define VT_TYPE_MASK 0x4
-#define VT_THIN 0
-#define VT_THICK 0x4
-#define VT_BITS 3
-#define VT_TOTAL_MASK 0x7
-
-typedef unsigned char vertex_type_c;
-
-/*-
- * These allow one to compute the types of the other corners of the tile.  If
- * you are standing at a vertex of type vt looking towards the middle of the
- * tile, VT_LEFT( vt) is the vertex on your left etc.
- */
-#define VT_LEFT( vt) ((((vt) - 1) & VT_CORNER_MASK) | (((vt) & VT_TYPE_MASK)))
-#define VT_RIGHT( vt) ((((vt) + 1) & VT_CORNER_MASK) | (((vt) & VT_TYPE_MASK)))
-#define VT_FAR( vt) ((vt) ^ 2)
-
-
-/*-
- * Since we do not do redraws, we only store the vertices we need.  These are
- * the ones with still some empty space around them for the growth algorithm
- * to fill.
- *
- * Here we use a doubly chained ring-like structure as vertices often need
- * to be removed or inserted (they are kept in geometrical order 
- * circling the tiled area counterclockwise).  The ring is refered to by
- * a pointer to one more or less random node.  When deleting nodes one
- * must make sure that this pointer continues to refer to a valid
- * node.  A vertex count is maintained to make it easier to pick
- * vertices randomly.
- */
-typedef struct forced_node forced_node_c;
-
-typedef struct fringe_node {
-       struct fringe_node *prev;
-       struct fringe_node *next;
-       /* These are numbered counterclockwise.  The gap, if any, lies
-          between the last and first tiles.  */
-       vertex_type_c tiles[MAX_TILES_PER_VERTEX];
-       int         n_tiles;
-       /* A bit mask used to indicate vertex rules that are still applicable for
-          completing this vertex.  Initialize this to (1 << N_VERTEX_RULES) - 1,
-          i.e., all ones, and the rule matching functions will automatically mask
-          out rules that no longer match. */
-       unsigned char rule_mask;
-       /* If the vertex is on the forced vertex list, this points to the
-          pointer to the appropriate node in the list.  To remove the
-          vertex from the list just set *list_ptr to the next node,
-          deallocate and decrement node count. */
-       struct forced_node **list_ptr;
-       /* Screen coordinates. */
-       XPoint      loc;
-       /* We also keep track of 5D coordinates to avoid rounding errors.
-          These are in units of edge length. */
-       int         fived[5];
-       /* This is used to quickly check if a vertex is visible. */
-       unsigned char off_screen;
-} fringe_node_c;
-
-typedef struct {
-       fringe_node_c *nodes;
-       /* This does not count off-screen nodes. */
-       int         n_nodes;
-} fringe_c;
-
-
-/*-
- * The forced vertex pool contains vertices where at least one
- * side of the tiled region can only be extended in one way.  Note
- * that this does not necessarily mean that there would only be one
- * applicable rule.  forced_sides are specified using S_LEFT and
- * S_RIGHT as if looking at the untiled region from the vertex.
- */
-struct forced_node {
-       fringe_node_c *vertex;
-       unsigned    forced_sides;
-       struct forced_node *next;
-};
-
-typedef struct {
-       forced_node_c *first;
-       int         n_nodes, n_visible;
-} forced_pool_c;
-
-
-/* This is the data related to the tiling of one screen. */
-typedef struct {
-       int         width, height;
-       XPoint      origin;
-       int         edge_length;
-       fringe_c    fringe;
-       forced_pool_c forced;
-       int         done, failures;
-       int         thick_color, thin_color;
-} tiling_c;
-
-static tiling_c *tilings;      /* = {0} */
-
-
-/* The tiles are listed in counterclockwise order. */
-typedef struct {
-       vertex_type_c tiles[MAX_TILES_PER_VERTEX];
-       int         n_tiles;
-} vertex_rule_c;
-
-static vertex_rule_c vertex_rules[N_VERTEX_RULES] =
-{
-       {
-  {VT_THICK | 2, VT_THICK | 2, VT_THICK | 2, VT_THICK | 2, VT_THICK | 2}, 5},
-       {
-  {VT_THICK | 0, VT_THICK | 0, VT_THICK | 0, VT_THICK | 0, VT_THICK | 0}, 5},
-       {
-               {VT_THICK | 0, VT_THICK | 0, VT_THICK | 0, VT_THIN | 0}, 4},
-       {
-        {VT_THICK | 2, VT_THICK | 2, VT_THIN | 1, VT_THIN | 3, VT_THICK | 2,
-         VT_THIN | 1, VT_THIN | 3}, 7},
-       {
-               {VT_THICK | 2, VT_THICK | 2, VT_THICK | 2, VT_THICK | 2,
-                VT_THIN | 1, VT_THIN | 3}, 6},
-       {
-               {VT_THICK | 1, VT_THICK | 3, VT_THIN | 2}, 3},
-       {
-               {VT_THICK | 0, VT_THIN | 0, VT_THIN | 0}, 3},
-       {
-     {VT_THICK | 2, VT_THIN | 1, VT_THICK | 3, VT_THICK | 1, VT_THIN | 3}, 5}
-};
-
-
-/* Match information returned by match_rules. */
-typedef struct {
-       int         rule;
-       int         pos;
-} rule_match_c;
-
-
-/* Occasionally floating point coordinates are needed. */
-typedef struct {
-       float       x, y;
-} fcoord_c;
-
-
-/* All angles are measured in multiples of 36 degrees. */
-typedef int angle_c;
-
-static angle_c vtype_angles[] =
-{4, 1, 4, 1, 2, 3, 2, 3};
-
-#define vtype_angle( v) (vtype_angles[ v])
-
-
-/* Direction angle of an edge. */
-static      angle_c
-vertex_dir(ModeInfo * mi, fringe_node_c * vertex, unsigned side)
-{
-       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
-       fringe_node_c *v2 =
-       (side == S_LEFT ? vertex->next : vertex->prev);
-       register int i;
-
-       for (i = 0; i < 5; i++)
-               switch (v2->fived[i] - vertex->fived[i]) {
-                       case 1:
-                               return 2 * i;
-                       case -1:
-                               return (2 * i + 5) % 10;
-               }
-       tp->done = True;
-       if (MI_WIN_IS_VERBOSE(mi)) {
-               (void) fprintf(stderr,
-                  "Weirdness in vertex_dir (this has been reported)\n");
-               for (i = 0; i < 5; i++)
-                       (void) fprintf(stderr, "v2->fived[%d]=%d, vertex->fived[%d]=%d\n",
-                                     i, v2->fived[i], i, vertex->fived[i]);
-       }
-       MI_PAUSE(mi) = redo_delay_usec;
-       return 0;
-}
-
-
-/* Move one step to a given direction. */
-static void
-add_unit_vec(angle_c dir, int *fived)
-{
-       static int  dir2i[] =
-       {0, 3, 1, 4, 2};
-
-       while (dir < 0)
-               dir += 10;
-       fived[dir2i[dir % 5]] += (dir % 2 ? -1 : 1);
-}
-
-
-/* For comparing coordinates. */
-#define fived_equal( f1, f2) (!memcmp( (f1), (f2), 5 * sizeof( int)))
-
-
-/*-
- * This computes screen coordinates from 5D representation.  Note that X
- * uses left-handed coordinates (y increases downwards).
- */
-static      XPoint
-fived_to_loc(int fived[], tiling_c * tp)
-{
-       static fcoord_c fived_table[5] =
-       {
-               {.0, .0}};
-       float       fifth = 8 * atan(1.) / 5;
-       register int i;
-       register float r;
-       register fcoord_c offset =
-       {.0, .0};
-       XPoint      pt = tp->origin;
-
-       if (fived_table[0].x == .0)
-               for (i = 0; i < 5; i++) {
-                       fived_table[i].x = cos(fifth * i);
-                       fived_table[i].y = sin(fifth * i);
-               }
-       for (i = 0; i < 5; i++) {
-               r = fived[i] * tp->edge_length;
-               offset.x += r * fived_table[i].x;
-               offset.y -= r * fived_table[i].y;
-       }
-       pt.x += (int) (offset.x + .5);
-       pt.y += (int) (offset.y + .5);
-       return pt;
-}
-
-
-/* Mop up dynamic data for one screen. */
-static void
-release_screen(tiling_c * tp)
-{
-       register fringe_node_c *fp1, *fp2;
-       register forced_node_c *lp1, *lp2;
-
-       if (tp->fringe.nodes == 0)
-               return;
-       fp1 = tp->fringe.nodes;
-       do {
-               fp2 = fp1;
-               fp1 = fp1->next;
-               (void) free((char *) fp2);
-       } while (fp1 != tp->fringe.nodes);
-       tp->fringe.nodes = 0;
-       for (lp1 = tp->forced.first; lp1 != 0;) {
-               lp2 = lp1;
-               lp1 = lp1->next;
-               (void) free((char *) lp2);
-       }
-       tp->forced.first = 0;
-}
-
-
-/* Called to init the mode. */
-void
-init_penrose(ModeInfo * mi)
-{
-       tiling_c   *tp;
-       fringe_node_c *fp;
-       int         i, size;
-
-       redo_delay_usec = redo_delay * 1000000;
-
-       if (tilings == NULL) {
-               if ((tilings = (tiling_c *) calloc(MI_NUM_SCREENS(mi),
-                                                sizeof (tiling_c))) == NULL)
-                       return;
-       }
-       tp = &tilings[MI_SCREEN(mi)];
-       tp->done = False;
-       tp->failures = 0;
-       tp->width = MI_WIN_WIDTH(mi);
-       tp->height = MI_WIN_HEIGHT(mi);
-       if (MI_NPIXELS(mi) > 2) {
-               tp->thick_color = NRAND(MI_NPIXELS(mi));
-               /* Insure good contrast */
-               tp->thin_color = (NRAND(2 * MI_NPIXELS(mi) / 3) + tp->thick_color +
-                                 MI_NPIXELS(mi) / 6) % MI_NPIXELS(mi);
-       }
-       size = MI_SIZE(mi);
-       if (size < -MINSIZE)
-               tp->edge_length = NRAND(MIN(-size, MAX(MINSIZE,
-                  MIN(tp->width, tp->height) / 2)) - MINSIZE + 1) + MINSIZE;
-       else if (size < MINSIZE) {
-               if (!size)
-                       tp->edge_length = MAX(MINSIZE, MIN(tp->width, tp->height) / 2);
-               else
-                       tp->edge_length = MINSIZE;
-       } else
-               tp->edge_length = MIN(size, MAX(MINSIZE,
-                                           MIN(tp->width, tp->height) / 2));
-       tp->origin.x = (tp->width / 2 + NRAND(tp->width)) / 2;
-       tp->origin.y = (tp->height / 2 + NRAND(tp->height)) / 2;
-       tp->fringe.n_nodes = 2;
-       if (tp->fringe.nodes != 0)
-               release_screen(tp);
-       if (tp->fringe.nodes != 0 || tp->forced.first != 0) {
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in init_penrose()\n");
-                       (void) fprintf(stderr, "tp->fringe.nodes = 0 && tp->forced.first = 0\n");
-               }
-               release_screen(tp);     /* Try again */
-               tp->done = True;
-       }
-       tp->forced.n_nodes = tp->forced.n_visible = 0;
-       fp = tp->fringe.nodes = ALLOC_NODE(fringe_node_c);
-       if (fp == 0) {
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in init_penrose()\n");
-                       (void) fprintf(stderr, "fp = 0\n");
-               }
-               fp = tp->fringe.nodes = ALLOC_NODE(fringe_node_c);
-               tp->done = True;
-       }
-       /* First vertex. */
-       fp->rule_mask = (1 << N_VERTEX_RULES) - 1;
-       fp->list_ptr = 0;
-       fp->prev = fp->next = ALLOC_NODE(fringe_node_c);
-       if (fp->next == 0) {
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in init_penrose()\n");
-                       (void) fprintf(stderr, "fp->next = 0\n");
-               }
-               fp->prev = fp->next = ALLOC_NODE(fringe_node_c);
-               tp->done = True;
-       }
-       fp->n_tiles = 0;
-       fp->loc = tp->origin;
-       fp->off_screen = False;
-       for (i = 0; i < 5; i++)
-               fp->fived[i] = 0;
-
-       /* Second vertex. */
-       *(fp->next) = *fp;
-       fp->next->prev = fp->next->next = fp;
-       fp = fp->next;
-       i = NRAND(5);
-       fp->fived[i] = 2 * NRAND(2) - 1;
-       fp->loc = fived_to_loc(fp->fived, tp);
-       /* That's it!  We have created our first edge. */
-}
-
-/*-
- * This attempts to match the configuration of vertex with the vertex
- * rules.   The return value is a total match count.  If matches is
- * non-null, it will be used to store information about the matches
- * and must be large enough to contain it.  To play it absolutely
- * safe, allocate room for MAX_TILES_PER_VERTEX * N_VERTEX_RULES
- * entries when searching all matches.   The rule mask of vertex will
- * be applied and rules masked out will not be searched.  Only strict
- * subsequences match.  If first_only is true, the search stops when
- * the first match is found.  Otherwise all matches will be found and
- * the rule_mask of vertex will be updated, which also happens in
- * single-match mode if no match is found.
- */
-static int
-match_rules(fringe_node_c * vertex, rule_match_c * matches, int first_only)
-{
-       /* I will assume that I can fit all the relevant bits in vertex->tiles
-          into one unsigned long.  With 3 bits per element and at most 7
-          elements this means 21 bits, which should leave plenty of room.
-          After packing the bits the rest is just integer comparisons and
-          some bit shuffling.  This is essentially Rabin-Karp without
-          congruence arithmetic. */
-       register int i, j;
-       int         hits = 0, good_rules[N_VERTEX_RULES], n_good = 0;
-       unsigned long
-                   vertex_hash = 0, lower_bits_mask = ~(VT_TOTAL_MASK << VT_BITS * (vertex->n_tiles - 1));
-       unsigned    new_rule_mask = 0;
-
-       for (i = 0; i < N_VERTEX_RULES; i++)
-               if (vertex->n_tiles >= vertex_rules[i].n_tiles)
-                       vertex->rule_mask &= ~(1 << i);
-               else if (vertex->rule_mask & 1 << i)
-                       good_rules[n_good++] = i;
-       for (i = 0; i < vertex->n_tiles; i++)
-               vertex_hash |= (unsigned long) vertex->tiles[i] << (VT_BITS * i);
-
-       for (j = 0; j < n_good; j++) {
-               unsigned long rule_hash = 0;
-               vertex_rule_c *vr = vertex_rules + good_rules[j];
-
-               for (i = 0; i < vertex->n_tiles; i++)
-                       rule_hash |= (unsigned long) vr->tiles[i] << (VT_BITS * i);
-               if (rule_hash == vertex_hash) {
-                       if (matches != 0) {
-                               matches[hits].rule = good_rules[j];
-                               matches[hits].pos = 0;
-                       }
-                       hits++;
-                       if (first_only)
-                               return hits;
-                       else
-                               new_rule_mask |= 1 << good_rules[j];
-               }
-               for (i = vr->n_tiles - 1; i > 0; i--) {
-                       rule_hash = vr->tiles[i] | (rule_hash & lower_bits_mask) << VT_BITS;
-                       if (vertex_hash == rule_hash) {
-                               if (matches != 0) {
-                                       matches[hits].rule = good_rules[j];
-                                       matches[hits].pos = i;
-                               }
-                               hits++;
-                               if (first_only)
-                                       return hits;
-                               else
-                                       new_rule_mask |= 1 << good_rules[j];
-                       }
-               }
-       }
-       vertex->rule_mask = new_rule_mask;
-       return hits;
-}
-
-
-/*-
- * find_completions finds the possible ways to add a tile to a vertex.
- * The return values is the number of such possibilities.  You must
- * first call match_rules to produce matches and n_matches.  sides
- * specifies which side of the vertex to extend and can be S_LEFT or
- * S_RIGHT.  If results is non-null, it should point to an array large
- * enough to contain the results, which will be stored there.
- * MAX_COMPL elements will always suffice.  If first_only is true we
- * stop as soon as we find one possibility (NOT USED).
- */
-#define MAX_COMPL 2
-
-static int
-find_completions(fringe_node_c * vertex, rule_match_c * matches, int n_matches,
-              unsigned side, vertex_type_c * results /*, int first_only */ )
-{
-       int         n_res = 0, cont;
-       register int i, j;
-       vertex_type_c buf[MAX_COMPL];
-
-       if (results == 0)
-               results = buf;
-       if (n_matches <= 0)
-               return 0;
-       for (i = 0; i < n_matches; i++) {
-               vertex_rule_c *rule = vertex_rules + matches[i].rule;
-               int         pos = (matches[i].pos
-                  + (side == S_RIGHT ? vertex->n_tiles : rule->n_tiles - 1))
-               % rule->n_tiles;
-               vertex_type_c vtype = rule->tiles[pos];
-
-               cont = 1;
-               for (j = 0; j < n_res; j++)
-                       if (vtype == results[j]) {
-                               cont = 0;
-                               break;
-                       }
-               if (cont)
-                       results[n_res++] = vtype;
-       }
-       return n_res;
-}
-
-
-/*-
- * Draw a tile on the display.  Vertices must be given in a
- * counterclockwise order.  vtype is the vertex type of v1 (and thus
- * also gives the tile type).
- */
-static void
-draw_tile(fringe_node_c * v1, fringe_node_c * v2,
-         fringe_node_c * v3, fringe_node_c * v4,
-         vertex_type_c vtype, ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
-       XPoint      pts[5];
-       vertex_type_c corner = vtype & VT_CORNER_MASK;
-
-       if (v1->off_screen && v2->off_screen && v3->off_screen && v4->off_screen)
-               return;
-       pts[corner] = v1->loc;
-       pts[VT_RIGHT(corner)] = v2->loc;
-       pts[VT_FAR(corner)] = v3->loc;
-       pts[VT_LEFT(corner)] = v4->loc;
-       pts[4] = pts[0];
-       if (MI_NPIXELS(mi) > 2) {
-               if ((vtype & VT_TYPE_MASK) == VT_THICK)
-                       XSetForeground(display, gc, MI_PIXEL(mi, tp->thick_color));
-               else
-                       XSetForeground(display, gc, MI_PIXEL(mi, tp->thin_color));
-       } else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       XFillPolygon(display, window, gc, pts, 4, Convex, CoordModeOrigin);
-       XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-       XDrawLines(display, window, gc, pts, 5, CoordModeOrigin);
-
-       if (ammann) {
-               /* Draw some Ammann lines for debugging purposes.  This will probably
-                  fail miserably on a b&w display. */
-
-               if ((vtype & VT_TYPE_MASK) == VT_THICK) {
-                       static float r = .0;
-
-                       if (r == .0) {
-                               float       pi10 = 2 * atan(1.) / 5;
-
-                               r = 1 - sin(pi10) / (2 * sin(3 * pi10));
-                       }
-                       if (MI_NPIXELS(mi) > 2)
-                               XSetForeground(display, gc, MI_PIXEL(mi, tp->thin_color));
-                       else {
-                               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-                               XSetLineAttributes(display, gc, 1, LineOnOffDash, CapNotLast, JoinMiter);
-                       }
-                       XDrawLine(display, window, gc,
-                             (int) (r * pts[3].x + (1 - r) * pts[0].x + .5),
-                             (int) (r * pts[3].y + (1 - r) * pts[0].y + .5),
-                             (int) (r * pts[1].x + (1 - r) * pts[0].x + .5),
-                            (int) (r * pts[1].y + (1 - r) * pts[0].y + .5));
-                       if (MI_NPIXELS(mi) <= 2)
-                               XSetLineAttributes(display, gc, 1, LineSolid, CapNotLast, JoinMiter);
-               } else {
-                       if (MI_NPIXELS(mi) > 2)
-                               XSetForeground(display, gc, MI_PIXEL(mi, tp->thick_color));
-                       else {
-                               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-                               XSetLineAttributes(display, gc, 1, LineOnOffDash, CapNotLast, JoinMiter);
-                       }
-                       XDrawLine(display, window, gc,
-                                 (int) ((pts[3].x + pts[2].x) / 2 + .5),
-                                 (int) ((pts[3].y + pts[2].y) / 2 + .5),
-                                 (int) ((pts[1].x + pts[2].x) / 2 + .5),
-                                 (int) ((pts[1].y + pts[2].y) / 2 + .5));
-                       if (MI_NPIXELS(mi) <= 2)
-                               XSetLineAttributes(display, gc, 1, LineSolid, CapNotLast, JoinMiter);
-               }
-       }
-}
-
-/*-
- * Update the status of this vertex on the forced vertex queue.  If
- * the vertex has become untileable set tp->done.  This is supposed
- * to detect dislocations -- never call this routine with a completely
- * tiled vertex.
- *
- * Check for untileable vertices in check_vertex and stop tiling as
- * soon as one finds one.  I don't know if it is possible to run out
- * of forced vertices while untileable vertices exist (or will
- * cavities inevitably appear).  If this can happen, add_random_tile
- * might get called with an untileable vertex, causing ( n <= 1).
- * (This is what the tp->done checks for).
- *
- * A MI_PAUSE celebrates the dislocation.
- */
-static void
-check_vertex(ModeInfo * mi, fringe_node_c * vertex, tiling_c * tp)
-{
-       rule_match_c hits[MAX_TILES_PER_VERTEX * N_VERTEX_RULES];
-       int         n_hits = match_rules(vertex, hits, False);
-       unsigned    forced_sides = 0;
-
-       if (vertex->rule_mask == 0) {
-               tp->done = True;
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Dislocation occured!\n");
-               }
-               MI_PAUSE(mi) = redo_delay_usec; /* Should be able to recover */
-       }
-       if (1 == find_completions(vertex, hits, n_hits, S_LEFT, 0 /*, False */ ))
-               forced_sides |= S_LEFT;
-       if (1 == find_completions(vertex, hits, n_hits, S_RIGHT, 0 /*, False */ ))
-               forced_sides |= S_RIGHT;
-       if (forced_sides == 0) {
-               if (vertex->list_ptr != 0) {
-                       forced_node_c *node = *vertex->list_ptr;
-
-                       *vertex->list_ptr = node->next;
-                       if (node->next != 0)
-                               node->next->vertex->list_ptr = vertex->list_ptr;
-                       free(node);
-                       tp->forced.n_nodes--;
-                       if (!vertex->off_screen)
-                               tp->forced.n_visible--;
-                       vertex->list_ptr = 0;
-               }
-       } else {
-               forced_node_c *node;
-
-               if (vertex->list_ptr == 0) {
-                       node = ALLOC_NODE(forced_node_c);
-                       node->vertex = vertex;
-                       node->next = tp->forced.first;
-                       if (tp->forced.first != 0)
-                               tp->forced.first->vertex->list_ptr = &(node->next);
-                       tp->forced.first = node;
-                       vertex->list_ptr = &(tp->forced.first);
-                       tp->forced.n_nodes++;
-                       if (!vertex->off_screen)
-                               tp->forced.n_visible++;
-               } else
-                       node = *vertex->list_ptr;
-               node->forced_sides = forced_sides;
-       }
-}
-
-
-/*-
- * Delete this vertex.  If the vertex is a member of the forced vertex queue,
- * also remove that entry.  We assume that the vertex is no longer
- * connected to the fringe.  Note that tp->fringe.nodes must not point to
- * the vertex being deleted.
- */
-static void
-delete_vertex(ModeInfo * mi, fringe_node_c * vertex, tiling_c * tp)
-{
-       if (tp->fringe.nodes == vertex) {
-               tp->done = True;
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in delete_penrose()\n");
-                       (void) fprintf(stderr, "tp->fringe.nodes == vertex\n");
-               }
-               MI_PAUSE(mi) = redo_delay_usec;
-       }
-       if (vertex->list_ptr != 0) {
-               forced_node_c *node = *vertex->list_ptr;
-
-               *vertex->list_ptr = node->next;
-               if (node->next != 0)
-                       node->next->vertex->list_ptr = vertex->list_ptr;
-               free(node);
-               tp->forced.n_nodes--;
-               if (!vertex->off_screen)
-                       tp->forced.n_visible--;
-       }
-       if (!vertex->off_screen)
-               tp->fringe.n_nodes--;
-       free(vertex);
-}
-
-
-/* Check whether the addition of a tile of type vtype would completely fill *
-   the space available at vertex. */
-static int
-fills_vertex(ModeInfo * mi, vertex_type_c vtype, fringe_node_c * vertex)
-{
-       return
-               (vertex_dir(mi, vertex, S_LEFT) - vertex_dir(mi, vertex, S_RIGHT)
-                - vtype_angle(vtype)) % 10 == 0;
-}
-
-
-/*-
- * If you were to add a tile of type vtype to a specified side of
- * vertex, fringe_changes tells you which other vertices it would
- * attach to.  The addresses of these vertices will be stored in the
- * last three arguments.  Null is stored if the corresponding vertex
- * would need to be allocated.
- *
- * The function also analyzes which vertices would be swallowed by the tiling
- * and thus cut off from the fringe.  The result is returned as a bit pattern.
- */
-#define FC_BAG 1               /* Total enclosure.  Should never occur. */
-#define FC_NEW_RIGHT 2
-#define FC_NEW_FAR 4
-#define FC_NEW_LEFT 8
-#define FC_NEW_MASK 0xe
-#define FC_CUT_THIS 0x10
-#define FC_CUT_RIGHT 0x20
-#define FC_CUT_FAR 0x40
-#define FC_CUT_LEFT 0x80
-#define FC_CUT_MASK 0xf0
-#define FC_TOTAL_MASK 0xff
-
-static unsigned
-fringe_changes(ModeInfo * mi, fringe_node_c * vertex,
-              unsigned side, vertex_type_c vtype,
-              fringe_node_c ** right, fringe_node_c ** far,
-              fringe_node_c ** left)
-{
-       fringe_node_c *v, *f = NULL;
-       unsigned    result = FC_NEW_FAR;        /* We clear this later if necessary. */
-
-       if (far)
-               *far = 0;
-       if (fills_vertex(mi, vtype, vertex)) {
-               result |= FC_CUT_THIS;
-       } else if (side == S_LEFT) {
-               result |= FC_NEW_RIGHT;
-               if (right)
-                       *right = 0;
-       } else {
-               result |= FC_NEW_LEFT;
-               if (left)
-                       *left = 0;
-       }
-
-       if (!(result & FC_NEW_LEFT)) {
-               v = vertex->next;
-               if (left)
-                       *left = v;
-               if (fills_vertex(mi, VT_LEFT(vtype), v)) {
-                       result = (result & ~FC_NEW_FAR) | FC_CUT_LEFT;
-                       f = v->next;
-                       if (far)
-                               *far = f;
-               }
-       }
-       if (!(result & FC_NEW_RIGHT)) {
-               v = vertex->prev;
-               if (right)
-                       *right = v;
-               if (fills_vertex(mi, VT_RIGHT(vtype), v)) {
-                       result = (result & ~FC_NEW_FAR) | FC_CUT_RIGHT;
-                       f = v->prev;
-                       if (far)
-                               *far = f;
-               }
-       }
-       if (!(result & FC_NEW_FAR)
-           && fills_vertex(mi, VT_FAR(vtype), f)) {
-               result |= FC_CUT_FAR;
-               result &= (~FC_NEW_LEFT & ~FC_NEW_RIGHT);
-               if (right && (result & FC_CUT_LEFT))
-                       *right = f->next;
-               if (left && (result & FC_CUT_RIGHT))
-                       *left = f->prev;
-       }
-       if (((result & FC_CUT_LEFT) && (result & FC_CUT_RIGHT))
-           || ((result & FC_CUT_THIS) && (result & FC_CUT_FAR)))
-               result |= FC_BAG;
-       return result;
-}
-
-
-/* A couple of lesser helper functions for add_tile. */
-static void
-add_vtype(fringe_node_c * vertex, unsigned side, vertex_type_c vtype)
-{
-       if (side == S_RIGHT)
-               vertex->tiles[vertex->n_tiles++] = vtype;
-       else {
-               register int i;
-
-               for (i = vertex->n_tiles; i > 0; i--)
-                       vertex->tiles[i] = vertex->tiles[i - 1];
-               vertex->tiles[0] = vtype;
-               vertex->n_tiles++;
-       }
-}
-
-static fringe_node_c *
-alloc_vertex(ModeInfo * mi, angle_c dir, fringe_node_c * from, tiling_c * tp)
-{
-       fringe_node_c *v = ALLOC_NODE(fringe_node_c);
-
-       if (v == 0) {
-               tp->done = True;
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in alloc_vertex()\n");
-                       (void) fprintf(stderr, "v = 0\n");
-               }
-               MI_PAUSE(mi) = redo_delay_usec;
-       }
-       *v = *from;
-       add_unit_vec(dir, v->fived);
-       v->loc = fived_to_loc(v->fived, tp);
-       if (v->loc.x < 0 || v->loc.y < 0
-           || v->loc.x >= tp->width || v->loc.y >= tp->height) {
-               v->off_screen = True;
-               if (v->loc.x < -tp->width || v->loc.y < -tp->height
-                 || v->loc.x >= 2 * tp->width || v->loc.y >= 2 * tp->height)
-                       tp->done = True;
-       } else {
-               v->off_screen = False;
-               tp->fringe.n_nodes++;
-       }
-       v->n_tiles = 0;
-       v->rule_mask = (1 << N_VERTEX_RULES) - 1;
-       v->list_ptr = 0;
-       return v;
-}
-
-/* 
- * Add a tile described by vtype to the side of vertex.  This must be
- * allowed by the rules -- we do not check it here.  New vertices are
- * allocated as necessary.  The fringe and the forced vertex pool are updated.
- * The new tile is drawn on the display.
- *
- * One thing we do check here is whether the new tile causes an untiled
- * area to become enclosed by the tiling.  If this would happen, the tile
- * is not added.  The return value is true iff a tile was added.
- */
-static int
-add_tile(ModeInfo * mi,
-        fringe_node_c * vertex, unsigned side, vertex_type_c vtype)
-{
-       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
-
-       fringe_node_c
-               * left = 0,
-               *right = 0,
-               *far = 0,
-               *node;
-       unsigned    fc = fringe_changes(mi, vertex, side, vtype, &right, &far, &left);
-
-       vertex_type_c
-               ltype = VT_LEFT(vtype),
-               rtype = VT_RIGHT(vtype),
-               ftype = VT_FAR(vtype);
-
-       /* By our conventions vertex->next lies to the left of vertex and
-          vertex->prev to the right. */
-
-       /* This should never occur. */
-       if (fc & FC_BAG) {
-               tp->done = True;
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in add_tile()\n");
-                       (void) fprintf(stderr, "fc = %d, FC_BAG = %d\n", fc, FC_BAG);
-               }
-       }
-       if (side == S_LEFT) {
-               if (right == 0)
-                       right = alloc_vertex(mi,
-                                            vertex_dir(mi, vertex, S_LEFT) - vtype_angle(vtype), vertex, tp);
-               if (far == 0)
-                       far = alloc_vertex(mi,
-                                          vertex_dir(mi, left, S_RIGHT) + vtype_angle(ltype), left, tp);
-       } else {
-               if (left == 0)
-                       left = alloc_vertex(mi,
-                                           vertex_dir(mi, vertex, S_RIGHT) + vtype_angle(vtype), vertex, tp);
-               if (far == 0)
-                       far = alloc_vertex(mi,
-                                          vertex_dir(mi, right, S_LEFT) - vtype_angle(rtype), right, tp);
-       }
-
-       /* Having allocated the new vertices, but before joining them with
-          the rest of the fringe, check if vertices with same coordinates
-          already exist.  If any such are found, give up. */
-       node = tp->fringe.nodes;
-       do {
-               if (((fc & FC_NEW_LEFT) && fived_equal(node->fived, left->fived))
-                   || ((fc & FC_NEW_RIGHT) && fived_equal(node->fived, right->fived))
-                   || ((fc & FC_NEW_FAR) && fived_equal(node->fived, far->fived))) {
-                       /* Better luck next time. */
-                       if (fc & FC_NEW_LEFT)
-                               delete_vertex(mi, left, tp);
-                       if (fc & FC_NEW_RIGHT)
-                               delete_vertex(mi, right, tp);
-                       if (fc & FC_NEW_FAR)
-                               delete_vertex(mi, far, tp);
-                       return False;
-               }
-               node = node->next;
-       } while (node != tp->fringe.nodes);
-
-       /* Rechain. */
-       if (!(fc & FC_CUT_THIS))
-               if (side == S_LEFT) {
-                       vertex->next = right;
-                       right->prev = vertex;
-               } else {
-                       vertex->prev = left;
-                       left->next = vertex;
-               }
-       if (!(fc & FC_CUT_FAR)) {
-               if (!(fc & FC_CUT_LEFT)) {
-                       far->next = left;
-                       left->prev = far;
-               }
-               if (!(fc & FC_CUT_RIGHT)) {
-                       far->prev = right;
-                       right->next = far;
-               }
-       }
-       draw_tile(vertex, right, far, left, vtype, mi);
-
-       /* Delete vertices that are no longer on the fringe.  Check the others. */
-       if (fc & FC_CUT_THIS) {
-               tp->fringe.nodes = far;
-               delete_vertex(mi, vertex, tp);
-       } else {
-               add_vtype(vertex, side, vtype);
-               check_vertex(mi, vertex, tp);
-               tp->fringe.nodes = vertex;
-       }
-       if (fc & FC_CUT_FAR)
-               delete_vertex(mi, far, tp);
-       else {
-               add_vtype(far, fc & FC_CUT_RIGHT ? S_LEFT : S_RIGHT, ftype);
-               check_vertex(mi, far, tp);
-       }
-       if (fc & FC_CUT_LEFT)
-               delete_vertex(mi, left, tp);
-       else {
-               add_vtype(left, fc & FC_CUT_FAR ? S_LEFT : S_RIGHT, ltype);
-               check_vertex(mi, left, tp);
-       }
-       if (fc & FC_CUT_RIGHT)
-               delete_vertex(mi, right, tp);
-       else {
-               add_vtype(right, fc & FC_CUT_FAR ? S_RIGHT : S_LEFT, rtype);
-               check_vertex(mi, right, tp);
-       }
-       return True;
-}
-
-
-/*-
- * Add a forced tile to a given forced vertex.  Basically an easy job,
- * since we know what to add.  But it might fail if adding the tile
- * would cause some untiled area to become enclosed.  There is also another
- * more exotic culprit: we might have a dislocation.  Fortunately, they
- * are very rare (the PRL article reported that perfect tilings of over
- * 2^50 tiles had been generated).  There is a version of the algorithm
- * that doesn't produce dislocations, but it's a lot hairier than the
- * simpler version I used.
- */
-static int
-add_forced_tile(ModeInfo * mi, forced_node_c * node)
-{
-       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
-       unsigned    side;
-       vertex_type_c vtype;
-       rule_match_c hits[MAX_TILES_PER_VERTEX * N_VERTEX_RULES];
-       int         n;
-
-       if (node->forced_sides == (S_LEFT | S_RIGHT))
-               side = NRAND(2) ? S_LEFT : S_RIGHT;
-       else
-               side = node->forced_sides;
-       n = match_rules(node->vertex, hits, True);
-       n = find_completions(node->vertex, hits, n, side, &vtype /*, True */ );
-       if (n <= 0) {
-               tp->done = True;
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in add_forced_tile()\n");
-                       (void) fprintf(stderr, "n = %d\n", n);
-               }
-       }
-       return add_tile(mi, node->vertex, side, vtype);
-}
-
-
-/*-
- * Whether the addition of a tile of vtype on the given side of vertex
- * would conform to the rules.  The efficient way to do this would be
- * to add the new tile and then use the same type of search as in
- * match_rules.  However, this function is not a performance
- * bottleneck (only needed for random tile additions, which are
- * relatively infrequent), so I will settle for a simpler implementation.
- */
-static int
-legal_move(fringe_node_c * vertex, unsigned side, vertex_type_c vtype)
-{
-       rule_match_c hits[MAX_TILES_PER_VERTEX * N_VERTEX_RULES];
-       vertex_type_c legal_vt[MAX_COMPL];
-       int         n_hits, n_legal, i;
-
-       n_hits = match_rules(vertex, hits, False);
-       n_legal = find_completions(vertex, hits, n_hits, side, legal_vt /*, False */ );
-       for (i = 0; i < n_legal; i++)
-               if (legal_vt[i] == vtype)
-                       return True;
-       return False;
-}
-
-
-/*-
- * Add a randomly chosen tile to a given vertex.  This requires more checking
- * as we must make sure the new tile conforms to the vertex rules at every
- * vertex it touches. */
-static void
-add_random_tile(fringe_node_c * vertex, ModeInfo * mi)
-{
-       fringe_node_c *right, *left, *far;
-       int         i, j, n, n_hits, n_good;
-       unsigned    side, fc, no_good, s;
-       vertex_type_c vtypes[MAX_COMPL];
-       rule_match_c hits[MAX_TILES_PER_VERTEX * N_VERTEX_RULES];
-       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
-
-       if (MI_NPIXELS(mi) > 2) {
-               tp->thick_color = NRAND(MI_NPIXELS(mi));
-               /* Insure good contrast */
-               tp->thin_color = (NRAND(2 * MI_NPIXELS(mi) / 3) + tp->thick_color +
-                                 MI_NPIXELS(mi) / 6) % MI_NPIXELS(mi);
-       } else
-               tp->thick_color = tp->thin_color = MI_WIN_WHITE_PIXEL(mi);
-       n_hits = match_rules(vertex, hits, False);
-       side = NRAND(2) ? S_LEFT : S_RIGHT;
-       n = find_completions(vertex, hits, n_hits, side, vtypes /*, False */ );
-       /* One answer would mean a forced tile. */
-       if (n <= 0) {
-               tp->done = True;
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in add_random_tile()\n");
-                       (void) fprintf(stderr, "n = %d\n", n);
-               }
-       }
-       no_good = 0;
-       n_good = n;
-       for (i = 0; i < n; i++) {
-               fc = fringe_changes(mi, vertex, side, vtypes[i], &right, &far, &left);
-               if (fc & FC_BAG) {
-                       tp->done = True;
-                       if (MI_WIN_IS_VERBOSE(mi)) {
-                               (void) fprintf(stderr, "Weirdness in add_random_tile()\n");
-                               (void) fprintf(stderr, "fc = %d, FC_BAG = %d\n", fc, FC_BAG);
-                       }
-               }
-               if (right) {
-                       s = (((fc & FC_CUT_FAR) && (fc & FC_CUT_LEFT)) ? S_RIGHT : S_LEFT);
-                       if (!legal_move(right, s, VT_RIGHT(vtypes[i]))) {
-                               no_good |= (1 << i);
-                               n_good--;
-                               continue;
-                       }
-               }
-               if (left) {
-                       s = (((fc & FC_CUT_FAR) && (fc & FC_CUT_RIGHT)) ? S_LEFT : S_RIGHT);
-                       if (!legal_move(left, s, VT_LEFT(vtypes[i]))) {
-                               no_good |= (1 << i);
-                               n_good--;
-                               continue;
-                       }
-               }
-               if (far) {
-                       s = ((fc & FC_CUT_LEFT) ? S_RIGHT : S_LEFT);
-                       if (!legal_move(far, s, VT_FAR(vtypes[i]))) {
-                               no_good |= (1 << i);
-                               n_good--;
-                       }
-               }
-       }
-       if (n_good <= 0) {
-               tp->done = True;
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in add_random_tile()\n");
-                       (void) fprintf(stderr, "n_good = %d\n", n_good);
-               }
-       }
-       n = NRAND(n_good);
-       for (i = j = 0; i <= n; i++, j++)
-               while (no_good & (1 << j))
-                       j++;
-
-       i = add_tile(mi, vertex, side, vtypes[j - 1]);
-       if (!i) {
-               tp->done = True;
-               if (MI_WIN_IS_VERBOSE(mi)) {
-                       (void) fprintf(stderr, "Weirdness in add_random_tile()\n");
-                       (void) fprintf(stderr, "i = %d\n", i);
-               }
-       }
-}
-
-/* One step of the growth algorithm. */
-void
-draw_penrose(ModeInfo * mi)
-{
-       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
-       int         i = 0, n;
-       forced_node_c *p = tp->forced.first;
-
-       if (tp->done || tp->failures >= 100) {
-               init_penrose(mi);
-               return;
-       }
-       /* Check for the initial "2-gon". */
-       if (tp->fringe.nodes->prev == tp->fringe.nodes->next) {
-               vertex_type_c vtype = VT_TOTAL_MASK & LRAND();
-
-               XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-               (void) add_tile(mi, tp->fringe.nodes, S_LEFT, vtype);
-               return;
-       }
-       /* No visible nodes left. */
-       if (tp->fringe.n_nodes == 0) {
-               tp->done = True;
-               MI_PAUSE(mi) = redo_delay_usec; /* Just finished drawing */
-               return;
-       }
-       if (tp->forced.n_visible > 0 && tp->failures < 10) {
-               n = NRAND(tp->forced.n_visible);
-               for (;;) {
-                       while (p->vertex->off_screen)
-                               p = p->next;
-                       if (i++ < n)
-                               p = p->next;
-                       else
-                               break;
-               }
-       } else if (tp->forced.n_nodes > 0) {
-               n = NRAND(tp->forced.n_nodes);
-               while (i++ < n)
-                       p = p->next;
-       } else {
-               fringe_node_c *p = tp->fringe.nodes;
-
-               n = NRAND(tp->fringe.n_nodes);
-               i = 0;
-               for (; i <= n; i++)
-                       do {
-                               p = p->next;
-                       } while (p->off_screen);
-               add_random_tile(p, mi);
-               tp->failures = 0;
-               return;
-       }
-       if (add_forced_tile(mi, p))
-               tp->failures = 0;
-       else
-               tp->failures++;
-}
-
-
-/* Total clean-up. */
-void
-release_penrose(ModeInfo * mi)
-{
-       if (tilings != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       tiling_c   *tp = &tilings[screen];
-
-                       release_screen(tp);
-               }
-               (void) free((void *) tilings);
-               tilings = NULL;
-       }
-}
diff --git a/hacks/penrose.man b/hacks/penrose.man
deleted file mode 100644 (file)
index e4734bf..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-penrose - draws quasiperiodic tilings
-.SH SYNOPSIS
-.B penrose
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-redoDelay \fIseconds\fP] [\-size \fIinteger\fP] [\-ammann] [\-no\-ammann]
-
-.SH DESCRIPTION
-The \fIpenrose\fP program draws quasiperiodic tilings.
-
-See Onoda, Steinhardt, DiVincenzo and Socolar in
-Phys. Rev. Lett. 60, #25, 1988 or
-Strandburg in Computers in Physics, Sep/Oct 1991.
-
-This implementation uses the simpler version of the growth
-algorithm, i.e., if there are no forced vertices, a randomly chosen
-tile is added to a randomly chosen vertex (no preference for those
-108 degree angles).
-
-There are two essential differences to the algorithm presented in
-the literature: First, we do not allow the tiling to enclose an
-untiled area.  Whenever this is in danger of happening, we just
-do not add the tile, hoping for a better random choice the next
-time.  Second, when choosing a vertex randomly, we will take
-one that lies withing the viewport if available.  If this seems to
-cause enclosures in the forced rule case, we will allow invisible
-vertices to be chosen.
-
-Tiling is restarted whenever one of the following happens: there
-are no incomplete vertices within the viewport or the tiling has
-extended a window's length beyond the edge of the window
-horizontally or vertically or forced rule choice has failed 100
-times due to areas about to become enclosed.
-
-Although quasiperiodic tilings are produced, the tiles themselves are
-not penrose tiles (darts and kites). In contrast to penrose tiles,
-these tiles can be arranged to form a periodic tiling.
-
-.SH OPTIONS
-.I penrose
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors are chosen randomly.
-.TP 8
-.B \-size \fIinteger\fP
-How big the tiles should be.  Default 40 pixels.
-
-.TP 8
-.B \-delay \fImilliseconds\fP
-How long (in 1/1,000,000'ths of a second) to wait between drawing each
-tile.  Default 10,000 or .01 seconds.
-
-.TP 8
-.B \-redoDelay \fIseconds\fP
-How long to wait between starting a completely new tiling.  Default 3 seconds.
-
-.TP 8
-.B \-ammann \fIinteger\fP
-.TP 8
-.B \-no\-ammann \fIinteger\fP
-Whether Ammann lines should be added.
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1996 by Timo Korvola.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Timo Korvola <tkorvola@dopey.hut.fi>, 1996.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/phosphor.c b/hacks/phosphor.c
deleted file mode 100644 (file)
index 4aced86..0000000
+++ /dev/null
@@ -1,801 +0,0 @@
-/* xscreensaver, Copyright (c) 1999 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.
- *
- * Phosphor -- simulate a glass tty with long-sustain phosphor.
- */
-
-#include "screenhack.h"
-#include <stdio.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/Intrinsic.h>
-
-extern XtAppContext app;
-
-#define FUZZY_BORDER
-
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#define MIN(a,b) ((a)<(b)?(a):(b))
-
-#define BLANK  0
-#define FLARE  1
-#define NORMAL 2
-#define FADE   3
-
-#define CURSOR_INDEX 128
-
-typedef struct {
-  unsigned char name;
-  int width, height;
-  Pixmap pixmap;
-#ifdef FUZZY_BORDER
-  Pixmap pixmap2;
-#endif /* FUZZY_BORDER */
-  Bool blank_p;
-} p_char;
-
-typedef struct {
-  p_char *p_char;
-  int state;
-  Bool changed;
-} p_cell;
-
-typedef struct {
-  Display *dpy;
-  Window window;
-  XWindowAttributes xgwa;
-  XFontStruct *font;
-  int grid_width, grid_height;
-  int char_width, char_height;
-  int scale;
-  int ticks;
-  p_char **chars;
-  p_cell *cells;
-  XGCValues gcv;
-  GC gc0;
-  GC gc1;
-#ifdef FUZZY_BORDER
-  GC gc2;
-#endif /* FUZZY_BORDER */
-  GC *gcs;
-  XImage *font_bits;
-
-  int cursor_x, cursor_y;
-  XtIntervalId cursor_timer;
-  Time cursor_blink;
-
-  FILE *pipe;
-  XtInputId pipe_id;
-  Bool input_available_p;
-  Time subproc_relaunch_delay;
-
-} p_state;
-
-
-static void capture_font_bits (p_state *state);
-static p_char *make_character (p_state *state, int c);
-static void drain_input (p_state *state);
-static void char_to_pixmap (p_state *state, p_char *pc, int c);
-static void launch_text_generator (p_state *state);
-
-
-/* About font metrics:
-
-   "lbearing" is the distance from the leftmost pixel of a character to
-   the logical origin of that character.  That is, it is the number of
-   pixels of the character which are to the left of its logical origin.
-
-   "rbearing" is the distance from the logical origin of a character to
-   the rightmost pixel of a character.  That is, it is the number of
-   pixels of the character to the right of its logical origin.
-
-   "descent" is the distance from the bottommost pixel of a character to
-   the logical baseline.  That is, it is the number of pixels of the
-   character which are below the baseline.
-
-   "ascent" is the distance from the logical baseline to the topmost pixel.
-   That is, it is the number of pixels of the character above the baseline.
-
-   Therefore, the bounding box of the "ink" of a character is
-   lbearing + rbearing by ascent + descent;
-
-   "width" is the distance from the logical origin of this character to
-   the position where the logical orgin of the next character should be
-   placed.
-
-   For our purposes, we're only interested in the part of the character
-   lying inside the "width" box.  If the characters have ink outside of
-   that box (the "charcell" box) then we're going to lose it.  Alas.
- */
-
-static p_state *
-init_phosphor (Display *dpy, Window window)
-{
-  int i;
-  unsigned long flags;
-  p_state *state = (p_state *) calloc (sizeof(*state), 1);
-  char *fontname = get_string_resource ("font", "Font");
-  XFontStruct *font;
-
-  state->dpy = dpy;
-  state->window = window;
-
-  XGetWindowAttributes (dpy, window, &state->xgwa);
-
-  state->font = XLoadQueryFont (dpy, fontname);
-
-  if (!state->font)
-    {
-      fprintf(stderr, "couldn't load font \"%s\"\n", fontname);
-      state->font = XLoadQueryFont (dpy, "fixed");
-    }
-  if (!state->font)
-    {
-      fprintf(stderr, "couldn't load font \"fixed\"");
-      exit(1);
-    }
-
-  font = state->font;
-  state->scale = get_integer_resource ("scale", "Integer");
-  state->ticks = 3 + get_integer_resource ("ticks", "Integer");
-
-#if 0
-  for (i = 0; i < font->n_properties; i++)
-    if (font->properties[i].name == XA_FONT)
-      printf ("font: %s\n", XGetAtomName(dpy, font->properties[i].card32));
-#endif /* 0 */
-
-  state->cursor_blink = get_integer_resource ("cursor", "Time");
-  state->subproc_relaunch_delay =
-    (1000 * get_integer_resource ("relaunch", "Time"));
-
-  state->char_width  = font->max_bounds.width;
-  state->char_height = font->max_bounds.ascent + font->max_bounds.descent;
-
-  state->grid_width = state->xgwa.width / (state->char_width * state->scale);
-  state->grid_height = state->xgwa.height /(state->char_height * state->scale);
-  state->cells = (p_cell *) calloc (sizeof(p_cell),
-                                    state->grid_width * state->grid_height);
-  state->chars = (p_char **) calloc (sizeof(p_char *), 256);
-
-  state->gcs = (GC *) calloc (sizeof(GC), state->ticks + 1);
-
-  {
-    int ncolors = MAX (0, state->ticks - 3);
-    XColor *colors = (XColor *) calloc (ncolors, sizeof(XColor));
-    int h1, h2;
-    double s1, s2, v1, v2;
-
-    unsigned long fg = get_pixel_resource ("foreground", "Foreground",
-                                           state->dpy, state->xgwa.colormap);
-    unsigned long bg = get_pixel_resource ("background", "Background",
-                                           state->dpy, state->xgwa.colormap);
-    unsigned long flare = get_pixel_resource ("flareForeground", "Foreground",
-                                              state->dpy,state->xgwa.colormap);
-    unsigned long fade = get_pixel_resource ("fadeForeground", "Foreground",
-                                             state->dpy,state->xgwa.colormap);
-
-    XColor start, end;
-
-    start.pixel = fade;
-    XQueryColor (state->dpy, state->xgwa.colormap, &start);
-
-    end.pixel = bg;
-    XQueryColor (state->dpy, state->xgwa.colormap, &end);
-
-    /* Now allocate a ramp of colors from the main color to the background. */
-    rgb_to_hsv (start.red, start.green, start.blue, &h1, &s1, &v1);
-    rgb_to_hsv (end.red, end.green, end.blue, &h2, &s2, &v2);
-    make_color_ramp (state->dpy, state->xgwa.colormap,
-                     h1, s1, v1,
-                     h2, s2, v2,
-                     colors, &ncolors,
-                     False, True, False);
-
-    /* Now, GCs all around.
-     */
-    state->gcv.font = font->fid;
-    state->gcv.cap_style = CapRound;
-#ifdef FUZZY_BORDER
-    state->gcv.line_width = (int) (((long) state->scale) * 1.3);
-    if (state->gcv.line_width == state->scale)
-      state->gcv.line_width++;
-#else /* !FUZZY_BORDER */
-    state->gcv.line_width = (int) (((long) state->scale) * 0.9);
-    if (state->gcv.line_width >= state->scale)
-      state->gcv.line_width = state->scale - 1;
-    if (state->gcv.line_width < 1)
-      state->gcv.line_width = 1;
-#endif /* !FUZZY_BORDER */
-
-    flags = (GCForeground | GCBackground | GCCapStyle | GCLineWidth);
-
-    state->gcv.background = bg;
-    state->gcv.foreground = bg;
-    state->gcs[BLANK] = XCreateGC (state->dpy, state->window, flags,
-                                   &state->gcv);
-
-    state->gcv.foreground = flare;
-    state->gcs[FLARE] = XCreateGC (state->dpy, state->window, flags,
-                                   &state->gcv);
-
-    state->gcv.foreground = fg;
-    state->gcs[NORMAL] = XCreateGC (state->dpy, state->window, flags,
-                                    &state->gcv);
-
-    for (i = 0; i < ncolors; i++)
-      {
-        state->gcv.foreground = colors[i].pixel;
-        state->gcs[FADE + i] = XCreateGC (state->dpy, state->window,
-                                          flags, &state->gcv);
-      }
-  }
-
-  capture_font_bits (state);
-
-  launch_text_generator (state);
-
-  return state;
-}
-
-
-static void
-capture_font_bits (p_state *state)
-{
-  XFontStruct *font = state->font;
-  int safe_width = font->max_bounds.rbearing - font->min_bounds.lbearing;
-  int height = state->char_height;
-  unsigned char string[257];
-  int i;
-  Pixmap p = XCreatePixmap (state->dpy, state->window,
-                            (safe_width * 256), height, 1);
-
-  for (i = 0; i < 256; i++)
-    string[i] = (unsigned char) i;
-  string[256] = 0;
-
-  state->gcv.foreground = 0;
-  state->gcv.background = 0;
-  state->gc0 = XCreateGC (state->dpy, p,
-                          (GCForeground | GCBackground),
-                          &state->gcv);
-
-  state->gcv.foreground = 1;
-  state->gc1 = XCreateGC (state->dpy, p,
-                          (GCFont | GCForeground | GCBackground |
-                           GCCapStyle | GCLineWidth),
-                          &state->gcv);
-
-#ifdef FUZZY_BORDER
-  {
-    state->gcv.line_width = (int) (((long) state->scale) * 0.8);
-    if (state->gcv.line_width >= state->scale)
-      state->gcv.line_width = state->scale - 1;
-    if (state->gcv.line_width < 1)
-      state->gcv.line_width = 1;
-    state->gc2 = XCreateGC (state->dpy, p,
-                            (GCFont | GCForeground | GCBackground |
-                             GCCapStyle | GCLineWidth),
-                            &state->gcv);
-  }
-#endif /* FUZZY_BORDER */
-
-  XFillRectangle (state->dpy, p, state->gc0, 0, 0, (safe_width * 256), height);
-
-  for (i = 0; i < 256; i++)
-    {
-      if (string[i] < font->min_char_or_byte2 ||
-          string[i] > font->max_char_or_byte2)
-        continue;
-      XDrawString (state->dpy, p, state->gc1,
-                   i * safe_width, font->ascent,
-                   string + i, 1);
-    }
-
-  /* Draw the cursor. */
-  XFillRectangle (state->dpy, p, state->gc1,
-                  (CURSOR_INDEX * safe_width), 1,
-                  (font->per_char
-                   ? font->per_char['n'-font->min_char_or_byte2].width
-                   : font->max_bounds.width),
-                  font->ascent - 1);
-
-#if 0
-  XCopyPlane (state->dpy, p, state->window, state->gcs[FLARE],
-              0, 0, (safe_width * 256), height, 0, 0, 1L);
-  XSync(state->dpy, False);
-#endif
-
-  XSync (state->dpy, False);
-  state->font_bits = XGetImage (state->dpy, p, 0, 0,
-                                (safe_width * 256), height, ~0L, XYPixmap);
-  XFreePixmap (state->dpy, p);
-
-  for (i = 0; i < 256; i++)
-    state->chars[i] = make_character (state, i);
-  state->chars[CURSOR_INDEX] = make_character (state, CURSOR_INDEX);
-}
-
-
-static p_char *
-make_character (p_state *state, int c)
-{
-  p_char *pc = (p_char *) malloc (sizeof (*pc));
-  pc->name = (unsigned char) c;
-  pc->width =  state->scale * state->char_width;
-  pc->height = state->scale * state->char_height;
-  char_to_pixmap (state, pc, c);
-  return pc;
-}
-
-
-static void
-char_to_pixmap (p_state *state, p_char *pc, int c)
-{
-  Pixmap p = 0;
-  GC gc;
-#ifdef FUZZY_BORDER
-  Pixmap p2 = 0;
-  GC gc2;
-#endif /* FUZZY_BORDER */
-  int from, to;
-  int x1, y;
-
-  XFontStruct *font = state->font;
-  int safe_width = font->max_bounds.rbearing - font->min_bounds.lbearing;
-
-  int width  = state->scale * state->char_width;
-  int height = state->scale * state->char_height;
-
-  if (c < font->min_char_or_byte2 ||
-      c > font->max_char_or_byte2)
-    goto DONE;
-
-  gc = state->gc1;
-  p = XCreatePixmap (state->dpy, state->window, width, height, 1);
-  XFillRectangle (state->dpy, p, state->gc0, 0, 0, width, height);
-#ifdef FUZZY_BORDER
-  gc2 = state->gc2;
-  p2 = XCreatePixmap (state->dpy, state->window, width, height, 1);
-  XFillRectangle (state->dpy, p2, state->gc0, 0, 0, width, height);
-#endif /* FUZZY_BORDER */
-
-  from = safe_width * c;
-  to =   safe_width * (c + 1);
-
-#if 0
-  if (c > 75 && c < 150)
-    {
-      printf ("\n=========== %d (%c)\n", c, c);
-      for (y = 0; y < state->char_height; y++)
-        {
-          for (x1 = from; x1 < to; x1++)
-            printf (XGetPixel (state->font_bits, x1, y) ? "* " : ". ");
-          printf ("\n");
-        }
-    }
-#endif
-
-  pc->blank_p = True;
-  for (y = 0; y < state->char_height; y++)
-    for (x1 = from; x1 < to; x1++)
-      if (XGetPixel (state->font_bits, x1, y))
-        {
-          int xoff = state->scale / 2;
-          int x2;
-          for (x2 = x1; x2 < to; x2++)
-            if (!XGetPixel (state->font_bits, x2, y))
-              break;
-          x2--;
-          XDrawLine (state->dpy, p, gc,
-                     (x1 - from) * state->scale + xoff, y * state->scale,
-                     (x2 - from) * state->scale + xoff, y * state->scale);
-#ifdef FUZZY_BORDER
-          XDrawLine (state->dpy, p2, gc2,
-                     (x1 - from) * state->scale + xoff, y * state->scale,
-                     (x2 - from) * state->scale + xoff, y * state->scale);
-#endif /* FUZZY_BORDER */
-          x1 = x2;
-          pc->blank_p = False;
-        }
-
-  /*  if (pc->blank_p && c == CURSOR_INDEX)
-    abort();*/
-
- DONE:
-  pc->pixmap = p;
-#ifdef FUZZY_BORDER
-  pc->pixmap2 = p2;
-#endif /* FUZZY_BORDER */
-}
-
-\f
-/* Managing the display. 
- */
-
-static void cursor_on_timer (XtPointer closure, XtIntervalId *id);
-static void cursor_off_timer (XtPointer closure, XtIntervalId *id);
-
-static Bool
-set_cursor_1 (p_state *state, Bool on)
-{
-  p_cell *cell = &state->cells[state->grid_width * state->cursor_y
-                              + state->cursor_x];
-  p_char *cursor = state->chars[CURSOR_INDEX];
-  int new_state = (on ? NORMAL : FADE);
-
-  if (cell->p_char != cursor)
-    cell->changed = True;
-
-  if (cell->state != new_state)
-    cell->changed = True;
-
-  cell->p_char = cursor;
-  cell->state = new_state;
-  return cell->changed;
-}
-
-static void
-set_cursor (p_state *state, Bool on)
-{
-  if (set_cursor_1 (state, on))
-;
-    {
-      if (state->cursor_timer)
-        XtRemoveTimeOut (state->cursor_timer);
-      state->cursor_timer = 0;
-      cursor_on_timer (state, 0);
-    }
-}
-
-
-
-
-static void
-cursor_off_timer (XtPointer closure, XtIntervalId *id)
-{
-  p_state *state = (p_state *) closure;
-  set_cursor_1 (state, False);
-  state->cursor_timer = XtAppAddTimeOut (app, state->cursor_blink,
-                                         cursor_on_timer, closure);
-}
-
-static void
-cursor_on_timer (XtPointer closure, XtIntervalId *id)
-{
-  p_state *state = (p_state *) closure;
-  set_cursor_1 (state, True);
-  state->cursor_timer = XtAppAddTimeOut (app, 2 * state->cursor_blink,
-                                         cursor_off_timer, closure);
-}
-
-
-static void
-clear (p_state *state)
-{
-  int x, y;
-  state->cursor_x = 0;
-  state->cursor_y = 0;
-  for (y = 0; y < state->grid_height; y++)
-    for (x = 0; x < state->grid_width; x++)
-      {
-        p_cell *cell = &state->cells[state->grid_width * y + x];
-        if (cell->state == FLARE || cell->state == NORMAL)
-          {
-            cell->state = FADE;
-            cell->changed = True;
-          }
-      }
-  set_cursor (state, True);
-}
-
-
-static void
-decay (p_state *state)
-{
-  int x, y;
-  for (y = 0; y < state->grid_height; y++)
-    for (x = 0; x < state->grid_width; x++)
-      {
-        p_cell *cell = &state->cells[state->grid_width * y + x];
-        if (cell->state == FLARE)
-          {
-            cell->state = NORMAL;
-            cell->changed = True;
-          }
-        else if (cell->state >= FADE)
-          {
-            cell->state++;
-            if (cell->state >= state->ticks)
-              cell->state = BLANK;
-            cell->changed = True;
-          }
-      }
-}
-
-
-static void
-scroll (p_state *state)
-{
-  int x, y;
-  for (x = 0; x < state->grid_width; x++)
-    {
-      p_cell *from, *to;
-      for (y = 1; y < state->grid_height; y++)
-        {
-          from = &state->cells[state->grid_width * y     + x];
-          to   = &state->cells[state->grid_width * (y-1) + x];
-
-          if ((from->state == FLARE || from->state == NORMAL) &&
-              !from->p_char->blank_p)
-            {
-              *to = *from;
-              to->state = NORMAL;  /* should be FLARE?  Looks bad... */
-            }
-          else
-            {
-              if (to->state == FLARE || to->state == NORMAL)
-                to->state = FADE;
-            }
-
-          to->changed = True;
-        }
-
-      to = from;
-      if (to->state == FLARE || to->state == NORMAL)
-        {
-          to->state = FADE;
-          to->changed = True;
-        }
-    }
-  set_cursor (state, True);
-}
-
-
-static void
-print_char (p_state *state, int c)
-{
-  p_cell *cell = &state->cells[state->grid_width * state->cursor_y
-                              + state->cursor_x];
-
-  /* Start the cursor fading (in case we don't end up overwriting it.) */
-  if (cell->state == FLARE || cell->state == NORMAL)
-    {
-      cell->state = FADE;
-      cell->changed = True;
-    }
-
-  if (c == '\t') c = ' ';   /* blah. */
-
-  if (c == '\r' || c == '\n')
-    {
-      state->cursor_x = 0;
-      if (state->cursor_y == state->grid_height - 1)
-        scroll (state);
-      else
-        state->cursor_y++;
-    }
-  else if (c == '\014')
-    {
-      clear (state);
-    }
-  else
-    {
-      cell->state = FLARE;
-      cell->p_char = state->chars[c];
-      cell->changed = True;
-      state->cursor_x++;
-
-      if (c != ' ' && cell->p_char->blank_p)
-        cell->p_char = state->chars[CURSOR_INDEX];
-
-      if (state->cursor_x >= state->grid_width - 1)
-        {
-          state->cursor_x = 0;
-          if (state->cursor_y >= state->grid_height - 1)
-            scroll (state);
-          else
-            state->cursor_y++;
-        }
-    }
-  set_cursor (state, True);
-}
-
-
-static void
-update_display (p_state *state, Bool changed_only)
-{
-  int x, y;
-
-  for (y = 0; y < state->grid_height; y++)
-    for (x = 0; x < state->grid_width; x++)
-      {
-        p_cell *cell = &state->cells[state->grid_width * y + x];
-        int width, height, tx, ty;
-
-        if (changed_only && !cell->changed)
-          continue;
-
-        width = state->char_width * state->scale;
-        height = state->char_height * state->scale;
-        tx = x * width;
-        ty = y * height;
-
-        if (cell->state == BLANK || cell->p_char->blank_p)
-          {
-            XFillRectangle (state->dpy, state->window, state->gcs[BLANK],
-                            tx, ty, width, height);
-          }
-        else
-          {
-#ifdef FUZZY_BORDER
-            GC gc1 = state->gcs[cell->state];
-            GC gc2 = ((cell->state + 2) < state->ticks
-                      ? state->gcs[cell->state + 2]
-                      : 0);
-            XCopyPlane (state->dpy, cell->p_char->pixmap, state->window,
-                        (gc2 ? gc2 : gc1),
-                        0, 0, width, height, tx, ty, 1L);
-            if (gc2)
-              {
-                XSetClipMask (state->dpy, gc1, cell->p_char->pixmap2);
-                XSetClipOrigin (state->dpy, gc1, tx, ty);
-                XFillRectangle (state->dpy, state->window, gc1,
-                                tx, ty, width, height);
-                XSetClipMask (state->dpy, gc1, None);
-              }
-#else /* !FUZZY_BORDER */
-
-            XCopyPlane (state->dpy,
-                        cell->p_char->pixmap, state->window,
-                        state->gcs[cell->state],
-                        0, 0, width, height, tx, ty, 1L);
-
-#endif /* !FUZZY_BORDER */
-          }
-
-        cell->changed = False;
-      }
-}
-
-
-static void
-run_phosphor (p_state *state)
-{
-  update_display (state, True);
-  decay (state);
-  drain_input (state);
-}
-
-\f
-/* Subprocess.
- */
-
-static void
-subproc_cb (XtPointer closure, int *source, XtInputId *id)
-{
-  p_state *state = (p_state *) closure;
-  state->input_available_p = True;
-}
-
-
-static void
-launch_text_generator (p_state *state)
-{
-  char *oprogram = get_string_resource ("program", "Program");
-  char *program = (char *) malloc (strlen (oprogram) + 10);
-
-  strcpy (program, "( ");
-  strcat (program, oprogram);
-  strcat (program, " ) 2>&1");
-
-  if ((state->pipe = popen (program, "r")))
-    {
-      state->pipe_id =
-        XtAppAddInput (app, fileno (state->pipe),
-                       (XtPointer) (XtInputReadMask | XtInputExceptMask),
-                       subproc_cb, (XtPointer) state);
-    }
-  else
-    {
-      perror (program);
-    }
-}
-
-
-static void
-relaunch_generator_timer (XtPointer closure, XtIntervalId *id)
-{
-  p_state *state = (p_state *) closure;
-  launch_text_generator (state);
-}
-
-
-static void
-drain_input (p_state *state)
-{
-  if (state->input_available_p)
-    {
-      char s[2];
-      int n = read (fileno (state->pipe), (void *) s, 1);
-      if (n == 1)
-        {
-          print_char (state, s[0]);
-        }
-      else
-        {
-          XtRemoveInput (state->pipe_id);
-          state->pipe_id = 0;
-          pclose (state->pipe);
-          state->pipe = 0;
-
-          if (state->cursor_x != 0)    /* break line if unbroken */
-            print_char (state, '\n');  /* blank line */
-          print_char (state, '\n');
-
-          /* Set up a timer to re-launch the subproc in a bit. */
-          XtAppAddTimeOut (app, state->subproc_relaunch_delay,
-                           relaunch_generator_timer,
-                           (XtPointer) state);
-        }
-        
-      state->input_available_p = False;
-    }
-}
-
-
-\f
-char *progclass = "Phosphor";
-
-char *defaults [] = {
-  ".background:                   Black",
-  ".foreground:                   Green",
-  "*fadeForeground:       DarkGreen",
-  "*flareForeground:      White",
-  "*font:                 fixed",
-  "*scale:                6",
-  "*ticks:                20",
-  "*delay:                50000",
-  "*cursor:               333",
-  "*program:            " ZIPPY_PROGRAM,
-  "*relaunch:             5",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-font",           ".font",                XrmoptionSepArg, 0 },
-  { "-scale",          ".scale",               XrmoptionSepArg, 0 },
-  { "-ticks",          ".ticks",               XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
-  { "-program",                ".program",             XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-
-void
-screenhack (Display *dpy, Window window)
-{
-  int delay = get_integer_resource ("delay", "Integer");
-  p_state *state = init_phosphor (dpy, window);
-
-  clear (state);
-
-  while (1)
-    {
-      run_phosphor (state);
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-
-      if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
-        XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput);
-
-      if (delay) usleep (delay);
-    }
-}
diff --git a/hacks/pyro.c b/hacks/pyro.c
deleted file mode 100644 (file)
index ddace39..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1994, 1996, 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.
- */
-
-/* Draw some fireworks.  Inspired from TI Explorer Lisp code by 
-   John S. Pezaris <pz@hx.lcs.mit.edu>
- */
-
-#include "screenhack.h"
-
-struct projectile {
-  int x, y;    /* position */
-  int dx, dy;  /* velocity */
-  int decay;
-  int size;
-  int fuse;
-  Bool primary;
-  Bool dead;
-  XColor color;
-  struct projectile *next_free;
-};
-
-static struct projectile *projectiles, *free_projectiles;
-
-static struct projectile *
-get_projectile (void)
-{
-  struct projectile *p;
-  if (free_projectiles)
-    {
-      p = free_projectiles;
-      free_projectiles = p->next_free;
-      p->next_free = 0;
-      p->dead = False;
-      return p;
-    }
-  else
-    return 0;
-}
-
-static void
-free_projectile (struct projectile *p)
-{
-  p->next_free = free_projectiles;
-  free_projectiles = p;
-  p->dead = True;
-}
-
-static void
-launch (int xlim, int ylim, int g,
-       Display *dpy, Colormap cmap)
-{
-  struct projectile *p = get_projectile ();
-  int x, dx, xxx;
-  if (! p) return;
-
-  do {
-    x = (random () % xlim);
-    dx = 30000 - (random () % 60000);
-    xxx = x + (dx * 200);
-  } while (xxx <= 0 || xxx >= xlim);
-
-  p->x = x;
-  p->y = ylim;
-  p->dx = dx;
-  p->size = 8000;
-  p->decay = 0;
-  p->dy = (random () % 4000) - 13000;
-  p->fuse = ((((random () % 500) + 500) * abs (p->dy / g)) / 1000);
-  p->primary = True;
-
-  if (! mono_p)
-    {
-      hsv_to_rgb (random () % 360, 1.0, 1.0,
-                 &p->color.red, &p->color.green, &p->color.blue);
-      p->color.flags = DoRed | DoGreen | DoBlue;
-      if (!XAllocColor (dpy, cmap, &p->color))
-       {
-         p->color.pixel = WhitePixel (dpy, DefaultScreen (dpy));
-         p->color.red = p->color.green = p->color.blue = 0xFFFF;
-       }
-    }
-}
-
-static struct projectile *
-shrapnel (struct projectile *parent, Display *dpy, Colormap cmap)
-{
-  struct projectile *p = get_projectile ();
-  if (! p) return 0;
-  p->x = parent->x;
-  p->y = parent->y;
-  p->dx = (random () % 5000) - 2500 + parent->dx;
-  p->dy = (random () % 5000) - 2500 + parent->dy;
-  p->decay = (random () % 50) - 60;
-  p->size = (parent->size * 2) / 3;
-  p->fuse = 0;
-  p->primary = False;
-
-  p->color = parent->color;
-  if (! mono_p)
-    XAllocColor (dpy, cmap, &p->color); /* dup the lock */
-  
-  return p;
-}
-
-static GC draw_gc, erase_gc;
-static unsigned int default_fg_pixel;
-
-static int how_many, frequency, scatter;
-
-static Colormap
-init_pyro (Display *dpy, Window window)
-{
-  int i;
-  Colormap cmap;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  how_many = get_integer_resource ("count", "Integer");
-  frequency = get_integer_resource ("frequency", "Integer");
-  scatter = get_integer_resource ("scatter", "Integer");
-  if (how_many <= 0) how_many = 100;
-  if (frequency <= 0) frequency = 30;
-  if (scatter <= 0) scatter = 20;
-  projectiles = 0;
-  free_projectiles = 0;
-  projectiles = (struct projectile *)
-    calloc (how_many, sizeof (struct projectile));
-  for (i = 0; i < how_many; i++)
-    free_projectile (&projectiles [i]);
-  gcv.foreground = default_fg_pixel =
-    get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  draw_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  gcv.foreground = get_pixel_resource ("background", "Background", dpy, cmap);
-  erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  XClearWindow (dpy, window);
-  return cmap;
-}
-
-static void
-pyro (Display *dpy, Window window, Colormap cmap)
-{
-  XWindowAttributes xgwa;
-  static int xlim, ylim, real_xlim, real_ylim;
-  int g = 100;
-  int i;
-
-  if ((random () % frequency) == 0)
-    {
-      XGetWindowAttributes (dpy, window, &xgwa);
-      real_xlim = xgwa.width;
-      real_ylim = xgwa.height;
-      xlim = real_xlim * 1000;
-      ylim = real_ylim * 1000;
-      launch (xlim, ylim, g, dpy, cmap);
-    }
-
-  XSync (dpy, False);
-  screenhack_handle_events (dpy);
-  usleep (10000);
-
-  for (i = 0; i < how_many; i++)
-    {
-      struct projectile *p = &projectiles [i];
-      int old_x, old_y, old_size;
-      int size, x, y;
-      if (p->dead) continue;
-      old_x = p->x >> 10;
-      old_y = p->y >> 10;
-      old_size = p->size >> 10;
-      size = (p->size += p->decay) >> 10;
-      x = (p->x += p->dx) >> 10;
-      y = (p->y += p->dy) >> 10;
-      p->dy += (p->size >> 6);
-      if (p->primary) p->fuse--;
-
-      /* erase old one */
-      XFillRectangle (dpy, window, erase_gc, old_x, old_y,
-                     old_size, old_size);
-
-      if ((p->primary ? (p->fuse > 0) : (p->size > 0)) &&
-         x < real_xlim &&
-         y < real_ylim &&
-         x > 0 &&
-         y > 0)
-       {
-         if (mono_p || p->primary)
-           XSetForeground (dpy, draw_gc, default_fg_pixel);
-         else
-           XSetForeground (dpy, draw_gc, p->color.pixel);
-
-         if /*(p->primary)*/ (size > 2)
-           XFillArc (dpy, window, draw_gc, x, y, size, size, 0, 360*64);
-         else
-           XFillRectangle (dpy, window, draw_gc, x, y, size, size);
-       }
-      else
-       {
-         free_projectile (p);
-         if (! mono_p)
-           if (p->color.pixel != WhitePixel (dpy, DefaultScreen (dpy)))
-             XFreeColors (dpy, cmap, &p->color.pixel, 1, 0);
-       }
-
-      if (p->primary && p->fuse <= 0)
-       {
-         int j = (random () % scatter) + (scatter/2);
-         while (j--)
-           shrapnel (p, dpy, cmap);
-       }
-    }
-}
-
-\f
-char *progclass = "Pyro";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*count:     100",
-  "*frequency: 30",
-  "*scatter:   20",
-  "*geometry:  800x500",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-count",          ".count",       XrmoptionSepArg, 0 },
-  { "-frequency",      ".frequency",   XrmoptionSepArg, 0 },
-  { "-scatter",                ".scatter",     XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  Colormap cmap = init_pyro (dpy, window);
-  while (1)
-    pyro (dpy, window, cmap);
-}
diff --git a/hacks/pyro.man b/hacks/pyro.man
deleted file mode 100644 (file)
index 106fc8a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-.TH XScreenSaver 1 "13-aug-92" "X Version 11"
-.SH NAME
-pyro - simulate fireworks
-.SH SYNOPSIS
-.B pyro
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-count \fIinteger\fP] [\-frequency \fIinteger\fP] [\-scatter \fIinteger\fP]
-.SH DESCRIPTION
-The \fIpyro\fP program simulates fireworks, in a way similar to a Macintosh
-program of the same name.
-.SH OPTIONS
-.I pyro
-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 \-count \fIinteger\fP
-How many particles should be allowed on the screen at once.  Default 100.
-.TP 8
-.B \-frequency \fIinteger\fP
-How often new missiles should launch.  Default 30.
-.TP 8
-.B \-scatter \fIinteger\fP
-How many particles should appear when a missile explodes.  Default 20.
-The actual number used is between \fIN\fP and \fIN+(N/2)\fP.
-.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 1992 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 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>, 13-aug-92.
diff --git a/hacks/qix.c b/hacks/qix.c
deleted file mode 100644 (file)
index 924b542..0000000
+++ /dev/null
@@ -1,511 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997, 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 "screenhack.h"
-#include "alpha.h"
-#include <stdio.h>
-
-#define MAXPOLY        16
-#define SCALE  6
-
-struct qpoint {
-  int x, y;
-  int dx, dy;
-};
-
-struct qline {
-  struct qpoint *p;
-  XColor color;
-  Bool dead;
-};
-
-struct qix {
-  int id;
-  int fp;
-  int nlines;
-  int npoly;
-  struct qline *lines;
-};
-
-static GC draw_gc, erase_gc;
-static unsigned int default_fg_pixel;
-static long maxx, maxy, max_spread, max_size;
-static int color_shift;
-static Bool random_p, solid_p, xor_p, transparent_p, gravity_p;
-static int delay;
-static int count;
-static Colormap cmap;
-static int npoly;
-
-static GC *gcs[2];
-
-static void
-get_geom (Display *dpy, Window window)
-{
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  maxx = ((long)(xgwa.width+1)<<SCALE)  - 1;
-  maxy = ((long)(xgwa.height+1)<<SCALE) - 1;
-}
-
-static struct qix *
-init_one_qix (Display *dpy, Window window, int nlines, int npoly)
-{
-  int i, j;
-  struct qix *qix = (struct qix *) calloc (1, sizeof (struct qix));
-  qix->nlines = nlines;
-  qix->lines = (struct qline *) calloc (qix->nlines, sizeof (struct qline));
-  qix->npoly = npoly;
-  for (i = 0; i < qix->nlines; i++)
-    qix->lines[i].p = (struct qpoint *)
-      calloc(qix->npoly, sizeof(struct qpoint));
-
-  if (!mono_p && !transparent_p)
-    {
-      hsv_to_rgb (random () % 360, frand (1.0), frand (0.5) + 0.5,
-                 &qix->lines[0].color.red, &qix->lines[0].color.green,
-                 &qix->lines[0].color.blue);
-      if (!XAllocColor (dpy, cmap, &qix->lines[0].color))
-       {
-         qix->lines[0].color.pixel = default_fg_pixel;
-         XQueryColor (dpy, cmap, &qix->lines[0].color);
-         if (!XAllocColor (dpy, cmap, &qix->lines[0].color))
-           abort ();
-       }
-    }
-
-  if (max_size == 0)
-    {
-      for (i = 0; i < qix->npoly; i++)
-       {
-         qix->lines[0].p[i].x = random () % maxx;
-         qix->lines[0].p[i].y = random () % maxy;
-       }
-    }
-  else
-    {
-      /*assert(qix->npoly == 2);*/
-      qix->lines[0].p[0].x = random () % maxx;
-      qix->lines[0].p[0].y = random () % maxy;
-      qix->lines[0].p[1].x = qix->lines[0].p[0].x + (random () % (max_size/2));
-      qix->lines[0].p[1].y = qix->lines[0].p[0].y + (random () % (max_size/2));
-      if (qix->lines[0].p[1].x > maxx) qix->lines[0].p[1].x = maxx;
-      if (qix->lines[0].p[1].y > maxy) qix->lines[0].p[1].y = maxy;
-    }
-
-  for (i = 0; i < qix->npoly; i++)
-    {
-      qix->lines[0].p[i].dx = (random () % (max_spread + 1)) - (max_spread /2);
-      qix->lines[0].p[i].dy = (random () % (max_spread + 1)) - (max_spread /2);
-    }
-  qix->lines[0].dead = True;
-
-  for (i = 1; i < qix->nlines; i++)
-    {
-      for(j=0; j<qix->npoly; j++)
-       qix->lines[i].p[j] = qix->lines[0].p[j];
-      qix->lines[i].color = qix->lines[0].color;
-      qix->lines[i].dead = qix->lines[0].dead;
-  
-      if (!mono_p && !transparent_p)
-       if (!XAllocColor (dpy, cmap, &qix->lines[i].color))
-         abort ();
-    }
-  return qix;
-}
-
-
-
-
-static struct qix **
-init_qix (Display *dpy, Window window)
-{
-  int nlines;
-  struct qix **qixes;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  count = get_integer_resource ("count", "Integer");
-  if (count <= 0) count = 1;
-  nlines = get_integer_resource ("segments", "Integer");
-  if (nlines <= 0) nlines = 20;
-  npoly = get_integer_resource("poly", "Integer");
-  if (npoly <= 2) npoly = 2;
-  if (npoly > MAXPOLY) npoly = MAXPOLY;
-  get_geom (dpy, window);
-  max_spread = get_integer_resource ("spread", "Integer");
-  if (max_spread <= 0) max_spread = 10;
-  max_spread <<= SCALE;
-  max_size = get_integer_resource ("size", "Integer");
-  if (max_size < 0) max_size = 0;
-  max_size <<= SCALE;
-  random_p = get_boolean_resource ("random", "Boolean");
-  solid_p = get_boolean_resource ("solid", "Boolean");
-  xor_p = get_boolean_resource ("xor", "Boolean");
-  transparent_p = get_boolean_resource ("transparent", "Boolean");
-  gravity_p = get_boolean_resource("gravity", "Boolean");
-  delay = get_integer_resource ("delay", "Integer");
-  color_shift = get_integer_resource ("colorShift", "Integer");
-  if (color_shift < 0 || color_shift >= 360) color_shift = 5;
-  if (delay < 0) delay = 0;
-
-  /* Clear up ambiguities regarding npoly */
-  if (solid_p) 
-    {
-      if (npoly != 2)
-       fprintf(stderr, "%s: Can't have -solid and -poly; using -poly 2\n",
-               progname);
-      npoly = 2;
-    }      
-  if (npoly > 2)
-    {
-      if (max_size)
-       fprintf(stderr, "%s: Can't have -poly and -size; using -size 0\n",
-               progname);
-      max_size = 0;
-    }
-
-  if (count == 1 && transparent_p)
-    transparent_p = False; /* it's a no-op */
-
-  if (transparent_p && CellsOfScreen (DefaultScreenOfDisplay (dpy)) <= 2)
-    {
-      fprintf (stderr, "%s: -transparent only works on color displays.\n",
-              progname);
-      transparent_p = False;
-    }
-
-  if (xor_p && !transparent_p)
-    mono_p = True;
-
-  gcs[0] = gcs[1] = 0;
-  gcv.foreground = default_fg_pixel =
-    get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-
-  if (transparent_p)
-    {
-      Bool additive_p = get_boolean_resource ("additive", "Boolean");
-      unsigned long *plane_masks = 0;
-      unsigned long base_pixel;
-      int nplanes = count;
-      int i;
-
-      allocate_alpha_colors (dpy, cmap, &nplanes, additive_p, &plane_masks,
-                            &base_pixel);
-
-      if (nplanes <= 1)
-       {
-         fprintf (stderr,
-         "%s: couldn't allocate any color planes; turning -transparent off.\n",
-                  progname);
-         transparent_p = False;
-         if (xor_p)
-           goto NON_TRANSPARENT_XOR;
-         else
-           goto NON_TRANSPARENT;
-       }
-      else if (nplanes != count)
-       {
-         fprintf (stderr,
-                  "%s: only allocated %d color planes (instead of %d).\n",
-                  progname, nplanes, count);
-         count = nplanes;
-       }
-
-      gcs[0] = (GC *) malloc (count * sizeof (GC));
-      gcs[1] = xor_p ? gcs[0] : (GC *) malloc (count * sizeof (GC));
-
-
-      for (i = 0; i < count; i++)
-       {
-         gcv.plane_mask = plane_masks [i];
-         gcv.foreground = ~0;
-         if (xor_p)
-           {
-             gcv.function = GXxor;
-             gcs [0][i] = XCreateGC (dpy, window,
-                                     GCForeground|GCFunction|GCPlaneMask,
-                                     &gcv);
-           }
-         else
-           {
-             gcs [0][i] = XCreateGC (dpy, window, GCForeground|GCPlaneMask,
-                                     &gcv);
-             gcv.foreground = 0;
-             gcs [1][i] = XCreateGC (dpy, window, GCForeground|GCPlaneMask,
-                                     &gcv);
-           }
-       }
-
-      XSetWindowBackground (dpy, window, base_pixel);
-      XClearWindow (dpy, window);
-    }
-  else if (xor_p)
-    {
-    NON_TRANSPARENT_XOR:
-      gcv.function = GXxor;
-      gcv.foreground =
-       (default_fg_pixel ^ get_pixel_resource ("background", "Background",
-                                               dpy, cmap));
-      draw_gc = erase_gc = XCreateGC(dpy,window,GCForeground|GCFunction,&gcv);
-    }
-  else
-    {
-    NON_TRANSPARENT:
-      draw_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-      gcv.foreground = get_pixel_resource ("background", "Background",
-                                          dpy, cmap);
-      erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-    }
-
-  qixes = (struct qix **) malloc ((count + 1) * sizeof (struct qix *));
-  qixes [count] = 0;
-  while (count--)
-    {
-      qixes [count] = init_one_qix (dpy, window, nlines, npoly);
-      qixes [count]->id = count;
-    }
-  return qixes;
-}
-
-static void
-free_qline (Display *dpy, Window window, Colormap cmap,
-           struct qline *qline,
-           struct qline *prev,
-           struct qix *qix)
-{
-  int i;
-  if (qline->dead || !prev)
-    ;
-  else if (solid_p)
-    {
-      XPoint points [4];
-      /*assert(qix->npoly == 2);*/
-      points [0].x = qline->p[0].x >> SCALE; 
-      points [0].y = qline->p[0].y >> SCALE;
-      points [1].x = qline->p[1].x >> SCALE;
-      points [1].y = qline->p[1].y >> SCALE;
-      points [2].x = prev->p[1].x >> SCALE;
-      points [2].y = prev->p[1].y >> SCALE;
-      points [3].x = prev->p[0].x >> SCALE;
-      points [3].y = prev->p[0].y >> SCALE;
-      XFillPolygon (dpy, window, (transparent_p ? gcs[1][qix->id] : erase_gc),
-                   points, 4, Complex, CoordModeOrigin);
-    }
-  else
-    {
-      /*  XDrawLine (dpy, window, (transparent_p ? gcs[1][qix->id] : erase_gc),
-                    qline->p1.x, qline->p1.y, qline->p2.x, qline->p2.y);*/
-      static XPoint points[MAXPOLY+1];
-      for(i = 0; i < qix->npoly; i++)
-       {
-         points[i].x = qline->p[i].x >> SCALE;
-         points[i].y = qline->p[i].y >> SCALE;
-       }
-      points[qix->npoly] = points[0];
-      XDrawLines(dpy, window, (transparent_p ? gcs[1][qix->id] : erase_gc),
-                points, qix->npoly+1, CoordModeOrigin);
-    }
-
-  if (!mono_p && !transparent_p)
-    XFreeColors (dpy, cmap, &qline->color.pixel, 1, 0);
-
-  qline->dead = True;
-}
-
-static void
-add_qline (Display *dpy, Window window, Colormap cmap,
-          struct qline *qline,
-          struct qline *prev_qline,
-          struct qix *qix)
-{
-  int i;
-
-  for(i=0; i<qix->npoly; i++)
-    qline->p[i] = prev_qline->p[i];
-  qline->color = prev_qline->color;
-  qline->dead = prev_qline->dead;
-
-#define wiggle(point,delta,max)                                                \
-  if (random_p) delta += (random () % (1 << (SCALE+1))) - (1 << SCALE);        \
-  if (delta > max_spread) delta = max_spread;                          \
-  else if (delta < -max_spread) delta = -max_spread;                   \
-  point += delta;                                                      \
-  if (point < 0) point = 0, delta = -delta, point += delta<<1;         \
-  else if (point > max) point = max, delta = -delta, point += delta<<1;
-
-  if (gravity_p)
-    for(i=0; i<qix->npoly; i++)
-      qline->p[i].dy += 3;
-
-  for (i = 0; i < qix->npoly; i++)
-    {
-      wiggle (qline->p[i].x, qline->p[i].dx, maxx);
-      wiggle (qline->p[i].y, qline->p[i].dy, maxy);
-    }
-
-  if (max_size)
-    {
-      /*assert(qix->npoly == 2);*/
-      if (qline->p[0].x - qline->p[1].x > max_size)
-       qline->p[0].x = qline->p[1].x + max_size
-         - (random_p ? random() % max_spread : 0);
-      else if (qline->p[1].x - qline->p[0].x > max_size)
-       qline->p[1].x = qline->p[0].x + max_size
-         - (random_p ? random() % max_spread : 0);
-      if (qline->p[0].y - qline->p[1].y > max_size)
-       qline->p[0].y = qline->p[1].y + max_size
-         - (random_p ? random() % max_spread : 0);
-      else if (qline->p[1].y - qline->p[0].y > max_size)
-       qline->p[1].y = qline->p[0].y + max_size
-         - (random_p ? random() % max_spread : 0);
-    }
-
-  if (!mono_p && !transparent_p)
-    {
-      XColor desired;
-
-      int h;
-      double s, v;
-      rgb_to_hsv (qline->color.red, qline->color.green, qline->color.blue,
-                 &h, &s, &v);
-      h = (h + color_shift) % 360;
-      hsv_to_rgb (h, s, v,
-                 &qline->color.red, &qline->color.green, &qline->color.blue);
-
-      qline->color.flags = DoRed | DoGreen | DoBlue;
-      desired = qline->color;
-      if (XAllocColor (dpy, cmap, &qline->color))
-       {
-         /* XAllocColor returns the actual RGB that the hardware let us
-            allocate.  Restore the requested values into the XColor struct
-            so that limited-resolution hardware doesn't cause the cycle to
-            get "stuck". */
-         qline->color.red = desired.red;
-         qline->color.green = desired.green;
-         qline->color.blue = desired.blue;
-       }
-      else
-       {
-         qline->color = prev_qline->color;
-         if (!XAllocColor (dpy, cmap, &qline->color))
-           abort (); /* same color should work */
-       }
-      XSetForeground (dpy, draw_gc, qline->color.pixel);
-    }
-  if (! solid_p)
-    {
-      /*  XDrawLine (dpy, window, (transparent_p ? gcs[0][qix->id] : draw_gc),
-                    qline->p1.x, qline->p1.y, qline->p2.x, qline->p2.y);*/
-      static XPoint points[MAXPOLY+1];
-      for (i = 0; i < qix->npoly; i++)
-       {
-         points[i].x = qline->p[i].x >> SCALE;
-         points[i].y = qline->p[i].y >> SCALE;
-       }
-      points[qix->npoly] = points[0];
-      XDrawLines(dpy, window, (transparent_p ? gcs[0][qix->id] : draw_gc),
-                points, qix->npoly+1, CoordModeOrigin);
-    }
-  else if (!prev_qline->dead)
-    {
-      XPoint points [4];
-      points [0].x = qline->p[0].x >> SCALE;
-      points [0].y = qline->p[0].y >> SCALE;
-      points [1].x = qline->p[1].x >> SCALE;
-      points [1].y = qline->p[1].y >> SCALE;
-      points [2].x = prev_qline->p[1].x >> SCALE;
-      points [2].y = prev_qline->p[1].y >> SCALE;
-      points [3].x = prev_qline->p[0].x >> SCALE;
-      points [3].y = prev_qline->p[0].y >> SCALE;
-      XFillPolygon (dpy, window, (transparent_p ? gcs[0][qix->id] : draw_gc),
-                   points, 4, Complex, CoordModeOrigin);
-    }
-
-  qline->dead = False;
-}
-
-static void
-qix1 (Display *dpy, Window window, struct qix *qix)
-{
-  int ofp = qix->fp - 1;
-  static int gtick = 0;
-  if (ofp < 0) ofp = qix->nlines - 1;
-  if (gtick++ == 500)
-    get_geom (dpy, window), gtick = 0;
-  free_qline (dpy, window, cmap, &qix->lines [qix->fp],
-             &qix->lines[(qix->fp + 1) % qix->nlines], qix);
-  add_qline (dpy, window, cmap, &qix->lines[qix->fp], &qix->lines[ofp], qix);
-  if ((++qix->fp) >= qix->nlines)
-    qix->fp = 0;
-}
-
-\f
-char *progclass = "Qix";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*count:     1",
-  "*segments:  50",
-  "*poly:      2",
-  "*spread:    8",
-  "*size:      0",
-  "*colorShift:        3",
-  "*solid:     false",
-  "*delay:     10000",
-  "*random:    true",
-  "*xor:       false",
-  "*transparent:false",
-  "*gravity:   false",
-  "*additive:  true",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-count",          ".count",       XrmoptionSepArg, 0 },
-  { "-segments",       ".segments",    XrmoptionSepArg, 0 },
-  { "-poly",           ".poly",        XrmoptionSepArg, 0 },
-  { "-spread",         ".spread",      XrmoptionSepArg, 0 },
-  { "-size",           ".size",        XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-color-shift",    ".colorShift",  XrmoptionSepArg, 0 },
-  { "-random",         ".random",      XrmoptionNoArg, "true" },
-  { "-linear",         ".random",      XrmoptionNoArg, "false" },
-  { "-solid",          ".solid",       XrmoptionNoArg, "true" },
-  { "-hollow",         ".solid",       XrmoptionNoArg, "false" },
-  { "-xor",            ".xor",         XrmoptionNoArg, "true" },
-  { "-no-xor",         ".xor",         XrmoptionNoArg, "false" },
-  { "-transparent",    ".transparent", XrmoptionNoArg, "true" },
-  { "-non-transparent",        ".transparent", XrmoptionNoArg, "false" },
-  { "-gravity",                ".gravity",     XrmoptionNoArg, "true" },
-  { "-no-gravity",     ".gravity",     XrmoptionNoArg, "false" },
-  { "-additive",       ".additive",    XrmoptionNoArg, "true" },
-  { "-subtractive",    ".additive",    XrmoptionNoArg, "false" },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  struct qix **q1 = init_qix (dpy, window);
-  struct qix **qn;
-  while (1)
-    for (qn = q1; *qn; qn++)
-      {
-       qix1 (dpy, window, *qn);
-       XSync (dpy, False);
-        screenhack_handle_events (dpy);
-       if (delay) usleep (delay);
-      }
-}
diff --git a/hacks/qix.man b/hacks/qix.man
deleted file mode 100644 (file)
index f7a033a..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-.TH XScreenSaver 1 "27-Apr-97" "X Version 11"
-.SH NAME
-qix - bounce colored lines around a window
-.SH SYNOPSIS
-.B qix
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-segments \fIint\fP] [\-spread \fIpixels\fP] [\-size \fIpixels\fP] [\-count \fIint\fP] [\-color-shift \fIdegrees\fP] [\-delay \fIusecs\fP] [\-random] [\-linear] [\-solid] [\-hollow] [\-xor] [\-no\-xor] [\-transparent] [\-non\-transparent] [\-additive] [\-subtractive] [\-poly \fIint\fP] [\-gravity] [\-no\-gravity]
-.SH DESCRIPTION
-The \fIqix\fP program bounces a series of line segments around its window.
-This is truly the swiss army chainsaw of qix programs.  If you know of one
-with more display modes, I want to know about it.
-.SH OPTIONS
-.I qix
-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 \-segments \fIinteger\fP
-How many line segments should be drawn.  Default 50.
-.TP 8
-.B \-spread \fIinteger\fP
-How far apart the endpoints of one segment should be from the next.
-Default 8.
-.TP 8
-.B \-size \fIinteger\fP
-The maximum distance one endpoint of a segment is allowed to be from
-the opposite end of that segment.  Default 0, meaning unlimited.
-.TP 8
-.B \-count \fIinteger\fP
-How many qixes to draw.  Default 1.
-.TP 8
-.B \-color\-shift \fIdegrees\fP
-If on a color display, the color of the line segments will cycle through
-the spectrum.  This specifies how far the hue of each segment should be
-from the next, in degrees on the HSV wheel.  Default 3.
-.TP 8
-.B \-delay \fImicroseconds\fP
-How much of a delay should be introduced between steps of the animation.
-Default 25000, or about 0.025 seconds.
-.TP 8
-.B \-random
-The \fIqix\fP will wander around the screen semi-randomly.  This is the
-default.
-.TP 8
-.B \-linear
-The opposite of \fI\-random\fP: the \fIqix\fP will travel in straight lines
-until it reaches a wall, and then it will bounce.
-.TP 8
-.B \-solid
-If this is specified, then the area between the line segments will be filled
-in with the appropriate color, instead of the \fIqix\fP simply being composed
-of one-pixel-wide line segments.  This option looks really good in color.
-.TP 8
-.B \-hollow
-The opposite of \fI\-solid\fP; this is the default.
-.TP 8
-.B \-xor
-If this is specified, then qix segments will be drawn and erased with xor,
-instead of being drawn in some color and erased in the background color.
-This implies \fI\-mono\fP, in that only two colors can be used.
-.TP 8
-.B \-transparent
-If this is specified, and \fI\-count\fP is greater than 1, then each qix
-will be drawn in one color, and when they overlap, the colors will be mixed.
-This only works on \fBPseudoColor\fP displays.  This looks best in
-conjuction with \fI\-solid\fP.
-.TP 8
-.B \-non\-transparent
-Turns off \fI\-transparent\fP.
-.TP 8
-.B \-additive
-If \fI\-transparent\fP is specified, then this option means that the colors
-will be mixed using an additive color model, as if the qixes were projected
-light.  This is the default.
-.TP 8
-.B \-subtractive
-If \fI\-transparent\fP is specified, then this option means that the
-colors will be mixed using a subtractive color model, as if the qixes were
-translucent filters.
-.TP 8
-.B \-poly \fIint\fP
-How many vertices each qix-line should have: the default is 2, meaning the
-traditional qix line shape.  Three will yield triangles, and so on.
-.TP 8
-.B \-gravity
-.TP 8
-.B \-no\-gravity
-Whether there should be downward attraction.  For example, the
-options
-.B \-gravity \-linear
-will make everything move in nice smooth parabolas.
-Gravity is off by default.
-.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 1992 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 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>, 13-aug-92.
-
-Thanks to Ariel Scolnicov for the \-poly and \-gravity options.
diff --git a/hacks/rd-bomb.c b/hacks/rd-bomb.c
deleted file mode 100644 (file)
index e380c27..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 1999
- *  Jamie Zawinski <jwz@jwz.org>
- *
- *  reaction/diffusion textures
- *  Copyright (c) 1997 Scott Draves spot@transmeta.com
- *  this code is derived from Bomb
- *  see http://www.cs.cmu.edu/~spot/bomb.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.
- *
- * And remember: X Windows is to graphics hacking as roman numerals are to
- * the square root of pi.
- */
-
-#include <math.h>
-
-#include "screenhack.h"
-#include <X11/Xutil.h>
-
-#ifdef HAVE_XSHM_EXTENSION
-# include "xshm.h"
-#endif /* HAVE_XSHM_EXTENSION */
-
-/* costs ~6% speed */
-#define dither_when_mapped 1
-
-static int verbose;
-static int ncolors = 0;
-static XColor *colors = 0;
-static Display *display;
-static Visual *visual;
-#if dither_when_mapped
-static unsigned char *mc = 0;
-#endif
-static Colormap cmap = 0;
-static Window window;
-static int mapped;
-static int pdepth;
-static void random_colors(void);
-
-/* -----------------------------------------------------------
-   pixel hack, 8-bit pixel grid, first/next frame interface
-
-   pixack_init(int *size_h, int *size_v)
-   pixack_frame(char *pix_buf)
-   */
-
-
-#define bps 16
-#define mx ((1<<16)-1)
-
-/* you can replace integer mults wish shift/adds with these,
-   but it doesn't help on my 586 */
-#define x5(n) ((n<<2)+n)
-#define x7(n) ((n<<3)-n)
-
-/* why strip bit? */
-#define R (ya_random()&((1<<30)-1))
-
-static int frame = 0, epoch_time;
-static ushort *r1, *r2, *r1b, *r2b;
-static int width, height, npix;
-static int radius;
-static int reaction = 0;
-static int diffusion = 0;
-
-/* returns number of pixels that the pixack produces.  called once. */
-static void
-pixack_init(int *size_h, int *size_v) 
-{
-  int sz_base;
-  width = get_integer_resource ("width", "Integer");
-  height = get_integer_resource ("height", "Integer");
-  sz_base = 80 + (R%40);
-  if (width <= 0) width = (R%20) ? sz_base : (28 + R%10);
-  if (height <= 0) height = (R%20) ? sz_base : (28 + R%10);
-
-  /* jwz: when (and only when) XSHM is in use on an SGI 8-bit visual,
-     we get shear unless width is a multiple of 4.  I don't understand
-     why.  This is undoubtedly the wrong fix... */
-  width &= ~0x7;
-
-  /* don't go there */
-  if (width < 10) width = 10;
-  if (height < 10) height = 10;
-  epoch_time = get_integer_resource ("epoch", "Integer");
-  npix = (width + 2) * (height + 2);
-  r1 = (ushort *) malloc(sizeof(ushort) * npix);
-  r2 = (ushort *) malloc(sizeof(ushort) * npix);
-  r1b = (ushort *) malloc(sizeof(ushort) * npix);
-  r2b = (ushort *) malloc(sizeof(ushort) * npix);
-
-  if (!r1 || !r2 || !r1b || !r2b) {
-    fprintf(stderr, "not enough memory for %d pixels.\n", npix);
-    exit(1);
-  }
-
-  *size_h = width;
-  *size_v = height;
-}
-
-#define test_pattern_hyper 0
-
-
-/* returns the pixels.  called many times. */
-static void
-pixack_frame(char *pix_buf) 
-{
-  int i, j;
-  int w2 = width + 2;
-  ushort *t;
-#if test_pattern_hyper
-  if (frame&0x100)
-    sleep(1);
-#endif
-  if (verbose) {
-    double tm = 0;
-    struct timeval tp;
-    if (!(frame%100)) {
-      double tm2;
-#ifdef GETTIMEOFDAY_TWO_ARGS
-      struct timezone tzp;
-      gettimeofday(&tp, &tzp);
-#else
-      gettimeofday(&tp);
-#endif
-      tm2 = tp.tv_sec + tp.tv_usec * 1e-6;
-      if (frame > 0)
-       printf("fps = %2.4g\n", 100.0 / (tm2 - tm));
-      tm = tm2;
-    }
-  }
-  if (!(frame%epoch_time)) {
-    int s;
-    if (0 != frame) {
-      int t = epoch_time / 500;
-      if (t > 15)
-       t = 15;
-      sleep(t);
-    }
-         
-    for (i = 0; i < npix; i++) {
-      /* equilibrium */
-      r1[i] = 65500;
-      r2[i] = 11;
-    }
-
-    random_colors();
-
-    XSetWindowBackground(display, window, colors[255 % ncolors].pixel);
-    XClearWindow(display, window);
-
-    s = w2 * (height/2) + width/2;
-    radius = get_integer_resource ("radius", "Integer");
-    {
-      int maxr = width/2-2;
-      int maxr2 = height/2-2;
-      if (maxr2 < maxr) maxr = maxr2;
-
-      if (radius < 0)
-       radius = 1 + ((R%10) ? (R%5) : (R % maxr));
-      if (radius > maxr) radius = maxr;
-    }
-    for (i = -radius; i < (radius+1); i++)
-      for (j = -radius; j < (radius+1); j++)
-       r2[s + i + j*w2] = mx - (R&63);
-    reaction = get_integer_resource ("reaction", "Integer");
-    if (reaction < 0 || reaction > 2) reaction = R&1;
-    diffusion = get_integer_resource ("diffusion", "Integer");
-    if (diffusion < 0 || diffusion > 2)
-      diffusion = (R%5) ? ((R%3)?0:1) : 2;
-    if (2 == reaction && 2 == diffusion)
-      reaction = diffusion = 0;
-      
-    if (verbose)
-      printf("reaction = %d\ndiffusion = %d\nradius = %d\n",
-            reaction, diffusion, radius);
-  }
-  for (i = 0; i <= width+1; i++) {
-    r1[i] = r1[i + w2 * height];
-    r2[i] = r2[i + w2 * height];
-    r1[i + w2 * (height + 1)] = r1[i + w2];
-    r2[i + w2 * (height + 1)] = r2[i + w2];
-  }
-  for (i = 0; i <= height+1; i++) {
-    r1[w2 * i] = r1[width + w2 * i];
-    r2[w2 * i] = r2[width + w2 * i];
-    r1[w2 * i + width + 1] = r1[w2 * i + 1];
-    r2[w2 * i + width + 1] = r2[w2 * i + 1];
-  }
-  for (i = 0; i < height; i++) {
-    int ii = i + 1;
-    char *q = pix_buf + width * i;
-    short *qq = ((short *) pix_buf) + width * i;
-    long  *qqq = ((long *) pix_buf) + width * i;
-    ushort *i1 = r1 + 1 + w2 * ii;
-    ushort *i2 = r2 + 1 + w2 * ii;
-    ushort *o1 = r1b + 1 + w2 * ii;
-    ushort *o2 = r2b + 1 + w2 * ii;
-    for (j = 0; j < width; j++) {
-#if test_pattern_hyper
-      int r1 = (i * j + (frame&127)*frame)&65535;
-#else
-      int uvv, r1 = 0, r2 = 0;
-      switch (diffusion) {
-      case 0:
-       r1 = i1[j] + i1[j+1] + i1[j-1] + i1[j+w2] + i1[j-w2];
-       r1 = r1 / 5;
-       r2 = (i2[j]<<3) + i2[j+1] + i2[j-1] + i2[j+w2] + i2[j-w2];
-       r2 = r2 / 12;
-       break;
-      case 1:
-       r1 = i1[j+1] + i1[j-1] + i1[j+w2] + i1[j-w2];
-       r1 = r1 >> 2;
-       r2 = (i2[j]<<2) + i2[j+1] + i2[j-1] + i2[j+w2] + i2[j-w2];
-       r2 = r2 >> 3;
-       break;
-      case 2:
-       r1 = (i1[j]<<1) + (i1[j+1]<<1) + (i1[j-1]<<1) + i1[j+w2] + i1[j-w2];
-       r1 = r1 >> 3;
-       r2 = (i2[j]<<2) + i2[j+1] + i2[j-1] + i2[j+w2] + i2[j-w2];
-       r2 = r2 >> 3;
-       break;
-      }
-
-      /* John E. Pearson "Complex Patterns in a Simple System"
-        Science, July 1993 */
-
-      uvv = (((r1 * r2) >> bps) * r2) >> bps;
-      switch (reaction) {  /* costs 4% */
-      case 0:
-       r1 += 4 * (((28 * (mx-r1)) >> 10) - uvv);
-       r2 += 4 * (uvv - ((80 * r2) >> 10));
-       break;
-      case 1:
-       r1 += 3 * (((27 * (mx-r1)) >> 10) - uvv);
-       r2 += 3 * (uvv - ((80 * r2) >> 10));
-       break;
-      case 2:
-       r1 += 2 * (((28 * (mx-r1)) >> 10) - uvv);
-       r2 += 3 * (uvv - ((80 * r2) >> 10));
-       break;
-      }
-      if (r1 > mx) r1 = mx;
-      if (r2 > mx) r2 = mx;
-      if (r1 < 0) r1 = 0;
-      if (r2 < 0) r2 = 0;
-      o1[j] = r1;
-      o2[j] = r2;
-#endif
-
-      /* this is terrible.  here i want to assume ncolors = 256.
-        should lose double indirection */
-
-      if (mapped)
-#if dither_when_mapped
-       q[j] = colors[mc[r1]  % ncolors].pixel;
-#else
-      q[j] = colors[(r1>>8) % ncolors].pixel;
-#endif
-      else if (pdepth == 8)
-       q[j] = colors[(r1>>8) % ncolors].pixel;
-      else if (pdepth == 16)
-#if dither_when_mapped
-       qq[j] = colors[mc[r1] % ncolors].pixel;
-#else
-       qq[j] = colors[(r1>>8) % ncolors].pixel;
-#endif
-      else if (pdepth == 32)
-#if dither_when_mapped
-       qqq[j] = colors[mc[r1] % ncolors].pixel;
-#else
-       qqq[j] = colors[(r1>>8) % ncolors].pixel;
-#endif
-      else
-       abort();
-    }
-  }
-  t = r1; r1 = r1b; r1b = t;
-  t = r2; r2 = r2b; r2b = t;  
-}
-
-
-/* ------------- xscreensaver rendering -------------- */
-
-
-
-char *progclass = "RD";
-
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*width:     0",                     /* tried to use -1 but it complained */
-  "*height:    0",
-  "*epoch:     40000",
-  "*reaction:  -1",
-  "*diffusion: -1",
-  "*verbose:   off",
-  "*radius:    -1",
-  "*speed:     0.0",
-  "*size:      1.0",
-  "*delay:     1",
-  "*colors:    -1",
-#ifdef HAVE_XSHM_EXTENSION
-  "*useSHM:    True",
-#endif /* HAVE_XSHM_EXTENSION */
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-width",          ".width",       XrmoptionSepArg, 0 },
-  { "-height",         ".height",      XrmoptionSepArg, 0 },
-  { "-epoch",          ".epoch",       XrmoptionSepArg, 0 },
-  { "-reaction",       ".reaction",    XrmoptionSepArg, 0 },
-  { "-diffusion",      ".diffusion",   XrmoptionSepArg, 0 },
-  { "-verbose",                ".verbose",     XrmoptionNoArg, "True" },
-  { "-radius",         ".radius",      XrmoptionSepArg, 0 },
-  { "-speed",          ".speed",       XrmoptionSepArg, 0 },
-  { "-size",           ".size",        XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-ncolors",                ".colors",      XrmoptionSepArg, 0 },
-#ifdef HAVE_XSHM_EXTENSION
-  { "-shm",            ".useSHM",      XrmoptionNoArg, "True" },
-  { "-no-shm",         ".useSHM",      XrmoptionNoArg, "False" },
-#endif /* HAVE_XSHM_EXTENSION */
-  { 0, 0, 0, 0 }
-};
-
-
-static void
-random_colors(void)
-{
-  memset(colors, 0, ncolors*sizeof(*colors));
-  make_smooth_colormap (display, visual, cmap, colors, &ncolors,
-                       True, 0, True);
-  if (ncolors <= 2) {
-    mono_p = True;
-    ncolors = 2;
-    colors[0].flags = DoRed|DoGreen|DoBlue;
-    colors[0].red = colors[0].green = colors[0].blue = 0;
-    XAllocColor(display, cmap, &colors[0]);
-    colors[1].flags = DoRed|DoGreen|DoBlue;
-    colors[1].red = colors[1].green = colors[1].blue = 0xFFFF;
-    XAllocColor(display, cmap, &colors[1]);
-  }
-
-  /* Scale it up so that there are exactly 255 colors -- that keeps the
-     animation speed consistent, even when there aren't many allocatable
-     colors, and prevents the -mono mode from looking like static. */
-  if (ncolors != 255) {
-    int i, n = 255;
-    double scale = (double) ncolors / (double) (n+1);
-    XColor *c2 = (XColor *) malloc(sizeof(*c2) * (n+1));
-    for (i = 0; i < n; i++)
-      c2[i] = colors[(int) (i * scale)];
-    free(colors);
-    colors = c2;
-    ncolors = n;
-  }
-
-}
-
-/* should factor into RD-specfic and compute-every-pixel general */
-void
-screenhack (Display *dpy, Window win)
-{
-  GC gc;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  XImage *image;
-  int array_width, array_height;
-  double array_x, array_y;
-  double array_dx, array_dy;
-  int w2;
-  char *p;
-  int vdepth;
-  int npix;
-#ifdef HAVE_XSHM_EXTENSION
-  Bool use_shm = get_boolean_resource("useSHM", "Boolean");
-  XShmSegmentInfo shm_info;
-#endif
-
-  double delay = get_float_resource ("delay", "Float");
-
-  display = dpy;
-  window = win;
-
-
-  XGetWindowAttributes (dpy, win, &xgwa);
-  visual = xgwa.visual;
-  pixack_init(&width, &height);
-  {
-    double s = get_float_resource ("size", "Float");
-    double p = get_float_resource ("speed", "Float");
-    if (s < 0.0 || s > 1.0)
-      s = 1.0;
-    s = sqrt(s);
-    array_width = xgwa.width * s;
-    array_height = xgwa.height * s;
-    if (s < 0.99) {
-      array_width = (array_width / width) * width;
-      array_height = (array_height / height) * height;
-    }
-    if (array_width < width) array_width = width;
-    if (array_height < height) array_height = height;
-    array_x = (xgwa.width - array_width)/2;
-    array_y = (xgwa.height - array_height)/2;
-    array_dx = p;
-    array_dy = .31415926 * p;
-
-    /* start in a random direction */
-    if (random() & 1) array_dx = -array_dx;
-    if (random() & 1) array_dy = -array_dy;
-
-  }
-  verbose = get_boolean_resource ("verbose", "Boolean");
-  npix = (width + 2) * (height + 2);
-  w2 = width + 2;
-  gcv.function = GXcopy;
-  gc = XCreateGC(dpy, win, GCFunction, &gcv);
-  vdepth = visual_depth(DefaultScreenOfDisplay(dpy), xgwa.visual);
-
-  /* This code only deals with pixmap depths of 1, 8, 16, and 32.
-     Therefore, we assume that those depths will be supported by the
-     coresponding visual depths (that depth-24 displays accept depth-32
-     pixmaps, and that depth-12 displays accept depth-16 pixmaps.) */
-  pdepth = (vdepth == 1 ? 1 :
-           vdepth <= 8 ? 8 :
-           vdepth <= 16 ? 16 :
-           32);
-
-  /* Ok, this like, sucks and stuff.  There are some XFree86 systems
-     that have depth-24 visuals, that do not accept depth-32 XImages!
-     Which if you ask me is just absurd, since all it would take is
-     for the server to truncate the bits in that case.  So, this crap
-     here detects the specific case of: we have chosen depth 32;
-     and the server does not support depth 32.  In that case, we
-     try and use depth 16 instead.
-
-     The real fix would be to rewrite this program to deal with
-     depth 24 directly (or even better, arbitrary depths, but that
-     would mean going through the XImage routines instead of messing
-     with the XImage->data directly.)
-
-     jwz, 18-Mar-99: well, the X servers I have access to these days do
-     support 32-deep images on deep visuals, so I no longer have the
-     ability to test this code -- but it was causing problems on the
-     visuals that I do have, and I think that's because I mistakenly
-     wrote `pfv[i].depth' when I meant to write `pfv[i].bits_per_pixel'.
-     The symptom I was seeing was that the grid was 64x64, but the
-     images were being drawn 32x32 -- so there was a black stripe on
-     every other row.  Wow, this code sucks so much.
-   */
-  if (pdepth == 32)
-    {
-      int i, pfvc = 0;
-      Bool ok = False;
-      XPixmapFormatValues *pfv = XListPixmapFormats (dpy, &pfvc);
-      for (i = 0; i < pfvc; i++)
-        if (pfv[i].bits_per_pixel == pdepth)
-          ok = True;
-      if (!ok)
-        pdepth = 16;
-    }
-
-  cmap = xgwa.colormap;
-  ncolors = get_integer_resource ("colors", "Integer");
-
-  if (ncolors <= 0) {
-    if (vdepth > 8)
-      ncolors = 2047;
-    else
-      ncolors = 255;
-  }
-
-  if (mono_p || ncolors < 2) ncolors = 2;
-  if (ncolors <= 2) mono_p = True;
-  colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-
-  mapped = (vdepth <= 8 &&
-           has_writable_cells(xgwa.screen, xgwa.visual));
-
-  {
-    int i, di;
-    mc = (unsigned char *) malloc(1<<16);
-    for (i = 0; i < (1<<16); i++) {
-      di = (i + (random()&255))>>8;
-      if (di > 255) di = 255;
-      mc[i] = di;
-    }
-  }
-
-  p = malloc(npix * (pdepth == 1 ? 1 : (pdepth / 8)));
-  if (!p) {
-    fprintf(stderr, "not enough memory for %d pixels.\n", npix);
-    exit(1);
-  }
-
-  image = 0;
-
-#ifdef HAVE_XSHM_EXTENSION
-  if (use_shm)
-    {
-      image = create_xshm_image(dpy, xgwa.visual, vdepth,
-                               ZPixmap, 0, &shm_info, width, height);
-      if (!image)
-       use_shm = False;
-      else
-       {
-         free(p);
-         p = image->data;
-       }
-    }
-#endif /* HAVE_XSHM_EXTENSION */
-
-  if (!image)
-    {
-      image = XCreateImage(dpy, xgwa.visual, vdepth,
-                          ZPixmap, 0, p,
-                          width, height, 8, 0);
-    }
-
-  while (1) {
-    Bool bump = False;
-
-    int i, j;
-    pixack_frame(p);
-    for (i = 0; i < array_width; i += width)
-      for (j = 0; j < array_height; j += height)
-#ifdef HAVE_XSHM_EXTENSION
-       if (use_shm)
-         XShmPutImage(dpy, win, gc, image, 0, 0, i+array_x, j+array_y,
-                      width, height, False);
-       else
-#endif
-         XPutImage(dpy, win, gc, image, 0, 0, i+array_x, j+array_y,
-                   width, height);
-
-    array_x += array_dx;
-    array_y += array_dy;
-    if (array_x < 0) {
-      array_x = 0;
-      array_dx = -array_dx;
-      bump = True;
-    } else if (array_x > (xgwa.width - array_width)) {
-      array_x = (xgwa.width - array_width);
-      array_dx = -array_dx;
-      bump = True;
-    }
-    if (array_y < 0) {
-      array_y = 0;
-      array_dy = -array_dy;
-      bump = True;
-    } else if (array_y > (xgwa.height - array_height)) {
-      array_y = (xgwa.height - array_height);
-      array_dy = -array_dy;
-      bump = True;
-    }
-
-    if (bump) {
-      if (random() & 1) {
-       double swap = array_dx;
-       array_dx = array_dy;
-       array_dy = swap;
-      }
-    }
-
-    frame++;
-
-    XSync(dpy, False);
-    screenhack_handle_events (dpy);
-    if (delay > 0)
-      usleep(1000 * delay);
-  }
-}
diff --git a/hacks/rd-bomb.man b/hacks/rd-bomb.man
deleted file mode 100644 (file)
index 161c478..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-rd-bomb - reaction/diffusion textures
-.SH SYNOPSIS
-.B rd-bomb
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-width \fIn\fP] [\-height \fIn\fP]
-[\-reaction \fIn\fP] [\-diffusion \fIn\fP]
-[\-size \fIf\fP] [\-speed \fIf\fP] [\-delay \fIusecs\fP]
-.SH DESCRIPTION
-
-The \fIrd-bomb\fP program draws reaction/diffusion textures.  The code
-is derived from the 'd' mode of the "bomb" visual musical instrument
-(see http://www.cs.cmu.edu/~spot/bomb.html).  I got the equations from
-xmorphia (http://www.ccsf.caltech.edu/ismap/image.html), which is
-based on a version of the Gray-Scott model taken from:
-    John E. Pearson "Complex Patterns in a Simple System"
-    Science, 261,189, 9 July 1993.
-
-If the frame-rate is too low, consider decreasing the width and height
-of the tile, or decreasing the size of the active part of the screen.
-
-.SH OPTIONS
-
-If one of the reaction, diffusion, radius, and palette options is set
-to a negative value, then that option will be set to a random
-appropriate value.
-
-Be sure to try "-speed 1 -size 0.1 -epoch 3000".
-
-.I rd-bomb
-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
-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 \-width \fIn\fP
-.TP 8
-.B \-height \fIn\fP
-Specify the size of the tile, in pixels.
-.TP 8
-.B \-reaction \fIn\fP
-.TP 8
-.B \-diffusion \fIn\fP
-These are constants in the equations that effect its visual nature.
-Each may be one of 0, 1, or 2.  
-.TP 8
-.B \-radius \fIn\fP
-Size of the seed.
-.TP 8
-.B \-palette \fIn\fP
-Selects a palette.  Must be between 0 and 80, inclusive.
-.TP 8
-.B \-size \fIf\fP
-What fraction of the window is actively drawn, a floating point number
-between 0 (exclusive) and 1 (inclusive).  Default is 0.66.
-.TP 8
-.B \-speed \fIf\fP
-When a fraction of the screen is active, the active area moves at this
-rate (a floating point number).  Default is zero.  Suggested value: 1.0.
-.TP 8
-.B \-delay \fIusecs\fP
-How many microseconds to delay between frames; default 1000, or 
-about 1/1000th of a 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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1997 by Scott Draves.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Scott Draves <spot@cs.cmu.edu>, 9/97
diff --git a/hacks/rocks.c b/hacks/rocks.c
deleted file mode 100644 (file)
index e5e0df5..0000000
+++ /dev/null
@@ -1,534 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997, 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.
- */
-
-/* 18-Sep-97: Johannes Keukelaar <johannes@nada.kth.se>: Added some color.
- * Using -mono gives the old behaviour.  (Modified by jwz.)
- */
-/*   Flying through an asteroid field.  Based on TI Explorer Lisp code by 
-   John Nguyen <johnn@hx.lcs.mit.edu>
- */
-
-#include <stdio.h>
-#include <math.h>
-#include "screenhack.h"
-
-#define MIN_ROCKS 1
-#define MIN_DEPTH 2            /* rocks disappear when they get this close */
-#define MAX_DEPTH 60           /* this is where rocks appear */
-#define MIN_SIZE 3             /* how small where pixmaps are not used */
-#define MAX_SIZE 200           /* how big (in pixels) rocks are at depth 1 */
-#define DEPTH_SCALE 100                /* how many ticks there are between depths */
-#define SIN_RESOLUTION 1000
-
-#define MAX_DEP 0.3            /* how far the displacement can be (percent) */
-#define DIRECTION_CHANGE_RATE 60
-#define MAX_DEP_SPEED 5                /* Maximum speed for movement */
-#define MOVE_STYLE 0           /* Only 0 and 1. Distinguishes the fact that
-                                  these are the rocks that are moving (1) 
-                                  or the rocks source (0). */
-
-/* there's not much point in the above being user-customizable, but those
-   numbers might want to be tweaked for displays with an order of magnitude
-   higher resolution or compute power.
- */
-
-static double sins [SIN_RESOLUTION];
-static double coss [SIN_RESOLUTION];
-static double depths [(MAX_DEPTH + 1) * DEPTH_SCALE];
-
-static Display *dpy;
-static Window window;
-static int width, height, midx, midy;
-static int dep_x, dep_y;
-static int ncolors;
-static XColor *colors;
-static float max_dep;
-static GC erase_gc;
-static GC *draw_gcs;
-static Bool rotate_p;
-static Bool move_p;
-static int speed;
-static Bool threed;
-static GC threed_left_gc, threed_right_gc;
-static double threed_delta;
-
-#define GETZDIFF(z) \
-        (threed_delta * 40.0 * \
-        (1.0 - ((MAX_DEPTH * DEPTH_SCALE / 2) / \
-                ((z) + 20.0 * DEPTH_SCALE))))
-
-struct rock {
-  int real_size;
-  int r;
-  int theta;
-  int depth;
-  int size, x, y;
-  int diff;
-  int color;
-};
-
-static struct rock *rocks;
-static int nrocks;
-static Pixmap pixmaps [MAX_SIZE];
-static int delay;
-
-static void rock_compute (struct rock *);
-static void rock_draw (struct rock *, Bool draw_p);
-
-static void
-rock_reset (struct rock *rock)
-{
-  rock->real_size = MAX_SIZE;
-  rock->r = (SIN_RESOLUTION * 0.7) + (random () % (30 * SIN_RESOLUTION));
-  rock->theta = random () % SIN_RESOLUTION;
-  rock->depth = MAX_DEPTH * DEPTH_SCALE;
-  rock->color = random() % ncolors;
-  rock_compute (rock);
-  rock_draw (rock, True);
-}
-
-static void
-rock_tick (struct rock *rock, int d)
-{
-  if (rock->depth > 0)
-    {
-      rock_draw (rock, False);
-      rock->depth -= speed;
-      if (rotate_p)
-        {
-         rock->theta = (rock->theta + d) % SIN_RESOLUTION;
-        }
-      while (rock->theta < 0)
-       rock->theta += SIN_RESOLUTION;
-      if (rock->depth < (MIN_DEPTH * DEPTH_SCALE))
-       rock->depth = 0;
-      else
-       {
-         rock_compute (rock);
-         rock_draw (rock, True);
-       }
-    }
-  else if ((random () % 40) == 0)
-    rock_reset (rock);
-}
-
-static void
-rock_compute (struct rock *rock)
-{
-  double factor = depths [rock->depth];
-  double rsize = rock->real_size * factor;
-
-  rock->size = (int) (rsize + 0.5);
-  rock->diff = (int) GETZDIFF(rock->depth);
-  rock->x = midx + (coss [rock->theta] * rock->r * factor);
-  rock->y = midy + (sins [rock->theta] * rock->r * factor);
-
-  if (move_p)
-    {
-      double move_factor = (((double) MOVE_STYLE) -
-                           (((double) rock->depth) /
-                            (((double) (MAX_DEPTH + 1)) *
-                             ((double) DEPTH_SCALE))));
-      /* move_factor is 0 when the rock is close, 1 when far */
-      rock->x += (((double) dep_x) * move_factor);
-      rock->y += (((double) dep_y) * move_factor);
-    }
-}
-
-static void
-rock_draw (rock, draw_p)
-     struct rock *rock;
-     Bool draw_p;
-{
-  GC gc = (draw_p 
-          ? (threed ? erase_gc : draw_gcs[rock->color])
-          : erase_gc);
-
-  if (rock->x <= 0 || rock->y <= 0 || rock->x >= width || rock->y >= height)
-    {
-      /* this means that if a rock were to go off the screen at 12:00, but
-        would have been visible at 3:00, it won't come back once the observer
-        rotates around so that the rock would have been visible again.
-        Oh well.
-       */
-      if (!move_p)
-       rock->depth = 0;
-      return;
-    }
-  if (rock->size <= 1)
-    {
-      if (threed)
-       {
-         if (draw_p) gc = threed_left_gc;
-         XDrawPoint (dpy, window, gc, rock->x - rock->diff, rock->y);
-         if (draw_p) gc = threed_right_gc;
-         XDrawPoint (dpy, window, gc, rock->x + rock->diff, rock->y);
-       }
-      else
-       {
-         XDrawPoint (dpy, window, gc, rock->x, rock->y);
-       }
-    }
-  else if (rock->size <= MIN_SIZE || !draw_p)
-    {
-      if (threed)
-       {
-         if (draw_p) gc = threed_left_gc;
-         XFillRectangle(dpy, window, gc,
-                        rock->x - rock->size / 2 - rock->diff,
-                        rock->y - rock->size / 2,
-                        rock->size, rock->size);
-         if (draw_p) gc = threed_right_gc;
-         XFillRectangle(dpy, window, gc,
-                        rock->x - rock->size / 2 + rock->diff,
-                        rock->y - rock->size / 2,
-                        rock->size, rock->size);
-       }
-      else
-       {
-         XFillRectangle (dpy, window, gc,
-                         rock->x - rock->size/2, rock->y - rock->size/2,
-                         rock->size, rock->size);
-       }
-    }
-  else if (rock->size < MAX_SIZE)
-    {
-      if (threed)
-       {
-         gc = threed_left_gc;
-         XCopyPlane(dpy, pixmaps[rock->size], window, gc,
-                    0, 0, rock->size, rock->size,
-                    rock->x - rock->size / 2 - rock->diff,
-                    rock->y - rock->size / 2, 1L);
-         gc = threed_right_gc;
-         XCopyPlane(dpy, pixmaps[rock->size], window, gc,
-                    0, 0, rock->size, rock->size,
-                    rock->x - rock->size / 2 + rock->diff,
-                    rock->y - rock->size / 2, 1L);
-       }
-      else
-       {
-         XCopyPlane (dpy, pixmaps [rock->size], window, gc,
-                     0, 0, rock->size, rock->size,
-                     rock->x - rock->size/2, rock->y - rock->size/2,
-                     1L);
-       }
-    }
-}
-
-
-static void
-init_pixmaps (Display *dpy, Window window)
-{
-  int i;
-  XGCValues gcv;
-  GC fg_gc = 0, bg_gc = 0;
-  pixmaps [0] = pixmaps [1] = 0;
-  for (i = MIN_DEPTH; i < MAX_SIZE; i++)
-    {
-      int w = (1+(i/32))<<5; /* server might be faster if word-aligned */
-      int h = i;
-      Pixmap p = XCreatePixmap (dpy, window, w, h, 1);
-      XPoint points [7];
-      pixmaps [i] = p;
-      if (! p)
-       {
-         fprintf (stderr, "%s: couldn't allocate pixmaps", progname);
-         exit (1);
-       }
-      if (! fg_gc)
-       {       /* must use drawable of pixmap, not window (fmh) */
-         gcv.foreground = 1;
-         fg_gc = XCreateGC (dpy, p, GCForeground, &gcv);
-         gcv.foreground = 0;
-         bg_gc = XCreateGC (dpy, p, GCForeground, &gcv);
-       }
-      XFillRectangle (dpy, p, bg_gc, 0, 0, w, h);
-      points [0].x = i * 0.15; points [0].y = i * 0.85;
-      points [1].x = i * 0.00; points [1].y = i * 0.20;
-      points [2].x = i * 0.30; points [2].y = i * 0.00;
-      points [3].x = i * 0.40; points [3].y = i * 0.10;
-      points [4].x = i * 0.90; points [4].y = i * 0.10;
-      points [5].x = i * 1.00; points [5].y = i * 0.55;
-      points [6].x = i * 0.45; points [6].y = i * 1.00;
-      XFillPolygon (dpy, p, fg_gc, points, 7, Nonconvex, CoordModeOrigin);
-    }
-  XFreeGC (dpy, fg_gc);
-  XFreeGC (dpy, bg_gc);
-}
-
-
-static int
-compute_move(int axe)                          /* 0 for x, 1 for y */
-{
-  static int current_dep[2] = {0, 0};
-  static int speed[2] = {0, 0};
-  static short direction[2] = {0, 0};
-  static int limit[2] = {0, 0};
-  int change = 0;
-
-  limit[0] = midx;
-  limit[1] = midy;
-
-  current_dep[axe] += speed[axe];      /* We adjust the displacement */
-
-  if (current_dep[axe] > (int) (limit[axe] * max_dep))
-    {
-      if (current_dep[axe] > limit[axe])
-       current_dep[axe] = limit[axe];
-      direction[axe] = -1;
-    }                  /* This is when we reach the upper screen limit */
-  if (current_dep[axe] < (int) (-limit[axe] * max_dep))
-    {
-      if (current_dep[axe] < -limit[axe])
-       current_dep[axe] = -limit[axe];
-      direction[axe] = 1;
-    }                  /* This is when we reach the lower screen limit */
-  if (direction[axe] == 1)     /* We adjust the speed */
-    speed[axe] += 1;
-  else if (direction[axe] == -1)
-    speed[axe] -= 1;
-
-  if (speed[axe] > MAX_DEP_SPEED)
-    speed[axe] = MAX_DEP_SPEED;
-  else if (speed[axe] < -MAX_DEP_SPEED)
-    speed[axe] = -MAX_DEP_SPEED;
-
-  if (move_p && !(random() % DIRECTION_CHANGE_RATE))
-    {
-      /* We change direction */
-      change = random() & 1;
-      if (change != 1)
-       {
-         if (direction[axe] == 0)
-           direction[axe] = change - 1;        /* 0 becomes either 1 or -1 */
-         else
-           direction[axe] = 0;                 /* -1 or 1 become 0 */
-       }
-    }
-  return (current_dep[axe]);
-}
-
-static void
-tick_rocks (int d)
-{
-  int i;
-
-  if (move_p)
-    {
-      dep_x = compute_move(0);
-      dep_y = compute_move(1);
-    }
-
-  for (i = 0; i < nrocks; i++)
-    rock_tick (&rocks [i], d);
-}
-
-
-static void
-rocks_once (void)
-{
-  static int current_delta = 0;        /* observer Z rotation */
-  static int window_tick = 50;
-       static int  new_delta = 0;
-       static int  dchange_tick = 0;
-
-  if (window_tick++ == 50)
-    {
-      XWindowAttributes xgwa;
-      XGetWindowAttributes (dpy, window, &xgwa);
-      window_tick = 0;
-      width = xgwa.width;
-      height = xgwa.height;
-      midx = width/2;
-      midy = height/2;
-    }
-
-  if (current_delta != new_delta)
-    {
-      if (dchange_tick++ == 5)
-       {
-         dchange_tick = 0;
-         if (current_delta < new_delta)
-           current_delta++;
-         else
-           current_delta--;
-       }
-    }
-  else
-    {
-      if (! (random() % 50))
-       {
-         new_delta = ((random() % 11) - 5);
-         if (! (random() % 10))
-           new_delta *= 5;
-       }
-    }
-  tick_rocks (current_delta);
-}
-
-static void
-init_rocks (Display *d, Window w)
-{
-  int i;
-  XGCValues gcv;
-  Colormap cmap;
-  XWindowAttributes xgwa;
-  unsigned int bg;
-  dpy = d;
-  window = w;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  delay = get_integer_resource ("delay", "Integer");
-  if (delay < 0) delay = 0;
-  speed = get_integer_resource ("speed", "Integer");
-  if (speed < 1) speed = 1;
-  if (speed > 100) speed = 100;
-  rotate_p = get_boolean_resource ("rotate", "Boolean");
-  move_p = get_boolean_resource ("move", "Boolean");
-  if (mono_p)
-    ncolors = 2;
-  else
-    ncolors = get_integer_resource ("colors", "Colors");
-
-  if (ncolors < 2)
-    {
-      ncolors = 2;
-      mono_p = True;
-  }
-
-  colors = (XColor *) malloc(ncolors * sizeof(*colors));
-  draw_gcs = (GC *) malloc(ncolors * sizeof(*draw_gcs));
-
-  bg = get_pixel_resource ("background", "Background", dpy, cmap);
-  colors[0].pixel = bg;
-  colors[0].flags = DoRed|DoGreen|DoBlue;
-  XQueryColor(dpy, cmap, &colors[0]);
-
-  ncolors--;
-  make_random_colormap(dpy, xgwa.visual, cmap, colors+1, &ncolors, True,
-                      True, 0, True);
-  ncolors++;
-
-  if (ncolors < 2)
-    {
-      ncolors = 2;
-      mono_p = True;
-  }
-
-  if (mono_p)
-    {
-      unsigned int fg = get_pixel_resource("foreground", "Foreground",
-                                          dpy, cmap);
-      colors[1].pixel = fg;
-      colors[1].flags = DoRed|DoGreen|DoBlue;
-      XQueryColor(dpy, cmap, &colors[1]);
-      gcv.foreground = fg;
-      gcv.background = bg;
-      draw_gcs[0] = XCreateGC (dpy, window, GCForeground|GCBackground, &gcv);
-      draw_gcs[1] = draw_gcs[0];
-    }
-  else
-    for( i = 0; i < ncolors; i++ )
-      {
-       gcv.foreground = colors[i].pixel;
-       gcv.background = bg;
-       draw_gcs[i] = XCreateGC (dpy, window, GCForeground|GCBackground, &gcv);
-      }
-
-  gcv.foreground = bg;
-  erase_gc = XCreateGC (dpy, window, GCForeground|GCBackground, &gcv);
-
-  max_dep = (move_p ? MAX_DEP : 0);
-
-  for (i = 0; i < SIN_RESOLUTION; i++)
-    {
-      sins [i] = sin ((((double) i) / (SIN_RESOLUTION / 2)) * M_PI);
-      coss [i] = cos ((((double) i) / (SIN_RESOLUTION / 2)) * M_PI);
-    }
-  /* we actually only need i/speed of these, but wtf */
-  for (i = 1; i < (sizeof (depths) / sizeof (depths[0])); i++)
-    depths [i] = atan (((double) 0.5) / (((double) i) / DEPTH_SCALE));
-  depths [0] = M_PI/2; /* avoid division by 0 */
-
-  threed = get_boolean_resource("use3d", "Boolean");
-  if (threed)
-    {
-      gcv.background = bg;
-      gcv.foreground = get_pixel_resource ("left3d", "Foreground", dpy, cmap);
-      threed_left_gc = XCreateGC (dpy, window, GCForeground|GCBackground,&gcv);
-      gcv.foreground = get_pixel_resource ("right3d", "Foreground", dpy, cmap);
-      threed_right_gc = XCreateGC (dpy, window,GCForeground|GCBackground,&gcv);
-      threed_delta = get_float_resource("delta3d", "Integer");
-    }
-
-  /* don't want any exposure events from XCopyPlane */
-  for( i = 0; i < ncolors; i++)
-    XSetGraphicsExposures (dpy, draw_gcs[i], False);
-  XSetGraphicsExposures (dpy, erase_gc, False);
-
-  nrocks = get_integer_resource ("count", "Count");
-  if (nrocks < 1) nrocks = 1;
-  rocks = (struct rock *) calloc (nrocks, sizeof (struct rock));
-  init_pixmaps (dpy, window);
-  XClearWindow (dpy, window);
-}
-
-
-\f
-char *progclass = "Rocks";
-
-char *defaults [] = {
-  ".background:        Black",
-  ".foreground:        #E9967A",
-  "*colors:    5",
-  "*count:     100",
-  "*delay:     50000",
-  "*speed:     100",
-  "*rotate:     true",
-  "*move:       true",
-  "*use3d:      False",
-  "*left3d:    Blue",
-  "*right3d:   Red",
-  "*delta3d:   1.5",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-count",          ".count",       XrmoptionSepArg, 0 },
-  { "-rotate",          ".rotate",      XrmoptionNoArg,  "true" },
-  { "-norotate",        ".rotate",      XrmoptionNoArg,  "false" },
-  { "-move",            ".move",        XrmoptionNoArg,  "true" },
-  { "-nomove",          ".move",        XrmoptionNoArg,  "false" },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-speed",          ".speed",       XrmoptionSepArg, 0 },
-  {"-3d",              ".use3d",       XrmoptionNoArg, "True"},
-  {"-no-3d",           ".use3d",       XrmoptionNoArg, "False"},
-  {"-left3d",          ".left3d",      XrmoptionSepArg, 0 },
-  {"-right3d",         ".right3d",     XrmoptionSepArg, 0 },
-  {"-delta3d",         ".delta3d",     XrmoptionSepArg, 0 },
-  { "-colors",         ".colors",      XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  init_rocks (dpy, window);
-  while (1)
-    {
-      rocks_once ();
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay) usleep (delay);
-    }
-}
diff --git a/hacks/rocks.man b/hacks/rocks.man
deleted file mode 100644 (file)
index 1d39130..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-.TH XScreenSaver 1 "13-aug-92" "X Version 11"
-.SH NAME
-rocks - animation of flying through an asteroid field
-.SH SYNOPSIS
-.B rocks
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-ncolors \fIn\fP] [\-install] [\-visual \fIvisual\fP] [\-count \fIinteger\fP] [\-delay \fIusecs\fP] [\-speed \fIinteger\fP] [\-norotate] [\-nomove] [\-3d]
-.SH DESCRIPTION
-The \fIrocks\fP program draws an animation of an asteroid field moving past
-the observer (or vice versa).  Sometimes the observer picks up spin on Z axis.
-.SH OPTIONS
-.I rocks
-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
-Make all the rocks the same color.
-.TP 8
-.B \-ncolors colors
-How many different colors to use.  Default 5.  Colors are chosen randomly.
-.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 \-count \fIinteger\fP
-Maximum number of rocks to draw on the screen at once.  Default 100.
-.TP 8
-.B \-speed \fIinteger\fP
-A measure of the speed with which the observer and the rocks pass each other,
-from 1 to 100.  Default 100, meaning ``very fast.''  If you're on a slow 
-display connection (the animation looks jerky) then try making this number 
-smaller, and/or decreasing the number of rocks.
-.TP 8
-.B \-delay \fImicroseconds\fP
-Number of microseconds to delay between each frame.  Default 50000, meaning
-about 1/20th second.  Compare and contrast with \fI\-speed\fP, above.
-.TP 8
-.B \-norotate
-Don't rotate the observer; just fly through the field on the level.
-.TP 8
-.B \-nomove
-Don't turn the observer; just fly straight ahead through the field.
-.TP 8
-.B \-3d
-Do red/blue 3d separations: if you look at the screen with 3d glasses,
-the rocks will be \fIjumping\fP right \fIout\fP at you.  Oooooh, scaaary!
-.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 BUGS
-There should be an option to display doppler shift (a gravity rainbow.)
-
-Speed of rotation should be settable.
-
-Default speed of rotation should be relative to forward velocity.
-.SH COPYRIGHT
-Copyright \(co 1992 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 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
-Based on Lisp Machine code copyright 1988 John Nguyen <johnn@hx.lcs.mit.edu>.
-
-Ported to C and X by Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
-
-Steering code by Jeremie Petit; 3D code by theiling@coli.uni-sb.de.
diff --git a/hacks/rorschach.c b/hacks/rorschach.c
deleted file mode 100644 (file)
index 430fa9d..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1996, 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.
- *
- * 19971004: Johannes Keukelaar <johannes@nada.kth.se>: Use helix screen
- *           eraser.
- */
-
-#include "screenhack.h"
-#include "erase.h"
-
-static GC draw_gc, erase_gc;
-static unsigned int default_fg_pixel;
-static int iterations, offset;
-static Bool xsym, ysym;
-static int sleep_time;
-
-static void
-init_rorschach (Display *dpy, Window window)
-{
-  XGCValues gcv;
-  Colormap cmap;
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  gcv.foreground = default_fg_pixel =
-    get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  draw_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  gcv.foreground = get_pixel_resource ("background", "Background", dpy, cmap);
-  erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  iterations = get_integer_resource ("iterations", "Integer");
-  offset = get_integer_resource ("offset", "Integer");
-  if (offset <= 0) offset = 3;
-  if (iterations < 10) iterations = 10;
-  xsym = get_boolean_resource ("xsymmetry", "Symmetry");
-  ysym = get_boolean_resource ("ysymmetry", "Symmetry");
-}
-
-static void
-hurm (Display *dpy, Window window)
-{
-  Colormap cmap;
-  XWindowAttributes xgwa;
-  int xlim, ylim, x, y, i, got_color = 0;
-  XPoint points [4];
-  XColor color;
-  XClearWindow (dpy, window);
-  XGetWindowAttributes (dpy, window, &xgwa);
-  xlim = xgwa.width;
-  ylim = xgwa.height;
-  cmap = xgwa.colormap;
-
-  if (! mono_p)
-    hsv_to_rgb (random()%360, 1.0, 1.0, &color.red, &color.green, &color.blue);
-  if ((!mono_p) && (got_color = XAllocColor (dpy, cmap, &color)))
-    XSetForeground (dpy, draw_gc, color.pixel);
-  else
-    XSetForeground (dpy, draw_gc, default_fg_pixel);
-
-  x = xlim/2;
-  y = ylim/2;
-  for (i = 0; i < iterations; i++)
-    {
-      int j = 0;
-      x += ((random () % (1 + (offset << 1))) - offset);
-      y += ((random () % (1 + (offset << 1))) - offset);
-      points [j].x = x;
-      points [j].y = y;
-      j++;
-      if (xsym)
-       {
-         points [j].x = xlim - x;
-         points [j].y = y;
-         j++;
-       }
-      if (ysym)
-       {
-         points [j].x = x;
-         points [j].y = ylim - y;
-         j++;
-       }
-      if (xsym && ysym)
-       {
-         points [j].x = xlim - x;
-         points [j].y = ylim - y;
-         j++;
-       }
-      XDrawPoints (dpy, window, draw_gc, points, j, CoordModeOrigin);
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-    }
-  sleep ( sleep_time );
-
-  erase_full_window(dpy, window);
-
-  XClearWindow (dpy, window);
-  if (got_color) XFreeColors (dpy, cmap, &color.pixel, 1, 0);
-  XSync (dpy, False);
-  screenhack_handle_events (dpy);
-  sleep (1);
-}
-
-\f
-char *progclass = "Rorschach";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*xsymmetry: true",
-  "*ysymmetry: false",
-  "*iterations:        4000",
-  "*offset:    4",
-  "*delay:     5",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-iterations",     ".iterations",  XrmoptionSepArg, 0 },
-  { "-offset",         ".offset",      XrmoptionSepArg, 0 },
-  { "-xsymmetry",      ".xsymmetry",   XrmoptionNoArg, "true" },
-  { "-ysymmetry",      ".ysymmetry",   XrmoptionNoArg, "true" },
-  { "-erase-speed",    ".eraseSpeed",          XrmoptionSepArg, 0 },
-  { "-delay",           ".delay",               XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  sleep_time = get_integer_resource("delay", "Integer");
-  init_rorschach (dpy, window);
-  while (1)
-    hurm (dpy, window);
-}
diff --git a/hacks/rorschach.man b/hacks/rorschach.man
deleted file mode 100644 (file)
index 56a6c48..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-.TH XScreenSaver 1 "13-aug-92" "X Version 11"
-.SH NAME
-rorschach - simulate ink-blot patterns
-.SH SYNOPSIS
-.B rorschach
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-iterations \fIinteger\fP] [\-offset \fIinteger\fP] [\-xsymmetry] [\-ysymmetry] [\-erase\-mode \fIinteger\fP] [\-erase\-speed \fIusecs\fP] [\-delay \fIsecs\fP]
-.SH DESCRIPTION
-The \fIrorschach\fP program draws random patterns reminiscent of the
-psychological test of same name.
-.SH OPTIONS
-.I rorschach
-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 \-iterations \fIinteger\fP
-How many dots should be drawn each time.  Default 4000.
-.TP 8
-.B \-offset \fIinteger\fP
-How far apart the dots should be.  Default 4 pixels.
-.TP 8
-.B \-xsymmetry
-Whether the images should be horizontally symmetrical.  Default true.
-.TP 8
-.B \-ysymmetry
-Whether the images should be vertically symmetrical.  Default false.
-.TP 8
-.B \-erase\-mode \fIinteger\fP
-This sets the erase mode. Mode \-1 chooses a random mode each time. There
-are currently 6 modes defined (0\-5).
-.TP 8
-.B \-erase\-speed \fIusecs\fP
-This controls the speed at which the screen will be erased. (Delay between
-erasing of individual lines.)
-.TP 8
-.B \-delay \fIseconds\fP
-This sets the number of seconds that the figure will be on the screen.
-.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
-May call your sanity into question.
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver (1)
-.SH COPYRIGHT
-Copyright \(co 1992 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 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>, 13-aug-92.
diff --git a/hacks/rotor.c b/hacks/rotor.c
deleted file mode 100644 (file)
index 135159e..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* rotor --- a swirly rotor */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)rotor.c      4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1991 by Patrick J. Naughton.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97:  Compatible with xscreensaver
- * 08-Mar-95: CAT stuff for ## was tripping up some C compilers.  Removed.
- * 01-Dec-93: added patch for AIXV3 from Tom McConnell
- *            <tmcconne@sedona.intel.com>
- * 11-Nov-90: put into xlock by Steve Zellers <zellers@sun.com>
- * 16-Oct-90: Received from Tom Lawrence (tcl@cs.brown.edu: 'flight' simulator)
- */
-
-#ifdef STANDALONE
-# define PROGCLASS "Rotor"
-# define HACK_INIT init_rotor
-# define HACK_DRAW draw_rotor
-# define rotor_opts xlockmore_opts
-# define DEFAULTS      "*delay:   10000 \n"    \
-                                       "*count:   4 \n"                \
-                                       "*size:   -6 \n"                \
-                                       "*cycles:  20 \n"               \
-                                       "*ncolors: 200 \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                /* in xscreensaver distribution */
-#else /* STANDALONE */
-# include "xlock.h"                    /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-ModeSpecOpt rotor_opts =
-{0, NULL, 0, NULL, NULL};
-
-/*-
- * A 'batchcount' of 3 or 4 works best!
- */
-
-#define MAXANGLE       3000.0  /* irrectangular (jwz: was 10000.0) */
-
-/* How many segments to draw per cycle when redrawing */
-#define REDRAWSTEP 3
-
-typedef struct {
-       float       angle;
-       float       radius;
-       float       start_radius;
-       float       end_radius;
-       float       radius_drift_max;
-       float       radius_drift_now;
-
-       float       ratio;
-       float       start_ratio;
-       float       end_ratio;
-       float       ratio_drift_max;
-       float       ratio_drift_now;
-} elem;
-
-typedef struct {
-       int         pix;
-       int         lastx, lasty;
-       int         num, rotor, prev;
-       int         nsave;
-       float       angle;
-       int         centerx, centery;
-       int         prevcenterx, prevcentery;
-       unsigned char firsttime;
-       unsigned char iconifiedscreen;  /* for iconified view */
-       unsigned char forward;
-       unsigned char unused;
-       elem       *elements;
-       XPoint     *save;
-       int         redrawing, redrawpos;
-} rotorstruct;
-
-static rotorstruct *rotors = NULL;
-
-void
-init_rotor(ModeInfo * mi)
-{
-       rotorstruct *rp;
-       int         x;
-       elem       *pelem;
-       unsigned char wasiconified;
-
-       if (rotors == NULL) {
-               if ((rotors = (rotorstruct *) calloc(MI_NUM_SCREENS(mi),
-                                             sizeof (rotorstruct))) == NULL)
-                       return;
-       }
-       rp = &rotors[MI_SCREEN(mi)];
-
-       rp->prevcenterx = rp->centerx;
-       rp->prevcentery = rp->centery;
-
-       rp->centerx = MI_WIN_WIDTH(mi) / 2;
-       rp->centery = MI_WIN_HEIGHT(mi) / 2;
-
-       rp->redrawing = 0;
-       /*
-        * sometimes, you go into iconified view, only to see a really whizzy pattern
-        * that you would like to look more closely at. Normally, clicking in the
-        * icon reinitializes everything - but I don't, cuz I'm that kind of guy.
-        * HENCE, the wasiconified stuff you see here.
-        */
-
-       wasiconified = rp->iconifiedscreen;
-       rp->iconifiedscreen = MI_WIN_IS_ICONIC(mi);
-
-       if (wasiconified && !rp->iconifiedscreen)
-               rp->firsttime = True;
-       else {
-
-               /* This is a fudge is needed since prevcenter may not be set when it comes
-                  from the the random mode and return is pressed (and its not the first
-                  mode that was running). This assumes that the size of the lock screen
-                  window / size of the icon window = 12 */
-               if (!rp->prevcenterx)
-                       rp->prevcenterx = rp->centerx * 12;
-               if (!rp->prevcentery)
-                       rp->prevcentery = rp->centery * 12;
-
-               rp->num = MI_BATCHCOUNT(mi);
-               if (rp->num < 0) {
-                       rp->num = NRAND(-rp->num) + 1;
-                       if (rp->elements != NULL) {
-                               (void) free((void *) rp->elements);
-                               rp->elements = NULL;
-                       }
-               }
-               if (rp->elements == NULL)
-                       rp->elements = (elem *) calloc(rp->num, sizeof (elem));
-               rp->nsave = MI_CYCLES(mi);
-               if (rp->nsave <= 1)
-                       rp->nsave = 2;
-               if (rp->save == NULL)
-                       rp->save = (XPoint *) calloc(rp->nsave, sizeof (XPoint));
-
-               pelem = rp->elements;
-
-               for (x = rp->num; --x >= 0; pelem++) {
-                       pelem->radius_drift_max = 1.0;
-                       pelem->radius_drift_now = 1.0;
-
-                       pelem->end_radius = 100.0;
-
-                       pelem->ratio_drift_max = 1.0;
-                       pelem->ratio_drift_now = 1.0;
-                       pelem->end_ratio = 10.0;
-               }
-               if (MI_NPIXELS(mi) > 2)
-                       rp->pix = NRAND(MI_NPIXELS(mi));
-
-               rp->rotor = 0;
-               rp->prev = 1;
-               rp->lastx = rp->centerx;
-               rp->lasty = rp->centery;
-               rp->angle = (float) NRAND((long) MAXANGLE) / 3.0;
-               rp->forward = rp->firsttime = True;
-       }
-
-       {
-         int line_width = MI_SIZE(mi);
-         if (line_width == 0)
-               line_width = -5;
-         if (line_width < 0)
-               line_width = NRAND(-line_width)+1;
-         XSetLineAttributes(MI_DISPLAY(mi), MI_GC(mi), line_width,
-                                                LineSolid, CapButt, JoinMiter);
-       }
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-}
-
-void
-draw_rotor(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       register rotorstruct *rp = &rotors[MI_SCREEN(mi)];
-       register elem *pelem;
-       int         thisx, thisy;
-       int         i;
-       int         x_1, y_1, x_2, y_2;
-
-       if (!rp->iconifiedscreen) {
-               thisx = rp->centerx;
-               thisy = rp->centery;
-       } else {
-               thisx = rp->prevcenterx;
-               thisy = rp->prevcentery;
-       }
-       for (i = rp->num, pelem = rp->elements; --i >= 0; pelem++) {
-               if (pelem->radius_drift_max <= pelem->radius_drift_now) {
-                       pelem->start_radius = pelem->end_radius;
-                       pelem->end_radius = (float) NRAND(40000) / 100.0 - 200.0;
-                       pelem->radius_drift_max = (float) NRAND(100000) + 10000.0;
-                       pelem->radius_drift_now = 0.0;
-               }
-               if (pelem->ratio_drift_max <= pelem->ratio_drift_now) {
-                       pelem->start_ratio = pelem->end_ratio;
-                       pelem->end_ratio = (float) NRAND(2000) / 100.0 - 10.0;
-                       pelem->ratio_drift_max = (float) NRAND(100000) + 10000.0;
-                       pelem->ratio_drift_now = 0.0;
-               }
-               pelem->ratio = pelem->start_ratio +
-                       (pelem->end_ratio - pelem->start_ratio) /
-                       pelem->ratio_drift_max * pelem->ratio_drift_now;
-               pelem->angle = rp->angle * pelem->ratio;
-               pelem->radius = pelem->start_radius +
-                       (pelem->end_radius - pelem->start_radius) /
-                       pelem->radius_drift_max * pelem->radius_drift_now;
-
-               thisx += (int) (COSF(pelem->angle) * pelem->radius);
-               thisy += (int) (SINF(pelem->angle) * pelem->radius);
-
-               pelem->ratio_drift_now += 1.0;
-               pelem->radius_drift_now += 1.0;
-       }
-       if (rp->firsttime)
-               rp->firsttime = False;
-       else {
-               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-
-               x_1 = (int) rp->save[rp->rotor].x;
-               y_1 = (int) rp->save[rp->rotor].y;
-               x_2 = (int) rp->save[rp->prev].x;
-               y_2 = (int) rp->save[rp->prev].y;
-
-               if (rp->iconifiedscreen) {
-                       x_1 = x_1 * rp->centerx / rp->prevcenterx;
-                       x_2 = x_2 * rp->centerx / rp->prevcenterx;
-                       y_1 = y_1 * rp->centery / rp->prevcentery;
-                       y_2 = y_2 * rp->centery / rp->prevcentery;
-               }
-               XDrawLine(display, MI_WINDOW(mi), gc, x_1, y_1, x_2, y_2);
-
-               if (MI_NPIXELS(mi) > 2) {
-                       XSetForeground(display, gc, MI_PIXEL(mi, rp->pix));
-                       if (++rp->pix >= MI_NPIXELS(mi))
-                               rp->pix = 0;
-               } else
-                       XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-
-               x_1 = rp->lastx;
-               y_1 = rp->lasty;
-               x_2 = thisx;
-               y_2 = thisy;
-
-               if (rp->iconifiedscreen) {
-                       x_1 = x_1 * rp->centerx / rp->prevcenterx;
-                       x_2 = x_2 * rp->centerx / rp->prevcenterx;
-                       y_1 = y_1 * rp->centery / rp->prevcentery;
-                       y_2 = y_2 * rp->centery / rp->prevcentery;
-               }
-               XDrawLine(display, MI_WINDOW(mi), gc, x_1, y_1, x_2, y_2);
-       }
-       rp->save[rp->rotor].x = rp->lastx = thisx;
-       rp->save[rp->rotor].y = rp->lasty = thisy;
-
-       ++rp->rotor;
-       rp->rotor %= rp->nsave;
-       ++rp->prev;
-       rp->prev %= rp->nsave;
-       if (rp->forward) {
-               rp->angle += 0.01;
-               if (rp->angle >= MAXANGLE) {
-                       rp->angle = MAXANGLE;
-                       rp->forward = False;
-               }
-       } else {
-               rp->angle -= 0.1;
-               if (rp->angle <= 0) {
-                       rp->angle = 0.0;
-                       rp->forward = True;
-               }
-       }
-       if (rp->redrawing) {
-               int         j;
-
-               for (i = 0; i < REDRAWSTEP; i++) {
-                       j = (rp->rotor - rp->redrawpos + rp->nsave) % rp->nsave;
-
-                       x_1 = (int) rp->save[j].x;
-                       y_1 = (int) rp->save[j].y;
-                       x_2 = (int) rp->save[(j - 1 + rp->nsave) % rp->nsave].x;
-                       y_2 = (int) rp->save[(j - 1 + rp->nsave) % rp->nsave].y;
-
-                       if (rp->iconifiedscreen) {
-                               x_1 = x_1 * rp->centerx / rp->prevcenterx;
-                               x_2 = x_2 * rp->centerx / rp->prevcenterx;
-                               y_1 = y_1 * rp->centery / rp->prevcentery;
-                               y_2 = y_2 * rp->centery / rp->prevcentery;
-                       }
-                       XDrawLine(display, MI_WINDOW(mi), gc, x_1, y_1, x_2, y_2);
-
-                       if (++(rp->redrawpos) >= rp->nsave) {
-                               rp->redrawing = 0;
-                               break;
-                       }
-               }
-       }
-}
-
-void
-release_rotor(ModeInfo * mi)
-{
-       if (rotors != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       rotorstruct *rp = &rotors[screen];
-
-                       if (rp->elements != NULL)
-                               (void) free((void *) rp->elements);
-                       if (rp->save != NULL)
-                               (void) free((void *) rp->save);
-               }
-               (void) free((void *) rotors);
-               rotors = NULL;
-       }
-}
-
-void
-refresh_rotor(ModeInfo * mi)
-{
-       rotorstruct *rp = &rotors[MI_SCREEN(mi)];
-
-       rp->redrawing = 1;
-       rp->redrawpos = 1;
-}
diff --git a/hacks/screenhack.c b/hacks/screenhack.c
deleted file mode 100644 (file)
index 8a882fc..0000000
+++ /dev/null
@@ -1,488 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1997, 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.
- *
- * And remember: X Windows is to graphics hacking as roman numerals are to
- * the square root of pi.
- */
-
-/* This file contains simple code to open a window or draw on the root.
-   The idea being that, when writing a graphics hack, you can just link
-   with this .o to get all of the uninteresting junk out of the way.
-
-   -  create a procedure `screenhack(dpy, window)'
-
-   -  create a variable `char *progclass' which names this program's
-      resource class.
-
-   -  create a variable `char defaults []' for the default resources, and
-      null-terminate it.
-
-   -  create a variable `XrmOptionDescRec options[]' for the command-line,
-      and null-terminate it.
-
-   And that's it...
- */
-
-#include <stdio.h>
-#include <X11/Intrinsic.h>
-#include <X11/IntrinsicP.h>
-#include <X11/CoreP.h>
-#include <X11/Shell.h>
-#include <X11/StringDefs.h>
-#include <X11/Xutil.h>
-#include <X11/keysym.h>
-
-#ifdef __sgi
-# include <X11/SGIScheme.h>    /* for SgiUseSchemes() */
-#endif /* __sgi */
-
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/Error.h>
-# else /* VMS */
-#  include <Xmu/Error.h>
-# endif
-#else
-# include "xmu.h"
-#endif
-#include "screenhack.h"
-#include "version.h"
-#include "vroot.h"
-
-char *progname;
-XrmDatabase db;
-XtAppContext app;
-Bool mono_p;
-
-static XrmOptionDescRec default_options [] = {
-  { "-root",   ".root",                XrmoptionNoArg, "True" },
-  { "-window", ".root",                XrmoptionNoArg, "False" },
-  { "-mono",   ".mono",                XrmoptionNoArg, "True" },
-  { "-install",        ".installColormap",     XrmoptionNoArg, "True" },
-  { "-noinstall",".installColormap",   XrmoptionNoArg, "False" },
-  { "-visual", ".visualID",            XrmoptionSepArg, 0 },
-  { "-window-id", ".windowID",         XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-static char *default_defaults[] = {
-  ".root:              false",
-  "*geometry:          600x480", /* this should be .geometry, but nooooo... */
-  "*mono:              false",
-  "*installColormap:   false",
-  "*visualID:          default",
-  "*windowID:          ",
-  0
-};
-
-static XrmOptionDescRec *merged_options;
-static int merged_options_size;
-static char **merged_defaults;
-
-static void
-merge_options (void)
-{
-  int def_opts_size, opts_size;
-  int def_defaults_size, defaults_size;
-
-  for (def_opts_size = 0; default_options[def_opts_size].option;
-       def_opts_size++)
-    ;
-  for (opts_size = 0; options[opts_size].option; opts_size++)
-    ;
-
-  merged_options_size = def_opts_size + opts_size;
-  merged_options = (XrmOptionDescRec *)
-    malloc ((merged_options_size + 1) * sizeof(*default_options));
-  memcpy (merged_options, default_options,
-         (def_opts_size * sizeof(*default_options)));
-  memcpy (merged_options + def_opts_size, options,
-         ((opts_size + 1) * sizeof(*default_options)));
-
-  for (def_defaults_size = 0; default_defaults[def_defaults_size];
-       def_defaults_size++)
-    ;
-  for (defaults_size = 0; defaults[defaults_size]; defaults_size++)
-    ;
-  merged_defaults = (char **)
-    malloc ((def_defaults_size + defaults_size + 1) * sizeof (*defaults));;
-  memcpy (merged_defaults, default_defaults,
-         def_defaults_size * sizeof(*defaults));
-  memcpy (merged_defaults + def_defaults_size, defaults,
-         (defaults_size + 1) * sizeof(*defaults));
-
-  /* This totally sucks.  Xt should behave like this by default.
-     If the string in `defaults' looks like ".foo", change that
-     to "Progclass.foo".
-   */
-  {
-    char **s;
-    for (s = merged_defaults; *s; s++)
-      if (**s == '.')
-       {
-         const char *oldr = *s;
-         char *newr = (char *) malloc(strlen(oldr) + strlen(progclass) + 3);
-         strcpy (newr, progclass);
-         strcat (newr, oldr);
-         *s = newr;
-       }
-  }
-}
-
-\f
-/* Make the X errors print out the name of this program, so we have some
-   clue which one has a bug when they die under the screensaver.
- */
-
-static int
-screenhack_ehandler (Display *dpy, XErrorEvent *error)
-{
-  fprintf (stderr, "\nX error in %s:\n", progname);
-  if (XmuPrintDefaultErrorMessage (dpy, error, stderr))
-    exit (-1);
-  else
-    fprintf (stderr, " (nonfatal.)\n");
-  return 0;
-}
-
-static Bool
-MapNotify_event_p (Display *dpy, XEvent *event, XPointer window)
-{
-  return (event->xany.type == MapNotify &&
-         event->xvisibility.window == (Window) window);
-}
-
-
-#ifdef XLOCKMORE
-extern void pre_merge_options (void);
-#endif
-
-
-static Atom XA_WM_PROTOCOLS, XA_WM_DELETE_WINDOW;
-
-/* Dead-trivial event handling: exits if "q" or "ESC" are typed.
-   Exit if the WM_PROTOCOLS WM_DELETE_WINDOW ClientMessage is received.
- */
-void
-screenhack_handle_event (Display *dpy, XEvent *event)
-{
-  switch (event->xany.type)
-    {
-    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;
-    }
-}
-
-
-void
-screenhack_handle_events (Display *dpy)
-{
-  while (XPending (dpy))
-    {
-      XEvent event;
-      XNextEvent (dpy, &event);
-      screenhack_handle_event (dpy, &event);
-    }
-}
-
-
-static Visual *
-pick_visual (Screen *screen)
-{
-#ifdef USE_GL
-  /* If we're linking against GL (that is, this is the version of screenhack.o
-     that the GL hacks will use, which is different from the one that the
-     non-GL hacks will use) then try to pick the "best" visual by interrogating
-     the GL library instead of by asking Xlib.  GL knows better.
-   */
-  Visual *v = 0;
-  char *string = get_string_resource ("visualID", "VisualID");
-
-  if (!string || !*string ||
-      !strcmp (string, "gl") ||
-      !strcmp (string, "best") ||
-      !strcmp (string, "color") ||
-      !strcmp (string, "default"))
-    v = get_gl_visual (screen);                /* from ../utils/visual-gl.c */
-
-  if (string)
-    free (string);
-  if (v)
-    return v;
-#endif /* USE_GL */
-
-  return get_visual_resource (screen, "visualID", "VisualID", False);
-}
-
-
-int
-main (int argc, char **argv)
-{
-  Widget toplevel;
-  Display *dpy;
-  Window window;
-  Visual *visual;
-  Colormap cmap;
-  Bool root_p;
-  Window on_window = 0;
-  XEvent event;
-  Boolean dont_clear /*, dont_map */;
-  char version[255];
-
-#ifdef XLOCKMORE
-  pre_merge_options ();
-#endif
-  merge_options ();
-
-#ifdef __sgi
-  /* We have to do this on SGI to prevent the background color from being
-     overridden by the current desktop color scheme (we'd like our backgrounds
-     to be black, thanks.)  This should be the same as setting the
-     "*useSchemes: none" resource, but it's not -- if that resource is
-     present in the `default_defaults' above, it doesn't work, though it
-     does work when passed as an -xrm arg on the command line.  So screw it,
-     turn them off from C instead.
-   */
-  SgiUseSchemes ("none"); 
-#endif /* __sgi */
-
-  toplevel = XtAppInitialize (&app, progclass, merged_options,
-                             merged_options_size, &argc, argv,
-                             merged_defaults, 0, 0);
-  dpy = XtDisplay (toplevel);
-  db = XtDatabase (dpy);
-  XtGetApplicationNameAndClass (dpy, &progname, &progclass);
-  XSetErrorHandler (screenhack_ehandler);
-
-  XA_WM_PROTOCOLS = XInternAtom (dpy, "WM_PROTOCOLS", False);
-  XA_WM_DELETE_WINDOW = XInternAtom (dpy, "WM_DELETE_WINDOW", False);
-
-  {
-    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);
-    free(v);
-  }
-
-  if (argc > 1)
-    {
-      const char *s;
-      int i;
-      int x = 18;
-      int end = 78;
-      Bool help_p = !strcmp(argv[1], "-help");
-      fprintf (stderr, "%s\n", version);
-      for (s = progclass; *s; s++) fprintf(stderr, " ");
-      fprintf (stderr, "  http://www.jwz.org/xscreensaver/\n\n");
-
-      if (!help_p)
-       fprintf(stderr, "Unrecognised option: %s\n", argv[1]);
-      fprintf (stderr, "Options include: ");
-      for (i = 0; i < merged_options_size; i++)
-       {
-         char *sw = merged_options [i].option;
-         Bool argp = (merged_options [i].argKind == XrmoptionSepArg);
-         int size = strlen (sw) + (argp ? 6 : 0) + 2;
-         if (x + size >= end)
-           {
-             fprintf (stderr, "\n\t\t ");
-             x = 18;
-           }
-         x += size;
-         fprintf (stderr, "%s", sw);
-         if (argp) fprintf (stderr, " <arg>");
-         if (i != merged_options_size - 1) fprintf (stderr, ", ");
-       }
-      fprintf (stderr, ".\n");
-      exit (help_p ? 0 : 1);
-    }
-
-  dont_clear = get_boolean_resource ("dontClearRoot", "Boolean");
-/*dont_map = get_boolean_resource ("dontMapWindow", "Boolean"); */
-  mono_p = get_boolean_resource ("mono", "Boolean");
-  if (CellsOfScreen (DefaultScreenOfDisplay (dpy)) <= 2)
-    mono_p = True;
-
-  root_p = get_boolean_resource ("root", "Boolean");
-
-  {
-    char *s = get_string_resource ("windowID", "WindowID");
-    if (s && *s)
-      on_window = get_integer_resource ("windowID", "WindowID");
-    if (s) free (s);
-  }
-
-  if (on_window)
-    {
-      XWindowAttributes xgwa;
-      window = (Window) on_window;
-      XtDestroyWidget (toplevel);
-      XGetWindowAttributes (dpy, window, &xgwa);
-      cmap = xgwa.colormap;
-      visual = xgwa.visual;
-    }
-  else if (root_p)
-    {
-      XWindowAttributes xgwa;
-      window = RootWindowOfScreen (XtScreen (toplevel));
-      XtDestroyWidget (toplevel);
-      XGetWindowAttributes (dpy, window, &xgwa);
-      cmap = xgwa.colormap;
-      visual = xgwa.visual;
-    }
-  else
-    {
-      Boolean def_visual_p;
-      Screen *screen = XtScreen (toplevel);
-      visual = pick_visual (screen);
-
-      if (toplevel->core.width <= 0)
-       toplevel->core.width = 600;
-      if (toplevel->core.height <= 0)
-       toplevel->core.height = 480;
-
-      def_visual_p = (visual == DefaultVisualOfScreen (screen));
-
-      if (!def_visual_p)
-       {
-         unsigned int bg, bd;
-         Widget new;
-
-         cmap = XCreateColormap (dpy, RootWindowOfScreen(screen),
-                                 visual, AllocNone);
-         bg = get_pixel_resource ("background", "Background", dpy, cmap);
-         bd = get_pixel_resource ("borderColor", "Foreground", dpy, cmap);
-
-         new = XtVaAppCreateShell (progname, progclass,
-                                   topLevelShellWidgetClass, dpy,
-                                   XtNmappedWhenManaged, False,
-                                   XtNvisual, visual,
-                                   XtNdepth, visual_depth (screen, visual),
-                                   XtNwidth, toplevel->core.width,
-                                   XtNheight, toplevel->core.height,
-                                   XtNcolormap, cmap,
-                                   XtNbackground, (Pixel) bg,
-                                   XtNborderColor, (Pixel) bd,
-                                   0);
-         XtDestroyWidget (toplevel);
-         toplevel = new;
-         XtRealizeWidget (toplevel);
-         window = XtWindow (toplevel);
-       }
-      else
-       {
-         XtVaSetValues (toplevel, XtNmappedWhenManaged, False, 0);
-         XtRealizeWidget (toplevel);
-         window = XtWindow (toplevel);
-
-         if (get_boolean_resource ("installColormap", "InstallColormap"))
-           {
-             cmap = XCreateColormap (dpy, window,
-                                  DefaultVisualOfScreen (XtScreen (toplevel)),
-                                     AllocNone);
-             XSetWindowColormap (dpy, window, cmap);
-           }
-         else
-           {
-             cmap = DefaultColormap (dpy, DefaultScreen (dpy));
-           }
-       }
-
-/*
-      if (dont_map)
-       {
-         XtVaSetValues (toplevel, XtNmappedWhenManaged, False, 0);
-         XtRealizeWidget (toplevel);
-       }
-      else
-*/
-       {
-         XtPopup (toplevel, XtGrabNone);
-       }
-
-      XtVaSetValues(toplevel, XtNtitle, version, 0);
-
-      /* For screenhack_handle_events(): select KeyPress, and
-         announce that we accept WM_DELETE_WINDOW. */
-      {
-        XWindowAttributes xgwa;
-        XGetWindowAttributes (dpy, window, &xgwa);
-        XSelectInput (dpy, window,
-                      xgwa.your_event_mask | KeyPressMask | ButtonPressMask);
-        XChangeProperty (dpy, window, XA_WM_PROTOCOLS, XA_ATOM, 32,
-                         PropModeReplace,
-                         (unsigned char *) &XA_WM_DELETE_WINDOW, 1);
-      }
-    }
-
-  if (!dont_clear)
-    {
-      XSetWindowBackground (dpy, window,
-                           get_pixel_resource ("background", "Background",
-                                               dpy, cmap));
-      XClearWindow (dpy, window);
-    }
-
-  if (!root_p && !on_window)
-    /* wait for it to be mapped */
-    XIfEvent (dpy, &event, MapNotify_event_p, (XPointer) window);
-
-  XSync (dpy, False);
-  srandom ((int) time ((time_t *) 0));
-  screenhack (dpy, window); /* doesn't return */
-  return 0;
-}
diff --git a/hacks/screenhack.h b/hacks/screenhack.h
deleted file mode 100644 (file)
index 6322252..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/* xscreensaver, Copyright (c) 1992-1997 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.
- */
-
-/* Found in Don Hopkins' .plan file:
- *
- *   The color situation is a total flying circus.  The X approach to
- *   device independence is to treat everything like a MicroVax framebuffer
- *   on acid.  A truely portable X application is required to act like the
- *   persistent customer in the Monty Python ``Cheese Shop'' sketch.  Even
- *   the simplest applications must answer many difficult questions, like:
- *
- *   WHAT IS YOUR DISPLAY?
- *       display = XOpenDisplay("unix:0");
- *   WHAT IS YOUR ROOT?
- *       root = RootWindow(display, DefaultScreen(display));
- *   AND WHAT IS YOUR WINDOW?
- *       win = XCreateSimpleWindow(display, root, 0, 0, 256, 256, 1,
- *                                 BlackPixel(display, DefaultScreen(display)),
- *                                 WhitePixel(display, DefaultScreen(display)))
- *   OH ALL RIGHT, YOU CAN GO ON.
- *
- *   WHAT IS YOUR DISPLAY?
- *         display = XOpenDisplay("unix:0");
- *   WHAT IS YOUR COLORMAP?
- *         cmap = DefaultColormap(display, DefaultScreen(display));
- *   AND WHAT IS YOUR FAVORITE COLOR?
- *         favorite_color = 0; / * Black. * /
- *         / * Whoops! No, I mean: * /
- *         favorite_color = BlackPixel(display, DefaultScreen(display));
- *         / * AAAYYYYEEEEE!! (client dumps core & falls into the chasm) * /
- *
- *   WHAT IS YOUR DISPLAY?
- *         display = XOpenDisplay("unix:0");
- *   WHAT IS YOUR VISUAL?
- *         struct XVisualInfo vinfo;
- *         if (XMatchVisualInfo(display, DefaultScreen(display),
- *                              8, PseudoColor, &vinfo) != 0)
- *            visual = vinfo.visual;
- *   AND WHAT IS THE NET SPEED VELOCITY OF AN XConfigureWindow REQUEST?
- *         / * Is that a SubStructureRedirectMask or a ResizeRedirectMask? * /
- *   WHAT?! HOW AM I SUPPOSED TO KNOW THAT?
- *   AAAAUUUGGGHHH!!!! (server dumps core & falls into the chasm)
- */
-
-#ifndef __SCREENHACK_H__
-#define __SCREENHACK_H__
-
-#include <stdlib.h>
-
-#include "config.h"
-
-#ifdef __hpux
- /* Which of the ten billion standards does values.h belong to?
-    What systems always have it? */
-# include <values.h>
-#endif
-
-#include <stdio.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xresource.h>
-#include <X11/Xos.h>
-
-/* M_PI ought to have been defined in math.h, but... */
-#ifndef M_PI
-# define M_PI 3.1415926535
-#endif
-
-#ifndef M_PI_2
-# define M_PI_2 1.5707963267
-#endif
-
-#include "yarandom.h"
-#include "usleep.h"
-#include "resources.h"
-#include "hsv.h"
-#include "colors.h"
-#include "grabscreen.h"
-#include "visual.h"
-
-extern Bool mono_p;
-extern char *progname;
-extern char *progclass;
-extern XrmDatabase db;
-extern XrmOptionDescRec options [];
-extern char *defaults [];
-
-extern void screenhack (Display*,Window);
-extern void screenhack_handle_event (Display*, XEvent*);
-extern void screenhack_handle_events (Display*);
-
-#endif /* __SCREENHACK_H__ */
diff --git a/hacks/sierpinski.c b/hacks/sierpinski.c
deleted file mode 100644 (file)
index ca22999..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* sierpinski --- Sierpinski's triangle fractal */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)sierpinski.c 4.05 97/09/19 xlockmore";
-#endif
-
-/* Copyright (c) 1996 by Desmond Daignault
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 18-Sep-97: 3D version Antti Kuntsi <kuntsi@iki.fi>.
- * 20-May-97: Changed the name tri to sierpinski for more compatiblity
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 05-Sep-96: Desmond Daignault Datatimes Incorporated
- *            <tekdd@dtol.datatimes.com> .
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Sierpinski"
-# define HACK_INIT                                     init_sierpinski
-# define HACK_DRAW                                     draw_sierpinski
-# define sierpinski_opts                       xlockmore_opts
-# define DEFAULTS      "*delay:                400000  \n"                     \
-                                       "*count:                2000    \n"                     \
-                                       "*cycles:               100     \n"                     \
-                                       "*ncolors:              64   \n"
-# define BRIGHT_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt sierpinski_opts =
-{0, NULL, 0, NULL, NULL};
-
-#define MAXCORNERS 4
-
-typedef struct {
-       int         width, height;
-       int         time;
-       int         px, py;
-       int         total_npoints;
-  int         corners;
-       int         npoints[MAXCORNERS];
-       unsigned long colors[MAXCORNERS];
-       XPoint     *pointBuffer[MAXCORNERS];
-       XPoint      vertex[MAXCORNERS];
-} sierpinskistruct;
-
-static sierpinskistruct *tris = NULL;
-
-static void
-startover(ModeInfo * mi)
-{
-       int         j;
-       sierpinskistruct *sp = &tris[MI_SCREEN(mi)];
-
-       if (MI_NPIXELS(mi) > 2) {
-    if (sp->corners == 3) {
-               sp->colors[0] = (NRAND(MI_NPIXELS(mi)));
-               sp->colors[1] = (sp->colors[0] + MI_NPIXELS(mi) / 7 +
-                        NRAND(2 * MI_NPIXELS(mi) / 7 + 1)) % MI_NPIXELS(mi);
-               sp->colors[2] = (sp->colors[0] + 4 * MI_NPIXELS(mi) / 7 +
-                        NRAND(2 * MI_NPIXELS(mi) / 7 + 1)) % MI_NPIXELS(mi);
-   } else if (sp->corners == 4) {
-               sp->colors[0] = (NRAND(MI_NPIXELS(mi)));
-               sp->colors[1] = (sp->colors[0] + MI_NPIXELS(mi) / 7 +
-                        NRAND(MI_NPIXELS(mi) / 7 + 1)) % MI_NPIXELS(mi);
-               sp->colors[2] = (sp->colors[0] + 3 * MI_NPIXELS(mi) / 7 +
-                        NRAND(MI_NPIXELS(mi) / 7 + 1)) % MI_NPIXELS(mi);
-               sp->colors[3] = (sp->colors[0] + 5 * MI_NPIXELS(mi) / 7 +
-                        NRAND(MI_NPIXELS(mi) / 7 + 1)) % MI_NPIXELS(mi);
-   } else {
-     (void) fprintf(stderr, "colors not set for %d corners\n", sp->corners);
-        }
-       }
-       for (j = 0; j < sp->corners; j++) {
-               sp->vertex[j].x = NRAND(sp->width);
-               sp->vertex[j].y = NRAND(sp->height);
-       }
-       sp->px = NRAND(sp->width);
-       sp->py = NRAND(sp->height);
-       sp->time = 0;
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-}
-
-void
-init_sierpinski(ModeInfo * mi)
-{
-       sierpinskistruct *sp;
-       int         i;
-
-       if (tris == NULL) {
-               if ((tris = (sierpinskistruct *) calloc(MI_NUM_SCREENS(mi),
-                                        sizeof (sierpinskistruct))) == NULL)
-                       return;
-       }
-       sp = &tris[MI_SCREEN(mi)];
-
-       sp->width = MI_WIN_WIDTH(mi);
-       sp->height = MI_WIN_HEIGHT(mi);
-
-       sp->total_npoints = MI_BATCHCOUNT(mi);
-       if (sp->total_npoints < 1)
-               sp->total_npoints = 1;
-  sp->corners = MI_SIZE(mi);
-       if (sp->corners < 3 || sp->corners > 4) {
-               sp->corners = (LRAND() & 1) + 3;
-       }
-       for (i = 0; i < sp->corners; i++) {
-               if (!sp->pointBuffer[i])
-                       sp->pointBuffer[i] = (XPoint *) malloc(sp->total_npoints *
-                                                           sizeof (XPoint));
-       }
-       startover(mi);
-}
-
-void
-draw_sierpinski(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       sierpinskistruct *sp = &tris[MI_SCREEN(mi)];
-       XPoint     *xp[MAXCORNERS];
-       int         i = 0, v;
-
-       if (MI_NPIXELS(mi) <= 2)
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       for (i = 0; i < sp->corners; i++)
-               xp[i] = sp->pointBuffer[i];
-       for (i = 0; i < sp->total_npoints; i++) {
-               v = NRAND(sp->corners);
-               sp->px = (sp->px + sp->vertex[v].x) / 2;
-               sp->py = (sp->py + sp->vertex[v].y) / 2;
-               xp[v]->x = sp->px;
-               xp[v]->y = sp->py;
-               xp[v]++;
-               sp->npoints[v]++;
-       }
-       for (i = 0; i < sp->corners; i++) {
-               if (MI_NPIXELS(mi) > 2)
-                       XSetForeground(display, gc, MI_PIXEL(mi, sp->colors[i]));
-               XDrawPoints(display, MI_WINDOW(mi), gc, sp->pointBuffer[i], sp->npoints[i],
-                           CoordModeOrigin);
-               sp->npoints[i] = 0;
-       }
-       if (++sp->time >= MI_CYCLES(mi))
-               startover(mi);
-}
-
-void
-release_sierpinski(ModeInfo * mi)
-{
-       if (tris != NULL) {
-               int         screen, i;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       for (i = 0; i < MAXCORNERS; i++)
-                               if (tris[screen].pointBuffer[i] != NULL) {
-                                       (void) free((void *) tris[screen].pointBuffer[i]);
-                               }
-               }
-               (void) free((void *) tris);
-               tris = NULL;
-       }
-}
-
-void
-refresh_sierpinski(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/sierpinski.man b/hacks/sierpinski.man
deleted file mode 100644 (file)
index f3fdb34..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-sierpinski - draws Sierpinski triangle fractals
-.SH SYNOPSIS
-.B sierpinski
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
-
-.SH DESCRIPTION
-The \fIsierpinski\fP program draws Sierpinski triangle fractals.
-.SH OPTIONS
-.I sierpinski
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors are chosen randomly.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1996 by Desmond Daignault.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Desmond Daignault <tekdd@dtol.datatimes.com>, 05-Sep-96.  (Original 
-xlock version was called tri.c.)
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.  (Renamed to sierpinski.)
diff --git a/hacks/slidescreen.c b/hacks/slidescreen.c
deleted file mode 100644 (file)
index c2fc033..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1996, 1997, 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 "screenhack.h"
-
-static int grid_size;
-static int pix_inc;
-static int hole_x, hole_y;
-static int bitmap_w, bitmap_h;
-static int xoff, yoff;
-static int grid_w, grid_h;
-static int delay, delay2;
-static GC gc;
-static int max_width, max_height;
-
-static void
-init_slide (Display *dpy, Window window)
-{
-  int i;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  long gcflags;
-  int border;
-  unsigned long fg, bg;
-  Drawable d;
-  Colormap cmap;
-  Visual *visual;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  grab_screen_image (xgwa.screen, window);
-
-  XGetWindowAttributes (dpy, window, &xgwa);  /* re-retrieve colormap */
-  cmap = xgwa.colormap;
-  visual = xgwa.visual;
-  max_width = xgwa.width;
-  max_height = xgwa.height;
-
-  delay = get_integer_resource ("delay", "Integer");
-  delay2 = get_integer_resource ("delay2", "Integer");
-  grid_size = get_integer_resource ("gridSize", "Integer");
-  pix_inc = get_integer_resource ("pixelIncrement", "Integer");
-  border = get_integer_resource ("internalBorderWidth", "InternalBorderWidth");
-
-  {
-    XColor fgc, bgc;
-    char *fgs = get_string_resource("background", "Background");
-    char *bgs = get_string_resource("foreground", "Foreground");
-    Bool fg_ok, bg_ok;
-    if (!XParseColor (dpy, cmap, fgs, &fgc))
-      XParseColor (dpy, cmap, "black", &bgc);
-    if (!XParseColor (dpy, cmap, bgs, &bgc))
-      XParseColor (dpy, cmap, "gray", &fgc);
-
-    fg_ok = XAllocColor (dpy, cmap, &fgc);
-    bg_ok = XAllocColor (dpy, cmap, &bgc);
-
-    /* If we weren't able to allocate the two colors we want from the
-       colormap (which is likely if the screen has been grabbed on an
-       8-bit SGI visual -- don't ask) then just go through the map
-       and find the closest color to the ones we wanted, and use those
-       pixels without actually allocating them.
-     */
-    if (fg_ok)
-      fg = fgc.pixel;
-    else
-      fg = 0;
-
-    if (bg_ok)
-      bg = bgc.pixel;
-    else
-      bg = 1;
-
-    if (!fg_ok || bg_ok)
-      {
-       unsigned long fgd = ~0;
-       unsigned long bgd = ~0;
-       int max = visual_cells (xgwa.screen, visual);
-       XColor *all = (XColor *) calloc(sizeof (*all), max);
-       for (i = 0; i < max; i++)
-         {
-           all[i].flags = DoRed|DoGreen|DoBlue;
-           all[i].pixel = i;
-         }
-       XQueryColors (dpy, cmap, all, max);
-       for(i = 0; i < max; i++)
-         {
-           long rd, gd, bd;
-           unsigned long d;
-           if (!fg_ok)
-             {
-               rd = (all[i].red   >> 8) - (fgc.red   >> 8);
-               gd = (all[i].green >> 8) - (fgc.green >> 8);
-               bd = (all[i].blue  >> 8) - (fgc.blue  >> 8);
-               if (rd < 0) rd = -rd;
-               if (gd < 0) gd = -gd;
-               if (bd < 0) bd = -bd;
-               d = (rd << 1) + (gd << 2) + bd;
-               if (d < fgd)
-                 {
-                   fgd = d;
-                   fg = all[i].pixel;
-                   if (d == 0)
-                     fg_ok = True;
-                 }
-             }
-
-           if (!bg_ok)
-             {
-               rd = (all[i].red   >> 8) - (bgc.red   >> 8);
-               gd = (all[i].green >> 8) - (bgc.green >> 8);
-               bd = (all[i].blue  >> 8) - (bgc.blue  >> 8);
-               if (rd < 0) rd = -rd;
-               if (gd < 0) gd = -gd;
-               if (bd < 0) bd = -bd;
-               d = (rd << 1) + (gd << 2) + bd;
-               if (d < bgd)
-                 {
-                   bgd = d;
-                   bg = all[i].pixel;
-                   if (d == 0)
-                     bg_ok = True;
-                 }
-             }
-
-           if (fg_ok && bg_ok)
-             break;
-         }
-       XFree(all);
-      }
-  }
-
-
-  if (delay < 0) delay = 0;
-  if (delay2 < 0) delay2 = 0;
-  if (pix_inc < 1) pix_inc = 1;
-  if (grid_size < 1) grid_size = 1;
-
-  gcv.foreground = fg;
-  gcv.function = GXcopy;
-  gcv.subwindow_mode = IncludeInferiors;
-  gcflags = GCForeground |GCFunction;
-  if (use_subwindow_mode_p(xgwa.screen, window)) /* see grabscreen.c */
-    gcflags |= GCSubwindowMode;
-  gc = XCreateGC (dpy, window, gcflags, &gcv);
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  bitmap_w = xgwa.width;
-  bitmap_h = xgwa.height;
-
-  grid_w = bitmap_w / grid_size;
-  grid_h = bitmap_h / grid_size;
-  hole_x = random () % grid_w;
-  hole_y = random () % grid_h;
-  xoff = (bitmap_w - (grid_w * grid_size)) / 2;
-  yoff = (bitmap_h - (grid_h * grid_size)) / 2;
-
-  d = window;
-
-  if (border)
-    {
-      int half = border/2;
-      int half2 = (border & 1 ? half+1 : half);
-      XSetForeground(dpy, gc, bg);
-      for (i = 0; i < bitmap_w; i += grid_size)
-       {
-         int j;
-         for (j = 0; j < bitmap_h; j += grid_size)
-           XDrawRectangle (dpy, d, gc,
-                           xoff+i+half2, yoff+j+half2,
-                           grid_size-border-1, grid_size-border-1);
-       }
-
-      XSetForeground(dpy, gc, fg);
-      for (i = 0; i <= bitmap_w; i += grid_size)
-       XFillRectangle (dpy, d, gc, xoff+i-half, yoff, border, bitmap_h);
-      for (i = 0; i <= bitmap_h; i += grid_size)
-       XFillRectangle (dpy, d, gc, xoff, yoff+i-half, bitmap_w, border);
-    }
-
-  if (xoff)
-    {
-      XFillRectangle (dpy, d, gc, 0, 0, xoff, bitmap_h);
-      XFillRectangle (dpy, d, gc, bitmap_w - xoff, 0, xoff, bitmap_h);
-    }
-  if (yoff)
-    {
-      XFillRectangle (dpy, d, gc, 0, 0, bitmap_w, yoff);
-      XFillRectangle (dpy, d, gc, 0, bitmap_h - yoff, bitmap_w, yoff);
-    }
-
-  XSync (dpy, False);
-  if (delay2) usleep (delay2 * 2);
- for (i = 0; i < grid_size; i += pix_inc)
-   {
-     XPoint points [3];
-     points[0].x = xoff + grid_size * hole_x;
-     points[0].y = yoff + grid_size * hole_y;
-     points[1].x = points[0].x + grid_size;
-     points[1].y = points[0].y;
-     points[2].x = points[0].x;
-     points[2].y = points[0].y + i;
-     XFillPolygon (dpy, window, gc, points, 3, Convex, CoordModeOrigin);
-
-     points[1].x = points[0].x;
-     points[1].y = points[0].y + grid_size;
-     points[2].x = points[0].x + i;
-     points[2].y = points[0].y + grid_size;
-     XFillPolygon (dpy, window, gc, points, 3, Convex, CoordModeOrigin);
-
-     points[0].x = points[1].x + grid_size;
-     points[0].y = points[1].y;
-     points[2].x = points[0].x;
-     points[2].y = points[0].y - i;
-     XFillPolygon (dpy, window, gc, points, 3, Convex, CoordModeOrigin);
-
-     points[1].x = points[0].x;
-     points[1].y = points[0].y - grid_size;
-     points[2].x = points[1].x - i;
-     points[2].y = points[1].y;
-     XFillPolygon (dpy, window, gc, points, 3, Convex, CoordModeOrigin);
-
-     XSync (dpy, False);
-     if (delay) usleep (delay);
-   }
-
-  XFillRectangle (dpy, window, gc,
-                 xoff + grid_size * hole_x,
-                 yoff + grid_size * hole_y,
-                 grid_size, grid_size);
-}
-
-static void
-slide1 (Display *dpy, Window window)
-{
-  /* this code is a total kludge, but who cares, it works... */
- int i, x, y, ix, iy, dx, dy, dir, w, h, size, inc;
- static int last = -1;
- do {
-   dir = random () % 4;
-   switch (dir)
-     {
-     case 0: dx = 0,  dy = 1;  break;
-     case 1: dx = -1, dy = 0;  break;
-     case 2: dx = 0,  dy = -1; break;
-     case 3: dx = 1,  dy = 0;  break;
-     default: abort ();
-     }
- } while (dir == last ||
-         hole_x + dx < 0 || hole_x + dx >= grid_w ||
-         hole_y + dy < 0 || hole_y + dy >= grid_h);
- if (grid_w > 1 && grid_h > 1)
-   last = (dir == 0 ? 2 : dir == 2 ? 0 : dir == 1 ? 3 : 1);
-
- switch (dir)
-   {
-   case 0: size = 1 + (random()%(grid_h - hole_y - 1)); h = size; w = 1; break;
-   case 1: size = 1 + (random()%hole_x);               w = size; h = 1; break;
-   case 2: size = 1 + (random()%hole_y);               h = size; w = 1; break;
-   case 3: size = 1 + (random()%(grid_w - hole_x - 1)); w = size; h = 1; break;
-   default: abort ();
-   }
-
- if (dx == -1) hole_x -= (size - 1);
- else if (dy == -1) hole_y -= (size - 1);
-
- ix = x = xoff + (hole_x + dx) * grid_size;
- iy = y = yoff + (hole_y + dy) * grid_size;
- inc = pix_inc;
- for (i = 0; i < grid_size; i += inc)
-   {
-     int fx, fy, tox, toy;
-     if (inc + i > grid_size)
-       inc = grid_size - i;
-     tox = x - dx * inc;
-     toy = y - dy * inc;
-
-     fx = (x < 0 ? 0 : x > max_width  ? max_width  : x);
-     fy = (y < 0 ? 0 : y > max_height ? max_height : y);
-     tox = (tox < 0 ? 0 : tox > max_width  ? max_width  : tox);
-     toy = (toy < 0 ? 0 : toy > max_height ? max_height : toy);
-
-     XCopyArea (dpy, window, window, gc,
-               fx, fy,
-               grid_size * w, grid_size * h,
-               tox, toy);
-
-     x -= dx * inc;
-     y -= dy * inc;
-     switch (dir)
-       {
-       case 0: XFillRectangle (dpy, window, gc,
-                              ix, y + grid_size * h, grid_size * w, iy - y);
-        break;
-       case 1: XFillRectangle (dpy, window, gc, ix, iy, x - ix, grid_size * h);
-        break;
-       case 2: XFillRectangle (dpy, window, gc, ix, iy, grid_size * w, y - iy);
-        break;
-       case 3: XFillRectangle (dpy, window, gc,
-                              x + grid_size * w, iy, ix - x, grid_size * h);
-        break;
-       }
-
-     XSync (dpy, False);
-     if (delay) usleep (delay);
-   }
- switch (dir)
-   {
-   case 0: hole_y += size; break;
-   case 1: hole_x--; break;
-   case 2: hole_y--; break;
-   case 3: hole_x += size; break;
-   }
-}
-
-\f
-char *progclass = "SlidePuzzle";
-
-char *defaults [] = {
-  "*dontClearRoot:             True",
-
-#ifdef __sgi   /* really, HAVE_READ_DISPLAY_EXTENSION */
-  "*visualID:                  Best",
-#endif
-
-  ".background:                        Black",
-  ".foreground:                        Gray",
-  "*gridSize:                  70",
-  "*pixelIncrement:            10",
-  "*internalBorderWidth:       4",
-  "*delay:                     50000",
-  "*delay2:                    1000000",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-grid-size",      ".gridSize",            XrmoptionSepArg, 0 },
-  { "-ibw",            ".internalBorderWidth", XrmoptionSepArg, 0 },
-  { "-increment",      ".pixelIncrement",      XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
-  { "-delay2",         ".delay2",              XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  init_slide (dpy, window);
-  while (1)
-    {
-      slide1 (dpy, window);
-      screenhack_handle_events (dpy);
-      if (delay2) usleep (delay2);
-    }
-}
diff --git a/hacks/slidescreen.man b/hacks/slidescreen.man
deleted file mode 100644 (file)
index a3e9d90..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-.TH XScreenSaver 1 "24-Nov-97" "X Version 11"
-.SH NAME
-slidescreen - permute the screen image like an 8-puzzle
-.SH SYNOPSIS
-.B slidescreen
-[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP] [\-grid-size \fIpixels\fP] [\-ibw \fIpixels\fP] [\-increment \fIpixels\fP] [\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP]
-.SH DESCRIPTION
-The \fIslidescreen\fP program takes an image of the screen, divides it into
-a grid, deletes a random square of that grid, and then randomly slides 
-one of the neighbors of this "hole" into the hole (and repeat.)
-.SH OPTIONS
-.I slidescreen
-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
-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 \-grid-size \fIpixels\fP
-The size of the grid cells.  Default 70 pixels.
-.TP 8
-.B \-ibw \fIpixels\fP
-The size of the "gutter" between grid cells.  Default 1 pixel.
-.TP 8
-.B \-increment \fIpixels\fP
-How many pixels by which a piece should be moved when sliding to a new 
-location.  Default 10 pixels.
-.TP 8
-.B \-delay \fImicroseconds\fP
-How much of a delay should be introduced between steps of the animation of
-the motion of each segment.  Default 50000, which is 0.05 seconds.  This
-is closely related to the \fI\-increment\fP parameter.
-.TP 8
-.B \-delay \fImicroseconds\fP
-How much of a delay should be introduced between the end of the motion of
-one segment and the beginning of the motion of another.  Default 1000000,
-which is one second.
-.SH RESOURCES
-On some systems (currently, only SGIs), this program can, instead of grabbing
-a desktop image, grab a frame of video from an external camera and manipulate
-that instead.  The following resources control that.
-.PP
-.TP 8
-.B grabVideoProbability \fR(Float)\fP
-What portion of the time to grab video rather than a screen image, 
-between 0.0 and 1.0.  Defaults to 0.5, or half the time.
-.TP 8
-.B videoDevice \fR(Integer)\fP
-The number of the default video input device to check first.  If unspecified, 
-the default camera (from videopanel(1)) will be checked first.  After that, all
-other available video input devices will be checked in order.  
-
-The first one which produces a non-black image will be used.  If all images
-are black, the others will be re-checked a few times before giving up and
-falling back to simply grabbing a desktop image (but note that this takes a
-few seconds, so if you don't actually have any video sources hooked up, you
-should consider turning off video grabbing by setting
-\fBgrabVideoProbability\fP to 0.0.)
-.TP 8
-.B videoGain \fR(Float)\fP
-The amount by which to brighten the grabbed image.  This defaults to 2.2.
-.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 1992 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 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>, 3-dec-92.
diff --git a/hacks/slip.c b/hacks/slip.c
deleted file mode 100644 (file)
index 395fea1..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * slip --- lots of blits.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)slip.c       4.00 97/01/01 xlockmore";
-#endif
-
-/* Copyright (c) 1992 by Scott Draves (spot@cs.cmu.edu)
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 12-May-97: jwz@jwz.org: turned into a standalone program.
- * 01-Dec-95: Patched for VMS <joukj@alpha.chem.uva.nl>.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Slip"
-# define HACK_INIT                                     init_slip
-# define HACK_DRAW                                     draw_slip
-# define slip_opts                                     xlockmore_opts
-# define DEFAULTS      "*count:                35    \n"                       \
-                                       "*cycles:               50    \n"                       \
-                                       "*delay:                50000 \n"                       \
-                                       "*ncolors:              200   \n"
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt slip_opts = {
-  0, NULL, 0, NULL, NULL };
-
-typedef struct {
-       int         width, height;
-       int         nblits_remaining;
-       int         blit_width, blit_height;
-       int         mode;
-       int         first_time;
-    int         backwards;
-} slipstruct;
-static slipstruct *slips = NULL;
-
-static short
-halfrandom(int mv)
-{
-       static short lasthalf = 0;
-       unsigned long r;
-
-       if (lasthalf) {
-               r = lasthalf;
-               lasthalf = 0;
-       } else {
-               r = LRAND();
-               lasthalf = r >> 16;
-       }
-       return r % mv;
-}
-
-static int
-erandom(int mv)
-{
-       static int  stage = 0;
-       static unsigned long r;
-       int         res;
-
-       if (0 == stage) {
-               r = LRAND();
-               stage = 7;
-       }
-       res = r & 0xf;
-       r = r >> 4;
-       stage--;
-       if (res & 8)
-               return res & mv;
-       else
-               return -(res & mv);
-}
-
-static void
-prepare_screen(ModeInfo * mi, slipstruct * s)
-{
-
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       int         i, n, w = s->width / 20;
-       int         not_solid = halfrandom(10);
-
-#ifdef STANDALONE                        /* jwz -- sometimes hack the desktop image! */
-       if (halfrandom(2) == 0)
-         {
-               grab_screen_image(DefaultScreenOfDisplay (MI_DISPLAY(mi)),
-                                                 MI_WINDOW(mi));
-               return;
-         }
-#endif
-
-       s->backwards = LRAND() & 1;             /* jwz: go the other way sometimes */
-
-       if (s->first_time || (0 == halfrandom(10))) {
-               XClearWindow(display, MI_WINDOW(mi));
-               n = 300;
-       } else {
-               if (halfrandom(5))
-                       return;
-               if (halfrandom(5))
-                       n = 100;
-               else
-                       n = 2000;
-       }
-
-       if (MI_NPIXELS(mi) > 2)
-               XSetForeground(display, gc, MI_PIXEL(mi, halfrandom(MI_NPIXELS(mi))));
-       else if (halfrandom(2))
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       else
-               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-
-       for (i = 0; i < n; i++) {
-         int ww = ((w/2) + halfrandom(w));
-               if (not_solid)
-                       if (MI_NPIXELS(mi) > 2)
-                               XSetForeground(display, gc, MI_PIXEL(mi, halfrandom(MI_NPIXELS(mi))));
-                       else if (halfrandom(2))
-                               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-                       else
-                               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-               XFillRectangle(display, MI_WINDOW(mi), gc,
-                              halfrandom(s->width - ww),
-                              halfrandom(s->height - ww),
-                              ww, ww);
-       }
-       s->first_time = 0;
-}
-
-static int
-quantize(double d)
-{
-       int         i = (int) floor(d);
-       double      f = d - i;
-
-       if ((LRAND() & 0xff) < f * 0xff)
-               i++;
-       return i;
-}
-
-void
-init_slip(ModeInfo * mi)
-{
-       slipstruct *sp;
-
-       if (slips == NULL) {
-               if ((slips = (slipstruct *) calloc(MI_NUM_SCREENS(mi),
-                                              sizeof (slipstruct))) == NULL)
-                       return;
-       }
-       sp = &slips[MI_SCREEN(mi)];
-
-       sp->width = MI_WIN_WIDTH(mi);
-       sp->height = MI_WIN_HEIGHT(mi);
-
-       sp->blit_width = sp->width / 25;
-       sp->blit_height = sp->height / 25;
-       sp->nblits_remaining = 0;
-       sp->mode = 0;
-       sp->first_time = 1;
-
-       /* no "NoExpose" events from XCopyArea wanted */
-       XSetGraphicsExposures(MI_DISPLAY(mi), MI_GC(mi), False);
-}
-
-void
-draw_slip(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       slipstruct *s = &slips[MI_SCREEN(mi)];
-       int         timer;
-
-       timer = MI_BATCHCOUNT(mi) * MI_CYCLES(mi);
-
-       while (timer--) {
-               int         xi = halfrandom(s->width - s->blit_width);
-               int         yi = halfrandom(s->height - s->blit_height);
-               double      x, y, dx = 0, dy = 0, t, s1, s2;
-
-               if (0 == s->nblits_remaining--) {
-                       static int lut[] =
-                       {0, 0, 0, 1, 1, 1, 2};
-
-                       prepare_screen(mi, s);
-                       s->nblits_remaining = MI_BATCHCOUNT(mi) *
-                               (2000 + halfrandom(1000) + halfrandom(1000));
-                       if (s->mode == 2)
-                               s->mode = halfrandom(2);
-                       else
-                               s->mode = lut[halfrandom(7)];
-               }
-               x = (2 * xi + s->blit_width) / (double) s->width - 1;
-               y = (2 * yi + s->blit_height) / (double) s->height - 1;
-
-               /* (x,y) is in biunit square */
-               switch (s->mode) {
-                       case 0:                                                         /* rotor */
-                               dx = x;
-                               dy = y;
-
-                               if (dy < 0) {
-                                       dy += 0.04;
-                                       if (dy > 0)
-                                               dy = 0.00;
-                               }
-                               if (dy > 0) {
-                                       dy -= 0.04;
-                                       if (dy < 0)
-                                               dy = 0.00;
-                               }
-                               t = dx * dx + dy * dy + 1e-10;
-                               s1 = 2 * dx * dx / t - 1;
-                               s2 = 2 * dx * dy / t;
-                               dx = s1 * 5;
-                               dy = s2 * 5;
-                               if (s->backwards) {     /* jwz: go the other way sometimes */
-                                       dx = -dx;
-                                       dy = -dy;
-                               }
-                               break;
-                       case 1:                                                         /* shuffle */
-                               dx = erandom(3);
-                               dy = erandom(3);
-                               break;
-                       case 2:                                                         /* explode */
-                               dx = x * 3;
-                               dy = y * 3;
-                               break;
-               }
-               {
-                       int         qx = xi + quantize(dx), qy = yi + quantize(dy);
-                       int         wrap;
-
-                       if (qx < 0 || qy < 0 ||
-                           qx >= s->width - s->blit_width ||
-                           qy >= s->height - s->blit_height)
-                               continue;
-
-                       XCopyArea(display, window, window, gc, xi, yi,
-                                 s->blit_width, s->blit_height,
-                                 qx, qy);
-
-                       switch (s->mode) {
-                               case 0:
-                                       /* wrap */
-                                       wrap = s->width - (2 * s->blit_width);
-                                       if (qx > wrap)
-                                               XCopyArea(display, window, window, gc, qx, qy,
-                                               s->blit_width, s->blit_height,
-                                                         qx - wrap, qy);
-
-                                       if (qx < 2 * s->blit_width)
-                                               XCopyArea(display, window, window, gc, qx, qy,
-                                               s->blit_width, s->blit_height,
-                                                         qx + wrap, qy);
-
-                                       wrap = s->height - (2 * s->blit_height);
-                                       if (qy > wrap)
-                                               XCopyArea(display, window, window, gc, qx, qy,
-                                               s->blit_width, s->blit_height,
-                                                         qx, qy - wrap);
-
-                                       if (qy < 2 * s->blit_height)
-                                               XCopyArea(display, window, window, gc, qx, qy,
-                                               s->blit_width, s->blit_height,
-                                                         qx, qy + wrap);
-                                       break;
-                               case 1:
-                               case 2:
-                                       break;
-                       }
-               }
-       }
-}
-
-void
-release_slip(ModeInfo * mi)
-{
-       if (slips != NULL) {
-               (void) free((void *) slips);
-               slips = NULL;
-       }
-}
diff --git a/hacks/slip.man b/hacks/slip.man
deleted file mode 100644 (file)
index d513654..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-.TH XScreenSaver 1 "24-Nov-97" "X Version 11"
-.SH NAME
-slip - sucks your screen into a jet engine
-.SH SYNOPSIS
-.B slip
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-iterations \fIinteger\fP] [\-points \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-delay2 \fImicroseconds\fP]
-.SH DESCRIPTION
-The \fIslip\fP program does lots of blits and chews up your screen image.
-.SH OPTIONS
-.I slip
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 128.
-The colors used cycle through the hue, making N stops around 
-the color wheel.
-.TP 8
-.B \-count \fIinteger\fP
-How many whooziwhatsis to generate.  Default 35.
-.TP 8
-.B \-cycles \fIinteger\fP
-How long to frobnicate.  Default 50.
-.TP 8
-.B \-delay \fImicroseconds\fP
-How long we should wait between drawing each step.  Default 50000,
-or about 1/20th second.
-
-.SH RESOURCES
-On some systems (currently, only SGIs), this program can, instead of grabbing
-a desktop image, grab a frame of video from an external camera and manipulate
-that instead.  The following resources control that.
-.PP
-.TP 8
-.B grabVideoProbability \fR(Float)\fP
-What portion of the time to grab video rather than a screen image, 
-between 0.0 and 1.0.  Defaults to 0.5, or half the time.
-.TP 8
-.B videoDevice \fR(Integer)\fP
-The number of the default video input device to check first.  If unspecified, 
-the default camera (from videopanel(1)) will be checked first.  After that, all
-other available video input devices will be checked in order.  
-
-The first one which produces a non-black image will be used.  If all images
-are black, the others will be re-checked a few times before giving up and
-falling back to simply grabbing a desktop image (but note that this takes a
-few seconds, so if you don't actually have any video sources hooked up, you
-should consider turning off video grabbing by setting
-\fBgrabVideoProbability\fP to 0.0.)
-.TP 8
-.B videoGain \fR(Float)\fP
-The amount by which to brighten the grabbed image.  This defaults to 2.2.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1992 by Scott Draves.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Scott Graves <spot@cs.cmu.edu>.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 18-Oct-93.
diff --git a/hacks/sonar.c b/hacks/sonar.c
deleted file mode 100644 (file)
index 5f6510c..0000000
+++ /dev/null
@@ -1,1720 +0,0 @@
-/* sonar.c --- Simulate a sonar screen.
- *
- * This is an implementation of a general purpose reporting tool in the
- * format of a Sonar display. It is designed such that a sensor is read
- * on every movement of a sweep arm and the results of that sensor are
- * displayed on the screen. The location of the display points (targets) on the
- * screen are determined by the current localtion of the sweep and a distance
- * value associated with the target. 
- *
- * Currently the only two sensors that are implemented are the simulator
- * (the default) and the ping sensor. The simulator randomly creates a set
- * of bogies that move around on the scope while the ping sensor can be
- * used to display hosts on your network.
- *
- * The ping code is only compiled in if you define HAVE_ICMP or HAVE_ICMPHDR,
- * because, unfortunately, different systems have different ways of creating
- * these sorts of packets.
- *
- * Also: creating an ICMP socket is a privileged operation, so the program
- * needs to be installed SUID root if you want to use the ping mode.  If you
- * check the code you will see that this privilige is given up immediately
- * after the socket is created.
- *
- * It should be easy to extend this code to support other sorts of sensors.
- * Some ideas:
- *   - search the output of "netstat" for the list of hosts to ping;
- *   - plot the contents of /proc/interrupts;
- *   - plot the process table, by process size, cpu usage, or total time;
- *   - plot the logged on users by idle time or cpu usage.
- *
- * Copyright (C) 1998 by Stephen Martin (smartin@canada.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.
- *
- * $Revision: 1.9 $
- *
- * Version 1.0 April 27, 1998.
- * - Initial version
- * - Submitted to RedHat Screensaver Contest
- * 
- * Version 1.1 November 3, 1998.
- * - Added simulation mode.
- * - Added enhancements by Thomas Bahls <thommy@cs.tu-berlin.de>
- * - Fixed huge memory leak.
- * - Submitted to xscreensavers
- * 
- * Version 1.2
- * - All ping code is now ifdef-ed by the compile time symbol HAVE_PING;
- *   use -DHAVE_PING to include it when you compile.
- * - Sweep now uses gradients.
- * - Fixed portability problems with icmphdr on some systems.
- * - removed lowColor option/resource.
- * - changed copyright notice so that it could be included in the xscreensavers
- *   collection.
- *
- * Version 1.3 November 16, 1998.
- * - All ping code is now ifdef-ed by the compile time symbol PING use -DPING
- *   to include it when you compile.
- * - Sweep now uses gradients.
- * - Fixed portability problems with icmphdr on some systems.
- * - removed lowcolour option/resource.
- * - changed copyright notice so that it could be included in the xscreensavers
- *   collection.
- *
- * Version 1.4 November 18, 1998.
- * - More ping portability fixes.
- *
- * Version 1.5 November 19, 1998.
- * - Synced up with jwz's changes.
- * - Now need to define HAVE_PING to compile in the ping stuff.
- */
-
-/* These are computed by configure now:
-   #define HAVE_ICMP
-   #define HAVE_ICMPHDR
- */
-
-
-/* Include Files */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-
-#include "screenhack.h"
-#include "colors.h"
-#include "hsv.h"
-
-#if defined(HAVE_ICMP) || defined(HAVE_ICMPHDR)
-# include <unistd.h>
-# include <limits.h>
-# include <signal.h>
-# include <fcntl.h>
-# include <sys/types.h>
-# include <sys/time.h>
-# include <sys/ipc.h>
-# include <sys/shm.h>
-# include <sys/socket.h>
-# include <netinet/in_systm.h>
-# include <netinet/in.h>
-# include <netinet/ip.h>
-# include <netinet/ip_icmp.h>
-# include <netinet/udp.h>
-# include <arpa/inet.h>
-# include <netdb.h>
-#endif /* HAVE_ICMP || HAVE_ICMPHDR */
-
-
-/* Defines */
-
-#undef MY_MIN
-#define MY_MIN(a,b) ((a)<(b)?(a - 50):(b - 10))
-
-/* Frigging icmp */
-
-#if defined(HAVE_ICMP)
-# define HAVE_PING
-# define ICMP             icmp
-# define ICMP_TYPE(p)     (p)->icmp_type
-# define ICMP_CODE(p)     (p)->icmp_code
-# define ICMP_CHECKSUM(p) (p)->icmp_cksum
-# define ICMP_ID(p)       (p)->icmp_id
-# define ICMP_SEQ(p)      (p)->icmp_seq
-#elif defined(HAVE_ICMPHDR)
-# define HAVE_PING
-# define ICMP             icmphdr
-# define ICMP_TYPE(p)     (p)->type
-# define ICMP_CODE(p)     (p)->code
-# define ICMP_CHECKSUM(p) (p)->checksum
-# define ICMP_ID(p)       (p)->un.echo.id
-# define ICMP_SEQ(p)      (p)->un.echo.sequence
-#else
-# undef HAVE_PING
-#endif
-
-/* Forward References */
-
-#ifdef HAVE_PING
-static u_short checksum(u_short *, int);
-#endif
-static long delta(struct timeval *, struct timeval *);
-
-/* Data Structures */
-
-/*
- * The Bogie.
- *
- * This represents an object that is visable on the scope.
- */
-
-typedef struct Bogie {
-    char *name;                        /* The name of the thing being displayed */
-    int distance;              /* The distance to this thing (0 - 100) */
-    int tick;                  /* The tick that it was found on */
-    int ttl;                   /* The time to live */
-    int age;                    /* How long it's been around */
-    struct Bogie *next;                /* The next one in the list */
-} Bogie;
-
-/*
- * Sonar Information.
- *
- * This contains all of the runtime information about the sonar scope.
- */
-
-typedef struct {
-    Display *dpy;              /* The X display */
-    Window win;                        /* The window */
-    GC hi,                     /* The leading edge of the sweep */
-       lo,                     /* The trailing part of the sweep */
-       erase,                  /* Used to erase things */
-       grid,                   /* Used to draw the grid */
-       text;                   /* Used to draw text */
-    Colormap cmap;             /* The colormap */
-    XFontStruct *font;          /* The font to use for the labels */
-    int text_steps;            /* How many steps to fade text. */
-    XColor *text_colors;       /* Pixel values used to fade text */
-    int sweep_degrees;         /* How much of the circle the sweep uses */
-    int sweep_segs;            /* How many gradients in the sweep. */
-    XColor *sweep_colors;        /* The sweep pixel values */
-    int width, height;         /* Window dimensions */
-    int minx, miny, maxx, maxy, /* Bounds of the scope */
-       centrex, centrey, radius; /* Parts of the scope circle */
-    Bogie *visable;            /* List of visable objects */
-    int current;               /* Current position of sweep */
-
-    int delay;                 /* how long between each frame of the anim */
-
-} sonar_info;
-
-/* 
- * Variables to support the differnt Sonar modes.
- */
-
-Bogie *(*sensor)(sonar_info *, void *);        /* The current sensor */
-void *sensor_info;                     /* Information about the sensor */
-
-/*
- * A list of targets to ping.
- */
-
-#ifdef HAVE_PING
-typedef struct ping_target {
-    char *name;                        /* The name of the target */
-    struct sockaddr address;   /* The address of the target */
-    struct ping_target *next;  /* The next one in the list */
-} ping_target;
-
-/*
- * Ping Information.
- *
- * This contains the information for the ping sensor.
- */
-
-typedef struct {
-    int icmpsock;              /* Socket for sending pings */
-    int pid;                   /* Our process ID */
-    int seq;                   /* Packet sequence number */
-    int timeout;               /* Timeout value for pings */
-    ping_target *targets;      /* List of targets to ping */
-    int numtargets;             /* The number of targets to ping */
-} ping_info;
-
-/* Flag to indicate that the timer has expired on us */
-
-static int timer_expired;
-
-
-#endif /* HAVE_PING */
-
-/*
- * A list of targets for the simulator
- */
-
-typedef struct sim_target {
-    char *name;                        /* The name of the target */
-    int nexttick;              /* The next tick that this will be seen */
-    int nextdist;              /* The distance on that tick */
-    int movedlasttick;         /* Flag to indicate we just moved this one */
-} sim_target;
-
-/*
- * Simulator Information.
- *
- * This contains the information for the simulator mode.
- */
-
-typedef struct {
-    sim_target *teamA;         /* The bogies for the A team */
-    int numA;                  /* The number of bogies in team A */
-    char *teamAID;             /* The identifier for bogies in team A */
-    sim_target *teamB;         /* The bogies for the B team */
-    int numB;                  /* The number of bogies in team B */
-    char *teamBID;             /* The identifier for bogies in team B */
-} sim_info;
-
-/* Name of the Screensaver hack */
-
-char *progclass="sonar";
-
-/* Application Defaults */
-
-char *defaults [] = {
-    ".background:      #000000",
-    ".sweepColor:      #00FF00",
-    "*delay:          100000",
-    "*scopeColor:      #003300",
-    "*gridColor:       #00AA00",
-    "*textColor:       #FFFF00",
-    "*ttl:             90",
-    "*mode:            default",
-    "*font:            fixed",
-    "*sweepDegrees:    30",
-
-    "*textSteps:       80",    /* npixels */
-    "*sweepSegments:   80",    /* npixels */
-
-#ifdef HAVE_PING
-    "*pingTimeout:     3000",
-    "*pingSource:      file",
-    "*pingFile:        /etc/hosts",
-    "*pingList:        localhost",
-#endif /* HAVE_PING */
-    "*teamAName:       F18",
-    "*teamBName:       MIG",
-    "*teamACount:      4",
-    "*teamBCount:      4",
-    0
-};
-
-/* Options passed to this program */
-
-XrmOptionDescRec options [] = {
-    {"-background",   ".background",   XrmoptionSepArg, 0 },
-    {"-sweep-color",  ".sweepColor",   XrmoptionSepArg, 0 },
-    {"-scope-color",  ".scopeColor",   XrmoptionSepArg, 0 },
-    {"-grid-color",   ".gridColor",    XrmoptionSepArg, 0 },
-    {"-text-color",   ".textColor",    XrmoptionSepArg, 0 },
-    {"-ttl",          ".ttl",          XrmoptionSepArg, 0 },
-    {"-mode",         ".mode",         XrmoptionSepArg, 0 },
-    {"-font",         ".font",         XrmoptionSepArg, 0 },
-#ifdef HAVE_PING
-    {"-ping-timeout", ".pingTimeout",  XrmoptionSepArg, 0 },
-    {"-ping-source",  ".pingSource",   XrmoptionSepArg, 0 },
-    {"-ping-file",    ".pingFile",     XrmoptionSepArg, 0 },
-    {"-ping-list",    ".pingList",     XrmoptionSepArg, 0 },
-#endif /* HAVE_PING */
-    {"-team-a-name",   ".teamAName",   XrmoptionSepArg, 0 },
-    {"-team-b-name",   ".teamBName",   XrmoptionSepArg, 0 },
-    {"-team-a-count",  ".teamACount",  XrmoptionSepArg, 0 },
-    {"-team-b-count",  ".teamBCount",  XrmoptionSepArg, 0 },
-    { 0, 0, 0, 0 }
-};
-
-/*
- * The number of ticks that bogies are visable on the screen before they
- * fade away.
- */
-
-static int TTL;
-
-/*
- * Create a new Bogie and set some initial values.
- *
- * Args:
- *    name     - The name of the bogie.
- *    distance - The distance value.
- *    tick     - The tick value.
- *    ttl      - The time to live value.
- *
- * Returns:
- *    The newly allocated bogie or null if a memory problem occured.
- */
-
-static Bogie *
-newBogie(char *name, int distance, int tick, int ttl) 
-{
-
-    /* Local Variables */
-
-    Bogie *new;
-
-    /* Allocate a bogie and initialize it */
-
-    if ((new = (Bogie *) calloc(1, sizeof(Bogie))) == NULL) {
-       fprintf(stderr, "%s: Out of Memory\n", progname);
-       return NULL;
-    }
-    new->name = name;
-    new->distance = distance;
-    new->tick = tick;
-    new->ttl = ttl;
-    new->age = 0;
-    new->next = (Bogie *) 0;
-    return new;
-}
-
-/*
- * Free a Bogie.
- *
- * Args:
- *    b - The bogie to free.
- */
-
-static void
-freeBogie(Bogie *b) 
-{
-    if (b->name != (char *) 0)
-       free(b->name);
-    free(b);
-}
-
-/*
- * Find a bogie by name in a list.
- *
- * This does a simple linear search of the list for a given name.
- *
- * Args:
- *    bl   - The Bogie list to search.
- *    name - The name to look for.
- *
- * Returns:
- *    The requested Bogie or null if it wasn't found.
- */
-
-static Bogie *
-findNode(Bogie *bl, char *name) 
-{
-
-    /* Local Variables */
-
-    Bogie *p;
-
-    /* Abort if the list is empty or no name is given */
-
-    if ((name == NULL) || (bl == NULL))
-       return NULL;
-
-    /* Search the list for the desired name */
-
-    p = bl;
-    while (p != NULL) {
-       if (strcmp(p->name, name) == 0)
-           return p;
-       p = p->next;
-    }
-
-    /* Not found */
-
-    return NULL;
-}
-
-#ifdef HAVE_PING
-
-/*
- * Lookup the address for a ping target;
- *
- * Args:
- *    target - The ping_target fill in the address for.
- *
- * Returns:
- *    1 if the host was successfully resolved, 0 otherwise.
- */
-
-static int
-lookupHost(ping_target *target) 
-{
-
-    /* Local Variables */
-
-    struct sockaddr_in *iaddr;
-
-    /* Set up the target address we first assume that the name is the
-       IP address as a string */
-
-    iaddr = (struct sockaddr_in *) &(target->address);
-    iaddr->sin_family = AF_INET;
-    if ((iaddr->sin_addr.s_addr = inet_addr(target->name)) == -1) {
-
-       /* Conversion of IP address failed, try to look the host up by name */
-
-       struct hostent *hent = gethostbyname(target->name);
-       if (hent == NULL) {
-           fprintf(stderr, "%s: could not resolve host %s\n",
-                    progname, target->name);
-           return 0;
-       }
-       memcpy(&iaddr->sin_addr, hent->h_addr_list[0],
-              sizeof(iaddr->sin_addr));
-    }
-
-    /* Done */
-
-    return 1;
-}
-
-/*
- * Create a target for a host.
- *
- * Args:
- *    name - The name of the host.
- *
- * Returns:
- *    A newly allocated target or null if the host could not be resolved.
- */
-
-static ping_target *
-newHost(char *name) 
-{
-
-    /* Local Variables */
-
-    ping_target *target = NULL;
-
-    /* Create the target */
-
-    if ((target = calloc(1, sizeof(ping_target))) == NULL) {
-       fprintf(stderr, "%s: Out of Memory\n", progname);
-       goto target_init_error;
-    }
-    if ((target->name = strdup(name)) == NULL) {
-       fprintf(stderr, "%s: Out of Memory\n", progname);
-       goto target_init_error;
-    }
-
-    /* Lookup the host */
-
-    if (! lookupHost(target))
-       goto target_init_error;
-
-    /* Done */
-
-    return target;
-
-    /* Handle errors here */
-
-target_init_error:
-    if (target != NULL)
-       free(target);
-    return NULL;
-}
-
-/*
- * Generate a list of ping targets from the entries in a file.
- *
- * Args:
- *    fname - The name of the file. This file is expected to be in the same
- *            format as /etc/hosts.
- *
- * Returns:
- *    A list of targets to ping or null if an error occured.
- */
-
-static ping_target *
-readPingHostsFile(char *fname) 
-{
-
-    /* Local Variables */
-
-    FILE *fp;
-    char buf[LINE_MAX];
-    char *p;
-    ping_target *list = NULL;
-    char *addr, *name;
-    ping_target *new;
-
-    /* Make sure we in fact have a file to process */
-
-    if ((fname == NULL) || (fname[0] == '\0')) {
-       fprintf(stderr, "%s: invalid ping host file name\n", progname);
-       return NULL;
-    }
-
-    /* Open the file */
-
-    if ((fp = fopen(fname, "r")) == NULL) {
-       char msg[1024];
-       sprintf(msg, "%s: unable to open host file %s", progname, fname);
-       perror(msg);
-       return NULL;
-    }
-
-    /* Read the file line by line */
-
-    while ((p = fgets(buf, LINE_MAX, fp)) != NULL) {
-
-       /*
-        * Parse the line skipping those that start with '#'.
-        * The rest of the lines in the file should be in the same
-        * format as a /etc/hosts file. We are only concerned with
-        * the first two field, the IP address and the name
-        */
-
-       while ((*p == ' ') || (*p == '\t'))
-           p++;
-       if (*p == '#')
-           continue;
-
-       /* Get the name and address */
-
-       name = addr = NULL;
-       if ((addr = strtok(buf, " \t\n")) != NULL)
-           name = strtok(NULL, " \t\n");
-       else
-           continue;
-
-       /* Create a new target using first the name then the address */
-
-       new = NULL;
-       if (name != NULL)
-           new = newHost(name);
-       if (new == NULL)
-           new = newHost(addr);
-
-       /* Add it to the list if we got one */
-
-       if (new != NULL) {
-           new->next = list;
-           list = new;
-       }
-    }
-
-    /* Close the file and return the list */
-
-    fclose(fp);
-    return list;
-}
-
-/*
- * Generate a list of ping targets from the entries in a string.
- *
- * Args:
- *    list - A list of comma separated host names.
- *
- * Returns:
- *    A list of targets to ping or null if an error occured.
- */
-
-static ping_target *
-readPingHostsList(char *list) 
-{
-
-    /* Local Variables */
-
-    char *host;
-    ping_target *hostlist = NULL;
-    ping_target *new;
-
-    /* Check that there is a list */
-
-    if ((list == NULL) || (list[0] == '\0'))
-       return NULL;
-
-    /* Loop through the hosts and add them to the list to return */
-
-    host = strtok(list, ",");
-    while (host != NULL) {
-       new = newHost(host);
-       if (new != NULL) {
-           new->next = hostlist;
-           hostlist = new;
-       }
-       host = strtok(NULL, ",");
-    }
-
-    /* Done */
-
-    return hostlist;
-}
-
-/*
- * Generate a list ping targets consisting of all of the entries on
- * the same subnet.
- *
- * Returns:
- *    A list of all of the hosts on this net.
- */
-
-static ping_target *
-subnetHostsList(void) 
-{
-
-    /* Local Variables */
-
-    char hostname[BUFSIZ];
-    char address[BUFSIZ];
-    struct hostent *hent;
-    char *p;
-    int i;
-    ping_target *new;
-    ping_target *list = NULL;
-
-    /* Get our hostname */
-
-    if (gethostname(hostname, BUFSIZ)) {
-       fprintf(stderr, "%s: unable to get local hostname\n", progname);
-       return NULL;
-    }
-
-    /* Get our IP address and convert it to a string */
-
-    if ((hent = gethostbyname(hostname)) == NULL) {
-       fprintf(stderr, "%s: unable to lookup our IP address\n", progname);
-       return NULL;
-    }
-    strcpy(address, inet_ntoa(*((struct in_addr *)hent->h_addr_list[0])));
-
-    /* Get a pointer to the last "." in the string */
-
-    if ((p = strrchr(address, '.')) == NULL) {
-       fprintf(stderr, "%s: can't parse IP address %s\n", progname, address);
-       return NULL;
-    }
-    p++;
-
-    /* Construct targets for all addresses in this subnet */
-
-    for (i = 254; i > 0; i--) {
-       sprintf(p, "%d", i);
-       new = newHost(address);
-       if (new != NULL) {
-           new->next = list;
-           list = new;
-       }
-    }
-  
-    /* Done */
-
-    return list;
-}
-
-/*
- * Initialize the ping sensor.
- *
- * Returns:
- *    A newly allocated ping_info structure or null if an error occured.
- */
-
-static ping_info *
-init_ping(void) 
-{
-
-    /* Local Variables */
-
-    ping_info *pi = NULL;              /* The new ping_info struct */
-    char *src;                         /* The source of the ping hosts */
-    ping_target *pt;                   /* Used to count the targets */
-
-    /* Create the ping info structure */
-
-    if ((pi = (ping_info *) calloc(1, sizeof(ping_info))) == NULL) {
-       fprintf(stderr, "%s: Out of memory\n", progname);
-       goto ping_init_error;
-    }
-
-    /* Create the ICMP socket and turn off SUID */
-
-    if ((pi->icmpsock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) < 0) {
-       char msg[1024];
-       sprintf(msg, "%s: can't create ICMP socket", progname);
-       perror(msg);
-       fprintf(stderr,
-         "%s: this program must be setuid to root for `ping mode' to work.\n",
-                progname);
-       goto ping_init_error;
-    }
-    setuid(getuid());
-    pi->pid = getpid() & 0xFFFF;
-    pi->seq = 0;
-    pi->timeout = get_integer_resource("pingTimeout", "PingTimeout");
-
-    /* Generate a list of targets */
-
-    src = get_string_resource("pingSource", "PingSource");
-    if (strcmp(src, "file") == 0) {
-
-       /*
-         * The list of ping targets is to come from a file in
-        * /etc/hosts format
-        */
-
-       pi->targets = readPingHostsFile(get_string_resource("pingFile",
-                                                           "PingFile"));
-
-    } else if (strcmp(src, "list") == 0) {
-
-       /* The list of hosts is to come from the pinghostlist resource */
-
-       pi->targets = readPingHostsList(get_string_resource("pingList",
-                                                           "PingList"));
-
-    } else if (strcmp(src, "subnet") == 0) {
-
-       pi->targets = subnetHostsList();
-
-    } else {
-
-       /* Unknown source */
-
-       fprintf(stderr, "%s: illegal pingSource: %s\n", progname, src);
-       goto ping_init_error;
-    }
-
-    /* Make sure there is something to ping */
-
-    if (pi->targets == NULL) {
-       fprintf(stderr, "%s: nothing to ping", progname);
-       goto ping_init_error;
-    }
-
-    /* Count the targets */
-
-    pt = pi->targets;
-    pi->numtargets = 0;
-    while (pt != NULL) {
-       pi->numtargets++;
-       pt = pt->next;
-    }
-
-    /* Done */
-
-    return pi;
-
-    /* Handle initialization errors here */
-
-ping_init_error:
-    if (pi != NULL)
-       free(pi);
-    return NULL;
-}
-
-/*
- * Ping a host.
- *
- * Args:
- *    pi   - The ping information strcuture.
- *    host - The name or IP address of the host to ping (in ascii).
- */
-
-static void
-sendping(ping_info *pi, ping_target *pt) 
-{
-
-    /* Local Variables */
-
-    u_char *packet;
-    struct ICMP *icmph;
-    int result;
-
-    /*
-     * Note, we will send the character name of the host that we are
-     * pinging in the packet so that we don't have to keep track of the
-     * name or do an address lookup when it comes back.
-     */
-
-    int pcktsiz = sizeof(struct ICMP) + sizeof(struct timeval) +
-       strlen(pt->name) + 1;
-
-    /* Create the ICMP packet */
-
-    if ((packet = (u_char *) malloc(pcktsiz)) == (void *) 0)
-       return;  /* Out of memory */
-    icmph = (struct ICMP *) packet;
-    ICMP_TYPE(icmph) = ICMP_ECHO;
-    ICMP_CODE(icmph) = 0;
-    ICMP_CHECKSUM(icmph) = 0;
-    ICMP_ID(icmph) = pi->pid;
-    ICMP_SEQ(icmph) = pi->seq++;
-    gettimeofday((struct timeval *) &packet[sizeof(struct ICMP)],
-                (struct timezone *) 0);
-    strcpy((char *) &packet[sizeof(struct ICMP) + sizeof(struct timeval)],
-          pt->name);
-    ICMP_CHECKSUM(icmph) = checksum((u_short *)packet, pcktsiz);
-
-    /* Send it */
-
-    if ((result = sendto(pi->icmpsock, packet, pcktsiz, 0, 
-                        &pt->address, sizeof(pt->address))) !=  pcktsiz) {
-#if 0
-        char errbuf[BUFSIZ];
-        sprintf(errbuf, "%s: error sending ping to %s", progname, pt->name);
-       perror(errbuf);
-#endif
-    }
-}
-
-/*
- * Catch a signal and do nothing.
- *
- * Args:
- *    sig - The signal that was caught.
- */
-
-static void
-sigcatcher(int sig)
-{
-    timer_expired = 1;
-}
-
-/*
- * Compute the checksum on a ping packet.
- *
- * Args:
- *    packet - A pointer to the packet to compute the checksum for.
- *    size   - The size of the packet.
- *
- * Returns:
- *    The computed checksum
- *    
- */
-
-static u_short
-checksum(u_short *packet, int size) 
-{
-
-    /* Local Variables */
-
-    register int nleft = size;
-    register u_short *w = packet;
-    register int sum = 0;
-    u_short answer = 0;
-
-    /*
-     * Our algorithm is simple, using a 32 bit accumulator (sum), we add
-     * sequential 16 bit words to it, and at the end, fold back all the
-     * carry bits from the top 16 bits into the lower 16 bits.
-     */
-
-    while (nleft > 1)  {
-       sum += *w++;
-       nleft -= 2;
-    }
-
-    /* mop up an odd byte, if necessary */
-
-    if (nleft == 1) {
-       *(u_char *)(&answer) = *(u_char *)w ;
-        *(1 + (u_char *)(&answer)) = 0;
-       sum += answer;
-    }
-
-    /* add back carry outs from top 16 bits to low 16 bits */
-
-    sum = (sum >> 16) + (sum & 0xffff);     /* add hi 16 to low 16 */
-    sum += (sum >> 16);                     /* add carry */
-    answer = ~sum;                          /* truncate to 16 bits */
-
-    /* Done */
-
-    return(answer);
-}
-
-/*
- * Look for ping replies.
- *
- * Retrieve all outstanding ping replies.
- *
- * Args:
- *    si - Information about the sonar.
- *    pi - Ping information.
- *    ttl - The time each bogie is to live on the screen
- *
- * Returns:
- *    A Bogie list of all the machines that replied.
- */
-
-static Bogie *
-getping(sonar_info *si, ping_info *pi, int ttl) 
-{
-
-    /* Local Variables */
-
-    struct sockaddr from;
-    int fromlen;
-    int result;
-    u_char packet[1024];
-    struct timeval now;
-    struct timeval *then;
-    struct ip *ip;
-    int iphdrlen;
-    struct ICMP *icmph;
-    Bogie *bl = NULL;
-    Bogie *new;
-    char *name;
-    struct sigaction sa;
-    struct itimerval it;
-
-    /* Set up a signal to interupt our wait for a packet */
-
-    sigemptyset(&sa.sa_mask);
-    sa.sa_flags = 0;
-    sa.sa_handler = sigcatcher;
-    if (sigaction(SIGALRM, &sa, 0) == -1) {
-       char msg[1024];
-       sprintf(msg, "%s: unable to trap SIGALRM", progname);
-       perror(msg);
-       exit(1);
-    }
-
-    /* Set up a timer to interupt us if we don't get a packet */
-
-    it.it_interval.tv_sec = 0;
-    it.it_interval.tv_usec = 0;
-    it.it_value.tv_sec = 0;
-    it.it_value.tv_usec = pi->timeout;
-    timer_expired = 0;
-    setitimer(ITIMER_REAL, &it, NULL);
-
-    /* Wait for a result packet */
-
-    fromlen = sizeof(from);
-    while (! timer_expired &&
-          (result = recvfrom(pi->icmpsock, packet, sizeof(packet),
-                             0, &from, &fromlen)) > 0) {
-
-       /* Check the packet */
-
-       gettimeofday(&now, (struct timezone *) 0);
-       ip = (struct ip *) packet;
-       iphdrlen = ip->ip_hl << 2;
-       icmph = (struct ICMP *) &packet[iphdrlen];
-
-       /* Was the packet a reply?? */
-
-       if (ICMP_TYPE(icmph) != ICMP_ECHOREPLY) {
-           /* Ignore anything but ICMP Replies */
-           continue; /* Nope */
-       }
-
-       /* Was it for us? */
-
-       if (ICMP_ID(icmph) != pi->pid) {
-           /* Ignore packets not set from us */
-           continue; /* Nope */
-       }
-
-       /* Copy the name of the bogie */
-
-       if ((name =
-            strdup((char *) &packet[iphdrlen + 
-                                   + sizeof(struct ICMP)
-                                   + sizeof(struct timeval)])) == NULL) {
-           fprintf(stderr, "%s: Out of memory\n", progname);
-           return bl;
-       }
-
-        /* If the name is an IP addr, try to resolve it. */
-        {
-          int iip[4];
-          char c;
-          if (4 == sscanf(name, " %d.%d.%d.%d %c",
-                          &iip[0], &iip[1], &iip[2], &iip[3], &c))
-            {
-              unsigned char ip[4];
-              struct hostent *h;
-              ip[0] = iip[0]; ip[1] = iip[1]; ip[2] = iip[2]; ip[3] = iip[3];
-              h = gethostbyaddr ((char *) ip, 4, AF_INET);
-              if (h && h->h_name && *h->h_name)
-                {
-                  free (name);
-                  name = strdup (h->h_name);
-                }
-            }
-        }
-
-       /* Create the new Bogie and add it to the list we are building */
-
-       if ((new = newBogie(name, 0, si->current, ttl)) == NULL)
-           return bl;
-       new->next = bl;
-       bl = new;
-
-       /* Compute the round trip time */
-
-       then =  (struct timeval *) &packet[iphdrlen +
-                                         sizeof(struct ICMP)];
-       new->distance = delta(then, &now) / 100;
-       if (new->distance == 0)
-               new->distance = 2; /* HACK */
-    }
-
-    /* Done */
-
-    return bl;
-}
-
-/*
- * Ping hosts.
- *
- * Args:
- *    si - Sonar Information.
- *    pi - Ping Information.
- *
- * Returns:
- *    A list of hosts that replied to pings or null if there were none.
- */
-
-static Bogie *
-ping(sonar_info *si, void *vpi) 
-{
-
-    ping_info *pi = (ping_info *) vpi;
-    static ping_target *ptr = NULL;
-
-    int tick = si->current * -1 + 1;
-    if ((ptr == NULL) && (tick == 1))
-       ptr = pi->targets;
-
-    if (pi->numtargets <= 90) {
-       int xdrant = 90 / pi->numtargets;
-       if ((tick % xdrant) == 0) {
-           if (ptr != (ping_target *) 0) {
-               sendping(pi, ptr);
-               ptr = ptr->next;
-           }
-       }
-
-    } else if (pi->numtargets > 90) {
-       if (ptr != (ping_target *) 0) {
-           sendping(pi, ptr);
-           ptr = ptr->next;
-       }
-    }
-
-    /* Get the results */
-
-    return getping(si, pi, TTL);
-}
-
-#endif /* HAVE_PING */
-
-/*
- * Calculate the difference between two timevals in microseconds.
- *
- * Args:
- *    then - The older timeval.
- *    now  - The newer timeval.
- *
- * Returns:
- *   The difference between the two in microseconds.
- */
-
-static long
-delta(struct timeval *then, struct timeval *now) 
-{
-    return (((now->tv_sec - then->tv_sec) * 1000000) + 
-              (now->tv_usec - then->tv_usec));  
-}
-
-/*
- * Initialize the simulation mode.
- */
-
-static sim_info *
-init_sim(void) 
-{
-
-    /* Local Variables */
-
-    sim_info *si;
-    int i;
-
-    /* Create the simulation info structure */
-
-    if ((si = (sim_info *) calloc(1, sizeof(sim_info))) == NULL) {
-       fprintf(stderr, "%s: Out of memory\n", progname);
-       return NULL;
-    }
-
-    /* Team A */
-
-    si->numA = get_integer_resource("teamACount", "TeamACount");
-    if ((si->teamA = (sim_target *)calloc(si->numA, sizeof(sim_target)))
-       == NULL) {
-       free(si);
-       fprintf(stderr, "%s: Out of Memory\n", progname);
-       return NULL;
-    }
-    si->teamAID = get_string_resource("teamAName", "TeamAName");
-    for (i = 0; i < si->numA; i++) {
-       if ((si->teamA[i].name = (char *) malloc(strlen(si->teamAID) + 4))
-           == NULL) {
-           free(si);
-           fprintf(stderr, "%s: Out of Memory\n", progname);
-           return NULL;
-       }
-       sprintf(si->teamA[i].name, "%s%03d", si->teamAID, i+1);
-       si->teamA[i].nexttick = (int) (90.0 * random() / RAND_MAX);
-       si->teamA[i].nextdist = (int) (100.0 * random() / RAND_MAX);
-    }
-
-    /* Team B */
-
-    si->numB = get_integer_resource("teamBCount", "TeamBCount");
-    if ((si->teamB = (sim_target *)calloc(si->numB, sizeof(sim_target)))
-       == NULL) {
-       free(si);
-       fprintf(stderr, "%s: Out of Memory\n", progname);
-       return NULL;
-    }
-    si->teamBID = get_string_resource("teamBName", "TeamBName");
-    for (i = 0; i < si->numB; i++) {
-       if ((si->teamB[i].name = (char *) malloc(strlen(si->teamBID) + 4))
-           == NULL) {
-           free(si);
-           fprintf(stderr, "%s: Out of Memory\n", progname);
-           return NULL;
-       }
-       sprintf(si->teamB[i].name, "%s%03d", si->teamBID, i+1);
-       si->teamB[i].nexttick = (int) (90.0 * random() / RAND_MAX);
-       si->teamB[i].nextdist = (int) (100.0 * random() / RAND_MAX);
-    }
-
-    /* Done */
-
-    return si;
-}
-
-/*
- * Initialize the Sonar.
- *
- * Args:
- *    dpy - The X display.
- *    win - The X window;
- *
- * Returns:
- *   A sonar_info strcuture or null if memory allocation problems occur.
- */
-
-static sonar_info *
-init_sonar(Display *dpy, Window win) 
-{
-
-    /* Local Variables */
-
-    XGCValues gcv;
-    XWindowAttributes xwa;
-    sonar_info *si;
-    XColor start, end;
-    int h1, h2;
-    double s1, s2, v1, v2;
-
-    /* Create the Sonar information structure */
-
-    if ((si = (sonar_info *) calloc(1, sizeof(sonar_info))) == NULL) {
-       fprintf(stderr, "%s: Out of memory\n", progname);
-       return NULL;
-    }
-
-    /* Initialize the structure for the current environment */
-
-    si->dpy = dpy;
-    si->win = win;
-    si->visable = NULL;
-    XGetWindowAttributes(dpy, win, &xwa);
-    si->cmap = xwa.colormap;
-    si->width = xwa.width;
-    si->height = xwa.height;
-    si->centrex = si->width / 2;
-    si->centrey = si->height / 2;
-    si->maxx = si->centrex + MY_MIN(si->centrex, si->centrey) - 10;
-    si->minx = si->centrex - MY_MIN(si->centrex, si->centrey) + 10;
-    si->maxy = si->centrey + MY_MIN(si->centrex, si->centrey) - 10;
-    si->miny = si->centrey - MY_MIN(si->centrex, si->centrey) + 10;
-    si->radius = si->maxx - si->centrex;
-    si->current = 0;
-
-    /* Get the font */
-
-    if (((si->font = XLoadQueryFont(dpy, get_string_resource ("font", "Font")))
-        == NULL) &&
-       ((si->font = XLoadQueryFont(dpy, "fixed")) == NULL)) {
-       fprintf(stderr, "%s: can't load an appropriate font\n", progname);
-       return NULL;
-    }
-
-    /* Get the delay between animation frames */
-
-    si->delay = get_integer_resource ("delay", "Integer");
-    if (si->delay < 0) si->delay = 0;
-
-    /* Create the Graphics Contexts that will be used to draw things */
-
-    gcv.foreground = 
-       get_pixel_resource ("sweepColor", "SweepColor", dpy, si->cmap);
-    si->hi = XCreateGC(dpy, win, GCForeground, &gcv);
-    gcv.font = si->font->fid;
-    si->text = XCreateGC(dpy, win, GCForeground|GCFont, &gcv);
-    gcv.foreground = get_pixel_resource("scopeColor", "ScopeColor",
-                                       dpy, si->cmap);
-    si->erase = XCreateGC (dpy, win, GCForeground, &gcv);
-    gcv.foreground = get_pixel_resource("gridColor", "GridColor",
-                                       dpy, si->cmap);
-    si->grid = XCreateGC (dpy, win, GCForeground, &gcv);
-
-    /* Compute pixel values for fading text on the display */
-
-    XParseColor(dpy, si->cmap, 
-               get_string_resource("textColor", "TextColor"), &start);
-    XParseColor(dpy, si->cmap, 
-               get_string_resource("scopeColor", "ScopeColor"), &end);
-
-    rgb_to_hsv (start.red, start.green, start.blue, &h1, &s1, &v1);
-    rgb_to_hsv (end.red, end.green, end.blue, &h2, &s2, &v2);
-
-    si->text_steps = get_integer_resource("textSteps", "TextSteps");
-    if (si->text_steps < 0 || si->text_steps > 255)
-      si->text_steps = 10;
-
-    si->text_colors = (XColor *) calloc(si->text_steps, sizeof(XColor));
-    make_color_ramp (dpy, si->cmap,
-                     h1, s1, v1,
-                     h2, s2, v2,
-                     si->text_colors, &si->text_steps,
-                     False, True, False);
-
-    /* Compute the pixel values for the fading sweep */
-
-    XParseColor(dpy, si->cmap, 
-                get_string_resource("sweepColor", "SweepColor"), &start);
-
-    rgb_to_hsv (start.red, start.green, start.blue, &h1, &s1, &v1);
-
-    si->sweep_degrees = get_integer_resource("sweepDegrees", "Degrees");
-    if (si->sweep_degrees <= 0) si->sweep_degrees = 20;
-    if (si->sweep_degrees > 350) si->sweep_degrees = 350;
-
-    si->sweep_segs = get_integer_resource("sweepSegments", "SweepSegments");
-    if (si->sweep_segs < 1 || si->sweep_segs > 255)
-      si->sweep_segs = 255;
-
-    si->sweep_colors = (XColor *) calloc(si->sweep_segs, sizeof(XColor));
-    make_color_ramp (dpy, si->cmap,
-                     h1, s1, v1,
-                     h2, s2, v2,
-                     si->sweep_colors, &si->sweep_segs,
-                     False, True, False);
-
-    /* Done */
-
-    return si;
-}
-
-/*
- * Update the location of a simulated bogie.
- */
-
-static void
-updateLocation(sim_target *t) 
-{
-
-    int xdist, xtick;
-
-    t->movedlasttick = 1;
-    xtick = (int) (3.0 * random() / RAND_MAX) - 1;
-    xdist = (int) (11.0 * random() / RAND_MAX) - 5;
-    if (((t->nexttick + xtick) < 90) && ((t->nexttick + xtick) >= 0))
-       t->nexttick += xtick;
-    else
-       t->nexttick -= xtick;
-    if (((t->nextdist + xdist) < 100) && ((t->nextdist+xdist) >= 0))
-       t->nextdist += xdist;
-    else
-       t->nextdist -= xdist;
-}
-
-/*
- * The simulator. This uses information in the sim_info to simulate a bunch
- * of bogies flying around on the screen.
- */
-
-/*
- * TODO: It would be cool to have the two teams chase each other around and
- *       shoot it out.
- */
-
-static Bogie *
-simulator(sonar_info *si, void *vinfo) 
-{
-
-    /* Local Variables */
-
-    int i;
-    Bogie *list = NULL;
-    Bogie *new;
-    sim_target *t;
-    sim_info *info = (sim_info *) vinfo;
-
-    /* Check team A */
-
-    for (i = 0; i < info->numA; i++) {
-       t = &info->teamA[i];
-       if (!t->movedlasttick && (t->nexttick == (si->current * -1))) {
-           new = newBogie(strdup(t->name), t->nextdist, si->current, TTL);
-           if (list != NULL)
-               new->next = list;
-           list = new;
-           updateLocation(t);
-       } else
-           t->movedlasttick = 0;
-    }
-
-    /* Team B */
-
-    for (i = 0; i < info->numB; i++) {
-       t = &info->teamB[i];
-       if (!t->movedlasttick && (t->nexttick == (si->current * -1))) {
-           new = newBogie(strdup(t->name), t->nextdist, si->current, TTL);
-           if (list != NULL)
-               new->next = list;
-           list = new;
-           t->movedlasttick = 1;
-           updateLocation(t);
-       } else
-           t->movedlasttick = 0;
-    }
-
-    /* Done */
-
-    return list;
-}
-
-/*
- * Compute the X coordinate of the label.
- *
- * Args:
- *    si - The sonar info block.
- *    label - The label that will be drawn.
- *    x - The x coordinate of the bogie.
- *
- * Returns:
- *    The x coordinate of the start of the label.
- */
-
-static int
-computeStringX(sonar_info *si, char *label, int x) 
-{
-
-    int width = XTextWidth(si->font, label, strlen(label));
-    return x - (width / 2);
-}
-
-/*
- * Compute the Y coordinate of the label.
- *
- * Args:
- *    si - The sonar information.
- *    y - The y coordinate of the bogie.
- *
- * Returns:
- *    The y coordinate of the start of the label.
- */
-
-/* TODO: Add smarts to keep label in sonar screen */
-
-static int
-computeStringY(sonar_info *si, int y) 
-{
-
-    int fheight = si->font->ascent + si->font->descent;
-    return y + 5 + fheight;
-}
-
-/*
- * Draw a Bogie on the radar screen.
- *
- * Args:
- *    si       - Sonar Information.
- *    draw     - A flag to indicate if the bogie should be drawn or erased.
- *    name     - The name of the bogie.
- *    degrees  - The number of degrees that it should apprear at.
- *    distance - The distance the object is from the centre.
- *    ttl      - The time this bogie has to live.
- *    age      - The time this bogie has been around.
- */
-
-static void
-DrawBogie(sonar_info *si, int draw, char *name, int degrees, 
-         int distance, int ttl, int age) 
-{
-
-    /* Local Variables */
-
-    int x, y;
-    GC gc;
-    int ox = si->centrex;
-    int oy = si->centrey;
-    int index, delta;
-
-    /* Compute the coordinates of the object */
-
-    distance = (log((double) distance) / 10.0) * si->radius;
-    x = ox + ((double) distance * cos(4.0 * ((double) degrees)/57.29578));
-    y = oy - ((double) distance * sin(4.0 * ((double) degrees)/57.29578));
-
-    /* Set up the graphics context */
-
-    if (draw) {
-
-       /* Here we attempt to compute the distance into the total life of
-        * object that we currently are. This distance is used against
-        * the total lifetime to compute a fraction which is the index of
-        * the color to draw the bogie.
-        */
-
-       if (si->current <= degrees)
-           delta = (si->current - degrees) * -1;
-       else
-           delta = 90 + (degrees - si->current);
-       delta += (age * 90);
-       index = (si->text_steps - 1) * ((float) delta / (90.0 * (float) ttl));
-       gc = si->text;
-       XSetForeground(si->dpy, gc, si->text_colors[index].pixel);
-
-    } else
-       gc = si->erase;
-
-  /* Draw (or erase) the Bogie */
-
-    XFillArc(si->dpy, si->win, gc, x, y, 5, 5, 0, 360 * 64);
-    XDrawString(si->dpy, si->win, gc,
-               computeStringX(si, name, x),
-               computeStringY(si, y), name, strlen(name));
-}
-
-
-/*
- * Draw the sonar grid.
- *
- * Args:
- *    si - Sonar information block.
- */
-
-static void
-drawGrid(sonar_info *si) 
-{
-
-    /* Local Variables */
-
-    int i;
-    int width = si->maxx - si->minx;
-    int height = si->maxy - si->miny;
-  
-    /* Draw the circles */
-
-    XDrawArc(si->dpy, si->win, si->grid, si->minx - 10, si->miny - 10, 
-            width + 20, height + 20,  0, (360 * 64));
-
-    XDrawArc(si->dpy, si->win, si->grid, si->minx, si->miny, 
-            width, height,  0, (360 * 64));
-
-    XDrawArc(si->dpy, si->win, si->grid, 
-            (int) (si->minx + (.166 * width)), 
-            (int) (si->miny + (.166 * height)), 
-            (unsigned int) (.666 * width), (unsigned int)(.666 * height),
-            0, (360 * 64));
-
-    XDrawArc(si->dpy, si->win, si->grid, 
-            (int) (si->minx + (.333 * width)),
-            (int) (si->miny + (.333 * height)), 
-            (unsigned int) (.333 * width), (unsigned int) (.333 * height),
-            0, (360 * 64));
-
-    /* Draw the radial lines */
-
-    for (i = 0; i < 360; i += 10)
-       if (i % 30 == 0)
-           XDrawLine(si->dpy, si->win, si->grid, si->centrex, si->centrey,
-                     (int) (si->centrex +
-                     (si->radius + 10) * (cos((double) i / 57.29578))),
-                     (int) (si->centrey -
-                     (si->radius + 10)*(sin((double) i / 57.29578))));
-       else
-           XDrawLine(si->dpy, si->win, si->grid, 
-                     (int) (si->centrex + si->radius *
-                            (cos((double) i / 57.29578))),
-                     (int) (si->centrey - si->radius *
-                            (sin((double) i / 57.29578))),
-                     (int) (si->centrex +
-                     (si->radius + 10) * (cos((double) i / 57.29578))),
-                     (int) (si->centrey - 
-                     (si->radius + 10) * (sin((double) i / 57.29578))));
-}
-
-/*
- * Update the Sonar scope.
- *
- * Args:
- *    si - The Sonar information.
- *    bl - A list  of bogies to add to the scope.
- */
-
-static void
-Sonar(sonar_info *si, Bogie *bl) 
-{
-
-    /* Local Variables */
-
-    Bogie *bp, *prev;
-    int i;
-
-    /* Check for expired tagets and remove them from the visable list */
-
-    prev = NULL;
-    for (bp = si->visable; bp != NULL; bp = bp->next) {
-
-       /*
-        * Remove it from the visable list if it's expired or we have
-        * a new target with the same name.
-        */
-
-       bp->age ++;
-
-       if (((bp->tick == si->current) && (++bp->age >= bp->ttl)) ||
-           (findNode(bl, bp->name) != NULL)) {
-           DrawBogie(si, 0, bp->name, bp->tick,
-                     bp->distance, bp->ttl, bp->age);
-           if (prev == NULL)
-               si->visable = bp->next;
-           else
-               prev->next = bp->next;
-           freeBogie(bp);
-       } else
-           prev = bp;
-    }
-
-    /* Draw the sweep */
-
-    {
-      int seg_deg = (si->sweep_degrees * 64) / si->sweep_segs;
-      int start_deg = si->current * 4 * 64;
-      if (seg_deg <= 0) seg_deg = 1;
-      for (i = 0; i < si->sweep_segs; i++) {
-       XSetForeground(si->dpy, si->hi, si->sweep_colors[i].pixel);
-       XFillArc(si->dpy, si->win, si->hi, si->minx, si->miny, 
-                si->maxx - si->minx, si->maxy - si->miny,
-                 start_deg + (i * seg_deg),
-                 seg_deg);
-      }
-
-      /* Remove the trailing wedge the sonar */
-      XFillArc(si->dpy, si->win, si->erase, si->minx, si->miny, 
-               si->maxx - si->minx, si->maxy - si->miny, 
-               start_deg + (i * seg_deg),
-               (4 * 64));
-    }
-
-    /* Move the new targets to the visable list */
-
-    for (bp = bl; bp != (Bogie *) 0; bp = bl) {
-       bl = bl->next;
-       bp->next = si->visable;
-       si->visable = bp;
-    }
-
-    /* Draw the visable targets */
-
-    for (bp = si->visable; bp != NULL; bp = bp->next) {
-       if (bp->age < bp->ttl)          /* grins */
-          DrawBogie(si, 1, bp->name, bp->tick, bp->distance, bp->ttl,bp->age);
-    }
-
-    /* Redraw the grid */
-
-    drawGrid(si);
-}
-
-/*
- * Main screen saver hack.
- *
- * Args:
- *    dpy - The X display.
- *    win - The X window.
- */
-
-void 
-screenhack(Display *dpy, Window win) 
-{
-
-    /* Local Variables */
-
-    sonar_info *si;
-    struct timeval start, finish;
-    Bogie *bl;
-    long sleeptime;
-    char *mode;
-
-    /* 
-     * Initialize 
-     * Adding new sensors would involve supporting more modes other than
-     * ping and initiailizing the sensor in the same way.
-     */
-
-    mode = get_string_resource("mode", "Mode");
-
-    if (!mode || !*mode || !strcmp(mode, "default")) /* Pick a good default. */
-      {
-#ifdef HAVE_PING
-        if (geteuid() == 0)    /* we're root or setuid -- ping will work. */
-          mode = "ping";
-        else
-#endif
-          mode = "simulation";
-      }
-
-#ifdef HAVE_PING
-    if (strcmp(mode, "ping") == 0) {
-       sensor = ping;
-       if ((sensor_info = (void *) init_ping()) == (void *) 0)
-          {
-            fprintf (stderr, "%s: running in `simulation mode' instead.\n",
-                     progname);
-           goto SIM;
-          }
-    } else
-#endif /* HAVE_PING */
-    if (strcmp(mode, "simulation") == 0) {
-#ifdef HAVE_PING
-    SIM:
-#endif
-       sensor = simulator;
-       if ((sensor_info = (void *) init_sim()) == NULL)
-           exit(1);
-    } else {
-       fprintf(stderr, "%s: unsupported Sonar mode: %s\n", progname, mode);
-       fprintf(stderr,
-                "\tCurrently supported modes are `ping' and `simulation'\n");
-       exit(1);
-    }
-    if ((si = init_sonar(dpy, win)) == (sonar_info *) 0)
-       exit(1);
-  
-    /* Sonar loop */
-
-    TTL = get_integer_resource("ttl", "TTL");
-
-    while (1) {
-
-       /* Call the sensor and display the results */
-
-       gettimeofday(&start, (struct timezone *) 0);
-       bl = sensor(si, sensor_info);
-       Sonar(si, bl);
-
-        /* Set up and sleep for the next one */
-
-       si->current = (si->current - 1) % 90;
-       XSync (dpy, False);
-       gettimeofday(&finish, (struct timezone *) 0);
-       sleeptime = si->delay - delta(&start, &finish);
-        screenhack_handle_events (dpy);
-       if (sleeptime > 0L)
-           usleep(sleeptime);
-    }
-}
diff --git a/hacks/sonar.man b/hacks/sonar.man
deleted file mode 100644 (file)
index 7fe7761..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-.TH Sonar 1 "3-Nov-98" "X Version 11"
-.SH NAME
-sonar - display a sonar scope
-.SH SYNOPSIS
-.B sonar
-[\-background \fIcolor\fP]
-[\-sweep\-color \fIcolor\fP]
-[\-low\-color \fIcolor\fP] 
-[\-scope\-color \fIcolor\fP]
-[\-grid\-color \fIcolor\fP]
-[\-text\-color \fIcolor\fP]
-[\-ttl \fIinteger\fP]
-[\-mode ping]
-[\-font \fIfont\fP]
-[\-ping\-timeout \fIint\fP]
-[\-ping\-source list | file | subnet ] 
-[\-ping\-file \fIhosts-file\fP]
-[\-ping\-list \fIhost-name-list\fP]
-[\-team-a-name \fIstring\fP] 
-[\-team-b-name \fIstring\fP]
-[\-team-a-count \fIint\fP]
-[\-team-b-count \fIint\fP]
-.SH DESCRIPTION
-The \fIsonar\fP program displays a sonar scope on the computer's screen.
-This scope polls a sensor as the sweep goes around the scope and displays
-what it finds as bogies on the screen.  The program is designed to support
-different modes representing different types of sensors.  Currently the
-only implemented sensors are a simulator, and a network ping function that
-pings hosts and plots the results on the scope.
-.SH OPTIONS
-.I sonar
-understands the following options:
-.TP 8
-.B \-background \fIColor\fP
-The background Color of the screen not covered by the scope.
-.TP 8
-.B \-sweep\-color \fIColor\fP
-The color of the brightest part of the sweep.
-.TP 8
-.B \-scope\-color \fIColor\fP
-The color of the circular part of the scope.
-.TP 8
-.B \-grid\-color \fIColor\fP
-The color to the grid lines overlaying the scope.
-.TP 8
-.B \-text\-color \fIColor\fP
-The color of the text identifying bogies on the scope.
-.TP 8
-.B \-ttl \fIinteger\fP
-"Time to live": visible time of a Bogie. Try values between 10 (very short)
-and 100. 
-.TP 8
-.B \-mode \fIsimulation | ping\fP
-The sensor mode to use, the currently supported modes \fIsimulate\fP (the
-default) and \fIping\fP.
-.TP 8
-.B \-font \fIfont\fP
-The font used to display text on the scope.  Default "fixed".
-.TP 8
-.B \-ping\-timeout \fIint\fP
-The amount of time in milliseconds the program will wait for an answer
-to a ping.
-.TP 8
-.B \-ping\-source list | file | subnet
-Th source of the list of hosts to ping. Valid values are: \fIlist\fP,
-\fIfile\fP, \fIsubnet\fP.  The first two values are described below;
-and \fIsubnet\fP indicates that the sonar should ping all hosts in the 
-same subnet as the current machine.  (All addresses are treated
-as class C nets, therefore this will at most ping about 256 hosts.)
-.TP 8
-.B \-ping\-file \fIfilename\fP
-The path to a file in \fI/etc/hosts\fP format. Only used when \fIpingSource\fP 
-is set to \fIfile\fP.
-.TP 8
-.B \-ping\-list \fIlist\fP
-A comma separated list of hostnames, eg \fI"pinky,brain,dot"\fP.
-Only used when \fIpingSource\fP is set to \fIlist\fP.
-.TP 8
-.B \-team-a-name \fIstring\fP
-The name of team A, in simulation-mode.
-.TP 8
-.B \-team-b-name \fIstring\fP
-The name of team B, in simulation-mode.
-.TP 8
-.B \-team-a-count \fIint\fP
-The number of bogies on team A, in simulation-mode.
-.TP 8
-.B \-team-b-count \fIint\fP
-The number of bogies on team B, in simulation-mode.
-.SH RESOURCES
-Configuration of the targets to ping is best done by setting X Resources.
-.PP
-.TP 8
-.B background \fI(Color)\fP
-See option \-background, above; default value is \fIblack\fP.
-.TP 8
-.B sweepColor \fI(Color)\fP
-See option \-sweep\-color, above; default value is \fI#00ff00\fP.
-.TP 8
-.B scopeColor \fI(Color)\fP
-See option \-scope\-color, above; default value is \fI#003300\fP.
-.TP 8
-.B gridColor \fI(Color)\fP
-See option \-grid\-color, above; default value is \fI#00aa00\fP.
-.TP 8
-.B textColor \fI(Color)\fP
-See option \-text\-color, above; default value is \fI#ffff00\fP.
-.TP 8
-.B ttl \fI(integer)\fP
-See option \-ttl, above; default value is \fI90\fP or one sweep.
-.TP 8
-.B mode \fI(ping)\fP
-See option \-mode, above.  If set to \fIdefault\fP, it will ping hosts if
-possible, otherwise, will run in simulation-mode.
-.TP 8
-.B font \fI(font)\fP
-See option \-font, above; default value is \fIfixed\fP.
-.TP 8
-.B pingTimeout \fI(Integer)\fP
-See option \-pingtimeout, above; default value is \fI3000\fP.
-.TP 8
-.B pingSource \fIlist | file | subnet\fP
-See option \-ping\-source, above.  Default value is \fIhostfile\fP.
-.TP 8
-.B pingFile \fIpathname\fP
-See option \-ping\-file, above.  Default value is \fI/etc/hosts\fP.
-.TP 8
-.B pingList \fIhost,host,host...\fP
-See option \-ping\-list, above; default value is \fI"localhost"\fP.
-.TP 8
-.B teamAName \fIstring\fP
-See option \-team\-a\-name, above.  Default value is "F18".
-.TP 8
-.B teamBName \fIstring\fP
-See option \-teamBName, above.  Default value is "MIG".
-.TP 8
-.B teamACount \fIint\fP
-See option \-teamACount, above.  Default value is 4.
-.TP 8
-.B teamBCount \fIint\fP
-See option \-teamBCount, above.  Default value is 4.
-.SH NOTES
-In order to use the ping sensor, this program must be installed as 
-setuid root, so that it can create an ICMP socket.
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver (1),
-.BR ping (8)
-.SH COPYRIGHT
-Copyright \(co 1998 by Stephen Martin. (smartin@canada.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.
-
-.SH AUTHORS
-Stephen Martin <smartin@canada.com>, 3-nov-98.
-
-Thanks to Tom Kelly for suggesting a modular approach to the sensor
-amoung other things.
-
-Thomas Bahls <thommy@cs.tu-berlin.de> hacked the "ttl" option, 12-jul-98.
-
diff --git a/hacks/sphere.c b/hacks/sphere.c
deleted file mode 100644 (file)
index e0a81e3..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * sphere.c --- draw a bunch of shaded spheres
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)sphere.c     4.00 97/01/01 xlockmore";
-#endif
-
-/* Copyright 1988 by Sun Microsystems, Inc. Mountain View, CA.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of Sun or MIT not be used in advertising
- * or publicity pertaining to distribution of the software without specific
- * prior written permission. Sun and M.I.T. make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without any express or implied warranty.
- *
- * SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL SUN BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ***************************************************************************
- *
- * Revision History:
- * 30-May-97: jwz@jwz.org: made it go vertically as well as horizontally.
- * 27-May-97: jwz@jwz.org: turned into a standalone program.
- * 2-Sep-93: xlock version (David Bagley bagleyd@bigfoot.com)
- * 1988: Revised to use SunView canvas instead of gfxsw Sun Microsystems
- * 1982: Orignal Algorithm  Tom Duff  Lucasfilm Ltd.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Sphere"
-# define HACK_INIT                                     init_sphere
-# define HACK_DRAW                                     draw_sphere
-# define sphere_opts                           xlockmore_opts
-# define DEFAULTS      "*delay:                1000    \n"                     \
-                                       "*ncolors:              64      \n"
-# define BRIGHT_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt sphere_opts = {
-  0, NULL, 0, NULL, NULL };
-
-/*-
- * (NX, NY, NZ) is the light source vector -- length should be 100
- */
-#define NX 48
-#define NY (-36)
-#define NZ 80
-#define NR 100
-#define SQRT(a) ((int)sqrt((double)(a)))
-
-typedef struct {
-       int         width, height;
-       int         radius;
-       int         x0;         /* x center */
-       int         y0;         /* y center */
-       int         color;
-       int         x, y;
-       int         dirx, diry;
-       int         maxx, maxy;
-       XPoint     *points;
-} spherestruct;
-
-static spherestruct *spheres = NULL;
-
-void
-init_sphere(ModeInfo * mi)
-{
-       spherestruct *sp;
-
-       if (spheres == NULL) {
-               if ((spheres = (spherestruct *) calloc(MI_NUM_SCREENS(mi),
-                                            sizeof (spherestruct))) == NULL)
-                       return;
-       }
-       sp = &spheres[MI_SCREEN(mi)];
-
-       if (sp->points) {
-               (void) free((void *) sp->points);
-               sp->points = NULL;
-       }
-       sp->width = MI_WIN_WIDTH(mi);
-       sp->height = MI_WIN_HEIGHT(mi);
-       sp->points = (XPoint *) malloc(sp->height * sizeof (XPoint));
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-
-       sp->dirx = 1;
-}
-
-void
-draw_sphere(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       spherestruct *sp = &spheres[MI_SCREEN(mi)];
-       int         minx = 0, maxx = 0, miny = 0, maxy = 0, npts = 0;
-
-       if ((sp->dirx && ABS(sp->x) >= sp->radius) ||
-           (sp->diry && ABS(sp->y) >= sp->radius)) {
-               sp->radius = NRAND(MIN(sp->width / 2, sp->height / 2) - 1) + 1;
-
-               if (LRAND() & 1) {
-                       sp->dirx = (LRAND() & 1) * 2 - 1;
-                       sp->diry = 0;
-               } else {
-                       sp->dirx = 0;
-                       sp->diry = (LRAND() & 1) * 2 - 1;
-               }
-               sp->x0 = NRAND(sp->width);
-               sp->y0 = NRAND(sp->height);
-
-               sp->x = -sp->radius * sp->dirx;
-               sp->y = -sp->radius * sp->diry;
-
-               if (MI_NPIXELS(mi) > 2)
-                       sp->color = NRAND(MI_NPIXELS(mi));
-       }
-       if (sp->dirx == 1) {
-               if (sp->x0 + sp->x < 0)
-                       sp->x = -sp->x0;
-       } else if (sp->dirx == -1) {
-               if (sp->x0 + sp->x >= sp->width)
-                       sp->x = sp->width - sp->x0 - 1;
-       }
-       if (sp->diry == 1) {
-               if (sp->y0 + sp->y < 0)
-                       sp->y = -sp->y0;
-       } else if (sp->diry == -1) {
-               if (sp->y0 + sp->y >= sp->height)
-                       sp->y = sp->height - sp->y0 - 1;
-       }
-       if (sp->dirx) {
-               sp->maxy = SQRT(sp->radius * sp->radius - sp->x * sp->x);
-               miny = -sp->maxy;
-               if (sp->y0 - sp->maxy < 0)
-                       miny = -sp->y0;
-               maxy = sp->maxy;
-       }
-       if (sp->diry) {
-               sp->maxx = SQRT(sp->radius * sp->radius - sp->y * sp->y);
-               minx = -sp->maxx;
-               if (sp->x0 - sp->maxx < 0)
-                       minx = -sp->x0;
-               maxx = sp->maxx;
-       }
-       if (sp->dirx) {
-               if (sp->y0 + sp->maxy >= sp->height)
-                       maxy = sp->height - sp->y0;
-       }
-       if (sp->diry) {
-               if (sp->x0 + sp->maxx >= sp->width)
-                       maxx = sp->width - sp->x0;
-       }
-       XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-
-       if (sp->dirx)
-               XDrawLine(display, MI_WINDOW(mi), gc,
-               sp->x0 + sp->x, sp->y0 + miny, sp->x0 + sp->x, sp->y0 + maxy);
-       if (sp->diry)
-               XDrawLine(display, MI_WINDOW(mi), gc,
-               sp->x0 + minx, sp->y0 + sp->y, sp->x0 + maxx, sp->y0 + sp->y);
-
-       if (MI_NPIXELS(mi) > 2)
-               XSetForeground(display, gc, MI_PIXEL(mi, sp->color));
-       else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-
-       if (sp->dirx)
-               for (sp->y = miny; sp->y <= maxy; sp->y++)
-                       if ((NRAND(sp->radius * NR)) <=
-                           (NX * sp->x + NY * sp->y + NZ *
-                            SQRT(sp->radius * sp->radius - sp->x * sp->x - sp->y * sp->y))) {
-                               sp->points[npts].x = sp->x + sp->x0;
-                               sp->points[npts].y = sp->y + sp->y0;
-                               npts++;
-                       }
-       if (sp->diry)
-               for (sp->x = minx; sp->x <= maxx; sp->x++)
-                       if ((NRAND(sp->radius * NR)) <=
-                           (NX * sp->x + NY * sp->y + NZ *
-                            SQRT(sp->radius * sp->radius - sp->x * sp->x - sp->y * sp->y))) {
-                               sp->points[npts].x = sp->x + sp->x0;
-                               sp->points[npts].y = sp->y + sp->y0;
-                               npts++;
-                       }
-       XDrawPoints(display, MI_WINDOW(mi), gc, sp->points, npts, CoordModeOrigin);
-       if (sp->dirx == 1) {
-               sp->x++;
-               if (sp->x0 + sp->x >= sp->width)
-                       sp->x = sp->radius;
-       } else if (sp->dirx == -1) {
-               sp->x--;
-               if (sp->x0 + sp->x < 0)
-                       sp->x = -sp->radius;
-       }
-       if (sp->diry == 1) {
-               sp->y++;
-               if (sp->y0 + sp->y >= sp->height)
-                       sp->y = sp->radius;
-       } else if (sp->diry == -1) {
-               sp->y--;
-               if (sp->y0 + sp->y < 0)
-                       sp->y = -sp->radius;
-       }
-}
-
-void
-release_sphere(ModeInfo * mi)
-{
-       if (spheres != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       spherestruct *sp = &spheres[screen];
-
-                       if (sp->points) {
-                               (void) free((void *) sp->points);
-                               sp->points = NULL;
-                       }
-               }
-               (void) free((void *) spheres);
-               spheres = NULL;
-       }
-}
-
-void
-refresh_sphere(ModeInfo * mi)
-{
-       spherestruct *sp = &spheres[MI_SCREEN(mi)];
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-       sp->x = -sp->radius;
-}
diff --git a/hacks/sphere.man b/hacks/sphere.man
deleted file mode 100644 (file)
index 1632ab9..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH XScreenSaver 1 "27-May-97" "X Version 11"
-.SH NAME
-sphere - draws shaded spheres
-.SH SYNOPSIS
-.B sphere
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
-
-.SH DESCRIPTION
-The \fIsphere\fP program draws shaded spheres.
-.SH OPTIONS
-.I sphere
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors are chosen randomly.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1988 by Sun Microsystems, Inc.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Sun Microsystems, Inc, 1988.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 27-May-97.
diff --git a/hacks/spiral.c b/hacks/spiral.c
deleted file mode 100644 (file)
index 10d319a..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * spiral --- low cpu screen design.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)spiral.c     4.00 97/01/01 xlockmore";
-#endif
-
-/* Copyright (c) 1994 Darrick Brown.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Idea based on a graphics demo I saw a *LONG* time ago.
- *
- * See xlock.c for copying information.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 24-Jul-95: Fix to allow cycles not to have an arbitrary value by
- *            Peter Schmitzberger (schmitz@coma.sbg.ac.at).
- * 06-Mar-95: Finished cleaning up and final testing.
- * Copyright (c) 1994 by Darrick Brown.
- *
- * 03-Mar-95: Cleaned up code.
- * 12-Jul-94: Written.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Spiral"
-# define HACK_INIT                                     init_spiral
-# define HACK_DRAW                                     draw_spiral
-# define spiral_opts                           xlockmore_opts
-# define DEFAULTS      "*count:                40    \n"                       \
-                                       "*cycles:               350   \n"                       \
-                                       "*delay:                50000 \n"                       \
-                                       "*ncolors:              64   \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt spiral_opts = {
-  0, NULL, 0, NULL, NULL };
-
-#define MAXTRAIL 512           /* The length of the trail */
-#define MAXDOTS 40
-#define MINDOTS 1
-#define TWOPI (2.0*M_PI)       /* for convienence */
-#define JAGGINESS 4            /* This sets the "Craziness" of the spiral (I like 4) */
-#define SPEED 2.0
-
-/* How many segments to draw per cycle when redrawing */
-#define REDRAWSTEP 3
-
-typedef struct {
-       float       hx, hy, ha, hr;
-} Traildots;
-
-typedef struct {
-       Traildots  *traildots;
-       float       cx, cy;
-       float       angle;
-       float       radius;
-       float       dr, da;
-       float       dx, dy;
-       int         erase;
-       int         inc;
-       float       colors;
-       int         width, height;
-       float       top, bottom, left, right;
-       int         dots, nlength;
-       int         redrawing, redrawpos;
-} spiralstruct;
-
-static spiralstruct *spirals = NULL;
-
-static void draw_dots(ModeInfo * mi, int in);
-
-#define TFX(sp,x) ((int)((x/sp->right)*(float)sp->width))
-#define TFY(sp,y) ((int)((y/sp->top)*(float)sp->height))
-
-static void
-draw_dots(ModeInfo * mi, int in)
-{
-
-       float       i, inc;
-       float       x, y;
-
-       spiralstruct *sp = &spirals[MI_SCREEN(mi)];
-
-       inc = TWOPI / (float) sp->dots;
-       for (i = 0.0; i < TWOPI; i += inc) {
-               x = sp->traildots[in].hx + COSF(i + sp->traildots[in].ha) *
-                       sp->traildots[in].hr;
-               y = sp->traildots[in].hy + SINF(i + sp->traildots[in].ha) *
-                       sp->traildots[in].hr;
-               XDrawPoint(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                          TFX(sp, x), TFY(sp, y));
-       }
-}
-
-void
-init_spiral(ModeInfo * mi)
-{
-       spiralstruct *sp;
-       int         i;
-
-       if (spirals == NULL) {
-               if ((spirals = (spiralstruct *) calloc(MI_NUM_SCREENS(mi),
-                                            sizeof (spiralstruct))) == NULL)
-                       return;
-       }
-       sp = &spirals[MI_SCREEN(mi)];
-
-       sp->width = MI_WIN_WIDTH(mi);
-       sp->height = MI_WIN_HEIGHT(mi);
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-
-       /* Init */
-       sp->nlength = MI_CYCLES(mi);
-
-       if (!sp->traildots)
-               sp->traildots = (Traildots *) malloc(sp->nlength * sizeof (Traildots));
-
-       /* initialize the allocated array */
-       for (i = 0; i < sp->nlength; i++) {
-               sp->traildots[i].hx = 0.0;
-               sp->traildots[i].hy = 0.0;
-               sp->traildots[i].ha = 0.0;
-               sp->traildots[i].hr = 0.0;
-       }
-       sp->redrawing = 0;
-
-       /* keep the window parameters proportional */
-       sp->top = 10000.0;
-       sp->bottom = 0;
-       sp->right = (float) (sp->width) / (float) (sp->height) * (10000.0);
-       sp->left = 0;
-
-       /* assign the initial values */
-       sp->cx = (float) (5000.0 - NRAND(2000)) / 10000.0 * sp->right;
-       sp->cy = (float) (5000.0 - NRAND(2000));
-       sp->radius = (float) (NRAND(200) + 200);
-       sp->angle = 0.0;
-       sp->dx = (float) (10 - NRAND(20)) * SPEED;
-       sp->dy = (float) (10 - NRAND(20)) * SPEED;
-       sp->dr = (float) ((NRAND(10) + 4) * (1 - (LRAND() & 1) * 2));
-       sp->da = (float) NRAND(360) / 7200.0 + 0.01;
-       if (MI_NPIXELS(mi) > 2)
-               sp->colors = (float) NRAND(MI_NPIXELS(mi));
-       sp->erase = 0;
-       sp->inc = 0;
-       sp->traildots[sp->inc].hx = sp->cx;
-       sp->traildots[sp->inc].hy = sp->cy;
-       sp->traildots[sp->inc].ha = sp->angle;
-       sp->traildots[sp->inc].hr = sp->radius;
-       sp->inc++;
-
-       sp->dots = MI_BATCHCOUNT(mi);
-       if (sp->dots < -MINDOTS)
-               sp->dots = NRAND(sp->dots - MINDOTS + 1) + MINDOTS;
-       /* Absolute minimum */
-       if (sp->dots < MINDOTS)
-               sp->dots = MINDOTS;
-}
-
-void
-draw_spiral(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       spiralstruct *sp = &spirals[MI_SCREEN(mi)];
-       int         i, j;
-
-       if (sp->erase == 1) {
-               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-               draw_dots(mi, sp->inc);
-       }
-       sp->cx += sp->dx;
-       sp->traildots[sp->inc].hx = sp->cx;
-
-       if ((sp->cx > 9000.0) || (sp->cx < 1000.0))
-               sp->dx *= -1.0;
-
-       sp->cy += sp->dy;
-       sp->traildots[sp->inc].hy = sp->cy;
-
-       if ((sp->cy > 9000.0) || (sp->cy < 1000.0))
-               sp->dy *= -1.0;
-
-       sp->radius += sp->dr;
-       sp->traildots[sp->inc].hr = sp->radius;
-
-       if ((sp->radius > 2500.0) && (sp->dr > 0.0))
-               sp->dr *= -1.0;
-       else if ((sp->radius < 50.0) && (sp->radius < 0.0))
-               sp->dr *= -1.0;
-
-       /* Randomly give some variations to:  */
-
-       /* spiral direction (if it is within the boundaries) */
-       if ((NRAND(3000) < 1 * JAGGINESS) &&
-           (((sp->cx > 2000.0) && (sp->cx < 8000.0)) &&
-            ((sp->cy > 2000.0) && (sp->cy < 8000.0)))) {
-               sp->dx = (float) (10 - NRAND(20)) * SPEED;
-               sp->dy = (float) (10 - NRAND(20)) * SPEED;
-       }
-       /* The speed of the change in size of the spiral */
-       if (NRAND(3000) < 1 * JAGGINESS) {
-               if (LRAND() & 1)
-                       sp->dr += (float) (NRAND(3) + 1);
-               else
-                       sp->dr -= (float) (NRAND(3) + 1);
-
-               /* don't let it get too wild */
-               if (sp->dr > 18.0)
-                       sp->dr = 18.0;
-               else if (sp->dr < 4.0)
-                       sp->dr = 4.0;
-       }
-       /* The speed of rotation */
-       if (NRAND(3000) < 1 * JAGGINESS)
-               sp->da = (float) NRAND(360) / 7200.0 + 0.01;
-
-       /* Reverse rotation */
-       if (NRAND(3000) < 1 * JAGGINESS)
-               sp->da *= -1.0;
-
-       sp->angle += sp->da;
-       sp->traildots[sp->inc].ha = sp->angle;
-
-       if (sp->angle > TWOPI)
-               sp->angle -= TWOPI;
-       else if (sp->angle < 0.0)
-               sp->angle += TWOPI;
-
-       sp->colors += (float) MI_NPIXELS(mi) / ((float) (2 * sp->nlength));
-       if (sp->colors >= (float) MI_NPIXELS(mi))
-               sp->colors = 0.0;
-
-       if (MI_NPIXELS(mi) > 2)
-               XSetForeground(display, gc, MI_PIXEL(mi, (int) sp->colors));
-       else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       draw_dots(mi, sp->inc);
-       sp->inc++;
-
-       if (sp->inc > sp->nlength - 1) {
-               sp->inc -= sp->nlength;
-               sp->erase = 1;
-       }
-       if (sp->redrawing) {
-               for (i = 0; i < REDRAWSTEP; i++) {
-                       j = (sp->inc - sp->redrawpos + sp->nlength) % sp->nlength;
-                       draw_dots(mi, j);
-
-                       if (++(sp->redrawpos) >= sp->nlength) {
-                               sp->redrawing = 0;
-                               break;
-                       }
-               }
-       }
-}
-
-void
-release_spiral(ModeInfo * mi)
-{
-       if (spirals != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
-                       spiralstruct *sp = &spirals[screen];
-
-                       if (sp->traildots)
-                               (void) free((void *) sp->traildots);
-               }
-               (void) free((void *) spirals);
-               spirals = NULL;
-       }
-}
-
-void
-refresh_spiral(ModeInfo * mi)
-{
-       spiralstruct *sp = &spirals[MI_SCREEN(mi)];
-
-       sp->redrawing = 1;
-       sp->redrawpos = 0;
-}
diff --git a/hacks/spiral.man b/hacks/spiral.man
deleted file mode 100644 (file)
index a32db1e..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-spiral - draws moving circular spiral patterns
-.SH SYNOPSIS
-.B spiral
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP]
-
-.SH DESCRIPTION
-The \fIspiral\fP program draws moving circular spiral patterns
-.SH OPTIONS
-.I spiral
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors are chosen randomly.
-.TP 8
-.B \-count \fIinteger\fP
-Default 40.
-.TP 8
-.B \-cycles \fIinteger\fP
-Default 350.
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1994 by Darrick Brown.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Darrick Brown, 1994.
-
-Improved by Peter Schmitzberger <schmitz@coma.sbg.ac.at>, 24-Jul-95.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/spotlight.c b/hacks/spotlight.c
deleted file mode 100644 (file)
index 8eb5d0c..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * spotlight - an xscreensaver module
- * Copyright (c) 1999 Rick Schultz <rick@skapunx.net>
- *
- * loosely based on the BackSpace module "StefView" by Darcy Brockbank
- */
-
-/* modified from a module from the xscreensaver distribution */
-
-/*
- * xscreensaver, Copyright (c) 1992, 1993, 1994, 1996, 1997, 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.
- */
-
-/* #define DEBUG */
-#include <math.h>
-#include "screenhack.h"
-#include <X11/Xutil.h>
-#include <sys/time.h>
-
-#define MINX 0.0
-#define MINY 0.0
-#define X_PERIOD 15000.0
-#define Y_PERIOD 12000.0
-
-static int sizex, sizey; /* screen size */
-static int delay;        /* in case it's too fast... */
-static GC gc;
-#ifdef DEBUG
-static GC white_gc;
-#endif
-static GC buffer_gc;     /* draw in buffer, then flush to screen
-                           to avoid flicker */
-static int radius;       /* radius of spotlight in pixels */
-static XGCValues gcv;
-
-static Pixmap pm;        /* pixmap grabbed from screen */
-static Pixmap clip_pm;   /* pixmap for clipping (spotlight shape) */
-static Pixmap buffer;    /* pixmap for the buffer */
-
-static GC clip_gc;       /* GC for the clip pixmap */
-
-int x, y, s;             /* x & y coords of buffer (upper left corner) */
-                         /* s is the width of the buffer */
-
-int oldx, oldy, max_x_speed, max_y_speed;
-                         /* used to keep the new buffer position
-                           over the old spotlight image to make sure 
-                           the old image is completely erased */
-
-/* The path the spotlight follows around the screen is sinusoidal.
-   This function is fed to sin() to get the x & y coords */
-static long
-currentTimeInMs(void)
-{
-  struct timeval curTime;
-#ifdef GETTIMEOFDAY_TWO_ARGS
-  struct timezone tz = {0,0};
-  gettimeofday(&curTime, &tz);
-#else
-  gettimeofday(&curTime);
-#endif
-  return curTime.tv_sec*1000 + curTime.tv_usec/1000.0;
-}
-
-
-static void
-init_hack (Display *dpy, Window window)
-{
-  XWindowAttributes xgwa;
-  long gcflags;
-  Colormap cmap;
-  unsigned long fg, bg;
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  sizex = xgwa.width;
-  sizey = xgwa.height;
-  cmap = xgwa.colormap;
-  fg = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-  bg = get_pixel_resource ("background", "Background", dpy, cmap);
-
-  /* read parameters, keep em sane */
-  delay = get_integer_resource ("delay", "Integer");
-  if (delay < 1) delay = 1;
-  radius = get_integer_resource ("radius", "Integer");
-  if (radius < 0) radius = 125;
-
-  /* do the dance */
-  gcv.function = GXcopy;
-  gcv.subwindow_mode = IncludeInferiors;
-  gcflags = GCForeground | GCFunction;
-  gcv.foreground = bg;
-  gcv.background = fg;
-
-#ifdef NOPE
-  if (use_subwindow_mode_p(xgwa.screen, window)) /* see grabscreen.c */
-    gcflags |= GCSubwindowMode;
-#endif
-  gc = XCreateGC (dpy, window, gcflags, &gcv);
-
-
-  /* grab screen to window */
-  grab_screen_image (xgwa.screen, window);
-
-  /* save screen to pixmap for copying later */
-  pm = XCreatePixmap(dpy, window, sizex, sizey, xgwa.depth);
-  XCopyArea(dpy, window, pm, gc, 0, 0, sizex, sizey, 0, 0);
-
-
-  /* create buffer to reduce flicker */
-  buffer = XCreatePixmap(dpy, window, sizex, sizey, xgwa.depth);
-  buffer_gc = XCreateGC (dpy, buffer, gcflags, &gcv);
-
-  /* blank out screen */
-  XFillRectangle(dpy,window,gc,0,0,sizex,sizey);
-
-  /* create clip mask (so it's a circle, not a square) */
-  clip_pm = XCreatePixmap(dpy, window, radius*4, radius*4, 1);
-  gcv.foreground=bg;
-  gcv.background=bg;
-  clip_gc = XCreateGC(dpy, clip_pm, gcflags, &gcv);
-  XFillRectangle(dpy,clip_pm,clip_gc,0,0,radius*4, radius*4);
-  XSetForeground(dpy,clip_gc,fg);
-  XFillArc(dpy, clip_pm, clip_gc, radius , radius,
-          radius*2, radius*2, 0, 360*64);
-  /* set buffer's clip mask to the one we just made */
-  XSetClipMask(dpy, buffer_gc, clip_pm);
-  /* free everything */
-  XFreeGC(dpy, clip_gc);
-  XFreePixmap(dpy, clip_pm);
-
-  /* avoid remants */
-  max_x_speed = max_y_speed = radius;
-
-#ifdef DEBUG
-  /* create GC with white fg */
-  gcv.foreground = fg;
-  white_gc = XCreateGC (dpy, window, gcflags, &gcv);
-#endif
-  
-  /* initialize x and y to avoid initial `jump' across screen */
-  x = ((1 + sin(((float)currentTimeInMs()) / X_PERIOD * 2. * M_PI))/2.0) 
-    * (sizex - s/2) -s/4  + MINX;
-  y = ((1 + sin(((float)currentTimeInMs()) / Y_PERIOD * 2. * M_PI))/2.0) 
-    * (sizey - s/2) -s/4  + MINY;
-
-}
-
-
-/*
- * perform one iteration
- */
-static void
-onestep (Display *dpy, Window window)
-{
-    long now;
-
-    /* clear buffer */
-    XFillRectangle(dpy, buffer, buffer_gc, x, y, s, s);
-
-    
-#define nrnd(x) (random() % (x))
-
-    oldx = x;
-    oldy = y;
-
-    s = radius *4 ;   /* s = width of buffer */
-
-    now = currentTimeInMs();
-
-    /* find new x,y */
-    x = ((1 + sin(((float)now) / X_PERIOD * 2. * M_PI))/2.0) 
-      * (sizex - s/2) -s/4  + MINX;
-    y = ((1 + sin(((float)now) / Y_PERIOD * 2. * M_PI))/2.0) 
-      * (sizey - s/2) -s/4  + MINY;
-    
-    /* limit change in x and y to buffer width */
-    if ( x < (oldx - max_x_speed) ) x = oldx - max_x_speed;
-    if ( x > (oldx + max_x_speed) ) x = oldx + max_x_speed;
-    if ( y < (oldy - max_y_speed) ) y = oldy - max_y_speed;
-    if ( y > (oldy + max_y_speed) ) y = oldy + max_y_speed;
-
-    /* copy area of screen image (pm) to buffer
-       Clip to a circle */
-    XSetClipOrigin(dpy, buffer_gc, x,y);
-    XCopyArea(dpy, pm, buffer, buffer_gc, x, y, s, s, x, y);
-    /* copy buffer to screen (window) */
-    XCopyArea(dpy, buffer, window, gc, x , y, s, s, x, y);
-
-#ifdef DEBUG
-    /* draw a box around the buffer */
-    XDrawLine(dpy, window, white_gc, x, y, x+s, y);
-    XDrawLine(dpy, window, white_gc, x, y, x, y+s);
-    XDrawLine(dpy, window, white_gc, x+s, y, x+s, y+s);
-    XDrawLine(dpy, window, white_gc, x, y+s, x+s, y+s);
-#endif
-
-}
-
-\f
-char *progclass = "Spotlight";
-
-char *defaults [] = {
-  "*dontClearRoot:             True",
-
-#ifdef __sgi   /* really, HAVE_READ_DISPLAY_EXTENSION */
-  "*visualID:                  Best",
-#endif
-
-  "*delay:                     10000",
-  "*radius:                    125",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
-  { "-radius",         ".radius",              XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  init_hack (dpy, window);
-  while (1) {
-    onestep(dpy, window);
-    XSync(dpy, False);
-    if (delay) usleep (delay);
-    screenhack_handle_events (dpy);
-  }
-}
-  
diff --git a/hacks/spotlight.man b/hacks/spotlight.man
deleted file mode 100644 (file)
index 31e9f71..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-.TH XScreenSaver 1 "05-Apr-1999" "X Version 11"
-.SH NAME
-spotlight - move spotlight around desktop
-.SH SYNOPSIS
-.B spotlight
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-radius \fIpixels\fP]
-.SH DESCRIPTION
-The \fIspotlight\fP program draws random rectangles.
-.SH OPTIONS
-.I spotlight
-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
-Slow it down.
-.TP 8
-.B \-radius \fIpixels\fP
-Radius of the spotlight in pixels.
-.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 1999 by Rick Schultz.  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 CREDITS
-Hacked together by Rick Schultz <rick@skapunx.net>, based on StefView for
-BackSpace by Darcy Brockbank and on several other xscreensaver hacks.
-
diff --git a/hacks/squiral.c b/hacks/squiral.c
deleted file mode 100644 (file)
index fb7868f..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-/* squiral, by "Jeff Epler" <jepler@inetnebr.com>, 18-mar-1999.
- *
- * 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"
-#include "colors.h"
-#include "erase.h"
-#include "yarandom.h"
-
-#define R(x)  (abs(random())%x)
-#define PROB(x) (abs(random())<(x*(double)RAND_MAX))
-
-#define NCOLORSMAX 255
-static int width, height, count, cycle;
-static double frac, disorder, handedness;
-static int ncolors=0;
-static GC draw_gc, erase_gc;
-static XColor colors[NCOLORSMAX];
-#define STATES 8
-
-/* 0- 3 left-winding  */
-/* 4- 7 right-winding */
-
-#define CLEAR1(x,y) (!fill[((y)%height)*width+(x)%width])
-#define MOVE1(x,y) (fill[((y)%height)*width+(x)%width]=1, XDrawPoint(dpy, window, draw_gc, (x)%width,(y)%height), cov++)
-
-static int cov;
-static int dirh[4];
-static int dirv[4];
-
-static int *fill;
-
-#define CLEARDXY(x,y,dx,dy) CLEAR1(x+dx, y+dy) && CLEAR1(x+dx+dx, y+dy+dy)
-#define MOVEDXY(x,y,dx,dy)  MOVE1 (x+dx, y+dy), MOVE1 (x+dx+dx, y+dy+dy)
-
-#define CLEAR(d) CLEARDXY(w->h,w->v, dirh[d],dirv[d])
-#define MOVE(d) (XSetForeground(dpy, draw_gc, colors[w->c].pixel), \
-                  MOVEDXY(w->h,w->v, dirh[d],dirv[d]), \
-                 w->h=w->h+dirh[d]*2, \
-                 w->v=w->v+dirv[d]*2, dir=d)
-
-#define RANDOM (void) (w->h = R(width), w->v = R(height), w->c = R(ncolors), \
-                 type=R(2), dir=R(4), (cycle && (w->cc=R(3)+ncolors)))
-
-struct worm {
-    int h;
-    int v;
-    int s;
-    int c;
-    int cc;
-} *worms;
-
-#define SUCC(x) ((x+1)%4)
-#define PRED(x) ((x+3)%4)
-#define CCW     PRED(dir)
-#define CW      SUCC(dir)
-#define REV     ((dir+2)%4)
-#define STR     (dir)
-#define TRY(x)  if (CLEAR(x)) { MOVE(x); break; }
-
-static void
-do_worm(Display *dpy, Window window, struct worm *w)
-{
-    int type = w->s / 4;
-    int dir = w->s % 4;
-
-    w->c = (w->c+w->cc) % ncolors;
-
-    if (PROB(disorder)) type=PROB(handedness);
-    switch(type) {
-    case 0: /* CCW */
-       TRY(CCW)
-       TRY(STR)
-       TRY(CW)
-       RANDOM;
-       break;
-    case 1: /* CW */
-       TRY(CW)
-       TRY(STR)
-       TRY(CCW)
-       RANDOM;
-       break;
-    }
-    w->s = type*4+dir;
-    w->h = w->h % width;
-    w->v = w->v % height;
-}
-
-static void
-init_squiral(Display *dpy, Window window)
-{
-    XGCValues gcv;
-    Colormap cmap;
-    XWindowAttributes xgwa;
-    Bool writeable = False;
-    int i;
-
-    XClearWindow(dpy, window);
-    XGetWindowAttributes(dpy, window, &xgwa);
-    width  = xgwa.width;
-    height = xgwa.height;
-
-    cmap = xgwa.colormap;
-    gcv.foreground = get_pixel_resource("foreground",
-       "Foreground", dpy, cmap);
-    draw_gc = XCreateGC(dpy, window, GCForeground, &gcv);
-    gcv.foreground = get_pixel_resource ("background", "Background",dpy, cmap);
-    erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-    cmap = xgwa.colormap;
-    if( ncolors ) {
-        free_colors(dpy, cmap, colors, ncolors);
-        ncolors = 0;
-    }
-    if( mono_p ) {
-      ncolors=1;
-      colors[0].pixel=get_pixel_resource("foreground","Foreground", dpy, cmap);
-    } else {
-      ncolors = get_integer_resource("ncolors", "Integer");
-      if (ncolors < 0 || ncolors > NCOLORSMAX)
-        ncolors = NCOLORSMAX;
-      make_uniform_colormap(dpy, xgwa.visual, cmap, colors, &ncolors, True,
-         &writeable, False);
-      if (ncolors <= 0) {
-        ncolors = 1;
-        colors[0].pixel=get_pixel_resource("foreground","Foreground",dpy, cmap);
-      }
-    }
-    count= get_integer_resource("count", "Integer");
-    frac = get_integer_resource("fill",  "Integer")*0.01;
-    cycle= get_boolean_resource("cycle", "Cycle");
-    disorder=get_float_resource("disorder", "Float");
-    handedness=get_float_resource("handedness", "Float");
-
-    if(frac<0.01) frac=0.01;
-    if(frac>0.99) frac=0.99;
-    if(count==0) count=width/32;
-    if(count<1) count=1;
-    if(count>1000) count=1000;
-
-    if(worms) free(worms);
-    if(fill)  free(fill);
-
-    worms=calloc(count, sizeof(struct worm));
-    fill=calloc(width*height, sizeof(int));
-
-    dirh[0]=0; dirh[1]=1; dirh[2]=0; dirh[3]=width-1;
-    dirv[0]=height-1; dirv[1]=0; dirv[2]=1; dirv[3]=0;
-    for(i=0;i<count;i++) {
-       worms[i].h=R(width);
-       worms[i].v=R(height);
-       worms[i].s=R(4)+4*PROB(handedness);
-       worms[i].c=R(ncolors);
-       if(cycle) { worms[i].cc=R(3)+ncolors; }
-       else worms[i].cc=0;
-    }
-}
-
-void
-screenhack(Display *dpy, Window window)
-{
-   int inclear, i;
-   int delay= get_integer_resource("delay", "Integer");
-   init_squiral(dpy, window);
-   cov=0; inclear=height;
-   while(1) {
-       if(inclear<height) {
-           XDrawLine(dpy, window, erase_gc, 0, inclear, width-1, inclear);
-           memset(&fill[inclear*width], 0, sizeof(int)*width);
-           XDrawLine(dpy, window, erase_gc, 0, height-inclear-1, width-1,
-                   height-inclear-1);
-           memset(&fill[(height-inclear-1)*width], 0, sizeof(int)*width);
-           inclear++;
-           XDrawLine(dpy, window, erase_gc, 0, inclear, width-1, inclear);
-           memset(&fill[inclear*width], 0, sizeof(int)*width);
-           XDrawLine(dpy, window, erase_gc, 0, height-inclear-1, width-1,
-                   height-inclear-1);
-           memset(&fill[(height-inclear-1)*width], 0, sizeof(int)*width);
-           inclear++;
-           if(inclear>height/2) inclear=height;
-       }
-       else if(cov>(frac*width*height)) {
-           inclear=0;
-           cov=0;
-       }
-       for(i=0;i<count;i++) do_worm(dpy, window, &worms[i]);
-       screenhack_handle_events(dpy);
-       usleep(delay);
-    }  
-}
-
-char *progclass="Squiral";
-
-char *defaults[] = {
-  ".background: black",
-  ".foreground: white",
-  "*fill:       75",
-  "*count:      0",
-  "*ncolors:    100",
-  "*delay:      1000",
-  "*disorder:   0.005",
-  "*cycle:      False",
-  "*handedness: .5",
-  0
-};
-
-XrmOptionDescRec options[] = {
-    {"-fill", ".fill", XrmoptionSepArg, 0},
-    {"-count", ".count", XrmoptionSepArg, 0},
-    {"-delay", ".delay", XrmoptionSepArg, 0},
-    {"-disorder", ".disorder", XrmoptionSepArg, 0},
-    {"-handedness", ".handedness", XrmoptionSepArg, 0},
-    {"-ncolors", ".ncolors", XrmoptionSepArg, 0},
-    {"-cycle", ".cycle", XrmoptionNoArg, "True"},
-    {"-no-cycle", ".cycle", XrmoptionNoArg, "False"},
-    { 0, 0, 0, 0 }
-};
diff --git a/hacks/squiral.man b/hacks/squiral.man
deleted file mode 100644 (file)
index 9e3ce5f..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-.TH XScreenSaver 1 "18-mar-1999" "X Version 11"
-.SH NAME
-squiral - square spirals screensaver
-.SH SYNOPSIS
-.B squiral
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-noinstall] [\-visual \fIvisual\fP] [\-fill \fIpercent\fP] [-count
-\fInumber\fP] [-delay \fIusec\fP] [-disorder \fIfraction\fP] [-handedness
-\fIfraction\fP] [-cycle]
-.SH DESCRIPTION
-The \fIsquiral\fP program displays interacting, spiral-producing automata
-
-.SH OPTIONS
-.I squiral
-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 \-fill \fIpercent\fP
-Specify the percent (0-100) of the screen which must be filled before
-the screen is cleared.  60-80 percent are good values.
-.TP 8
-.B \-count \fInumber\fP
-The number of squiralies.  By default, the screen width divided by 32.
-.TP 8
-.B \-delay \fIusec\fP
-The wait between steps.  The default is 1000.
-.TP 8
-.B \-disorder \fIfraction\fP
-The fraction of the time a squiraly will choose a new direction.
-The default is 0.005.
-.TP 8
-.B \-handedness \fIfraction\fP
-The fraction of the time a squiraly will choose to enter lefthanded
-mode.  0.0 means exclusively right-handed behavior, 0.5 (the default) is
-a balance between the two, and 1.0 is exclusively left-handed behaviour.
-.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
-None known
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver (1)
-.SH COPYRIGHT
-Copyright \(co 1999, by Jeff Epler.  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
-Jeff Epler <jepler@inetnebr.com>, 18-mar-1999
-
diff --git a/hacks/starfish.c b/hacks/starfish.c
deleted file mode 100644 (file)
index 070c034..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-/* xscreensaver, Copyright (c) 1997, 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 <math.h>
-#include <sys/time.h> /* for gettimeofday() */
-#include "screenhack.h"
-#include "spline.h"
-
-
-static Colormap cmap;
-static Bool cycle_p;
-static XColor *colors;
-static int ncolors;
-static int fg_index;
-static GC gc;
-
-#define SCALE        1000      /* fixed-point math, for sub-pixel motion */
-
-
-#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n))))
-#define RANDSIGN() ((random() & 1) ? 1 : -1)
-
-enum starfish_mode {
-  pulse,
-  zoom
-};
-  
-
-struct starfish {
-  enum starfish_mode mode;
-  Bool blob_p;
-  int skip;
-  long x, y;           /* position of midpoint */
-  double th;           /* angle of rotation */
-  double rotv;         /* rotational velocity */
-  double rota;         /* rotational acceleration */
-  long elasticity;     /* how fast it deforms: radial velocity */
-  double rot_max;
-  long min_r, max_r;   /* radius range */
-  int npoints;         /* control points */
-  long *r;             /* radii */
-  spline *spline;
-  XPoint *prev;
-  int n_prev;
-};
-
-static struct starfish *
-make_starfish (int maxx, int maxy, int size)
-{
-  struct starfish *s = (struct starfish *) calloc(1, sizeof(*s));
-  int i;
-  int mid;
-
-  s->blob_p = get_boolean_resource ("blob", "Blob");
-  s->elasticity = SCALE * get_float_resource ("thickness", "Thickness");
-
-  if (s->elasticity == 0)
-    /* bell curve from 0-15, avg 7.5 */
-    s->elasticity = RAND(5*SCALE) + RAND(5*SCALE) + RAND(5*SCALE);
-
-  s->rotv = get_float_resource ("rotation", "Rotation");
-  if (s->rotv == -1)
-    /* bell curve from 0-12 degrees, avg 6 */
-    s->rotv = frand(4) + frand(4) + frand(4);
-
-  s->rotv /= 360;  /* convert degrees to ratio */
-
-  if (s->blob_p)
-    {
-      s->elasticity *= 3;
-      s->rotv *= 3;
-    }
-
-  s->rot_max = s->rotv * 2;
-  s->rota = 0.0004 + frand(0.0002);
-
-
-  if (! (random() % 20))
-    size *= frand(0.35) + frand(0.35) + 0.3;
-
-  {
-    static char skips[] = { 2, 2, 2, 2,
-                           3, 3, 3,
-                           6, 6,
-                           12 };
-    s->skip = skips[random() % sizeof(skips)];
-  }
-
-  if (! (random() % (s->skip == 2 ? 3 : 12)))
-    s->mode = zoom;
-  else
-    s->mode = pulse;
-
-  maxx *= SCALE;
-  maxy *= SCALE;
-  size *= SCALE;
-
-  s->max_r = size;
-  s->min_r = 0;
-
-  if (s->min_r < (5*SCALE)) s->min_r = (5*SCALE);
-  mid = ((s->min_r + s->max_r) / 2);
-
-  s->x = maxx/2;
-  s->y = maxy/2;
-
-  s->th = frand(M_PI+M_PI) * RANDSIGN();
-
-  {
-    static char sizes[] = { 3, 3, 3, 3, 3,
-                           4, 4, 4, 4,
-                           5, 5, 5, 5, 5, 5,
-                           8, 8, 8,
-                           10,
-                           35 };
-    int nsizes = sizeof(sizes);
-    if (s->skip > 3)
-      nsizes -= 4;
-    s->npoints = s->skip * sizes[random() % nsizes];
-  }
-
-  s->spline = make_spline (s->npoints);
-  s->r = (long *) malloc (sizeof(*s->r) * s->npoints);
-
-  for (i = 0; i < s->npoints; i++)
-    s->r[i] = ((i % s->skip) == 0) ? 0 : size;
-
-  return s;
-}
-
-
-static void
-free_starfish (struct starfish *s)
-{
-  if (s->r) free (s->r);
-  if (s->prev) free (s->prev);
-  if (s->spline)
-    {
-      if (s->spline->control_x) free (s->spline->control_x);
-      if (s->spline->control_y) free (s->spline->control_y);
-      if (s->spline->points) free (s->spline->points);
-      free (s->spline);
-    }
-  free (s);
-}
-
-
-static void 
-throb_starfish (struct starfish *s)
-{
-  int i;
-  double frac = ((M_PI+M_PI) / s->npoints);
-
-  for (i = 0; i < s->npoints; i++)
-    {
-      long r = s->r[i];
-      long ra = (r > 0 ? r : -r);
-      double th = (s->th > 0 ? s->th : -s->th);
-      long x, y;
-      long elasticity = s->elasticity;
-
-      /* place control points evenly around perimiter, shifted by theta */
-      x = s->x + ra * cos (i * frac + th);
-      y = s->y + ra * sin (i * frac + th);
-
-      s->spline->control_x[i] = x / SCALE;
-      s->spline->control_y[i] = y / SCALE;
-
-      if (s->mode == zoom && ((i % s->skip) == 0))
-       continue;
-
-      /* Slow down near the end points: move fastest in the middle. */
-      {
-       double ratio = (double)ra / (double)(s->max_r - s->min_r);
-       if (ratio > 0.5) ratio = 1-ratio;       /* flip */
-       ratio *= 2;                             /* normalize */
-       ratio = (ratio * 0.9) + 0.1;            /* fudge */
-       elasticity *= ratio;
-      }
-
-
-      /* Increase/decrease radius by elasticity */
-      ra += (r >= 0 ? elasticity : -elasticity);
-      if ((i % s->skip) == 0)
-       ra += (elasticity / 2);
-
-      r = ra * (r >= 0 ? 1 : -1);
-
-      /* If we've reached the end (too long or too short) reverse direction. */
-      if ((ra > s->max_r && r >= 0) ||
-         (ra < s->min_r && r < 0))
-       r = -r;
-
-      s->r[i] = r;
-    }
-}
-
-
-static void
-spin_starfish (struct starfish *s)
-{
-  double th = s->th;
-  if (th < 0)
-    th = -(th + s->rotv);
-  else
-    th += s->rotv;
-
-  if (th > (M_PI+M_PI))
-    th -= (M_PI+M_PI);
-  else if (th < 0)
-    th += (M_PI+M_PI);
-
-  s->th = (s->th > 0 ? th : -th);
-
-  s->rotv += s->rota;
-
-  if (s->rotv > s->rot_max || 
-      s->rotv < -s->rot_max)
-    {
-      s->rota = -s->rota;
-    }
-  /* If it stops, start it going in the other direction. */
-  else if (s->rotv < 0)
-    {
-      if (random() & 1)
-       {
-         /* keep going in the same direction */
-         s->rotv = 0;
-         if (s->rota < 0)
-           s->rota = -s->rota;
-       }
-      else
-       {
-         /* reverse gears */
-         s->rotv = -s->rotv;
-         s->rota = -s->rota;
-         s->th = -s->th;
-       }
-    }
-
-
-  /* Alter direction of rotational acceleration randomly. */
-  if (! (random() % 120))
-    s->rota = -s->rota;
-
-  /* Change acceleration very occasionally. */
-  if (! (random() % 200))
-    {
-      if (random() & 1)
-       s->rota *= 1.2;
-      else
-       s->rota *= 0.8;
-    }
-}
-
-
-static void
-draw_starfish (Display *dpy, Drawable drawable, GC gc, struct starfish *s,
-          Bool fill_p)
-{
-  compute_closed_spline (s->spline);
-  if (s->prev)
-    {
-      XPoint *points = (XPoint *)
-       malloc (sizeof(XPoint) * (s->n_prev + s->spline->n_points + 2));
-      int i = s->spline->n_points;
-      int j = s->n_prev;
-      memcpy (points, s->spline->points, (i * sizeof(*points)));
-      memcpy (points+i, s->prev, (j * sizeof(*points)));
-
-      if (s->blob_p)
-       XClearWindow (dpy, drawable);
-      XFillPolygon (dpy, drawable, gc, points, i+j, Complex, CoordModeOrigin);
-      free (points);
-
-      free (s->prev);
-      s->prev = 0;
-    }
-
-  s->prev = (XPoint *) malloc (s->spline->n_points * sizeof(XPoint));
-  memcpy (s->prev, s->spline->points, s->spline->n_points * sizeof(XPoint));
-  s->n_prev = s->spline->n_points;
-
-#ifdef DEBUG
-  if (s->blob_p)
-    {
-      int i;
-      for (i = 0; i < s->npoints; i++)
-       XDrawLine (dpy, drawable, gc, s->x/SCALE, s->y/SCALE,
-                  s->spline->control_x[i], s->spline->control_y[i]);
-    }
-#endif
-}
-
-
-static struct starfish *
-make_window_starfish (Display *dpy, Window window)
-{
-  XWindowAttributes xgwa;
-  int size;
-  Bool blob_p = get_boolean_resource ("blob", "Blob");
-  XGetWindowAttributes (dpy, window, &xgwa);
-  size = (xgwa.width < xgwa.height ? xgwa.width : xgwa.height);
-  if (blob_p) size /= 2;
-  else size *= 1.3;
-  return make_starfish (xgwa.width, xgwa.height, size);
-}
-
-
-static struct starfish *
-init_starfish (Display *dpy, Window window)
-{
-  static Bool first_time = True;
-  XGCValues gcv;
-  XWindowAttributes xgwa;
-  Bool blob_p = get_boolean_resource ("blob", "Blob");
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  cmap = xgwa.colormap;
-  cycle_p = get_boolean_resource ("cycle", "Cycle");
-
-  if (!first_time)
-    {
-      if (colors && ncolors)
-       free_colors (dpy, cmap, colors, ncolors);
-      if (colors)
-       free (colors);
-      colors = 0;
-    }
-
-  ncolors = get_integer_resource ("colors", "Colors");
-  if (ncolors < 2) ncolors = 2;
-  if (ncolors <= 2) mono_p = True;
-
-  if (mono_p)
-    colors = 0;
-  else
-    colors = (XColor *) malloc(sizeof(*colors) * (ncolors+1));
-
-  if (mono_p || blob_p)
-    cycle_p = False;
-
-  if (mono_p)
-    ;
-  else if (random() % 3)
-    make_smooth_colormap (dpy, xgwa.visual, cmap, colors, &ncolors,
-                         True, &cycle_p, True);
-  else
-    make_uniform_colormap (dpy, xgwa.visual, cmap, colors, &ncolors,
-                          True, &cycle_p, True);
-
-  if (ncolors < 2) ncolors = 2;
-  if (ncolors <= 2) mono_p = True;
-
-  if (mono_p) cycle_p = False;
-
-  fg_index = 0;
-
-  if (!mono_p && !blob_p)
-    {
-      gcv.foreground = colors[fg_index].pixel;
-      XSetWindowBackground (dpy, window, gcv.foreground);
-    }
-
-  if (first_time)
-    {
-      XClearWindow (dpy, window);
-      first_time = False;
-    }
-
-  gcv.fill_rule = EvenOddRule;
-  gc = XCreateGC (dpy, window, GCForeground | GCFillRule, &gcv);
-
-  return make_window_starfish (dpy, window);
-}
-
-
-
-static void
-run_starfish (Display *dpy, Window window, struct starfish *s)
-{
-  throb_starfish (s);
-  spin_starfish (s);
-  draw_starfish (dpy, window, gc, s, False);
-
-  if (mono_p)
-    {
-      static Bool init = False;
-      static unsigned long black, white;
-      if (!init)
-       {
-         black = get_pixel_resource ("background", "Background", dpy, cmap);
-         white = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-         init = True;
-         fg_index = white;
-         XSetForeground (dpy, gc, fg_index);
-       }
-      else if (!s->blob_p)
-       {
-         fg_index = (fg_index == black ? white : black);
-         XSetForeground (dpy, gc, fg_index);
-       }
-    }
-  else
-    {
-      fg_index = (fg_index + 1) % ncolors;
-      XSetForeground (dpy, gc, colors [fg_index].pixel);
-    }
-}
-
-
-
-\f
-char *progclass = "Starfish";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*delay:             10000",
-  "*cycleDelay:                100000",
-  "*thickness:         0",             /* pixels, 0 = random */
-  "*rotation:          -1",            /* degrees, -1 = "random" */
-  "*colors:            200",
-  "*cycle:             true",
-  "*duration:          30",
-  "*delay2:            5",
-  "*blob:              false",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-delay2",         ".delay2",      XrmoptionSepArg, 0 },
-  { "-cycle-delay",    ".cycleDelay",  XrmoptionSepArg, 0 },
-  { "-thickness",      ".thickness",   XrmoptionSepArg, 0 },
-  { "-rotation",       ".rotation",    XrmoptionSepArg, 0 },
-  { "-colors",         ".colors",      XrmoptionSepArg, 0 },
-  { "-cycle",          ".cycle",       XrmoptionNoArg, "True" },
-  { "-no-cycle",       ".cycle",       XrmoptionNoArg, "False" },
-  { "-duration",       ".duration",    XrmoptionSepArg, 0 },
-  { "-blob",           ".blob",        XrmoptionNoArg, "True" },
-  { "-no-blob",                ".blob",        XrmoptionNoArg, "False" },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  struct starfish *s = init_starfish (dpy, window);
-  int delay = get_integer_resource ("delay", "Delay");
-  int delay2 = get_integer_resource ("delay2", "Delay") * 1000000;
-  int cycle_delay = get_integer_resource ("cycleDelay", "Delay");
-  int duration = get_seconds_resource ("duration", "Seconds");
-  Bool blob_p = get_boolean_resource ("blob", "Blob");
-  time_t start = time ((time_t) 0);
-  time_t now;
-  int direction = (random() % 1) ? 1 : -1;
-
-  if (blob_p)
-    delay *= 3;
-
-  while (1)
-    {
-      run_starfish (dpy, window, s);
-      XSync (dpy, False);
-
-      screenhack_handle_events (dpy);
-      if (cycle_p && cycle_delay)
-       {
-         if (cycle_delay <= delay)
-           {
-             int i = 0;
-             while (i < delay)
-               {
-                 rotate_colors (dpy, cmap, colors, ncolors, direction);
-                 usleep(cycle_delay);
-                 i += cycle_delay;
-               }
-           }
-         else
-           {
-             static long tick = 0;
-             if (tick >= cycle_delay)
-               {
-                 rotate_colors (dpy, cmap, colors, ncolors, direction);
-                 tick = 0;
-               }
-             if (delay)
-               usleep(delay);
-             tick += delay;
-           }
-
-         if (! (random() % 1000))
-           direction = -direction;
-       }
-      else if (delay)
-       usleep (delay);
-
-      if (duration > 0)
-       {
-         now = time ((time_t) 0);
-         if (start + duration < now)
-           {
-             start = now;
-
-             free_starfish (s);
-
-             if (delay2 && !blob_p && cycle_p)
-               {
-                 int i = 0;
-                 while (i < delay2)
-                   {
-                     rotate_colors (dpy, cmap, colors, ncolors, direction);
-                      screenhack_handle_events (dpy);
-                     usleep(cycle_delay);
-                     i += cycle_delay;
-                   }
-               }
-
-             /* Every now and then, pick new colors; otherwise, just build
-                a new starfish with the current colors. */
-             if (! (random () % 10))
-               s = init_starfish (dpy, window);
-             else
-               s = make_window_starfish(dpy, window);
-           }
-       }
-    }
-}
diff --git a/hacks/starfish.man b/hacks/starfish.man
deleted file mode 100644 (file)
index 63c70d4..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-.TH XScreenSaver 1 "14-Jun-97" "X Version 11"
-.SH NAME
-starfish - radially-symmetric throbbing colormap-hacking graphics demo
-.SH SYNOPSIS
-.B starfish
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-delay2 \fIsecs\fP] [\-cycle\-delay2 \fIusecs\fP] [\-thickness \fIpixels\fP] [\-rotation \fIdegrees\fP] [\-duration \fIseconds\fP] [\-colors \fIint\fP] [\-cycle] [\-no\-cycle] [\-blob] [\-no\-blob]
-.SH DESCRIPTION
-The \fIstarfish\fP program draws radially symmetric objects, which expand,
-contract, rotate, and turn inside out.  It uses these shapes to lay down a
-field of smooth colors, and then rotates the colormap.
-.SH OPTIONS
-.I starfish
-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 10000, or about 1/100th second.
-.TP 8
-.B \-cycle\-delay \fImicroseconds\fP
-How long to wait between shifing the colormap by one step.
-Default 100000, or about 1/10th second.
-.TP 8
-.B \-thickness \fIpixels\fP
-How wide each color band should be.  Default 0, meaning random (the chosen
-value will be between 0 and 15.)
-.TP 8
-.B \-rotation \fIdegrees\fP
-How quickly the objects should rotate at each step.  Default 0, meaning 
-random (the chosen value will be between 0 and 12 degrees.)
-.TP 8
-.B \-colors \fIint\fP
-How many colors to use.  Default 200.  The more colors, the smoother the
-transitions will be, and the nicer the resultant images.
-.TP 8
-.B \-cycle
-.TP 8
-.B \-no\-cycle
-Whether to do colormap cycling.  Default true.
-.TP 8
-.B \-duration \fIseconds\fP
-How long to run before choosing a new shape.  Default 30 seconds.
-.TP 8
-.B \-delay2 \fIseconds\fP
-When \fIduration\fP expires, how long to wait before starting a new run.
-Default 5 seconds.
-.TP 8
-.B \-blob
-.TP 8
-.B \-no\-blob
-If \fIblob\fP option is specified, then the raw shapes will be shown, 
-instead of a field of colors generated from them.
-.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 1997 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 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>, 14-Jun-97.
diff --git a/hacks/strange.c b/hacks/strange.c
deleted file mode 100644 (file)
index a1bda34..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * strange --- Strange attractors are not so hard to find...
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)strange.c       4.02 97/04/01 xlockmore";
-#endif
-
-/* Copyright (c) 1997 by Massimino Pascal (Pascal.Massimon@ens.fr)
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 30-Jul-98: sineswiper@resonatorsoft.com: added curve factor (discovered
- *         while experimenting with the Gauss_Rand function).
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- *                       Made it render into an offscreen bitmap and then copy
- *                       that onto the screen, to reduce flicker.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Strange"
-# define HACK_INIT                                     init_strange
-# define HACK_DRAW                                     draw_strange
-# define strange_opts                          xlockmore_opts
-# define DEFAULTS      "*delay:                2000  \n"                       \
-                                       "*ncolors:              100   \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-/*****************************************************/
-/*****************************************************/
-
-typedef float DBL;
-typedef int PRM;
-
-#define UNIT (1<<12)
-#define UNIT2 (1<<14)
-/* #define UNIT2 (3140*UNIT/1000) */
-
-#define SKIP_FIRST      100
-#define MAX_POINTS      5500
-#define DBL_To_PRM(x)  (PRM)( (DBL)(UNIT)*(x) )
-
-
-#define DO_FOLD(a) (a)<0 ? -Fold[ (-(a))&(UNIT2-1) ] : Fold[ (a)&(UNIT2-1) ]
-
-/* 
-   #define DO_FOLD(a) (a)<-UNIT2 ? -Fold[(-(a))%UNIT2] : (a)<0 ? -Fold[ -(a) ] 
-
-   :  \ (a)>UNIT2 ? Fold[ (a)%UNIT2 ] : Fold[ (a) ] */
-/* #define DO_FOLD(a) DBL_To_PRM( sin( (DBL)(a)/UNIT ) ) */
-/* 
-   #define DO_FOLD(a) (a)<0 ? DBL_To_PRM( exp( 16.0*(a)/UNIT2 ) )-1.0 : \
-   DBL_To_PRM( 1.0-exp( -16.0*(a)/UNIT2 ) ) */
-
-/******************************************************************/
-
-#define MAX_PRM 3*5
-
-typedef struct {
-       DBL         Prm1[MAX_PRM], Prm2[MAX_PRM];
-       void        (*Iterate) (PRM, PRM, PRM *, PRM *);
-       XPoint     *Buffer1, *Buffer2;
-       int         Cur_Pt, Max_Pt;
-       int         Col, Count, Speed;
-       int         Width, Height;
-    Pixmap      dbuf;  /* jwz */
-    GC          dbuf_gc;
-} ATTRACTOR;
-
-static ATTRACTOR *Root;
-static PRM  xmin, xmax, ymin, ymax;
-static PRM  Prm[MAX_PRM];
-static PRM *Fold = NULL;
-
-static int curve;
-
-static XrmOptionDescRec opts[] =
-{
-       {"-curve", ".strange.curve", XrmoptionSepArg, (caddr_t) "10"},
-};
-static OptionStruct desc[] =
-{
-       {"-curve", "set the curve factor of the attractors"},
-};
-
-ModeSpecOpt strange_opts = { 1, opts, 0, NULL, desc };
-
-/******************************************************************/
-/******************************************************************/
-
-static DBL  Amp_Prm[MAX_PRM] =
-{
-       1.0, 3.5, 3.5, 2.5, 4.7,
-       1.0, 3.5, 3.6, 2.5, 4.7,
-       1.0, 1.5, 2.2, 2.1, 3.5
-};
-static DBL  Mid_Prm[MAX_PRM] =
-{
-       0.0, 1.5, 0.0, .5, 1.5,
-       0.0, 1.5, 0.0, .5, 1.5,
-       0.0, 1.5, -1.0, -.5, 2.5,
-};
-
-static      DBL
-Gauss_Rand(DBL c, DBL A, DBL S)
-{
-       DBL         y,z;
-
-       y = (DBL) LRAND() / MAXRAND;
-       z = curve / 10;
-       y = A * (z - exp(-y * y * S)) / (z - exp(-S));
-       if (NRAND(2))
-               return (c + y);
-       else
-               return (c - y);
-}
-
-static void
-Random_Prm(DBL * Prm)
-{
-       int         i;
-
-       for (i = 0; i < MAX_PRM; ++i)
-               Prm[i] = Gauss_Rand(Mid_Prm[i], Amp_Prm[i], 4.0);
-}
-
-/***************************************************************/
-
-   /* 2 examples of non-linear map */
-
-static void
-Iterate_X2(PRM x, PRM y, PRM * xo, PRM * yo)
-{
-       PRM         xx, yy, xy, x2y, y2x, Tmp;
-
-       xx = (x * x) / UNIT;
-       x2y = (xx * y) / UNIT;
-       yy = (y * y) / UNIT;
-       y2x = (yy * x) / UNIT;
-       xy = (x * y) / UNIT;
-
-       Tmp = Prm[1] * xx + Prm[2] * xy + Prm[3] * yy + Prm[4] * x2y;
-       Tmp = Prm[0] - y + (Tmp / UNIT);
-       *xo = DO_FOLD(Tmp);
-       Tmp = Prm[6] * xx + Prm[7] * xy + Prm[8] * yy + Prm[9] * y2x;
-       Tmp = Prm[5] + x + (Tmp / UNIT);
-       *yo = DO_FOLD(Tmp);
-}
-
-static void
-Iterate_X3(PRM x, PRM y, PRM * xo, PRM * yo)
-{
-       PRM         xx, yy, xy, x2y, y2x, Tmp_x, Tmp_y, Tmp_z;
-
-       xx = (x * x) / UNIT;
-       x2y = (xx * y) / UNIT;
-       yy = (y * y) / UNIT;
-       y2x = (yy * x) / UNIT;
-       xy = (x * y) / UNIT;
-
-       Tmp_x = Prm[1] * xx + Prm[2] * xy + Prm[3] * yy + Prm[4] * x2y;
-       Tmp_x = Prm[0] - y + (Tmp_x / UNIT);
-       Tmp_x = DO_FOLD(Tmp_x);
-
-       Tmp_y = Prm[6] * xx + Prm[7] * xy + Prm[8] * yy + Prm[9] * y2x;
-       Tmp_y = Prm[5] + x + (Tmp_y / UNIT);
-
-       Tmp_y = DO_FOLD(Tmp_y);
-
-       Tmp_z = Prm[11] * xx + Prm[12] * xy + Prm[13] * yy + Prm[14] * y2x;
-       Tmp_z = Prm[10] + x + (Tmp_z / UNIT);
-       Tmp_z = UNIT + Tmp_z * Tmp_z / UNIT;
-
-       *xo = (Tmp_x * UNIT) / Tmp_z;
-       *yo = (Tmp_y * UNIT) / Tmp_z;
-}
-
-static void (*Funcs[2]) (PRM, PRM, PRM *, PRM *) = {
-       Iterate_X2, Iterate_X3
-};
-
-/***************************************************************/
-
-void
-draw_strange(ModeInfo * mi)
-{
-       int         i, j, n, Max_Colors, Cur_Pt;
-       PRM         x, y, xo, yo;
-       DBL         u;
-       ATTRACTOR  *A;
-       XPoint     *Buf;
-       Display    *display;
-       GC          gc;
-       Window      window;
-       DBL         Lx, Ly;
-       void        (*Iterate) (PRM, PRM, PRM *, PRM *);
-
-       display = MI_DISPLAY(mi);
-       window = MI_WINDOW(mi);
-       gc = MI_GC(mi);
-       Max_Colors = MI_NPIXELS(mi);
-
-       A = &Root[MI_SCREEN(mi)];
-
-       Cur_Pt = A->Cur_Pt;
-       Iterate = A->Iterate;
-
-       u = (DBL) (A->Count) / 1000.0;
-       for (j = MAX_PRM - 1; j >= 0; --j)
-               Prm[j] = DBL_To_PRM((1.0 - u) * A->Prm1[j] + u * A->Prm2[j]);
-
-       x = y = DBL_To_PRM(.0);
-       for (n = SKIP_FIRST; n; --n) {
-               (*Iterate) (x, y, &xo, &yo);
-               x = xo + NRAND(8) - 4;
-               y = yo + NRAND(8) - 4;
-       }
-
-       xmax = 0;
-       xmin = UNIT * 4;
-       ymax = 0;
-       ymin = UNIT * 4;
-       A->Cur_Pt = 0;
-       Buf = A->Buffer2;
-       Lx = (DBL) A->Width / UNIT / 2.2;
-       Ly = (DBL) A->Height / UNIT / 2.2;
-       for (n = A->Max_Pt; n; --n) {
-               (*Iterate) (x, y, &xo, &yo);
-               Buf->x = (short) (Lx * (x + DBL_To_PRM(1.1)));
-               Buf->y = (short) (Ly * (DBL_To_PRM(1.1) - y));
-               /* (void) fprintf( stderr, "X,Y: %d %d    ", Buf->x, Buf->y ); */
-               Buf++;
-               A->Cur_Pt++;
-               if (xo > xmax)
-                       xmax = xo;
-               else if (xo < xmin)
-                       xmin = xo;
-               if (yo > ymax)
-                       ymax = yo;
-               else if (yo < ymin)
-                       ymin = yo;
-               x = xo + NRAND(8) - 4;
-               y = yo + NRAND(8) - 4;
-       }
-
-       XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-
-       if (A->dbuf)    /* jwz */
-         {
-               XSetForeground(display, A->dbuf_gc, 0);
-/*         XDrawPoints(display, A->dbuf, A->dbuf_gc, A->Buffer1,
-                                   Cur_Pt,CoordModeOrigin);*/
-               XFillRectangle(display, A->dbuf, A->dbuf_gc, 0,0, A->Width, A->Height);
-         }
-       else
-         XDrawPoints(display, window, gc, A->Buffer1, Cur_Pt, CoordModeOrigin);
-
-       if (Max_Colors < 2)
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-       else
-               XSetForeground(display, gc, MI_PIXEL(mi, A->Col % Max_Colors));
-
-       if (A->dbuf)
-         {
-               XSetForeground(display, A->dbuf_gc, 1);
-               XDrawPoints(display, A->dbuf, A->dbuf_gc, A->Buffer2, A->Cur_Pt,
-                                       CoordModeOrigin);
-         }
-       else
-         XDrawPoints(display, window, gc, A->Buffer2, A->Cur_Pt, CoordModeOrigin);
-
-       if (A->dbuf)
-         XCopyPlane(display, A->dbuf, window, gc, 0,0,A->Width,A->Height,0,0, 1);
-
-       Buf = A->Buffer1;
-       A->Buffer1 = A->Buffer2;
-       A->Buffer2 = Buf;
-
-       if ((xmax - xmin < DBL_To_PRM(.2)) && (ymax - ymin < DBL_To_PRM(.2)))
-               A->Count += 4 * A->Speed;
-       else
-               A->Count += A->Speed;
-       if (A->Count >= 1000) {
-               for (i = MAX_PRM - 1; i >= 0; --i)
-                       A->Prm1[i] = A->Prm2[i];
-               Random_Prm(A->Prm2);
-               A->Count = 0;
-       }
-       A->Col++;
-}
-
-
-/***************************************************************/
-
-void
-init_strange(ModeInfo * mi)
-{
-       ATTRACTOR  *Attractor;
-
-       curve = get_integer_resource ("curve", "Integer");
-       if (curve <= 0) curve = 10;
-
-       if (Root == NULL) {
-               Root = (ATTRACTOR *) calloc(
-                                    MI_NUM_SCREENS(mi), sizeof (ATTRACTOR));
-               if (Root == NULL)
-                       return;
-       }
-       if (Fold == NULL) {
-               int         i;
-
-               Fold = (PRM *) calloc(UNIT2 + 1, sizeof (PRM));
-               if (Fold == NULL)
-                       return;
-               for (i = 0; i <= UNIT2; ++i) {
-                       DBL         x;
-
-                       /* x = ( DBL )(i)/UNIT2; */
-                       /* x = sin( M_PI/2.0*x ); */
-                       /* x = sqrt( x ); */
-                       /* x = x*x; */
-                       /* x = x*(1.0-x)*4.0; */
-                       x = (DBL) (i) / UNIT;
-                       x = sin(x);
-                       Fold[i] = DBL_To_PRM(x);
-               }
-       }
-       Attractor = &Root[MI_SCREEN(mi)];
-
-       Attractor->Buffer1 = (XPoint *) calloc(MAX_POINTS, sizeof (XPoint));
-       if (Attractor->Buffer1 == NULL)
-               goto Abort;
-       Attractor->Buffer2 = (XPoint *) calloc(MAX_POINTS, sizeof (XPoint));
-       if (Attractor->Buffer2 == NULL)
-               goto Abort;
-       Attractor->Max_Pt = MAX_POINTS;
-
-       Attractor->Width = MI_WIN_WIDTH(mi);
-       Attractor->Height = MI_WIN_HEIGHT(mi);
-       Attractor->Cur_Pt = 0;
-       Attractor->Count = 0;
-       Attractor->Col = NRAND(MI_NPIXELS(mi));
-       Attractor->Speed = 4;
-
-       Attractor->Iterate = Funcs[NRAND(2)];
-       Random_Prm(Attractor->Prm1);
-       Random_Prm(Attractor->Prm2);
-
-       Attractor->dbuf = XCreatePixmap(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                                                       Attractor->Width, Attractor->Height, 1);
-       if (Attractor->dbuf)
-         {
-               XGCValues gcv;
-               gcv.foreground = 0;
-               gcv.background = 0;
-               gcv.function = GXcopy;
-               Attractor->dbuf_gc = XCreateGC(MI_DISPLAY(mi), Attractor->dbuf,
-                                                                          GCForeground|GCBackground|GCFunction,
-                                                                          &gcv);
-               XFillRectangle(MI_DISPLAY(mi), Attractor->dbuf,
-                                          Attractor->dbuf_gc, 0,0, Attractor->Width,
-                                          Attractor->Height);
-               XSetBackground(MI_DISPLAY(mi), MI_GC(mi), MI_WIN_BLACK_PIXEL(mi));
-               XSetFunction(MI_DISPLAY(mi), MI_GC(mi), GXcopy);
-         }
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-       return;
-
-      Abort:
-       if (Attractor->Buffer1 != NULL)
-               free(Attractor->Buffer1);
-       if (Attractor->Buffer2 != NULL)
-               free(Attractor->Buffer2);
-       Attractor->Buffer1 = NULL;
-       Attractor->Buffer2 = NULL;
-       Attractor->Cur_Pt = 0;
-       return;
-}
-
-/***************************************************************/
-
-void
-release_strange(ModeInfo * mi)
-{
-       int         i;
-
-       if (Root == NULL)
-               return;
-
-       for (i = 0; i < MI_NUM_SCREENS(mi); ++i) {
-               if (Root[i].Buffer1 != NULL)
-                       free(Root[i].Buffer1);
-               if (Root[i].Buffer2 != NULL)
-                       free(Root[i].Buffer2);
-               if (Root[i].dbuf)
-                   XFreePixmap(MI_DISPLAY(mi), Root[i].dbuf);
-               if (Root[i].dbuf_gc)
-                   XFreeGC(MI_DISPLAY(mi), Root[i].dbuf_gc);
-       }
-       free(Root);
-       Root = NULL;
-       if (Fold != NULL)
-               free(Fold);
-       Fold = NULL;
-}
diff --git a/hacks/strange.man b/hacks/strange.man
deleted file mode 100644 (file)
index 088a9ee..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-strange - draws strange attractors
-.SH SYNOPSIS
-.B strange
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
-
-.SH DESCRIPTION
-The \fIstrange\fP program draws strange attractors
-.SH OPTIONS
-.I strange
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 64.
-The colors are chosen randomly.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1997 by Massimino Pascal.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Massimino Pascal <Pascal.Massimon@ens.fr>, 1997.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/swirl.c b/hacks/swirl.c
deleted file mode 100644 (file)
index bfd2706..0000000
+++ /dev/null
@@ -1,1484 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * swirl --- swirly color-cycling patterns.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)swirl.c      4.00 97/01/01 xlockmore";
-#endif
-
-/* Copyright (c) 1994 M.Dobie <mrd@ecs.soton.ac.uk>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * 13-May-97: jwz@jwz.org: turned into a standalone program.
- * 21-Apr-95: improved startup time for TrueColour displays
- *            (limited to 16bpp to save memory) S.Early <sde1000@cam.ac.uk>
- * 09-Jan-95: fixed colour maps (more colourful) and the image now spirals
- *            outwards from the centre with a fixed number of points drawn
- *            every iteration. Thanks to M.Dobie <mrd@ecs.soton.ac.uk>.
- * 1994:      written.   Copyright (c) 1994 M.Dobie <mrd@ecs.soton.ac.uk>
- *            based on original code by R.Taylor
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Swirl"
-# define HACK_INIT                                     init_swirl
-# define HACK_DRAW                                     draw_swirl
-# define swirl_opts                                    xlockmore_opts
-# define DEFAULTS      "*count:                5       \n"                     \
-                                       "*delay:                10000   \n"                     \
-                                       "*ncolors:              200     \n"                     \
-                                       "*useSHM:               True    \n"
-# define SMOOTH_COLORS
-# define WRITABLE_COLORS
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-# include <X11/Xutil.h>
-# ifdef HAVE_XSHM_EXTENSION
-#  include "xshm.h"
-# endif /* HAVE_XSHM_EXTENSION */
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-# undef HAVE_XSHM_EXTENSION
-#endif /* !STANDALONE */
-
-ModeSpecOpt swirl_opts = {
-  0, NULL, 0, NULL, NULL };
-
-#include <time.h>
-
-/****************************************************************/
-
-#define MASS            4      /* maximum mass of a knot */
-#define MIN_RES         5      /* minimim resolution (>= MIN_RES) */
-#define MAX_RES         1      /* maximum resolution (>0) */
-#define TWO_PLANE_PCNT  30     /* probability for two plane mode (0-100) */
-#define RESTART         2500   /* number of cycles before restart */
-#define BATCH_DRAW      100    /* points to draw per iteration */
-
-/* knot types */
-typedef enum {
-       NONE = 0,
-       ORBIT = (1 << 0),
-       WHEEL = (1 << 1),
-       PICASSO = (1 << 2),
-       RAY = (1 << 3),
-       HOOK = (1 << 4),
-       ALL = (1 << 5)
-} KNOT_T;
-
-/* a knot */
-typedef struct Knot {
-       int         x, y;       /* position */
-       int         m;          /* mass */
-       KNOT_T      t;          /* type in the first (or only) plane */
-       KNOT_T      T;          /* type in second plane if there is one */
-       int         M;          /* mass in second plane if there is one */
-} KNOT     , *KNOT_P;
-
-/* a colour specification */
-typedef struct Colour {
-       unsigned short r, g, b;
-} COLOUR   , *COLOUR_P;
-
-/* drawing direction */
-typedef enum {
-       DRAW_RIGHT, DRAW_DOWN, DRAW_LEFT, DRAW_UP
-} DIR_T;
-
-/****************************************************************/
-
-/* data associated with a swirl window */
-typedef struct swirl_data {
-       /* window paramaters */
-       Window      win;        /* the window */
-       int         width, height;      /* window size */
-       int         depth;      /* depth */
-       int         rdepth;     /* real depth (for XImage) */
-       Visual     *visual;     /* visual */
-
-       /* swirl drawing parameters */
-       int         n_knots;    /* number of knots */
-       KNOT_P      knots;      /* knot details */
-       KNOT_T      knot_type;  /* general type of knots */
-       int         resolution; /* drawing resolution, 1..5 */
-       int         max_resolution;     /* maximum resolution, MAX_RES */
-       int         r;          /* pixel step */
-       Bool        two_plane;  /* two plane mode? */
-       Bool        first_plane;        /* doing first plane? */
-       int         start_again;        /* when to restart */
-
-       /* spiral drawing parameters */
-       int         x, y;       /* current point */
-       DIR_T       direction;  /* current direction */
-       int         dir_todo, dir_done;         /* how many points in current direction? */
-       int         batch_todo, batch_done;     /* how many points in this batch */
-       Bool        started, drawing;   /* are we drawing? */
-
-       /* image stuff */
-       unsigned char *image;   /* image data */
-       XImage     *ximage;
-
-       /* colours stuff */
-       int         colours;    /* how many colours possible */
-       int         dcolours;   /* how many colours for shading */
-#ifndef STANDALONE
-       Bool        fixed_colourmap;    /* fixed colourmap? */
-#endif /* !STANDALONE */
-       Bool        monochrome; /* monochrome? */
-       Colormap    cmap;       /* colour map for the window */
-       XColor     *rgb_values; /* colour definitions array */
-#ifndef STANDALONE
-       int         current_map;        /* current colour map, 0..dcolours-1 */
-       unsigned long fg, bg, white, black;     /* black and white pixel values */
-       int         shift;      /* colourmap shift */
-       int         dshift;     /* colourmap shift while drawing */
-       XColor      fgcol, bgcol;       /* foreground and background colour specs */
-#endif /* !STANDALONE */
-       Bool       off_screen;
-} SWIRL    , *SWIRL_P;
-
-#define SWIRLCOLOURS 13
-
-#ifndef STANDALONE
-/* basic colours */
-static COLOUR basic_colours[SWIRLCOLOURS];
-#endif /* !STANDALONE */
-
-/* an array of swirls for each screen */
-static SWIRL_P swirls = NULL;
-
-/* 
-   random_no
-
-   Return a random integer between 0 and n inclusive
-
-   -      n is the maximum number
-
-   Returns a random integer */
-
-static int
-random_no(unsigned int n)
-{
-       return ((int) ((n + 1) * (double) LRAND() / MAXRAND));
-}
-
-/****************************************************************/
-
-/* 
-   initialise_swirl
-
-   Initialise all the swirl data
-
-   -      swirl is the swirl data */
-
-static void
-initialise_swirl(ModeInfo * mi, SWIRL_P swirl)
-{
-#ifndef STANDALONE
-       Display    *display = MI_DISPLAY(mi);
-#endif /* !STANDALONE */
-
-       swirl->width = 0;       /* width and height of window */
-       swirl->height = 0;
-       swirl->depth = 1;
-       swirl->rdepth = 1;
-       swirl->visual = NULL;
-       swirl->resolution = MIN_RES + 1;        /* current resolution */
-       swirl->max_resolution = MAX_RES;        /* maximum resolution */
-       swirl->n_knots = 0;     /* number of knots */
-       swirl->knot_type = ALL; /* general type of knots */
-       swirl->two_plane = False;       /* two plane mode? */
-       swirl->first_plane = False;     /* doing first plane? */
-       swirl->start_again = -1;        /* restart counter */
-
-       /* drawing parameters */
-       swirl->x = 0;
-       swirl->y = 0;
-       swirl->started = False;
-       swirl->drawing = False;
-
-       /* image stuff */
-       swirl->image = NULL;    /* image data */
-       swirl->ximage = NULL;
-
-       /* colours stuff */
-       swirl->colours = 0;     /* how many colours possible */
-       swirl->dcolours = 0;    /* how many colours for shading */
-       swirl->cmap = (Colormap) NULL;
-       swirl->rgb_values = NULL;       /* colour definitions array */
-#ifndef STANDALONE
-       swirl->current_map = 0; /* current colour map, 0..dcolours-1 */
-
-       /* set up fg fb colour specs */
-       swirl->white = MI_WIN_WHITE_PIXEL(mi);
-       swirl->black = MI_WIN_BLACK_PIXEL(mi);
-#endif /* !STANDALONE */
-
-
-#ifdef STANDALONE
-# define MI_COLORMAP MI_WIN_COLORMAP
-#else /* !STANDALONE */
-       swirl->fg = MI_FG_COLOR(mi);
-       swirl->bg = MI_BG_COLOR(mi);
-       swirl->fgcol.pixel = swirl->fg;
-       swirl->bgcol.pixel = swirl->bg;
-       XQueryColor(display, MI_COLORMAP(mi), &(swirl->fgcol));
-       XQueryColor(display, MI_COLORMAP(mi), &(swirl->bgcol));
-#endif /* !STANDALONE */
-}
-
-/****************************************************************/
-
-/* 
- * initialise_image
- *
- * Initialise the image for drawing to
- *
- * -      swirl is the swirl data
- */
-static void
-initialise_image(ModeInfo * mi, SWIRL_P swirl)
-{
-  Display *dpy = MI_DISPLAY(mi);
-
-  if (swirl->ximage != NULL)
-       XDestroyImage(swirl->ximage);
-
-  swirl->ximage = 0;
-#ifdef HAVE_XSHM_EXTENSION
-  if (mi->use_shm)
-       {
-         swirl->ximage = create_xshm_image(dpy, swirl->visual, swirl->rdepth,
-                                                                               ZPixmap, 0, &mi->shm_info,
-                                                                               swirl->width, swirl->height);
-         if (!swirl->ximage)
-               mi->use_shm = False;
-       }
-#endif /* HAVE_XSHM_EXTENSION */
-
-  if (!swirl->ximage)
-       {
-         swirl->ximage = XCreateImage(dpy, swirl->visual, swirl->rdepth, ZPixmap,
-                                                                  0, 0, swirl->width, swirl->height,
-                                                                  8, 0);
-         swirl->image = (unsigned char *)
-        calloc(swirl->height, swirl->ximage->bytes_per_line);
-      swirl->ximage->data = (char *) swirl->image;
-       }
-}
-
-/****************************************************************/
-
-#ifndef STANDALONE
-/* 
- * initialise_colours
- *
- * Initialise the list of colours from which the colourmaps are derived
- *
- * -      colours is the array to initialise
- * -      saturation is the saturation value to use 0->grey,
- *            1.0->full saturation
- */
-static void
-initialise_colours(COLOUR * colours, float saturate)
-{
-       int         i;
-
-       /* start off fully saturated, medium and bright colours */
-       colours[0].r = 0xA000;
-       colours[0].g = 0x0000;
-       colours[0].b = 0x0000;
-       colours[1].r = 0xD000;
-       colours[1].g = 0x0000;
-       colours[1].b = 0x0000;
-       colours[2].r = 0x0000;
-       colours[2].g = 0x6000;
-       colours[2].b = 0x0000;
-       colours[3].r = 0x0000;
-       colours[3].g = 0x9000;
-       colours[3].b = 0x0000;
-       colours[4].r = 0x0000;
-       colours[4].g = 0x0000;
-       colours[4].b = 0xC000;
-       colours[5].r = 0x0000;
-       colours[5].g = 0x0000;
-       colours[5].b = 0xF000;
-       colours[6].r = 0xA000;
-       colours[6].g = 0x6000;
-       colours[6].b = 0x0000;
-       colours[7].r = 0xD000;
-       colours[7].g = 0x9000;
-       colours[7].b = 0x0000;
-       colours[8].r = 0xA000;
-       colours[8].g = 0x0000;
-       colours[8].b = 0xC000;
-       colours[9].r = 0xD000;
-       colours[9].g = 0x0000;
-       colours[9].b = 0xF000;
-       colours[10].r = 0x0000;
-       colours[10].g = 0x6000;
-       colours[10].b = 0xC000;
-       colours[11].r = 0x0000;
-       colours[11].g = 0x9000;
-       colours[11].b = 0xF000;
-       colours[12].r = 0xA000;
-       colours[12].g = 0xA000;
-       colours[12].b = 0xA000;
-
-       /* add white for low saturation */
-       for (i = 0; i < SWIRLCOLOURS - 1; i++) {
-               unsigned short max_rg, max;
-
-               /* what is the max intensity for this colour? */
-               max_rg = (colours[i].r > colours[i].g) ? colours[i].r : colours[i].g;
-               max = (max_rg > colours[i].b) ? max_rg : colours[i].b;
-
-               /* bring elements up to max as saturation approaches 0.0 */
-               colours[i].r += (unsigned short) ((float) (1.0 - saturate) *
-                                              ((float) max - colours[i].r));
-               colours[i].g += (unsigned short) ((float) (1.0 - saturate) *
-                                              ((float) max - colours[i].g));
-               colours[i].b += (unsigned short) ((float) (1.0 - saturate) *
-                                              ((float) max - colours[i].b));
-       }
-}
-#endif /* !STANDALONE */
-
-/****************************************************************/
-
-#ifndef STANDALONE
-/* 
- * set_black_and_white
- *
- * Set the entries for foreground & background pixels and
- * WhitePixel & BlackPixel in an array of colour specifications.
- *
- * -      swirl is the swirl data
- * -      values is the array of specifications 
- */
-static void
-set_black_and_white(SWIRL_P swirl, XColor * values)
-{
-       unsigned long white, black;
-
-       /* where is black and white? */
-       white = swirl->white;
-       black = swirl->black;
-
-       /* set black and white up */
-       values[white].flags = DoRed | DoGreen | DoBlue;
-       values[white].pixel = white;
-       values[white].red = 0xFFFF;
-       values[white].green = 0xFFFF;
-       values[white].blue = 0xFFFF;
-       values[black].flags = DoRed | DoGreen | DoBlue;
-       values[black].pixel = black;
-       values[black].red = 0;
-       values[black].green = 0;
-       values[black].blue = 0;
-
-       /* copy the colour specs from the original entries */
-       values[swirl->fg] = swirl->fgcol;
-       values[swirl->bg] = swirl->bgcol;
-}
-
-/****************************************************************/
-
-/* 
- * set_colour
- *
- * Set an entry in an array of XColor specifications. The given entry will be
- * set to the given colour. If the entry corresponds to the foreground,
- * background, WhitePixel, or BlackPixel it is ignored and the given colour
- * is is put in the next entry.
- *
- * Therefore, the given colour may be placed up to four places after the
- * specified entry in the array, if foreground, background, white, or black
- * intervene.
- *
- * -      swirl is the swirl data
- * -      value points to a pointer to the array entry. It gets updated to
- *            point to the next free entry.
- * -      pixel points to the current pixel number. It gets updated.
- * -      c points to the colour to add
- */
-static void
-set_colour(SWIRL_P swirl, XColor ** value, unsigned long *pixel, COLOUR_P c)
-{
-       Bool        done;
-       unsigned long fg, bg, white, black;
-
-       /* where are foreground, background, white, and black? */
-       fg = swirl->fg;
-       bg = swirl->bg;
-       white = swirl->white;
-       black = swirl->black;
-
-       /* haven't set it yet */
-       done = False;
-
-       /* try and set the colour */
-       while (!done) {
-               (**value).flags = DoRed | DoGreen | DoBlue;
-               (**value).pixel = *pixel;
-
-               /* white, black, fg, bg, or a colour? */
-               if ((*pixel != fg) && (*pixel != bg) &&
-                   (*pixel != white) && (*pixel != black)) {
-                       (**value).red = c->r;
-                       (**value).green = c->g;
-                       (**value).blue = c->b;
-
-                       /* now we've done it */
-                       done = True;
-               }
-               /* next pixel */
-               (*value)++;
-               (*pixel)++;
-       }
-}
-
-/****************************************************************/
-
-/* 
- * get_colour
- *
- * Get an entry from an array of XColor specifications. The next colour from
- * the array will be returned. Foreground, background, WhitePixel, or
- * BlackPixel will be ignored.
- *
- * -      swirl is the swirl data
- * -      value points the array entry. It is updated to point to the entry
- *            following the one returned.
- * -      c is set to the colour found
- */
-static void
-get_colour(SWIRL_P swirl, XColor ** value, COLOUR_P c)
-{
-       Bool        done;
-       unsigned long fg, bg, white, black;
-
-       /* where is white and black? */
-       fg = swirl->fg;
-       bg = swirl->bg;
-       white = swirl->white;
-       black = swirl->black;
-
-       /* haven't set it yet */
-       done = False;
-
-       /* try and set the colour */
-       while (!done) {
-               /* black, white or a colour? */
-               if (((*value)->pixel != fg) && ((*value)->pixel != bg) &&
-                 ((*value)->pixel != white) && ((*value)->pixel != black)) {
-                       c->r = (*value)->red;
-                       c->g = (*value)->green;
-                       c->b = (*value)->blue;
-
-                       /* now we've done it */
-                       done = True;
-               }
-               /* next value */
-               (*value)++;
-       }
-}
-#endif /* !STANDALONE */
-
-/****************************************************************/
-
-#ifndef STANDALONE
-/* 
- *  interpolate
- *
- * Generate n colours between c1 and c2.  n XColors at *value are set up with
- * ascending pixel values.
- *
- * If the pixel range includes BlackPixel or WhitePixel they are set to black
- * and white respectively but otherwise ignored. Therefore, up to n+2 colours
- * may actually be set by this function.
- *
- * -      swirl is the swirl data
- * -      values points a pointer to an array of XColors to update
- * -      pixel points to the pixel number to start at
- * -      k n is the number of colours to generate
- * -      c1, c2 are the colours to interpolate between
- */
-static void
-interpolate(SWIRL_P swirl, XColor ** values, unsigned long *pixel, int n, COLOUR_P c1, COLOUR_P c2)
-{
-       int         i, r, g, b;
-       COLOUR      c;
-       unsigned short maxv;
-
-       /* maximum value */
-       maxv = (255 << 8);
-
-       for (i = 0; i < n / 2 && (int) *pixel < swirl->colours; i++) {
-               /* work out the colour */
-               r = c1->r + 2 * i * ((int) c2->r) / n;
-               c.r = (r > (int) maxv) ? maxv : r;
-               g = c1->g + 2 * i * ((int) c2->g) / n;
-               c.g = (g > (int) maxv) ? maxv : g;
-               b = c1->b + 2 * i * ((int) c2->b) / n;
-               c.b = (b > (int) maxv) ? maxv : b;
-
-               /* set it up */
-               set_colour(swirl, values, pixel, &c);
-       }
-       for (i = n / 2; i >= 0 && (int) *pixel < swirl->colours; i--) {
-               r = c2->r + 2 * i * ((int) c1->r) / n;
-               c.r = (r > (int) maxv) ? maxv : r;
-               g = c2->g + 2 * i * ((int) c1->g) / n;
-               c.g = (g > (int) maxv) ? maxv : g;
-               b = c2->b + 2 * i * ((int) c1->b) / n;
-               c.b = (b > (int) maxv) ? maxv : b;
-
-               /* set it up */
-               set_colour(swirl, values, pixel, &c);
-       }
-}
-
-/****************************************************************/
-
-/* 
- * basic_map
- *
- * Generate a `random' closed loop colourmap that occupies the whole colour
- * map.
- *
- * -      swirl is the swirl data
- * -      values is the array of colour definitions to set up
- */
-static void
-basic_map(SWIRL_P swirl, XColor * values)
-{
-       COLOUR      c[3];
-       int         i;
-       unsigned short r1, g1, b1, r2, g2, b2, r3, g3, b3;
-       int         L1, L2, L3, L;
-       unsigned long pixel;
-       XColor     *value;
-
-       /* start at the beginning of the colour map */
-       pixel = 0;
-       value = values;
-
-       /* choose 3 different basic colours at random */
-       for (i = 0; i < 3;) {
-               int         j;
-               Bool        same;
-
-               /* choose colour i */
-               c[i] = basic_colours[random_no(SWIRLCOLOURS - 1)];
-
-               /* assume different */
-               same = False;
-
-               /* different from the rest? */
-               for (j = 0; j < i; j++)
-                       if ((c[i].r == c[j].r) &&
-                           (c[i].g == c[j].g) &&
-                           (c[i].b == c[j].b))
-                               same = True;
-
-               /* ready for the next colour? */
-               if (!same)
-                       i++;
-       }
-
-       /* extract components into variables */
-       r1 = c[0].r;
-       g1 = c[0].g;
-       b1 = c[0].b;
-       r2 = c[1].r;
-       g2 = c[1].g;
-       b2 = c[1].b;
-       r3 = c[2].r;
-       g3 = c[2].g;
-       b3 = c[2].b;
-
-       /* work out the lengths of each side of the triangle */
-       L1 = (int) sqrt((((double) r1 - r2) * ((double) r1 - r2) +
-                        ((double) g1 - g2) * ((double) g1 - g2) +
-                        ((double) b1 - b2) * ((double) b1 - b2)));
-
-       L2 = (int) sqrt((((double) r3 - r2) * ((double) r3 - r2) +
-                        ((double) g3 - g2) * ((double) g3 - g2) +
-                        ((double) b3 - b2) * ((double) b3 - b2)));
-
-       L3 = (int) sqrt((((double) r1 - r3) * ((double) r1 - r3) +
-                        ((double) g1 - g3) * ((double) g1 - g3) +
-                        ((double) b1 - b3) * ((double) b1 - b3)));
-
-       L = L1 + L2 + L3;
-
-       /* allocate colours in proportion to the lengths of the sides */
-       interpolate(swirl, &value, &pixel,
-                   (int) ((double) swirl->dcolours * ((double) L1 / (double) L)) + 1, c, c + 1);
-       interpolate(swirl, &value, &pixel,
-                   (int) ((double) swirl->dcolours * ((double) L2 / (double) L)) + 1, c + 1, c + 2);
-       interpolate(swirl, &value, &pixel,
-                   (int) ((double) swirl->dcolours * ((double) L3 / (double) L)) + 1, c + 2, c);
-
-       /* fill up any remaining slots (due to rounding) */
-       while ((int) pixel < swirl->colours) {
-               /* repeat the last colour */
-               set_colour(swirl, &value, &pixel, c);
-       }
-
-       /* ensure black and white are correct */
-       if (!swirl->fixed_colourmap)
-               set_black_and_white(swirl, values);
-}
-
-/****************************************************************/
-
-/* 
- * pre_rotate
- *
- * Generate pre-rotated versions of the colour specifications
- *
- * -      swirl is the swirl data
- * -      values is an array of colour specifications
- */
-static void
-pre_rotate(SWIRL_P swirl, XColor * values)
-{
-       int         i, j;
-       XColor     *src, *dest;
-       int         dcolours;
-       unsigned long pixel;
-
-       /* how many colours to display? */
-       dcolours = swirl->dcolours;
-
-       /* start at the first map */
-       src = values;
-       dest = values + swirl->colours;
-
-       /* generate dcolours-1 rotated maps */
-       for (i = 0; i < dcolours - 1; i++) {
-               COLOUR      first;
-
-               /* start at the first pixel */
-               pixel = 0;
-
-               /* remember the first one and skip it */
-               get_colour(swirl, &src, &first);
-
-               /* put a rotated version of src at dest */
-               for (j = 0; j < dcolours - 1; j++) {
-                       COLOUR      c;
-
-                       /* get the source colour */
-                       get_colour(swirl, &src, &c);
-
-                       /* set the colour */
-                       set_colour(swirl, &dest, &pixel, &c);
-               }
-
-               /* put the first one at the end */
-               set_colour(swirl, &dest, &pixel, &first);
-
-               /* NB: src and dest should now be ready for the next table */
-
-               /* ensure black and white are properly set */
-               set_black_and_white(swirl, src);
-       }
-}
-
-/****************************************************************/
-
-/* 
- * create_colourmap
- *
- * Create a read/write colourmap to use
- *
- * -      swirl is the swirl data
- */
-
-static void
-create_colourmap(ModeInfo * mi, SWIRL_P swirl)
-{
-       Display    *display = MI_DISPLAY(mi);
-       int         preserve;
-       int         n_rotations;
-       int         i;
-       Bool        truecolor;
-  unsigned long redmask, greenmask, bluemask;
-
-       swirl->fixed_colourmap = !setupColormap(mi, &(swirl->colours),
-    &truecolor, &redmask, &greenmask, &bluemask);
-       preserve = preserveColors(swirl->fg, swirl->bg, swirl->white, swirl->black);
-
-       /* how many colours should we animate? */
-       swirl->dcolours = (swirl->colours > preserve + 1) ?
-               swirl->colours - preserve : swirl->colours;
-
-       if (MI_NPIXELS(mi) < 2)
-               return;
-
-       /* how fast to shift the colourmap? */
-       swirl->shift = (swirl->colours > 64) ? swirl->colours / 64 : 1;
-       swirl->dshift = (swirl->shift > 1) ? swirl->shift * 2 : 1;
-
-       /* how may colour map rotations are there? */
-       n_rotations = (swirl->fixed_colourmap) ? 1 : swirl->dcolours;
-
-       /* allocate space for colour definitions (if not already there) */
-       if (swirl->rgb_values == NULL) {
-               swirl->rgb_values = (XColor *) calloc((swirl->colours + 3) * n_rotations,
-                                                     sizeof (XColor));
-
-               /* create a colour map */
-               if (!swirl->fixed_colourmap)
-                       swirl->cmap =
-                               XCreateColormap(display, swirl->win, swirl->visual, AllocAll);
-       }
-       /* select a set of colours for the colour map */
-       basic_map(swirl, swirl->rgb_values);
-
-       /* are we rotating them? */
-       if (!swirl->fixed_colourmap) {
-               /* generate rotations of the colour maps */
-               pre_rotate(swirl, swirl->rgb_values);
-
-               /* store the colours in the colour map */
-               XStoreColors(display, swirl->cmap, swirl->rgb_values, swirl->colours);
-       } else {
-               if (truecolor) {
-                       int         rsh, gsh, bsh;
-                       unsigned long int t;
-
-                       t = redmask;
-                       for (i = 0; (int) t > 0; i++, t >>= 1);
-                       rsh = 16 - i;
-                       t = greenmask;
-                       for (i = 0; (int) t > 0; i++, t >>= 1);
-                       gsh = 16 - i;
-                       t = bluemask;
-                       for (i = 0; (int) t > 0; i++, t >>= 1);
-                       bsh = 16 - i;
-                       for (i = 0; i < swirl->colours; i++)
-                               swirl->rgb_values[i].pixel =
-                                       ((rsh > 0 ? (swirl->rgb_values[i].red) >> rsh :
-                                         (swirl->rgb_values[i].red) << (-rsh)) & redmask) |
-                                       ((gsh > 0 ? (swirl->rgb_values[i].green) >> gsh :
-                                         (swirl->rgb_values[i].green) << (-gsh)) & greenmask) |
-                                       ((bsh > 0 ? (swirl->rgb_values[i].blue) >> bsh :
-                                         (swirl->rgb_values[i].blue) << (-bsh)) & bluemask);
-               } else {
-                       /* lookup the colours in the fixed colour map */
-                       for (i = 0; i < swirl->colours; i++)
-                               (void) XAllocColor(display, MI_COLORMAP(mi),
-                                                  &(swirl->rgb_values[i]));
-               }
-       }
-}
-
-/****************************************************************/
-
-/* 
- * install_map
- *
- * Install a new set of colours into the colour map
- *
- * -      dpy is the display
- * -      swirl is the swirl data
- * -      shift is the amount to rotate the colour map by
- */
-static void
-install_map(Display * dpy, SWIRL_P swirl, int shift)
-{
-       if (!swirl->fixed_colourmap) {
-               /* shift the colour map */
-               swirl->current_map = (swirl->current_map + shift) %
-                       swirl->dcolours;
-
-               /* store it */
-               XStoreColors(dpy, swirl->cmap,
-                            swirl->rgb_values +
-                            swirl->current_map * swirl->colours,
-                            swirl->colours);
-       }
-}
-#endif /* !STANDALONE */
-
-/****************************************************************/
-
-/* 
- * create_knots
- *
- * Initialise the array of knot
- *
- * swirl is the swirl data
- */
-static void
-create_knots(SWIRL_P swirl)
-{
-       int         k;
-       Bool        orbit, wheel, picasso, ray, hook;
-       KNOT_P      knot;
-
-       /* create array for knots */
-       if (swirl->knots)
-               (void) free((void *) swirl->knots);
-       swirl->knots = (KNOT_P) calloc(swirl->n_knots, sizeof (KNOT));
-
-       /* no knots yet */
-       orbit = wheel = picasso = ray = hook = False;
-
-       /* what types do we have? */
-       if ((int) swirl->knot_type & (int) ALL) {
-               orbit = wheel = ray = hook = True;
-       } else {
-               if ((int) swirl->knot_type & (int) ORBIT)
-                       orbit = True;
-               if ((int) swirl->knot_type & (int) WHEEL)
-                       wheel = True;
-               if ((int) swirl->knot_type & (int) PICASSO)
-                       picasso = True;
-               if ((int) swirl->knot_type & (int) RAY)
-                       ray = True;
-               if ((int) swirl->knot_type & (int) HOOK)
-                       hook = True;
-       }
-
-       /* initialise each knot */
-       knot = swirl->knots;
-       for (k = 0; k < swirl->n_knots; k++) {
-               /* position */
-               knot->x = random_no((unsigned int) swirl->width);
-               knot->y = random_no((unsigned int) swirl->height);
-
-               /* mass */
-               knot->m = random_no(MASS) + 1;
-
-               /* can be negative */
-               if (random_no(100) > 50)
-                       knot->m *= -1;
-
-               /* type */
-               knot->t = NONE;
-               while (knot->t == NONE) {
-                       /* choose a random one from the types available */
-                       switch (random_no(4)) {
-                               case 0:
-                                       if (orbit)
-                                               knot->t = ORBIT;
-                                       break;
-                               case 1:
-                                       if (wheel)
-                                               knot->t = WHEEL;
-                                       break;
-                               case 2:
-                                       if (picasso)
-                                               knot->t = PICASSO;
-                                       break;
-                               case 3:
-                                       if (ray)
-                                               knot->t = RAY;
-                                       break;
-                               case 4:
-                                       if (hook)
-                                               knot->t = HOOK;
-                                       break;
-                       }
-               }
-
-               /* if two planes, do same for second plane */
-               if (swirl->two_plane) {
-                       knot->T = NONE;
-                       while (knot->T == NONE || knot->T == knot->t) {
-                               /* choose a different type */
-                               switch (random_no(4)) {
-                                       case 0:
-                                               if (orbit)
-                                                       knot->T = ORBIT;
-                                               break;
-                                       case 1:
-                                               if (wheel)
-                                                       knot->T = WHEEL;
-                                               break;
-                                       case 2:
-                                               if (picasso)
-                                                       knot->T = PICASSO;
-                                               break;
-                                       case 3:
-                                               if (ray)
-                                                       knot->T = RAY;
-                                               break;
-                                       case 4:
-                                               if (hook)
-                                                       knot->T = HOOK;
-                                               break;
-                               }
-                       }
-               }
-               /* next knot */
-               knot++;
-       }
-}
-
-/****************************************************************/
-
-/* 
- * do_point
- *
- * Work out the pixel value at i, j. Ensure it does not clash with BlackPixel
- * or WhitePixel.
- *
- * -      swirl is the swirl data
- * -      i, j is the point to calculate
- *
- * Returns the value of the point
- */
-static unsigned long
-do_point(SWIRL_P swirl, int i, int j)
-{
-       int         tT, k, value, add;
-       double      dx, dy, theta, dist;
-       int         dcolours, qcolours;
-       double      rads;
-       KNOT_P      knot;
-
-       /* how many colours? */
-       dcolours = swirl->dcolours;
-       qcolours = dcolours / 4;
-
-       /* colour step round a circle */
-       rads = (double) dcolours / (2.0 * M_PI);
-
-       /* start at zero */
-       value = 0;
-
-       /* go through all the knots */
-       knot = swirl->knots;
-       for (k = 0; k < swirl->n_knots; k++) {
-               dx = i - knot->x;
-               dy = j - knot->y;
-
-               /* in two_plane mode get the appropriate knot type */
-               if (swirl->two_plane)
-                       tT = (int) ((swirl->first_plane) ? knot->t : knot->T);
-               else
-                       tT = (int) knot->t;
-
-               /* distance from knot */
-               dist = sqrt(dx * dx + dy * dy);
-
-               /* nothing to add at first */
-               add = 0;
-
-               /* work out the contribution (if close enough) */
-               if (dist > 0.1)
-                       switch (tT) {
-                               case ORBIT:
-                                       add = (int) (dcolours / (1.0 + 0.01 * abs(knot->m) * dist));
-                                       break;
-                               case WHEEL:
-                                       /* Avoid atan2: DOMAIN error message */
-                                       if (dy == 0.0 && dx == 0.0)
-                                               theta = 1.0;
-                                       else
-                                               theta = (atan2(dy, dx) + M_PI) / M_PI;
-                                       if (theta < 1.0)
-                                               add = (int) (dcolours * theta +
-                                                 sin(0.1 * knot->m * dist) *
-                                               qcolours * exp(-0.01 * dist));
-                                       else
-                                               add = (int) (dcolours * (theta - 1.0) +
-                                                 sin(0.1 * knot->m * dist) *
-                                               qcolours * exp(-0.01 * dist));
-                                       break;
-                               case PICASSO:
-                                       add = (int) (dcolours *
-                                         fabs(cos(0.002 * knot->m * dist)));
-                                       break;
-                               case RAY:
-                                       /* Avoid atan2: DOMAIN error message */
-                                       if (dy == 0.0 && dx == 0.0)
-                                               add = 0;
-                                       else
-                                               add = (int) (dcolours * fabs(sin(2.0 * atan2(dy, dx))));
-
-                                       break;
-                               case HOOK:
-                                       /* Avoid atan2: DOMAIN error message */
-                                       if (dy == 0.0 && dx == 0.0)
-                                               add = (int) (0.05 * (abs(knot->m) - 1) * dist);
-                                       else
-                                               add = (int) (rads * atan2(dy, dx) +
-                                                            0.05 * (abs(knot->m) - 1) * dist);
-                                       break;
-                       }
-               /* for a +ve mass add on the contribution else take it off */
-               if (knot->m > 0)
-                       value += add;
-               else
-                       value -= add;
-
-               /* next knot */
-               knot++;
-       }
-
-       /* toggle plane */
-       swirl->first_plane = (!swirl->first_plane);
-
-       /* make sure we handle -ve values properly */
-       if (value >= 0)
-               value = (value % dcolours) + 2;
-       else
-               value = dcolours - (abs(value) % (dcolours - 1));
-
-#ifndef STANDALONE
-       /* if fg and bg are 1 and 0 we should be OK, but just in case */
-       while ((dcolours > 2) &&
-              (((value % swirl->colours) == (int) swirl->fg) ||
-               ((value % swirl->colours) == (int) swirl->bg) ||
-               ((value % swirl->colours) == (int) swirl->white) ||
-               ((value % swirl->colours) == (int) swirl->black))) {
-               value++;
-       }
-#endif /* !STANDALONE */
-
-       /* definitely make sure it is in range */
-       value = value % swirl->colours;
-
-       /* lookup the pixel value if necessary */
-#ifndef STANDALONE
-       if (swirl->fixed_colourmap && swirl->dcolours > 2)
-#endif
-               value = swirl->rgb_values[value].pixel;
-
-       /* return it */
-       return ((unsigned long) value);
-}
-
-/****************************************************************/
-
-/* 
- * draw_block
- *
- * Draw a square block of points with the same value.
- *
- * -      ximage is the XImage to draw on.
- * -      x, y is the top left corner
- * -      s is the length of each side
- * -      v is the value
- */
-static void
-draw_block(XImage * ximage, int x, int y, int s, unsigned long v)
-{
-       int         a, b;
-
-       for (a = 0; a < s; a++)
-               for (b = 0; b < s; b++) {
-                       XPutPixel(ximage, x + b, y + a, v);
-               }
-}
-
-/****************************************************************/
-
-/* 
- * draw_point  Draw the current point in a swirl pattern onto the XImage
- *
- * -    swirl is the swirl
- * -    win is the window to update
- */
-static void
-draw_point(ModeInfo * mi, SWIRL_P swirl)
-{
-       int         r;
-       int         x, y;
-
-       /* get current point coordinates and resolution */
-       x = swirl->x;
-       y = swirl->y;
-       r = swirl->r;
-
-       /* check we are within the window */
-       if ((x < 0) || (x > swirl->width - r) || (y < 0) || (y > swirl->height - r))
-               return;
-
-       /* what style are we drawing? */
-       if (swirl->two_plane) {
-               int         r2;
-
-               /* halve the block size */
-               r2 = r / 2;
-
-               /* interleave blocks at half r */
-               draw_block(swirl->ximage, x, y, r2, do_point(swirl, x, y));
-               draw_block(swirl->ximage, x + r2, y, r2, do_point(swirl, x + r2, y));
-               draw_block(swirl->ximage, x + r2, y + r2, r2, do_point(swirl,
-                       x + r2, y + r2));
-               draw_block(swirl->ximage, x, y + r2, r2, do_point(swirl, x, y + r2));
-       } else
-               draw_block(swirl->ximage, x, y, r, do_point(swirl, x, y));
-
-       /* update the screen */
-
-#ifdef HAVE_XSHM_EXTENSION
-       if (mi->use_shm)
-         XShmPutImage(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi), swirl->ximage,
-                                  x, y, x, y, r, r, False);
-       else
-#endif /* !HAVE_XSHM_EXTENSION */
-         /* PURIFY 4.0.1 on SunOS4 and on Solaris 2 reports a 256 byte memory
-                leak on the next line. */
-         XPutImage(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi), swirl->ximage,
-                               x, y, x, y, r, r);
-}
-
-/****************************************************************/
-
-/* 
- * next_point  Move to the next point in the spiral pattern
- *  -    swirl is the swirl
- *  -    win is the window to update
- */
-static void
-next_point(SWIRL_P swirl)
-{
-       /* more to do in this direction? */
-       if (swirl->dir_done < swirl->dir_todo) {
-               /* move in the current direction */
-               switch (swirl->direction) {
-                       case DRAW_RIGHT:
-                               swirl->x += swirl->r;
-                               break;
-                       case DRAW_DOWN:
-                               swirl->y += swirl->r;
-                               break;
-                       case DRAW_LEFT:
-                               swirl->x -= swirl->r;
-                               break;
-                       case DRAW_UP:
-                               swirl->y -= swirl->r;
-                               break;
-               }
-
-               /* done another point */
-               swirl->dir_done++;
-       } else {
-               /* none drawn yet */
-               swirl->dir_done = 0;
-
-               /* change direction - check and record if off screen */
-               switch (swirl->direction) {
-                       case DRAW_RIGHT:
-                               swirl->direction = DRAW_DOWN;
-                               if (swirl->x > swirl->width - swirl->r) {
-                                       /* skip these points */
-                                       swirl->dir_done = swirl->dir_todo;
-                                       swirl->y += (swirl->dir_todo * swirl->r);
-
-                                       /* check for finish */
-                                       if (swirl->off_screen)
-                                               swirl->drawing = False;
-                                       swirl->off_screen = True;
-                               } else
-                                       swirl->off_screen = False;
-                               break;
-                       case DRAW_DOWN:
-                               swirl->direction = DRAW_LEFT;
-                               swirl->dir_todo++;
-                               if (swirl->y > swirl->height - swirl->r) {
-                                       /* skip these points */
-                                       swirl->dir_done = swirl->dir_todo;
-                                       swirl->x -= (swirl->dir_todo * swirl->r);
-
-                                       /* check for finish */
-                                       if (swirl->off_screen)
-                                               swirl->drawing = False;
-                                       swirl->off_screen = True;
-                               } else
-                                       swirl->off_screen = False;
-                               break;
-                       case DRAW_LEFT:
-                               swirl->direction = DRAW_UP;
-                               if (swirl->x < 0) {
-                                       /* skip these points */
-                                       swirl->dir_done = swirl->dir_todo;
-                                       swirl->y -= (swirl->dir_todo * swirl->r);
-
-                                       /* check for finish */
-                                       if (swirl->off_screen)
-                                               swirl->drawing = False;
-                                       swirl->off_screen = True;
-                               } else
-                                       swirl->off_screen = False;
-                               break;
-                       case DRAW_UP:
-                               swirl->direction = DRAW_RIGHT;
-                               swirl->dir_todo++;
-                               if (swirl->y < 0) {
-                                       /* skip these points */
-                                       swirl->dir_done = swirl->dir_todo;
-                                       swirl->x += (swirl->dir_todo * swirl->r);
-
-                                       /* check for finish */
-                                       if (swirl->off_screen)
-                                               swirl->drawing = False;
-                                       swirl->off_screen = True;
-                               } else
-                                       swirl->off_screen = False;
-                               break;
-               }
-       }
-}
-
-/****************************************************************/
-
-/* 
- * init_swirl
- *
- * Initialise things for swirling
- *
- * -      win is the window to draw in
- */
-void
-init_swirl(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       SWIRL_P     swirl;
-
-       /* does the swirls array exist? */
-       if (swirls == NULL) {
-               int         i;
-
-               /* allocate an array, one entry for each screen */
-               swirls = (SWIRL_P) calloc(ScreenCount(display), sizeof (SWIRL));
-
-               /* initialise them all */
-               for (i = 0; i < ScreenCount(display); i++)
-                       initialise_swirl(mi, &swirls[i]);
-       }
-       /* get a pointer to this swirl */
-       swirl = &(swirls[MI_SCREEN(mi)]);
-
-       /* get window parameters */
-       swirl->win = window;
-       swirl->width = MI_WIN_WIDTH(mi);
-       swirl->height = MI_WIN_HEIGHT(mi);
-       swirl->depth = MI_WIN_DEPTH(mi);
-       swirl->rdepth = swirl->depth;
-       swirl->visual = MI_VISUAL(mi);
-
-       if (swirl->depth > 16)
-               swirl->depth = 16;
-
-       /* initialise image for speeding up drawing */
-       initialise_image(mi, swirl);
-
-       /* clear the window (before setting the colourmap) */
-       XClearWindow(display, MI_WINDOW(mi));
-
-#ifdef STANDALONE
-
-       swirl->rgb_values = mi->colors;
-       swirl->colours = mi->npixels;
-       swirl->dcolours = swirl->colours;
-/*     swirl->fixed_colourmap = !mi->writable_p;*/
-
-#else /* !STANDALONE */
-
-       /* initialise the colours from which the colourmap is derived */
-       initialise_colours(basic_colours, MI_SATURATION(mi));
-
-       /* set up the colour map */
-       create_colourmap(mi, swirl);
-
-       /* attach the colour map to the window (if we have one) */
-       if (!swirl->fixed_colourmap) {
-#if 1
-               setColormap(display, window, swirl->cmap, MI_WIN_IS_INWINDOW(mi));
-#else
-               XSetWindowColormap(display, window, swirl->cmap);
-               (void) XSetWMColormapWindows(display, window, &window, 1);
-               XInstallColormap(display, swirl->cmap);
-#endif
-       }
-#endif /* STANDALONE */
-
-       /* resolution starts off chunky */
-       swirl->resolution = MIN_RES + 1;
-
-       /* calculate the pixel step for this resulution */
-       swirl->r = (1 << (swirl->resolution - 1));
-
-       /* how many knots? */
-       swirl->n_knots = random_no((unsigned int) MI_BATCHCOUNT(mi) / 2) +
-               MI_BATCHCOUNT(mi) + 1;
-
-       /* what type of knots? */
-       swirl->knot_type = ALL; /* for now */
-
-       /* use two_plane mode occaisionally */
-       if (random_no(100) <= TWO_PLANE_PCNT) {
-               swirl->two_plane = swirl->first_plane = True;
-               swirl->max_resolution = 2;
-       } else
-               swirl->two_plane = False;
-
-       /* fix the knot values */
-       create_knots(swirl);
-
-       /* we are off */
-       swirl->started = True;
-       swirl->drawing = False;
-}
-
-/****************************************************************/
-
-/* 
- * draw_swirl
- *
- * Draw one iteration of swirling
- *
- * -      win is the window to draw in
- */
-void
-draw_swirl(ModeInfo * mi)
-{
-       SWIRL_P     swirl = &(swirls[MI_SCREEN(mi)]);
-
-       /* are we going? */
-       if (swirl->started) {
-               /* in the middle of drawing? */
-               if (swirl->drawing) {
-#ifdef STANDALONE
-                 if (mi->writable_p)
-                       rotate_colors(MI_DISPLAY(mi), MI_COLORMAP(mi),
-                                                 swirl->rgb_values, swirl->colours, 1);
-#else  /* !STANDALONE */
-                       /* rotate the colours */
-                       install_map(MI_DISPLAY(mi), swirl, swirl->dshift);
-#endif /* !STANDALONE */
-
-                       /* draw a batch of points */
-                       swirl->batch_todo = BATCH_DRAW;
-                       while ((swirl->batch_todo > 0) && swirl->drawing) {
-                               /* draw a point */
-                               draw_point(mi, swirl);
-
-                               /* move to the next point */
-                               next_point(swirl);
-
-                               /* done a point */
-                               swirl->batch_todo--;
-                       }
-               } else {
-#ifdef STANDALONE
-                 if (mi->writable_p)
-                       rotate_colors(MI_DISPLAY(mi), MI_COLORMAP(mi),
-                                                 swirl->rgb_values, swirl->colours, 1);
-#else  /* !STANDALONE */
-                       /* rotate the colours */
-                       install_map(MI_DISPLAY(mi), swirl, swirl->shift);
-#endif /* !STANDALONE */
-
-                       /* time for a higher resolution? */
-                       if (swirl->resolution > swirl->max_resolution) {
-                               /* move to higher resolution */
-                               swirl->resolution--;
-
-                               /* calculate the pixel step for this resulution */
-                               swirl->r = (1 << (swirl->resolution - 1));
-
-                               /* start drawing again */
-                               swirl->drawing = True;
-
-                               /* start in the middle of the screen */
-                               swirl->x = (swirl->width - swirl->r) / 2;
-                               swirl->y = (swirl->height - swirl->r) / 2;
-
-                               /* initialise spiral drawing parameters */
-                               swirl->direction = DRAW_RIGHT;
-                               swirl->dir_todo = 1;
-                               swirl->dir_done = 0;
-                       } else {
-                               /* all done, decide when to restart */
-                               if (swirl->start_again == -1) {
-                                       /* start the counter */
-                                       swirl->start_again = RESTART;
-                               } else if (swirl->start_again == 0) {
-                                       /* reset the counter */
-                                       swirl->start_again = -1;
-
-#ifdef STANDALONE
-                                       /* Pick a new colormap! */
-                                       XClearWindow (MI_DISPLAY(mi), MI_WINDOW(mi));
-                                       free_colors (MI_DISPLAY(mi), MI_COLORMAP(mi),
-                                                                mi->colors, mi->npixels);
-                                       make_smooth_colormap (MI_DISPLAY(mi),
-                                                                                 MI_VISUAL(mi),
-                                                                                 MI_COLORMAP(mi),
-                                                                                 mi->colors, &mi->npixels, True,
-                                                                                 &mi->writable_p, True);
-                                       swirl->colours = mi->npixels;
-#endif /* STANDALONE */
-
-                                       /* start again */
-                                       init_swirl(mi);
-                               } else
-                                       /* decrement the counter */
-                                       swirl->start_again--;
-                       }
-               }
-       }
-}
-
-/****************************************************************/
-
-void
-release_swirl(ModeInfo * mi)
-{
-       /* does the swirls array exist? */
-       if (swirls != NULL) {
-               int         i;
-
-               /* free them all */
-               for (i = 0; i < MI_NUM_SCREENS(mi); i++) {
-                       SWIRL_P     swirl = &(swirls[i]);
-
-                       if (swirl->cmap != (Colormap) NULL)
-                               XFreeColormap(MI_DISPLAY(mi), swirl->cmap);
-                       if (swirl->rgb_values != NULL)
-                               XFree((void *) swirl->rgb_values);
-                       if (swirl->ximage != NULL)
-                               XDestroyImage(swirl->ximage);
-                       if (swirl->knots)
-                               (void) free((void *) swirl->knots);
-               }
-               /* deallocate an array, one entry for each screen */
-               (void) free((void *) swirls);
-               swirls = NULL;
-       }
-}
-
-/****************************************************************/
-
-void
-refresh_swirl(ModeInfo * mi)
-{
-       SWIRL_P     swirl = &(swirls[MI_SCREEN(mi)]);
-
-       if (swirl->started) {
-               if (swirl->drawing)
-                       swirl->resolution = swirl->resolution + 1;
-               swirl->drawing = False;
-       }
-}
diff --git a/hacks/swirl.man b/hacks/swirl.man
deleted file mode 100644 (file)
index c36733f..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-.TH XScreenSaver 1 "13-May-97" "X Version 11"
-.SH NAME
-swirl - draws swirly color-cycling patterns
-.SH SYNOPSIS
-.B swirl
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
-
-.SH DESCRIPTION
-The \fIswirl\fP program draws swirly color-cycling patterns.
-.SH OPTIONS
-.I swirl
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-.TP 8
-.B \-cycles \fIinteger\fP
-
-.TP 8
-.B \-count \fIinteger\fP
-
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1994 M. Dobie.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-M.Dobie <mrd@ecs.soton.ac.uk>, 1994.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 13-May-97.
diff --git a/hacks/t3d.c b/hacks/t3d.c
deleted file mode 100644 (file)
index b569c75..0000000
+++ /dev/null
@@ -1,969 +0,0 @@
-/* t3d -- Flying Balls Clock Demo
-   by Bernd Paysan , paysan@informatik.tu-muenchen.de
-
-   Copy, modify, and distribute T3D either under GPL  version 2 or newer, 
-   or under the standard MIT/X license notice.
-
-  partly based on flying balls demo by Georg Acher, 
-  acher@informatik.tu-muenchen.de
-  (developed on HP9000/720 (55 MIPS,20 MFLOPS) )
-  NO warranty at all ! Complaints to /dev/null !
-
-  4-Jan-99 jwz@jwz.org -- adapted to xscreensaver framework, to take advantage
-                          of the command-line options provided by screenhack.c.
-*/
-
-#define FASTDRAW
-#define FASTCOPY
-#undef USE_POLYGON
-
-#include <stdio.h>
-#include <math.h>
-#include <time.h> /* for localtime() and gettimeofday() */
-
-#include "screenhack.h"
-
-
-static int maxk=34;
-
-#define   WIDTH      200
-#define   HEIGHT     200
-#define   norm       20.0
-
-int timewait=40000;
-
-#define   ROOT       0x1
-#define PI M_PI
-#define TWOPI 2*M_PI
-
-#define MIN(i,j) ((i)<(j)?(i):(j))
-
-#define kmax ((minutes?60:24))
-/* Anzahl der Kugeln */
-#define sines 52
-/* Werte in der Sinus-Tabelle */
-/*-----------------------------------------------------------------*/
-#define setink(inkcolor) \
-       XSetForeground (dpy,gc,inkcolor)
-
-#define drawline(xx1,yy1,xx2,yy2) \
-       XDrawLine(dpy,win,gc,xx1,yy1,xx2,yy2) 
-
-#define drawseg(segments,nr_segments) \
-       XDrawSegments(dpy,win,gc,segments,nr_segments) 
-
-
-#define polyfill(ppts,pcount) \
-       XFillPolygon(dpy,win,gc,ppts,pcount,Convex,CoordModeOrigin)
-
-
-#define frac(argument) argument-floor(argument)
-
-#define abs(x) ((x)<0.0 ? -(x) : (x))
-
-static Colormap cmap;
-/* static XColor gray1; */
-static double r=1.0,g=1.0,b=1.0;
-static double hue=0.0,sat=0.0,val=1.0;
-
-typedef struct {
-  double x,y,z,r,d,r1;
-  int x1,y1;
-} kugeldat;
-
-/* Felder fuer 3D */
-
-static kugeldat kugeln[100];
-
-static double  a[3],/*m[3],*/am[3],x[3],y[3],v[3];
-static double zoom,speed,zaehler,vspeed/*,AE*/;
-static double vturn/*,aturn*/;
-/* static XPoint track[sines]; */
-static double sinus[sines];
-static double cosinus[sines];
-
-static int startx,starty;
-static double /*magx,magy,*/mag=10;
-/* static double lastx,lasty,lastz; */
-/* static int lastcx,lastcy,lastcz; */
-/* static int move=1; */
-static int minutes=0;
-static int cycl=0;
-static double hsvcycl=0.0;
-static double movef =0.5, wobber=2.0, cycle=6.0;
-
-/* time */
-
-/* static double sec; */
-
-/* Windows */
-static XWindowAttributes xgwa;
-static GC      gc;
-static GC orgc;
-static GC andgc;
-static Window  win;
-/* static Font font; */
-static Display *dpy;
-static int     screen, scrnWidth = WIDTH, scrnHeight = HEIGHT;
-static Pixmap  buffer;
-#define maxfast 100
-static int fastch=50;
-#ifdef FASTDRAW
-#      ifdef FASTCOPY
-#              define sum1ton(a) (((a)*(a)+1)/2)
-#              define fastcw sum1ton(fastch)
-               static Pixmap fastcircles;
-               static Pixmap fastmask;
-#      else
-               static XImage* fastcircles[maxfast];
-               static XImage* fastmask[maxfast];
-#      endif
-static int fastdraw=0;
-#endif
-
-static int scrnW2,scrnH2;
-/* static unsigned short flags = 0; */
-/* static char *text; */
-static XColor colors[64];
-static struct tm *zeit;
-
-static int planes;
-/* compute time */
-
-static double
-gettime (void)
-{
-  struct timeval time1;
-  struct tm *zeit;
-  time_t lt;
-
-#ifdef GETTIMEOFDAY_TWO_ARGS
-  struct timezone zone1;
-  gettimeofday(&time1,&zone1);
-#else
-  gettimeofday(&time1);
-#endif
-  lt = time1.tv_sec;   /* avoid type cast lossage */
-  zeit=localtime(&lt);
-  
-  return (zeit->tm_sec+60*(zeit->tm_min+60*(zeit->tm_hour))
-         + time1.tv_usec*1.0E-6);
-}
-
-/* --------------------COLORMAP---------------------*/ 
-
-static void
-hsv2rgb (double h, double s, double v, double *r, double *g, double *b)
-{
-  h/=360.0;    h=6*(h-floor(h));
-
-  if(s==0.0)
-    {
-      *r=*g=*b=v;
-    }
-  else
-    {  int i=(int)h;
-       double t,u,w;
-       
-       h=h-floor(h);
-       
-       u=v*(s*(1.0-h));
-       w=v*(1.0-s);
-       t=v*(s*h+1.0-s);
-       
-       switch(i)
-         {
-         case 0:       *r=v;   *g=t;   *b=w;   break;
-         case 1:       *r=u;   *g=v;   *b=w;   break;
-         case 2:       *r=w;   *g=v;   *b=t;   break;
-         case 3:       *r=w;   *g=u;   *b=v;   break;
-         case 4:       *r=t;   *g=w;   *b=v;   break;
-         case 5:       *r=v;   *g=w;   *b=u;   break;
-         }
-      }
-#ifdef PRTDBX
-  printf("HSV: %f %f %f to\nRGB: %f %f %f\n",h,s,v,*r,*g,*b);
-#endif
-}
-
-static void
-changeColor (double r, double g, double b)
-{
-  int n,n1;
-  
-  n1=0;
-  for(n=30;n<64;n+=3)
-    {
-      colors[n1].red   =1023+ n*(int)(1024.*r);
-      colors[n1].blue  =1023+ n*(int)(1024.*b);
-      colors[n1].green =1023+ n*(int)(1024.*g);
-      
-      n1++;
-    }
-  
-  XStoreColors (dpy, cmap, colors, 12);
-}
-
-static void 
-initColor (double r, double g, double b)
-{
-  int n,n1;
-  unsigned long pixels[12];
-  unsigned long dummy;
-  
-  cmap = xgwa.colormap;
-  
-  if(hsvcycl!=0.0 && XAllocColorCells(dpy, cmap, 0, &dummy, 0, pixels, 12))
-    {
-      for(n1=0;n1<12;n1++)
-       {
-         colors[n1].pixel=pixels[n1];
-         colors[n1].flags=DoRed | DoGreen | DoBlue;
-       }
-      
-      changeColor(r,g,b);
-    }
-  else
-    {
-      n1=0;
-      for(n=30;n<64;n+=3)
-       {
-         colors[n1].red   =1023+ n*(int)(1024.*r);
-         colors[n1].blue  =1023+ n*(int)(1024.*b);
-         colors[n1].green =1023+ n*(int)(1024.*g);
-         
-         if (!(XAllocColor (dpy, cmap, &colors[n1]))) {
-           (void) fprintf (stderr, "Error:  Cannot allocate colors\n");
-           exit (1);
-         }
-         
-         n1++;
-       }
-    }
-}
-
-/* ----------------WINDOW-------------------*/
-
-static void
-initialize (void)
-{
-  XGCValues *xgc;
-  XGCValues *xorgc;
-  XGCValues *xandgc;
-
-  XGetWindowAttributes (dpy, win, &xgwa);
-  scrnWidth = xgwa.width;
-  scrnHeight = xgwa.height;
-
-  {
-    float f = get_float_resource ("cycle", "Float");
-    if (f <= 0 || f > 60) f = 6.0;
-    cycle = 60.0 / f;
-  }
-  movef = get_float_resource ("move", "Float");
-  wobber = get_float_resource ("wobble", "Float");
-
-  {
-    double magfac = get_float_resource ("mag", "Float");
-    mag *= magfac;
-    fastch=(int)(fastch*magfac);
-  }
-
-  if (get_boolean_resource ("minutes", "Boolean")) {
-    minutes=1; maxk+=60-24;
-  }
-
-  timewait = get_integer_resource ("delay", "Integer");
-  fastch = get_integer_resource ("fast", "Integer");
-  cycl = get_boolean_resource ("colcycle", "Integer");
-  hsvcycl = get_float_resource ("hsvcycle", "Integer");
-
-  {
-    char *s = get_string_resource ("rgb", "RGB");
-    char dummy;
-    if (s && *s)
-      {
-        double rr, gg, bb;
-        if (3 == sscanf (s, "%lf %lf %lf %c", &rr, &gg, &bb, &dummy))
-          r = rr, g = gg, b = bb;
-      }
-    if (s) free (s);
-
-    s = get_string_resource ("hsv", "HSV");
-    if (s && *s)
-      {
-        double hh, ss, vv;
-        if (3 == sscanf (s, "%lf %lf %lf %c", &hh, &ss, &vv, &dummy)) {
-          hue = hh, sat = ss, val = vv;
-          hsv2rgb(hue,sat,val,&r,&g,&b);
-        }
-      }
-    if (s) free (s);
-  }
-
-  if (fastch>maxfast)
-               fastch=maxfast;
-  
-  xgc=( XGCValues *) malloc(sizeof(XGCValues) );
-  xorgc=( XGCValues *) malloc(sizeof(XGCValues) );
-  xandgc=( XGCValues *) malloc(sizeof(XGCValues) );
-
-  screen = screen_number (xgwa.screen);
-  
-  planes=xgwa.depth;
-
-  gc = XCreateGC (dpy, win, 0,  xgc);
-  xorgc->function =GXor;
-  orgc = XCreateGC (dpy, win, GCFunction,  xorgc);
-  xandgc->function =GXandInverted;
-  andgc = XCreateGC (dpy, win, GCFunction,  xandgc);
-  
-  buffer = XCreatePixmap (dpy, win, scrnWidth, scrnHeight,
-                         xgwa.depth); 
-  
-#ifdef DEBUG
-  printf("Time 3D drawing ");
-#ifdef FASTDRAW
-#      ifdef FASTCOPY
-  puts("fast by Pixmap copy");
-#      else
-  puts("fast by XImage copy");
-#      endif
-#else
-  puts("slow");
-#endif
-#endif /* DEBUG */
-  
-#ifdef FASTCOPY
-  fastcircles = XCreatePixmap (dpy, win, fastcw, fastch+1, xgwa.depth);
-  fastmask    = XCreatePixmap (dpy, win, fastcw, fastch+1, xgwa.depth);
-#endif
-  
-  setink(BlackPixel (dpy, screen));
-  XFillRectangle (dpy, buffer     , gc, 0, 0, scrnWidth, scrnHeight);  
-  
-#ifdef FASTCOPY
-  
-  setink(0);
-  XFillRectangle (dpy, fastcircles, gc, 0, 0, fastcw, fastch+1);
-  XFillRectangle (dpy, fastmask   , gc, 0, 0, fastcw, fastch+1);
-  
-#endif
-
-#ifdef PRTDBX
-  printf("move\t%.2f\nwobber\t%.2f\nmag\t%.2f\ncycle\t%.4f\n",
-        movef,wobber,mag/10,cycle);
-  printf("fast\t%i\nmarks\t%i\nwait\t%i\n",fastch,maxk,timewait);
-#endif
-}
-
-static void fill_kugel(int i, Pixmap buf, int setcol);
-
-
-/*------------------------------------------------------------------*/
-static void 
-init_kugel(void)
-{
-  
-#ifdef FASTDRAW
-  int i;
-
-  for(i=0; i<fastch; i++)
-    {
-#      ifdef FASTCOPY
-      kugeln[i].r1=-((double) i)/2 -1;
-      kugeln[i].x1=sum1ton(i);
-      kugeln[i].y1=((double) i)/2 +1;
-      
-      fill_kugel(i,fastcircles,1);
-      setink((1<<MIN(24,xgwa.depth))-1);
-      fill_kugel(i,fastmask,0);
-#      else
-      kugeln[i].r1=-((double) i)/2 -1;
-      kugeln[i].x1=kugeln[i].y1=((double) i)/2 +1;
-      
-      fill_kugel(i,buffer,1);
-      fastcircles[i]=XGetImage(dpy,buffer,0,0,i+2,i+2,(1<<planes)-1,ZPixmap);
-      
-      setink((1<<MIN(24,xgwa.depth))-1);
-      fill_kugel(i,buffer,0);
-      fastmask[i]=XGetImage(dpy,buffer,0,0,i+2,i+2,(1<<planes)-1,ZPixmap);
-      
-      setink(0);
-      XFillRectangle (dpy, buffer     , gc, 0, 0, scrnWidth, scrnHeight);      
-#      endif
-    }
-  fastdraw=1;
-#endif
-}
-
-/* Zeiger zeichnen */
-
-static void
-zeiger(double dist,double rad, double z, double sec, int *q)
-{
-  int i,n;
-  double gratio=sqrt(2.0/(1.0+sqrt(5.0)));
-  
-  n = *q;
-  
-  for(i=0;i<3;i++)
-    {
-      kugeln[n].x=dist*cos(sec);
-      kugeln[n].y=-dist*sin(sec);
-      kugeln[n].z=z;
-      kugeln[n].r=rad;
-      n++;
-
-      dist += rad;
-      rad = rad*gratio;
-    }
-  *q = n;
-}
-
-/*-----------------------------------------------------------------*
- *                           Uhr zeichnen                          *
- *-----------------------------------------------------------------*/
-
-static void
-manipulate(double k)
-{
-  double i,l,/*xs,*/ys,zs,mod;
-  double /*persec,*/sec,min,hour;
-  int n;
-  
-  sec=TWOPI*modf(k/60,&mod);
-  min=TWOPI*modf(k/3600,&mod);
-  hour=TWOPI*modf(k/43200,&mod);
-  
-  l=TWOPI*modf(k/300,&mod);
-  i=0.0;
-  for (n=0;n<kmax;n++)
-    {
-      
-      kugeln[n].x=4.0*sin(i);
-      kugeln[n].y=4.0*cos(i);
-      kugeln[n].z=wobber* /* (sin(floor(2+2*l/(PI))*i)*sin(2*l)); */
-       cos((i-sec)*floor(2+5*l/(PI)))*sin(5*l);
-      if(minutes)
-       {
-         kugeln[n].r=/* (1.0+0.3*cos(floor(2+2*l/(PI))*i)*sin(2*l))* */
-           ((n % 5!=0) ? 0.3 : 0.6)*
-             ((n % 15 ==0) ? 1.25 : .75);
-       }
-      else
-       {
-         kugeln[n].r=/* (1.0+0.3*cos(floor(2+2*l/(PI))*i)*sin(2*l))* */
-           ((n & 1) ? 0.5 : 1.0)*
-             ((n % 6==0) ? 1.25 : .75);
-       }
-      i+=TWOPI/kmax;
-    }
-
-  kugeln[n].x=0.0;
-  kugeln[n].y=0.0;
-  kugeln[n].z=0.0;
-  kugeln[n].r=2.0+cos(TWOPI*modf(k,&mod))/2;
-  n++;
-  
-  zeiger(2.0,0.75,-2.0,sec,&n);
-  zeiger(1.0,1.0,-1.5,min,&n);
-  zeiger(0.0,1.5,-1.0,hour,&n);
-  
-  for(n=0;n<maxk;n++)
-    {
-      ys=kugeln[n].y*cos(movef*sin(cycle*sec))+
-       kugeln[n].z*sin(movef*sin(cycle*sec));
-      zs=-kugeln[n].y*sin(movef*sin(cycle*sec))+
-       kugeln[n].z*cos(movef*sin(cycle*sec));
-      kugeln[n].y=ys;
-      kugeln[n].z=zs;
-    }
-}
-/*------------------------------------------------------------------*/
-static void
-t3d_sort(int l, int r)
-{
-  int i,j;
-  kugeldat ex;
-  double x;
-  
-  i=l;j=r;
-  x=kugeln[(l+r)/2].d;
-  while(1)
-    {
-      while(kugeln[i].d>x) i++;
-      while(x>kugeln[j].d) j--;
-      if (i<=j)
-       {
-         ex=kugeln[i];kugeln[i]=kugeln[j];kugeln[j]=ex;
-         i++;j--;
-       }
-      if (i>j) break;
-    }
-  if (l<j) t3d_sort(l,j);
-  if (i<r) t3d_sort (i,r);
-}
-
-/*------------------------------------------------------------------*/
-static void
-fill_kugel(int i, Pixmap buf, int setcol)
-{
-  double ra;
-  int m,col,inc=1,inr=3,d;
-  d=(int)((abs(kugeln[i].r1)*2));
-  if (d==0) d=1;
-  
-#ifdef FASTDRAW
-  if(fastdraw && d<fastch)
-    {
-#      ifdef FASTCOPY
-      XCopyArea(dpy, fastmask, buf, andgc, sum1ton(d)-(d+1)/2, 1,d,d,
-               (int)(kugeln[i].x1)-d/2, (int)(kugeln[i].y1)-d/2);
-      XCopyArea(dpy, fastcircles, buf, orgc, sum1ton(d)-(d+1)/2, 1,d,d,
-               (int)(kugeln[i].x1)-d/2, (int)(kugeln[i].y1)-d/2);
-#      else
-      XPutImage(dpy, buf, andgc, fastmask[d-1], 0, 0,
-               (int)(kugeln[i].x1)-d/2, (int)(kugeln[i].y1)-d/2, d, d);
-      XPutImage(dpy, buf, orgc, fastcircles[d-1], 0, 0,
-               (int)(kugeln[i].x1)-d/2, (int)(kugeln[i].y1)-d/2, d, d);
-#      endif
-    }
-  else
-#endif
-    {
-      if(abs(kugeln[i].r1)<6.0) inr=9;
-      
-      for (m=0;m<=28;m+=inr)
-       {
-         ra=kugeln[i].r1*sqrt(1-m*m/(28.0*28.0));
-#ifdef PRTDBX
-         printf("Radius: %f\n",ra);
-#endif
-         if(-ra< 3.0) inc=14;
-         else if(-ra< 6.0) inc=8;
-         else if(-ra<20.0) inc=4;
-         else if(-ra<40.0) inc=2;
-         if(setcol)
-           {
-             if (m==27) col=33;
-             else
-               col=(int)(m);
-             if (col>33) col=33;       col/=3;
-             setink(colors[col].pixel);
-           }
-
-#ifdef USE_POLYGON
-          {
-            int n, nr;
-         for (n=0,nr=0;n<=sines-1;n+=inc,nr++)
-           {
-             track[nr].x=kugeln[i].x1+(int)(ra*sinus[n])+(kugeln[i].r1-ra)/2;
-             track[nr].y=kugeln[i].y1+(int)(ra*cosinus[n])+(kugeln[i].r1-ra)/2;
-           }
-         XFillPolygon(dpy,buf,gc,track,nr,Convex,CoordModeOrigin);
-          }
-#else /* Use XFillArc */
-         XFillArc(dpy, buf, gc,
-                  (int)(kugeln[i].x1+(kugeln[i].r1+ra)/2),
-                  (int)(kugeln[i].y1+(kugeln[i].r1+ra)/2),
-                  (int)-(2*ra+1), (int)-(2*ra+1), 0, 360*64);
-#endif
-       }
-    }
-}
-
-/*------------------------------------------------------------------*/
-
-static void
-init_3d(void)
-{
-  double i;
-  int n=0;
-  
-  a[0]=0.0;
-  a[1]=0.0;
-  a[2]=-10.0;
-  
-  x[0]=10.0;
-  x[1]=0.0;
-  x[2]=0.0;
-  
-  y[0]=0.0;
-  y[1]=10.0;
-  y[2]=0.0;
-  
-  
-  zoom=-10.0;
-  speed=.0;
-  
-  for (i=0.0;n<sines;i+=TWOPI/sines,n++)
-    {
-      sinus[n]=sin(i);
-      cosinus[n]=cos(i);
-    }
-}
-/*------------------------------------------------------------------*/
-
-
-static void
-vektorprodukt(double feld1[], double feld2[], double feld3[])
-{
-  feld3[0]=feld1[1]*feld2[2]-feld1[2]*feld2[1];
-  feld3[1]=feld1[2]*feld2[0]-feld1[0]*feld2[2];
-  feld3[2]=feld1[0]*feld2[1]-feld1[1]*feld2[0];
-}
-/*------------------------------------------------------------------*/
-static void
-turn(double feld1[], double feld2[], double winkel)
-{
-  double temp[3];
-  double s,ca,sa,sx1,sx2,sx3;
-  
-  vektorprodukt(feld1,feld2,temp);
-  
-  s=feld1[0]*feld2[0]+feld1[1]*feld2[1]+feld1[2]*feld2[2];
-  
-  sx1=s*feld2[0];
-  sx2=s*feld2[1];
-  sx3=s*feld2[2];
-  sa=sin(winkel);ca=cos(winkel);
-  feld1[0]=ca*(feld1[0]-sx1)+sa*temp[0]+sx1;
-  feld1[1]=ca*(feld1[1]-sx2)+sa*temp[1]+sx2;
-  feld1[2]=ca*(feld1[2]-sx3)+sa*temp[2]+sx3;
-}
-/*------------------------------------------------------------------*/
-
-/* 1: Blickrichtung v;3:Ebenenmittelpunkt m 
-   double feld1[],feld3[]; */
-static void 
-viewpoint(void)
-{
-  am[0]=-zoom*v[0];
-  am[1]=-zoom*v[1];
-  am[2]=-zoom*v[2];
-  
-  zaehler=norm*norm*zoom;
-}
-/*------------------------------------------------------------------*/
-static void 
-projektion(void)
-{
-  double c1[3],c2[3],k[3],x1,y1;
-  double cno,cnorm/*,magnit*/;
-  int i;
-  
-  for (i=0;i<maxk;i++)
-    {
-      c1[0]=kugeln[i].x-a[0];
-      c1[1]=kugeln[i].y-a[1];
-      c1[2]=kugeln[i].z-a[2];
-      cnorm=sqrt(c1[0]*c1[0]+c1[1]*c1[1]+c1[2]*c1[2]);
-      
-      c2[0]=c1[0];
-      c2[1]=c1[1];
-      c2[2]=c1[2];
-      
-      cno=c2[0]*v[0]+c2[1]*v[1]+c2[2]*v[2];
-      kugeln[i].d=cnorm;
-      if (cno<0) kugeln[i].d=-20.0;
-      
-      
-      kugeln[i].r1=(mag*zoom*kugeln[i].r/cnorm);
-      
-      c2[0]=v[0]/cno;
-      c2[1]=v[1]/cno;
-      c2[2]=v[2]/cno;
-      
-      vektorprodukt(c2,c1,k);
-
-      
-      x1=(startx+(x[0]*k[0]+x[1]*k[1]+x[2]*k[2])*mag);
-      y1=(starty-(y[0]*k[0]+y[1]*k[1]+y[2]*k[2])*mag);
-      if(   (x1>-2000.0)
-        && (x1<scrnWidth+2000.0)
-        && (y1>-2000.0)
-        && (y1<scrnHeight+2000.0))
-       {
-         kugeln[i].x1=(int)x1;
-         kugeln[i].y1=(int)y1;
-       }
-      else
-       {
-         kugeln[i].x1=0;
-         kugeln[i].y1=0;
-         kugeln[i].d=-20.0;
-       }
-    }
-}
-
-/*---------- event-handler ----------------*/
-static void
-event_handler(void)
-{
-  while (XEventsQueued (dpy, QueuedAfterReading))
-    {
-      XEvent event;
-      
-      XNextEvent (dpy, &event);
-      switch (event.type)
-       {
-       case ConfigureNotify:
-         if (event.xconfigure.width != scrnWidth ||
-             event.xconfigure.height != scrnHeight)
-           {
-             XFreePixmap (dpy, buffer); 
-             scrnWidth = event.xconfigure.width;
-             scrnHeight = event.xconfigure.height;
-             buffer = XCreatePixmap (dpy, win, scrnWidth, scrnHeight,
-                                      xgwa.depth);
-             
-             startx=scrnWidth/2;
-             starty=scrnHeight/2;
-             scrnH2=startx;
-             scrnW2=starty;
-           };
-          break;
-
-       case KeyPress:
-         {
-           KeySym kpr=XKeycodeToKeysym(dpy,event.xkey.keycode,0);
-
-            switch (kpr)
-              {
-              case 's': case 'S':
-                vspeed = 0.5;
-                break;
-              case 'a': case 'A':
-                vspeed = -0.3;
-                break;
-
-              case '0':
-                speed = 0;
-                vspeed = 0;
-                break;
-
-              case 'z': case 'Z':
-                mag *= 1.02;
-                break;
-
-              case 'x': case 'X':
-                mag /= 1.02;
-                break;
-
-              default:
-                screenhack_handle_event (dpy, &event);
-                break;
-              }
-          }
-
-        case ButtonPress: case ButtonRelease:
-          break;
-
-       default:
-          screenhack_handle_event (dpy, &event);
-         break;
-       }
-    }
-  /*nap(40);-Ersatz*/ 
-  {
-    struct timeval timeout;
-    timeout.tv_sec=timewait/1000000;
-    timeout.tv_usec=timewait%1000000;
-    (void)select(0,0,0,0,&timeout);
-  }
-}
-
-
-/*-------------------------------------------------*/
-
-char *progclass = "T3D";
-
-char *defaults [] = {
-  ".background:        black",
-  ".foreground:        white",
-  "*move:      0.5",
-  "*wobble:    2.0",
-  "*cycle:     10.0",
-  "*mag:       1",
-  "*minutes:   False",
-  "*delay:      40000",
-  "*fast:      50",
-  "*ccycle:    False",
-  "*hsvcycle:  0.0",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-move",           ".move",        XrmoptionSepArg, 0 },
-  { "-wobble",         ".wobble",      XrmoptionSepArg, 0 },
-  { "-cycle",          ".cycle",       XrmoptionSepArg, 0 },
-  { "-mag",            ".mag",         XrmoptionSepArg, 0 },
-  { "-minutes",                ".minutes",     XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-fast",           ".fast",        XrmoptionSepArg, 0 },
-  { "-colcycle",       ".colcycle",    XrmoptionSepArg, 0 },
-  { "-hsvcycle",       ".hsvcycle",    XrmoptionSepArg, 0 },
-  { "-rgb",            ".rgb",         XrmoptionSepArg, 0 },
-  { "-hsv",            ".hsv",         XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-
-void
-screenhack (Display *d, Window w)
-{
-  Window junk_win,in_win;
-  
-  int px,py,junk/*,wai*/;
-  unsigned int kb;
-/*  int act,act1,tc;*/
-  double vnorm;
-  /* double var=0.0; */
-  int color=0/*, dir=1*/;
-  
-  dpy = d;
-  win = w;
-  initialize();
-  
-  initColor(r,g,b);
-  init_3d();
-  zeit=(struct tm *)malloc(sizeof(struct tm));
-  init_kugel();
-  
-  startx=scrnWidth/2;
-  starty=scrnHeight/2;
-  scrnH2=startx;
-  scrnW2=starty;
-  vspeed=0;
-  
-  
-  vektorprodukt(x,y,v);
-  viewpoint(/*m,v*/);
-  
-  setink (BlackPixel (dpy, screen));
-  XFillRectangle (dpy, win, gc, 0, 0, scrnWidth, scrnHeight);
-  XQueryPointer (dpy, win, &junk_win, &junk_win, &junk, &junk,
-                &px, &py, &kb);
-  
-  for (;;)
-    {  double dtime;
-       
-       /*--------------- Zeichenteil --------------*/
-
-       event_handler();
-       
-       vektorprodukt(x,y,v);
-       
-       vnorm=sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
-       v[0]=v[0]*norm/vnorm;
-       v[1]=v[1]*norm/vnorm;
-       v[2]=v[2]*norm/vnorm;
-       vnorm=sqrt(x[0]*x[0]+x[1]*x[1]+x[2]*x[2]);
-       x[0]=x[0]*norm/vnorm;
-       x[1]=x[1]*norm/vnorm;
-       x[2]=x[2]*norm/vnorm;
-       vnorm=sqrt(y[0]*y[0]+y[1]*y[1]+y[2]*y[2]);
-       y[0]=y[0]*norm/vnorm;
-       y[1]=y[1]*norm/vnorm;
-       y[2]=y[2]*norm/vnorm;
-       
-       projektion();
-       t3d_sort (0,maxk-1);
-       
-       dtime=gettime();
-       
-       if(cycl)
-         {
-           color=(int)(64.0*(dtime/60-floor(dtime/60)))-32;
-           
-           if(color<0)
-             color=-color;
-           
-           setink(colors[color/3].pixel);
-         }
-       else
-         setink(BlackPixel (dpy, screen));
-       
-       XFillRectangle(dpy,buffer,gc,0,0,scrnWidth,scrnHeight);
-       
-       {
-         int i;
-         
-         manipulate(dtime);
-         
-         for (i=0;i<maxk;i++)
-           {
-             if (kugeln[i].d>0.0)
-               fill_kugel(i,buffer,1);
-           }
-       }
-
-       XSync(dpy,0);
-       
-       /* manipulate(gettime());
-          var+=PI/500;
-          if (var>=TWOPI) var=PI/500; */
-       
-       /*event_handler();*/
-       
-       if(hsvcycl!=0.0)
-         {
-           dtime=hsvcycl*dtime/10.0+hue/360.0;
-           dtime=360*(dtime-floor(dtime));
-           
-           hsv2rgb(dtime,sat,val,&r,&g,&b);
-           changeColor(r,g,b);
-         }
-
-       XCopyArea (dpy, buffer, win, gc, 0, 0, scrnWidth, scrnHeight, 0, 0);
-       
-       
-       /*-------------------------------------------------*/
-       XSync(dpy,0);
-       
-       event_handler();
-       
-       (void)(XQueryPointer (dpy, win, &junk_win, &in_win, &junk, &junk,
-                             &px, &py, &kb));
-       
-       if ((px>0)&&(px<scrnWidth)&&(py>0)&&(py<scrnHeight) )           
-         {
-           if ((px !=startx)&&(kb&Button2Mask))
-             {
-               /* printf("y=(%f,%f,%f)",y[0],y[1],y[2]);*/
-               turn(y,x,((double)(px-startx))/(8000*mag));
-               /* printf("->(%f,%f,%f)\n",y[0],y[1],y[2]);*/
-             }
-           if ((py !=starty)&&(kb&Button2Mask)) 
-             {
-               /* printf("x=(%f,%f,%f)",x[0],x[1],x[2]);*/
-               turn(x,y,((double)(py-starty))/(-8000*mag));
-               /* printf("->(%f,%f,%f)\n",x[0],x[1],x[2]);*/
-             }
-           if ((kb&Button1Mask)) 
-             {
-               if (vturn==0.0) vturn=.005; else if (vturn<2)  vturn+=.01;
-               turn(x,v,.002*vturn);
-               turn(y,v,.002*vturn); 
-             }
-           if ((kb&Button3Mask)) 
-             {
-               if (vturn==0.0) vturn=.005; else if (vturn<2) vturn+=.01;
-               turn(x,v,-.002*vturn);
-               turn(y,v,-.002*vturn);
-             }
-         }
-       if (!(kb&Button1Mask)&&!(kb&Button3Mask)) 
-         vturn=0;
-       
-       speed=speed+speed*vspeed;
-       if ((speed<0.0000001) &&(vspeed>0.000001)) speed=0.000001;
-       vspeed=.1*vspeed;
-       if (speed>0.01) speed=.01;
-       a[0]=a[0]+speed*v[0];
-       a[1]=a[1]+speed*v[1];
-       a[2]=a[2]+speed*v[2];
-      }
-}
diff --git a/hacks/t3d.man b/hacks/t3d.man
deleted file mode 100644 (file)
index 54ef3fd..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-.TH t3d 1 "Version 1.1" "Time 3D"
-.SH NAME
-t3d \- clock using flying balls to display the time
-.SH SYNOPSIS
-t3d [ \f2 options\f1 ]...
-.SH DESCRIPTION
-.PP
-Time 3D is a clock. It uses flying balls to display the time. This
-balls move and wobble around to give you the impression your
-graphic workstation with its many XStones is doing something.
-.PP
-t3d uses mouse and keyboard to let you fly through the balls. Hit
-.B S
-to speed up, 
-.B A
-to slow down,
-.B Z
-to zoom in and
-.B X
-to zoom out.
-Use the
-.B left mouse button
-to rotate to the left and the
-.B right mouse button
-to rotate the view to the right. Use the
-.B middle mouse button
-to change the optical axis and the moving direction.
-.B 0
-(zero) will stop you.
-.B Q
-quits.
-.PP
-.SH OPTIONS
-.TP
-.BI "-move " "factor"
-Modifies the direction move of t3d. The clock looks 30 degrees*
-.I factor
-to the left and to the right periodically.
-.TP
-.BI "-wobble " "factor"
-Modifies the wobbling (sounds nice :-) of t3d by multiplying the
-default deformation of the clock with
-.I factor.
-.TP
-.B -minutes
-Shows one small ball for every minute, instead of one for every 2.5 minutes.
-.TP
-.BI "-mag " "factor"
-Changes the magnification of t3d. By default, t3d draws a 200x200 image.
-A .I factor
-of 2 means, it will use a 400x400 image.
-.TP
-.BI "-cycle " "period"
-Sets the moving cycle to
-.I period
-seconds. By default, this value is 10 seconds.
-.TP
-.BI "-wait " "microsec"
-Inserts a wait after drawing one view of the clock. By default, t3d waits
-40 ms after each drawing. This helps you to keep the performance loss
-small.
-.TP
-.BI "-fast " "precalc_radius"
-t3d uses bitmap copy to draw precalculated balls. You can specify the radius
-in pixels up to which t3d should precalculate balls. t3d will set a useful
-range by itself using the magnification when it is started.
-.TP
-.B -colcycle
-Draws cyclic the color scale used for the balls in the background instead
-of the normal black.
-.TP
-.BI "-rgb " "red green blue"
-Selects the color in RGB color space of the lightning spot on the balls.
-All the other colors used for balls or
-.B -colcycle
-are less intensive colors of the same hue and saturation. All values
-in range of 0 to 1.
-.TP
-.BI "-hsv " "hue saturation value"
-Selects the color in HSV color space.
-.I hue
-is in degrees from 0 to 360, all other values in range from 0 to 1. It gives
-nice but rather unpredictable results, if you use a saturation of e.g. 2.
-Try it at your own risk.
-.TP
-.BI "-hsvcycle " "speed"
-Rotates the hue axis every 10 seconds*
-.I speed.
-.TP
-.B -help
-Prints a short usage message.
-
-.PP
-.SH AUTHOR
-.PP
-Bernd Paysan
-
-Email: bernd.paysan@gmx.de
-
-Hacked on by jwz@jwz.org for xscreensaver.
-
-.SH ACKNOWLEDGEMENT
-.PP
-Acknowledgement to Georg Acher, who wrote the initial program displaying
-balls.
-
-.SH COPYING
-.PP
-Copy, modify, and distribute T3D either under GPL version 2 or newer, or
-under the standard MIT/X license notice.
-
-.SH DISCLAIMER
-.PP
-T3D is not related to T3D(tm), the massive parallel Alpha--based
-supercomputer from Cray Research. T3D's name was invented in 1991,
-years before the project at Cray Research started. There is no
-relation from T3D to Cray's T3D, even the balls surrounding T3D on
-some posters weren't an inspiration for T3D. I don't know anything
-about the other way round.
-
-The programming style of T3D isn't intented as example of good style,
-but as example of how a fast prototyped demo may look like. T3D wasn't
-created to be useful, it was created to be nice.
-
-.SH KNOWN BUGS
-.PP
-There are no known bugs in T3D. Maybe there are bugs in X. Slight
-changes in the T3D sources are known to show these bugs, e.g. if
-you remove the (int) casting at the XFillArc x,y,w,h-coordinates...
diff --git a/hacks/triangle.c b/hacks/triangle.c
deleted file mode 100644 (file)
index d8be189..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*- */
-/* triangle --- create a triangle-mountain */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)triangle.c   4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1995 by Tobias Gloth
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- * 10-Mar-96: re-arranged and re-formatted the code for appearance and
- *            to make common subroutines.  Simplified.
- *               Ron Hitchens <ron@idiom.com>
- * 07-Mar-96: Removed internal delay code, set MI_PAUSE(mi) for inter-scene
- *            delays.  No other delays are needed here.
- *            Made pause time sensitive to value of cycles (in 10ths of a
- *            second).  Removed (hopefully) all references to globals.
- *               Ron Hitchens <ron@idiom.com>
- * 27-Feb-96: Undid the changes listed below.  Added ModeInfo argument.
- *               Implemented delay between scenes using the MI_PAUSE(mi)
- *            scheme.  Ron Hitchens <ron@idiom.com>
- * 27-Dec-95: Ron Hitchens <ron@idiom.com>
- *            Modified logic of draw_triangle() to provide a delay
- *            (sensitive to the value of cycles) between each iteration.
- *            Because this mode is so compute intensive, when the new
- *            event loop adjusted the delay to compensate, this mode had
- *            almost no delay time left.  This change pauses between each
- *            new landscape, but could still be done better (it is not
- *            sensitive to input events while drawing, for example).
- * 03-Nov-95: Many changes (hopefully some good ones) by David Bagley
- * 01-Oct-95: Written by Tobias Gloth
- */
-
-#ifdef STANDALONE
-# define PROGCLASS "Triangle"
-# define HACK_INIT init_triangle
-# define HACK_DRAW draw_triangle
-# define triangle_opts xlockmore_opts
-# define DEFAULTS      "*delay: 10000 \n"      \
-                                       "*ncolors: 128 \n"
-# define SMOOTH_COLORS
-# include "xlockmore.h"                /* in xscreensaver distribution */
-#else /* STANDALONE */
-# include "xlock.h"                    /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-ModeSpecOpt triangle_opts =
-{0, NULL, 0, NULL, NULL};
-
-#define MAX_STEPS 8
-#define MAX_SIZE  (1<<MAX_STEPS)
-#define MAX_LEVELS 1000
-
-#define DELTA  0.4
-#define LEFT   (-0.25)
-#define RIGHT  1.25
-#define TOP    0.3
-#define BOTTOM 1.0
-#define BLUE   45              /* Just the right shade of blue */
-
-#define BACKFACE_REMOVAL
-
-#define DISPLACE(h,d) ((h)/2+LRAND()/(MAXRAND/(2*(d)+1))-d)
-
-typedef struct {
-       int         width;
-       int         height;
-       int         size;
-       int         steps;
-       int         stage;
-       int         init_now;
-       int         fast;
-       int         i;
-       int         j;
-       int         d;
-       short       level[MAX_LEVELS];
-       int         xpos[2 * MAX_SIZE + 1];
-       int         ypos[MAX_SIZE + 1];
-       short       H[(MAX_SIZE + 1) * (MAX_SIZE + 2) / 2];
-       short      *h[MAX_SIZE + 1];
-       short       delta[MAX_STEPS];
-} trianglestruct;
-
-static trianglestruct *triangles = NULL;
-
-static
-void
-draw_atriangle(ModeInfo * mi, XPoint * p, int y_0, int y_1, int y_2, double dinv)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-
-       if (MI_NPIXELS(mi) > 2) {       /* color */
-               int         dmax, dmin;
-               long        color;
-
-               dmin = MIN(y_0, y_1);
-               dmin = MIN(dmin, y_2);
-               dmax = MAX(y_0, y_1);
-               dmax = MAX(dmax, y_2);
-
-               if (dmax == 0) {
-                       color = BLUE;
-               } else {
-                       color = MI_NPIXELS(mi) -
-                               (int) ((double) MI_NPIXELS(mi) / M_PI_2 * atan(dinv * (dmax - dmin)));
-               }
-
-               XSetForeground(display, gc, MI_PIXEL(mi, color % MI_NPIXELS(mi)));
-               XFillPolygon(display, window, gc, p, 3, Convex, CoordModeOrigin);
-       } else {
-               /* mono */
-#ifdef BACKFACE_REMOVAL
-               XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-               XFillPolygon(display, window, gc, p, 3, Convex, CoordModeOrigin);
-#endif
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-               XDrawLine(display, window, gc, p[0].x, p[0].y, p[1].x, p[1].y);
-               XDrawLine(display, window, gc, p[1].x, p[1].y, p[2].x, p[2].y);
-               XDrawLine(display, window, gc, p[2].x, p[2].y, p[0].x, p[0].y);
-       }
-}
-
-static
-void
-calc_points1(trianglestruct * tp, int d, int *y0_p, int *y1_p, int *y2_p, XPoint * p)
-{
-       *y0_p = tp->level[MAX(tp->h[tp->i][tp->j], 0)];
-       *y1_p = tp->level[MAX(tp->h[tp->i + d][tp->j], 0)];
-       *y2_p = tp->level[MAX(tp->h[tp->i][tp->j + d], 0)];
-
-       p[0].x = tp->xpos[2 * tp->i + tp->j];
-       p[1].x = tp->xpos[2 * (tp->i + d) + tp->j];
-       p[2].x = tp->xpos[2 * tp->i + (tp->j + d)];
-
-       p[0].y = tp->ypos[tp->j] - *y0_p;
-       p[1].y = tp->ypos[tp->j] - *y1_p;
-       p[2].y = tp->ypos[tp->j + d] - *y2_p;
-}
-
-static
-void
-calc_points2(trianglestruct * tp, int d, int *y0_p, int *y1_p, int *y2_p, XPoint * p)
-{
-       *y0_p = tp->level[MAX(tp->h[tp->i + d][tp->j], 0)];
-       *y1_p = tp->level[MAX(tp->h[tp->i + d][tp->j + d], 0)];
-       *y2_p = tp->level[MAX(tp->h[tp->i][tp->j + d], 0)];
-
-       p[0].x = tp->xpos[2 * (tp->i + d) + tp->j];
-       p[1].x = tp->xpos[2 * (tp->i + d) + (tp->j + d)];
-       p[2].x = tp->xpos[2 * tp->i + (tp->j + d)];
-
-       p[0].y = tp->ypos[tp->j] - *y0_p;
-       p[1].y = tp->ypos[tp->j + d] - *y1_p;
-       p[2].y = tp->ypos[tp->j + d] - *y2_p;
-}
-
-
-static
-void
-draw_mesh(ModeInfo * mi, trianglestruct * tp, int d, int count)
-{
-       XPoint      p[3];
-       int         first = 1;
-       int         y_0, y_1, y_2;
-       double      dinv = 0.2 / d;
-
-       if ((tp->j == 0) && (tp->i == 0)) {
-#if 0 /* jwz */
-               XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-#else
-               {
-                 int x = 0;
-                 int y = 0;
-                 int x2 = MI_WIN_WIDTH(mi);
-                 int y2 = tp->ypos[0];
-                 XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WIN_BLACK_PIXEL(mi));
-                 XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                                                x, y, x2, y2);
-               }
-#endif
-       }
-       for (; (tp->j < tp->size) && (count > 0); tp->j += ((count) ? d : 0)) {
-               for (tp->i = (first) ? tp->i : 0, first = 0;
-                    (tp->i < MAX_SIZE - tp->j) && (count > 0);
-                    tp->i += d, count--) {
-                       if (tp->i + tp->j < tp->size) {
-                               calc_points1(tp, d, &y_0, &y_1, &y_2, p);
-                               draw_atriangle(mi, p, y_0, y_1, y_2, dinv);
-                       }
-                       if (tp->i + tp->j + d < tp->size) {
-                               calc_points2(tp, d, &y_0, &y_1, &y_2, p);
-                               draw_atriangle(mi, p, y_0, y_1, y_2, dinv);
-                       }
-               }
-       }
-
-       if (tp->j == tp->size) {
-               tp->init_now = 1;
-       }
-}
-
-void
-init_triangle(ModeInfo * mi)
-{
-       trianglestruct *tp;
-       short      *tmp;
-       int         i, dim, one;
-
-       if (triangles == NULL) {
-               if ((triangles = (trianglestruct *) calloc(MI_NUM_SCREENS(mi),
-                                          sizeof (trianglestruct))) == NULL)
-                       return;
-       }
-       tp = &triangles[MI_SCREEN(mi)];
-
-       tp->width = MI_WIN_WIDTH(mi);
-       tp->height = MI_WIN_HEIGHT(mi);
-       tp->init_now = 1;
-       tp->fast = 2;
-
-       XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-
-
-
-       tp->steps = MAX_STEPS;
-       do {
-               tp->size = 1 << --tp->steps;
-       } while (tp->size * 5 > tp->width);
-       tmp = tp->H;
-       for (i = 0; i < tp->size + 1; i++) {
-               tp->h[i] = tmp;
-               tmp += (tp->size) + 1 - i;
-       }
-
-       tp->stage = -1;
-       dim = MIN(tp->width, tp->height);
-
-       for (i = 0; i < 2 * tp->size + 1; i++) {
-               tp->xpos[i] = (short) ((((double) i)
-                        / ((double) (2 * tp->size)) * (RIGHT - LEFT) + LEFT)
-                                      * dim) + (tp->width - dim) / 2;
-       }
-
-       for (i = 0; i < (tp->size + 1); i++) {
-               tp->ypos[i] = (short) ((((double) i)
-                        / ((double) tp->size) * (BOTTOM - TOP) + TOP) * dim)
-                       + (tp->height - dim) / 2;
-       }
-
-       for (i = 0; i < tp->steps; i++) {
-               tp->delta[i] = ((short) (DELTA * dim)) >> i;
-       }
-
-       one = tp->delta[0];
-
-       if (one > 0)
-               for (i = 0; i < MAX_LEVELS; i++) {
-                       tp->level[i] = (i * i) / one;
-               }
-}
-
-void
-draw_triangle(ModeInfo * mi)
-{
-       trianglestruct *tp = &triangles[MI_SCREEN(mi)];
-       int         d, d2, i, j, delta;
-
-       if (!tp->init_now) {
-               draw_mesh(mi, tp, tp->d / 2, MAX_SIZE / tp->d);
-
-               /* The init_now flag will pop up when the scene is complete.
-                * Cycles specifies how long to wait, in 1/10 secs.
-                TODO: This is wrong for multi-screens ***
-                */
-               if (tp->init_now) {
-#ifndef STANDALONE
-                       MI_PAUSE(mi) = 2000000;
-#else
-                       if (tp->stage == -1)
-                         {
-                               XSync(MI_DISPLAY(mi), False);
-                               usleep(2000000);
-                               XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-# if 1
-                               if (!mono_p)
-                                 {
-                                       free_colors(mi->dpy, mi->xgwa.colormap, mi->colors,
-                                                               mi->npixels);
-                                       make_smooth_colormap (mi->dpy,
-                                                                                 mi->xgwa.visual, mi->xgwa.colormap,
-                                                                                 mi->colors, &mi->npixels,
-                                                                                 True, &mi->writable_p, True);
-                                 }
-# endif /* 0 */
-                         }
-#endif
-               }
-               return;
-       }
-       if (tp->delta[0] > 0) {
-               if (!(++tp->stage)) {
-                       tp->h[0][0] = (short int) MAX(0, DISPLACE(0, tp->delta[0]));
-                       tp->h[tp->size][0] = (short int) MAX(0, DISPLACE(0, tp->delta[0]));
-                       tp->h[0][tp->size] = (short int) MAX(0, DISPLACE(0, tp->delta[0]));
-               } else {
-                       d = 2 << (tp->steps - tp->stage);
-                       d2 = d / 2;
-                       delta = tp->delta[tp->stage - 1];
-
-                       for (i = 0; i < tp->size; i += d) {
-                               for (j = 0; j < (tp->size - i); j += d) {
-                                       tp->h[i + d2][j] = (short int) DISPLACE(tp->h[i][j] +
-                                                    tp->h[i + d][j], delta);
-                                       tp->h[i][j + d2] = (short int) DISPLACE(tp->h[i][j] +
-                                                    tp->h[i][j + d], delta);
-                                       tp->h[i + d2][j + d2] = (short int) DISPLACE(tp->h[i + d][j] +
-                                                    tp->h[i][j + d], delta);
-                               }
-
-                               tp->init_now = 0;
-                               tp->i = 0;
-                               tp->j = 0;
-                               tp->d = d;
-                       }
-               }
-       }
-       if (tp->stage == tp->steps) {
-               tp->stage = -1;
-       }
-}
-
-void
-release_triangle(ModeInfo * mi)
-{
-       if (triangles != NULL) {
-               (void) free((void *) triangles);
-               triangles = NULL;
-       }
-}
-
-void
-refresh_triangle(ModeInfo * mi)
-{
-       /* Do nothing, it will refresh by itself */
-}
diff --git a/hacks/truchet.c b/hacks/truchet.c
deleted file mode 100644 (file)
index cb53913..0000000
+++ /dev/null
@@ -1,527 +0,0 @@
-/* truchet --- curved and straight tilings
- * Copyright (c) 1998 Adrian Likins <adrian@gimp.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 screensaver draws two varieties of truchet patterns, a curved one and
-   a straight one. There are lots and lots of command line options to play
-   with.
-
-   If your running remotely or on a slow machine or slow xserver, some of the
-   settings will be way too much. The default settings should be okay though. 
-
-   This screensaver doesnt use anything bizarre or special at all, just a few
-   standard xlib calls.
-
-   A few suggested commandline combos..All these were tested on a k6-200
-   running XFree86 3.3 on a ark2000, so your mileage may vary...
-
-      truchet -delay 200 -no-curves
-      truchet -delay 500 -no-curves -square -no-erase
-      truchet -delay 500 -no-erase -square -erase-count 5
-      truchet -scroll
-      truchet -scroll -no-erase -anim-step-size 9
-      truchet -delay 200 -no-angles -min-width 36 -max-width 36
-      truchet -delay 200 -no-curves -min-width 12 -max-width 12
-      truchet -delay 200 -no-curves -min-width 36 -max-width 36 -no-erase
-      truchet -delay 100 -min-width 256 -max-width 512 -no-erase \
-              -min-linewidth 96 -root
-      truchet -min-width 64 -max-width 128 -no-erase -max-linewidth 4 \
-              -root -no-angles
-      truchet -min-width 64 -max-width 128 -no-erase -max-linewidth 4 \
-              -root -no-curves -delay 25
- */
-
-#include "screenhack.h"
-
-#define MAXRATIO 2
-
-
-char *progclass="Truchet";
-
-char *defaults [] = {
-  "*minWidth:                 40",
-  "*minHeight:                40",
-  "*max-Width:                150",
-  "*max-Height:               150",
-  "*maxLineWidth:             25",
-  "*minLineWidth:             2",
-  "*erase:                    True",
-  "*eraseCount:               25",        
-  "*square:                   True",
-  "*delay:                    1000",
-  "*curves:                   True",
-  "*angles:                   True",
-  "*angles-and-curves:        True",
-  "*scroll:                   False",
-  "*scroll-overlap:           400",
-  "*anim-delay:               100",
-  "*anim-step-size:           3",
-  "*randomize:               false",
-   0
-};
-
-/* options passed to this program */
-XrmOptionDescRec options [] = {
-  { "-min-width",      ".minWidth",       XrmoptionSepArg, 0 },
-  { "-max-height",     ".max-Height",      XrmoptionSepArg, 0 },
-  { "-max-width",      ".max-Width",       XrmoptionSepArg, 0 },
-  { "-min-height",     ".minHeight",      XrmoptionSepArg, 0 },
-  { "-max-linewidth",  ".maxLineWidth",   XrmoptionSepArg, 0 },
-  { "-min-linewidth",  ".minLineWidth",   XrmoptionSepArg, 0 },
-  { "-erase",          ".erase",          XrmoptionNoArg, "True" },
-  { "-no-erase",       ".erase",          XrmoptionNoArg, "False" },
-  { "-erase-count",    ".eraseCount",     XrmoptionSepArg, 0 },
-  { "-square",         ".square",         XrmoptionNoArg, "True" },
-  { "-not-square",     ".square",         XrmoptionNoArg, "False" },
-  { "-curves",         ".curves",         XrmoptionNoArg, "True" },
-  { "-angles",         ".angles",         XrmoptionNoArg,  "True" },
-  { "-no-angles",      ".angles",         XrmoptionNoArg,  "False" },
-  { "-no-curves",      ".curves",         XrmoptionNoArg, "False" },
-  { "-delay",          ".delay",          XrmoptionSepArg, 0 },
-  { "-scroll",         ".scroll",         XrmoptionNoArg, "True" },
-  { "-scroll-overlap", ".scroll-overlap", XrmoptionSepArg, 0 },
-  { "-anim-delay",     ".anim-delay",     XrmoptionSepArg, 0 },
-  { "-anim-step-size",  ".anim-step-size", XrmoptionSepArg, 0 },
-  { "-randomize",      ".randomize",     XrmoptionNoArg, "True" },
-  { 0, 0, 0, 0 }
-};
-
-static GC agc, bgc;
-static int linewidth;
-static int width, height;
-static XWindowAttributes xgwa;
-static Pixmap frame;
-static int overlap;
-
-static void draw_truchet(Display *disp, Window win);
-static void draw_angles(Display *disp, Window win);
-static void scroll_area(Display *disp, Window win, int delay, int step_size);
-
-static void draw_angles(Display *disp, Window win)
-{
-  int countX;
-  int countY;
-
-  countX=0;
-  countY=0;
-  
-  while((xgwa.height+overlap) > countY*height)
-       {
-         while((xgwa.width+overlap) > countX*width)
-           {
-             if(random()%2)
-             {
-               /* block1 */
-               XDrawLine(disp,frame,agc,
-                         (countX*width)+(width/2),
-                         (countY*height), 
-                         (countX*width)+(width),
-                         (countY*height)+(height/2));
-               XDrawLine(disp,frame,agc,
-                         (countX*width), 
-                         (countY*height)+(height/2),
-                         (countX*width)+(width/2),
-                         (countY*height)+(height));
-             }
-           else
-             {
-               /* block 2 */
-               XDrawLine(disp,frame,agc, 
-                         (countX*width)+(width/2),
-                         (countY*height),
-                         (countX*width),
-                         (countY*height)+(height/2));
-               XDrawLine(disp,frame,agc,
-                         (countX*width)+(width),
-                         (countY*height)+(height/2),
-                         (countX*width)+(width/2),
-                         (countY*height)+(height)); 
-             }
-             countX++;
-           }
-         countY++;
-         countX=0;
-       }
-
-  countX=0;
-  countY=0;
-}
-  
-
-static void draw_truchet(Display *disp, Window win)
-{
-  int countX;
-  int countY;
-
-
-  countX=0;
-  countY=0;
-
-
-  while(xgwa.height+overlap > countY*height)
-       {
-         while(xgwa.width+overlap > countX*width)
-           {
-             if(random()%2)
-             {
-               /* block1 */
-               XDrawArc(disp, frame, agc,
-                        ((countX*width)-(width/2)),
-                        ((countY*height)-(height/2)),
-                        width,
-                        height,
-                        0, -5760);
-               XDrawArc(disp,frame, agc,
-                        ((countX*width)+(width/2)),
-                        ((countY*height)+(height/2)),
-                        width,
-                        height,
-                        11520,
-                        -5760);
-             }
-           else
-             {
-               /* block 2 */
-               XDrawArc(disp,frame,agc,
-                        ((countX*width)+(width/2)),
-                        ((countY*height)-(height/2)),
-                        width,
-                        height,
-                        17280,
-                        -5760);
-               XDrawArc(disp,frame,agc,
-                        ((countX*width)-(width/2)),
-                        ((countY*height)+(height/2)),
-                        width,
-                        height,
-                        0,
-                        5760);
-             }
-             countX++;
-           }
-         countY++;
-         countX=0;
-       }
-   countX=0;
-   countY=0;
-}
-/* this is the function called for your screensaver */
-void screenhack(Display *disp, Window win)
-{
-  XGCValues gcv;
-  int countX;
-  int countY;
-  int maxlinewidth;
-  int minlinewidth;
-  int minwidth;
-  int minheight;
-  int max_height; 
-  int max_width; 
-  int delay;
-  int count;
-  int anim_delay;
-  int anim_step_size;
-
-
-  Colormap cmap;
-  XColor fgc;
-  Bool curves;
-  Bool square;
-  Bool angles;
-  Bool erase;
-  Bool eraseCount;
-  Bool scroll;
-  
-
-  maxlinewidth = get_integer_resource ("maxLineWidth", "Integer");
-  minlinewidth = get_integer_resource ("minLineWidth", "Integer");
-  minwidth = get_integer_resource ("minWidth", "Integer");
-  minheight = get_integer_resource ("minHeight", "Integer");
-  max_width = get_integer_resource ("max-Width", "Integer"); 
-  max_height = get_integer_resource ("max-Height", "Integer" ); 
-  delay = get_integer_resource ("delay", "Integer");
-  eraseCount = get_integer_resource ("eraseCount", "Integer");
-  square = get_boolean_resource ("square", "Boolean");
-  curves = get_boolean_resource ("curves", "Boolean");
-  angles = get_boolean_resource ("angles", "Boolean");
-  erase = get_boolean_resource ("erase", "Boolean");
-  scroll = get_boolean_resource ("scroll", "Boolean");
-  overlap = get_integer_resource ("scroll-overlap", "Integer");
-  anim_delay = get_integer_resource ("anim-delay", "Integer");
-  anim_step_size = get_integer_resource ("anim-step-size", "Integer");
-
-  if (get_boolean_resource("randomize", "Randomize"))
-    {
-      int i = (random() % 12);
-      switch(i) {
-      case 0:
-       break;
-      case 1:
-       curves = False;
-       break;
-      case 2:
-       curves = False;
-       square = True;
-       erase = False;
-       break;
-      case 3:
-       square = True;
-       erase = False;
-       eraseCount = 5;
-       break;
-      case 4:
-       scroll = True;
-       break;
-      case 5:
-       scroll = True;
-       erase = False;
-       anim_step_size = 9;
-       break;
-      case 6:
-       angles = False;
-       minwidth = max_width = 36;
-       break;
-      case 7:
-       curves = False;
-       minwidth = max_width = 12;
-       break;
-      case 8:
-       curves = False;
-       erase = False;
-       minwidth = max_width = 36;
-       break;
-      case 9:
-       erase = False;
-       minwidth = 256;
-       max_width = 512;
-       minlinewidth = 96;
-       break;
-      case 10:
-       angles = False;
-       minwidth = 64;
-       max_width = 128;
-       maxlinewidth = 4;
-       break;
-      case 11:
-       curves = False;
-       minwidth = 64;
-       max_width = 128;
-       maxlinewidth = 4;
-       break;
-      default:
-       abort();
-       break;
-      }
-    }
-
-  XGetWindowAttributes (disp, win, &xgwa);
-  gcv.foreground = BlackPixel(disp,0);
-  gcv.background = WhitePixel(disp,0);
-  gcv.line_width = 25;
-  cmap = xgwa.colormap;
-
-  gcv.foreground = get_pixel_resource("background", "Background",
-                                     disp, xgwa.colormap);
-
-  bgc = XCreateGC (disp, win, GCForeground, &gcv);
-  agc = XCreateGC(disp, win, GCForeground, &gcv);
-
-  XFillRectangle(disp, win, bgc, 0, 0, xgwa.width, xgwa.height);
-
-  width=60;
-  height=60;
-  linewidth=1;
-  countX=0;
-  countY=0;
-  count=0;
-  XSetForeground(disp, agc, gcv.background);
-  
-  
-  frame = XCreatePixmap(disp,win, xgwa.width+overlap, xgwa.height+overlap, xgwa.depth); 
-  
-
-  while(1)
-    {
-      if (!mono_p)
-       {
-       /* XXX there are probably bugs with this. */
-        /* could be...I just borrowed this code from munch */
-
-       fgc.red = random() % 65535;
-       fgc.green = random() % 65535;
-       fgc.blue = random() % 65535;
-       
-       if (XAllocColor(disp, cmap, &fgc)) 
-         {
-           XSetForeground(disp, agc, fgc.pixel);
-         }
-       else
-         {
-           /* use white if all else fails  */
-           XSetForeground(disp,agc, gcv.background);
-         }
-      }
-
-      
-      
-
-      /* generate a random line width */
-      linewidth=(random()% maxlinewidth);
-
-      /* check for lower bound */
-      if(linewidth < minlinewidth)
-       linewidth = minlinewidth;
-
-      /* try to get an odd linewidth as it seem to work a little better */
-      if(linewidth%2)
-       linewidth++;
-
-      /* grab a random height and width */ 
-      width=(random()%max_width);
-      height=(random()%max_height);
-
-      /* make sure we dont get a 0 height or width */
-      if(width == 0 || height == 0)
-       {
-         height=max_height;
-         width=max_width;
-       }
-
-
-      /* check for min height and width */
-      if(height < minheight)
-       {
-         height=minheight;
-       }
-      if(width < minwidth)
-       {
-         width=minwidth;
-       }
-
-      /* if tiles need to be square, fix it... */
-      if(square)
-       height=width;
-
-      /* check for sane aspect ratios */
-      if((width/height) > MAXRATIO) 
-       height=width;
-      if((height/width) > MAXRATIO)
-       width=height;
-      
-      /* to avoid linewidths of zero */
-      if(linewidth == 0 || linewidth < minlinewidth)
-       linewidth = minlinewidth;
-
-      /* try to keep from getting line widths that would be too big */
-      if(linewidth > 0 && linewidth >= (height/5))
-       linewidth = height/5;
-  
-      XSetLineAttributes(disp, agc, linewidth, LineSolid, CapRound, JoinRound);
-
-      if(erase || (count >= eraseCount))
-       {
-         /*  XClearWindow(disp,win); */
-         XFillRectangle(disp, frame, bgc, 0, 0, xgwa.width+overlap, xgwa.height+overlap);
-         count=0;
-       }
-            
-      if(!scroll)
-       overlap=0;
-            
-      /* do the fun stuff...*/
-      if(curves && angles)
-       {
-         if(random()%2)
-           draw_truchet(disp,win);
-         else
-           draw_angles(disp,win);
-       }
-      else if(curves && !angles)
-       draw_truchet(disp,win);
-      else if(!curves && angles)
-       draw_angles(disp,win);
-
-   
-      XCopyArea(disp,frame,win,agc,0,0,xgwa.width,xgwa.height,0,0);
-      if(scroll)
-       {
-         scroll_area(disp,win,anim_delay,anim_step_size);
-         delay = 0;
-       }
-      else
-       XSync(disp, False);
-      
-      screenhack_handle_events (disp);
-
-      /* the delay to try to minimize seizures */
-      usleep((delay*1000)); 
-      count++;
-      
-    }
-
-}
-
-static void scroll_area(Display *disp, Window win, int delay, int step_size)
-{
-
-  int scrollcount_x;
-  int scrollcount_y;
-  int offset;
-  int scroll;
-  /* note local delay overirdes static delay cause... */
-
-
-  scrollcount_x=0;
-  scrollcount_y=0;
-
-  offset=overlap/2;
-  scroll=overlap/4;
-  
-      /* if anyone knows a good way to generate a more random scrolling motion... */
-  while(scrollcount_x <= scroll)
-    {
-      XCopyArea(disp, frame, win, agc,scrollcount_x+offset,scrollcount_y+offset, xgwa.width, xgwa.height, 0,0);
-      XSync(disp, False);
-      scrollcount_x=scrollcount_x+step_size;
-      scrollcount_y=scrollcount_y+step_size;
-      usleep(1000*delay); 
-    }
-  while(scrollcount_x >= 0)
-    {
-      XCopyArea(disp, frame, win, agc,scrollcount_x+offset,scrollcount_y+offset, xgwa.width, xgwa.height, 0,0);
-      XSync(disp, False);
-      scrollcount_y=scrollcount_y+step_size;
-      scrollcount_x=scrollcount_x-step_size;
-      usleep(1000*delay); 
-    }
-  while(scrollcount_y >= scroll)
-    {
-      XCopyArea(disp, frame, win, agc,scrollcount_x+offset,scrollcount_y+offset, xgwa.width, xgwa.height, 0,0);
-      XSync(disp, False);
-      scrollcount_x=scrollcount_x-step_size;
-      scrollcount_y=scrollcount_y-step_size;
-      usleep(1000*delay); 
-    }
-  while(scrollcount_y > 0)
-    {
-      XCopyArea(disp, frame, win, agc,scrollcount_x+offset,scrollcount_y+offset, xgwa.width, xgwa.height, 0,0);
-      XSync(disp, False);
-      scrollcount_y=scrollcount_y-step_size;
-      scrollcount_x=scrollcount_x+step_size;
-      usleep(1000*delay); 
-    }
-  
-  XSync(disp, False);
-  scrollcount_x=0;
-  scrollcount_y=0;
-  
-}
diff --git a/hacks/vidwhacker b/hacks/vidwhacker
deleted file mode 100755 (executable)
index 1219220..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-#!/bin/sh
-#
-# vidwhacker, for xscreensaver.  Copyright (c) 1998 Jamie Zawinski.
-#
-# This script grabs a frame of video, then uses various pbm filters to
-# munge the image in random nefarious ways, then uses xv to put it on
-# the root window.  This works out really nicely if you just feed some
-# random TV station into it...
-#
-# The video grabbing part is SGI-specific -- if you want to use this on
-# another system, add a new clause to the grab() procedure.
-
-
-# Process command-line args...
-
-onroot=false
-verbose=false
-delay=3
-use_stdin=false
-
-pid=""
-tmp=/tmp/vd$$
-tmp_rgb=$tmp-00000.rgb
-tmp_ppm0=$tmp-0.ppm
-tmp_ppm1=$tmp-1.ppm
-tmp_ppm2=$tmp-2.ppm
-tmp_ppm3=$tmp-3.ppm
-tmp_ppm4=$tmp-4.ppm
-
-
-getargs() {
-
-  while [ $# != 0 ]; do
-    case "$1" in
-    -root )
-      onroot=true
-      ;;
-    -verbose )
-      verbose=true
-      ;;
-    -stdin )
-      use_stdin=true
-      ;;
-    * )
-      echo "usage: $0 [ -root | -verbose | -stdin ]" >&2
-      exit 1
-      ;;
-    esac
-    shift
-  done
-
-  xvargs="-quick24"
-
-  if [ "$onroot" = true ]; then
-    xvargs="$xvargs -root -rmode 5 -noresetroot -rfg black -rbg black -viewonly"
-  else
-    xvargs="$xvargs -geom +0+0"
-  fi
-
-  screen_width=`xdpyinfo | sed -n 's/.* dimensions: *\([0-9]*\).*/\1/p'`
-}
-
-
-clean() {
-  rm -f $tmp_rgb $tmp_ppm1 $tmp_ppm2 $tmp_ppm3 $tmp_ppm4
-}
-
-clean2() {
-  clean
-  rm -f $tmp_ppm0
-}
-
-
-# Grab a frame of video.
-#
-grab() {
-  uname=`uname`
-  if [ $uname = IRIX ]; then
-    #
-    # SGI's "vidtomem" returns an SGI RGB image of the default video input,
-    # and has stupid non-overridable ouput-file-naming conventions.  So, let 
-    # it write its file; and then convert it to a pgm.
-    #
-    
-    vidtomem -f $tmp
-    sgitopnm $tmp_rgb > $tmp_ppm1
-
-    # Cut off the close-captioning blips in the NTSC overscan region.  YMMV.
-    #  | pnmcut 12 7 695 477 
-
-  elif [ $uname = Linux ]; then
-
-    # Marcus Herbert says the following works with his Connectix Qcam.
-    # Don't have qcam?  Well, do something else then...  and send me a patch.
-
-    qcam > $tmp_ppm1
-
-    # Friedrich Delgado Friedrichs says the following works with a
-    # Brooktree 848 or 878 tuner card:
-    #
-    #   bttvgrab -Q -d q -l 1 -F /dev/null -o gif -f ${tmp}.gif -N PAL
-    #   giftopnm ${tmp}.gif > $tmp_ppm1
-    #   rm ${tmp}.gif
-    #
-    # He notes that you might need to run a TV application (e.g., xawtv)
-    # before the first time you run vidwhacker in order to initialize the
-    # tuner card and kernel modules.
-
-
-  else
-    echo "$0: don't know how to grab video on this OS." >&2
-    clean2
-    exit 1
-  fi
-}
-
-
-# Use perl to pick a random foreground/background color in pbm's syntax.
-#
-randcolor() {
-  perl -e 'srand; 
-          printf("#%02x%02x%02x-#%02x%02x%02x",
-                 int(rand()*60),
-                 int(rand()*60),
-                 int(rand()*60),
-                 120+int(rand()*135),
-                 120+int(rand()*135),
-                 120+int(rand()*135))'
-}
-
-# Frobnicate the image in some random way.
-#
-frob() {
-
-  w_h=`head -2 $tmp_ppm1 | tail -1`
-  width=`echo $w_h | awk '{print $1}'`
-  height=`echo $w_h | awk '{print $2}'`
-
-  N=`perl -e 'srand; print int(rand() * 17)'`
-
-  if [ "$verbose" = true ]; then
-    echo "mode $N..." >&2
-  fi
-
-  if   [ $N = 0 ]; then
-    ppmtopgm $tmp_ppm1 | pgmedge | pgmtoppm `randcolor` | ppmnorm
-
-  elif [ $N = 1 ]; then
-    ppmtopgm $tmp_ppm1 | 
-    pgmenhance | 
-    pgmtoppm `randcolor`
-
-  elif [ $N = 2 ]; then
-    ppmtopgm $tmp_ppm1 | pgmoil | pgmtoppm `randcolor`
-
-  elif [ $N = 3 ]; then 
-    ppmrelief $tmp_ppm1 | ppmtopgm | pgmedge | ppmrelief | ppmtopgm |
-      pgmedge | pnminvert | pgmtoppm `randcolor`
-
-  elif [ $N = 4 ]; then
-    ppmspread 71 $tmp_ppm1 > $tmp_ppm2
-    pnmarith -add $tmp_ppm1 $tmp_ppm2
-
-  elif [ $N = 5 ]; then
-    pnmflip -lr $tmp_ppm1 > $tmp_ppm2
-    pnmarith -multiply $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3
-    pnmflip -tb $tmp_ppm3 | ppmnorm > $tmp_ppm2
-    pnmarith -multiply $tmp_ppm1 $tmp_ppm2
-
-  elif [ $N = 6 ]; then
-    N2=`perl -e 'srand; print int(rand() * 3)'`
-    if [ $N2 = 0 ]; then
-      pnmflip -lr $tmp_ppm1 > $tmp_ppm2
-    elif [ $N2 = 1 ]; then
-      pnmflip -tb $tmp_ppm1 > $tmp_ppm2
-    else
-      pnmflip -lr $tmp_ppm1 > $tmp_ppm2
-      pnmflip -tb $tmp_ppm2 > $tmp_ppm3
-      cp $tmp_ppm3 $tmp_ppm2
-    fi
-
-    pnmarith -difference $tmp_ppm1 $tmp_ppm2
-
-  elif [ $N = 7 ]; then
-
-    for i in 1 2 3 ; do
-      ppmtopgm $tmp_ppm1 | pgmedge > $tmp_ppm2
-      pnmarith -difference $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3
-      cp $tmp_ppm3 $tmp_ppm1
-    done
-    ppmnorm < $tmp_ppm1
-
-  elif [ $N = 8 ]; then
-    pnmflip -lr $tmp_ppm1 > $tmp_ppm2
-    pnmarith -multiply $tmp_ppm1 $tmp_ppm2 | ppmrelief | ppmnorm | pnminvert
-
-  elif [ $N = 9 ]; then
-    pnmflip -lr $tmp_ppm1 > $tmp_ppm2
-    pnmarith -subtract $tmp_ppm1 $tmp_ppm2 | ppmrelief | ppmtopgm | pgmedge
-
-  elif [ $N = 10 ]; then
-    ppmtopgm $tmp_ppm1 | pgmbentley | pgmtoppm `randcolor`
-
-  elif [ $N = 11 ]; then
-    pgmcrater -number 20000 -height $height -width $width | pgmtoppm `randcolor` > $tmp_ppm2
-    pnmarith -difference $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3
-    pnmflip -tb $tmp_ppm3 | ppmnorm > $tmp_ppm2
-    pnmarith -multiply $tmp_ppm1 $tmp_ppm2
-
-  elif [ $N = 12 ]; then
-    ppmshift 30 $tmp_ppm1 | ppmtopgm | pgmoil | pgmedge |  pgmtoppm `randcolor` > $tmp_ppm2
-    pnmarith -difference $tmp_ppm1 $tmp_ppm2 
-
- elif [ $N = 13 ]; then
-    ppmpat -madras $width $height | pnmdepth 255 > $tmp_ppm2
-    pnmarith -difference $tmp_ppm1 $tmp_ppm2
-  elif [ $N = 14 ]; then
-    ppmpat -tartan $width $height | pnmdepth 255 > $tmp_ppm2
-    pnmarith -difference  $tmp_ppm1 $tmp_ppm2 
-  
-  elif [ $N = 15 ]; then
-    ppmpat -camo $width $height | pnmdepth 255 | ppmshift 50 > $tmp_ppm2
-    pnmarith -multiply $tmp_ppm1 $tmp_ppm2
-  
-  elif [ $N = 16 ]; then
-    pgmnoise $width $height | pgmedge | pgmtoppm `randcolor` > $tmp_ppm2
-    pnmarith -difference $tmp_ppm1 $tmp_ppm2 | pnmdepth 255 | pnmsmooth
-
-  else cat $tmp_ppm1
-  fi
-}
-
-
-# Grab a frame and frob it.  leave it in $tmp_ppm3.
-#
-whack() {
-  clean
-
-  while [ ! -f $tmp_ppm1 ]; do
-    if [ "$use_stdin" != true ]; then
-      grab
-    else
-      cp $tmp_ppm0 $tmp_ppm1
-    fi
-  done
-
-  rm -f $tmp_rgb
-  frob | pnmscale -width $screen_width > $tmp_ppm3
-  rm -f $tmp_ppm1 $tmp_ppm2
-}
-
-
-# Kill off the xv subprocess, if it's running
-#
-kill_pid() {
-  if [ "$pid" != "" ]; then
-
-    if [ "$verbose" = true ]; then
-      echo "killing pid $pid..." >&2
-    fi
-
-    # need to do this to avoid "6898 Terminated" messages!
-    # apparently one can't redirect the output of the builtin `kill' command.
-#    ( sh -c "kill $pid" ) >/dev/null 2>/dev/null </dev/null
-
-    # wtf?  that doesn't work either.  Is it writing to /dev/tty??
-    kill $pid >&- >&-
-
-    pid=""
-  fi
-}
-
-# called when this process is signalled (for cleanup)
-#
-my_trap() {
-  if [ "$verbose" = true ]; then
-    echo "trapped signal!" >&2
-  fi
-  kill_pid
-  clean2
-  exit 1
-}
-
-main() {
-
-  getargs $@
-
-  trap my_trap 0 1 2 3 6 9 13 15
-
-  if [ "$use_stdin" = true ]; then
-   cat > $tmp_ppm0
-  fi
-
-  while true; do
-
-    # Loop grabbing and frobbing images.
-    #
-    # If we're running on the root, run xv in the foreground (with -exit)
-    # and then wait.
-    #
-    # If we're running in a window, spawn xv in the background; then when
-    # it's time to put up the new image, kill off the currently-running xv.
-
-    if [ "$verbose" = true ]; then
-      whack
-    else
-      whack >&- 2>&-
-    fi
-
-    kill_pid
-
-    if [ ! -s $tmp_ppm3 ]; then
-      echo "$0: no image grabbed" >&2
-    else
-
-      pnmtosgi < $tmp_ppm3 > $tmp_ppm2
-      rm -f $tmp_ppm3
-
-      if [ -s $tmp_ppm2 ]; then
-        if [ "$verbose" = true ]; then
-          echo "launching xv $xvargs $tmp_ppm2" >&2
-         ls -lF $tmp_ppm2
-        fi
-
-       mv $tmp_ppm2 $tmp_ppm0
-        xv $xvargs $tmp_ppm0 &
-
-# this doesn't work -- leaves xv processes around, instead of stray xset
-# data.  Sigh.
-#
-#      # cat the file so that we can nuke it without racing against xv.
-#        cat $tmp_ppm2 | xv $xvargs - &
-
-        pid=$!
-      fi
-    fi
-
-    clean
-    sleep $delay
-
-  done
-  exit 1
-}
-
-main $@
-
-# to find stray xv data:
-# xwininfo -root -children|grep 'xv image comments' | awk '{print "xkill -id ", $1}'
diff --git a/hacks/vines.c b/hacks/vines.c
deleted file mode 100644 (file)
index 4c562f9..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*- Mode: C; tab-width: 4 -*-
- * vines --- another geometric pattern generator.
- */
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)vines.c      4.02 97/04/01 xlockmore";
-#endif
-
-/* xlockmore mode written by Tracy Camp
- * campt@hurrah.com 1997
- * released to the public domain
- *
- * This was modifed from a 'screen saver' that a friend and I
- * wrote on our TI-8x calculators in high school physics one day
- * Basically another geometric pattern generator, this ones claim
- * to fame is a pseudo-fractal looking vine like pattern that creates
- * nifty whorls and loops.
- *
- * Revision History:
- * 10-May-97: jwz@jwz.org: turned into a standalone program.
- * 21-Mar-97:  David Hansen <dhansen@metapath.com>
- *             Updated mode to draw complete patterns on every
- *             iteration instead of growing the vine.  Also made
- *             adjustments to randomization and changed variable
- *             names to make logic easier to follow.
- */
-
-#ifdef STANDALONE
-# define PROGCLASS                                     "Vines"
-# define HACK_INIT                                     init_vines
-# define HACK_DRAW                                     draw_vines
-# define vines_opts                                    xlockmore_opts
-# define DEFAULTS              "*delay:        200000 \n"                      \
-                                               "*ncolors:      64     \n"                      \
-                                               "*eraseSpeed:   400 \n"                 \
-                                               "*eraseMode:    -1 \n"
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
-# include "erase.h"
-#else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
-#endif /* !STANDALONE */
-
-ModeSpecOpt vines_opts = {
-  0, NULL, 0, NULL, NULL };
-
-typedef struct {
-       int         a;
-       int         x1;
-       int         y1;
-       int         x2;
-       int         y2;
-       int         length;
-       int         iterations;
-       int         constant;
-       int         ang;
-       int         centerx;
-       int         centery;
-} vinestruct;
-
-static vinestruct *vines = NULL;
-
-void
-refresh_vines(ModeInfo * mi)
-{
-}
-
-void
-init_vines(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       vinestruct *fp;
-
-       if (vines == NULL) {
-               if ((vines = (vinestruct *) calloc(MI_NUM_SCREENS(mi), sizeof (vinestruct))) == NULL) {
-                       return;
-               }
-       }
-       fp = &vines[MI_SCREEN(mi)];
-
-       fp->iterations = 30 + NRAND(100);
-
-       XClearWindow(display, MI_WINDOW(mi));
-}
-
-void
-draw_vines(ModeInfo * mi)
-{
-       vinestruct *fp = &vines[MI_SCREEN(mi)];
-       Display    *display = MI_DISPLAY(mi);
-       GC          gc = MI_GC(mi);
-       int         i;
-
-       if (--(fp->iterations) == 0) {
-#ifdef STANDALONE
-         erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif /* STANDALONE */
-         init_vines(mi);
-       }
-
-       fp->centerx = NRAND(MI_WIN_WIDTH(mi));
-       fp->centery = NRAND(MI_WIN_HEIGHT(mi));
-
-       fp->ang = 60 + NRAND(720);
-       fp->length = 100 + NRAND(3000);
-       fp->constant = fp->length * (10 + NRAND(10));
-
-       fp->a = 0;
-       fp->x1 = 0;
-       fp->y1 = 0;
-       fp->x2 = 1;
-       fp->y2 = 0;
-
-       if (MI_NPIXELS(mi) > 2)
-               XSetForeground(display, gc, MI_PIXEL(mi, NRAND(MI_NPIXELS(mi))));
-       else
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-
-
-       for (i = 0; i < fp->length; i++) {
-               XDrawLine(display, MI_WINDOW(mi), gc,
-                         fp->centerx + (fp->x1 / fp->constant),
-                         fp->centery - (fp->y1 / fp->constant),
-                         fp->centerx + (fp->x2 / fp->constant),
-                         fp->centery - (fp->y2 / fp->constant));
-
-               fp->a += (fp->ang * i);
-
-               fp->x1 = fp->x2;
-               fp->y1 = fp->y2;
-
-               fp->x2 += (int) (i * ((cos(fp->a) * 360) / (2 * M_PI)));
-               fp->y2 += (int) (i * ((sin(fp->a) * 360) / (2 * M_PI)));
-       }
-}
-
-void
-release_vines(ModeInfo * mi)
-{
-       if (vines != NULL) {
-               (void) free((void *) vines);
-               vines = NULL;
-       }
-}
diff --git a/hacks/vines.man b/hacks/vines.man
deleted file mode 100644 (file)
index 13b7dee..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-.TH XScreenSaver 1 "10-May-97" "X Version 11"
-.SH NAME
-vines - draws pseudo-fractal geometric patterns
-.SH SYNOPSIS
-.B vines
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
-
-.SH DESCRIPTION
-The \fIvines\fP program is yet another geometric pattern generator, this
-one's claim to fame being a pseudo-fractal looking vine like pattern that
-creates nifty whorls and loops.
-.SH OPTIONS
-.I vines
-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 \-ncolors \fIinteger\fP
-How many colors should be used (if possible).  Default 200.
-The colors are chosen randomly.
-.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),
-.BR xlock (1)
-.SH COPYRIGHT
-Copyright \(co 1997 by Tracy Camp.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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
-Tracy Camp <campt@hurrah.com>, 1997.
-
-Tweaked by David Hansen <dhansen@metapath.com>, 21-Mar-97.
-
-Ability to run standalone or with \fIxscreensaver\fP added by 
-Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/hacks/vms_axp.opt b/hacks/vms_axp.opt
deleted file mode 100644 (file)
index 6446159..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[-.UTILS]UTILS.OLB_AXP/LIB
-SYS$SHARE:DECW$XMULIBSHR.EXE/SHARE
-SYS$SHARE:DECW$XTSHR.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/hacks/vms_axp_12.opt b/hacks/vms_axp_12.opt
deleted file mode 100644 (file)
index 10f9426..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[-.UTILS]UTILS.OLB_AXP/LIB
-SYS$SHARE:DECW$XMULIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XTLIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/hacks/vms_decc.opt b/hacks/vms_decc.opt
deleted file mode 100644 (file)
index 43d6858..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[-.UTILS]UTILS.OLB_DECC/LIB
-SYS$SHARE:DECW$XMULIBSHR.EXE/SHARE
-SYS$SHARE:DECW$XTSHR.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/hacks/vms_decc_12.opt b/hacks/vms_decc_12.opt
deleted file mode 100644 (file)
index dd6d2f3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[-.UTILS]UTILS.OLB_DECC/LIB
-SYS$SHARE:DECW$XMULIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XTLIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/hacks/wander.c b/hacks/wander.c
deleted file mode 100644 (file)
index 2540fd9..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/* wander, by Rick Campbell <rick@campbellcentral.org>, 19 December 1998.
- *
- * 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 <stdio.h>
-
-#include "screenhack.h"
-#include "colors.h"
-#include "erase.h"
-
-#define MAXIMUM_COLOR_COUNT (256)
-
-static unsigned int advance     = 0;
-static Bool         circles     = 0;
-static Colormap     color_map   = (Colormap)NULL;
-static int          color_count = 0;
-static int          color_index = 0;
-static XColor       colors      [MAXIMUM_COLOR_COUNT];
-static GC           context     = (GC)NULL;
-static unsigned int density     = 0;
-static int          depth       = 0;
-static int          height      = 0;
-static unsigned int length     = 0;
-static unsigned int reset      = 0;
-static unsigned int size       = 0;
-static int          width       = 0;
-
-static void
-init_wander (Display *display, Window window)
-{
-    XGCValues values;
-    XWindowAttributes attributes;
-
-    XClearWindow (display, window);
-    XGetWindowAttributes (display, window, &attributes);
-    width = attributes.width;
-    height = attributes.height;
-    depth = attributes.depth;
-    color_map = attributes.colormap;
-    if (color_count)
-    {
-        free_colors (display, color_map, colors, color_count);
-        color_count = 0;
-    }
-    context = XCreateGC (display, window, GCForeground, &values);
-    color_count = MAXIMUM_COLOR_COUNT;
-    make_color_loop (display, color_map,
-                    0,   1, 1,
-                    120, 1, 1,
-                    240, 1, 1,
-                    colors, &color_count, True, False);
-    if (color_count <= 0)
-    {
-        color_count = 2;
-        colors [0].red = colors [0].green = colors [0].blue = 0;
-        colors [1].red = colors [1].green = colors [1].blue = 0xFFFF;
-        XAllocColor (display, color_map, &colors [0]);
-        XAllocColor (display, color_map, &colors [1]);
-    }
-    color_index = random () % color_count;
-    
-    advance = get_integer_resource ("advance", "Integer");
-    density = get_integer_resource ("density", "Integer");
-    if (density < 1) density = 1;
-    reset = get_integer_resource ("reset", "Integer");
-    if (reset < 100) reset = 100;
-    circles = get_boolean_resource ("circles", "Boolean");
-    size = get_integer_resource ("size", "Integer");
-    if (size < 1) size = 1;
-    width = width / size;
-    height = height / size;
-    length = get_integer_resource ("length", "Integer");
-    if (length < 1) length = 1;
-    XSetForeground (display, context, colors [color_index].pixel);
-}
-
-
-static void
-wander (Display *display, Window window)
-{
-    int x = random () % width;
-    int y = random () % height;
-    int last_x = x;
-    int last_y = y;
-    int width_1 = width - 1;
-    int height_1 = height - 1;
-    int length_limit = length;
-    int reset_limit = reset;
-    int color_index = random () % color_count;
-    unsigned long color = colors [random () % color_count].pixel;
-    Pixmap pixmap = XCreatePixmap (display, DefaultRootWindow (display), size,
-                                  size, depth);
-    XSetForeground (display, context,
-                   BlackPixel (display, DefaultScreen (display)));
-    XFillRectangle (display, pixmap, context, 0, 0,
-                   width * size, height * size);
-    XSetForeground (display, context, color);
-    XFillArc (display, pixmap, context, 0, 0, size, size, 0, 360*64);
-
-    while (1)
-    {
-        if (random () % density)
-        {
-            x = last_x;
-            y = last_y;
-        }
-        else
-        {
-            last_x = x;
-            last_y = y;
-            x = (x + width_1  + (random () % 3)) % width;
-            y = (y + height_1 + (random () % 3)) % height;
-        }
-        if ((random () % length_limit) == 0)
-        {
-            if (advance == 0)
-            {
-                color_index = random () % color_count;
-            }
-            else
-            {
-                color_index = (color_index + advance) % color_count;
-            }
-            color = colors [color_index].pixel;
-            XSetForeground (display, context, color);
-            if (circles)
-            {
-                XFillArc (display, pixmap, context,
-                         0, 0, size, size, 0, 360 * 64);
-            }
-        }
-        if ((random () % reset_limit) == 0)
-        {
-            erase_full_window (display, window);
-            color = colors [random () % color_count].pixel;
-            x = random () % width;
-            y = random () % height;
-            last_x = x;
-            last_y = y;
-            if (circles)
-            {
-                XFillArc (display, pixmap, context, 0, 0, size, size, 0, 360*64);
-            }
-        }
-        if (size == 1)
-        {
-            XDrawPoint (display, window, context, x, y);
-        }
-        else
-        {
-            if (circles)
-            {
-                XCopyArea (display, pixmap, window, context, 0, 0, size, size,
-                           x * size, y * size);
-            }
-            else
-            {
-                XFillRectangle (display, window, context, x * size, y * size,
-                               size, size);
-            }
-        }
-        screenhack_handle_events (display);
-    }
-}
-
-char *progclass = "Wander";
-
-char *defaults [] =
-{
-    ".advance:    1",
-    ".density:    2",
-    ".length:     25000",
-    ".delay:      1",
-    ".reset:      2500000",
-    ".circles:    False",
-    ".size:       1",
-    0
-};
-
-XrmOptionDescRec options [] =
-{
-    { "-advance", ".advance", XrmoptionSepArg, 0 },
-    { "-circles", ".circles", XrmoptionSepArg, 0 },
-    { "-density", ".density", XrmoptionSepArg, 0 },
-    { "-length",  ".length",  XrmoptionSepArg, 0 },
-    { "-delay",   ".delay",   XrmoptionSepArg, 0 },
-    { "-reset",   ".reset",   XrmoptionSepArg, 0 },
-    { "-size",    ".size",    XrmoptionSepArg, 0 },
-    { 0, 0, 0, 0 }
-};
-
-void
-screenhack (display, window)
-    Display *display;
-    Window window;
-{
-    int delay = get_integer_resource ("delay", "Integer");
-    while (1)
-    {
-        init_wander (display, window);
-        wander (display, window);
-        screenhack_handle_events (display);
-        if (delay) sleep (delay);
-        erase_full_window (display, window);
-    }
-}
diff --git a/hacks/worm.c b/hacks/worm.c
deleted file mode 100644 (file)
index 7eb5fdf..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-
-/* -*- Mode: C; tab-width: 4 -*- */
-/* worm --- draw wiggly worms */
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)worm.c       4.04 97/07/28 xlockmore";
-
-#endif
-
-/*-
- * Copyright (c) 1991 by Patrick J. Naughton.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Revision History:
- * 10-May-97: Compatible with xscreensaver
- * 03-Sep-96: fixed bug in allocation of space for worms, added 3d support
- *            Henrik Theiling <theiling@coli.uni-sb.de>
- * 27-Sep-95: put back malloc
- * 23-Sep-93: got rid of "rint". (David Bagley)
- * 27-Sep-91: got rid of all malloc calls since there were no calls to free().
- * 25-Sep-91: Integrated into X11R5 contrib xlock.
- *
- * Adapted from a concept in the Dec 87 issue of Scientific American p. 142.
- *
- * SunView version: Brad Taylor <brad@sun.com>
- * X11 version: Dave Lemke <lemke@ncd.com>
- * xlock version: Boris Putanec <bp@cs.brown.edu>
- */
-
-#ifdef STANDALONE
-# define PROGCLASS "Worm"
-# define HACK_INIT init_worm
-# define HACK_DRAW draw_worm
-# define worm_opts xlockmore_opts
-# define DEFAULTS      "*delay:  17000 \n"     \
-                                       "*count:  -20 \n"               \
-                                       "*cycles:  10 \n"               \
-                                       "*size:   -3 \n"                \
-                                       "*ncolors: 150 \n"              \
-                                       "*use3d:   False \n"    \
-                                       "*delta3d: 1.5 \n"              \
-                                       "*right3d: red \n"              \
-                                       "*left3d:  blue \n"             \
-                                       "*both3d:  magenta \n"  \
-                                       "*none3d:  black \n     "
-# define SMOOTH_COLORS
-# include "xlockmore.h"                /* in xscreensaver distribution */
-#else /* STANDALONE */
-# include "xlock.h"            /* in xlockmore distribution */
-#endif /* STANDALONE */
-
-ModeSpecOpt worm_opts =
-{0, NULL, 0, NULL, NULL};
-
-#define MINSIZE 1
-
-#define SEGMENTS  36
-#define MINWORMS 1
-
-#define MAXZ      750
-#define MINZ      100
-#define SCREENZ   200
-#define GETZDIFF(z) (MI_DELTA3D(mi)*20.0*(1.0-(SCREENZ)/((float)(z)+MINZ)))
-#define IRINT(x) ((int)(((x)>0.0)?(x)+0.5:(x)-0.5))
-
-/* How many segments to draw per cycle when redrawing */
-#define REDRAWSTEP 3
-
-typedef struct {
-       XPoint     *circ;
-       int        *diffcirc;
-       int         dir, dir2;
-       int         tail;
-       int         x, y, z;
-       int         redrawing, redrawpos;
-} wormstuff;
-
-typedef struct {
-       int         xsize, ysize, zsize;
-       int         wormlength;
-       int         nc;
-       int         nw;
-       int         circsize;
-       wormstuff  *worm;
-       XRectangle *rects;      /* [NUMCOLORS * batchcount/NUMCOLORS+1] */
-       int         maxsize;
-       int        *size;
-       unsigned int chromo;
-} wormstruct;
-
-static float sintab[SEGMENTS];
-static float costab[SEGMENTS];
-static int  init_table = 0;
-
-static wormstruct *worms = NULL;
-
-static void
-worm_doit(ModeInfo * mi, int which, unsigned long color)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       wormstruct *wp = &worms[MI_SCREEN(mi)];
-       wormstuff  *ws = &wp->worm[which];
-       int         x, y, z;
-       int         diff;
-
-       ws->tail++;
-       if (ws->tail == wp->wormlength)
-               ws->tail = 0;
-
-       x = ws->circ[ws->tail].x;
-       y = ws->circ[ws->tail].y;
-
-       if (MI_WIN_IS_USE3D(mi)) {
-               diff = ws->diffcirc[ws->tail];
-               if (MI_WIN_IS_INSTALL(mi)) {
-                       XSetForeground(display, gc, MI_NONE_COLOR(mi));
-                       XFillRectangle(display, window, gc, x - diff, y,
-                                      wp->circsize, wp->circsize);
-                       XFillRectangle(display, window, gc, x + diff, y,
-                                      wp->circsize, wp->circsize);
-               } else {
-                       XClearArea(display, window, x - diff, y,
-                                  wp->circsize, wp->circsize, False);
-                       XClearArea(display, window, x + diff, y,
-                                  wp->circsize, wp->circsize, False);
-               }
-       } else
-               XClearArea(display, window, x, y, wp->circsize, wp->circsize, False);
-
-       if (LRAND() & 1)
-               ws->dir = (ws->dir + 1) % SEGMENTS;
-       else
-               ws->dir = (ws->dir + SEGMENTS - 1) % SEGMENTS;
-
-       x = (ws->x + IRINT((float) wp->circsize * costab[ws->dir]) +
-            wp->xsize) % wp->xsize;
-       y = (ws->y + IRINT((float) wp->circsize * sintab[ws->dir]) +
-            wp->ysize) % wp->ysize;
-
-       ws->circ[ws->tail].x = x;
-       ws->circ[ws->tail].y = y;
-       ws->x = x;
-       ws->y = y;
-
-       if (MI_WIN_IS_USE3D(mi)) {
-               if (LRAND() & 1)
-                       ws->dir2 = (ws->dir2 + 1) % SEGMENTS;
-               else
-                       ws->dir2 = (ws->dir2 + SEGMENTS - 1) % SEGMENTS;
-               /* for the z-axis the wrap-around looks bad, so worms should just turn around. */
-               z = (int) (ws->z + wp->circsize * sintab[ws->dir2]);
-               if (z < 0 || z >= wp->zsize)
-                       z = (int) (ws->z - wp->circsize * sintab[ws->dir2]);
-
-               diff = (int) (GETZDIFF(z) + 0.5);       /* ROUND */
-               ws->diffcirc[ws->tail] = diff;
-
-               ws->z = z;
-
-               /* right eye */
-               color = 0;
-               wp->rects[color * wp->maxsize + wp->size[color]].x = x + diff;
-               wp->rects[color * wp->maxsize + wp->size[color]].y = y;
-               wp->size[color]++;
-
-               /* left eye */
-               color = 1;
-               wp->rects[color * wp->maxsize + wp->size[color]].x = x - diff;
-               wp->rects[color * wp->maxsize + wp->size[color]].y = y;
-               wp->size[color]++;
-
-#if 0
-               if (ws->redrawing) {    /* Too hard for now */
-                       int         j;
-
-                       for (j = 0; j < REDRAWSTEP; j++) {
-                               int         k = (ws->tail - ws->redrawpos + wp->wormlength)
-                               % wp->wormlength;
-
-                               color = 0;
-                               wp->rects[color * wp->maxsize + wp->size[color]].x =
-                                       ws->circ[k].x + ws->diffcirc[k];
-                               wp->rects[color * wp->maxsize + wp->size[color]].y =
-                                       ws->circ[k].y;
-                               wp->size[color]++;
-
-                               color = 1;
-                               wp->rects[color * wp->maxsize + wp->size[color]].x =
-                                       ws->circ[k].x - ws->diffcirc[k];
-                               wp->rects[color * wp->maxsize + wp->size[color]].y =
-                                       ws->circ[k].y;
-                               wp->size[color]++;
-
-                               if (++(ws->redrawpos) >= wp->wormlength) {
-                                       ws->redrawing = 0;
-                                       break;
-                               }
-                       }
-               }
-#endif
-
-       } else {
-
-               wp->rects[color * wp->maxsize + wp->size[color]].x = x;
-               wp->rects[color * wp->maxsize + wp->size[color]].y = y;
-               wp->size[color]++;
-               if (ws->redrawing) {
-                       int         j;
-
-                       ws->redrawpos++;
-                       /* Compensates for the changed ws->tail
-                          since the last callback. */
-
-                       for (j = 0; j < REDRAWSTEP; j++) {
-                               int         k = (ws->tail - ws->redrawpos + wp->wormlength)
-                               % wp->wormlength;
-
-                               wp->rects[color * wp->maxsize + wp->size[color]].x = ws->circ[k].x;
-                               wp->rects[color * wp->maxsize + wp->size[color]].y = ws->circ[k].y;
-                               wp->size[color]++;
-
-                               if (++(ws->redrawpos) >= wp->wormlength) {
-                                       ws->redrawing = 0;
-                                       break;
-                               }
-                       }
-               }
-       }
-}
-
-static void
-free_worms(wormstruct * wp)
-{
-       int         wn;
-
-       if (wp->worm) {
-               for (wn = 0; wn < wp->nw; wn++) {
-                       if (wp->worm[wn].circ)
-                               (void) free((void *) wp->worm[wn].circ);
-                       if (wp->worm[wn].diffcirc)
-                               (void) free((void *) wp->worm[wn].diffcirc);
-               }
-               (void) free((void *) wp->worm);
-               wp->worm = NULL;
-       }
-       if (wp->rects) {
-               (void) free((void *) wp->rects);
-               wp->rects = NULL;
-       }
-       if (wp->size) {
-               (void) free((void *) wp->size);
-               wp->size = NULL;
-       }
-}
-
-void
-init_worm(ModeInfo * mi)
-{
-       wormstruct *wp;
-       int         size = MI_SIZE(mi);
-       int         i, j;
-
-       if (worms == NULL) {
-               if ((worms = (wormstruct *) calloc(MI_NUM_SCREENS(mi),
-                                              sizeof (wormstruct))) == NULL)
-                       return;
-       }
-       wp = &worms[MI_SCREEN(mi)];
-       if (MI_NPIXELS(mi) <= 2 || MI_WIN_IS_USE3D(mi))
-               wp->nc = 2;
-       else
-               wp->nc = MI_NPIXELS(mi);
-       if (wp->nc > NUMCOLORS)
-               wp->nc = NUMCOLORS;
-
-       free_worms(wp);
-       wp->nw = MI_BATCHCOUNT(mi);
-       if (wp->nw < -MINWORMS)
-               wp->nw = NRAND(-wp->nw - MINWORMS + 1) + MINWORMS;
-       else if (wp->nw < MINWORMS)
-               wp->nw = MINWORMS;
-       if (!wp->worm)
-               wp->worm = (wormstuff *) malloc(wp->nw * sizeof (wormstuff));
-
-       if (!wp->size)
-               wp->size = (int *) malloc(NUMCOLORS * sizeof (int));
-
-       wp->maxsize = (REDRAWSTEP + 1) * wp->nw;        /*  / wp->nc + 1; */
-       if (!wp->rects)
-               wp->rects =
-                       (XRectangle *) malloc(wp->maxsize * NUMCOLORS * sizeof (XRectangle));
-
-
-       if (!init_table) {
-               init_table = 1;
-               for (i = 0; i < SEGMENTS; i++) {
-                       sintab[i] = SINF(i * 2.0 * M_PI / SEGMENTS);
-                       costab[i] = COSF(i * 2.0 * M_PI / SEGMENTS);
-               }
-       }
-       wp->xsize = MI_WIN_WIDTH(mi);
-       wp->ysize = MI_WIN_HEIGHT(mi);
-       wp->zsize = MAXZ - MINZ + 1;
-       if (MI_NPIXELS(mi) > 2)
-               wp->chromo = NRAND(MI_NPIXELS(mi));
-
-       if (size < -MINSIZE)
-               wp->circsize = NRAND(-size - MINSIZE + 1) + MINSIZE;
-       else if (size < MINSIZE)
-               wp->circsize = MINSIZE;
-       else
-               wp->circsize = size;
-
-       for (i = 0; i < wp->nc; i++) {
-               for (j = 0; j < wp->maxsize; j++) {
-                       wp->rects[i * wp->maxsize + j].width = wp->circsize;
-                       wp->rects[i * wp->maxsize + j].height = wp->circsize;
-
-               }
-       }
-       (void) memset((char *) wp->size, 0, wp->nc * sizeof (int));
-
-       wp->wormlength = (int) sqrt(wp->xsize + wp->ysize) *
-               MI_CYCLES(mi) / 8;      /* Fudge this to something reasonable */
-       for (i = 0; i < wp->nw; i++) {
-               wp->worm[i].circ = (XPoint *) malloc(wp->wormlength * sizeof (XPoint));
-               wp->worm[i].diffcirc = (int *) malloc(wp->wormlength * sizeof (int));
-
-               for (j = 0; j < wp->wormlength; j++) {
-                       wp->worm[i].circ[j].x = wp->xsize / 2;
-                       wp->worm[i].circ[j].y = wp->ysize / 2;
-                       if (MI_WIN_IS_USE3D(mi))
-                               wp->worm[i].diffcirc[j] = 0;
-               }
-               wp->worm[i].dir = NRAND(SEGMENTS);
-               wp->worm[i].dir2 = NRAND(SEGMENTS);
-               wp->worm[i].tail = 0;
-               wp->worm[i].x = wp->xsize / 2;
-               wp->worm[i].y = wp->ysize / 2;
-               wp->worm[i].z = SCREENZ - MINZ;
-               wp->worm[i].redrawing = 0;
-       }
-
-       if (MI_WIN_IS_INSTALL(mi) && MI_WIN_IS_USE3D(mi)) {
-               XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_NONE_COLOR(mi));
-               XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi),
-                              0, 0, wp->xsize, wp->ysize);
-       } else
-               XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-}
-
-void
-draw_worm(ModeInfo * mi)
-{
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
-       GC          gc = MI_GC(mi);
-       wormstruct *wp = &worms[MI_SCREEN(mi)];
-       unsigned long wcolor;
-       int         i;
-
-       (void) memset((char *) wp->size, 0, wp->nc * sizeof (int));
-
-       for (i = 0; i < wp->nw; i++) {
-               if (MI_NPIXELS(mi) > 2) {
-                       wcolor = (i + wp->chromo) % wp->nc;
-
-                       worm_doit(mi, i, wcolor);
-               } else
-                       worm_doit(mi, i, (unsigned long) 0);
-       }
-
-       if (MI_WIN_IS_USE3D(mi)) {
-               if (MI_WIN_IS_INSTALL(mi))
-                       XSetFunction(display, gc, GXor);
-               XSetForeground(display, gc, MI_RIGHT_COLOR(mi));
-               XFillRectangles(display, window, gc, &(wp->rects[0]), wp->size[0]);
-
-               XSetForeground(display, gc, MI_LEFT_COLOR(mi));
-               XFillRectangles(display, window, gc, &(wp->rects[wp->maxsize]), wp->size[1]);
-               if (MI_WIN_IS_INSTALL(mi))
-                       XSetFunction(display, gc, GXcopy);
-       } else if (MI_NPIXELS(mi) > 2) {
-               for (i = 0; i < wp->nc; i++) {
-                       XSetForeground(display, gc, MI_PIXEL(mi, i));
-                       XFillRectangles(display, window, gc, &(wp->rects[i * wp->maxsize]), wp->size[i]);
-               }
-       } else {
-               XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
-               XFillRectangles(display, window, gc,
-                               &(wp->rects[0]), wp->size[0]);
-       }
-
-       if (++wp->chromo == (unsigned long) wp->nc)
-               wp->chromo = 0;
-}
-
-void
-release_worm(ModeInfo * mi)
-{
-       if (worms != NULL) {
-               int         screen;
-
-               for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
-                       free_worms(&worms[screen]);
-               (void) free((void *) worms);
-               worms = NULL;
-       }
-}
-
-void
-refresh_worm(ModeInfo * mi)
-{
-       if (MI_WIN_IS_USE3D(mi))
-               /* The 3D code does drawing&clearing by XORing.  We do not
-                  want to go to too much trouble here to make it redraw
-                  correctly. */
-               XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
-       else if (worms != NULL) {
-               wormstruct *wp = &worms[MI_SCREEN(mi)];
-               int         i;
-
-               for (i = 0; i < wp->nw; i++) {
-                       wp->worm[i].redrawing = 1;
-                       wp->worm[i].redrawpos = 0;
-               }
-       }
-}
diff --git a/hacks/xflame.c b/hacks/xflame.c
deleted file mode 100755 (executable)
index dcac960..0000000
+++ /dev/null
@@ -1,727 +0,0 @@
-/* xflame, Copyright (c) 1996-1999 Carsten Haitzler <raster@redhat.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.
- */
-
-/* Version history as near as I (jwz) can piece together:
-
-   * Carsten Haitzler <raster@redhat.com> wrote the first version in 1996.
-
-   * Rahul Jain <rahul@rice.edu> added support for TrueColor displays.
-
-   * Someone did a rough port of it to use the xscreensaver utility routines
-     instead of creating its own window by hand.
-
-   * Someone (probably Raster) came up with a subsequent version that had
-     a Red Hat logo hardcoded into it.
-
-   * Daniel Zahn <stumpy@religions.com> found that version in 1998, and 
-     hacked it to be able to load a different logo from a PGM (P5) file, 
-     with a single hardcoded pathname.
-
-   * Jamie Zawinski <jwz@jwz.org> found several versions of xflame in
-     March 1999, and pieced them together.  Changes:
-
-       - Correct and fault-tolerant use of the Shared Memory extension;
-         previous versions of xflame did not work when $DISPLAY was remote.
-
-       - Replaced PGM-reading code with code that can read arbitrary XBM
-         and XPM files (color ones will be converted to grayscale.)
-
-       - Command-line options all around -- no hardcoded pathnames or
-         behavioral constants.
-
-       - General cleanup and portability tweaks.
- */
-
-
-/* portions by Daniel Zahn <stumpy@religions.com> */
-
-
-#include "screenhack.h"
-#include <X11/Xutil.h>
-#include <limits.h>
-
-#ifdef HAVE_XSHM_EXTENSION
-# include "xshm.h"
-#endif /* HAVE_XSHM_EXTENSION */
-
-#ifdef HAVE_XPM
-# include <X11/xpm.h>
-# ifndef PIXEL_ALREADY_TYPEDEFED
-#  define PIXEL_ALREADY_TYPEDEFED /* Sigh, Xmu/Drawing.h needs this... */
-# endif
-#endif
-
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/Drawing.h>
-# else  /* VMS */
-#  include <Xmu/Drawing.h>
-# endif /* VMS */
-#endif /* HAVE_XMU */
-
-#define MAX             255
-
-static Display         *display;
-static Window          window;
-static int             depth;
-static int             width;
-static int             height;
-static Colormap        colormap;
-static Visual          *visual;
-static Bool            shared;
-static XImage          *xim;
-#ifdef HAVE_XSHM_EXTENSION
-static XShmSegmentInfo shminfo;
-#endif /* HAVE_XSHM_EXTENSION */
-static GC              gc;
-static int             ctab[256];
-
-static unsigned char  *flame;
-static unsigned char  *theim;
-static int             fwidth;
-static int             fheight;
-static int             top;
-static int             hspread;
-static int             vspread;
-static int             residual;
-
-static int ihspread;
-static int ivspread;
-static int iresidual;
-static int variance;
-static int vartrend;
-
-static void
-GetXInfo(Display *disp, Window win)
-{
-  XWindowAttributes xwa;
-   
-  XGetWindowAttributes(disp,win,&xwa);
-
-  window   = win;
-  display  = disp;
-  colormap = xwa.colormap;
-  depth    = xwa.depth;
-  visual   = xwa.visual;
-  width    = xwa.width;
-  height   = xwa.height;
-
-  if (width%2)
-    width++;
-  if (height%2)
-    height++;
-}
-
-static void
-MakeImage(void)
-{
-  XGCValues gcv;
-
-#ifdef HAVE_XSHM_EXTENSION
-  shared = True;
-  xim = create_xshm_image (display, visual, depth, ZPixmap, NULL,
-                           &shminfo, width, height);
-#else  /* !HAVE_XSHM_EXTENSION */
-  xim = 0;
-#endif /* !HAVE_XSHM_EXTENSION */
-
-  if (!xim)
-    {
-      shared = False;
-      xim = XCreateImage (display, visual, depth, ZPixmap, 0, NULL,
-                          width, height, 32, 0);
-      if (xim)
-        xim->data = (char *) calloc(xim->height, xim->bytes_per_line);
-      if (!xim || !xim->data)
-        {
-          fprintf(stderr,"%s: out of memory.\n", progname);
-          exit(1);
-        }
-    }
-
-  gc = XCreateGC(display,window,0,&gcv);
-  if (!gc) exit (1);
-}
-
-
-static void
-InitColors(void)
-{
-  int i = 0, j = 0;
-  for (i = 0; i < 256 * 2; i += 2)
-    {
-      XColor xcl;
-      int r = (i -   0) * 3;
-      int g = (i -  80) * 3;
-      int b = (i - 160) * 3;
-    
-      if (r < 0)   r = 0;
-      if (r > 255) r = 255;
-      if (g < 0)   g = 0;
-      if (g > 255) g = 255;
-      if (b < 0)   b = 0;
-      if (b > 255) b = 255;
-
-      xcl.red   = (unsigned short)((r << 8) | r);
-      xcl.green = (unsigned short)((g << 8) | g);
-      xcl.blue  = (unsigned short)((b << 8) | b);
-      xcl.flags = DoRed | DoGreen | DoBlue;
-
-      XAllocColor(display,colormap,&xcl);
-
-      ctab[j++] = (int)xcl.pixel;
-    }
-}
-
-
-static void
-DisplayImage(void)
-{
-#ifdef HAVE_XSHM_EXTENSION
-  if (shared)
-    XShmPutImage(display, window, gc, xim, 0,(top - 1) << 1, 0,
-                 (top - 1) << 1, width, height - ((top - 1) << 1), False);
-  else
-#endif /* HAVE_XSHM_EXTENSION */
-    XPutImage(display, window, gc, xim, 0, (top - 1) << 1, 0,
-              (top - 1) << 1, width, height - ((top - 1) << 1));
-}
-
-
-static void
-InitFlame(void)
-{
-  fwidth  = width / 2;
-  fheight = height / 2;
-  flame   = (unsigned char *) malloc((fwidth + 2) * (fheight + 2)
-                                     * sizeof(unsigned char));
-
-  if (!flame)
-    {
-      fprintf(stderr,"%s: out of memory\n", progname);
-      exit(1);
-    }
-
-  top      = 1;
-  ihspread  = get_integer_resource("hspread", "Integer");
-  ivspread  = get_integer_resource("vspread", "Integer");
-  iresidual = get_integer_resource("residual", "Integer");
-  variance  = get_integer_resource("variance", "Integer");
-  vartrend  = get_integer_resource("vartrend", "Integer");
-
-# define THROTTLE(VAR,NAME) \
-  if (VAR < 0 || VAR > 255) { \
-    fprintf(stderr, "%s: %s must be in the range 0-255 (not %d).\n", \
-            progname, NAME, VAR); \
-    exit(1); }
-  THROTTLE (ihspread, "hspread");
-  THROTTLE (ivspread, "vspread");
-  THROTTLE (iresidual,"residual");
-  THROTTLE (variance, "variance");
-  THROTTLE (vartrend, "vartrend");
-# undef THROTTLE
-
-
-
-  hspread = ihspread;
-  vspread = ivspread;
-  residual = iresidual;
-}
-
-
-static void
-Flame2Image16(void)
-{
-  int x,y;
-  unsigned short *ptr;
-  unsigned char *ptr1;
-  int v1,v2,v3,v4;
-
-  ptr  = (unsigned short *)xim->data;
-  ptr += (top << 1) * width;
-  ptr1 = flame + 1 + (top * (fwidth + 2));
-
-  for(y = top; y < fheight; y++)
-    {
-      for( x = 0; x < fwidth; x++)
-        {
-          v1 = (int)*ptr1;
-          v2 = (int)*(ptr1 + 1);
-          v3 = (int)*(ptr1 + fwidth + 2);
-          v4 = (int)*(ptr1 + fwidth + 2 + 1);
-          ptr1++;
-          *ptr++ = (unsigned short)ctab[v1];
-          *ptr   = (unsigned short)ctab[(v1 + v2) >> 1];
-          ptr   += width - 1;
-          *ptr++ = (unsigned short)ctab[(v1 + v3) >> 1];
-          *ptr   = (unsigned short)ctab[(v1 + v4) >> 1];
-          ptr   -= width - 1;
-        }
-      ptr  += width;
-      ptr1 += 2;
-    }
-}
-
-static void
-Flame2Image32(void)
-{
-  int x,y;
-  unsigned int *ptr;
-  unsigned char *ptr1;
-  int v1,v2,v3,v4;
-
-  ptr  = (unsigned int *)xim->data;
-  ptr += (top << 1) * width;
-  ptr1 = flame + 1 + (top * (fwidth + 2));
-
-  for( y = top; y < fheight; y++)
-    {
-      for( x = 0; x < fwidth; x++)
-        {
-          v1 = (int)*ptr1;
-          v2 = (int)*(ptr1 + 1);
-          v3 = (int)*(ptr1 + fwidth + 2);
-          v4 = (int)*(ptr1 + fwidth + 2 + 1);
-          ptr1++;
-          *ptr++ = (unsigned int)ctab[v1];
-          *ptr   = (unsigned int)ctab[(v1 + v2) >> 1];
-          ptr   += width - 1;
-          *ptr++ = (unsigned int)ctab[(v1 + v3) >> 1];
-          *ptr   = (unsigned int)ctab[(v1 + v4) >> 1];
-          ptr   -= width - 1;
-        }
-      ptr  += width;
-      ptr1 += 2;
-    }
-}
-
-static void
-Flame2Image8(void)
-{
-  int x,y;
-  unsigned char *ptr;
-  unsigned char *ptr1;
-  int v1,v2,v3,v4;
-
-  ptr  = (unsigned char *)xim->data;
-  ptr += (top << 1) * width;
-  ptr1 = flame + 1 + (top * (fwidth + 2));
-
-  for(y=top;y<fheight;y++)
-    {
-      for(x=0;x<fwidth;x++)
-        {
-          v1 = (int)*ptr1;
-          v2 = (int)*(ptr1 + 1);
-          v3 = (int)*(ptr1 + fwidth + 2);
-          v4 = (int)*(ptr1 + fwidth + 2 + 1);
-          ptr1++;
-          *ptr++ = (unsigned char)ctab[v1];
-          *ptr   = (unsigned char)ctab[(v1 + v2) >> 1];
-          ptr   += width - 1;
-          *ptr++ = (unsigned char)ctab[(v1 + v3) >> 1];
-          *ptr   = (unsigned char)ctab[(v1 + v4) >> 1];
-          ptr   -= width - 1;
-        }
-      ptr  += width;
-      ptr1 += 2;
-    }
-}
-
-static void
-Flame2Image1234567(void)
-{
-  int x,y;
-  unsigned char *ptr1;
-  int v1,v2,v3,v4;
-
-  ptr1 = flame + 1 + (top * (fwidth + 2));
-
-  for( y = top; y < fheight; y++)
-    {
-      for( x = 0; x < fwidth; x++)
-        {
-          v1 = (int)*ptr1;
-          v2 = (int)*(ptr1 + 1);
-          v3 = (int)*(ptr1 + fwidth + 2);
-          v4 = (int)*(ptr1 + fwidth + 2 + 1);
-          ptr1++;
-          XPutPixel(xim,(x << 1),    (y << 1),    ctab[v1]);
-          XPutPixel(xim,(x << 1) + 1,(y << 1),    ctab[(v1 + v2) >> 1]);
-          XPutPixel(xim,(x << 1),    (y << 1) + 1,ctab[(v1 + v3) >> 1]);
-          XPutPixel(xim,(x << 1) + 1,(y << 1) + 1,ctab[(v1 + v4) >> 1]);
-        }
-    }
-}
-
-static void
-Flame2Image(void)
-{
-  if (depth >= 24)      Flame2Image32();
-  else if (depth == 16) Flame2Image16();
-  else if (depth == 8)  Flame2Image8();
-  else if (depth == 15) Flame2Image16(); 
-  else if (depth <  8)  Flame2Image1234567();
-  else if (depth == 12) Flame2Image16();
-}
-
-static void
-FlameActive(void)
-{
-  int x,v1;
-  unsigned char *ptr1;
-   
-  ptr1 = flame + ((fheight + 1) * (fwidth + 2));
-
-  for (x = 0; x < fwidth + 2; x++)
-    {
-      v1      = *ptr1;
-      v1     += ((random() % variance) - vartrend);
-      *ptr1++ = v1 % 255;
-    }
-
-  v1= (random() % 100);
-  if (v1 == 10)
-    residual += (random()%10);
-  else if (v1 == 20)
-    hspread += (random()%15);
-  else if (v1 == 30)
-    vspread += (random()%20);
-
-  residual = ((iresidual* 10) + (residual *90)) / 100;
-  hspread  = ((ihspread * 10) + (hspread  *90)) / 100;
-  vspread  = ((ivspread * 10) + (vspread  *90)) / 100;
-}
-
-
-static void
-FlameAdvance(void)
-{
-  int x,y;
-  unsigned char *ptr2;
-  int newtop = top;
-
-  for (y = fheight + 1; y >= top; y--)
-    {
-      int used = 0;
-      unsigned char *ptr1 = flame + 1 + (y * (fwidth + 2));
-      for (x = 0; x < fwidth; x++)
-        {
-          int v1 = (int)*ptr1;
-          int v2, v3;
-          if (v1 > 0)
-            {
-              used = 1;
-              ptr2 = ptr1 - fwidth - 2;
-              v3   = (v1 * vspread) >> 8;
-              v2   = (int)*(ptr2);
-              v2  += v3;
-              if (v2 > MAX) 
-                v2 = MAX;
-
-              *(ptr2) = (unsigned char)v2;
-              v3  = (v1 * hspread) >> 8;
-              v2  = (int)*(ptr2 + 1);
-              v2 += v3;
-              if (v2 > MAX) 
-                v2 = MAX;
-          
-              *(ptr2 + 1) = (unsigned char)v2;
-              v2          = (int)*(ptr2 - 1);
-              v2         += v3;
-              if (v2 > MAX) 
-                v2 = MAX;
-          
-              *(ptr2 - 1) = (unsigned char)v2;
-        
-              if (y < fheight + 1)
-                {
-                  v1    = (v1 * residual) >> 8;
-                  *ptr1 = (unsigned char)v1;
-                }
-            }
-          ptr1++;
-          if (used) 
-            newtop = y - 1;
-        }
-    }
-
-  top = newtop - 1;
-
-  if (top < 1)
-    top = 1;
-}
-
-
-static void
-FlameFill(int val)
-{
-  int x, y;
-  for (y = 0; y < fheight + 1; y++)
-    {
-      unsigned char *ptr1 = flame + 1 + (y * (fwidth + 2));
-      for (x = 0; x < fwidth; x++)
-        {
-          *ptr1 = val;
-          ptr1++;
-        }
-    }
-}
-
-
-static void
-FlamePasteData(unsigned char *d, int xx, int yy, int w, int h)
-{
-  unsigned char *ptr1,*ptr2;
-  ptr2 = d;
-
-  if (xx < 0) xx = 0;
-  if (yy < 0) yy = 0;
-
-  if ((xx >= 0) &&
-      (yy >= 0) &&
-      (xx + w <= fwidth) &&
-      (yy + h <= fheight))
-    {
-      int x, y;
-      for (y = 0; y < h; y++)
-        {
-          ptr1 = flame + 1 + xx + ((yy + y) * (fwidth + 2));
-          for (x = 0; x < w; x++)
-            {
-              if (*ptr2 / 24)
-                *ptr1 += random() % (*ptr2 / 24);
-
-              ptr1++;
-              ptr2++;
-            }
-        }
-    }
-  else
-    {
-      static Bool warned = False;
-      if (!warned)
-        {
-          fprintf (stderr, "%s: window is %dx%d; image must be "
-                   "smaller than %dx%d (not %dx%d).\n",
-                   progname, width, height, fwidth, fheight, w, h);
-          warned = True;
-        }
-    }
-}
-
-
-static unsigned char *
-loadBitmap(int *w, int *h)
-{
-  char *bitmap_name = get_string_resource ("bitmap", "Bitmap");
-
-  if (bitmap_name &&
-      *bitmap_name &&
-      !!strcmp(bitmap_name, "none"))
-    {
-#ifdef HAVE_XPM
-      XpmInfo xpm_info = { 0, };
-      XpmImage xpm_image = { 0, };
-
-      int result = XpmReadFileToXpmImage (bitmap_name, &xpm_image, &xpm_info);
-      if (result == XpmSuccess)
-        {
-          int x, y;
-          unsigned char *result, *o;
-          unsigned char *grays;
-          XWindowAttributes xgwa;
-
-          *w = xpm_image.width;
-          *h = xpm_image.height;
-          result = (unsigned char *) malloc ((*w) * (*h));
-          if (!result)
-            {
-              fprintf(stderr, "%s: out of memory loading %s\n",
-                      progname, bitmap_name);
-              exit (1);
-            }
-
-          XGetWindowAttributes (display, window, &xgwa);
-
-          grays = (unsigned char *) calloc (xpm_image.ncolors+1, 1);
-          for (x = 0; x < xpm_image.ncolors; x++)
-            {
-              XColor xc;
-              XpmColor *xpmc = &xpm_image.colorTable[x];
-              char *cstring = 0;
-              if (xpmc->g_color && *xpmc->g_color)
-                cstring = xpmc->g_color;
-              else if (xpmc->g4_color && *xpmc->g4_color)
-                cstring = xpmc->g4_color;
-              else if (xpmc->c_color && *xpmc->c_color)
-                cstring = xpmc->c_color;
-              else
-                cstring = xpmc->m_color;
-
-              memset (&xc, 0, sizeof(xc));
-              if (!cstring ||
-                  !*cstring ||
-                  !XParseColor (display, xgwa.colormap, cstring, &xc))
-                grays[x] = 0;
-              else
-                grays[x] = (int) (((xc.red   * 0.299) +
-                                   (xc.green * 0.587) +
-                                   (xc.blue  * 0.114))
-                                  / 255);
-            }
-
-          o = result;
-          for (y = 0; y < *h; y++)
-            for (x = 0; x < *w; x++)
-              {
-                int color = xpm_image.data[(y * (*w)) + x];
-                if (color < 0 || color > xpm_image.ncolors) abort();
-                *o++ = grays[color];
-              }
-          return result;
-        }
-      else      /* failed to read XPM -- fall through and try XBM */
-#endif /* HAVE_XPM */
-        {
-#ifdef HAVE_XMU
-          XImage *ximage = 0;
-          int width, height, xh, yh;
-          int x, y;
-          unsigned char *result, *o;
-          Pixmap bitmap =
-            XmuLocateBitmapFile (DefaultScreenOfDisplay (display),
-                                 bitmap_name, 0, 0, &width, &height, &xh, &yh);
-          if (!bitmap)
-            {
-              fprintf(stderr, "%s: unable to load bitmap file %s\n",
-                      progname, bitmap_name);
-              exit (1);
-            }
-          ximage = XGetImage (display, bitmap, 0, 0, width, height,
-                              1L, XYPixmap);
-          XFreePixmap (display, bitmap);
-
-          if (ximage->depth != 1) abort();
-
-          *w = ximage->width;
-          *h = ximage->height;
-          result = (unsigned char *) malloc ((*w) * (*h));
-          if (!result)
-            {
-              fprintf(stderr, "%s: out of memory loading %s\n",
-                      progname, bitmap_name);
-              exit (1);
-            }
-
-          o = result;
-          for (y = 0; y < *h; y++)
-            for (x = 0; x < *w; x++)
-              *o++ = (XGetPixel(ximage, x, y) ? 255 : 0);
-
-          return result;
-
-#else  /* !XMU */
-          fprintf (stderr,
-                   "%s: your vendor doesn't ship the standard Xmu library.\n",
-                   progname);
-          fprintf (stderr, "\tWe can't load XBM files without it.\n");
-          exit (1);
-#endif /* !XMU */
-        }
-    }
-
-  *w = 0;
-  *h = 0;
-  return 0;
-
-}
-
-
-\f
-char *progclass = "XFlame";
-
-char *defaults [] = {
-  ".background:     black",
-  ".foreground:     red",
-  "*bitmap:         none",
-  "*bitmapBaseline: 20",
-  "*delay:          10000",
-  "*hspread:        30",
-  "*vspread:        97",
-  "*residual:       99",
-  "*variance:       50",
-  "*vartrend:       20",
-
-#ifdef HAVE_XSHM_EXTENSION
-  "*useSHM: False",   /* xshm turns out not to help. */
-#endif /* HAVE_XSHM_EXTENSION */
-   0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",     ".delay",          XrmoptionSepArg, 0 },
-  { "-bitmap",    ".bitmap",         XrmoptionSepArg, 0 },
-  { "-baseline",  ".bitmapBaseline", XrmoptionSepArg, 0 },
-  { "-hspread",   ".hspread",        XrmoptionSepArg, 0 },
-  { "-vspread",   ".vspread",        XrmoptionSepArg, 0 },
-  { "-residual",  ".residual",       XrmoptionSepArg, 0 },
-  { "-variance",  ".variance",       XrmoptionSepArg, 0 },
-  { "-vartrend",  ".vartrend",       XrmoptionSepArg, 0 },
-#ifdef HAVE_XSHM_EXTENSION
-  { "-shm",       ".useSHM",         XrmoptionNoArg, "True" },
-  { "-no-shm",    ".useSHM",         XrmoptionNoArg, "False" },
-#endif /* HAVE_XSHM_EXTENSION */
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *disp, Window win)
-{
-  int theimx = 0, theimy = 0;
-  int baseline = get_integer_resource ("bitmapBaseline", "Integer");
-  int delay = get_integer_resource ("delay", "Integer");
-  xim      = NULL;
-  top      = 1;
-  flame    = NULL;
-
-  GetXInfo(disp,win);
-  InitColors();
-  theim = loadBitmap(&theimx, &theimy);
-
-  /* utils/xshm.c doesn't provide a way to free the shared-memory image, which
-     makes it hard for us to react to window resizing.  So, punt for now.  The
-     size of the window at startup is the size it will stay.
-  */
-  GetXInfo(disp,win);
-
-  MakeImage();
-  InitFlame();
-  FlameFill(0);
-
-  while (1)
-    {
-      FlameActive();
-
-      if (theim)
-        FlamePasteData(theim, (fwidth - theimx) / 2,
-                       fheight - theimy - baseline, theimx, theimy);
-
-      FlameAdvance();
-      Flame2Image();
-      DisplayImage();
-
-      XSync(display,False);
-      screenhack_handle_events(display);
-      if (delay)
-        usleep (delay);
-    }
-}
diff --git a/hacks/xjack.c b/hacks/xjack.c
deleted file mode 100644 (file)
index 623103c..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-/* xscreensaver, Copyright (c) 1997 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.
- *
- * Wendy, let me explain something to you.  Whenever you come in here and
- * interrupt me, you're BREAKING my CONCENTRATION.  You're DISTRACTING me!
- * And it will then take me time to get back to where I was. You understand?
- * Now, we're going to make a new rule.  When you come in here and you hear
- * me typing, or whether you DON'T hear me typing, or whatever the FUCK you
- * hear me doing; when I'm in here, it means that I am working, THAT means
- * don't come in!  Now, do you think you can handle that?
- */
-
-#include <ctype.h>
-#include "screenhack.h"
-
-char *progclass = "XJack";
-
-char *defaults [] = {
-  ".background:                #FFF0B4",
-  ".foreground:                #000000",
-  "XJack.font:         -*-courier-medium-r-*-*-*-240-*-*-m-*-*-*",
-  "*delay:             50000",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-font",           ".font",        XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-void
-screenhack (Display *dpy, Window window)
-{
-  static const char *source = "All work and no play makes Jack a dull boy.  ";
-  /* If you're here because you're thinking about making the above string be
-     customizable, then you don't get the joke.  You loser. */
-  const char *s = source;
-  int columns, rows;           /* characters */
-  int left, right;             /* characters */
-  int char_width, line_height; /* pixels */
-  int x, y;                    /* characters */
-  int mode = 0;
-  int hspace = 15;             /* pixels */
-  int vspace = 15;             /* pixels */
-  Bool break_para = True;
-  Bool caps = False;
-  int sentences = 0;
-  int paras = 0;
-
-  XWindowAttributes xgwa;
-  XGCValues gcv;
-  GC gc;
-  int delay = get_integer_resource ("delay", "Integer");
-  char *fontname = get_string_resource ("font", "Font");
-  XFontStruct *font = XLoadQueryFont (dpy, fontname);
-
-  if (!font)
-    font = XLoadQueryFont (dpy, "-*-*-medium-r-*-*-*-240-*-*-m-*-*-*");
-  if (!font)
-    font = XLoadQueryFont (dpy, "-*-courier-medium-r-*-*-*-180-*-*-m-*-*-*");
-  if (!font)
-    font = XLoadQueryFont (dpy, "-*-*-*-r-*-*-*-240-*-*-m-*-*-*");
-  if (!font)
-    {
-      fprintf(stderr, "no big fixed-width font like \"%s\"\n", fontname);
-      exit(1);
-    }
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  gcv.font = font->fid;
-  gcv.foreground = get_pixel_resource ("foreground", "Foreground", dpy,
-                                      xgwa.colormap);
-  gcv.background = get_pixel_resource ("background", "Background", dpy,
-                                      xgwa.colormap);
-  gc = XCreateGC (dpy, window, (GCFont | GCForeground | GCBackground), &gcv);
-
-  char_width = (font->per_char
-               ? font->per_char['n'-font->min_char_or_byte2].rbearing
-               : font->min_bounds.rbearing);
-  line_height = font->ascent + font->descent + 1;
-
-  columns = (xgwa.width - hspace - hspace) / char_width;
-  rows = (xgwa.height - vspace - vspace) / line_height;
-
-  left = 0xFF & (random() % ((columns / 2)+1));
-  right = left + (0xFF & (random() % (columns - left - 10)+10));
-  x = 0;
-  y = 0;
-
-  while (1)
-    {
-      int word_length = 0;
-      const char *s2;
-      for (s2 = s; *s2 && *s2 != ' '; s2++)
-       word_length++;
-
-      if (break_para ||
-         (*s != ' ' &&
-          (x + word_length) >= right))
-       {
-         x = left;
-         y++;
-
-         if (break_para)
-           y++;
-
-         if (mode == 1 || mode == 2)
-           {
-             /* 1 = left margin goes southwest; 2 = southeast */
-             left += (mode == 1 ? 1 : -1);
-             if (left >= right - 10)
-               {
-                 if ((right < (columns - 10)) && (random() & 1))
-                   right += (0xFF & (random() % (columns - right)));
-                 else
-                   mode = 2;
-               }
-             else if (left <= 0)
-               {
-                 left = 0;
-                 mode = 1;
-               }
-           }
-         else if (mode == 3 || mode == 4)
-           {
-             /* 3 = right margin goes southeast; 4 = southwest */
-             right += (mode == 3 ? 1 : -1);
-             if (right >= columns)
-               {
-                 right = columns;
-                 mode = 4;
-               }
-             else if (right <= left + 10)
-               mode = 3;
-           }
-
-         if (y >= rows)        /* bottom of page */
-           {
-             /* scroll by 1-5 lines */
-             int lines = (random() % 5 ? 0 : (0xFF & (random() % 5))) + 1;
-             if (break_para)
-               lines++;
-
-             /* but sometimes scroll by a whole page */
-             if (0 == (random() % 100))
-               lines += rows;
-
-             while (lines > 0)
-               {
-                  int i;
-                  int inc = line_height / 7;
-                  int pix_delay = delay / 1000;
-                  if (inc <= 0) inc = 1;
-                  for (i = 0; i < line_height; i += inc)
-                    {
-                      if (i > line_height)
-                        i = line_height;
-                      XCopyArea (dpy, window, window, gc,
-                                 0, inc,
-                                 xgwa.width, xgwa.height - inc,
-                                 0, 0);
-                      XSync (dpy, False);
-                      if (pix_delay) usleep (pix_delay);
-                    }
-                 y--;
-                 lines--;
-
-                  /* See? It's OK. He saw it on the television. */
-                  XClearArea (dpy, window,
-                              0, xgwa.height - vspace - line_height,
-                              xgwa.width, line_height + vspace + vspace,
-                              False);
-                  XSync (dpy, False);
-
-                  XGetWindowAttributes (dpy, window, &xgwa);
-                  columns = (xgwa.width - hspace - hspace) / char_width;
-                  rows = (xgwa.height - vspace - vspace) / line_height;
-                  if (y > rows) y = rows-1;
-                  if (x > columns) x = columns-2;
-
-                  if (delay) usleep (delay);
-               }
-             if (y < 0) y = 0;
-           }
-
-         break_para = False;
-       }
-
-      if (*s != ' ')
-       {
-         char c = *s;
-         int xshift = 0, yshift = 0;
-         if (0 == random() % 50)
-           {
-             xshift = random() % ((char_width / 3) + 1);      /* mis-strike */
-             yshift = random() % ((line_height / 6) + 1);
-             if (0 == (random() % 3))
-               yshift *= 2;
-             if (random() & 1)
-               xshift = -xshift;
-             if (random() & 1)
-               yshift = -yshift;
-           }
-
-         if (0 == (random() % 250))    /* introduce adjascent-key typo */
-           {
-             static const char * const typo[] = {
-               "asqw", "ASQW", "bgvhn", "cxdfv", "dserfcx", "ewsdrf",
-               "Jhuikmn", "kjiol,m", "lkop;.,", "mnjk,", "nbhjm", "oiklp09",
-               "pol;(-0", "redft54", "sawedxz", "uyhji87", "wqase32",
-               "yuhgt67", ".,l;/", 0 };
-             int i = 0;
-             while (typo[i] && typo[i][0] != c)
-               i++;
-             if (typo[i])
-               c = typo[i][0xFF & (random() % strlen(typo[i]+1))];
-           }
-
-         /* caps typo */
-         if (c >= 'a' && c <= 'z' && (caps || 0 == (random() % 350)))
-           {
-             c -= ('a'-'A');
-             if (c == 'O' && random() & 1)
-               c = '0';
-           }
-
-       OVERSTRIKE:
-         XDrawString (dpy, window, gc,
-                      (x * char_width) + hspace + xshift,
-                      (y * line_height) + vspace + font->ascent + yshift,
-                      &c, 1);
-         if (xshift == 0 && yshift == 0 && (0 == (random() & 3000)))
-           {
-             if (random() & 1)
-               xshift--;
-             else
-               yshift--;
-             goto OVERSTRIKE;
-           }
-
-         if ((tolower(c) != tolower(*s))
-             ? (0 == (random() % 10))          /* backup to correct */
-             : (0 == (random() % 400)))        /* fail to advance */
-           {
-             x--;
-             s--;
-             XSync (dpy, False);
-             if (delay) usleep (0xFFFF & (delay + (random() % (delay * 10))));
-           }
-       }
-
-      x++;
-      s++;
-
-      if (0 == random() % 200)
-       {
-         if (random() & 1 && s != source)
-           s--;        /* duplicate character */
-         else if (*s)
-           s++;        /* skip character */
-       }
-
-      if (*s == 0)
-       {
-         sentences++;
-         caps = (0 == random() % 40);  /* capitalize sentence */
-
-         if (0 == (random() % 10) ||   /* randomly break paragraph */
-             (mode == 0 &&
-              ((0 == (random() % 10)) || sentences > 20)))
-           {
-             break_para = True;
-             sentences = 0;
-             paras++;
-
-             if (random() & 1)         /* mode=0 50% of the time */
-               mode = 0;
-             else
-               mode = (0xFF & (random() % 5));
-
-             if (0 == (random() % 2))  /* re-pick margins */
-               {
-                 left = 0xFF & (random() % (columns / 3));
-                 right = columns - (0xFF & (random() % (columns / 3)));
-
-                 if (0 == random() % 3)        /* sometimes be wide */
-                   right = left + ((right - left) / 2);
-               }
-
-             if (right - left <= 10)   /* introduce sanity */
-               {
-                 left = 0;
-                 right = columns;
-               }
-
-             if (right - left > 50)    /* if wide, shrink and move */
-               {
-                 left += (0xFF & (random() % ((columns - 50) + 1)));
-                 right = left + (0xFF & ((random() % 40) + 10));
-               }
-
-             /* oh, gag. */
-             if (mode == 0 &&
-                 right - left < 25 &&
-                 columns > 40)
-               {
-                 right += 20;
-                 if (right > columns)
-                   left -= (right - columns);
-               }
-           }
-         s = source;
-       }
-
-      XSync (dpy, False);
-      if (delay)
-       {
-         usleep (delay);
-         if (0 == random() % 3)
-           usleep(0xFFFFFF & ((random() % (delay * 5)) + 1));
-
-         if (break_para)
-           usleep(0xFFFFFF & ((random() % (delay * 15)) + 1));
-       }
-
-      if (paras > 5 &&
-         (0 == (random() % 1000)) &&
-         y < rows-5)
-       {
-         int i;
-         int n = random() & 3;
-         y++;
-         for (i = 0; i < n; i++)
-           {
-             /* See also http://catalog.com/hopkins/unix-haters/login.html */
-             const char *n1 =
-               "NFS server overlook not responding, still trying...";
-             const char *n2 = "NFS server overlook ok.";
-             while (*n1)
-               {
-                 XDrawString (dpy, window, gc,
-                              (x * char_width) + hspace,
-                              (y * line_height) + vspace + font->ascent,
-                              n1, 1);
-                 x++;
-                 if (x >= columns) x = 0, y++;
-                 n1++;
-               }
-             XSync (dpy, False);
-             usleep (5000000);
-             while (*n2)
-               {
-                 XDrawString (dpy, window, gc,
-                              (x * char_width) + hspace,
-                              (y * line_height) + vspace + font->ascent,
-                              n2, 1);
-                 x++;
-                 if (x >= columns) x = 0, y++;
-                 n2++;
-               }
-             y++;
-             XSync (dpy, False);
-             usleep (500000);
-           }
-       }
-      screenhack_handle_events (dpy);
-    }
-}
diff --git a/hacks/xjack.man b/hacks/xjack.man
deleted file mode 100644 (file)
index 390e95f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-.TH XScreenSaver 1 "18-sep-97" "X Version 11"
-.SH NAME
-xjack - all work and no play makes jack a dull boy
-.SH SYNOPSIS
-.B xjack
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-delay \fIusecs\fP]
-.SH DESCRIPTION
-All work and no play makes jack a dull boy.  All work and no play makes jack
-a dull boy.  All work and no play makes jack a dull boy.  All work and no
-play makes jack a dull boy.  All work and no play makes jack a dull boy.
-All work and no play makes jack a dull boy.  
-.PP
-.RS 8
-All work and no play makes jack a dull boy.  All work and no play makes jack
-a dull boy.  All work and no play makes jack a dull boy.  All work and no
-play makes jack a dull boy.  All work and no play makes jack a dull boy.
-All work and no play makes jack a dull boy.  
-.PP
-All work and no play makes jack a dull boy.  All work and no play makes jack
-a dull boy.  All work and no play makes jack a dull boy.  All work and no
-play makes jack a dull boy.  All work and no play makes jack a dull boy.  All
-work and no play makes jack a dull boy.  All work and no play makes jack a
-dull boy.  All work and no play makes jack a dull boy.
-.PP
-.RE
-All work and no play makes jack a dull boy.
-All work and no play makes jack a dull boy.  All work and no play makes jack
-a dull boy.  All work and no play makes jack a dull boy.  All work and no
-play makes jack a dull boy.  All work and no play makes jack a dull boy.
-All work and no play makes jack a dull boy.  All work and no play makes jack 
-a dull boy.  
-.SH ENVIRONMENT
-.PP
-.TP 8
-.B DISPLAY
-All work and no play makes jack a dull boy.  
-.TP 8
-.B XENVIRONMENT
-All work and no play makes jack a dull boy.  All work and no play makes jack
-a dull boy.
-.SH SEE ALSO
-.BR X (1),
-.BR xscreensaver (1)
-.SH COPYRIGHT
-Copyright \(co 1997 by Jamie Zawinski.  All work and no play makes jack a
-dull boy.  All work and no play makes jack a dull boy.  All work and no play
-makes jack a dull boy.  All work and no play makes jack a dull boy.  All work
-and no play makes jack a fnord dull boy.  All work and no play makes jack a
-dull boy.
-.SH AUTHOR
-Jamie Zawinski <jwz@jwz.org>, 15-Nov-97.
diff --git a/hacks/xlock_23.h b/hacks/xlock_23.h
deleted file mode 100644 (file)
index d509f56..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-**  Helpful definitions for porting xlock modes to xscreensaver.
-**  by Charles Hannum, mycroft@ai.mit.edu
-**
-**  for xlock 2.3 and xscreensaver 1.2, 28AUG92
-**
-**  Modified for xlockmore 3.0 by Anthony Thyssen <anthony@cit.gu.edu.au>
-**  on August 1995.
-**
-**  Tweaked by jwz to work with both ANSI and K&R compilers, 10-May-97.
-**
-**    Note: this file no longer works as of (at least) xlockmore 4.03a10:
-**    see jwz's new xlockmore.h file for a similar hack that works with
-**    code written for that version.
-**
-**  To use, just copy the appropriate file from xlock, add a target
-**  for it in the Imakefile, and do the following:
-**
-**  1) If you include math.h, make sure it is before xlock.h.
-**  2) Make sure the first thing you do in initfoo() is to call
-**     XGetWindowAttributes.  This is what actually sets up the
-**     colormap and whatnot.
-**  3) Add an appropriate PROGRAM() line at the end of the .c file.
-**     The information you need for this comes from xlock's file
-**     resource.c.
-**
-**  That's about all there is to it.
-**
-**  As an added bonus, if you put an empty definition of PROGRAM() in
-**  xlock's xlock.h, you can now use the code with either xlock or
-**  xscreensaver.
-**
-**
-**  If you make any improvements to this code, please send them to me!
-**  It could certainly use some more work.
-*/
-
-#include "screenhack.h"
-
-#define MAXSCREENS 1
-
-static GC gc;
-static unsigned long *pixels = 0, fg_pixel, bg_pixel;
-static int npixels;
-static Colormap cmap;
-
-static int batchcount;
-static unsigned int delay;
-static unsigned int cycles;
-static double saturation;
-
-#ifndef min
-#define min(a,b) ((a)<(b)?(a):(b))
-#endif
-
-typedef struct {
-  GC gc;
-  int npixels;
-  u_long *pixels;
-} perscreen;
-
-static perscreen Scr[MAXSCREENS];
-static Display *dsp;
-
-static int screen = 0;
-
-static void
-#ifdef __STDC__
-My_XGetWindowAttributes (Display *dpy, Window win, XWindowAttributes *xgwa)
-#else /* !__STDC__ */
-My_XGetWindowAttributes (dpy, win, xgwa)
-  Display *dpy;
-  Window win;
-  XWindowAttributes *xgwa;
-#endif /* !__STDC__ */
-{
-  XGetWindowAttributes (dpy, win, xgwa);
-
-  if (! pixels) {
-    XGCValues gcv;
-    XColor color;
-    int n;
-    int i, shift;
-
-    cmap = xgwa->colormap;
-
-    i = get_integer_resource ("ncolors", "Integer");
-    if (i <= 2) i = 2, mono_p = True;
-    shift = 360 / i;
-    pixels = (unsigned long *) calloc (i, sizeof (unsigned long));
-    fg_pixel = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
-    bg_pixel = get_pixel_resource ("background", "Background", dpy, cmap);
-    if (! mono_p) {
-      for (npixels = 0; npixels < i; npixels++) {
-        hsv_to_rgb ((360*npixels)/i, saturation, 1.0,
-                   &color.red, &color.green, &color.blue);
-        if (! XAllocColor (dpy, cmap, &color))
-          break;
-        pixels[npixels] = color.pixel;
-      }
-    }
-    n = get_integer_resource ("delay", "Usecs");
-    if (n >= 0) delay = n;
-    n = get_integer_resource ("count", "Integer");
-    if (n > 0) batchcount = n;
-
-    n = get_integer_resource ("cycles", "Integer");
-    if (n >= 0) cycles = n;
-
-    gcv.foreground = fg_pixel;
-    gcv.background = bg_pixel;
-    gc = XCreateGC (dpy, win, GCForeground|GCBackground, &gcv);
-
-    XClearWindow (dpy, win);
-
-    Scr[screen].gc = gc;
-    Scr[screen].npixels = npixels;
-    Scr[screen].pixels = pixels;
-  }
-}
-
-#define XGetWindowAttributes(a,b,c) My_XGetWindowAttributes(a,b,c)
-
-#undef BlackPixel
-#define BlackPixel(a,b) bg_pixel
-#undef WhitePixel
-#define WhitePixel(a,b) fg_pixel
-#define mono mono_p
-
-#define seconds() time((time_t*)0)
-
-char *defaults[] = {
-  "*background:        black",
-  "*foreground:        white",
-  "*ncolors:   64",
-  "*delay:     -1",
-  "*count:     -1",
-  "*cycles:    -1",
-  0
-};
-
-XrmOptionDescRec options[] = {
-  {"-count",   ".count",       XrmoptionSepArg, 0},
-  {"-ncolors", ".ncolors",     XrmoptionSepArg, 0},
-  {"-delay",   ".delay",       XrmoptionSepArg, 0},
-  {"-cycles",   ".cycles",      XrmoptionSepArg, 0},
-  { 0, 0, 0, 0 }
-};
-
-#if defined(__STDC__) || defined(__ANSI_CPP__)
-# define XLOCK_INIT(Z) init##Z
-# define XLOCK_DRAW(Z) draw##Z
-#else  /* K&R CPP */
-# define XLOCK_INIT(Z) init/**/Z
-# define XLOCK_DRAW(Z) draw/**/Z
-#endif /* K&R CPP */
-
-#ifdef __STDC__
-# define XLOCK_SCREENHACK_PROTOTYPE()  \
-  screenhack(Display *dpy, Window window)
-# define XLOCK_PROTOS(Z) /* */
-#else  /* K&R C */
-# define XLOCK_SCREENHACK_PROTOTYPE()  \
-  screenhack(dpy, window)              \
-       Display *dpy;                   \
-       Window window;
-# define XLOCK_PROTOS(Z)               \
-  void init##Z(Window);                        \
-  void draw##Z(Window);                        \
-
-#endif /* K&R C */
-
-#define PROGRAM(Y,Z,D,B,C,S)           \
-  char *progclass = Y;                 \
-  XLOCK_PROTOS(Z)                      \
-                                       \
-  void XLOCK_SCREENHACK_PROTOTYPE()    \
-  {                                    \
-    batchcount = B;                    \
-    delay = D;                         \
-    cycles = C;                                \
-    saturation = S;                    \
-    dsp = dpy;                         \
-                                       \
-    XLOCK_INIT(Z) (window);            \
-    while (1)                          \
-      {                                        \
-       XLOCK_DRAW(Z) (window);         \
-       XSync (dpy, True);              \
-       if (delay) usleep (delay);      \
-      }                                        \
-  }
diff --git a/hacks/xlockmore.c b/hacks/xlockmore.c
deleted file mode 100644 (file)
index 62c2dc7..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-/* xlockmore.c --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997, 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.
- *
- * This file, along with xlockmore.h, make it possible to compile an xlockmore
- * module into a standalone program, and thus use it with xscreensaver.
- * By Jamie Zawinski <jwz@jwz.org> on 10-May-97; based on the ideas
- * in the older xlock.h by Charles Hannum <mycroft@ai.mit.edu>.  (I had
- * to redo it, since xlockmore has diverged so far from xlock...)
- */
-
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include "screenhack.h"
-#include "xlockmoreI.h"
-
-#define countof(x) (sizeof((x))/sizeof(*(x)))
-
-extern ModeSpecOpt xlockmore_opts[];
-extern const char *app_defaults;
-
-void
-pre_merge_options (void)
-{
-  int i, j;
-  char *s;
-
-  /* Translate the xlockmore `opts[]' argument to a form that
-     screenhack.c expects.
-   */
-  for (i = 0; i < xlockmore_opts->numopts; i++)
-    {
-      XrmOptionDescRec *old = &xlockmore_opts->opts[i];
-      XrmOptionDescRec *new = &options[i];
-
-      if (old->option[0] == '-')
-       new->option = old->option;
-      else
-       {
-         /* Convert "+foo" to "-no-foo". */
-         new->option = (char *) malloc (strlen(old->option) + 5);
-         strcpy (new->option, "-no-");
-         strcat (new->option, old->option + 1);
-       }
-
-      new->specifier = strrchr (old->specifier, '.');
-      if (!new->specifier) abort();
-
-      new->argKind = old->argKind;
-      new->value = old->value;
-    }
-
-  /* Add extra args, if they're mentioned in the defaults... */
-  {
-    char *args[] = { "-count", "-cycles", "-delay", "-ncolors",
-                    "-size", "-wireframe", "-use3d", "-useSHM" };
-    for (j = 0; j < countof(args); j++)
-      if (strstr(app_defaults, args[j]+1))
-       {
-         XrmOptionDescRec *new = &options[i++];
-         new->option = args[j];
-         new->specifier = strdup(args[j]);
-         new->specifier[0] = '.';
-         if (!strcmp(new->option, "-wireframe"))
-           {
-             new->argKind = XrmoptionNoArg;
-             new->value = "True";
-             new = &options[i++];
-             new->option = "-no-wireframe";
-             new->specifier = options[i-2].specifier;
-             new->argKind = XrmoptionNoArg;
-             new->value = "False";
-           }
-         else if (!strcmp(new->option, "-use3d"))
-           {
-             new->option = "-3d";
-             new->argKind = XrmoptionNoArg;
-             new->value = "True";
-             new = &options[i++];
-             new->option = "-no-3d";
-             new->specifier = options[i-2].specifier;
-             new->argKind = XrmoptionNoArg;
-             new->value = "False";
-           }
-         else if (!strcmp(new->option, "-useSHM"))
-           {
-             new->option = "-shm";
-             new->argKind = XrmoptionNoArg;
-             new->value = "True";
-             new = &options[i++];
-             new->option = "-no-shm";
-             new->specifier = options[i-2].specifier;
-             new->argKind = XrmoptionNoArg;
-             new->value = "False";
-           }
-         else
-           {
-             new->argKind = XrmoptionSepArg;
-             new->value = 0;
-           }
-       }
-  }
-
-
-  /* Construct the kind of `defaults' that screenhack.c expects from
-     the xlockmore `vars[]' argument.
-   */
-  i = 0;
-
-  /* Put on the PROGCLASS.background/foreground resources. */
-  s = (char *) malloc(50);
-  strcpy (s, progclass);
-  strcat (s, ".background: black");
-  defaults [i++] = s;
-
-  s = (char *) malloc(50);
-  strcpy (s, progclass);
-  strcat (s, ".foreground: white");
-  defaults [i++] = s;
-
-  /* Copy the lines out of the `app_defaults' var and into this array. */
-  s = strdup (app_defaults);
-  while (s && *s)
-    {
-      defaults [i++] = s;
-      s = strchr(s, '\n');
-      if (s)
-       *s++ = 0;
-    }
-
-  /* Copy the defaults out of the `xlockmore_opts->' variable. */
-  for (j = 0; j < xlockmore_opts->numvarsdesc; j++)
-    {
-      const char *def = xlockmore_opts->vars[j].def;
-
-      if (!def) abort();
-      if (!*def) abort();
-      if (strlen(def) > 1000) abort();
-
-      s = (char *) malloc (strlen (xlockmore_opts->vars[j].name) +
-                          strlen (def) + 10);
-      strcpy (s, "*");
-      strcat (s, xlockmore_opts->vars[j].name);
-      strcat (s, ": ");
-      strcat (s, def);
-      defaults [i++] = s;
-    }
-
-  defaults [i] = 0;
-}
-
-
-static void
-xlockmore_read_resources (void)
-{
-  int i;
-  for (i = 0; i < xlockmore_opts->numvarsdesc; i++)
-    {
-      void  *var   = xlockmore_opts->vars[i].var;
-      Bool  *var_b = (Bool *)  var;
-      char **var_c = (char **) var;
-      int   *var_i = (int *) var;
-      float *var_f = (float *) var;
-
-      switch (xlockmore_opts->vars[i].type)
-       {
-       case t_String:
-         *var_c = get_string_resource (xlockmore_opts->vars[i].name,
-                                       xlockmore_opts->vars[i].classname);
-         break;
-       case t_Float:
-         *var_f = get_float_resource (xlockmore_opts->vars[i].name,
-                                      xlockmore_opts->vars[i].classname);
-         break;
-       case t_Int:
-         *var_i = get_integer_resource (xlockmore_opts->vars[i].name,
-                                        xlockmore_opts->vars[i].classname);
-         break;
-       case t_Bool:
-         *var_b = get_boolean_resource (xlockmore_opts->vars[i].name,
-                                        xlockmore_opts->vars[i].classname);
-         break;
-       default:
-         abort ();
-       }
-    }
-}
-
-
-
-void 
-xlockmore_screenhack (Display *dpy, Window window,
-                     Bool want_writable_colors,
-                     Bool want_uniform_colors,
-                     Bool want_smooth_colors,
-                     Bool want_bright_colors,
-                     void (*hack_init) (ModeInfo *),
-                     void (*hack_draw) (ModeInfo *),
-                     void (*hack_free) (ModeInfo *))
-{
-  ModeInfo mi;
-  XGCValues gcv;
-  XColor color;
-  int i;
-  time_t start, now;
-  int orig_pause;
-
-  memset(&mi, 0, sizeof(mi));
-  mi.dpy = dpy;
-  mi.window = window;
-  XGetWindowAttributes (dpy, window, &mi.xgwa);
-
-  color.flags = DoRed|DoGreen|DoBlue;
-  color.red = color.green = color.blue = 0;
-  if (!XAllocColor(dpy, mi.xgwa.colormap, &color))
-    abort();
-  mi.black = color.pixel;
-  color.red = color.green = color.blue = 0xFFFF;
-  if (!XAllocColor(dpy, mi.xgwa.colormap, &color))
-    abort();
-  mi.white = color.pixel;
-
-  if (mono_p)
-    {
-      static unsigned long pixels[2];
-      static XColor colors[2];
-    MONO:
-      mi.npixels = 2;
-      mi.pixels = pixels;
-      mi.colors = colors;
-      pixels[0] = mi.black;
-      pixels[1] = mi.white;
-      colors[0].flags = DoRed|DoGreen|DoBlue;
-      colors[1].flags = DoRed|DoGreen|DoBlue;
-      colors[0].red = colors[0].green = colors[0].blue = 0;
-      colors[1].red = colors[1].green = colors[1].blue = 0xFFFF;
-      mi.writable_p = False;
-    }
-  else
-    {
-      mi.npixels = get_integer_resource ("ncolors", "Integer");
-      if (mi.npixels <= 0)
-       mi.npixels = 64;
-      else if (mi.npixels > 256)
-       mi.npixels = 256;
-
-      mi.colors = (XColor *) calloc (mi.npixels, sizeof (*mi.colors));
-
-      mi.writable_p = want_writable_colors;
-
-      if (want_uniform_colors)
-       make_uniform_colormap (dpy, mi.xgwa.visual, mi.xgwa.colormap,
-                              mi.colors, &mi.npixels,
-                              True, &mi.writable_p, True);
-      else if (want_smooth_colors)
-       make_smooth_colormap (dpy, mi.xgwa.visual, mi.xgwa.colormap,
-                             mi.colors, &mi.npixels,
-                             True, &mi.writable_p, True);
-      else
-       make_random_colormap (dpy, mi.xgwa.visual, mi.xgwa.colormap,
-                             mi.colors, &mi.npixels,
-                             want_bright_colors,
-                             True, &mi.writable_p, True);
-
-      if (mi.npixels <= 2)
-       goto MONO;
-      else
-       {
-         int i;
-         mi.pixels = (unsigned long *)
-           calloc (mi.npixels, sizeof (*mi.pixels));
-         for (i = 0; i < mi.npixels; i++)
-           mi.pixels[i] = mi.colors[i].pixel;
-       }
-    }
-
-  gcv.foreground = mi.white;
-  gcv.background = mi.black;
-  mi.gc = XCreateGC(dpy, window, GCForeground|GCBackground, &gcv);
-
-  mi.fullrandom = True;
-
-  mi.pause      = get_integer_resource ("delay", "Usecs");
-
-  mi.cycles     = get_integer_resource ("cycles", "Int");
-  mi.batchcount = get_integer_resource ("count", "Int");
-  mi.size      = get_integer_resource ("size", "Int");
-
-  mi.threed = get_boolean_resource ("use3d", "Boolean");
-  mi.threed_delta = get_float_resource ("delta3d", "Boolean");
-  mi.threed_right_color = get_pixel_resource ("right3d", "Color", dpy,
-                                             mi.xgwa.colormap);
-  mi.threed_left_color = get_pixel_resource ("left3d", "Color", dpy,
-                                            mi.xgwa.colormap);
-  mi.threed_both_color = get_pixel_resource ("both3d", "Color", dpy,
-                                            mi.xgwa.colormap);
-  mi.threed_none_color = get_pixel_resource ("none3d", "Color", dpy,
-                                            mi.xgwa.colormap);
-
-  mi.wireframe_p = get_boolean_resource ("wireframe", "Boolean");
-  mi.root_p = (window == RootWindowOfScreen (mi.xgwa.screen));
-#ifdef HAVE_XSHM_EXTENSION
-  mi.use_shm = get_boolean_resource ("useSHM", "Boolean");
-#endif /* !HAVE_XSHM_EXTENSION */
-
-  if (mi.pause < 0)
-    mi.pause = 0;
-  else if (mi.pause > 100000000)
-    mi.pause = 100000000;
-  orig_pause = mi.pause;
-
-  xlockmore_read_resources ();
-
-  XClearWindow (dpy, window);
-
-  i = 0;
-  start = time((time_t) 0);
-
-  hack_init (&mi);
-  do {
-    hack_draw (&mi);
-    XSync(dpy, False);
-    screenhack_handle_events (dpy);
-    if (mi.pause)
-      usleep(mi.pause);
-    mi.pause = orig_pause;
-
-    if (hack_free)
-      {
-       if (i++ > (mi.batchcount / 4) &&
-           (start + 5) < (now = time((time_t) 0)))
-         {
-           i = 0;
-           start = now;
-           hack_free (&mi);
-           hack_init (&mi);
-           XSync(dpy, False);
-         }
-      }
-
-  } while (1);
-}
diff --git a/hacks/xlockmore.h b/hacks/xlockmore.h
deleted file mode 100644 (file)
index d39119a..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/* xlockmore.h --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997, 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.
- *
- * The definitions in this file make it possible to compile an xlockmore
- * module into a standalone program, and thus use it with xscreensaver.
- * By Jamie Zawinski <jwz@jwz.org> on 10-May-97; based on the ideas
- * in the older xlock.h by Charles Hannum <mycroft@ai.mit.edu>.  (I had
- * to redo it, since xlockmore has diverged so far from xlock...)
- */
-
-#if !defined(PROGCLASS) || !defined(HACK_INIT) || !defined(HACK_DRAW)
-ERROR!  Define PROGCLASS, HACK_INIT, and HACK_DRAW before including xlockmore.h
-#endif
-
-#include "config.h"
-
-#ifndef __STDC__
-ERROR!  Sorry, xlockmore.h requires ANSI C (gcc, for example.)
-  /* (The ansi dependency is that we use string concatenation,
-     and cpp-based stringification of tokens.) */
-#endif
-
-#include <stdio.h>
-#include <math.h>
-#include "xlockmoreI.h"
-
-#ifdef USE_GL
-# include <GL/glx.h>
-  extern GLXContext *init_GL (ModeInfo *);
-# define FreeAllGL(dpy) /* */
-#endif
-
-/* Accessor macros for the ModeInfo structure
- */
-
-#define MI_DISPLAY(MI)         ((MI)->dpy)
-#define MI_WINDOW(MI)          ((MI)->window)
-#define MI_NUM_SCREENS(MI)     (1)     /* Only manage one screen at a time; */
-#define MI_SCREEN(MI)          (0)     /*  this might be fragile... */
-#define MI_WIN_WHITE_PIXEL(MI) ((MI)->white)
-#define MI_WIN_BLACK_PIXEL(MI) ((MI)->black)
-#define MI_NPIXELS(MI)         ((MI)->npixels)
-#define MI_PIXEL(MI,N)         ((MI)->pixels[(N)])
-#define MI_WIN_WIDTH(MI)       ((MI)->xgwa.width)
-#define MI_WIN_HEIGHT(MI)      ((MI)->xgwa.height)
-#define MI_WIN_DEPTH(MI)       ((MI)->xgwa.depth)
-#define MI_WIN_COLORMAP(MI)    ((MI)->xgwa.colormap)
-#define MI_VISUAL(MI)          ((MI)->xgwa.visual)
-#define MI_GC(MI)              ((MI)->gc)
-#define MI_PAUSE(MI)           ((MI)->pause)
-#define MI_WIN_IS_FULLRANDOM(MI)((MI)->fullrandom)
-#define MI_WIN_IS_VERBOSE(MI)   (False)
-#define MI_WIN_IS_INSTALL(MI)   (True)
-#define MI_WIN_IS_MONO(MI)     (mono_p)
-#define MI_WIN_IS_INROOT(MI)   ((MI)->root_p)
-#define MI_WIN_IS_INWINDOW(MI) (!(MI)->root_p)
-#define MI_WIN_IS_ICONIC(MI)   (False)
-#define MI_WIN_IS_WIREFRAME(MI)        ((MI)->wireframe_p)
-#define MI_WIN_IS_USE3D(MI)    ((MI)->threed)
-#define MI_LEFT_COLOR(MI)      ((MI)->threed_left_color)
-#define MI_RIGHT_COLOR(MI)     ((MI)->threed_right_color)
-#define MI_BOTH_COLOR(MI)      ((MI)->threed_both_color)
-#define MI_NONE_COLOR(MI)      ((MI)->threed_none_color)
-#define MI_DELTA3D(MI)         ((MI)->threed_delta)
-#define MI_CYCLES(MI)          ((MI)->cycles)
-#define MI_BATCHCOUNT(MI)      ((MI)->batchcount)
-#define MI_SIZE(MI)            ((MI)->size)
-#define MI_IS_DRAWN(MI)                ((MI)->is_drawn)
-#define MI_IS_DRAWN(MI)                ((MI)->is_drawn)
-#define MI_NCOLORS(MI)         ((MI)->npixels)
-#define MI_NAME(MI)            (progname)
-
-#define MI_WIDTH(MI)           (MI_WIN_WIDTH((MI)))
-#define MI_HEIGHT(MI)          (MI_WIN_HEIGHT((MI)))
-#define MI_IS_ICONIC(MI)       (MI_WIN_IS_ICONIC((MI)))
-#define MI_IS_WIREFRAME(MI)    (MI_WIN_IS_WIREFRAME((MI)))
-#define MI_IS_MONO(MI)         (MI_WIN_IS_MONO((MI)))
-#define MI_COUNT(MI)           (MI_BATCHCOUNT((MI)))
-#define MI_BLACK_PIXEL(MI)     (MI_WIN_BLACK_PIXEL(MI))
-#define MI_WHITE_PIXEL(MI)     (MI_WIN_WHITE_PIXEL(MI))
-#define MI_IS_FULLRANDOM(MI)   (MI_WIN_IS_FULLRANDOM(MI))
-#define MI_IS_VERBOSE(MI)      (MI_WIN_IS_VERBOSE(MI))
-#define MI_IS_INSTALL(MI)      (MI_WIN_IS_INSTALL(MI))
-#define MI_IS_DEBUG(MI)                (False)
-
-#define MI_CLEARWINDOW(mi) XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi))
-
-/* Some other utility macros.
- */
-#define SINF(n)                        ((float)sin((double)(n)))
-#define COSF(n)                        ((float)cos((double)(n)))
-#define FABSF(n)               ((float)fabs((double)(n)))
-
-#undef MAX
-#undef MIN
-#undef ABS
-#define MAX(a,b)((a)>(b)?(a):(b))
-#define MIN(a,b)((a)<(b)?(a):(b))
-#define ABS(a)((a)<0 ? -(a) : (a))
-
-/* Maximum possible number of colors (*not* default number of colors.) */
-#define NUMCOLORS 256
-
-/* The globals that screenhack.c expects (initialized by xlockmore.c).
- */
-char *defaults[100];
-XrmOptionDescRec options[100];
-
-/* Prototypes for the actual drawing routines...
- */
-extern void HACK_INIT(ModeInfo *);
-extern void HACK_DRAW(ModeInfo *);
-
-#ifdef HACK_FREE
-  extern void HACK_FREE(ModeInfo *);
-#else
-# define HACK_FREE 0
-#endif
-
-
-/* Emit code for the entrypoint used by screenhack.c, and pass control
-   down into xlockmore.c with the appropriate parameters.
- */
-
-char *progclass = PROGCLASS;
-
-void screenhack (Display *dpy, Window window)
-{
-  xlockmore_screenhack (dpy, window,
-
-#ifdef WRITABLE_COLORS
-                       True,
-#else
-                       False,
-#endif
-
-#ifdef UNIFORM_COLORS
-                       True,
-#else
-                       False,
-#endif
-
-#ifdef SMOOTH_COLORS
-                       True,
-#else
-                       False,
-#endif
-
-#ifdef BRIGHT_COLORS
-                       True,
-#else
-                       False,
-#endif
-
-                       HACK_INIT,
-                       HACK_DRAW,
-                       HACK_FREE);
-}
-
-
-const char *app_defaults = DEFAULTS ;
diff --git a/hacks/xlockmoreI.h b/hacks/xlockmoreI.h
deleted file mode 100644 (file)
index 2813c75..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/* xlockmore.h --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997, 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.
- *
- * See xlockmore.h and xlockmore.c.
- */
-
-#ifndef __XLOCKMORE_INTERNAL_H__
-#define __XLOCKMORE_INTERNAL_H__
-
-#include "screenhack.h"
-
-#ifdef HAVE_XSHM_EXTENSION
-# include "xshm.h"
-#endif /* HAVE_XSHM_EXTENSION */
-
-
-/* I'm told that the Sun version of OpenGL needs to have the constant
-   SUN_OGL_NO_VERTEX_MACROS defined in order for morph3d to compile
-   (the number of arguments to the glNormal3f macro changes...)
-   Verified with gcc 2.7.2.2 and Sun cc 4.2 with OpenGL 1.1.1 dev 4
-   on Solaris 2.5.1.
- */
-#ifndef HAVE_MESA_GL
-# if defined(__sun) && defined(__SVR4) /* Solaris */
-#  define SUN_OGL_NO_VERTEX_MACROS 1
-# endif /* Solaris */
-#endif /* !HAVE_MESA_GL */
-
-
-/* Compatibility with the xlockmore RNG API
-   (note that the xlockmore hacks never expect negative numbers.)
- */
-#define LRAND()                        ((long) (random() & 0x7fffffff))
-#define NRAND(n)               ((int) (LRAND() % (n)))
-#define MAXRAND                        (2147483648.0) /* unsigned 1<<31 as a float */
-#define SRAND(n)               /* already seeded by screenhack.c */
-
-
-typedef struct ModeInfo {
-  Display *dpy;
-  Window window;
-  Bool root_p;
-  int npixels;
-  unsigned long *pixels;
-  XColor *colors;
-  Bool writable_p;
-  unsigned long white;
-  unsigned long black;
-  XWindowAttributes xgwa;
-  GC gc;
-  long pause;
-  Bool fullrandom;
-  long cycles;
-  long batchcount;
-  long size;
-  Bool threed;
-  long threed_left_color;
-  long threed_right_color;
-  long threed_both_color;
-  long threed_none_color;
-  long threed_delta;
-  Bool wireframe_p;
-  Bool is_drawn;
-
-#ifdef HAVE_XSHM_EXTENSION
-  Bool use_shm;
-  XShmSegmentInfo shm_info;
-#endif
-
-} ModeInfo;
-
-typedef enum {  t_String, t_Float, t_Int, t_Bool } xlockmore_type;
-
-typedef struct {
-  void *var;
-  char *name;
-  char *classname;
-  char *def;
-  xlockmore_type type;
-} argtype;
-
-typedef struct {
-  char *opt;
-  char *desc;
-} OptionStruct;
-
-typedef struct {
-  int numopts;
-  XrmOptionDescRec *opts;
-  int numvarsdesc;
-  argtype *vars;
-  OptionStruct *desc;
-} ModeSpecOpt;
-
-extern void xlockmore_screenhack (Display *dpy, Window window,
-                                 Bool want_writable_colors,
-                                 Bool want_uniform_colors,
-                                 Bool want_smooth_colors,
-                                 Bool want_bright_colors,
-                                 void (*hack_init) (ModeInfo *),
-                                 void (*hack_draw) (ModeInfo *),
-                                 void (*hack_free) (ModeInfo *));
-
-#endif /* __XLOCKMORE_INTERNAL_H__ */
diff --git a/hacks/xlyap.c b/hacks/xlyap.c
deleted file mode 100644 (file)
index 3742df6..0000000
+++ /dev/null
@@ -1,2008 +0,0 @@
-/* Lyap - calculate and display Lyapunov exponents */
-
-/* Written by Ron Record (rr@sco) 03 Sep 1991 */
-
-/* The idea here is to calculate the Lyapunov exponent for a periodically
- * forced logistic map (later i added several other nonlinear maps of the unit
- * interval). In order to turn the 1-dimensional parameter space of the
- * logistic map into a 2-dimensional parameter space, select two parameter
- * values ('a' and 'b') then alternate the iterations of the logistic map using
- * first 'a' then 'b' as the parameter. This program accepts an argument to
- * specify a forcing function, so instead of just alternating 'a' and 'b', you
- * can use 'a' as the parameter for say 6 iterations, then 'b' for 6 iterations
- * and so on. An interesting forcing function to look at is abbabaab (the
- * Morse-Thue sequence, an aperiodic self-similar, self-generating sequence).
- * Anyway, step through all the values of 'a' and 'b' in the ranges you want,
- * calculating the Lyapunov exponent for each pair of values. The exponent
- * is calculated by iterating out a ways (specified by the variable "settle")
- * then on subsequent iterations calculating an average of the logarithm of
- * the absolute value of the derivative at that point. Points in parameter
- * space with a negative Lyapunov exponent are colored one way (using the
- * value of the exponent to index into a color map) while points with a
- * non-negative exponent are colored differently.
- *
- * The algorithm was taken from the September 1991 Scientific American article
- * by A. K. Dewdney who gives credit to Mario Markus of the Max Planck Institute
- * for its creation. Additional information and ideas were gleaned from the
- * discussion on alt.fractals involving Stephen Hall, Ed Kubaitis, Dave Platt
- * and Baback Moghaddam. Assistance with colormaps and spinning color wheels
- * and X was gleaned from Hiram Clawson. Rubber banding code was adapted from
- * an existing Mandelbrot program written by Stacey Campbell.
- */
-
-#define LYAP_PATCHLEVEL 4
-#define LYAP_VERSION "#(@) lyap 2.3 2/20/92"
-
-#include <assert.h>
-#include <math.h>
-
-#include "screenhack.h"
-#include "yarandom.h"
-#include "hsv.h"
-#include "vroot.h"
-
-#include <X11/cursorfont.h> 
-#include <X11/Xutil.h> 
-
-char *progclass = "XLyap";
-
-char *defaults [] = {
-  ".background:                black",
-  ".foreground:                white",
-  "*randomize:         false",
-  "*builtin:           -1",
-  "*minColor:          1",
-  "*maxColor:          256",
-  "*dwell:             50",
-  "*useLog:            false",
-  "*colorExponent:     1.0",
-  "*colorOffset:       0",
-  "*randomForce:       ",              /* 0.5 */
-  "*settle:            50",
-  "*minA:              2.0",
-  "*minB:              2.0",
-  "*wheels:            7",
-  "*function:          10101010",
-  "*forcingFunction:   abbabaab",
-  "*bRange:            ",              /* 2.0 */
-  "*startX:            0.65",
-  "*mapIndex:          ",              /* 0 */
-  "*outputFile:                ",
-  "*beNegative:                false",
-  "*rgbMax:            65000",
-  "*spinLength:                256",
-  "*show:              false",
-  "*aRange:            ",              /* 2.0 */
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-randomize", ".randomize",        XrmoptionNoArg, "true" },
-  { "-builtin",   ".builtin",  XrmoptionSepArg, 0 },
-  { "-C", ".minColor",         XrmoptionSepArg, 0 },   /* n */
-  { "-D", ".dwell",            XrmoptionSepArg, 0 },   /* n */
-  { "-L", ".useLog",           XrmoptionNoArg, "true" },
-  { "-M", ".colorExponent",    XrmoptionSepArg, 0 },   /* r */
-  { "-O", ".colorOffset",      XrmoptionSepArg, 0 },   /* n */
-  { "-R", ".randomForce",      XrmoptionSepArg, 0 },   /* p */
-  { "-S", ".settle",           XrmoptionSepArg, 0 },   /* n */
-  { "-a", ".minA",             XrmoptionSepArg, 0 },   /* r */
-  { "-b", ".minB",             XrmoptionSepArg, 0 },   /* n */
-  { "-c", ".wheels",           XrmoptionSepArg, 0 },   /* n */
-  { "-F", ".function",         XrmoptionSepArg, 0 },   /* 10101010 */
-  { "-f", ".forcingFunction",  XrmoptionSepArg, 0 },   /* abbabaab */
-  { "-h", ".bRange",           XrmoptionSepArg, 0 },   /* r */
-  { "-i", ".startX",           XrmoptionSepArg, 0 },   /* r */
-  { "-m", ".mapIndex",         XrmoptionSepArg, 0 },   /* n */
-  { "-o", ".outputFile",       XrmoptionSepArg, 0 },   /* filename */
-  { "-p", ".beNegative",       XrmoptionNoArg, "true" },
-  { "-r", ".rgbMax",           XrmoptionSepArg, 0 },   /* n */
-  { "-s", ".spinLength",       XrmoptionSepArg, 0 },   /* n */
-  { "-v", ".show",             XrmoptionNoArg, "true" },
-  { "-w", ".aRange",           XrmoptionSepArg, 0 },   /* r */
-  { 0, 0, 0, 0 }
-};
-
-
-#define ABS(a) (((a)<0) ? (0-(a)) : (a) )
-#define Min(x,y) ((x < y)?x:y)
-#define Max(x,y) ((x > y)?x:y)
-
-#ifdef SIXTEEN_COLORS
-#define MAXPOINTS  128
-#ifdef BIGMEM
-#define MAXFRAMES 4
-#else
-#define MAXFRAMES 2
-#endif
-#define MAXCOLOR 16
-static int maxcolor=16, startcolor=0, color_offset=0, mincolindex=1;
-static int dwell=50, settle=25;
-static int width=128, height=128, xposition=128, yposition=128;
-#else
-#define MAXPOINTS  256
-#ifdef BIGMEM
-#define MAXFRAMES 8
-#else
-#define MAXFRAMES 2
-#endif
-#define MAXCOLOR 256
-static int maxcolor=256, startcolor=17, color_offset=96, mincolindex=33;
-static int dwell=100, settle=50;
-static int width=256, height=256;
-#endif
-
-#ifndef TRUE
-#define TRUE 1
-#define FALSE 0
-#endif
-
-static int screen;
-static Display*        dpy;
-static Visual *visual;
-
-static unsigned long foreground, background;
-
-static Window canvas;
-
-typedef struct {
-       int x, y;
-} xy_t;
-
-typedef struct {
-       int start_x, start_y;
-       int last_x, last_y;
-       } rubber_band_data_t;
-
-typedef struct {
-       Cursor band_cursor;
-       double p_min, p_max, q_min, q_max;
-       rubber_band_data_t rubber_band;
-       } image_data_t;
-
-typedef struct points_t {
-       XPoint data[MAXCOLOR][MAXPOINTS];
-       int npoints[MAXCOLOR];
-       } points_t;
-
-static points_t Points;
-static image_data_t rubber_data;
-
-#ifndef TRUE
-#define TRUE 1
-#define FALSE 0
-#endif
-
-static GC Data_GC[MAXCOLOR], RubberGC;
-
-#define MAXINDEX 64
-#define FUNCMAXINDEX 16
-#define MAXWHEELS 7
-#define NUMMAPS 5
-
-typedef double (*PFD)(double,double);
-
-static double logistic(double,double), circle(double,double), leftlog(double,double), rightlog(double,double), doublelog(double,double);
-static double dlogistic(double,double), dcircle(double,double), dleftlog(double,double), drightlog(double,double), ddoublelog(double,double);
-static PFD map, deriv;
-static PFD Maps[NUMMAPS] = { logistic, circle, leftlog, rightlog, doublelog };
-static PFD Derivs[NUMMAPS] = { dlogistic, dcircle, dleftlog, drightlog, ddoublelog };
-
-static int aflag=0, bflag=0, wflag=0, hflag=0, Rflag=0;
-static double pmins[NUMMAPS] = { 2.0, 0.0, 0.0, 0.0, 0.0 };
-static double pmaxs[NUMMAPS] = { 4.0, 1.0, 6.75, 6.75, 16.0 };
-static double amins[NUMMAPS] = { 2.0, 0.0, 0.0, 0.0, 0.0 };
-static double aranges[NUMMAPS] = { 2.0, 1.0, 6.75, 6.75, 16.0 };
-static double bmins[NUMMAPS] = { 2.0, 0.0, 0.0, 0.0, 0.0 };
-static double branges[NUMMAPS] = { 2.0, 1.0, 6.75, 6.75, 16.0 };
-
-static int   forcing[MAXINDEX] = { 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,
-                       0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,
-                       0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1 };
-static int   Forcing[FUNCMAXINDEX] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
-
-static int   maxindex = MAXINDEX;
-static int   funcmaxindex = FUNCMAXINDEX;
-static double  min_a=2.0, min_b=2.0, a_range=2.0, b_range=2.0, minlyap=1.0;
-static double  max_a=4.0, max_b=4.0;
-static double  start_x=0.65, lyapunov, a_inc, b_inc, a, b;
-static int     numcolors=16, numfreecols, displayplanes, lowrange;
-static xy_t    point;
-static Pixmap  pixmap;
-static Colormap cmap;
-static XColor  Colors[MAXCOLOR];
-static double  *exponents[MAXFRAMES];
-static double  a_minimums[MAXFRAMES], b_minimums[MAXFRAMES];
-static double  a_maximums[MAXFRAMES], b_maximums[MAXFRAMES];
-static double  minexp, maxexp, prob=0.5;
-static int     expind[MAXFRAMES]={0}, resized[MAXFRAMES]={0};
-static int     numwheels=MAXWHEELS, force=0, Force=0, negative=1;
-static int     rgb_max=65000, nostart=1, stripe_interval=7;
-static int     save=1, show=0, useprod=1, spinlength=256, savefile=0;
-static int     maxframe=0, frame=0, dorecalc=0, mapindex=0, run=1;
-static char    *outname="lyap.out";
-
-
-const char * const version = LYAP_VERSION;
-
-static void resize(void);
-static void redisplay(Window w, XExposeEvent *event);
-static void Spin(Window w);
-static void show_defaults(void);
-static void StartRubberBand(Window w, image_data_t *data, XEvent *event);
-static void TrackRubberBand(Window w, image_data_t *data, XEvent *event);
-static void EndRubberBand(Window w, image_data_t *data, XEvent *event);
-static void CreateXorGC(void);
-static void InitBuffer(void);
-static void BufferPoint(Display *display, Window window, int color,
-                       int x, int y);
-static void FlushBuffer(void);
-static void init_canvas(void);
-static void init_data(void);
-static void init_color(void);
-static void parseargs(void);
-static void Clear(void);
-static void setupmem(void);
-static void main_event(void);
-static int complyap(void);
-static void Getkey(XKeyEvent *event);
-static int sendpoint(double expo);
-static void save_to_file(void);
-static void setforcing(void);
-static void check_params(int mapnum, int parnum);
-static void usage(void);
-static void Destroy_frame(void);
-static void freemem(void);
-static void Redraw(void);
-static void redraw(double *exparray, int index, int cont);
-static void recalc(void);
-static void SetupCorners(XPoint *corners, image_data_t *data);
-static void set_new_params(Window w, image_data_t *data);
-static void go_down(void);
-static void go_back(void);
-static void go_init(void);
-static void jumpwin(void);
-static void print_help(void);
-static void print_values(void);
-
-
-void
-screenhack (Display *d, Window window)
-{
-  XWindowAttributes xgwa;
-  int builtin = -1;
-  dpy = d;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  width = xgwa.width;
-  height = xgwa.height;
-  visual = xgwa.visual;
-  cmap = xgwa.colormap;
-
-  parseargs();
-
-  if (get_boolean_resource("randomize", "Boolean"))
-    builtin = random() % 22;
-  else {
-    char *s = get_string_resource("builtin", "Integer");
-    if (s && *s)
-      builtin = atoi(s);
-    if (s) free (s);
-  }
-    
-  if (builtin >= 0)
-    {
-      char *ff = 0;
-      switch (builtin) {
-      case 0:
-       min_a = 3.75; aflag++;
-       min_b = 3.299999; bflag++;
-       a_range = 0.05; wflag++;
-       b_range = 0.05; hflag++;
-       dwell = 200;
-       settle = 100;
-       ff = "abaabbaaabbb";
-       break;
-
-      case 1:
-       min_a = 3.8; aflag++;
-       min_b = 3.2; bflag++;
-       b_range = .05; hflag++;
-       a_range = .05; wflag++;
-       ff = "bbbbbaaaaa";
-       break;
-
-      case 2:
-       min_a =  3.4; aflag++;
-       min_b =  3.04; bflag++;
-       a_range =  .5; wflag++;
-       b_range =  .5; hflag++;
-       ff = "abbbbbbbbb";
-       settle = 500;
-       dwell = 1000;
-       break;
-
-      case 3:
-       min_a = 3.5; aflag++;
-       min_b = 3.0; bflag++;
-       a_range = 0.2; wflag++;
-       b_range = 0.2; hflag++;
-       dwell = 600;
-       settle = 300;
-       ff = "aaabbbab";
-       break;
-
-      case 4:
-       min_a = 3.55667; aflag++;
-       min_b = 3.2; bflag++;
-       b_range = .05; hflag++;
-       a_range = .05; wflag++;
-       ff = "bbbbbaaaaa";
-       break;
-
-      case 5:
-       min_a = 3.79; aflag++;
-       min_b = 3.22; bflag++;
-       b_range = .02999; hflag++;
-       a_range = .02999; wflag++;
-       ff = "bbbbbaaaaa";
-       break;
-
-      case 6:
-       min_a = 3.7999; aflag++;
-       min_b = 3.299999; bflag++;
-       a_range = 0.2; wflag++;
-       b_range = 0.2; hflag++;
-       dwell = 300;
-       settle = 150;
-       ff = "abaabbaaabbb";
-       break;
-
-      case 7:
-       min_a = 3.89; aflag++;
-       min_b = 3.22; bflag++;
-       b_range = .028; hflag++;
-       a_range = .02999; wflag++;
-       ff = "bbbbbaaaaa";
-       settle = 600;
-       dwell = 1000;
-       break;
-
-      case 8:
-       min_a = 3.2; aflag++;
-       min_b = 3.7; bflag++;
-       a_range = 0.05; wflag++;
-       b_range = .005; hflag++;
-       ff = "abbbbaa";
-       break;
-
-      case 9:
-       ff = "aaaaaabbbbbb";
-       mapindex = 1;
-       dwell =  400;
-       settle =  200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 10:
-       ff = "aaaaaabbbbbb";
-       mapindex = 1;
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 11:
-       mapindex = 1;
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 12:
-       ff = "abbb";
-       mapindex = 1;
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 13:
-       ff = "abbabaab";
-       mapindex = 1;
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 14:
-       ff = "abbabaab";
-       dwell =  800;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       /* ####  -x 0.05 */
-       min_a = 3.91; aflag++;
-       a_range =  0.0899999999; wflag++;
-       min_b =  3.28; bflag++;
-       b_range =  0.35; hflag++;
-       break;
-
-      case 15:
-       ff = "aaaaaabbbbbb";
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 16:
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 17:
-       ff = "abbb";
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 18:
-       ff = "abbabaab";
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 19:
-       mapindex = 2;
-       ff = "aaaaaabbbbbb";
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 20:
-       mapindex = 2;
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 21:
-       mapindex = 2;
-       ff = "abbb";
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-
-      case 22:
-       mapindex = 2;
-       ff = "abbabaab";
-       dwell =  400;
-       settle = 200;
-       minlyap = maxexp = ABS(-0.85);
-       minexp = -1.0 * minlyap;
-       break;
-      }
-
-      if (ff) {
-       char *ch;
-       int bindex = 0;
-       maxindex = strlen(ff);
-       if (maxindex > MAXINDEX)
-         usage();
-       ch = ff;
-       force++;
-       while (bindex < maxindex) {
-         if (*ch == 'a')
-           forcing[bindex++] = 0;
-         else if (*ch == 'b')
-           forcing[bindex++] = 1;
-         else
-           usage();
-         ch++;
-       }
-      }
-    }
-
-  screen = DefaultScreen(dpy);
-  background = BlackPixel(dpy, screen);
-  setupmem();
-  init_data();
-  if (displayplanes > 1)
-    foreground = startcolor;
-  else
-    foreground = WhitePixel(dpy, screen);
-
-  /*
-  * Create the window to display the Lyapunov exponents
-  */
-  canvas = window;
-  init_canvas();
-
-  if (window != DefaultRootWindow(dpy))
-    XSelectInput(dpy,canvas,KeyPressMask|ButtonPressMask|ButtonMotionMask|
-                ButtonReleaseMask|ExposureMask|StructureNotifyMask);
-  if (displayplanes > 1) {
-    init_color();
-  } else {
-    XQueryColors(dpy, DefaultColormap(dpy, DefaultScreen(dpy)),
-       Colors, numcolors);
-  }
-  pixmap = XCreatePixmap(dpy, DefaultRootWindow(dpy),
-                        width, height, DefaultDepth(dpy, screen));
-  rubber_data.band_cursor = XCreateFontCursor(dpy, XC_hand2);
-  CreateXorGC();
-  Clear();
-  for(;;)
-      main_event();
-}
-
-static void
-main_event(void)
-{
-  int n;
-  XEvent event;
-
-  if (complyap() == TRUE)
-      run=0;
-  n = XEventsQueued(dpy, QueuedAfterFlush);
-  while (n--) {
-         XNextEvent(dpy, &event);
-           switch(event.type)
-           {
-           case KeyPress:
-    Getkey(&event.xkey);
-    break;
-           case Expose:
-    redisplay(canvas, &event.xexpose);
-         break;
-           case ConfigureNotify:
-    resize();
-         break;
-           case ButtonPress:
-    StartRubberBand(canvas, &rubber_data, &event);
-         break;
-           case MotionNotify:
-    TrackRubberBand(canvas, &rubber_data, &event);
-         break;
-           case ButtonRelease:
-    EndRubberBand(canvas, &rubber_data, &event);
-         break;
-            default: 
-    screenhack_handle_event (dpy, &event);
-         break;
-           }
-       }
-}
-
-/* complyap() is the guts of the program. This is where the Lyapunov exponent
- * is calculated. For each iteration (past some large number of iterations)
- * calculate the logarithm of the absolute value of the derivative at that
- * point. Then average them over some large number of iterations. Some small
- * speed up is achieved by utilizing the fact that log(a*b) = log(a) + log(b).
- */
-static int
-complyap(void)
-{
-  int i, bindex;
-  double total, prod, x, dx, r;
-
-  if (!run)
-    return TRUE;
-  a += a_inc;
-  if (a >= max_a)
-    if (sendpoint(lyapunov) == TRUE)
-      return FALSE;
-    else {
-      FlushBuffer();
-      if (savefile)
-       save_to_file();
-      return TRUE;
-    }
-  if (b >= max_b) {
-    FlushBuffer();
-    if (savefile)
-      save_to_file();
-    return TRUE;
-  }
-  prod = 1.0;
-  total = 0.0;
-  bindex = 0;
-  x = start_x;
-  r = (forcing[bindex]) ? b : a;
-#ifdef MAPS
-  findex = 0;
-  map = Maps[Forcing[findex]];
-#endif
-  for (i=0;i<settle;i++) {     /* Here's where we let the thing */
-    x = (*map)(x, r);   /* "settle down". There is usually */
-    if (++bindex >= maxindex) { /* some initial "noise" in the */
-      bindex = 0;    /* iterations. How can we optimize */
-      if (Rflag)      /* the value of settle ??? */
-         setforcing();
-    }
-    r = (forcing[bindex]) ? b : a;
-#ifdef MAPS
-    if (++findex >= funcmaxindex)
-      findex = 0;
-    map = Maps[Forcing[findex]];
-#endif
-  }
-#ifdef MAPS
-  deriv = Derivs[Forcing[findex]];
-#endif
-  if (useprod) {      /* using log(a*b) */
-    for (i=0;i<dwell;i++) {
-      x = (*map)(x, r);
-      dx = (*deriv)(x, r); /* ABS is a macro, so don't be fancy */
-      dx = ABS(dx);
-      if (dx == 0.0) /* log(0) is nasty so break out. */
-      {
-        i++;
-        break;
-      }
-      prod *= dx;
-      /* we need to prevent overflow and underflow */
-      if ((prod > 1.0e12) || (prod < 1.0e-12)) {
-       total += log(prod);
-       prod = 1.0;
-      }
-      if (++bindex >= maxindex) {
-       bindex = 0;
-       if (Rflag)
-         setforcing();
-      }
-      r = (forcing[bindex]) ? b : a;
-#ifdef MAPS
-      if (++findex >= funcmaxindex)
-       findex = 0;
-      map = Maps[Forcing[findex]];
-      deriv = Derivs[Forcing[findex]];
-#endif
-    }
-    total += log(prod);
-    lyapunov = (total * M_LOG2E) / (double)i;   
-  }
-  else {       /* use log(a) + log(b) */
-    for (i=0;i<dwell;i++) {
-      x = (*map)(x, r);
-      dx = (*deriv)(x, r); /* ABS is a macro, so don't be fancy */
-      dx = ABS(dx);
-      if (x == 0.0)  /* log(0) check */
-      {
-        i++;
-        break;
-      }
-      total += log(dx);
-      if (++bindex >= maxindex) {
-       bindex = 0;
-       if (Rflag)
-         setforcing();
-      }
-      r = (forcing[bindex]) ? b : a;
-#ifdef MAPS
-      if (++findex >= funcmaxindex)
-       findex = 0;
-      map = Maps[Forcing[findex]];
-      deriv = Derivs[Forcing[findex]];
-#endif
-    }
-    lyapunov = (total * M_LOG2E) / (double)i;
-  }
-
-  if (sendpoint(lyapunov) == TRUE)
-    return FALSE;
-  else {
-    FlushBuffer();
-    if (savefile)
-      save_to_file();
-    return TRUE;
-  }
-}
-
-static double
-logistic(double x, double r)       /* the familiar logistic map */
-{
-  return(r * x * (1.0 - x));
-}
-
-static double
-dlogistic(double x, double r)      /* the derivative of logistic map */
-{
-  return(r - (2.0 * r * x));
-}
-
-static double
-circle(double x, double r)       /* sin() hump or sorta like the circle map */
-{
-  return(r * sin(M_PI * x));
-}
-
-static double
-dcircle(double x, double r)      /* derivative of the "sin() hump" */
-{
-  return(r * M_PI * cos(M_PI * x));
-}
-
-static double
-leftlog(double x, double r)      /* left skewed logistic */
-{
-  double d;
-
-  d = 1.0 - x;
-  return(r * x * d * d);
-}
-
-static double
-dleftlog(double x, double r)    /* derivative of the left skewed logistic */
-{
-  return(r * (1.0 - (4.0 * x) + (3.0 * x * x)));
-}
-
-static double
-rightlog(double x, double r)    /* right skewed logistic */
-{
-  return(r * x * x * (1.0 - x));
-}
-
-static double
-drightlog(double x, double r)    /* derivative of the right skewed logistic */
-{
-  return(r * ((2.0 * x) - (3.0 * x * x)));
-}
-
-static double
-doublelog(double x, double r)    /* double logistic */
-{
-  double d;
-
-  d = 1.0 - x;
-  return(r * x * x * d * d);
-}
-
-static double
-ddoublelog(double x, double r)   /* derivative of the double logistic */
-{
-  double d;
-
-  d = x * x;
-  return(r * ((2.0 * x) - (6.0 * d) + (4.0 * x * d)));
-}
-
-static void
-init_data(void)
-{
-  numcolors = XDisplayCells(dpy, XDefaultScreen(dpy));
-  displayplanes = DisplayPlanes(dpy, XDefaultScreen(dpy));
-  if (numcolors > maxcolor)
-    numcolors = maxcolor;
-  numfreecols = numcolors - mincolindex;
-  lowrange = mincolindex - startcolor;
-  a_inc = a_range / (double)width;
-  b_inc = b_range / (double)height;
-  point.x = -1;
-  point.y = 0;
-  a = rubber_data.p_min = min_a;
-  b = rubber_data.q_min = min_b;
-  rubber_data.p_max = max_a;
-  rubber_data.q_max = max_b;
-  if (show)
-    show_defaults();
-  InitBuffer();
-}
-
-static void
-init_canvas(void)
-{
-  static int i;
-
-  /*
-  * create default, writable, graphics contexts for the canvas.
-  */
-       for (i=0; i<maxcolor; i++) {
-           Data_GC[i] = XCreateGC(dpy, DefaultRootWindow(dpy),
-               (unsigned long) NULL, (XGCValues *) NULL);
-           /* set the background to black */
-           XSetBackground(dpy,Data_GC[i],BlackPixel(dpy,XDefaultScreen(dpy)));
-           /* set the foreground of the ith context to i */
-           XSetForeground(dpy, Data_GC[i], i);
-       }
-       if (displayplanes == 1) {
-           XSetForeground(dpy,Data_GC[0],BlackPixel(dpy,XDefaultScreen(dpy)));
-           XSetForeground(dpy,Data_GC[1],WhitePixel(dpy,XDefaultScreen(dpy)));
-       }
-}
-
-#if 0
-static void
-hls2rgb(int hue_light_sat[3],
-       int rgb[3])             /*      Each in range [0..65535]        */
-{
-  unsigned short r, g, b;
-  hsv_to_rgb((int) (hue_light_sat[0] / 10),            /* 0-3600 -> 0-360 */
-            (int) ((hue_light_sat[2]/1000.0) * 64435), /* 0-1000 -> 0-65535 */
-            (int) ((hue_light_sat[1]/1000.0) * 64435), /* 0-1000 -> 0-65535 */
-            &r, &g, &b);
-  rgb[0] = r;
-  rgb[1] = g;
-  rgb[2] = b;
-}
-#endif /* 0 */
-
-
-static void
-init_color(void)
-{
-#if 1
-
-  int i;
-  XColor colors[256];
-  int ncolors = maxcolor;
-  Bool writable = False;
-  make_smooth_colormap(dpy, visual, cmap,
-                       colors, &ncolors, True, &writable, True);
-
-  for (i = 0; i < maxcolor; i++)
-    XSetForeground(dpy, Data_GC[i],
-                  colors[((int) ((i / ((float)maxcolor)) * ncolors))].pixel);
-
-#else
-  static int i, j, colgap, leg, step;
-  static Visual *visual;
-  Colormap def_cmap;
-  int hls[3], rgb[3];
-
-  def_cmap = DefaultColormap(dpy, DefaultScreen(dpy));
-  for (i=0; i<numcolors; i++) {
-    Colors[i].pixel = i;
-    Colors[i].flags = DoRed|DoGreen|DoBlue;
-  }
-
-  /* Try to write into a new color map */
-  visual = DefaultVisual(dpy, DefaultScreen(dpy));
-  cmap = XCreateColormap(dpy, canvas, visual, AllocAll);
-  XQueryColors(dpy, def_cmap, Colors, numcolors);
-  if (mincolindex)
-    colgap = rgb_max / mincolindex;
-  else
-    colgap = rgb_max;
-  hls[0] = 50; /* Hue in low range */
-  hls[2] = 1000;  /* Fully saturated */
-  for (i=startcolor; i<lowrange + startcolor; i++) {
-    hls[1] = 1000L * (i-startcolor) / lowrange;
-    hls2rgb(hls, rgb);
-    Colors[i].red = rgb[0];
-    Colors[i].green = rgb[1];
-    Colors[i].blue = rgb[2];
-  }
-  colgap = rgb_max / numcolors;
-  if (numwheels == 0)
-    XQueryColors(dpy, def_cmap, Colors, numcolors);
-  else if (numwheels == 1) {
-    colgap = 2*rgb_max/(numcolors - color_offset);
-    for (i=mincolindex; i<(numcolors/2); i++) {
-      Colors[i].blue = 0;
-      Colors[i].green=((i+color_offset)*colgap);
-      Colors[i].red=((i+color_offset)*colgap);
-    }
-    for (i=(numcolors/2); i<(numcolors); i++) {
-      Colors[i].blue = 0;
-      Colors[i].green=(((numcolors-i)+color_offset)*colgap);
-      Colors[i].red=(((numcolors-i)+color_offset)*colgap);
-    }
-  }
-  else if (numwheels == 2) {
-         hls[0] = 800; /* Hue in mid range */
-         hls[2] = 1000;  /* Fully saturated */
-         for (i=startcolor; i<lowrange + startcolor; i++) {
-      hls[1] = 1000L * (i-startcolor) / lowrange;
-      hls2rgb(hls, rgb);
-      Colors[i].red = rgb[0];
-      Colors[i].green = rgb[1];
-      Colors[i].blue = rgb[2];
-         }
-    for (i=mincolindex; i<(numcolors/2); i++) {
-      Colors[i].blue = rgb_max;
-      Colors[i].green = 0;
-      Colors[i].red=(i*2*rgb_max/numcolors);
-    }
-    for (i=(numcolors/2); i<numcolors; i++) {
-      Colors[i].blue = rgb_max;
-      Colors[i].green = 0;
-      Colors[i].red=((numcolors - i)*2*rgb_max/numcolors);
-    }
-  }
-  else if (numwheels == 3) {
-         hls[0] = 800; /* Hue in mid range */
-         hls[2] = 1000;  /* Fully saturated */
-         for (i=startcolor; i<lowrange + startcolor; i++) {
-      hls[1] = 1000L * (i-startcolor) / lowrange;
-      hls2rgb(hls, rgb);
-      Colors[i].red = rgb[0];
-      Colors[i].green = rgb[1];
-      Colors[i].blue = rgb[2];
-         }
-    colgap = 4*rgb_max/numcolors;
-    for (i=mincolindex; i<(numcolors/4); i++) {
-      Colors[i].blue = rgb_max;
-      Colors[i].green = 0;
-      Colors[i].red=(i*colgap);
-    }
-    for (i=(numcolors/4); i<(numcolors/2); i++) {
-      Colors[i].red = rgb_max;
-      Colors[i].green = 0;
-      Colors[i].blue=((numcolors/2) - i) * colgap;
-    }
-    for (i=(numcolors/2); i<(0.75*numcolors); i++) {
-      Colors[i].red = rgb_max;
-      Colors[i].blue=(i * colgap);
-      Colors[i].green = 0;
-    }
-    for (i=(0.75*numcolors); i<numcolors; i++) {
-      Colors[i].blue = rgb_max;
-      Colors[i].green = 0;
-      Colors[i].red=(numcolors-i)*colgap;
-    }
-  }
-  else if (numwheels == 4) {
-         hls[0] = 800; /* Hue in mid range */
-         hls[2] = 1000;  /* Fully saturated */
-         for (i=startcolor; i<lowrange + startcolor; i++) {
-      hls[1] = 1000L * (i-startcolor) / lowrange;
-      hls2rgb(hls, rgb);
-      Colors[i].red = rgb[0];
-      Colors[i].green = rgb[1];
-      Colors[i].blue = rgb[2];
-         }
-    colgap = numwheels * rgb_max / numcolors;
-    for (i=mincolindex; i<(numcolors/numwheels); i++) {
-      Colors[i].blue = rgb_max;
-      Colors[i].green = 0;
-      Colors[i].red=(i*colgap);
-    }
-    for (i=(numcolors/numwheels); i<(2*numcolors/numwheels); i++) {
-      Colors[i].red = rgb_max;
-      Colors[i].green = 0;
-      Colors[i].blue=((2*numcolors/numwheels) - i) * colgap;
-    }
-    for (i=(2*numcolors/numwheels); i<numcolors; i++) {
-      Colors[i].red = rgb_max;
-      Colors[i].green=(i - (2*numcolors/numwheels)) * colgap;
-      Colors[i].blue = 0;
-    }
-  }
-  else if (numwheels == 5) {
-    hls[1] = 700; /* Lightness in midrange */
-    hls[2] = 1000;  /* Fully saturated */
-    for (i=mincolindex; i<numcolors; i++) {
-      hls[0] = 3600L * i / numcolors;
-      hls2rgb(hls, rgb);
-      Colors[i].red = rgb[0];
-      Colors[i].green = rgb[1];
-      Colors[i].blue = rgb[2];
-    }
-    for (i=mincolindex; i<numcolors; i+=stripe_interval) {
-      hls[0] = 3600L * i / numcolors;
-      hls2rgb(hls, rgb);
-      Colors[i].red = rgb[0] / 2;
-      Colors[i].green = rgb[1] / 2;
-      Colors[i].blue = rgb[2] / 2;
-    }
-  }
-  else if (numwheels == 6) {
-      hls[0] = 800; /* Hue in mid range */
-      hls[2] = 1000;  /* Fully saturated */
-      for (i=startcolor; i<lowrange + startcolor; i++) {
-    hls[1] = 1000L * (i-startcolor) / lowrange;
-    hls2rgb(hls, rgb);
-    Colors[i].red = rgb[0];
-    Colors[i].green = rgb[1];
-    Colors[i].blue = rgb[2];
-      }
-      step = numfreecols / 3;
-      leg = step+mincolindex;
-      for (i = mincolindex; i < leg; ++i)
-      {
-    Colors[i].pixel = i;
-    Colors[i].red = fabs(65535 - (double)i / step * 65535.0);
-    Colors[i].blue = (double)i / step * 65535.0;
-    Colors[i].green = 0;
-    Colors[i].flags = DoRed | DoGreen | DoBlue;
-      }
-      for (j = 0, i = leg, leg += step; i < leg; ++i, ++j)
-      {
-    Colors[i].pixel = i;
-    Colors[i].red = (double)j / step * 65535.0;
-    Colors[i].blue = 65535;
-    Colors[i].green = Colors[i].red;
-    Colors[i].flags = DoRed | DoGreen | DoBlue;
-      }
-      for (j = 0, i = leg, leg += step; i < leg; ++i, ++j)
-      {
-    Colors[i].pixel = i;
-    Colors[i].red = 65535;
-    Colors[i].blue = fabs(65535 - (double)j / step * 65535.0);
-    Colors[i].green = Colors[i].blue;
-    Colors[i].flags = DoRed | DoGreen | DoBlue;
-      }
-  }
-  else if (numwheels == MAXWHEELS) {  /* rainbow palette */
-    hls[1] = 500; /* Lightness in midrange */
-    hls[2] = 1000;  /* Fully saturated */
-    for (i=mincolindex; i<numcolors; i++) {
-      hls[0] = 3600L * i / numcolors;
-      hls2rgb(hls, rgb);
-      Colors[i].red = rgb[0];
-      Colors[i].green = rgb[1];
-      Colors[i].blue = rgb[2];
-    }
-  }
-  XStoreColors(dpy, cmap, Colors, numcolors);
-
-  XSetWindowColormap(dpy, canvas, cmap);
-#endif
-}
-
-static void
-parseargs()
-{
-  static int i;
-  int bindex=0, findex;
-  char *s, *ch;
-
-  map = Maps[0];
-  deriv = Derivs[0];
-  maxexp=minlyap; minexp= -1.0 * minlyap;
-
-  mincolindex = get_integer_resource("minColor", "Integer");
-  dwell = get_integer_resource("dwell", "Integer");
-#ifdef MAPS
-  {
-    char *optarg = get_string_resource("function", "String");
-    funcmaxindex = strlen(optarg);
-    if (funcmaxindex > FUNCMAXINDEX)
-      usage();
-    ch = optarg;
-    Force++;
-    for (findex=0;findex<funcmaxindex;findex++) {
-      Forcing[findex] = (int)(*ch++ - '0');;
-      if (Forcing[findex] >= NUMMAPS)
-       usage();
-    }
-  }
-#endif
-  if (get_boolean_resource("useLog", "Boolean"))
-    useprod=0;
-
-  minlyap=ABS(get_float_resource("colorExponent", "Float"));
-  maxexp=minlyap;
-  minexp= -1.0 * minlyap;
-
-  color_offset = get_integer_resource("colorOffset", "Integer");
-
-  maxcolor=ABS(get_integer_resource("maxColor", "Integer"));
-  if ((maxcolor - startcolor) <= 0)
-    startcolor = 0;
-  if ((maxcolor - mincolindex) <= 0) {
-    mincolindex = 1;
-    color_offset = 0;
-  }
-
-  s = get_string_resource("randomForce", "Float");
-  if (s && *s) {
-    prob=atof(s); Rflag++; setforcing();
-  }
-
-  settle = get_integer_resource("settle", "Integer");
-
-  s = get_string_resource("minA", "Float");
-  if (s && *s) {
-    min_a = atof(s);
-    aflag++;
-  }
-  
-  s = get_string_resource("minB", "Float");
-  if (s && *s) {
-    min_b=atof(s); bflag++;
-  }
-  
-  numwheels = get_integer_resource("wheels", "Integer");
-
-  s = get_string_resource("forcingFunction", "String");
-  if (s && *s) {
-    maxindex = strlen(s);
-    if (maxindex > MAXINDEX)
-      usage();
-    ch = s;
-    force++;
-    while (bindex < maxindex) {
-      if (*ch == 'a')
-       forcing[bindex++] = 0;
-      else if (*ch == 'b')
-       forcing[bindex++] = 1;
-      else
-       usage();
-      ch++;
-    }
-  }
-
-  s = get_string_resource("bRange", "Float");
-  if (s && *s) {
-    b_range = atof(s);
-    hflag++;
-  }
-
-  start_x = get_float_resource("startX", "Float");
-
-  s = get_string_resource("mapIndex", "Integer");
-  if (s && *s) {
-    mapindex=atoi(s);
-    if ((mapindex >= NUMMAPS) || (mapindex < 0))
-      usage();
-    map = Maps[mapindex];
-    deriv = Derivs[mapindex];
-    if (!aflag)
-      min_a = amins[mapindex];
-    if (!wflag)
-      a_range = aranges[mapindex];
-    if (!bflag)
-      min_b = bmins[mapindex];
-    if (!hflag)
-      b_range = branges[mapindex];
-    if (!Force)
-      for (i=0;i<FUNCMAXINDEX;i++)
-       Forcing[i] = mapindex;
-  }
-
-  outname = get_string_resource("outputFile", "Integer");
-
-  if (get_boolean_resource("beNegative", "Boolean"))
-    negative--;
-
-  rgb_max = get_integer_resource("rgbMax", "Integer");
-  spinlength = get_integer_resource("spinLength", "Integer");
-  show = get_boolean_resource("show", "Boolean");
-
-  s = get_string_resource("aRange", "Float");
-  if (s && *s) {
-    a_range = atof(s); wflag++;
-  }
-
-  max_a = min_a + a_range;
-  max_b = min_b + b_range;
-
-  a_minimums[0] = min_a; b_minimums[0] = min_b;
-  a_maximums[0] = max_a; b_maximums[0] = max_b;
-
-  if (Force)
-    if (maxindex == funcmaxindex)
-      for (findex=0;findex<funcmaxindex;findex++)
-       check_params(Forcing[findex],forcing[findex]);
-    else
-      fprintf(stderr, "Warning! Unable to check parameters\n");
-  else
-    check_params(mapindex,2);
-}
-
-static void
-check_params(int mapnum, int parnum)
-{
-
-  if (parnum != 1) {
-      if ((max_a > pmaxs[mapnum]) || (min_a < pmins[mapnum])) {
-    fprintf(stderr, "Warning! Parameter 'a' out of range.\n");
-    fprintf(stderr, "You have requested a range of (%f,%f).\n",
-      min_a,max_a);
-    fprintf(stderr, "Valid range is (%f,%f).\n",
-      pmins[mapnum],pmaxs[mapnum]);
-      }
-  }
-  if (parnum != 0) {
-      if ((max_b > pmaxs[mapnum]) || (min_b < pmins[mapnum])) {
-    fprintf(stderr, "Warning! Parameter 'b' out of range.\n");
-    fprintf(stderr, "You have requested a range of (%f,%f).\n",
-      min_b,max_b);
-    fprintf(stderr, "Valid range is (%f,%f).\n",
-      pmins[mapnum],pmaxs[mapnum]);
-      }
-  }
-}
-
-static void
-usage(void)
-{
-    fprintf(stderr,"lyap [-BLs][-W#][-H#][-a#][-b#][-w#][-h#][-x xstart]\n");
-    fprintf(stderr,"\t[-M#][-S#][-D#][-f string][-r#][-O#][-C#][-c#][-m#]\n");
-#ifdef MAPS
-    fprintf(stderr,"\t[-F string]\n");
-#endif
-    fprintf(stderr,"\tWhere: -C# specifies the minimum color index\n");
-    fprintf(stderr,"\t      -r# specifies the maxzimum rgb value\n");
-    fprintf(stderr,"\t      -u displays this message\n");
-    fprintf(stderr,"\t      -a# specifies the minimum horizontal parameter\n");
-    fprintf(stderr,"\t      -b# specifies the minimum vertical parameter\n");
-    fprintf(stderr,"\t      -w# specifies the horizontal parameter range\n");
-    fprintf(stderr,"\t      -h# specifies the vertical parameter range\n");
-    fprintf(stderr,"\t      -D# specifies the dwell\n");
-    fprintf(stderr,"\t      -S# specifies the settle\n");
-    fprintf(stderr,"\t      -H# specifies the initial window height\n");
-    fprintf(stderr,"\t      -W# specifies the initial window width\n");
-    fprintf(stderr,"\t      -O# specifies the color offset\n");
-    fprintf(stderr,"\t      -c# specifies the desired color wheel\n");
-    fprintf(stderr,"\t      -m# specifies the desired map (0-4)\n");
-    fprintf(stderr,"\t      -f aabbb specifies a forcing function of 00111\n");
-#ifdef MAPS
-    fprintf(stderr,"\t      -F 00111 specifies the function forcing function\n");
-#endif
-    fprintf(stderr,"\t      -L indicates use log(x)+log(y) rather than log(xy)\n");
-    fprintf(stderr,"\tDuring display :\n");
-    fprintf(stderr,"\t    Use the mouse to zoom in on an area\n");
-    fprintf(stderr,"\t    e or E recalculates color indices\n");
-    fprintf(stderr,"\t    f or F saves exponents to a file\n");
-    fprintf(stderr,"\t    KJmn increase/decrease minimum negative exponent\n");
-    fprintf(stderr,"\t    r or R redraws\n");
-    fprintf(stderr,"\t    s or S spins the colorwheel\n");
-    fprintf(stderr,"\t    w or W changes the color wheel\n");
-    fprintf(stderr,"\t    x or X clears the window\n");
-    fprintf(stderr,"\t    q or Q exits\n");
-    exit(1);
-}
-
-static void
-Cycle_frames(void)
-{
-  static int i;
-  for (i=0;i<=maxframe;i++)
-    redraw(exponents[i], expind[i], 1);
-}
-
-static void
-Spin(Window w)
-{
-  static int i, j;
-  long tmpxcolor;
-
-  if (displayplanes > 1) {
-    for (j=0;j<spinlength;j++) {
-      tmpxcolor = Colors[mincolindex].pixel;
-      for (i=mincolindex;i<numcolors-1;i++)
-       Colors[i].pixel = Colors[i+1].pixel;
-      Colors[numcolors-1].pixel = tmpxcolor;
-      XStoreColors(dpy, cmap, Colors, numcolors);
-    }
-    for (j=0;j<spinlength;j++) {
-      tmpxcolor = Colors[numcolors-1].pixel;
-      for (i=numcolors-1;i>mincolindex;i--)
-       Colors[i].pixel = Colors[i-1].pixel;
-      Colors[mincolindex].pixel = tmpxcolor;
-      XStoreColors(dpy, cmap, Colors, numcolors);
-    }
-  }
-}
-
-static void
-Getkey(XKeyEvent *event)
-{
-  unsigned char key;
-  static int i;
-  if (XLookupString(event, (char *)&key, sizeof(key), (KeySym *)0,
-           (XComposeStatus *) 0) > 0)
-    switch (key) {
-  case '<': dwell /= 2; if (dwell < 1) dwell = 1; break;
-  case '>': dwell *= 2; break;
-  case '[': settle /= 2; if (settle < 1) settle = 1; break;
-  case ']': settle *= 2; break;
-  case 'd': go_down(); break;
-  case 'D': FlushBuffer(); break;
-  case 'e':
-  case 'E': FlushBuffer();
-      dorecalc = (!dorecalc);
-      if (dorecalc)
-      recalc();
-      else {
-      maxexp = minlyap; minexp = -1.0 * minlyap;
-      }
-      redraw(exponents[frame], expind[frame], 1);
-      break;
-  case 'f':
-  case 'F': save_to_file(); break;
-  case 'i': if (stripe_interval > 0) {
-      stripe_interval--;
-       if (displayplanes > 1) {
-           init_color();
-       }
-      }
-      break;
-  case 'I': stripe_interval++;
-      if (displayplanes > 1) {
-       init_color();
-      }
-      break;
-  case 'K': if (minlyap > 0.05)
-      minlyap -= 0.05;
-       break;
-  case 'J': minlyap += 0.05;
-       break;
-  case 'm': mapindex++;
-                 if (mapindex >= NUMMAPS)
-                       mapindex=0;
-                 map = Maps[mapindex];
-                 deriv = Derivs[mapindex];
-      if (!aflag)
-                       min_a = amins[mapindex];
-                 if (!wflag)
-                       a_range = aranges[mapindex];
-                 if (!bflag)
-                       min_b = bmins[mapindex];
-                 if (!hflag)
-                       b_range = branges[mapindex];
-                 if (!Force)
-                       for (i=0;i<FUNCMAXINDEX;i++)
-                            Forcing[i] = mapindex;
-           max_a = min_a + a_range;
-           max_b = min_b + b_range;
-           a_minimums[0] = min_a; b_minimums[0] = min_b;
-           a_maximums[0] = max_a; b_maximums[0] = max_b;
-           a_inc = a_range / (double)width;
-           b_inc = b_range / (double)height;
-           point.x = -1;
-           point.y = 0;
-           a = rubber_data.p_min = min_a;
-           b = rubber_data.q_min = min_b;
-           rubber_data.p_max = max_a;
-           rubber_data.q_max = max_b;
-                 Clear();
-                 break;
-  case 'M': if (minlyap > 0.005)
-      minlyap -= 0.005;
-       break;
-  case 'N': minlyap += 0.005;
-       break;
-  case 'p':
-  case 'P': negative = (!negative);
-      FlushBuffer(); redraw(exponents[frame], expind[frame], 1);
-      break;
-  case 'r': FlushBuffer(); redraw(exponents[frame], expind[frame], 1);
-      break;
-  case 'R': FlushBuffer(); Redraw(); break;
-  case 's':
-       spinlength=spinlength/2;
-  case 'S': if (displayplanes > 1)
-      Spin(canvas);
-       spinlength=spinlength*2; break;
-  case 'u': go_back(); break;
-  case 'U': go_init(); break;
-  case 'v':
-  case 'V': print_values(); break;
-  case 'W': if (numwheels < MAXWHEELS)
-      numwheels++;
-       else
-      numwheels = 0;
-       if (displayplanes > 1) {
-       init_color();
-       }
-       break;
-  case 'w': if (numwheels > 0)
-      numwheels--;
-       else
-      numwheels = MAXWHEELS;
-       if (displayplanes > 1) {
-       init_color();
-       }
-       break;
-  case 'x': Clear(); break;
-  case 'X': Destroy_frame(); break;
-  case 'z': Cycle_frames(); redraw(exponents[frame], expind[frame], 1);
-      break;
-  case 'Z': while (!XPending(dpy)) Cycle_frames();
-      redraw(exponents[frame], expind[frame], 1); break;
-  case 'q':
-  case 'Q': exit(0); break;
-  case '?':
-  case 'h':
-  case 'H': print_help(); break;
-  default:  break;
-  }
-}
-
-/* Here's where we index into a color map. After the Lyapunov exponent is
- * calculated, it is used to determine what color to use for that point.
- * I suppose there are a lot of ways to do this. I used the following :
- * if it's non-negative then there's a reserved area at the lower range
- * of the color map that i index into. The ratio of some "minimum exponent
- * value" and the calculated value is used as a ratio of how high to index
- * into this reserved range. Usually these colors are dark red (see init_color).
- * If the exponent is negative, the same ratio (expo/minlyap) is used to index
- * into the remaining portion of the colormap (which is usually some light
- * shades of color or a rainbow wheel). The coloring scheme can actually make
- * a great deal of difference in the quality of the picture. Different colormaps
- * bring out different details of the dynamics while different indexing
- * algorithms also greatly effect what details are seen. Play around with this.
- */
-static int
-sendpoint(double expo)
-{
-  static int index;
-  static double tmpexpo;
-
-#if 0
-/* The relationship minexp <= expo <= maxexp should always be true. This test
-   enforces that. But maybe not enforcing it makes better pictures. */
-  if (expo < minexp)
-    expo = minexp;
-  else if (expo > maxexp)
-    expo = maxexp;
-#endif
-
-  point.x++;
-  tmpexpo = (negative) ? expo : -1.0 * expo;
-  if (tmpexpo > 0) {
-    if (displayplanes >1) {
-       index = (int)(tmpexpo*lowrange/maxexp);
-       index = (index % lowrange) + startcolor;
-    }
-    else
-       index = 0;
-  }
-  else {
-    if (displayplanes >1) {
-       index = (int)(tmpexpo*numfreecols/minexp);
-       index = (index % numfreecols) + mincolindex;
-    }
-    else
-       index = 1;
-  }
-    BufferPoint(dpy, canvas, index, point.x, point.y);
-  if (save)
-    exponents[frame][expind[frame]++] = expo;
-  if (point.x >= width) {
-    point.y++;
-    point.x = 0;
-    if (save) {
-      b += b_inc;
-      a = min_a;
-    }
-    if (point.y >= height)
-      return FALSE;
-    else
-      return TRUE;
-  }
-  return TRUE;
-}
-
-static void
-redisplay (Window w, XExposeEvent *event)
-{
-  /*
-  * Extract the exposed area from the event and copy
-  * from the saved pixmap to the window.
-  */
-  XCopyArea(dpy, pixmap, canvas, Data_GC[0],
-          event->x, event->y, event->width, event->height,
-          event->x, event->y);
-}
-
-static void
-resize(void)
-{
-  Window r;
-  int n, x, y;
-  unsigned int bw, d, new_w, new_h;
-
-  XGetGeometry(dpy,canvas,&r,&x,&y,&new_w,&new_h,&bw,&d);
-  if ((new_w == width) && (new_h == height))
-    return;
-  width = new_w; height = new_h;
-  XClearWindow(dpy, canvas);
-  if (pixmap)
-    XFreePixmap(dpy, pixmap);
-  pixmap = XCreatePixmap(dpy, DefaultRootWindow(dpy),
-      width, height, DefaultDepth(dpy, screen));
-  a_inc = a_range / (double)width;
-  b_inc = b_range / (double)height;
-  point.x = -1;
-  point.y = 0;
-  run = 1;
-  a = rubber_data.p_min = min_a;
-  b = rubber_data.q_min = min_b;
-  rubber_data.p_max = max_a;
-  rubber_data.q_max = max_b;
-  freemem();
-  setupmem();
-       for (n=0;n<MAXFRAMES;n++)
-    if ((n <= maxframe) && (n != frame))
-       resized[n] = 1;
-  InitBuffer();
-  Clear();
-  Redraw();
-}
-
-static void
-redraw(double *exparray, int index, int cont)
-{
-  static int i;
-  static int x_sav, y_sav;
-
-  x_sav = point.x;
-  y_sav = point.y;
-
-  point.x = -1;
-  point.y = 0;
-
-  save=0;
-  for (i=0;i<index;i++)
-    sendpoint(exparray[i]);
-  save=1;
-
-  if (cont) {
-    point.x = x_sav;
-    point.y = y_sav;
-  }
-  else {
-    a = point.x * a_inc + min_a;
-    b = point.y * b_inc + min_b;
-  }
-  FlushBuffer();
-}
-
-static void
-Redraw(void)
-{
-  FlushBuffer();
-       point.x = -1;
-       point.y = 0;
-  run = 1;
-       a = min_a;
-       b = min_b;
-  expind[frame] = 0;
-  resized[frame] = 0;
-}
-
-/* Store color pics in PPM format and monochrome in PGM */
-static void
-save_to_file(void)
-{
-  FILE *outfile;
-  unsigned char c;
-  XImage *ximage;
-  static int i,j;
-  struct Colormap {
-    unsigned char red;
-    unsigned char green;
-    unsigned char blue;
-  };
-  struct Colormap *colormap=NULL;
-
-  if (colormap)
-    free(colormap);
-  if ((colormap=
-    (struct Colormap *)malloc(sizeof(struct Colormap)*maxcolor))
-      == NULL) {
-    fprintf(stderr,"Error malloc'ing colormap array\n");
-    exit(-1);
-  }
-  outfile = fopen(outname,"w");
-  if(!outfile) {
-    perror(outname);
-    exit(-1);
-  }
-
-  ximage=XGetImage(dpy, pixmap, 0, 0, width, height, AllPlanes, XYPixmap);
-
-  if (displayplanes > 1) {
-    for (i=0;i<maxcolor;i++) {
-      colormap[i].red=(unsigned char)(Colors[i].red >> 8);
-      colormap[i].green=(unsigned char)(Colors[i].green >> 8);
-      colormap[i].blue =(unsigned char)(Colors[i].blue >> 8);
-    }
-    fprintf(outfile,"P%d %d %d\n",6,width,height);
-  }
-  else
-    fprintf(outfile,"P%d %d %d\n",5,width,height);
-  fprintf(outfile,"# settle=%d dwell=%d start_x=%f\n",settle,dwell,
-       start_x);
-  fprintf(outfile,"# min_a=%f  a_rng=%f         max_a=%f\n",min_a,a_range,max_a);
-  fprintf(outfile,"# min_b=%f  b_rng=%f         max_b=%f\n",min_b,b_range,max_b);
-  if (Rflag)
-    fprintf(outfile,"# pseudo-random forcing\n");
-  else if (force) {
-    fprintf(outfile,"# periodic forcing=");
-    for (i=0;i<maxindex;i++) {
-      fprintf(outfile,"%d",forcing[i]);
-    }
-    fprintf(outfile,"\n");
-  }
-  else
-    fprintf(outfile,"# periodic forcing=01\n");
-  if (Force) {
-    fprintf(outfile,"# function forcing=");
-    for (i=0;i<funcmaxindex;i++) {
-      fprintf(outfile,"%d",Forcing[i]);
-    }
-    fprintf(outfile,"\n");
-  }
-  fprintf(outfile,"%d\n",numcolors-1);
-
-  for (j=0;j<height;j++)
-      for (i=0;i<width;i++) {
-    c = (unsigned char)XGetPixel(ximage,i,j);
-    if (displayplanes > 1)
-       fwrite((char *)&colormap[c],sizeof colormap[0],1,outfile);
-    else
-       fwrite((char *)&c,sizeof c,1,outfile);
-      }
-  fclose(outfile);
-}
-
-static void
-recalc(void)
-{
-  static int i, x, y;
-
-  minexp = maxexp = 0.0;
-  x = y = 0;
-  for (i=0;i<expind[frame];i++) {
-    if (exponents[frame][i] < minexp)
-      minexp = exponents[frame][i];
-    if (exponents[frame][i] > maxexp)
-      maxexp = exponents[frame][i];
-  }
-}
-
-static void
-Clear(void)
-{
-      XClearWindow(dpy, canvas);
-  XCopyArea(dpy, canvas, pixmap, Data_GC[0],
-           0, 0, width, height, 0, 0);
-  InitBuffer();
-}
-
-static void
-show_defaults(void)
-{
-
-  printf("Width=%d  Height=%d  numcolors=%d  settle=%d dwell=%d\n",
-    width,height,numcolors,settle,dwell);
-  printf("min_a=%f  a_range=%f max_a=%f\n", min_a,a_range,max_a);
-  printf("min_b=%f  b_range=%f max_b=%f\n", min_b,b_range,max_b);
-  printf("minlyap=%f  minexp=%f         maxexp=%f\n", minlyap,minexp,maxexp);
-  exit(0);
-}
-
-static void
-CreateXorGC(void)
-{
-  XGCValues values;
-
-  values.foreground = foreground;
-  values.line_style = LineSolid;
-  values.function = GXxor;
-  RubberGC = XCreateGC(dpy, DefaultRootWindow(dpy),
-       GCForeground | GCBackground | GCFunction | GCLineStyle, &values);
-}
-
-static void
-StartRubberBand(Window w, image_data_t *data, XEvent *event)
-{
-  XPoint corners[5];
-
-  nostart = 0;
-  data->rubber_band.last_x = data->rubber_band.start_x = event->xbutton.x;
-  data->rubber_band.last_y = data->rubber_band.start_y = event->xbutton.y;
-  SetupCorners(corners, data);
-  XDrawLines(dpy, canvas, RubberGC,
-      corners, sizeof(corners) / sizeof(corners[0]), CoordModeOrigin);
-}
-
-static void
-SetupCorners(XPoint *corners, image_data_t *data)
-{
-  corners[0].x = data->rubber_band.start_x;
-  corners[0].y = data->rubber_band.start_y;
-  corners[1].x = data->rubber_band.start_x;
-  corners[1].y = data->rubber_band.last_y;
-  corners[2].x = data->rubber_band.last_x;
-  corners[2].y = data->rubber_band.last_y;
-  corners[3].x = data->rubber_band.last_x;
-  corners[3].y = data->rubber_band.start_y;
-  corners[4] = corners[0];
-}
-
-static void
-TrackRubberBand(Window w, image_data_t *data, XEvent *event)
-{
-  XPoint corners[5];
-  int xdiff, ydiff;
-
-  if (nostart)
-    return;
-  SetupCorners(corners, data);
-  XDrawLines(dpy, canvas, RubberGC,
-      corners, sizeof(corners) / sizeof(corners[0]), CoordModeOrigin);
-  ydiff = event->xbutton.y - data->rubber_band.start_y;
-  xdiff = event->xbutton.x - data->rubber_band.start_x;
-  data->rubber_band.last_x = data->rubber_band.start_x + xdiff;
-  data->rubber_band.last_y = data->rubber_band.start_y + ydiff;
-  if (data->rubber_band.last_y < data->rubber_band.start_y ||
-      data->rubber_band.last_x < data->rubber_band.start_x)
-  {
-    data->rubber_band.last_y = data->rubber_band.start_y;
-    data->rubber_band.last_x = data->rubber_band.start_x;
-  }
-  SetupCorners(corners, data);
-  XDrawLines(dpy, canvas, RubberGC,
-      corners, sizeof(corners) / sizeof(corners[0]), CoordModeOrigin);
-}
-
-static void
-EndRubberBand(Window w, image_data_t *data, XEvent *event)
-{
-  XPoint corners[5];
-  XPoint top, bot;
-  double delta, diff;
-
-  nostart = 1;
-  SetupCorners(corners, data);
-  XDrawLines(dpy, canvas, RubberGC,
-      corners, sizeof(corners) / sizeof(corners[0]), CoordModeOrigin);
-  if (data->rubber_band.start_x >= data->rubber_band.last_x ||
-      data->rubber_band.start_y >= data->rubber_band.last_y)
-    return;
-  top.x = data->rubber_band.start_x;
-  bot.x = data->rubber_band.last_x;
-  top.y = data->rubber_band.start_y;
-  bot.y = data->rubber_band.last_y;
-  diff = data->q_max - data->q_min;
-  delta = (double)top.y / (double)height;
-  data->q_min += diff * delta;
-  delta = (double)(height - bot.y) / (double)height;
-  data->q_max -= diff * delta;
-  diff = data->p_max - data->p_min;
-  delta = (double)top.x / (double)width;
-  data->p_min += diff * delta;
-  delta = (double)(width - bot.x) / (double)width;
-  data->p_max -= diff * delta;
-  fflush(stdout);
-  set_new_params(w, data);
-}
-
-static void
-set_new_params(Window w, image_data_t *data)
-{
-  frame = (maxframe + 1) % MAXFRAMES;
-  if (frame > maxframe)
-    maxframe = frame;
-  a_range = data->p_max - data->p_min;
-  b_range = data->q_max - data->q_min;
-       a_minimums[frame] = min_a = data->p_min;
-       b_minimums[frame] = min_b = data->q_min;
-       a_inc = a_range / (double)width;
-       b_inc = b_range / (double)height;
-       point.x = -1;
-       point.y = 0;
-  run = 1;
-       a = min_a;
-       b = min_b;
-       a_maximums[frame] = max_a = data->p_max;
-       b_maximums[frame] = max_b = data->q_max;
-  expind[frame] = 0;;
-  Clear();
-}
-
-static void
-go_down(void)
-{
-  frame++;
-  if (frame > maxframe)
-    frame = 0;
-  jumpwin();
-}
-
-static void
-go_back(void)
-{
-  frame--;
-  if (frame < 0)
-    frame = maxframe;
-  jumpwin();
-}
-
-static void
-jumpwin(void)
-{
-  rubber_data.p_min = min_a = a_minimums[frame];
-  rubber_data.q_min = min_b = b_minimums[frame];
-  rubber_data.p_max = max_a = a_maximums[frame];
-  rubber_data.q_max = max_b = b_maximums[frame];
-  a_range = max_a - min_a;
-  b_range = max_b - min_b;
-       a_inc = a_range / (double)width;
-       b_inc = b_range / (double)height;
-       point.x = -1;
-       point.y = 0;
-       a = min_a;
-       b = min_b;
-  Clear();
-  if (resized[frame])
-    Redraw();
-  else
-    redraw(exponents[frame], expind[frame], 0);
-}
-
-static void
-go_init(void)
-{
-  frame = 0;
-  jumpwin();
-}
-
-static void
-Destroy_frame(void)
-{
-  static int i;
-
-  for (i=frame; i<maxframe; i++) {
-    exponents[frame] = exponents[frame+1];
-    expind[frame] = expind[frame+1];
-    a_minimums[frame] = a_minimums[frame+1];
-    b_minimums[frame] = b_minimums[frame+1];
-    a_maximums[frame] = a_maximums[frame+1];
-    b_maximums[frame] = b_maximums[frame+1];
-  }
-  maxframe--;
-  go_back();
-}
-
-static void
-InitBuffer(void)
-{
-  int i;
-
-  for (i = 0 ; i < maxcolor; ++i)
-    Points.npoints[i] = 0;
-}
-
-static void
-BufferPoint(Display *display, Window window, int color, int x, int y)
-{
-
-/* Guard against bogus color values. Shouldn't be necessary but paranoia
-   is good. */
-  if (color < 0)
-    color = 0;
-  else if (color >= maxcolor)
-    color = maxcolor - 1;
-
-  if (Points.npoints[color] == MAXPOINTS)
-  {
-    XDrawPoints(display, window, Data_GC[color],
-       Points.data[color], Points.npoints[color], CoordModeOrigin);
-    XDrawPoints(display, pixmap, Data_GC[color],
-       Points.data[color], Points.npoints[color], CoordModeOrigin);
-    Points.npoints[color] = 0;
-  }
-  Points.data[color][Points.npoints[color]].x = x;
-  Points.data[color][Points.npoints[color]].y = y;
-  ++Points.npoints[color];
-}
-
-static void
-FlushBuffer(void)
-{
-  int color;
-
-  for (color = 0; color < maxcolor; ++color)
-    if (Points.npoints[color])
-    {
-       XDrawPoints(dpy, canvas, Data_GC[color],
-         Points.data[color], Points.npoints[color],
-         CoordModeOrigin);
-       XDrawPoints(dpy, pixmap, Data_GC[color],
-         Points.data[color], Points.npoints[color],
-         CoordModeOrigin);
-       Points.npoints[color] = 0;
-    }
-}
-
-static void
-print_help(void)
-{
-    printf("During run-time, interactive control can be exerted via : \n");
-    printf("Mouse buttons allow rubber-banding of a zoom box\n");
-    printf("< halves the 'dwell', > doubles the 'dwell'\n");
-    printf("[ halves the 'settle', ] doubles the 'settle'\n");
-    printf("D flushes the drawing buffer\n");
-    printf("e or E recalculates color indices\n");
-    printf("f or F saves exponents to a file\n");
-    printf("h or H or ? displays this message\n");
-    printf("i decrements, I increments the stripe interval\n");
-    printf("KJMN increase/decrease minimum negative exponent\n");
-    printf("m increments the map index, changing maps\n");
-    printf("p or P reverses the colormap for negative/positive exponents\n");
-    printf("r redraws without recalculating\n");
-    printf("R redraws, recalculating with new dwell and settle values\n");
-    printf("s or S spins the colorwheel\n");
-    printf("u pops back up to the last zoom\n");
-    printf("U pops back up to the first picture\n");
-    printf("v or V displays the values of various settings\n");
-    printf("w decrements, W increments the color wheel index\n");
-    printf("x or X clears the window\n");
-    printf("q or Q exits\n");
-}
-
-static void
-print_values(void)
-{
-    static int i;
-
-    printf("\nminlyap=%f minexp=%f maxexp=%f\n",minlyap,minexp,maxexp);
-    printf("width=%d height=%d\n",width,height);
-    printf("settle=%d  dwell=%d start_x=%f\n",settle,dwell, start_x);
-    printf("min_a=%f  a_rng=%f max_a=%f\n",min_a,a_range,max_a);
-    printf("min_b=%f  b_rng=%f max_b=%f\n",min_b,b_range,max_b);
-    if (Rflag)
-  printf("pseudo-random forcing\n");
-    else if (force) {
-  printf("periodic forcing=");
-  for (i=0;i<maxindex;i++)
-    printf("%d",forcing[i]);
-  printf("\n");
-    }
-    else
-  printf("periodic forcing=01\n");
-    if (Force) {
-  printf("function forcing=");
-  for (i=0;i<funcmaxindex;i++) {
-    printf("%d",Forcing[i]);
-  }
-  printf("\n");
-    }
-    printf("numcolors=%d\n",numcolors-1);
-}
-
-static void
-freemem(void)
-{
-  static int i;
-
-       for (i=0;i<MAXFRAMES;i++)
-               free(exponents[i]);
-}
-
-static void
-setupmem(void)
-{
-  static int i;
-
-       for (i=0;i<MAXFRAMES;i++) {
-               if((exponents[i]=
-                   (double *)malloc(sizeof(double)*width*height))==NULL){
-                   fprintf(stderr,"Error malloc'ing exponent array.\n");
-                   exit(-1);
-               }
-       }
-}
-
-static void
-setforcing(void)
-{
-  static int i;
-  for (i=0;i<MAXINDEX;i++)
-    forcing[i] = (random() > prob) ? 0 : 1;
-}
diff --git a/hacks/xlyap.man b/hacks/xlyap.man
deleted file mode 100644 (file)
index 6f69cad..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-.TH XLYAP 6X
-.SH NAME
-xlyap \- display an array of Lyapunov exponents graphically
-.SH SYNOPSIS
-.in +8n
-.ti -8n
-\fIxlyap\fR
-[-BLps][-W width][-H height][-o filename][-a 
-\fIn\fR ]
-[-b 
-\fIn\fR ]
-[-w 
-\fIn\fR ]
-[-h 
-\fIn\fR ]
-[-i xstart]
-[-M 
-\fIn\fR ]
-[-R 
-\fIp\fR ]
-[-S 
-\fIn\fR ]
-[-D 
-\fIn\fR ]
-[-F string][-f string][-r 
-\fIn\fR ]
-[-O 
-\fIn\fR ]
-[-C 
-\fIn\fR ]
-[-c 
-\fIn\fR ]
-[-m 
-\fIn\fR ]
-[-x xpos]
-[-y ypos]
-.in -8n
-.SH DESCRIPTION
-\fIxlyap\fR
-generates and graphically displays an array of Lyapunov exponents for a 
-variety of iterated periodically forced non-linear maps of the unit interval.
-.SH OPTIONS
-.TP 8
--random
-A good choice for use with xscreensaver: picks random parameters from 
-a built-in list.
-.TP 8
--C \fIn\fP
-Specifies the minimum color index to be used for negative exponents
-.TP
--D \fIn\fP
-Specifies the "dwell" or number of iterations over which to average in order
-to calculate the Lyapunov exponent. Default is 400.
-.TP
--B 
-Causes the stop, go, spin and quit buttons to be displayed.
-.TP
--H \fIn\fP
-Specifies the height of the window. Default is 256.
-.TP
--L 
-Indicates use log(x) + log(y) rather than log(xy).
-.TP
--M \fIr\fP
-Specifies the real value to compare exponent values to for indexing into
-a color wheel. The default value is 1.0.
-.TP
--O \fIn\fP
-Specifies the minimum color index to be used for positive exponents
-.TP
--R \fIp\fP
-Specifies pseudo-random forcing with probability \fIp\fP of using parameter
-value 'a'.
-.TP
--S \fIn\fP
-Specifies the "settle" or number of iterations prior to the beginning of
-the calculation of the Lyapunov exponent. Default is 200.
-.TP
--W \fIn\fP
-Specifies the width of the window. Default is 256.
-.TP
--a \fIr\fP
-Specifies the real value to use as the minimum parameter value of the 
-horizontal axis. Default is 3.0 for the logistic map.
-.TP
--b \fIn\fP
-Specifies the real value to use as the minimum parameter value of the 
-vertical axis. Default is 3.0 for the logistic map.
-.TP
--c \fIn\fP
-Selects one of six different color wheels to use. The default color
-wheel is a rainbow palette.
-.TP
--F \fI10101010\fP
-Specifies the "Function" forcing function to use. The example above would 
-alternate between iterating the circle and logistic maps. An argument of
-"-F 2323" would alternate between left and right logistic maps. The default
-is to only use the single specified map (see the description of -m).
-.TP
--f \fIabbabaab\fP
-Specifies the forcing function to use. The default is to alternate between
-the "a" parameter and the "b" parameter.
-.TP
--h \fIr\fP
-Specifies the real value to be used as the range over which the vertical
-parameter values vary. The default is 1.0.
-.TP
--i \fIr\fP
-Specifies the real value of the initial condition to use. Default is 0.05.
-.TP
--m \fIn\fP
-Selects between available non-linear maps of the unit interval. A value of
-0 specifies the logistic map. A value of 1, the circle map. A value of 2,
-the left-logistic. A value of 3, the right-logistic. A value of 4, the
-double-logistic. The default is 0, the logistic map.
-.TP
--o \fIfilename\fP
-Specifies the output filename to be used. If the -o option is given, this
-file will automatically be written out at the completion of the drawing.
-If it is not specified, a default filename of lyap.out is used and only
-written if the 'f' or 'F' keys are pressed during a run. The format of the
-output file is PPM for color and PGM for monochrom. The parameters used to
-calculate the picture are included as comments at the beginning of the output
-file.
-.TP
--p
-Switches color indices for negative and positive exponents. Generally,
-causes negative exponents to be displayed in more detail while darkening
-and narrowing the color range for positive exponents. This can be toggled
-during runtime by pressing the 'p' key.
-.TP
--r \fIn\fP
-Specifies the maximum rgb value to be used. Default is 35000.
-.TP
--s \fIn\fP
-Specifies the length of the color wheel spin.
-.TP
--u
-Produces a usage message.
-.TP
--v 
-Prints out the various values to be used and exits.
-.TP
--w \fIr\fP
-Specifies the real value to be used as the range over which the horizontal
-parameter values vary. The default is 1.0.
-.TP
--x \fIn\fP
-Specifies the x screen coordinate of the window (default is 256).
-.TP
--y \fIn\fP
-Specifies the y screen coordinate of the window (default is 256).
-.sp 2
-.SH NOTES
-.sp
-During display, pressing any mouse button allows you to select the area to
-be investigated with the mouse. The upper left hand corner of the desired
-area is the location of the cursor when the button is pressed. The lower
-right hand corner is specified by the cursor when the button is released.
-.sp 2
-Use of the keys 
-\fIbBeEfFkKjJmnrRsSwWxXqQ\fP
-indicates:
-.sp
-.ti 10
-(<) Halve dwell value.
-.ti 10
-(>) Double dwell value.
-.ti 10
-([) Halve settle value.
-.ti 10
-(]) Double settle value.
-.ti 10
-(B or b) Toggle button display on/off
-.ti 10
-(E or e) Recalculate the indices into the color wheel using a different method
-.ti 10
-(F or f) Save current screen to ouput file (not yet implemented)
-.ti 10
-(H or h or ?) Display brief help message
-.ti 10
-(i) Decrement the interval between stripes for the striped color map.
-.ti 10
-(I) Increment the interval between stripes for the striped color map.
-.ti 10
-(K) Decrease value exponents are compared against by 0.05.
-.ti 10
-(J) Increase value exponents are compared against by 0.05.
-.ti 10
-(M) Decrease value exponents are compared against by 0.005.
-.ti 10
-(N) Increase value exponents are compared against by 0.005.
-.ti 10
-(m) Increment the map index, changing the map to be iterated.
-.ti 10
-(P or p) Toggle positive/negative exponent display.
-.ti 10
-(r) Redraw the window using previously calculated exponents.
-.ti 10
-(R) Redraw the window using the newly set dwell and/or settle values.
-.ti 10
-(S) Spin the color wheel
-.ti 10
-(s) Halve the length of the spin and spin the color wheel
-.ti 10
-(u) Go up to the window just prior to the most recent zoom.
-.ti 10
-(U) Go all the way up to the original window.
-.ti 10
-(V or v) Display values of various parameters currently in use
-.ti 10
-(W or w) Use next color map.
-.ti 10
-(X or x) Clear window
-.ti 10
-(Q or q) quit
-.sp 2
-.SH AUTHOR
-.nf
-        Ronald Joe Record
-     The Santa Cruz Operation 
-          P.O. Box 1900
-       Santa Cruz, CA 95061
-            rr@sco.com
-.fi
-.sp 2
-.SH ACKNOWLEDGEMENTS
-.PP
-The algorithm was taken from the September 1991 Scientific American article
-by A. K. Dewdney who gives credit to Mario Markus of the Max Planck Institute
-for its creation. Additional information and ideas were gleaned from the
-discussion on alt.fractals involving Stephen Hall, Ed Kubaitis, Dave Platt
-and Baback Moghaddam. Assistance with colormaps and spinning color wheels
-and X was gleaned from Hiram Clawson. Rubber banding code was adapted from
-an existing Mandelbrot program written by Stacey Campbell.
-
-Viciously hacked for xscreensaver by Jamie Zawinski, 20-Nov-97.
diff --git a/hacks/xmatrix.c b/hacks/xmatrix.c
deleted file mode 100644 (file)
index a6afef8..0000000
+++ /dev/null
@@ -1,438 +0,0 @@
-/* xscreensaver, Copyright (c) 1999 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.
- *
- * Matrix -- simulate the text scrolls from the movie "The Matrix".
- *
- * The movie people distribute their own Windows/Mac screensaver that does
- * a similar thing, so I wrote one for Unix.  However, that version (the
- * Windows/Mac version at http://www.whatisthematrix.com/) doesn't match my
- * memory of what the screens in the movie looked like, so my `xmatrix'
- * does things differently.
- */
-
-#include "screenhack.h"
-#include <stdio.h>
-#include <X11/Xutil.h>
-
-#ifdef HAVE_XPM
-# include <X11/xpm.h>
-# include "images/matrix.xpm"
-#endif
-
-#include "images/matrix.xbm"
-
-#define CHAR_HEIGHT 31
-
-typedef struct {
-  int glyph;
-  Bool changed;
-  int glow;
-} m_cell;
-
-typedef struct {
-  int remaining;
-  int throttle;
-  int y;
-} m_feeder;
-
-typedef struct {
-  Display *dpy;
-  Window window;
-  XWindowAttributes xgwa;
-  GC draw_gc, erase_gc;
-  int grid_width, grid_height;
-  int char_width, char_height;
-  m_cell *cells;
-  m_feeder *feeders;
-  Bool insert_top_p, insert_bottom_p;
-  int density;
-
-  Pixmap images;
-  int image_width, image_height;
-  int nglyphs;
-
-} m_state;
-
-
-static void
-load_images (m_state *state)
-{
-#ifdef HAVE_XPM
-  if (!get_boolean_resource ("mono", "Boolean") &&
-      state->xgwa.depth > 1)
-    {
-      XpmAttributes xpmattrs;
-      int result;
-      xpmattrs.valuemask = 0;
-
-# ifdef XpmCloseness
-      xpmattrs.valuemask |= XpmCloseness;
-      xpmattrs.closeness = 40000;
-# endif
-# ifdef XpmVisual
-      xpmattrs.valuemask |= XpmVisual;
-      xpmattrs.visual = state->xgwa.visual;
-# endif
-# ifdef XpmDepth
-      xpmattrs.valuemask |= XpmDepth;
-      xpmattrs.depth = state->xgwa.depth;
-# endif
-# ifdef XpmColormap
-      xpmattrs.valuemask |= XpmColormap;
-      xpmattrs.colormap = state->xgwa.colormap;
-# endif
-
-      result = XpmCreatePixmapFromData (state->dpy, state->window, matrix,
-                                        &state->images, 0 /* mask */,
-                                        &xpmattrs);
-      if (!state->images || (result != XpmSuccess && result != XpmColorError))
-        state->images = 0;
-
-      state->image_width = xpmattrs.width;
-      state->image_height = xpmattrs.height;
-      state->nglyphs = state->image_height / CHAR_HEIGHT;
-    }
-  else
-#endif /* !HAVE_XPM */
-    {
-      unsigned long fg, bg;
-      state->image_width = matrix_width;
-      state->image_height = matrix_height;
-      state->nglyphs = state->image_height / CHAR_HEIGHT;
-
-      fg = get_pixel_resource("foreground", "Foreground",
-                              state->dpy, state->xgwa.colormap);
-      bg = get_pixel_resource("background", "Background",
-                              state->dpy, state->xgwa.colormap);
-      state->images =
-        XCreatePixmapFromBitmapData (state->dpy, state->window,
-                                     (char *) matrix_bits,
-                                     state->image_width, state->image_height,
-                                     bg, fg, state->xgwa.depth);
-    }
-}
-
-
-static m_state *
-init_matrix (Display *dpy, Window window)
-{
-  XGCValues gcv;
-  char *insert;
-  m_state *state = (m_state *) calloc (sizeof(*state), 1);
-  state->dpy = dpy;
-  state->window = window;
-
-  XGetWindowAttributes (dpy, window, &state->xgwa);
-  load_images (state);
-
-  gcv.foreground = get_pixel_resource("foreground", "Foreground",
-                                      state->dpy, state->xgwa.colormap);
-  gcv.background = get_pixel_resource("background", "Background",
-                                      state->dpy, state->xgwa.colormap);
-  state->draw_gc = XCreateGC (state->dpy, state->window,
-                              GCForeground|GCBackground, &gcv);
-  gcv.foreground = gcv.background;
-  state->erase_gc = XCreateGC (state->dpy, state->window,
-                               GCForeground|GCBackground, &gcv);
-
-  state->char_width = state->image_width / 2;
-  state->char_height = CHAR_HEIGHT;
-
-  state->grid_width  = state->xgwa.width  / state->char_width;
-  state->grid_height = state->xgwa.height / state->char_height;
-  state->grid_width++;
-  state->grid_height++;
-
-  state->cells = (m_cell *)
-    calloc (sizeof(m_cell), state->grid_width * state->grid_height);
-  state->feeders = (m_feeder *) calloc (sizeof(m_feeder), state->grid_width);
-
-  state->density = get_integer_resource ("density", "Integer");
-
-  insert = get_string_resource("insert", "Insert");
-  if (insert && !strcmp(insert, "top"))
-    {
-      state->insert_top_p = True;
-      state->insert_bottom_p = False;
-    }
-  else if (insert && !strcmp(insert, "bottom"))
-    {
-      state->insert_top_p = False;
-      state->insert_bottom_p = True;
-    }
-  else if (insert && !strcmp(insert, "both"))
-    {
-      state->insert_top_p = True;
-      state->insert_bottom_p = True;
-    }
-  else
-    {
-      if (insert && *insert)
-        fprintf (stderr,
-                 "%s: `insert' must be `top', `bottom', or `both', not \%s'\n",
-                 progname, insert);
-      state->insert_top_p = False;
-      state->insert_bottom_p = True;
-    }
-
-  if (insert)
-    free (insert);
-
-  return state;
-}
-
-
-static void
-insert_glyph (m_state *state, int glyph, int x, int y)
-{
-  Bool bottom_feeder_p = (y >= 0);
-  m_cell *from, *to;
-
-  if (y >= state->grid_height)
-    return;
-
-  if (bottom_feeder_p)
-    {
-      to = &state->cells[state->grid_width * y + x];
-    }
-  else
-    {
-      for (y = state->grid_height-1; y > 0; y--)
-        {
-          from = &state->cells[state->grid_width * (y-1) + x];
-          to   = &state->cells[state->grid_width * y     + x];
-          *to = *from;
-          to->changed = True;
-        }
-      to = &state->cells[x];
-    }
-
-  to->glyph = glyph;
-  to->changed = True;
-
-  if (!to->glyph)
-    ;
-  else if (bottom_feeder_p)
-    to->glow = 1 + (random() % 2);
-  else
-    to->glow = 0;
-}
-
-
-static void
-feed_matrix (m_state *state)
-{
-  int x;
-
-  /* Update according to current feeders. */
-  for (x = 0; x < state->grid_width; x++)
-    {
-      m_feeder *f = &state->feeders[x];
-
-      if (f->throttle)         /* this is a delay tick, synced to frame. */
-        {
-          f->throttle--;
-        }
-      else if (f->remaining > 0)       /* how many items are in the pipe */
-        {
-          int g = (random() % state->nglyphs) + 1;
-          insert_glyph (state, g, x, f->y);
-          f->remaining--;
-          if (f->y >= 0)  /* bottom_feeder_p */
-            f->y++;
-        }
-      else                             /* if pipe is empty, insert spaces */
-        {
-          insert_glyph (state, 0, x, f->y);
-          if (f->y >= 0)  /* bottom_feeder_p */
-            f->y++;
-        }
-
-      if ((random() % 10) == 0)                /* randomly change throttle speed */
-        {
-          f->throttle = ((random() % 5) + (random() % 5));
-        }
-    }
-}
-
-static int
-densitizer (m_state *state)
-{
-  /* Horrid kludge that converts percentages (density of screen coverage)
-     to the parameter that actually controls this.  I got this mapping
-     empirically, on a 1024x768 screen.  Sue me. */
-  if      (state->density < 10) return 85;
-  else if (state->density < 15) return 60;
-  else if (state->density < 20) return 45;
-  else if (state->density < 25) return 25;
-  else if (state->density < 30) return 20;
-  else if (state->density < 35) return 15;
-  else if (state->density < 45) return 10;
-  else if (state->density < 50) return 8;
-  else if (state->density < 55) return 7;
-  else if (state->density < 65) return 5;
-  else if (state->density < 80) return 3;
-  else if (state->density < 90) return 2;
-  else return 1;
-}
-
-
-static void
-hack_matrix (m_state *state)
-{
-  int x;
-
-  /* Glow some characters. */
-  if (!state->insert_bottom_p)
-    {
-      int i = random() % (state->grid_width / 2);
-      while (--i > 0)
-        {
-          int x = random() % state->grid_width;
-          int y = random() % state->grid_height;
-          m_cell *cell = &state->cells[state->grid_width * y + x];
-          if (cell->glyph && cell->glow == 0)
-            {
-              cell->glow = random() % 10;
-              cell->changed = True;
-            }
-        }
-    }
-
-  /* Change some of the feeders. */
-  for (x = 0; x < state->grid_width; x++)
-    {
-      m_feeder *f = &state->feeders[x];
-      Bool bottom_feeder_p;
-
-      if (f->remaining > 0)    /* never change if pipe isn't empty */
-        continue;
-
-      if ((random() % densitizer(state)) != 0) /* then change N% of the time */
-        continue;
-
-      f->remaining = 3 + (random() % state->grid_height);
-      f->throttle = ((random() % 5) + (random() % 5));
-
-      if ((random() % 4) != 0)
-        f->remaining = 0;
-
-      if (state->insert_top_p && state->insert_bottom_p)
-        bottom_feeder_p = (random() & 1);
-      else
-        bottom_feeder_p = state->insert_bottom_p;
-
-      if (bottom_feeder_p)
-        f->y = random() % (state->grid_height / 2);
-      else
-        f->y = -1;
-    }
-}
-
-
-static void
-draw_matrix (m_state *state)
-{
-  int x, y;
-  int count = 0;
-
-  feed_matrix (state);
-  hack_matrix (state);
-
-  for (y = 0; y < state->grid_height; y++)
-    for (x = 0; x < state->grid_width; x++)
-      {
-        m_cell *cell = &state->cells[state->grid_width * y + x];
-
-        if (cell->glyph)
-          count++;
-
-        if (!cell->changed)
-          continue;
-
-        if (cell->glyph == 0)
-          XFillRectangle (state->dpy, state->window, state->erase_gc,
-                          x * state->char_width,
-                          y * state->char_height,
-                          state->char_width,
-                          state->char_height);
-        else
-          XCopyArea (state->dpy, state->images, state->window, state->draw_gc,
-                     (cell->glow ? state->char_width : 0),
-                     (cell->glyph - 1) * state->char_height,
-                     state->char_width, state->char_height,
-                     x * state->char_width,
-                     y * state->char_height);
-
-        cell->changed = False;
-
-        if (cell->glow > 0)
-          {
-            cell->glow--;
-            cell->changed = True;
-          }
-      }
-
-#if 0
-  {
-    static int i = 0;
-    static int ndens = 0;
-    static int tdens = 0;
-    i++;
-    if (i > 50)
-      {
-        int dens = (100.0 *
-                    (((double)count) /
-                     ((double) (state->grid_width * state->grid_height))));
-        tdens += dens;
-        ndens++;
-        printf ("density: %d%% (%d%%)\n", dens, (tdens / ndens));
-        i = 0;
-      }
-  }
-#endif
-
-}
-
-\f
-char *progclass = "XMatrix";
-
-char *defaults [] = {
-  ".background:                   black",
-  ".foreground:                   green",
-  "*delay:                10000",
-  "*insert:               both",
-  "*density:              75",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
-  { "-top",            ".insert",              XrmoptionNoArg, "top" },
-  { "-bottom",         ".insert",              XrmoptionNoArg, "bottom" },
-  { "-both",           ".insert",              XrmoptionNoArg, "both" },
-  { "-density",                ".density",             XrmoptionSepArg, 0 },
-  { 0, 0, 0, 0 }
-};
-
-
-void
-screenhack (Display *dpy, Window window)
-{
-  m_state *state = init_matrix (dpy, window);
-  int delay = get_integer_resource ("delay", "Integer");
-  while (1)
-    {
-      draw_matrix (state);
-      XSync (dpy, False);
-      screenhack_handle_events (dpy);
-      if (delay) usleep (delay);
-    }
-}
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.
diff --git a/hacks/xscreensaver-sgigl.c b/hacks/xscreensaver-sgigl.c
deleted file mode 100644 (file)
index a424778..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/* xscreensaver, Copyright (c) 1997 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 is a kludge that lets xscreensaver work with SGI demos that expect
-   to be run from `haven'.  It runs the program given on the command line,
-   then waits for an X window to be created whose name is that of the 
-   program.  Then, it resizes that window to fill the screen.  Run it
-   like this:
-
-       xscreensaver-sgigl /usr/demos/bin/ep -S
-       xscreensaver-sgigl -n ant /usr/demos/General_Demos/ant/RUN
-       xscreensaver-sgigl -n atlantis /usr/demos/General_Demos/atlantis/RUN
-       xscreensaver-sgigl -n /usr/demos/General_Demos/powerflip/powerflip \
-          /usr/demos/General_Demos/powerflip/RUN
-
-   Except that doesn't really work.  You have to do this instead:
-
-       xscreensaver-sgigl -n ant ant.sh
-
-   where ant.sh contains
-
-       #!/bin/sh
-       cd /usr/demos/General_Demos/ant
-       exec ./ant -S
-
-   There's no way to make this work with powerflip at all, since it doesn't
-   take a -S option to run in the foreground.
- */
-
-/* #### Another way to do this would be:
-   instead of exec'ing the hack, fork it; then wait for that fork to die.
-   If it dies, but the window ID is still valid, then that means the 
-   sub-process has forked itself (as those fuckwits at SGI are wont to do.)
-   In that case, this process should go to sleep, and set up a signal handler
-   that will destroy the X window when it is killed.  That way, the caller
-   is given a foreground pid which, when killed, will cause the hack to die
-   (by a roundabout mechanism.)
-
-   This would all be so much simpler if those assholes would just:
-
-   1: get out of the habit of writing programs that magically background
-      themselves, and
-
-   2: give the fucking programs arguments which control the window size
-      instead of always making 100x100 windows!
-
-   I won't even dream of having a "-root" option that understood virtual-roots;
-   that would just be too outlandish to even dream about.
- */
-
-static char *progname;
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <signal.h>
-#include <sys/time.h>
-#include <X11/Xlib.h>
-#include <X11/Xmu/Error.h>
-
-#include "vroot.h"
-#undef RootWindowOfScreen
-#undef RootWindow
-#undef DefaultRootWindow
-
-
-static int
-BadWindow_ehandler (Display *dpy, XErrorEvent *error)
-{
-  if (error->error_code == BadWindow ||
-      error->error_code == BadMatch ||
-      error->error_code == BadDrawable)
-    return 0;
-  else
-    {
-      fprintf (stderr, "\nX error in %s:\n", progname);
-      if (XmuPrintDefaultErrorMessage (dpy, error, stderr))
-       exit(1);
-      else
-       fprintf (stderr, " (nonfatal.)\n");
-    }
-  return 0;
-}
-
-
-void
-main(int ac, char **av)
-{
-  char buf [512];
-  pid_t parent, forked;
-  Display *dpy;
-  Screen *screen;
-  char *s;
-  char *n1 = 0;
-  char *n2 = 0;
-  Bool verbose = False;
-  Window root, vroot;
-
-  progname = av[0];
-
-  s = strrchr(progname, '/');
-  if (s) progname = s+1;
-
-  if (ac < 1)
-    {
-      fprintf(stderr,
-             "usage: %s [ -v ] [ -n window-name ] program arguments...\n",
-             progname);
-      exit(1);
-    }
-
-  if (ac > 2 && !strcmp(av[1], "-v"))
-    {
-      verbose = True;
-      av++;
-      ac--;
-    }
-
-  if (ac > 2 && !strcmp(av[1], "-n"))
-    {
-      n2 = av[2];
-      av += 2;
-      ac -= 2;
-    }
-
-  n1 = strrchr(av[1], '/');
-  if (n1) n1++;
-  else n1 = av[1];
-
-
-  dpy = XOpenDisplay(0);
-  if (!dpy)
-    {
-      fprintf(stderr, "%s: couldn't open display\n", progname);
-      exit(1);
-    }
-
-  screen = DefaultScreenOfDisplay(dpy);
-  root   = XRootWindowOfScreen (screen);
-  vroot  = VirtualRootWindowOfScreen (screen);
-
-  XSelectInput (dpy, root, SubstructureNotifyMask);
-  if (root != vroot)
-    XSelectInput (dpy, vroot, SubstructureNotifyMask);
-
-  XSetErrorHandler (BadWindow_ehandler);
-
-  if (verbose)
-    fprintf(stderr, "%s: selected SubstructureNotifyMask on 0x%x / 0x%x\n",
-           progname, root, vroot);
-
-  parent = getpid();
-
-  if (verbose)
-    fprintf(stderr, "%s: pid is %d\n", progname, parent);
-
-  switch ((int) (forked = fork ()))
-    {
-    case -1:
-      {
-       sprintf (buf, "%s: couldn't fork", progname);
-       perror (buf);
-       exit (1);
-       break;
-      }
-    case 0:    /* forked */
-      {
-       time_t start = time((time_t) 0);
-       XEvent event;
-
-       if (verbose)
-         fprintf(stderr, "%s: forked pid is %d\n", progname, getpid());
-
-       while (1)
-         {
-           XNextEvent(dpy, &event);
-
-           if (event.xany.type == CreateNotify)
-             {
-               char *name = 0;
-               Window w = event.xcreatewindow.window;
-               XSync(dpy, False);
-
-               XFetchName(dpy, w, &name);
-               if (!name)
-                 {
-                   /* Try again to see if the name has been set later... */
-                   XSync(dpy, False);
-                   sleep(1);
-                   XFetchName(dpy, w, &name);
-                 }
-
-               if (name &&
-                   ((n1 && !strcmp(name, n1)) ||
-                    (n2 && !strcmp(name, n2))))
-                 {
-                   if (verbose)
-                     fprintf(stderr, "%s: resizing 0x%x\n", progname, w);
-
-                   XMoveResizeWindow(dpy, w, 0, 0,
-                                     WidthOfScreen(screen),
-                                     HeightOfScreen(screen));
-
-#if 0
-                   if (vroot && vroot != root &&
-                       event.xcreatewindow.parent == root)
-                     {
-                       if (verbose)
-                         fprintf(stderr,
-                                 "%s: reparenting 0x%x from 0x%x to 0x%x\n",
-                                 progname, w, root, vroot);
-                       XReparentWindow(dpy, w, vroot, 0, 0);
-                     }
-#endif
-
-                   XSync(dpy, False);
-                   fflush(stdout);
-                   fflush(stderr);
-                   exit(0);    /* Note that this only exits a child fork.  */
-                 }
-             }
-
-           if (start + 5 < time((time_t) 0))
-             {
-               fprintf(stderr,
-                   "%s: timed out: no window named \"%s\" has been created\n",
-                       progname, (n2 ? n2 : n1));
-               fflush(stdout);
-               fflush(stderr);
-               kill(parent, SIGTERM);
-               exit(1);
-             }
-         }
-       break;
-      }
-    default:   /* foreground */
-      {
-       close (ConnectionNumber (dpy));         /* close display fd */
-       execvp (av[1], av+1);                   /* shouldn't return. */
-       sprintf (buf, "%s: execvp(\"%s\") failed", progname, av[1]);
-       perror (buf);
-       fflush(stderr);
-       fflush(stdout);
-       exit (1);
-       break;
-      }
-    }
-}
diff --git a/install-sh b/install-sh
deleted file mode 100755 (executable)
index ebc6691..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# 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, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission.  M.I.T. makes no representations about the
-# suitability of this software for any purpose.  It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-       -c) instcmd="$cpprog"
-           shift
-           continue;;
-
-       -d) dir_arg=true
-           shift
-           continue;;
-
-       -m) chmodcmd="$chmodprog $2"
-           shift
-           shift
-           continue;;
-
-       -o) chowncmd="$chownprog $2"
-           shift
-           shift
-           continue;;
-
-       -g) chgrpcmd="$chgrpprog $2"
-           shift
-           shift
-           continue;;
-
-       -s) stripcmd="$stripprog"
-           shift
-           continue;;
-
-       -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-           shift
-           continue;;
-
-       -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-           shift
-           continue;;
-
-       *)  if [ x"$src" = x ]
-           then
-               src=$1
-           else
-               # this colon is to work around a 386BSD /bin/sh bug
-               :
-               dst=$1
-           fi
-           shift
-           continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-       echo "install:  no input file specified"
-       exit 1
-else
-       true
-fi
-
-if [ x"$dir_arg" != x ]; then
-       dst=$src
-       src=""
-       
-       if [ -d $dst ]; then
-               instcmd=:
-       else
-               instcmd=mkdir
-       fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
-
-       if [ -f $src -o -d $src ]
-       then
-               true
-       else
-               echo "install:  $src does not exist"
-               exit 1
-       fi
-       
-       if [ x"$dst" = x ]
-       then
-               echo "install:  no destination specified"
-               exit 1
-       else
-               true
-       fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-       if [ -d $dst ]
-       then
-               dst="$dst"/`basename $src`
-       else
-               true
-       fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='   
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
-       pathcomp="${pathcomp}${1}"
-       shift
-
-       if [ ! -d "${pathcomp}" ] ;
-        then
-               $mkdirprog "${pathcomp}"
-       else
-               true
-       fi
-
-       pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-       $doit $instcmd $dst &&
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-       if [ x"$transformarg" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               dstfile=`basename $dst $transformbasename | 
-                       sed $transformarg`$transformbasename
-       fi
-
-# don't allow the sed command to completely eliminate the filename
-
-       if [ x"$dstfile" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               true
-       fi
-
-# Make a temp file name in the proper directory.
-
-       dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-       $doit $instcmd $src $dsttmp &&
-
-       trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-       $doit $rmcmd -f $dstdir/$dstfile &&
-       $doit $mvcmd $dsttmp $dstdir/$dstfile 
-
-fi &&
-
-
-exit 0
diff --git a/lib/X11/app-defaults/XScreenSaver b/lib/X11/app-defaults/XScreenSaver
new file mode 100644 (file)
index 0000000..976ef17
--- /dev/null
@@ -0,0 +1,520 @@
+!
+!                              XScreenSaver
+!
+!            a screen saver and locker for the X window system
+!                            by Jamie Zawinski
+!
+!                              version 3.15
+!                                20-Jun-99
+!
+! See "man xscreensaver" for more info.  The latest version is always
+! available at http://www.jwz.org/xscreensaver/
+
+
+! These resources, when placed in the system-wide app-defaults directory
+! (e.g., /usr/lib/X11/app-defaults/XScreenSaver) will provide the default
+! settings for new users.  However, if you have a ".xscreensaver" file in
+! your home directory, the settings in that file take precedence.
+
+
+*timeout:              10
+*cycle:                        10
+*lockTimeout:          0
+*passwdTimeout:                30
+*nice:                 10
+*lock:                 True
+*lockVTs:              True
+*verbose:              False
+*timestamp:            False
+*fade:                 True
+*unfade:               False
+*fadeSeconds:          3
+*fadeTicks:            20
+*splash:               True
+*splashDuration:       5
+*visualID:             default
+
+*captureStderr:        True
+*overlayTextForeground:        #FFFF00
+*overlayTextBackground:        #000000
+*overlayStderr:                True
+*font:                 *-medium-r-*-140-*-m-*
+
+! The default is to use these extensions if available (as noted.)
+*sgiSaverExtension:    True
+*mitSaverExtension:    False
+*xidleExtension:       True
+*procInterrupts:       True
+
+! This is what the "Demo" button on the splash screen runs (/bin/sh syntax.)
+*demoCommand: xscreensaver-demo
+
+! This is what the "Prefs" button on the splash screen runs (/bin/sh syntax.)
+*prefsCommand: xscreensaver-demo -prefs
+
+! This is the URL that the "Help" button on the splash screen loads.
+*helpURL: http://www.jwz.org/xscreensaver/man.html
+
+! This is how the "Help" button loads URLs (/bin/sh syntax.)
+! The "helpURL" will be substituted for up to two occurrences of "%s".
+*loadURL: netscape -remote 'openURL(%s)' || netscape '%s'
+
+
+! Turning on "installColormap" interacts erratically with twm and tvtwm,
+! but seems to work fine with mwm and olwm.  Try it and see.  If your
+! screen turns some color other than black, the window manager is buggy,
+! and you need to set this resource to False (or get a WM that works.)
+!
+*installColormap:      True
+
+
+! Any program which can draw on the root window will work as a screensaver.
+! The following resource enumerates them.
+!
+! Programs are separated by newlines (specified in resource files with \n).
+! Lines may be continued with a lone \ at the end of the line.
+!
+! Each line is an `sh' command.
+!
+! If the first (non-blank) character on the line is "-", then that means
+! that this command is disabled: it's still in the list, but it won't ever
+! be used.  (This is just to make it easy to disable and then re-enable 
+! them later.)
+!
+! If the first word on the line is the name of a visual followed by a
+! colon, then that visual will be used for the program, if it is available.
+! If no such visual is available, then the program will be skipped.  In
+! this way, you can specify that you want certain programs to run only
+! on color screens, and others only on mono screens, by making use of the
+! magic visual names "color" and "mono".  Likewise, if some hacks prefer
+! colormaps, but others prefer 24-bit windows, that also can be arranged
+! (in this case, by using "PseudoColor:" versus "TrueColor:".)
+!
+! Some of the screenhacks are written using OpenGL.  OpenGL programs are
+! a bit different than normal X programs, in that they prefer visuals that
+! are *half* as deep as the screen.  You can tell xscreensaver to select a
+! good visual for a GL program by using the magic visual name "GL".
+!
+! All programs must be launched in such a way that they draw on the root
+! window; they should not be spawned in the background with "&".  If shell
+! metacharacters are used, they must be understandable to `sh', not `csh'
+! (the $SHELL variable is not consulted, for unfortunate but good reasons.)
+!
+! Be sure to check out Demo Mode: run the `xscreensaver-demo' program to
+! edit the current list of programs interactively, try out the various modes,
+! and change other parameters.  See the man page for details.
+!
+*programs:     qix -root -solid -delay 0 -segments 100                 \n\
+               qix -root -count 4 -solid -transparent                  \n\
+               qix -root -count 5 -solid -transparent -linear            \
+                       -segments 250 -size 100                         \n\
+               attraction -root -mode balls                            \n\
+               attraction -root -mode lines -points 3 -segments 200    \n\
+               attraction -root -mode splines -segments 300            \n\
+               attraction -root -mode lines -radius 300                  \
+                       -orbit -vmult 0.5                               \n\
+               pyro -root                                              \n\
+               helix -root                                             \n\
+               pedal -root                                             \n\
+               rorschach -root -offset 7                               \n\
+               hopalong -root                                          \n\
+               greynetic -root                                         \n\
+               xroger -root                                            \n\
+               imsmap -root                                            \n\
+               slidescreen -root                                       \n\
+               decayscreen -root                                       \n\
+               jigsaw -root                                            \n\
+               blitspin -root -grab                                    \n\
+               slip -root                                              \n\
+               distort -root                                           \n\
+               spotlight -root                                         \n\
+               hypercube -root                                         \n\
+               halo -root                                              \n\
+               maze -root                                              \n\
+               noseguy -root                                           \n\
+               flame -root                                             \n\
+               lmorph -root                                            \n\
+               deco -root                                              \n\
+               moire -root                                             \n\
+               moire2 -root                                            \n\
+               lightning -root                                         \n\
+               strange -root                                           \n\
+               spiral -root                                            \n\
+               laser -root                                             \n\
+               grav -root                                              \n\
+               grav -root -trail -decay                                \n\
+               drift -root                                             \n\
+               ifs -root                                               \n\
+               xjulia -root                                            \n\
+               penrose -root                                           \n\
+               sierpinski -root                                        \n\
+               braid -root                                             \n\
+               galaxy -root                                            \n\
+               bouboule -root                                          \n\
+               swirl -root                                             \n\
+               flag -root                                              \n\
+               sphere -root                                            \n\
+               forest -root                                            \n\
+               lisa -root                                              \n\
+               lissie -root                                            \n\
+               goop -root                                              \n\
+               starfish -root                                          \n\
+               starfish -root -blob                                    \n\
+               munch -root                                             \n\
+               fadeplot -root                                          \n\
+               xcoral -root                                            \n\
+               mountain -root                                          \n\
+               triangle -root                                          \n\
+               worm -root                                              \n\
+               rotor -root                                             \n\
+               ant -root                                               \n\
+               demon -root                                             \n\
+               loop -root                                              \n\
+               vines -root                                             \n\
+               kaleidescope -root                                      \n\
+               xjack -root                                             \n\
+  -            xlyap -root -randomize                                  \n\
+               cynosure -root                                          \n\
+               flow -root                                              \n\
+               epicycle -root                                          \n\
+               interference -root                                      \n\
+               truchet -root -randomize                                \n\
+               bsod -root                                              \n\
+               crystal -root                                           \n\
+               discrete -root                                          \n\
+               kumppa -root                                            \n\
+               rd-bomb -root                                           \n\
+               rd-bomb -root -speed 1 -size 0.1                        \n\
+               sonar -root                                             \n\
+               t3d -root                                               \n\
+               penetrate -root                                         \n\
+               deluxe -root                                            \n\
+               compass -root                                           \n\
+               squiral -root                                           \n\
+               xflame -root                                            \n\
+               wander -root                                            \n\
+               wander -root -advance 0 -size 10 -circles True            \
+                 -length 10000 -reset 100000                           \n\
+               critical -root                                          \n\
+               phosphor -root                                          \n\
+               xmatrix -root                                           \n\
+               petri -root -size 1 -count 20                           \n\
+               petri -root -minlifespeed 0.02 -maxlifespeed 0.03         \
+                  -minlifespan 1 -maxlifespan 1 -instantdeathchan 0      \
+                  -minorchan 0 -anychan 0.3                            \n\
+               shadebobs -root                                         \n\
+    default-n:  webcollage -root                                       \n\
+ -  default-n  webcollage -root -filter 'vidwhacker -stdin -stdout'    \n\
+ -  default-n  vidwhacker -root                                        \n\
+                                                                         \
+        mono:  rocks -root                                             \n\
+       color:  rocks -root -fg darksalmon                              \n\
+                                                                         \
+        mono:  qix -root -linear -count 5 -size 200 -spread 30           \
+                       -segments 75 -solid -xor                        \n\
+                                                                         \
+       color:  attraction -root -mode polygons                         \n\
+       color:  attraction -root -mode filled-splines -segments 0       \n\
+       color:  attraction -root -glow -points 10                       \n\
+       color:  bubbles -root                                           \n\
+                                                                         \
+          GL:  gears -root                                             \n\
+          GL:  superquadrics -root                                     \n\
+          GL:  morph3d -root                                           \n\
+          GL:  cage -root                                              \n\
+          GL:  moebius -root                                           \n\
+          GL:  stairs -root                                            \n\
+          GL:  pipes -root                                             \n\
+          GL:  sproingies -root                                        \n\
+          GL:  rubik -root                                             \n\
+          GL:  atlantis -root                                          \n\
+          GL:  lament -root                                            \n\
+          GL:  bubble3d -root                                          \n\
+          GL:  glplanet -root                                          \n\
+          GL:  pulsar -root                                            \n\
+  -       GL:  pulsar -root -texture -mipmap -texture_quality            \
+                      -light -fog                                      \n
+
+! Some other programs that you might want to track down (these work as
+! XScreenSaver helpers, but are not distributed with it):
+!
+!              xdaliclock -root -builtin2                              \n\
+!              xswarm -r 2>&-                                          \n\
+!              xwave -root                                             \n\
+!              xbouncebits ...                                         \n\
+!              ico -r -faces -sleep 1 -obj ico                         \n\
+!              xsplinefun                                              \n\
+!              xmountains -b -M                                        \n\
+!      color:  xfishtank -c black -d -r 2                              \n\
+!
+! xtacy is ok, but it only works on the default visual.  We can satisfy
+! that constraint like so:
+!
+!     default: xtacy -root -delay 100 -funky -number 3                 \n\
+!     default: xtacy -root -delay 100 -gravity                         \n\
+!     default: xtacy -root -delay 100 -mixer                           \n\
+!     default: xtacy -root -delay 100 -taffy -pal 4                    \n\
+! 
+! To display a randomized slideshow of images, you can do something like this:
+!
+!     default-n:  xv -root -rmode 5 -random -viewonly -wloop              \
+!                    -wait 30 $HOME/bitmaps/*.jpg                       \n\
+!
+! Note that we've used "default-n" as the visual name, rather than just
+! "default": this means "default visual, no install", that is, it's like
+! specifying the command-line arguments "-visual default -no-install".
+! This is necessary because, when XV is running in "-root" mode, it always
+! assumes that the default visual and colormap are being used, rather than 
+! examining the window it is drawing on to see what visual and colormap it
+! has.  If we didn't force the default visual to be used, xv would get an
+! X error.  If we didn't force the default colormap to be installed, the
+! colors would be all wrong.  "default-i" may also be used as a visual name
+! (meaning, "-visual default -install") but you probably won't ever need
+! to use that.
+!
+! XEarth is nice, too:
+!
+!     default-n: xearth -nostars -wait 0 -timewarp 400 -pos sunrel/38/-30
+!
+!
+! Some of the GL demos that SGI ships work with XScreenSaver; most don't.
+! XScreenSaver includes a program (not built or installed by default)
+! called "xscreensaver-sgigl".  To use the SGI demos with XScreenSaver,
+! build that program, and use it to launch the SGI demos.  For example,
+! on Irix 6.2, you can do this:
+!
+!     xscreensaver-sgigl /usr/demos/bin/ep -S
+!     xscreensaver-sgigl /usr/demos/bin/bongo
+!
+! On Irix 6.3, things have moved, so you need to do it like this:
+!
+!     xscreensaver-sgigl /usr/sbin/ep -S
+!
+! 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.
+!
+!
+! Also, since these actually end up mapping their own windows instead of
+! drawing on the XScreenSaver-provided root, when they are being run from
+! demo-mode, you can't pop up the demo-mode dialog just by clicking the
+! mouse: you must first type ESC to make the SGI programs exit.  This sucks.
+! Things should work properly when they are being run by xscreensaver in
+! non-demo-mode, however.
+!
+! Basically, the SGI demo writers went out of their way to make my life hell.
+
+
+
+!=============================================================================
+!
+!      You probably don't want to change anything after this point.
+!
+!=============================================================================
+
+
+XScreenSaver.pointerPollTime:          5
+XScreenSaver.initialDelay:             0
+XScreenSaver.windowCreationTimeout:    30
+XScreenSaver.bourneShell:              /bin/sh
+
+
+! Resources for the password and splash-screen dialog boxes of
+! the "xscreensaver" daemon.
+!
+*Dialog.headingFont:           *-times-bold-r-*-*-*-180-*-*-*-iso8859-1
+*Dialog.bodyFont:              *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
+*Dialog.labelFont:             *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
+*Dialog.buttonFont:            *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
+*Dialog.foreground:            #000000
+*Dialog.background:            #BFBFBF
+*Dialog.Button.foreground:     #000000
+*Dialog.Button.background:     #D0D0D0
+*Dialog.text.foreground:       #000000
+*Dialog.text.background:       #FFFFFF
+*Dialog.logo.foreground:       #FF0000
+*Dialog.logo.background:       #FFFFFF
+*Dialog.topShadowColor:                #E7E7E7
+*Dialog.bottomShadowColor:     #737373
+*Dialog.logo.width:            200
+*Dialog.logo.height:           200
+*Dialog.internalBorderWidth:   30
+*Dialog.borderWidth:           1
+*Dialog.shadowThickness:       4
+
+*passwd.heading.label:         XScreenSaver %s
+*passwd.body.label:            This display is locked.
+*passwd.user.label:            User:
+*passwd.passwd.label:          Password:
+*passwd.passwdFont:            *-courier-medium-r-*-*-*-140-*-*-*-iso8859-1
+*passwd.thermometer.width:     8
+
+*splash.heading.label:         XScreenSaver %s
+*splash.body.label:            Copyright Â© 1991-1999 by
+*splash.body2.label:           Jamie Zawinski <jwz@jwz.org>
+*splash.demo.label:            Demo
+*splash.prefs.label:           Prefs
+*splash.help.label:            Help
+
+
+! Resources for the Motif dialog boxes of the "xscreensaver-demo" program.
+! 
+*fontList:                       *-helvetica-medium-r-*-*-*-120-*-*-*-iso8859-1
+*demoDialog*label1.fontList:     *-helvetica-medium-r-*-*-*-140-*-*-*-iso8859-1
+*XmTextField.fontList:             *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1
+*label0.fontList:                  *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
+XScreenSaver*XmList.fontList:      *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1
+! Need to fully-qualify the preceeding in the case of of *sgiMode.
+
+*XmDialogShell*foreground:             #000000
+*XmDialogShell*background:             #E5E5E5
+*XmDialogShell*XmTextField.foreground: #000000
+*XmDialogShell*XmTextField.background: #FFFFFF
+*XmDialogShell*demoList.foreground:    #000000
+*XmDialogShell*demoList.background:    #FFFFFF
+
+*XmDialogShell.title:          XScreenSaver
+*versionWarning_popup.title:   XScreenSaver Warning
+*demoForm_popup.title:         XScreenSaver Demo
+*preferencesForm_popup.title:  XScreenSaver Preferences
+*allowShellResize:             True
+*autoUnmanage:                 False
+
+! This doesn't work.  Motif ignores it if there is a scroll-list!
+*demoDialog.maxWidth:          600
+
+*label1.labelString:           XScreenSaver %s
+*label1.label:                 XScreenSaver %s
+*label2.labelString: Copyright Â© 1991-1999 by Jamie Zawinski <jwz@jwz.org>
+*label2.label:      Copyright Â© 1991-1999 by Jamie Zawinski <jwz@jwz.org>
+*demoList.visibleItemCount:    10
+*demoList.automaticSelection:  True
+*next.labelString:             Run Next
+*prev.labelString:             Run Previous
+*edit.labelString:             Preferences
+*restart.labelString:          Reinitialize
+*done.labelString:             Quit
+
+*preferencesLabel.labelString: XScreenSaver Parameters
+
+*timeoutLabel.labelString:     Saver Timeout
+*cycleLabel.labelString:       Cycle Timeout
+*fadeSecondsLabel.labelString: Fade Duration
+*fadeTicksLabel.labelString:   Fade Ticks
+*lockLabel.labelString:                Lock Timeout
+*passwdLabel.labelString:      Password Timeout
+*preferencesForm*XmTextField.columns:  8
+
+*verboseToggle.labelString:    Verbose
+*cmapToggle.labelString:       Install Colormap
+*fadeToggle.labelString:       Fade Colormap
+*unfadeToggle.labelString:     Unfade Colormap
+*lockToggle.labelString:       Require Password
+*preferencesDone.labelString:  OK
+*preferencesCancel.labelString:        Cancel
+
+
+! Disable Motif drag-and-drop in dialog boxes.  This is kind of pathetic, but
+! in some older versions of Motif, most any attempt to drag cause immediate
+! flaming death from above.  This *should* rip the legs off that bug.
+! (But sadly, Lesstif 0.86 and earlier ignore these resources *and* have
+! buggy drag-and-drop.)
+!
+XScreenSaver*dragInitiatorProtocolStyle: DRAG_NONE
+XScreenSaver*dragReceiverProtocolStyle:  DRAG_NONE
+
+
+
+! Resources for the Athena dialog boxes of the "xscreensaver-demo" program.
+! 
+*demo_dialog.title:            XScreenSaver Demo
+*preferences_dialog.title:     XScreenSaver Preferences
+*warning_dialog.title:         XScreenSaver Warning
+
+! For some reason, it doesn't size correctly by itself.
+*demo_dialog.geometry:         =640x400
+
+*demo_dialog*font:             *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1
+*preferences_dialog*font:      *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1
+*demo_dialog*label1.font:      *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
+*preferences_dialog*label1.font:*-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
+XScreenSaver*warning_dialog*label0.font:       \
+                               *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
+XScreenSaver*warning_dialog*Label.font:        \
+                               *-helvetica-bold-r-*-*-*-120-*-*-*-iso8859-1
+XScreenSaver*warning_dialog*Command.font: \
+                               *-helvetica-bold-r-*-*-*-140-*-*-*-iso8859-1
+XScreenSaver.demo_dialog*List.font:    \
+                               *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1
+XScreenSaver.demo_dialog*Text*font:    \
+                               *-courier-medium-r-*-*-*-120-*-*-*-iso8859-1
+
+XScreenSaver.demo_dialog*foreground:                   #000000
+XScreenSaver.demo_dialog*background:                   #E5E5E5
+XScreenSaver.demo_dialog*List.background:              #FFFFFF
+XScreenSaver.demo_dialog*Scrollbar.background:         #D9D9D9
+XScreenSaver.demo_dialog*Command.background:           #D9D9D9
+XScreenSaver.demo_dialog*Text*background:              #FFFFFF
+
+XScreenSaver.preferences_dialog*foreground:            #000000
+XScreenSaver.preferences_dialog*background:            #E5E5E5
+XScreenSaver.preferences_dialog*Command.background:    #D9D9D9
+XScreenSaver.preferences_dialog*Toggle.background:     #D9D9D9
+XScreenSaver.preferences_dialog*Text*background:       #FFFFFF
+
+XScreenSaver.warning_dialog*foreground:                        #000000
+XScreenSaver.warning_dialog*background:                        #E5E5E5
+XScreenSaver.warning_dialog*Command.background:                #D9D9D9
+
+*preferences_dialog*Dialog.value.translations: #override\n\
+       <Key>Return: beginning-of-line()\n
+
+*demo_dialog*viewport.height:                  200
+*Form.borderWidth:                             0
+*Box.borderWidth:                              0
+*Label.borderWidth:                            0
+*preferences_dialog*Dialog.borderWidth:                0
+
+*demo_dialog*run.label:                                Run
+*demo_dialog*next.label:                       Run Next
+*demo_dialog*prev.label:                       Run Previous
+*demo_dialog*edit.label:                       Preferences
+*demo_dialog*restart.label:                    Reinitialize
+*demo_dialog*done.label:                       Quit
+XScreenSaver.demo_dialog*Command.internalWidth:  10
+XScreenSaver.demo_dialog*Command.internalHeight: 4
+
+*preferences_dialog*timeout.label:             Saver Timeout:
+*preferences_dialog*cycle.label:               Cycle Timeout:
+*preferences_dialog*fade.label:                        Fade Duration:
+*preferences_dialog*ticks.label:               Fade Ticks:
+*preferences_dialog*lockTime.label:            Lock Timeout:
+*preferences_dialog*passwdTime.label:          Password Timeout:
+XScreenSaver.preferences_dialog*Command.internalWidth:  10
+XScreenSaver.preferences_dialog*Command.internalHeight: 4
+
+*preferences_dialog*label1.label:              XScreenSaver Parameters
+*preferences_dialog*buttonbox.verbose.label:   Verbose
+*preferences_dialog*buttonbox.cmap.label:      Install Colormap
+*preferences_dialog*buttonbox.fade.label:      Fade Colormap
+*preferences_dialog*buttonbox.unfade.label:    Unfade Colormap
+*preferences_dialog*buttonbox.lock.label:      Require Password
+*preferences_dialog*done.label:                        Ok
+*preferences_dialog*cancel.label:              Cancel
+
+*warning_dialog*ok.label:                      Ok
+
+*warning_dialog*horizDistance:                 30
+*warning_dialog*vertDistance:                  0
+
+*warning_dialog*Label.internalWidth:           1
+*warning_dialog*Label.internalHeight:          0
+
+*warning_dialog*label0.horizDistance:          80
+*warning_dialog*label0.vertDistance:           20
+
+*warning_dialog*Command.horizDistance:         160
+*warning_dialog*Command.vertDistance:          20
+*warning_dialog*Command.internalWidth:         20
+*warning_dialog*Command.internalHeight:                5
diff --git a/local/bin/ant b/local/bin/ant
new file mode 100755 (executable)
index 0000000..1b9c793
Binary files /dev/null and b/local/bin/ant differ
diff --git a/local/bin/atlantis b/local/bin/atlantis
new file mode 100755 (executable)
index 0000000..7e3d1e1
Binary files /dev/null and b/local/bin/atlantis differ
diff --git a/local/bin/attraction b/local/bin/attraction
new file mode 100755 (executable)
index 0000000..e9afa4a
Binary files /dev/null and b/local/bin/attraction differ
diff --git a/local/bin/blitspin b/local/bin/blitspin
new file mode 100755 (executable)
index 0000000..3ce49f9
Binary files /dev/null and b/local/bin/blitspin differ
diff --git a/local/bin/bouboule b/local/bin/bouboule
new file mode 100755 (executable)
index 0000000..2b485c3
Binary files /dev/null and b/local/bin/bouboule differ
diff --git a/local/bin/braid b/local/bin/braid
new file mode 100755 (executable)
index 0000000..7ac67af
Binary files /dev/null and b/local/bin/braid differ
diff --git a/local/bin/bsod b/local/bin/bsod
new file mode 100755 (executable)
index 0000000..8d16c35
Binary files /dev/null and b/local/bin/bsod differ
diff --git a/local/bin/bubble3d b/local/bin/bubble3d
new file mode 100755 (executable)
index 0000000..a586ef5
Binary files /dev/null and b/local/bin/bubble3d differ
diff --git a/local/bin/bubbles b/local/bin/bubbles
new file mode 100755 (executable)
index 0000000..d1abe79
Binary files /dev/null and b/local/bin/bubbles differ
diff --git a/local/bin/cage b/local/bin/cage
new file mode 100755 (executable)
index 0000000..ae5e861
Binary files /dev/null and b/local/bin/cage differ
diff --git a/local/bin/compass b/local/bin/compass
new file mode 100755 (executable)
index 0000000..252e555
Binary files /dev/null and b/local/bin/compass differ
diff --git a/local/bin/critical b/local/bin/critical
new file mode 100755 (executable)
index 0000000..0f85c43
Binary files /dev/null and b/local/bin/critical differ
diff --git a/local/bin/crystal b/local/bin/crystal
new file mode 100755 (executable)
index 0000000..fa08fb0
Binary files /dev/null and b/local/bin/crystal differ
diff --git a/local/bin/cynosure b/local/bin/cynosure
new file mode 100755 (executable)
index 0000000..4d8821f
Binary files /dev/null and b/local/bin/cynosure differ
diff --git a/local/bin/decayscreen b/local/bin/decayscreen
new file mode 100755 (executable)
index 0000000..9f55935
Binary files /dev/null and b/local/bin/decayscreen differ
diff --git a/local/bin/deco b/local/bin/deco
new file mode 100755 (executable)
index 0000000..87df713
Binary files /dev/null and b/local/bin/deco differ
diff --git a/local/bin/deluxe b/local/bin/deluxe
new file mode 100755 (executable)
index 0000000..1eb5760
Binary files /dev/null and b/local/bin/deluxe differ
diff --git a/local/bin/demon b/local/bin/demon
new file mode 100755 (executable)
index 0000000..5daf571
Binary files /dev/null and b/local/bin/demon differ
diff --git a/local/bin/discrete b/local/bin/discrete
new file mode 100755 (executable)
index 0000000..4a849a1
Binary files /dev/null and b/local/bin/discrete differ
diff --git a/local/bin/distort b/local/bin/distort
new file mode 100755 (executable)
index 0000000..1fe3ad9
Binary files /dev/null and b/local/bin/distort differ
diff --git a/local/bin/drift b/local/bin/drift
new file mode 100755 (executable)
index 0000000..5ca8dd1
Binary files /dev/null and b/local/bin/drift differ
diff --git a/local/bin/epicycle b/local/bin/epicycle
new file mode 100755 (executable)
index 0000000..a48fce9
Binary files /dev/null and b/local/bin/epicycle differ
diff --git a/local/bin/fadeplot b/local/bin/fadeplot
new file mode 100755 (executable)
index 0000000..54206f3
Binary files /dev/null and b/local/bin/fadeplot differ
diff --git a/local/bin/flag b/local/bin/flag
new file mode 100755 (executable)
index 0000000..fa1aae2
Binary files /dev/null and b/local/bin/flag differ
diff --git a/local/bin/flame b/local/bin/flame
new file mode 100755 (executable)
index 0000000..41cf34d
Binary files /dev/null and b/local/bin/flame differ
diff --git a/local/bin/flow b/local/bin/flow
new file mode 100755 (executable)
index 0000000..5c982fa
Binary files /dev/null and b/local/bin/flow differ
diff --git a/local/bin/forest b/local/bin/forest
new file mode 100755 (executable)
index 0000000..91f2c64
Binary files /dev/null and b/local/bin/forest differ
diff --git a/local/bin/galaxy b/local/bin/galaxy
new file mode 100755 (executable)
index 0000000..38e8df9
Binary files /dev/null and b/local/bin/galaxy differ
diff --git a/local/bin/gears b/local/bin/gears
new file mode 100755 (executable)
index 0000000..4e66d1d
Binary files /dev/null and b/local/bin/gears differ
diff --git a/local/bin/glplanet b/local/bin/glplanet
new file mode 100755 (executable)
index 0000000..e580516
Binary files /dev/null and b/local/bin/glplanet differ
diff --git a/local/bin/goop b/local/bin/goop
new file mode 100755 (executable)
index 0000000..9911f6d
Binary files /dev/null and b/local/bin/goop differ
diff --git a/local/bin/grav b/local/bin/grav
new file mode 100755 (executable)
index 0000000..39b35a8
Binary files /dev/null and b/local/bin/grav differ
diff --git a/local/bin/greynetic b/local/bin/greynetic
new file mode 100755 (executable)
index 0000000..b28b6e4
Binary files /dev/null and b/local/bin/greynetic differ
diff --git a/local/bin/halo b/local/bin/halo
new file mode 100755 (executable)
index 0000000..999096f
Binary files /dev/null and b/local/bin/halo differ
diff --git a/local/bin/helix b/local/bin/helix
new file mode 100755 (executable)
index 0000000..2a7288d
Binary files /dev/null and b/local/bin/helix differ
diff --git a/local/bin/hopalong b/local/bin/hopalong
new file mode 100755 (executable)
index 0000000..13497e0
Binary files /dev/null and b/local/bin/hopalong differ
diff --git a/local/bin/hypercube b/local/bin/hypercube
new file mode 100755 (executable)
index 0000000..f4e5752
Binary files /dev/null and b/local/bin/hypercube differ
diff --git a/local/bin/ifs b/local/bin/ifs
new file mode 100755 (executable)
index 0000000..4e5f4f3
Binary files /dev/null and b/local/bin/ifs differ
diff --git a/local/bin/imsmap b/local/bin/imsmap
new file mode 100755 (executable)
index 0000000..0ea3f75
Binary files /dev/null and b/local/bin/imsmap differ
diff --git a/local/bin/interference b/local/bin/interference
new file mode 100755 (executable)
index 0000000..19b5271
Binary files /dev/null and b/local/bin/interference differ
diff --git a/local/bin/jigsaw b/local/bin/jigsaw
new file mode 100755 (executable)
index 0000000..8b987cb
Binary files /dev/null and b/local/bin/jigsaw differ
diff --git a/local/bin/kaleidescope b/local/bin/kaleidescope
new file mode 100755 (executable)
index 0000000..b7c21c8
Binary files /dev/null and b/local/bin/kaleidescope differ
diff --git a/local/bin/kumppa b/local/bin/kumppa
new file mode 100755 (executable)
index 0000000..6ab5b44
Binary files /dev/null and b/local/bin/kumppa differ
diff --git a/local/bin/lament b/local/bin/lament
new file mode 100755 (executable)
index 0000000..e19b579
Binary files /dev/null and b/local/bin/lament differ
diff --git a/local/bin/laser b/local/bin/laser
new file mode 100755 (executable)
index 0000000..3278df6
Binary files /dev/null and b/local/bin/laser differ
diff --git a/local/bin/lightning b/local/bin/lightning
new file mode 100755 (executable)
index 0000000..106798b
Binary files /dev/null and b/local/bin/lightning differ
diff --git a/local/bin/lisa b/local/bin/lisa
new file mode 100755 (executable)
index 0000000..a2b03df
Binary files /dev/null and b/local/bin/lisa differ
diff --git a/local/bin/lissie b/local/bin/lissie
new file mode 100755 (executable)
index 0000000..f355e0e
Binary files /dev/null and b/local/bin/lissie differ
diff --git a/local/bin/lmorph b/local/bin/lmorph
new file mode 100755 (executable)
index 0000000..110b5b9
Binary files /dev/null and b/local/bin/lmorph differ
diff --git a/local/bin/loop b/local/bin/loop
new file mode 100755 (executable)
index 0000000..7c8f098
Binary files /dev/null and b/local/bin/loop differ
diff --git a/local/bin/maze b/local/bin/maze
new file mode 100755 (executable)
index 0000000..698fd5d
Binary files /dev/null and b/local/bin/maze differ
diff --git a/local/bin/moebius b/local/bin/moebius
new file mode 100755 (executable)
index 0000000..8c62317
Binary files /dev/null and b/local/bin/moebius differ
diff --git a/local/bin/moire b/local/bin/moire
new file mode 100755 (executable)
index 0000000..2f151ba
Binary files /dev/null and b/local/bin/moire differ
diff --git a/local/bin/moire2 b/local/bin/moire2
new file mode 100755 (executable)
index 0000000..c53bc02
Binary files /dev/null and b/local/bin/moire2 differ
diff --git a/local/bin/morph3d b/local/bin/morph3d
new file mode 100755 (executable)
index 0000000..5efefaf
Binary files /dev/null and b/local/bin/morph3d differ
diff --git a/local/bin/mountain b/local/bin/mountain
new file mode 100755 (executable)
index 0000000..aaa7e45
Binary files /dev/null and b/local/bin/mountain differ
diff --git a/local/bin/munch b/local/bin/munch
new file mode 100755 (executable)
index 0000000..33a30d5
Binary files /dev/null and b/local/bin/munch differ
diff --git a/local/bin/noseguy b/local/bin/noseguy
new file mode 100755 (executable)
index 0000000..a5338f3
Binary files /dev/null and b/local/bin/noseguy differ
diff --git a/local/bin/pedal b/local/bin/pedal
new file mode 100755 (executable)
index 0000000..d15b204
Binary files /dev/null and b/local/bin/pedal differ
diff --git a/local/bin/penetrate b/local/bin/penetrate
new file mode 100755 (executable)
index 0000000..9ebca81
Binary files /dev/null and b/local/bin/penetrate differ
diff --git a/local/bin/penrose b/local/bin/penrose
new file mode 100755 (executable)
index 0000000..3711512
Binary files /dev/null and b/local/bin/penrose differ
diff --git a/local/bin/petri b/local/bin/petri
new file mode 100755 (executable)
index 0000000..74ceb51
Binary files /dev/null and b/local/bin/petri differ
diff --git a/local/bin/phosphor b/local/bin/phosphor
new file mode 100755 (executable)
index 0000000..644b13a
Binary files /dev/null and b/local/bin/phosphor differ
diff --git a/local/bin/pipes b/local/bin/pipes
new file mode 100755 (executable)
index 0000000..3884878
Binary files /dev/null and b/local/bin/pipes differ
diff --git a/local/bin/pulsar b/local/bin/pulsar
new file mode 100755 (executable)
index 0000000..96df10e
Binary files /dev/null and b/local/bin/pulsar differ
diff --git a/local/bin/pyro b/local/bin/pyro
new file mode 100755 (executable)
index 0000000..20ae769
Binary files /dev/null and b/local/bin/pyro differ
diff --git a/local/bin/qix b/local/bin/qix
new file mode 100755 (executable)
index 0000000..e98aca9
Binary files /dev/null and b/local/bin/qix differ
diff --git a/local/bin/rd-bomb b/local/bin/rd-bomb
new file mode 100755 (executable)
index 0000000..c914b1e
Binary files /dev/null and b/local/bin/rd-bomb differ
diff --git a/local/bin/rocks b/local/bin/rocks
new file mode 100755 (executable)
index 0000000..5bb57cd
Binary files /dev/null and b/local/bin/rocks differ
diff --git a/local/bin/rorschach b/local/bin/rorschach
new file mode 100755 (executable)
index 0000000..cca92fd
Binary files /dev/null and b/local/bin/rorschach differ
diff --git a/local/bin/rotor b/local/bin/rotor
new file mode 100755 (executable)
index 0000000..3ef607b
Binary files /dev/null and b/local/bin/rotor differ
diff --git a/local/bin/rubik b/local/bin/rubik
new file mode 100755 (executable)
index 0000000..f0b13ec
Binary files /dev/null and b/local/bin/rubik differ
diff --git a/local/bin/shadebobs b/local/bin/shadebobs
new file mode 100755 (executable)
index 0000000..f841eca
Binary files /dev/null and b/local/bin/shadebobs differ
diff --git a/local/bin/sierpinski b/local/bin/sierpinski
new file mode 100755 (executable)
index 0000000..95810e7
Binary files /dev/null and b/local/bin/sierpinski differ
diff --git a/local/bin/slidescreen b/local/bin/slidescreen
new file mode 100755 (executable)
index 0000000..6709b6a
Binary files /dev/null and b/local/bin/slidescreen differ
diff --git a/local/bin/slip b/local/bin/slip
new file mode 100755 (executable)
index 0000000..b1dd5dc
Binary files /dev/null and b/local/bin/slip differ
diff --git a/local/bin/sonar b/local/bin/sonar
new file mode 100755 (executable)
index 0000000..78c55d7
Binary files /dev/null and b/local/bin/sonar differ
diff --git a/local/bin/sphere b/local/bin/sphere
new file mode 100755 (executable)
index 0000000..4f8ee1a
Binary files /dev/null and b/local/bin/sphere differ
diff --git a/local/bin/spiral b/local/bin/spiral
new file mode 100755 (executable)
index 0000000..9930610
Binary files /dev/null and b/local/bin/spiral differ
diff --git a/local/bin/spotlight b/local/bin/spotlight
new file mode 100755 (executable)
index 0000000..fe1f7a8
Binary files /dev/null and b/local/bin/spotlight differ
diff --git a/local/bin/sproingies b/local/bin/sproingies
new file mode 100755 (executable)
index 0000000..fefbd57
Binary files /dev/null and b/local/bin/sproingies differ
diff --git a/local/bin/squiral b/local/bin/squiral
new file mode 100755 (executable)
index 0000000..5d2929c
Binary files /dev/null and b/local/bin/squiral differ
diff --git a/local/bin/stairs b/local/bin/stairs
new file mode 100755 (executable)
index 0000000..a61c303
Binary files /dev/null and b/local/bin/stairs differ
diff --git a/local/bin/starfish b/local/bin/starfish
new file mode 100755 (executable)
index 0000000..0ebbb39
Binary files /dev/null and b/local/bin/starfish differ
diff --git a/local/bin/strange b/local/bin/strange
new file mode 100755 (executable)
index 0000000..881abb1
Binary files /dev/null and b/local/bin/strange differ
diff --git a/local/bin/superquadrics b/local/bin/superquadrics
new file mode 100755 (executable)
index 0000000..4abd3d5
Binary files /dev/null and b/local/bin/superquadrics differ
diff --git a/local/bin/swirl b/local/bin/swirl
new file mode 100755 (executable)
index 0000000..a7a901c
Binary files /dev/null and b/local/bin/swirl differ
diff --git a/local/bin/t3d b/local/bin/t3d
new file mode 100755 (executable)
index 0000000..201a584
Binary files /dev/null and b/local/bin/t3d differ
diff --git a/local/bin/triangle b/local/bin/triangle
new file mode 100755 (executable)
index 0000000..c57364d
Binary files /dev/null and b/local/bin/triangle differ
diff --git a/local/bin/truchet b/local/bin/truchet
new file mode 100755 (executable)
index 0000000..a2ee81a
Binary files /dev/null and b/local/bin/truchet differ
diff --git a/local/bin/vidwhacker b/local/bin/vidwhacker
new file mode 100755 (executable)
index 0000000..b35af3a
--- /dev/null
@@ -0,0 +1,401 @@
+#!/bin/sh
+#
+# vidwhacker, for xscreensaver.  Copyright (c) 1998, 1999 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 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 script grabs a frame of video, then uses various pbm filters to
+# munge the image in random nefarious ways, then uses xv to put it on
+# the root window.  This works out really nicely if you just feed some
+# random TV station into it...
+#
+# The video grabbing part is SGI-specific -- if you want to use this on
+# another system, add a new clause to the grab() procedure.
+
+
+# Process command-line args...
+
+onroot=false
+verbose=false
+delay=3
+use_stdin=false
+use_stdout=false
+
+pid=""
+tmp=${TMPDIR:-/tmp}/vidwhacker.$$
+tmp_rgb=$tmp-00000.rgb
+tmp_ppm0=$tmp-0.ppm
+tmp_ppm1=$tmp-1.ppm
+tmp_ppm2=$tmp-2.ppm
+tmp_ppm3=$tmp-3.ppm
+tmp_ppm4=$tmp-4.ppm
+tmp_ppmS=$tmp-S.ppm
+
+
+getargs() {
+
+  while [ $# != 0 ]; do
+    case "$1" in
+    -display | -disp | -dis | -dpy | -d )
+      shift
+      DISPLAY="$1"
+      export DISPLAY
+      ;;
+    -root )
+      onroot=true
+      ;;
+    -window )
+      onroot=false
+      ;;
+    -verbose )
+      verbose=true
+      ;;
+    -stdin )
+      use_stdin=true
+      ;;
+    -stdout )
+      use_stdout=true
+      ;;
+    -delay)
+      shift
+      delay="$1"
+      ;;
+    * )
+      echo "VidWhacker, Copyright (c) 1999 Jamie Zawinski <jwz@jwz.org>" >&2
+      echo "            http://www.jwz.org/xscreensaver/" >&2
+      echo "" >&2
+      echo "usage: $0 [-display dpy] [-verbose] [-root | -window]" >&2
+      echo "                  [-stdin] [-stdout] [-delay secs]" >&2
+      exit 1
+      ;;
+    esac
+    shift
+  done
+
+  xvargs="-quick24"
+
+  if [ "$onroot" = true ]; then
+    xvargs="$xvargs -root -rmode 5 -noresetroot -rfg black -rbg black -viewonly"
+  else
+    xvargs="$xvargs -geom +0+0"
+  fi
+
+
+  screen_width=''
+  if [ "$use_stdout" = false ]; then
+    screen_width=`xdpyinfo 2>/dev/null | 
+        sed -n 's/.* dimensions: *\([0-9]*\).*/\1/p'`
+    if [ "$screen_width" = "" ]; then
+      screen_width=800
+    fi
+  fi
+}
+
+
+clean() {
+  rm -f $tmp_rgb $tmp_ppm1 $tmp_ppm2 $tmp_ppm3 $tmp_ppm4
+}
+
+clean2() {
+  clean
+  rm -f $tmp_ppm0 $tmp_ppmS
+}
+
+
+# Grab a frame of video.  leaves it in $tmp_ppm1.
+#
+grab() {
+  uname=`uname`
+  if [ $uname = IRIX ]; then
+    #
+    # SGI's "vidtomem" returns an SGI RGB image of the default video input,
+    # and has stupid non-overridable ouput-file-naming conventions.  So, let 
+    # it write its file; and then convert it to a pgm.
+    #
+    
+    vidtomem -f $tmp
+    sgitopnm $tmp_rgb > $tmp_ppm1
+
+    # Cut off the close-captioning blips in the NTSC overscan region.  YMMV.
+    #  | pnmcut 12 7 695 477 
+
+  elif [ $uname = Linux ]; then
+
+    # Marcus Herbert says the following works with his Connectix Qcam.
+    # Don't have qcam?  Well, do something else then...  and send me a patch.
+
+    qcam > $tmp_ppm1
+
+    # Friedrich Delgado Friedrichs says the following works with a
+    # Brooktree 848 or 878 tuner card:
+    #
+    #   bttvgrab -Q -d q -l 1 -F /dev/null -o gif -f ${tmp}.gif -N PAL
+    #   giftopnm ${tmp}.gif > $tmp_ppm1
+    #   rm ${tmp}.gif
+    #
+    # He notes that you might need to run a TV application (e.g., xawtv)
+    # before the first time you run vidwhacker in order to initialize the
+    # tuner card and kernel modules.
+
+
+  else
+    echo "$0: don't know how to grab video on this OS." >&2
+    clean2
+    exit 1
+  fi
+}
+
+
+# Use perl to pick a random foreground/background color in pbm's syntax.
+#
+randcolor() {
+  perl -e 'srand; 
+          printf("#%02x%02x%02x-#%02x%02x%02x",
+                 int(rand()*60),
+                 int(rand()*60),
+                 int(rand()*60),
+                 120+int(rand()*135),
+                 120+int(rand()*135),
+                 120+int(rand()*135))'
+}
+
+# Frobnicate the image in some random way.
+#
+frob() {
+
+  w_h=`head -2 $tmp_ppm1 | tail -1`
+  width=`echo $w_h | awk '{print $1}'`
+  height=`echo $w_h | awk '{print $2}'`
+
+  N=`perl -e 'srand; print int(rand() * 17)'`
+
+  if [ "$verbose" = true ]; then
+    echo "mode $N..." >&2
+  fi
+
+  if   [ $N = 0 ]; then
+    ppmtopgm $tmp_ppm1 | pgmedge | pgmtoppm `randcolor` | ppmnorm
+
+  elif [ $N = 1 ]; then
+    ppmtopgm $tmp_ppm1 | 
+    pgmenhance | 
+    pgmtoppm `randcolor`
+
+  elif [ $N = 2 ]; then
+    ppmtopgm $tmp_ppm1 | pgmoil | pgmtoppm `randcolor`
+
+  elif [ $N = 3 ]; then 
+    ppmrelief $tmp_ppm1 | ppmtopgm | pgmedge | ppmrelief | ppmtopgm |
+      pgmedge | pnminvert | pgmtoppm `randcolor`
+
+  elif [ $N = 4 ]; then
+    ppmspread 71 $tmp_ppm1 > $tmp_ppm2
+    pnmarith -add $tmp_ppm1 $tmp_ppm2
+
+  elif [ $N = 5 ]; then
+    pnmflip -lr $tmp_ppm1 > $tmp_ppm2
+    pnmarith -multiply $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3
+    pnmflip -tb $tmp_ppm3 | ppmnorm > $tmp_ppm2
+    pnmarith -multiply $tmp_ppm1 $tmp_ppm2
+
+  elif [ $N = 6 ]; then
+    N2=`perl -e 'srand; print int(rand() * 3)'`
+    if [ $N2 = 0 ]; then
+      pnmflip -lr $tmp_ppm1 > $tmp_ppm2
+    elif [ $N2 = 1 ]; then
+      pnmflip -tb $tmp_ppm1 > $tmp_ppm2
+    else
+      pnmflip -lr $tmp_ppm1 > $tmp_ppm2
+      pnmflip -tb $tmp_ppm2 > $tmp_ppm3
+      cp $tmp_ppm3 $tmp_ppm2
+    fi
+
+    pnmarith -difference $tmp_ppm1 $tmp_ppm2
+
+  elif [ $N = 7 ]; then
+
+    for i in 1 2 3 ; do
+      ppmtopgm $tmp_ppm1 | pgmedge > $tmp_ppm2
+      pnmarith -difference $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3
+      cp $tmp_ppm3 $tmp_ppm1
+    done
+    ppmnorm < $tmp_ppm1
+
+  elif [ $N = 8 ]; then
+    pnmflip -lr $tmp_ppm1 > $tmp_ppm2
+    pnmarith -multiply $tmp_ppm1 $tmp_ppm2 | ppmrelief | ppmnorm | pnminvert
+
+  elif [ $N = 9 ]; then
+    pnmflip -lr $tmp_ppm1 > $tmp_ppm2
+    pnmarith -subtract $tmp_ppm1 $tmp_ppm2 | ppmrelief | ppmtopgm | pgmedge
+
+  elif [ $N = 10 ]; then
+    ppmtopgm $tmp_ppm1 | pgmbentley | pgmtoppm `randcolor`
+
+  elif [ $N = 11 ]; then
+    pgmcrater -number 20000 -height $height -width $width | pgmtoppm `randcolor` > $tmp_ppm2
+    pnmarith -difference $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3
+    pnmflip -tb $tmp_ppm3 | ppmnorm > $tmp_ppm2
+    pnmarith -multiply $tmp_ppm1 $tmp_ppm2
+
+  elif [ $N = 12 ]; then
+    ppmshift 30 $tmp_ppm1 | ppmtopgm | pgmoil | pgmedge |  pgmtoppm `randcolor` > $tmp_ppm2
+    pnmarith -difference $tmp_ppm1 $tmp_ppm2 
+
+ elif [ $N = 13 ]; then
+    ppmpat -madras $width $height | pnmdepth 255 > $tmp_ppm2
+    pnmarith -difference $tmp_ppm1 $tmp_ppm2
+  elif [ $N = 14 ]; then
+    ppmpat -tartan $width $height | pnmdepth 255 > $tmp_ppm2
+    pnmarith -difference  $tmp_ppm1 $tmp_ppm2 
+  
+  elif [ $N = 15 ]; then
+    ppmpat -camo $width $height | pnmdepth 255 | ppmshift 50 > $tmp_ppm2
+    pnmarith -multiply $tmp_ppm1 $tmp_ppm2
+  
+  elif [ $N = 16 ]; then
+    pgmnoise $width $height | pgmedge | pgmtoppm `randcolor` > $tmp_ppm2
+    pnmarith -difference $tmp_ppm1 $tmp_ppm2 | pnmdepth 255 | pnmsmooth
+
+  else cat $tmp_ppm1
+  fi
+}
+
+
+# Grab a frame and frob it.  leave it in $tmp_ppm3.
+#
+whack() {
+  clean
+
+  while [ ! -f $tmp_ppm1 ]; do
+    if [ "$use_stdin" != true ]; then
+      grab
+    else
+      cp $tmp_ppmS $tmp_ppm0
+      cp $tmp_ppm0 $tmp_ppm1
+    fi
+  done
+
+  rm -f $tmp_rgb
+
+  if [ "$screen_width" != "" ]; then
+    frob | pnmscale -width $screen_width > $tmp_ppm3
+  else
+    frob > $tmp_ppm3
+  fi
+
+  rm -f $tmp_ppm1 $tmp_ppm2
+}
+
+
+# Kill off the xv subprocess, if it's running
+#
+kill_pid() {
+  if [ "$pid" != "" ]; then
+
+    if [ "$verbose" = true ]; then
+      echo "killing pid $pid..." >&2
+    fi
+
+    # need to do this to avoid "6898 Terminated" messages!
+    # apparently one can't redirect the output of the builtin `kill' command.
+#    ( sh -c "kill $pid" ) >/dev/null 2>/dev/null </dev/null
+
+    # wtf?  that doesn't work either.  Is it writing to /dev/tty??
+    kill $pid >/dev/null 2>&1
+
+    pid=""
+  fi
+}
+
+# called when this process is signalled (for cleanup)
+#
+my_trap() {
+  if [ "$verbose" = true ]; then
+    echo "trapped signal!" >&2
+  fi
+  kill_pid
+  clean2
+  exit 1
+}
+
+main() {
+
+  getargs $@
+
+  trap my_trap 1 2 3 6 9 13 15
+
+  if [ "$use_stdin" = true ]; then
+   cat > $tmp_ppmS
+  fi
+
+  while true; do
+
+    # Loop grabbing and frobbing images.
+    #
+    # If we're running on the root, run xv in the foreground (with -exit)
+    # and then wait.
+    #
+    # If we're running in a window, spawn xv in the background; then when
+    # it's time to put up the new image, kill off the currently-running xv.
+
+    if [ "$verbose" = true ]; then
+      whack
+    else
+      whack >/dev/null 2>&1
+    fi
+
+    kill_pid
+
+    if [ ! -s $tmp_ppm3 ]; then
+      echo "$0: no image grabbed" >&2
+
+    elif [ "$use_stdout" = true ]; then
+
+      cat $tmp_ppm3
+      clean2
+      exit 0
+
+    else
+
+      pnmtosgi < $tmp_ppm3 > $tmp_ppm2
+      rm -f $tmp_ppm3
+
+      if [ -s $tmp_ppm2 ]; then
+        if [ "$verbose" = true ]; then
+          echo "launching xv $xvargs $tmp_ppm2" >&2
+         ls -lF $tmp_ppm2
+        fi
+
+       mv $tmp_ppm2 $tmp_ppm0
+        xv $xvargs $tmp_ppm0 &
+
+# this doesn't work -- leaves xv processes around, instead of stray xset
+# data.  Sigh.
+#
+#      # cat the file so that we can nuke it without racing against xv.
+#        cat $tmp_ppm2 | xv $xvargs - &
+
+        pid=$!
+      fi
+    fi
+
+    clean
+    sleep $delay
+
+  done
+  exit 1
+}
+
+main $@
+
+# to find stray xv data:
+# xwininfo -root -children|grep 'xv image comments' | awk '{print "xkill -id ", $1}'
diff --git a/local/bin/vines b/local/bin/vines
new file mode 100755 (executable)
index 0000000..78159ed
Binary files /dev/null and b/local/bin/vines differ
diff --git a/local/bin/wander b/local/bin/wander
new file mode 100755 (executable)
index 0000000..52fe3a3
Binary files /dev/null and b/local/bin/wander differ
diff --git a/local/bin/webcollage b/local/bin/webcollage
new file mode 100755 (executable)
index 0000000..a218de1
--- /dev/null
@@ -0,0 +1,788 @@
+#!/usr/local/bin/perl5 -w
+#
+# webcollage, for xscreensaver, Copyright (c) 1999 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 program decorate the screen with random images from the web.
+
+
+use Socket;
+
+my $progname = "$0";
+my $version = "1.0";
+
+$progname =~ s@^.*/([^/]+)$@$1@;
+
+my $random_redirector = "http://random.yahoo.com/bin/ryl";
+my $image_randomizer_a = "http://image.altavista.com/";
+my $image_randomizer = $image_randomizer_a . "cgi-bin/avncgi" .
+                       "?do=3&verb=no&oshape=n&oorder=" .
+                       "&ophoto=1&oart=1&ocolor=1&obw=1" .
+                       "&stype=simage&oprem=0&query=";
+
+my $http_timeout = 30;
+my $ppm_to_root_window_cmd = "xv -root -rmode 5 -viewonly" .
+                             " +noresetroot %%PPM%% -quit";
+my $filter_cmd = undef;
+my $post_filter_cmd = undef;
+my $background = undef;
+my $no_output_p = 0;
+my $delay = 0;
+
+my $wordlist = "/usr/dict/words";
+
+if (!-r $wordlist) {
+    $wordlist = "/usr/share/lib/dict/words";    # irix
+}
+
+
+my $min_width = 50;
+my $min_height = 50;
+
+my $DEBUG = 0;
+
+
+# returns three values: the HTTP response line; the document headers;
+# and the document body.
+#
+sub get_document_1 {
+    my ( $url ) = @_;
+
+    if ( $DEBUG > 2 ) {
+       print STDERR "get_document_1 $url\n";
+    }
+
+    my($dummy, $dummy, $serverstring, $path) = split(/\//, $url, 4);
+    my($them,$port) = split(/:/, $serverstring);
+    $port = 80 unless $port;
+    my $size="";
+
+    my ($remote, $iaddr, $paddr, $proto, $line);
+    $remote = $them;
+    if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
+    return unless $port;
+    $iaddr   = inet_aton($remote)               || return;
+    $paddr   = sockaddr_in($port, $iaddr);
+
+    @_ =
+    eval {
+        local $SIG{ALRM}  = sub {
+            if ($DEBUG > 0) {
+                print STDERR "timed out for $url\n";
+            }
+            die "alarm\n" };
+        alarm $http_timeout;
+
+        $proto   = getprotobyname('tcp');
+        socket(S, PF_INET, SOCK_STREAM, $proto)  || return;
+        connect(S, $paddr)    || return;
+
+        select(S); $| = 1; select(STDOUT);
+
+        print S ("GET /$path HTTP/1.0\n" .
+                 "Host: $them\n" .
+                 "User-Agent: $progname/$version\n" .
+                 "\n");
+
+        my $http = <S>;
+
+        my $head = "";
+        my $body = "";
+        while (<S>) {
+            $head .= $_;
+            last if m@^[\r\n]@;
+        }
+        while (<S>) {
+            $body .= $_;
+        }
+
+        close S;
+
+        return ( $http, $head, $body );
+    };
+    die if ($@ && $@ ne "alarm\n");       # propagate errors
+    if ($@) {
+        # timed out
+        return undef;
+    } else {
+        # didn't
+        alarm 0;
+        return @_;
+    }
+}
+
+
+# returns two values: the document headers; and the document body.
+# if the given URL did a redirect, returns the redirected-to document.
+#
+sub get_document {
+    my ( $url ) = @_;
+
+    do {
+       my ( $http, $head, $body ) = get_document_1 $url;
+
+       return undef if ( ! $body );
+
+       if ( $http =~ m@HTTP/[0-9.]+ 30[23]@ ) {
+           $_ = $head;
+           my ( $location ) = m@^location:[ \t]*(.*)$@im;
+           if ( $location ) {
+
+               if ( $DEBUG > 2 ) {
+                   print STDERR "redirect from $url to $location\n";
+               }
+               $url = $location;
+           } else {
+               return ( $url, $body );
+           }
+
+        } elsif ( $http =~ m@HTTP/[0-9.]+ [4-9][0-9][0-9]@ ) {
+            # http errors -- return nothing.
+            return undef;
+
+       } else {
+
+           return ( $url, $body );
+       }
+
+    } while (1);
+}
+
+
+# given a URL and the body text at that URL, selects and returns a random
+# image from it.  returns undef if no suitable images found.
+#
+sub pick_image_from_body {
+    my ( $base, $body ) = @_;
+
+    $_ = $base;
+
+    # if there's at least one slash after the host, take off the last
+    # pathname component
+    if ( m@^http://[^/]+/@io ) {
+       ( $base = $base ) =~ s@[^/]+$@@go;
+    }
+
+    # if there are no slashes after the host at all, put one on the end.
+    if ( m@^http://[^/]+$@io ) {
+       $base .= "/";
+    }
+
+    if ( $DEBUG > 2 ) {
+       print STDERR "base is $base\n";
+    }
+
+
+    $_ = $body;
+
+    # strip out newlines, compress whitespace
+    s/[\r\n\t ]+/ /go;
+
+    # nuke comments
+    s/<!--.*?-->//go;
+
+    my @urls;
+    my %unique_urls;
+
+    foreach (split(/ *</)) {
+       if ( m/^(img|a) .*(src|href) ?= ?\"? ?(.*?)[ >\"]/io ) {
+
+           my $was_inline = ( "$1" eq "a" || "$1" eq "A" );
+           my $link = $3;
+           my ( $width )  = m/width ?= ?([0-9]+)/oi;
+           my ( $height ) = m/height ?= ?([0-9]+)/oi;
+           $_ = $link;
+
+           if ( m@^/@o ) {
+               my $site;
+               ( $site = $base ) =~ s@^(http://[^/]*).*@$1@gio;
+               $_ = "$site$link";
+           } elsif ( ! m/:/ ) {
+               $_ = "$base$link";
+                s@/\./@/@;
+                while (s@/\.\./@/@g) {
+                }
+           }
+
+           # skip non-http
+           if ( ! m@^http://@io ) {
+               next;
+           }
+
+           # skip non-image
+           if ( ! m@[.](gif|jpg|jpeg|pjpg|pjpeg)@io ) {
+               next;
+           }
+
+           # skip GIF!
+#          if ( m@[.](gif)@io ) {
+##             if ( $DEBUG > 2 ) { print "skip GIF $_\n"; }
+#              next;
+#          }
+
+           # skip really short or really narrow images
+           if ( $width && $width < $min_width) {
+               if ( $DEBUG > 2 ) {
+                   print STDERR "skip narrow image $_ ($width x $height)\n";
+               }
+               next;
+           }
+
+           if ( $height && $height < $min_height) {
+               if ( $DEBUG > 2 ) {
+                   print STDERR "skip short image $_ ($width x $height)\n";
+               }
+               next;
+           }
+
+           my $url = $_;
+
+           if ( $unique_urls{$url} ) {
+               if ( $DEBUG > 2 ) { print STDERR "skip duplicate image $_\n"; }
+               next;
+           }
+
+           if ( $DEBUG > 2 ) {
+               print STDERR "got $url" . 
+                   ($width && $height ? " (${width}x${height})" : "") .
+                   ($was_inline ? " (inline)" : "") . "\n";
+           }
+
+           $urls[++$#urls] = $url;
+           $unique_urls{$url}++;
+
+           # pointers to images are preferable to inlined images
+           if ( ! $was_inline ) {
+               $urls[++$#urls] = $url;
+           }
+       }
+    }
+
+    if ( $#urls == 0 ) {
+       if ( $DEBUG > 2 ) {
+           print STDERR "no images on $base\n";
+       }
+       return undef;
+    }
+
+    return undef if ( $#urls < 1 );
+
+    # pick a random element of the table
+    my $i = ((rand() * 99999) % $#urls);
+
+    # if the page has several images on it, prefer the later ones most of
+    # the time.
+    my $fudge = 4;
+    if ($#urls > ($fudge * 2) && $i <= $fudge && ((rand() < 0.9))) {
+       if ( $DEBUG > 2 ) {
+           print STDERR "skipping first $fudge of $#urls images.\n";
+       }
+        $i += ($fudge - $i);
+    }
+
+    my $url = $urls[$i];
+
+    if ( $DEBUG > 2 ) {
+       print STDERR "picked $url\n";
+    }
+
+    return $url;
+}
+
+
+# Using the URL-randomizer, picks a random image on a random page, and
+# returns two URLs: the page containing the image, and the image.
+# Returns undef if nothing found this time.
+#
+sub pick_from_url_randomizer {
+
+    if ( $DEBUG > 2 ) {
+       print STDERR "\n\npicking from $random_redirector...\n\n";
+    }
+
+    my ( $base, $body ) = get_document $random_redirector;
+
+    return if (!$base || !$body);
+    my $img = pick_image_from_body ($base, $body);
+
+    if ($img) {
+        return ($base, $img);
+    } else {
+        return undef;
+    }
+}
+
+
+sub random_word {
+    
+    my $word = 0;
+    if (open (IN, "<$wordlist")) {
+        my $size = (stat(IN))[7];
+        my $pos = rand $size;
+        if (seek (IN, $pos, 0)) {
+            $word = <IN>;   # toss partial line
+            $word = <IN>;   # keep next line
+        }
+        close (IN);
+    }
+
+    return 0 if (!$word);
+
+    $word =~ s/^[ \t\n\r]+//;
+    $word =~ s/[ \t\n\r]+$//;
+    $word =~ s/ly$//;
+    $word =~ s/ies$/y/;
+    $word =~ s/ally$/al/;
+
+    return $word;
+}
+
+
+
+# Using the image-randomizer, picks a random image on a random page, and
+# returns two URLs: the page containing the image, and the image.
+# Returns undef if nothing found this time.
+#
+sub pick_from_image_randomizer {
+
+    my $words = random_word;
+    $words .= "%20" . random_word;
+    $words .= "%20" . random_word;
+
+    my $search_url = $image_randomizer . $words;
+
+    if ( $DEBUG > 2 ) {
+       print STDERR "\n\npicking from $search_url\n";
+    }
+
+    my ( $base, $body ) = get_document $search_url;
+
+    return if (! $body);
+
+
+    my @subpages;
+    my $skipped = 0;
+
+    $_ = $body;
+    s/(<A )/\n$1/gi;
+    foreach (split(/\n/)) {
+
+        if ( m@<A HREF=([^>]+)><IMG SRC=http://image\.altavista\.com@i ) {
+
+            my $u = $1;
+            if (m/^"(.*)"$/) { $u = $1; }
+
+            if (m@\.corbis\.com/@) {
+                $skipped = 1;
+                if ( $DEBUG > 2 ) {
+                    print STDERR "skipping corbis URL: $_\n";
+                }
+                next;
+            } elsif ( $DEBUG > 2 ) {
+                print STDERR "sub-page: $1\n";
+            }
+
+            $subpages[++$#subpages] = $u;
+        }
+    }
+
+    if ( $#subpages <= 0 ) {
+        if (!$skipped) {
+            print STDERR "Found nothing on $base\n";
+        }
+       return undef;
+    }
+
+    # pick a random element of the table
+    my $i = ((rand() * 99999) % $#subpages);
+    my $subpage = $subpages[$i];
+
+    if ( $DEBUG > 2 ) {
+       print STDERR "picked page $subpage\n";
+    }
+
+
+
+    my ( $base2, $body2 ) = get_document $subpage;
+
+    return undef if (!$base2 || !body2);
+
+    my $img = pick_image_from_body ($base2, $body2);
+
+    if ($img) {
+        return ($base2, $img);
+    } else {
+        return undef;
+    }
+}
+
+
+# Picks a random image on a random page, and returns two URLs:
+# the page containing the image, and the image. 
+# Returns undef if nothing found this time.
+# Uses the url-randomizer 1 time in 5, else the image randomizer.
+#
+sub pick_image {
+    if (int(rand 5) == 0) {
+        return pick_from_url_randomizer;
+    } else {
+        return pick_from_image_randomizer;
+    }
+}
+
+
+# returns the full path of the named program, or undef.
+#
+sub which {
+    my ($prog) = @_;
+    foreach (split (/:/, $ENV{PATH})) {
+        if (-x "$_/$prog") {
+            return $prog;
+        }
+    }
+    return undef;
+}
+
+
+
+#################################
+#
+# running as a CGI
+#
+#################################
+
+
+sub do_html_output {
+
+    $| = 1;
+
+    if ( $progname =~ m/nph-/o ) {
+       print "HTTP/1.0 200 OK\n";
+       print "Content-type: text/html\n";
+        print "\n";
+    }
+
+    print "<TITLE>random images</TITLE>\n";
+    print "<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\"";
+    print "  LINK=\"#0000EE\" VLINK=\"#551A8B\" ALINK=\"#FF0000\">\n";
+    print "<H1 ALIGN=CENTER>random images</H1><P>\n";
+    print "<P><BLOCKQUOTE><BLOCKQUOTE>\n";
+    print "These images have been selected randomly from the web,\n";
+    print "by using both <A HREF=\"$random_redirector\">\n";
+    print "$random_redirector</A> and <A HREF=\"$image_randomizer_a\">\n";
+    print "$image_randomizer_a</A> as a source of URLs from which\n";
+    print "images are extracted.\n";
+    print "<P>\n";
+    print "Note: if you leave this running\n";
+    print "long enough, your browser will undoubtedly run out of memory\n";
+    print "and crash...\n";
+    print "</BLOCKQUOTE></BLOCKQUOTE><P><HR><P ALIGN=CENTER>\n";
+
+    do {
+        my ($base, $img) = pick_image;
+        if ($img) {
+            if ($DEBUG > 0) {
+                print STDERR "$img\n";
+            }
+            print "<A HREF=\"$base\">";
+            print "<IMG ALIGN=MIDDLE BORDER=0 SRC=\"$img\"></A>\n";
+        }
+
+        sleep $delay;
+
+    } while (1);
+}
+
+
+#################################
+#
+# running as an xscreensaver mode
+#
+#################################
+
+
+my $image = ($ENV{TMPDIR} ? $ENV{TMPDIR} : "/tmp") . "/webcollage." . $$;
+my $tmp   = $image . "-1";
+my $tmp2  = $image . "-2";
+my $tmp3  = $image . "-3";
+
+sub x_cleanup {
+    if ($DEBUG > 0) { print STDERR "caught signal\n"; }
+    unlink $image, $tmp, $tmp2, $tmp3;
+    exit 1;
+}
+
+my $screen_width = undef;
+my $screen_height = undef;
+
+sub do_x_output {
+
+    my $win_cmd = $ppm_to_root_window_cmd;
+    $win_cmd =~ s/^([^ \t\r\n]+).*$/$1/;
+
+    # make sure the various programs we execute exist, right up front.
+    foreach ("ppmmake", "giftopnm", "djpeg", "pnmpaste", $win_cmd) {
+        which ($_) || die "$progname: $_ not found on \$PATH.\n";
+    }
+
+    $SIG{HUP}  = \&x_cleanup;
+    $SIG{INT}  = \&x_cleanup;
+    $SIG{QUIT} = \&x_cleanup;
+    $SIG{ABRT} = \&x_cleanup;
+    $SIG{KILL} = \&x_cleanup;
+    $SIG{TERM} = \&x_cleanup;
+
+    # Need this so that if giftopnm dies, we don't die.
+    $SIG{PIPE} = 'IGNORE';
+
+    if (!$screen_width || !$screen_height) {
+        $_ = `xdpyinfo`;
+        ($screen_width, $screen_height) = m/dimensions: *([0-9]+)x([0-9]+) /;
+    }
+
+    my $bgcolor = "#000000";
+    my $bgimage = undef;
+
+    if ($background) {
+        if ($background =~ m/^\#[0-9a-f]+$/i) {
+            $bgcolor = $background;
+        } elsif (-r $background) {
+            $bgimage = $background;
+            
+        } elsif (! $background =~ m@^[-a-z0-9 ]+$@i) {
+            print STDERR "not a color or readable file: $background\n";
+            exit 1;
+        } else {
+            # default to assuming it's a color
+            $bgcolor = $background;
+        }
+    }
+
+    # Create the sold-colored base image.
+    #
+    $_ = "ppmmake '$bgcolor' $screen_width $screen_height";
+    if ($DEBUG > 1) {
+        print STDERR "creating base image: $_\n";
+    }
+    system "$_ > $image";
+
+    # Paste the default background image in the middle of it.
+    #
+    if ($bgimage) {
+        my ($iw, $ih);
+        if (open(IMG, "<$bgimage")) {
+            $_ = <IMG>;
+            $_ = <IMG>;
+            ($iw, $ih) = m/^([0-9]+) ([0-9]+)$/;
+            close (IMG);
+        }
+        my $x = int (($screen_width - $iw) / 2);
+        my $y = int (($screen_height - $ih) / 2);
+        if ($DEBUG > 1) {
+            print STDERR "pasting $bgimage into base image at $x, $y\n";
+        }
+        system "pnmpaste $bgimage $x $y $image > $tmp2 && mv $tmp2 $image";
+    }
+
+
+    do {
+        my ($base, $img) = pick_image;
+
+        my ($headers, $body);
+        if ($img) {
+            ($headers, $body) = get_document ($img);
+        }
+
+        if ($body) {
+
+            if ($DEBUG > 0) {
+                print STDERR "got $img (" . length($body) . ")\n";
+            }
+
+            my $cmd;
+            if ($img =~ m/\.gif/i) {
+                $cmd = "giftopnm";
+            } else {
+                $cmd = "djpeg";
+            }
+
+            if ($DEBUG == 0) {
+                $cmd .= " 2>/dev/null";
+            }
+
+            if (open(PIPE, "| $cmd > $tmp")) {
+                print PIPE $body;
+                close PIPE;
+
+                if ($DEBUG > 1) {
+                    print STDERR "created $tmp ($cmd)\n";
+                }
+            }
+
+            if (-s $tmp) {
+
+                if ($filter_cmd) {
+                    if ($DEBUG > 1) {
+                        print STDERR "running $filter_cmd\n";
+                    }
+                    system "($filter_cmd) < $tmp > $tmp3 && mv $tmp3 $tmp";
+                }
+
+                my ($iw, $ih);
+                if (open(IMG, "<$tmp")) {
+                    $_ = <IMG>;
+                    $_ = <IMG>;
+                    ($iw, $ih) = m/^([0-9]+) ([0-9]+)$/;
+                    close (IMG);
+                }
+
+                if ($iw && $ih) {
+
+                    if ($DEBUG > 1) {
+                        print STDERR "image size is $iw x $ih\n";
+                    }
+
+                    if ($iw > $screen_width || $ih > $screen_height) {
+                        while ($iw > $screen_width ||
+                               $ih > $screen_height) {
+                            $iw = int($iw / 2);
+                            $ih = int($ih / 2);
+                        }
+                        if ($DEBUG > 1) {
+                            print STDERR "scaling to $iw x $ih\n";
+                        }
+                        system "pnmscale -xysize $iw $ih $tmp > $tmp2" .
+                               " 2>/dev/null && mv $tmp2 $tmp";
+                    }
+
+                    my $x = int (rand() * ($screen_width - $iw));
+                    my $y = int (rand() * ($screen_height - $ih));
+
+                    if ($DEBUG > 1) {
+                        print STDERR "pasting at $x, $y in $image\n";
+                    }
+
+                    system "pnmpaste $tmp $x $y $image > $tmp2 " .
+                           "&& mv $tmp2 $image";
+
+
+                    my $target = $image;
+                    if ($post_filter_cmd) {
+                        if ($DEBUG > 1) {
+                            print STDERR "running $post_filter_cmd\n";
+                        }
+                        system "($post_filter_cmd) < $image > $tmp3";
+                        $target = $tmp3;
+                    }
+
+                    if (!$no_output_p) {
+
+                        my $tsize = (stat($target))[7];
+                        if ($tsize > 200) {
+                            $_ = $ppm_to_root_window_cmd;
+                            s/%%PPM%%/$target/;
+
+                            if ($DEBUG > 1) {
+                                print STDERR "running $_\n";
+                            }
+                            system $_;
+
+                        } elsif ($DEBUG > 1) {
+                            print STDERR "$target size is $tsize\n";
+                        }
+                    }
+                }
+            }
+            unlink $tmp, $tmp2, $tmp3;
+        }
+
+        sleep $delay;
+
+    } while (1);
+}
+
+
+#################################
+#
+# decide how to run
+#
+#################################
+
+sub main {
+    srand(time ^ $$);
+
+    my $usage ="WebCollage, Copyright (c) 1999" .
+        " Jamie Zawinski <jwz\@jwz.org>\n" .
+        "            http://www.jwz.org/xscreensaver/\n";
+
+    if ( $progname =~ m/\.cgi$/i ) {
+        $#ARGV == -1 || die "$usage\nusage: $progname (no arguments)\n";
+        do_html_output;
+
+    } else {
+        my $root_p = 0;
+
+        while ($_ = $ARGV[0]) {
+            shift @ARGV;
+            if ($_ eq "-display" ||
+                $_ eq "-displ" ||
+                $_ eq "-disp" ||
+                $_ eq "-dis" ||
+                $_ eq "-dpy" ||
+                $_ eq "-d") {
+                $ENV{DISPLAY} = shift @ARGV;
+            } elsif ($_ eq "-root") {
+                $root_p = 1;
+            } elsif ($_ eq "-no-output") {
+                $no_output_p = 1;
+            } elsif ($_ eq "-verbose") {
+                $DEBUG++;
+            } elsif (m/^-v+$/) {
+                $DEBUG += length($_)-1;
+            } elsif ($_ eq "-delay") {
+                $delay = shift @ARGV;
+            } elsif ($_ eq "-timeout") {
+                $http_timeout = shift @ARGV;
+            } elsif ($_ eq "-filter") {
+                $filter_cmd = shift @ARGV;
+            } elsif ($_ eq "-filter2") {
+                $post_filter_cmd = shift @ARGV;
+            } elsif ($_ eq "-background" || $_ eq "-bg") {
+                $background = shift @ARGV;
+            } elsif ($_ eq "-size") {
+                $_ = shift @ARGV;
+                if (m@^([0-9]+)x([0-9]+)$@) {
+                    $screen_width = $1;
+                    $screen_height = $2;
+                } else {
+                    die "$progname: argument to \"-size\" must be" .
+                        " of the form \"640x400\"\n";
+                }
+            } else {
+               die "$usage\nusage: $progname [-root]" .
+                   " [-display dpy] [-root] [-verbose] [-timeout secs]\n" .
+                   "\t\t  [-delay secs] [-filter cmd] [-filter2 cmd]\n";
+            }
+        }
+        if (!$root_p && !$no_output_p) {
+            die "$progname: the -root argument is manditory (for now.)\n";
+        }
+
+        if (!$no_output_p && !$ENV{DISPLAY}) {
+            die "$progname: \$DISPLAY is not set.\n";
+        }
+
+        do_x_output;
+    }
+}
+
+main;
+exit 0;
diff --git a/local/bin/worm b/local/bin/worm
new file mode 100755 (executable)
index 0000000..c438bab
Binary files /dev/null and b/local/bin/worm differ
diff --git a/local/bin/xcoral b/local/bin/xcoral
new file mode 100755 (executable)
index 0000000..fc62e52
Binary files /dev/null and b/local/bin/xcoral differ
diff --git a/local/bin/xflame b/local/bin/xflame
new file mode 100755 (executable)
index 0000000..4b95255
Binary files /dev/null and b/local/bin/xflame differ
diff --git a/local/bin/xjack b/local/bin/xjack
new file mode 100755 (executable)
index 0000000..91f79ee
Binary files /dev/null and b/local/bin/xjack differ
diff --git a/local/bin/xjulia b/local/bin/xjulia
new file mode 100755 (executable)
index 0000000..4dcfc00
Binary files /dev/null and b/local/bin/xjulia differ
diff --git a/local/bin/xlyap b/local/bin/xlyap
new file mode 100755 (executable)
index 0000000..82b994e
Binary files /dev/null and b/local/bin/xlyap differ
diff --git a/local/bin/xmatrix b/local/bin/xmatrix
new file mode 100755 (executable)
index 0000000..50603df
Binary files /dev/null and b/local/bin/xmatrix differ
diff --git a/local/bin/xroger b/local/bin/xroger
new file mode 100755 (executable)
index 0000000..30a52ca
Binary files /dev/null and b/local/bin/xroger differ
diff --git a/local/bin/xscreensaver b/local/bin/xscreensaver
new file mode 100755 (executable)
index 0000000..2ce5a47
Binary files /dev/null and b/local/bin/xscreensaver differ
diff --git a/local/bin/xscreensaver-command b/local/bin/xscreensaver-command
new file mode 100755 (executable)
index 0000000..0f3bad6
Binary files /dev/null and b/local/bin/xscreensaver-command differ
diff --git a/local/bin/xscreensaver-demo b/local/bin/xscreensaver-demo
new file mode 100755 (executable)
index 0000000..b6c50f7
Binary files /dev/null and b/local/bin/xscreensaver-demo differ
diff --git a/local/man/cat.1/attraction.1 b/local/man/cat.1/attraction.1
new file mode 100644 (file)
index 0000000..629557b
--- /dev/null
@@ -0,0 +1,264 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       attraction - interactions of opposing forces
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       a\bat\btt\btr\bra\bac\bct\bti\bio\bon\bn   [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-points _\bi_\bn_\bt] [-threshold _\bi_\bn_\bt]
+       [-mode balls | lines | polygons | splines | filled-splines
+       |  tails  ]  [-size  _\bi_\bn_\bt]  [-segments  _\bi_\bn_\bt] [-delay _\bu_\bs_\be_\bc_\bs]
+       [-color-shift _\bi_\bn_\bt]  [-radius  _\bi_\bn_\bt]  [-vx  _\bi_\bn_\bt]  [-vy  _\bi_\bn_\bt]
+       [-glow]  [-noglow]  [-orbit]  [-viscosity  _\bf_\bl_\bo_\ba_\bt] [-mouse]
+       [-no-mouse] [-mouse-size]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\ba_\bt_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn  program  has  several  visually  different
+       modes of operation, all of which are based on the interac-
+       tions of a set of control points which attract each  other
+       up  to  a  certain  distance, and then begin to repel each
+       other.  The attraction/repulsion is  proportional  to  the
+       distance between any two particles.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\ba_\bt_\bt_\br_\ba_\bc_\bt_\bi_\bo_\bn accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-p\bpo\boi\bin\bnt\bts\bs i\bin\bnt\bte\beg\bge\ber\br
+               How  many  control  points should be used, or 0 to
+               select the number randomly.  Default 0.  Between 3
+               and 15 works best.
+
+       -\b-t\bth\bhr\bre\bes\bsh\bho\bol\bld\bd i\bin\bnt\bte\beg\bge\ber\br
+               The  distance  (in  pixels)  from each particle at
+               which  the  attractive  force  becomes  repulsive.
+               Default 100.
+
+       -\b-m\bmo\bod\bde\be b\bba\bal\bll\bls\bs |\b| l\bli\bin\bne\bes\bs |\b| p\bpo\bol\bly\byg\bgo\bon\bns\bs |\b| t\bta\bai\bil\bls\bs |\b| s\bsp\bpl\bli\bin\bne\bes\bs |\b| f\bfi\bil\bll\ble\bed\bd-\b-
+               s\bsp\bpl\bli\bin\bne\bes\bs
+               In _\bb_\ba_\bl_\bl_\bs mode (the default) the control points are
+               drawn as filled circles.  The larger  the  circle,
+
+
+
+X Version 11                14-Jun-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               the more massive the particle.
+
+               In _\bl_\bi_\bn_\be_\bs mode, the control points are connected by
+               straight lines; the effect is something like  _\bq_\bi_\bx.
+
+               In _\bp_\bo_\bl_\by_\bg_\bo_\bn_\bs mode, the control points are connected
+               by straight lines, and filled in.   This  is  most
+               interesting in color.
+
+               In  _\bs_\bp_\bl_\bi_\bn_\be_\bs  mode, a closed spline is interpolated
+               from the control points.
+
+               In _\bf_\bi_\bl_\bl_\be_\bd_\b-_\bs_\bp_\bl_\bi_\bn_\be_\bs mode, the splines are filled  in
+               instead of being outlines.  This is most interest-
+               ing in color.
+
+               In _\bt_\ba_\bi_\bl_\bs mode, the path which each  particle  fol-
+               lows  is  indicated  by  a  worm-like trail, whose
+               length is controlled by the _\bs_\be_\bg_\bm_\be_\bn_\bt_\bs parameter.
+
+       -\b-s\bsi\biz\bze\be i\bin\bnt\bte\beg\bge\ber\br
+               The size of the balls in pixels, or 0, meaning  to
+               select  the sizes randomly (the default.)  If this
+               is specified, then all  balls  will  be  the  same
+               size.   This  option  has  an effect in all modes,
+               since the ``size'' of  the  balls  controls  their
+               mass.
+
+       -\b-s\bse\beg\bgm\bme\ben\bnt\bts\bs i\bin\bnt\bte\beg\bge\ber\br
+               If  in  _\bl_\bi_\bn_\be_\bs  or  _\bp_\bo_\bl_\by_\bg_\bo_\bn_\bs mode, how many sets of
+               line segments or polygons should be drawn. Default
+               100.   This  has no effect in _\bb_\ba_\bl_\bl_\bs mode.  If _\bs_\be_\bg_\b-
+               _\bm_\be_\bn_\bt_\bs is 0, then no segments will ever  be  erased
+               (this is only useful in color.)
+
+       -\b-d\bde\bel\bla\bay\by m\bmi\bic\bcr\bro\bos\bse\bec\bco\bon\bnd\bds\bs
+               How  much  of a delay should be introduced between
+               steps of the animation.  Default 10000,  or  about
+               0.01 seconds.
+
+       -\b-c\bco\bol\blo\bor\br-\b-s\bsh\bhi\bif\bft\bt i\bin\bnt\bt
+               If  on a color display, the color of the line seg-
+               ments or polygons will  cycle  through  the  color
+               map.   This specifies how many lines will be drawn
+               before a new color is chosen.  (When a small  num-
+               ber of colors are available, increasing this value
+               will  yield  smoother  transitions.)   Default  3.
+               This has no effect in _\bb_\ba_\bl_\bl_\bs mode.
+
+       -\b-r\bra\bad\bdi\biu\bus\bs The  size  in  pixels  of  the circle on which the
+               points are initially positioned.  The  default  is
+               slightly smaller than the size of the window.
+
+       -\b-g\bgl\blo\bow\bw   This  is consulted only in _\bb_\ba_\bl_\bl_\bs mode.  If this is
+
+
+
+X Version 11                14-Jun-97                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               specified, then the saturation of  the  colors  of
+               the  points  will  vary according to their current
+               acceleration.  This has the effect that the  balls
+               flare  brighter  when  they  are  reacting to each
+               other most strongly.
+
+               In _\bg_\bl_\bo_\bw mode, all of the balls will be  drawn  the
+               same (random) color, modulo the saturation shifts.
+               In non-glow mode, the balls will each be drawn  in
+               a random color that doesn't change.
+
+       -\b-n\bno\bog\bgl\blo\bow\bw Don't do ``glowing.''  This is the default.
+
+       -\b-v\bvx\bx p\bpi\bix\bxe\bel\bls\bs
+
+       -\b-v\bvy\by p\bpi\bix\bxe\bel\bls\bs
+               Initial velocity of the balls.  This has no effect
+               in -\b-o\bor\brb\bbi\bit\bt mode.
+
+       -\b-o\bor\brb\bbi\bit\bt  Make the initial force on each ball be  tangential
+               to  the circle on which they are initially placed,
+               with the right velocity  to  hold  them  in  orbit
+               about  each other.  After a while, roundoff errors
+               will cause the orbit to decay.
+
+       -\b-v\bvm\bmu\bul\blt\bt f\bfl\blo\boa\bat\bt
+               In orbit mode, the initial velocity of  the  balls
+               is  multiplied  by this; a number less than 1 will
+               make the balls pull closer together, and a  larger
+               number  will make them move apart.  The default is
+               0.9, meaning a slight inward pull.
+
+       -\b-v\bvi\bis\bsc\bco\bos\bsi\bit\bty\by f\bfl\blo\boa\bat\bt
+               This sets the viscosity of the hypothetical  fluid
+               through which the control points move; the default
+               is 1, meaning no resistance.  Values higher than 1
+               aren't   interesting;   lower  values  cause  less
+               motion.
+
+               One interesting thing to try is
+
+                    attraction -viscosity 0.8 -points 75 \
+                      -mouse -geometry =500x500
+
+               Give it a few seconds to settle down into a stable
+               clump,  and then move the mouse through it to make
+               "waves".
+
+       -\b-m\bmo\bou\bus\bse\be  This will cause the mouse to be considered a  con-
+               trol  point;  it  will  not  be drawn, but it will
+               influence the other points, so you  can  wave  the
+               mouse and influence the images being created.
+
+
+
+
+
+X Version 11                14-Jun-97                           3
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-n\bno\bo-\b-m\bmo\bou\bus\bse\be
+               Turns off -\b-m\bmo\bou\bus\bse\be.
+
+       -\b-m\bmo\bou\bus\bse\be-\b-s\bsi\biz\bze\be i\bin\bnt\bte\beg\bge\ber\br
+               In  -\b-m\bmo\bou\bus\bse\be  mode,  this sets the mass of the mouse
+               (analagously to the -\b-s\bsi\biz\bze\be parameter.)
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1992, 1993, 1997 by Jamie Zawinski.  Permis-
+       sion to use, copy, modify, distribute, and sell this soft-
+       ware 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 pro-
+       vided "as is" without express or implied warranty.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+       Viscosity and mouse support by Philip Edward Cutone,  III.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                14-Jun-97                           4
+
+
diff --git a/local/man/cat.1/blitspin.1 b/local/man/cat.1/blitspin.1
new file mode 100644 (file)
index 0000000..a87f771
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       blitspin - rotate a bitmap in an interesting way
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       b\bbl\bli\bit\bts\bsp\bpi\bin\bn   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]   [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install]  [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-bitmap  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [-delay
+       _\bu_\bs_\be_\bc_\bs] [-delay2 _\bu_\bs_\be_\bc_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bb_\bl_\bi_\bt_\bs_\bp_\bi_\bn program repeatedly rotates  a  bitmap  by  90
+       degrees by using logical operations: the bitmap is divided
+       into quadrants, and the quadrants are  shifted  clockwise.
+       Then  the  same  thing  is  done  again with progressively
+       smaller quadrants, except  that  all  sub-quadrants  of  a
+       given  size  are  rotated  in  parallel.   So  this  takes
+       O\bO(\b(1\b16\b6*\b*l\blo\bog\bg2\b2(\b(N\bN)\b))\b) blits of size NxN, with the limitation  that
+       the  image must be square, and the size must be a power of
+       2.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bb_\bl_\bi_\bt_\bs_\bp_\bi_\bn accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-b\bbi\bit\btm\bma\bap\bp _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+               The file name of a bitmap to rotate.  It need  not
+               be  square:  it will be padded with the background
+               color.  If unspecified or the string _\b(_\bd_\be_\bf_\ba_\bu_\bl_\bt_\b),  a
+               builtin bitmap is used.
+
+               If support for the _\bX_\bP_\bM library was enabled at com-
+               pile-time, the specified file may be in _\bX_\bP_\bM format
+               as well as _\bX_\bB_\bM, and thus may be a color image.
+
+               The  *\b*b\bbi\bit\btm\bma\bap\bpF\bFi\bil\ble\beP\bPa\bat\bth\bh  resource will be searched if
+               the bitmap name is not a fully-qualified pathname.
+
+       -\b-g\bgr\bra\bab\bb-\b-s\bsc\bcr\bre\bee\ben\bn
+               If  this option is specified, then the image which
+
+
+
+X Version 11                24-Nov-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               is spun will be grabbed from the  portion  of  the
+               screen  underlying  the  blitspin window.  (Or, it
+               may  come  from  an  external  video  source:  see
+               below.)
+
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How  long  to  delay between steps of the rotation
+               process, in microseconds.  Default is 500000, one-
+               half second.
+
+
+       -\b-d\bde\bel\bla\bay\by2\b2 _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to delay between each 90-degree rotation,
+               in microseconds.  Default is 500000, one-half sec-
+               ond.   D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display
+               number.
+
+R\bRE\bES\bSO\bOU\bUR\bRC\bCE\bES\bS
+       On some systems (currently, only SGIs), this program  can,
+       instead of grabbing a desktop image, grab a frame of video
+       from an external camera and manipulate that instead.   The
+       following resources control that.
+
+
+       g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by (Float)
+               What portion of the time to grab video rather than
+               a screen image, between 0.0 and 1.0.  Defaults  to
+               0.5, or half the time.
+
+       v\bvi\bid\bde\beo\boD\bDe\bev\bvi\bic\bce\be (Integer)
+               The  number  of  the default video input device to
+               check first.  If unspecified, the  default  camera
+               (from videopanel(1)) will be checked first.  After
+               that, all other available video input devices will
+               be checked in order.
+
+               The  first  one  which  produces a non-black image
+               will be used.  If all images are black, the others
+               will  be  re-checked  a few times before giving up
+               and falling back  to  simply  grabbing  a  desktop
+               image  (but note that this takes a few seconds, so
+               if you  don't  actually  have  any  video  sources
+               hooked  up,  you should consider turning off video
+               grabbing by setting g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by to  0.0.)
+
+       v\bvi\bid\bde\beo\boG\bGa\bai\bin\bn (Float)
+               The amount by which to brighten the grabbed image.
+               This defaults to 2.2.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT to get the name of a resource file that over-
+       rides  the global resources stored in the RESOURCE_MANAGER
+       property.
+
+
+
+X Version 11                24-Nov-97                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1992, 1993, 1997 by Jamie Zawinski.  Permis-
+       sion to use, copy, modify, distribute, and sell this soft-
+       ware 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 pro-
+       vided "as is" without express or implied warranty.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 17-aug-92.
+
+       Based on SmallTalk code which appeared in the August  1981
+       issue of Byte magazine.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                24-Nov-97                           3
+
+
diff --git a/local/man/cat.1/bouboule.1 b/local/man/cat.1/bouboule.1
new file mode 100644 (file)
index 0000000..852fcc7
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       bouboule - draws spinning 3D blobs
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       b\bbo\bou\bub\bbo\bou\bul\ble\be   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]   [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install]  [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-ncolors  _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay
+       _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs] [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count _\bi_\bn_\bt_\be_\bg_\be_\br] [-3d]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bb_\bo_\bu_\bb_\bo_\bu_\bl_\be program draws spinning 3D blobs.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bb_\bo_\bu_\bb_\bo_\bu_\bl_\be accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default  64.   The  colors  used cycle through the
+               hue, making N stops around the color wheel.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-3\b3d\bd     Do red/blue 3d separations (for 3d glasses.)
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+
+
+
+X Version 11                15-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1996 by Jeremie Petit.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jeremie Petit <jpetit@essi.fr>, 1996.
+
+       3D  support  by Henrik Theiling <theiling@coli-uni-sb.de>,
+       04-Sep-96.
+
+       VMS  support  by  Jouk  Jansen  <joukj@alpha.chem.uva.nl>,
+       01-Feb-96.
+
+       TrueColor  support  by David Bagley <bagleyd@bigfoot.com>,
+       01-Feb-96.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 15-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                15-May-97                           2
+
+
diff --git a/local/man/cat.1/braid.1 b/local/man/cat.1/braid.1
new file mode 100644 (file)
index 0000000..06d8d11
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       braid - draws random color-cycling braids around a circle
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       b\bbr\bra\bai\bid\bd  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count _\bi_\bn_\bt_\be_\bg_\be_\br]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bb_\br_\ba_\bi_\bd program draws random color-cycling braids around
+       a circle.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bb_\br_\ba_\bi_\bd accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 64.  The colors  used  cycle  through  the
+               hue, making N stops around the color wheel.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1995 by John Neil.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       John Neil <neil@math.idbsu.edu>, 29-Aug-95.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/bsod.1 b/local/man/cat.1/bsod.1
new file mode 100644 (file)
index 0000000..52d9d20
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       bsod - Blue Screen of Death emulator
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       b\bbs\bso\bod\bd  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-delay _\bs_\be_\bc_\bo_\bn_\bd_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bb_\bs_\bo_\bd program is the finest in personal computer emula-
+       tion.
+
+       _\bb_\bs_\bo_\bd steps through a set of screens, each one a recreation
+       of  a different failure mode of an operating system.  Sys-
+       tems depicted include Microsoft's Windows 95  and  Windows
+       NT, Commodore-Amiga's AmigaDOS 1.3, SPARC Linux, SCO UNIX,
+       the Apple Macintosh (both the  MacsBug  debugger  and  the
+       rarer "Sad Mac"), and the Atari ST.
+
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bb_\bs_\bo_\bd accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bd_\be_\bl_\ba_\by
+               The   delay   between  displaying  one  crash  and
+               another.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+X\bX R\bRE\bES\bSO\bOU\bUR\bRC\bCE\bES\bS
+       Notable X resources supported include the following, which
+       control  which  hacks  are  displayed  and  which  aren't.
+
+
+
+X Version 11                28-Oct-98                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       d\bdo\boW\bWi\bin\bnd\bdo\bow\bws\bs,  d\bdo\boN\bNT\bT,  d\bdo\boA\bAm\bmi\big\bga\ba,   d\bdo\boM\bMa\bac\bc,   d\bdo\boM\bMa\bac\bcs\bsB\bBu\bug\bg,   d\bdo\boS\bSC\bCO\bO,
+       d\bdo\boA\bAt\bta\bar\bri\bi,  and  d\bdo\boS\bSp\bpa\bar\brc\bcL\bLi\bin\bnu\bux\bx.   Each  of these is a Boolean
+       resource, they all default to  true,  except  for  doSpar-
+       cLinux  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.  There aren't com-
+       mand-line options for these, so  to  change  them,  you'll
+       need  to  add  entries to your .Xdefaults file, or use the
+       -xrm option.  For example, to tell bsod not to show the NT
+       crash:
+
+            bsod -xrm '*doNT: false'
+
+
+B\bBU\bUG\bGS\bS
+       Unlike the systems that the images are borrowed from, _\bb_\bs_\bo_\bd
+       does not require a reboot after running.
+
+       _\bb_\bs_\bo_\bd should also emulate more systems,  but  systems  with
+       interesting  crash graphics are not as common as one might
+       hope.
+
+       One I'd really like to see is a Unix system getting a ker-
+       nel panic, rebooting, and running f\bfs\bsc\bck\bk(8).
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1),      x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1),     h\bht\btt\btp\bp:\b:/\b//\b/w\bww\bww\bw.\b.m\bmi\bic\bcr\bro\bos\bso\bof\bft\bt.\b.c\bco\bom\bm/\b/,
+       h\bht\btt\btp\bp:\b:/\b//\b/w\bww\bww\bw.\b.a\bap\bpp\bpl\ble\be.\b.c\bco\bom\bm/\b/,      and       h\bht\btt\btp\bp:\b:/\b//\b/w\bww\bww\bw.\b.s\bsc\bco\bo.\b.c\bco\bom\bm/\b/,
+       h\bht\btt\btp\bp:\b:/\b//\b/w\bww\bww\bw.\b.k\bke\ber\brn\bne\bel\bl.\b.o\bor\brg\bg/\b/, and h\bht\btt\btp\bp:\b:/\b//\b/w\bww\bww\bw.\b.a\bam\bmi\big\bga\ba.\b.d\bde\be/\b/.
+
+T\bTR\bRA\bAD\bDE\bEM\bMA\bAR\bRK\bKS\bS
+       Microsoft  Windows,  Microsoft  Windows  95, and Microsoft
+       Windows NT are all registered trademarks of Microsoft Cor-
+       poration.   Apple  Macintosh  is a registered trademark of
+       Apple Computer.  Amiga is a registered trademark of  Amiga
+       International,  Inc.   Atari  ST  is probably a trademark,
+       too, but it's hard to tell who owns it. Linux is a  regis-
+       tered trademark of Linus Torvalds, but it isn't his fault.
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1998 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 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.  No animals were harmed  dur-
+       ing  the  testing  of  these  simulations.  Always mount a
+       scratch monkey.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Concept cribbed  from  Stephen  Martin  <smartin@mks.com>.
+
+
+
+X Version 11                28-Oct-98                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       This version is by Jamie Zawinski <jwz@jwz.org>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                28-Oct-98                           3
+
+
diff --git a/local/man/cat.1/bubbles.1 b/local/man/cat.1/bubbles.1
new file mode 100644 (file)
index 0000000..27e7ed8
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       bubbles - frying pan / soft drink simulation
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       b\bbu\bub\bbb\bbl\ble\bes\bs [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-simple]  [-broken] [-3D] [-file file-
+       name] [-directory directoryname]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       _\bB_\bu_\bb_\bb_\bl_\be_\bs sprays lots of little random bubbles all over  the
+       window which then grow until they reach their maximum size
+       and go pop.  The inspiration for this was watching  little
+       globules  of oil on the bottom of a frying pan and it also
+       looks a little like bubbles  in  fizzy  soft  drink.   The
+       default  mode  uses  fancy ray-traced bubbles but there is
+       also a mode which just draws circles in case  the  default
+       mode is too taxing on your hardware.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       Depending on how your _\bb_\bu_\bb_\bb_\bl_\be_\bs was compiled, it accepts the
+       following options:
+
+       -\b-f\bfo\bor\bre\beg\bgr\bro\bou\bun\bnd\bd
+               Colour of circles if _\b-_\bs_\bi_\bm_\bp_\bl_\be mode is selected.
+
+       -\b-b\bba\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd
+               Colour of window background.
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by m\bmi\bic\bcr\bro\bos\bse\bec\bco\bon\bnd\bds\bs
+               How much of a delay should be  introduced  between
+               steps  of  the  animation.   Default 1, or about 1
+               microsecond.  Actually, this is the delay  between
+               each  group  of  15 new bubbles since such a delay
+               between each step results in a very slow animation
+               rate.
+
+
+
+
+
+X Version 11                14-Dec-95                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-n\bno\bod\bde\bel\bla\bay\by
+               Same as _\b-_\bd_\be_\bl_\ba_\by _\b0.
+
+       -\b-s\bsi\bim\bmp\bpl\ble\be Don't  use the default fancy pixmap bubbles.  Just
+               draw circles instead.  This may give more bearable
+               performance  if your hardware wasn't made for this
+               sort of thing.
+
+       -\b-b\bbr\bro\bok\bke\ben\bn Don't hide bubbles when they pop.  This was a  bug
+               during  development  but the results were actually
+               quite attractive.  (This option is only  available
+               if  you  have  the  XPM  library available and the
+               imake generated Makefile has defined HAVE_XPM).
+
+       -\b-3\b3D\bD     Normally, the simulation is done completely in two
+               dimensions.   When  a  bubble  swallows up another
+               bubble, the areas of each are  added  to  get  the
+               area of the resulting bubble.  This option changes
+               the algorithm to  instead  add  volume  (imagining
+               each to be a sphere in 3D space).  The whole thing
+               looks more realistic but I find it attracts atten-
+               tion  to the flickering of each bubble as they are
+               move and are redrawn.  Your mileage may vary.
+
+       -\b-f\bfi\bil\ble\be f\bfi\bil\ble\ben\bna\bam\bme\be
+               Use the pixmap  definitions  in  the  given  file,
+               instead  of  the  default (if one is compiled in).
+               This is ignored if _\b-_\bs_\bi_\bm_\bp_\bl_\be is specified.   If  the
+               file is compressed (either with compress or gzip),
+               it is decompressed before use.  (This option  only
+               works  if  you  have XPM compiled into your binary
+               and you have compiled with BUBBLES_IO set in  bub-
+               bles.h.  This is n\bno\bot\bt the default).
+
+       -\b-d\bdi\bir\bre\bec\bct\bto\bor\bry\by d\bdi\bir\bre\bec\bct\bto\bor\bry\byn\bna\bam\bme\be
+               Similar to _\b-_\bf_\bi_\bl_\be except the file is taken randomly
+               from the  contents  of  the  specified  directory.
+               (Again,  this option is only available if you have
+               XPM and BUBBLES_IO was set  when  compiling.   See
+               above).
+
+       -\b-q\bqu\bui\bie\bet\bt  Don't print messages explaining why one or several
+               command line options were ignored.  This  is  dis-
+               abled by default.
+
+N\bNO\bOT\bTE\bES\bS
+       If  you  find  the  pace of things too slow, remember that
+       there is a delay even though you specify no _\b-_\bd_\be_\bl_\ba_\by option.
+       Try using _\b-_\bn_\bo_\bd_\be_\bl_\ba_\by although beware of the effects of irri-
+       tation of other users if you're on a shared system as  you
+       bleed their CPU time away.
+
+       Some  tools  to  assist  in  creation  of  new bubbles are
+       included in the source distribution.  These can either  be
+
+
+
+X Version 11                14-Dec-95                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       loaded with the _\b-_\bf_\bi_\bl_\be or _\b-_\bd_\bi_\br_\be_\bc_\bt_\bo_\br_\by options (if available)
+       or they can be used in place of  the  distributed  default
+       bubble  (bubble_default.c).   You might like to copy these
+       scripts to a permanent location and use them.   Read  bub-
+       bles.README.
+
+       Rendered bubbles are not supported on monochrome displays.
+       I'm not convinced that small bubbles, even dithered  prop-
+       erly are going to look like anything more than a jumble of
+       random dots.
+
+B\bBU\bUG\bGS\bS
+       There is a delay before something appears  on  the  screen
+       when  using  rendered  bubbles.   The XPM library seems to
+       take a l\blo\bon\bng\bg time to make pixmaps out of  raw  data.   This
+       can be irritating on slower systems.
+
+       The  movement  of the bubbles looks jerky if an incomplete
+       set of bubbles is used.
+
+       The hide/display algorithm could  do  with  some  work  to
+       avoid flickering when _\b-_\bn_\bo_\bd_\be_\bl_\ba_\by is set.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+D\bDI\bIS\bST\bTR\bRI\bIB\bBU\bUT\bTI\bIO\bON\bN P\bPO\bOL\bLI\bIC\bCY\bY
+       This  work  is Copyright (C) 1995, 1996 by James Macnicol.
+       Distribution is allowed under the terms of the GNU General
+       Public License.  Look at the sources for the legalese.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       James Macnicol <J.Macnicol@student.anu.edu.au>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                14-Dec-95                           3
+
+
diff --git a/local/man/cat.1/critical.1 b/local/man/cat.1/critical.1
new file mode 100644 (file)
index 0000000..a28582d
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       critical - Draw a system showing self-organizing critical-
+       ity
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       c\bcr\bri\bit\bti\bic\bca\bal\bl   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]   [-foreground
+       _\bc_\bo_\bl_\bo_\br]   [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]  [-mono]
+       [-install]  [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-delay  _\bs_\be_\bc_\bo_\bn_\bd_\bs]  [-random
+       _\bb_\bo_\bo_\bl_\be_\ba_\bn] [-ncolors _\bi_\bn_\bt] [-offset _\bi_\bn_\bt]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bc_\br_\bi_\bt_\bi_\bc_\ba_\bl  program displays a self-organizing critical
+       system that gradually emerges from chaos.
+
+       _\bc_\br_\bi_\bt_\bi_\bc_\ba_\bl performs a simulation on a two-dimensional  array
+       of  integers.   The array is initialized to random values.
+       On each iteration, it draws a line to the  array  position
+       with  the  greatest value.  It then replaces that location
+       and the eight neighboring locations with randomly-selected
+       values.
+
+       The  lines  are  initially random, but over time a chaotic
+       self-organizing system evolves: areas of the screen  which
+       happen  to have lower values are less likely to be updated
+       to new values, and so the line tends to avoid those areas.
+       Eventually, the histogram of changes approaches the power-
+       law curve typical of such systems.
+
+       The simplest documented self-organizing system is the one-
+       dimensional equivalent of _\bc_\br_\bi_\bt_\bi_\bc_\ba_\bl.
+
+       I heard about this algorithm second-hand: apparently there
+       was an article in _\bS_\bc_\bi_\be_\bn_\bt_\bi_\bf_\bi_\bc _\bA_\bm_\be_\br_\bi_\bc_\ba_\bn describing it  some-
+       time in 1997.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bc_\br_\bi_\bt_\bi_\bc_\ba_\bl accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+
+
+
+X Version 11                13-Nov-98                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-d\bde\bel\bla\bay\by _\bu_\bs_\be_\bc_\bs
+               Number  of microseconds to wait after drawing each
+               line.
+
+       -\b-r\bra\ban\bnd\bdo\bom\bm _\bb_\bo_\bo_\bl_\be_\ba_\bn
+               Whether to use randomly  selected  colours  rather
+               than a cycle around the colour wheel.
+
+       -\b-o\bof\bff\bfs\bse\bet\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               The maximum random radius increment to use.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors should be allocated in the color
+               ramp (note that this value interacts with _\bo_\bf_\bf_\bs_\be_\bt.)
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1),   x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)  x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-c\bco\bom\bmm\bma\ban\bnd\bd(1)  x\bxs\bsc\bcr\bre\bee\ben\bn-\b-
+       s\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1998 by Martin Pool.
+
+       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  pro-
+       vided "as is" without express or implied warranty.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Martin  Pool  <mbp@humbug.org.au>,  13-Nov-1998.  Based in
+       part  on  the  XScreenSaver   code   by   Jamie   Zawinski
+       <jwz@jwz.org>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                13-Nov-98                           2
+
+
diff --git a/local/man/cat.1/decayscreen.1 b/local/man/cat.1/decayscreen.1
new file mode 100644 (file)
index 0000000..8c3b79c
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       decayscreen - make a screen meltdown.
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       d\bde\bec\bca\bay\bys\bsc\bcr\bre\bee\ben\bn   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]   [-window]
+       [-root] [-mono] [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-delay _\bu_\bs_\be_\bc_\bs]
+       [-mode _\bm_\bo_\bd_\be]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bd_\be_\bc_\ba_\by_\bs_\bc_\br_\be_\be_\bn  program creates a melting effect by ran-
+       domly shifting rectangles around the screen.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bd_\be_\bc_\ba_\by_\bs_\bc_\br_\be_\be_\bn accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               Slow it down.
+
+       -\b-m\bmo\bod\bde\be _\bm_\bo_\bd_\be
+               The direction in which the image  should  tend  to
+               slide.   Legal  values  are  _\br_\ba_\bn_\bd_\bo_\bm  (meaning pick
+               one), _\bu_\bp, _\bl_\be_\bf_\bt,  _\br_\bi_\bg_\bh_\bt,  _\bd_\bo_\bw_\bn,  _\bu_\bp_\bl_\be_\bf_\bt,  _\bd_\bo_\bw_\bn_\bl_\be_\bf_\bt,
+               _\bu_\bp_\br_\bi_\bg_\bh_\bt,  _\bd_\bo_\bw_\bn_\br_\bi_\bg_\bh_\bt,  _\bs_\bh_\bu_\bf_\bf_\bl_\be  (meaning  perfer no
+               particular direction),  _\bi_\bn  (meaning  move  things
+               toward  the center), _\bo_\bu_\bt (meaning move things away
+               from the  center),  _\bm_\be_\bl_\bt  (meaning  melt  straight
+               downward), and _\bs_\bt_\br_\be_\bt_\bc_\bh (meaning stretch the screen
+               downward).
+
+R\bRE\bES\bSO\bOU\bUR\bRC\bCE\bES\bS
+       On some systems (currently, only SGIs), this program  can,
+       instead of grabbing a desktop image, grab a frame of video
+       from an external camera and manipulate that instead.   The
+       following resources control that.
+
+
+       g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by (Float)
+               What portion of the time to grab video rather than
+
+
+
+X Version 11               05-Apr-1999                          1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               a screen image, between 0.0 and 1.0.  Defaults  to
+               0.5, or half the time.
+
+       v\bvi\bid\bde\beo\boD\bDe\bev\bvi\bic\bce\be (Integer)
+               The  number  of  the default video input device to
+               check first.  If unspecified, the  default  camera
+               (from videopanel(1)) will be checked first.  After
+               that, all other available video input devices will
+               be checked in order.
+
+               The  first  one  which  produces a non-black image
+               will be used.  If all images are black, the others
+               will  be  re-checked  a few times before giving up
+               and falling back  to  simply  grabbing  a  desktop
+               image  (but note that this takes a few seconds, so
+               if you  don't  actually  have  any  video  sources
+               hooked  up,  you should consider turning off video
+               grabbing by setting g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by to  0.0.)
+
+       v\bvi\bid\bde\beo\boG\bGa\bai\bin\bn (Float)
+               The amount by which to brighten the grabbed image.
+               This defaults to 2.2.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X(1), xscreensaver(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright 1992 by Vivek Khera.  Permission to  use,  copy,
+       modify,  distribute,  and sell this software and its docu-
+       mentation 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  per-
+       mission  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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Vivek Khera <khera@cs.duke.edu>, 05-Aug-93; based on  code
+       by  David  Wald, 1988.  Modified by jwz, 28-Nov-97.  Modi-
+       fied by Rick Schultz <rick@skapunx.net> 05-Apr-1999.
+
+
+
+
+
+
+
+
+X Version 11               05-Apr-1999                          2
+
+
diff --git a/local/man/cat.1/deco.1 b/local/man/cat.1/deco.1
new file mode 100644 (file)
index 0000000..19a479d
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       deco - draw tacky 70s basement wall panelling
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       d\bde\bec\bco\bo  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual   _\bv_\bi_\bs_\bu_\ba_\bl]   [-delay   _\bs_\be_\bc_\bo_\bn_\bd_\bs]  [-max-depth  _\bi_\bn_\bt]
+       [-min-width _\bi_\bn_\bt] [-min-height  _\bi_\bn_\bt]  [-cycle]  [-no-cycle]
+       [-cycle-delay]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bd_\be_\bc_\bo  program  subdivides  and colors rectangles ran-
+       domly.  It looks kind  of  like  Brady-Bunch-era  rec-room
+       wall  paneling.   (Raven  says:  "this screensaver is ugly
+       enough to peel paint.")
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bd_\be_\bc_\bo accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to wait before starting over.  Default  5
+               seconds.
+
+       -\b-m\bma\bax\bx-\b-d\bde\bep\bpt\bth\bh _\bi_\bn_\bt_\be_\bg_\be_\br
+               How deep to subdivide.  Default 12.  Default 8.
+
+       -\b-m\bmi\bin\bn-\b-w\bwi\bid\bdt\bth\bh _\bi_\bn_\bt_\be_\bg_\be_\br
+               -\b-m\bmi\bin\bn-\b-h\bhe\bei\big\bgh\bht\bt _\bi_\bn_\bt_\be_\bg_\be_\br The size of the smallest rect-
+               angle to draw.  Default 20x20.
+
+       -\b-c\bcy\byc\bcl\ble\be
+
+       -\b-n\bno\bo-\b-c\bcy\byc\bcl\ble\be
+               Whether to do color cycling.  Default False.
+
+       -\b-c\bcy\byc\bcl\ble\be-\b-d\bde\bel\bla\bay\by _\bu_\bs_\be_\bc_\bs
+               If color cycling, how often to change the  colors.
+               Default 1000000, or 1 second.
+
+
+
+X Version 11                27-Apr-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1997 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie  Zawinski <jwz@jwz.org>, 26-Apr-97, based on code by
+       Michael D. Bayne <mdb@go2net.com>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                27-Apr-97                           2
+
+
diff --git a/local/man/cat.1/drift.1 b/local/man/cat.1/drift.1
new file mode 100644 (file)
index 0000000..75f982b
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       drift - draws drifting recursive fractal cosmic flames
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       d\bdr\bri\bif\bft\bt  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-count _\bi_\bn_\bt_\be_\bg_\be_\br] [-grow] [-no-grow] [-liss] [-no-liss]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bd_\br_\bi_\bf_\bt program draws drifting recursive fractal  cosmic
+       flames
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bd_\br_\bi_\bf_\bt accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 200.  The colors used  cycle  through  the
+               hue, making N stops around the color wheel.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-g\bgr\bro\bow\bw
+
+       -\b-n\bno\bo-\b-g\bgr\bro\bow\bw
+               Whether  fractals should grow; otherwise, they are
+               animated.
+
+
+       -\b-l\bli\bis\bss\bs
+
+       -\b-n\bno\bo-\b-l\bli\bis\bss\bs
+               Whether we should use  lissojous  figures  to  get
+               points.
+
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       f\bfl\bla\bam\bme\be(1), X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1991, 1995 by Scott Draves.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Scott Draves <spot@cs.cmu.edu>, 06-Jun-91, 01-Jun-95.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/epicycle.1 b/local/man/cat.1/epicycle.1
new file mode 100644 (file)
index 0000000..a263b9a
--- /dev/null
@@ -0,0 +1,264 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       epicycle  -  draws  a  point  moving around a circle which
+       moves around a cicle which...
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       e\bep\bpi\bic\bcy\byc\bcl\ble\be [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-root]  [-window]
+       [-mono]  [-install] [-noinstall] [-visual _\bv_\bi_\bz] [-colors _\bN]
+       [-foreground _\bn_\ba_\bm_\be] [-color-shift _\bN] [-delay  _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-holdtime   _\bs_\be_\bc_\bo_\bn_\bd_\bs]   [-linewidth  _\bN]  [-min_circles  _\bN]
+       [-max_circles _\bN] [-min_speed _\bn_\bu_\bm_\bb_\be_\br]  [-max_speed  _\bn_\bu_\bm_\bb_\be_\br]
+       [-harmonics _\bN] [-timestep _\bn_\bu_\bm_\bb_\be_\br] [-divisor_poisson _\bp_\br_\bo_\bb_\ba_\b-
+       _\bb_\bi_\bl_\bi_\bt_\by] [-size_factor_min _\bn_\bu_\bm_\bb_\be_\br]  [-size_factor_max  _\bn_\bu_\bm_\b-
+       _\bb_\be_\br]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  epicycle program draws the path traced out by a point
+       on the edge of a circle.  That  circle  rotates  around  a
+       point  on  the  rim  of another circle, and so on, several
+       times.  The random curves produced can be simple  or  com-
+       plex, convex or concave, but they are always closed curves
+       (they never go in indefinitely).
+
+       You can configure both the way the curves  are  drawn  and
+       the  way in which the random sequence of circles is gener-
+       ated, either with command-line options or X resources.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       -\b-d\bdi\bis\bsp\bpl\bla\bay\by _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn
+               Specifies which X display we should use  (see  the
+               section DISPLAY NAMES in X\bX(1) for more information
+               about this option).
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.  If we're on a  mono  display,
+               we have no choice.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-n\bno\boi\bin\bns\bst\bta\bal\bll\bl
+               Don't install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bz
+               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.  Possible choices
+               include
+
+               default,  best,  mono,  monochrome,  gray,   grey,
+
+
+
+X Version 11                27-Apr-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               color,    staticgray,    staticcolor,   truecolor,
+               grayscale,  greyscale,  pseudocolor,  directcolor,
+               _\bn_\bu_\bm_\bb_\be_\br
+
+               If  a  decimal  or  hexadecimal  number  is  used,
+               X\bXG\bGe\bet\btV\bVi\bis\bsu\bua\bal\blI\bIn\bnf\bfo\bo(3X)  is  consulted  to  obtain  the
+               required visual.
+
+       -\b-c\bco\bol\blo\bor\brs\bs _\bN
+               How many colors should be used (if possible).  The
+               colors are chosen randomly.
+
+       -\b-f\bfo\bor\bre\beg\bgr\bro\bou\bun\bnd\bd _\bn_\ba_\bm_\be
+               With -\b-m\bmo\bon\bno\bo, this  option  selects  the  foreground
+               colour.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               Specifies  the  delay  between  drawing successive
+               line segments of the path.   If you do not specify
+               -\b-s\bsy\byn\bnc\bc, some X servers may batch up several drawing
+               operations  together,  producing  a  less   smooth
+               effect.     This  is  more  likely  to  happen  in
+               monochrome mode (on  monochrome  servers  or  when
+               -\b-m\bmo\bon\bno\bo is specified).
+
+       -\b-h\bho\bol\bld\bdt\bti\bim\bme\be _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               When  the figure is complete, _\be_\bp_\bi_\bc_\by_\bc_\bl_\be pauses this
+               number of seconds.
+
+       -\b-l\bli\bin\bne\bew\bwi\bid\bdt\bth\bh _\bN
+               Width in pixels of the body's track.    Specifying
+               values  greater than one may cause slower drawing.
+               The fastest value is  usually  zero,  meaning  one
+               pixel.
+
+       -\b-m\bmi\bin\bn_\b_c\bci\bir\brc\bcl\ble\bes\bs _\bN
+               Smallest number of epicycles in the figure.
+
+       -\b-m\bma\bax\bx_\b_c\bci\bir\brc\bcl\ble\bes\bs _\bN
+               Largest number of epicycles in the figure.
+
+       -\b-m\bmi\bin\bn_\b_s\bsp\bpe\bee\bed\bd _\bn_\bu_\bm_\bb_\be_\br
+               Smallest possible value for the base speed of rev-
+               olution of the epicycles.  The  actual  speeds  of
+               the  epicycles  vary from this down to _\bm_\bi_\bn_\b__\bs_\bp_\be_\be_\bd _\b/
+               _\bh_\ba_\br_\bm_\bo_\bn_\bi_\bc_\bs.\b.
+
+       -\b-m\bma\bax\bx_\b_s\bsp\bpe\bee\bed\bd _\bn_\bu_\bm_\bb_\be_\br
+               Smallest possible value for the base speed of rev-
+               olution of the epicycles.
+
+       -\b-h\bha\bar\brm\bmo\bon\bni\bic\bcs\bs _\bN
+               Number  of  possible  harmonics;  the  larger this
+               value is, the  greater  the  possible  variety  of
+
+
+
+X Version 11                27-Apr-97                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               possible speeds of epicycle.
+
+       -\b-t\bti\bim\bme\bes\bst\bte\bep\bp _\bn_\bu_\bm_\bb_\be_\br
+               Decreasing this value will reduce the distance the
+               body moves for each line segment, possibly produc-
+               ing  a smoother figure.  Increasing it may produce
+               faster results.
+
+       -\b-d\bdi\biv\bvi\bis\bso\bor\br_\b_p\bpo\boi\bis\bss\bso\bon\bn _\bp_\br_\bo_\bb_\ba_\bb_\bi_\bl_\bi_\bt_\by
+               Each epicycle rotates at a rate which is a  factor
+               of  the base speed.  The speed of each epicycle is
+               the base speed divided by some integer  between  1
+               and  the  value  of  the  -\b-h\bha\bar\brm\bmo\bon\bni\bic\bcs\bs option.  This
+               integer is decided by starting at 1 and tossing  a
+               biased coin.  For each consecutive head, the value
+               is incremented by one.  The integer  will  not  be
+               incremented  above  the  value  of  the -\b-h\bha\bar\brm\bmo\bon\bni\bic\bcs\bs
+               option.  The argument of this option  decides  the
+               bias  of the coin; it is the probability that that
+               coin will produce a head at any given toss.
+
+       -\b-s\bsi\biz\bze\be_\b_f\bfa\bac\bct\bto\bor\br_\b_m\bmi\bin\bn _\bn_\bu_\bm_\bb_\be_\br
+               Epicycles are always at least this factor  smaller
+               than their parents.
+
+       -\b-s\bsi\biz\bze\be_\b_f\bfa\bac\bct\bto\bor\br_\b_m\bma\bax\bx _\bn_\bu_\bm_\bb_\be_\br
+               Epicycles  are never more than this factor smaller
+               than their parents.
+
+R\bRE\bES\bSO\bOU\bUR\bRC\bCE\bES\bS
+            Option            Resource               Default Value
+            ------            --------               -------------
+            -colors           .colors                100
+            -delay            .delay                 1000
+            -holdtime         .holdtime              2
+            -linewidth        .lineWidth             4
+            -min_circles      .minCircles            2
+            -max_circles      .maxCircles            10
+            -min_speed        .minSpeed              0.003
+            -max_speed        .maxSpeed              0.005
+            -harmonics        .harmonics             8
+            -timestep         .timestep              1.0
+            -divisor_poisson  .divisorPoisson        0.4
+            -size_factor_min  .sizeFactorMin         1.05
+            -size_factor_max  .sizeFactorMax         2.05
+                              .timestepCoarseFactor  1.0
+
+       Before the drawing of the figure is begun,  a  preliminary
+       calculation  of  the  path  is  done in order to scale the
+       radii of the epicycles so as to  fit  the  figure  on  the
+       screen or window.  For the sake of speed, This calculation
+       is done with a larger timestep than  the  actual  drawing.
+       The  time-step  used  is the value of the -\b-t\bti\bim\bme\bes\bst\bte\bep\bp option
+       multiplied  by  the  timestepCoarseFactor  resource.   The
+
+
+
+X Version 11                27-Apr-97                           3
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       default value of 1 will almost always work fast enough and
+       so this  resource  is  not  available  as  a  command-line
+       option.
+
+U\bUS\bSE\bER\bR I\bIN\bNT\bTE\bER\bRF\bFA\bAC\bCE\bE
+       The  program  runs  mostly without user interaction.  When
+       running on the root window, no input  is  accepted.   When
+       running  in its own window, the program will exit if mouse
+       button 3  is  pressed.   If  any  other  mouse  button  is
+       pressed,  the current figure will be abandoned and another
+       will be started.
+
+H\bHI\bIS\bST\bTO\bOR\bRY\bY
+       The geometry of epicycles was perfected by  Hipparchus  of
+       Rhodes  at  some time around 125 B.C., 185 years after the
+       birth of Aristarchus of Samos, the inventor of the  helio-
+       centric  universe  model.  Hipparchus applied epicycles to
+       the Sun and the Moon.  Ptolemy of Alexandria  went  on  to
+       apply  them to what was then the known universe, at around
+       150 A.D.  Copernicus went on to apply them to  the  helio-
+       centric  model  at the beginning of the sixteenth century.
+       Johannes Kepler discovered that the planets actually  move
+       in  elliptical  orbits  in about 1602.  The inverse-square
+       law of gravity was suggested by Boulliau in  1645.   Isaac
+       Newton's  _\bP_\br_\bi_\bn_\bc_\bi_\bp_\bi_\ba _\bM_\ba_\bt_\bh_\be_\bm_\ba_\bt_\bi_\bc_\ba was published in 1687, and
+       proved that Kepler's laws derived from Newtonian  gravita-
+       tion.
+
+B\bBU\bUG\bGS\bS
+       The  colour  selection  is re-done for every figure.  This
+       may generate too much network traffic for this program  to
+       work well over slow or long links.
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C)  1998,  James Youngman.  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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       James Youngman <jay@gnu.org>, April 1998.
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                27-Apr-97                           4
+
+
diff --git a/local/man/cat.1/flag.1 b/local/man/cat.1/flag.1
new file mode 100644 (file)
index 0000000..1420eb1
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       flag - draws a waving flag, containing text or an image
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       f\bfl\bla\bag\bg  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-size _\bi_\bn_\bt_\be_\bg_\be_\br]  [-text  _\bs_\bt_\br_\bi_\bn_\bg]  [-font
+       _\bf_\bo_\bn_\bt] [-bitmap _\bx_\bb_\bm_\b-_\bf_\bi_\bl_\be]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bf_\bl_\ba_\bg program draws a waving flag that contains text or
+       a bitmap.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bf_\bl_\ba_\bg accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default 200.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-s\bsi\biz\bze\be _\bi_\bn_\bt_\be_\bg_\be_\br
+               How large the pixels in the flag should be, from 1
+               to 8.  If this is a  negative  number,  the  pixel
+               size is chosen randomly from the range 1 to -size.
+               Default -7.
+
+       -\b-t\bte\bex\bxt\bt _\bt_\be_\bx_\bt
+               The text to display in the flag.   Multiple  lines
+               of  text  are allowed; the lines will be displayed
+               centered atop one another.  Default: none.  If the
+
+
+
+X Version 11                24-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               text  is  the  magic  string _\b"_\b(_\bd_\be_\bf_\ba_\bu_\bl_\bt_\b)_\b", then the
+               text used will be the local machine name;  a  new-
+               line; and the local OS version.
+
+       -\b-b\bbi\bit\btm\bma\bap\bp _\bx_\bb_\bm_\b-_\bf_\bi_\bl_\be
+               The bitmap to display in the flag; this must be an
+               XBM file (color XPMs are not  allowed.)   Default:
+               none.    If   the   bitmap  is  the  magic  string
+               _\b"_\b(_\bd_\be_\bf_\ba_\bu_\bl_\bt_\b)_\b", then the bitmap used will be a charm-
+               ing little picture of J. R. "Bob" Dobbs.
+
+               If  neither  _\b-_\bt_\be_\bx_\bt nor _\b-_\bb_\bi_\bt_\bm_\ba_\bp are specified, then
+               either the builtin text or the builtin bitmap will
+               be chosen randomly.
+
+       -\b-f\bfo\bon\bnt\bt _\bf_\bo_\bn_\bt
+               The font in which to draw the text; the default is
+               "-*-helvetica-bold-r-*-240-*".
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1996 Charles Vidal.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Charles Vidal <vidalc@univ-mlv.fr>, 1996.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br, and the
+       -text  and  -bitmap  options,  added  by  Jamie   Zawinski
+       <jwz@jwz.org>, 24-May-97.
+
+
+
+
+
+
+
+
+
+
+X Version 11                24-May-97                           2
+
+
diff --git a/local/man/cat.1/flame.1 b/local/man/cat.1/flame.1
new file mode 100644 (file)
index 0000000..e5c4eba
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       flame - draw weird cosmic fractals
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       f\bfl\bla\bam\bme\be  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-colors _\bi_\bn_\bt_\be_\bg_\be_\br] [-iterations _\bi_\bn_\bt_\be_\bg_\be_\br]
+       [-points _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs] [-delay2 _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\b-
+       _\bo_\bn_\bd_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bf_\bl_\ba_\bm_\be program generates colorful fractal displays.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bf_\bl_\ba_\bm_\be accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-c\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 64.
+
+       -\b-i\bit\bte\ber\bra\bat\bti\bio\bon\bns\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many fractals to generate.  Default 25.
+
+       -\b-p\bpo\boi\bin\bnt\bts\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many pixels to draw for each fractal.  Default
+               10000.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long we should wait between drawing each frac-
+               tal.  Default 50000, or about 1/20th second.
+
+       -\b-d\bde\bel\bla\bay\by2\b2 _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long we should wait before clearing the screen
+               when  each run ends.  Default 2000000, or two sec-
+               onds.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+
+
+X Version 11                13-aug-92                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1991 by Patrick J. Naughton
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Scott Graves <spot@cs.cmu.edu>, 06-Jun-91.n
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 18-Oct-93.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                13-aug-92                           2
+
+
diff --git a/local/man/cat.1/forest.1 b/local/man/cat.1/forest.1
new file mode 100644 (file)
index 0000000..4f5d39a
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       forest - draws a fractal forest
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       f\bfo\bor\bre\bes\bst\bt  [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count _\bi_\bn_\bt_\be_\bg_\be_\br]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bf_\bo_\br_\be_\bs_\bt program draws a fractal forest.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bf_\bo_\br_\be_\bs_\bt accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default 100.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+
+
+
+
+X Version 11                27-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1995 by Pascal Pensa.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Pascal Pensa <pensa@aurora.unice.fr>, 1995.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 27-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                27-May-97                           2
+
+
diff --git a/local/man/cat.1/galaxy.1 b/local/man/cat.1/galaxy.1
new file mode 100644 (file)
index 0000000..59f9300
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       galaxy - draws spinning galaxies
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       g\bga\bal\bla\bax\bxy\by  [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-cycles  _\bi_\bn_\bt_\be_\bg_\be_\br]  [-count   _\bi_\bn_\bt_\be_\bg_\be_\br]   [-size   _\bi_\bn_\bt_\be_\bg_\be_\br]
+       [-trail] [-no-trail]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bg_\ba_\bl_\ba_\bx_\by program draws spinning galaxies.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bg_\ba_\bl_\ba_\bx_\by accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 64.  The colors  used  cycle  through  the
+               hue, making N stops around the color wheel.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-s\bsi\biz\bze\be _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-t\btr\bra\bai\bil\bl
+
+       -\b-n\bno\bo-\b-t\btr\bra\bai\bil\bl
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1994 by Hubert Feyrer.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Original  Amiga  version   by   Uli   Siegmund   <uli@wom-
+       bat.okapi.sub.org>
+        for EGS in Cluster.
+
+       Ported  from Cluster/EGS to C/Intuition by Harald Backert.
+
+       Ported   to   X11   and   xlockmore   by   Hubert   Feyrer
+       <hubert.feyrer@rz.uni-regensburg.de>, 30-Sep-94.
+
+       Modified by David Bagley <bagleyd@bigfoot.com>, 23-Oct-94.
+
+       Modified by Dave Mitchell <davem@magnet.com>, 7-Apr-97.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/goop.1 b/local/man/cat.1/goop.1
new file mode 100644 (file)
index 0000000..ad05f48
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       goop - squishy transparent oil and bubble screenhack
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       g\bgo\boo\bop\bp  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-transparent] [-non-transparent] [-addi-
+       tive] [-subtractive] [-xor] [-no-xor]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bg_\bo_\bo_\bp program draws a simulation of bubbles  in  layers
+       of overlapping multicolored translucent fluid.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bg_\bo_\bo_\bp accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many bubbles to draw per layer.  Default: ran-
+               dom.
+
+       -\b-l\bla\bay\bye\ber\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many layers to draw.  Default:  random,  based
+               on screen depth.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How  much  of a delay should be introduced between
+               steps of the animation.  Default 100000, or  about
+               1/10th second.
+
+       -\b-t\btr\bra\ban\bns\bsp\bpa\bar\bre\ben\bnt\bt
+               If _\b-_\bl_\ba_\by_\be_\br_\bs is greater than 1, then each layer will
+               be drawn in one color, and when they overlap,  the
+               colors will be mixed. This is the default.
+
+       -\b-n\bno\bon\bn-\b-t\btr\bra\ban\bns\bsp\bpa\bar\bre\ben\bnt\bt
+               Turns off _\b-_\bt_\br_\ba_\bn_\bs_\bp_\ba_\br_\be_\bn_\bt.
+
+
+
+
+
+X Version 11                11-Jun-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-a\bad\bdd\bdi\bit\bti\biv\bve\be
+               If  _\b-_\bt_\br_\ba_\bn_\bs_\bp_\ba_\br_\be_\bn_\bt  is  specified,  then this option
+               means that the colors will be mixed using an addi-
+               tive  color  model, as if the blobs were projected
+               light.  This is the default.
+
+       -\b-s\bsu\bub\bbt\btr\bra\bac\bct\bti\biv\bve\be
+               If _\b-_\bt_\br_\ba_\bn_\bs_\bp_\ba_\br_\be_\bn_\bt is  specified,  then  this  option
+               means  that  the colors will be mixed using a sub-
+               tractive  color  model,  as  if  the  blobs   were
+               translucent filters.
+
+       -\b-x\bxo\bor\br    Draw with xor instead of the other color tricks.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1997 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 11-Jun-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                11-Jun-97                           2
+
+
diff --git a/local/man/cat.1/grav.1 b/local/man/cat.1/grav.1
new file mode 100644 (file)
index 0000000..1a9edb4
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       grav - draws a simple orbital simulation
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       g\bgr\bra\bav\bv  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-count _\bi_\bn_\bt_\be_\bg_\be_\br] [-decay] [-no-decay] [-trail] [-no-trail]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bg_\br_\ba_\bv program draws a simple orbital simulation
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bg_\br_\ba_\bv accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 200.  The colors are chosen randomly.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               Default 12.
+
+       -\b-d\bde\bec\bca\bay\by
+
+       -\b-n\bno\bo-\b-e\bec\bca\bay\by
+               Whether orbits should decay.
+
+
+       -\b-t\btr\bra\bai\bil\bl
+
+       -\b-n\bno\bo-\b-t\btr\bra\bai\bil\bl
+               Whether the objects  should  leave  trails  behind
+               them  (makes it look vaguely like a cloud-chamber.
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1993 by Greg Bowering.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Greg Bowering <greg@smug.student.adelaide.edu.au>, 1993.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/greynetic.1 b/local/man/cat.1/greynetic.1
new file mode 100644 (file)
index 0000000..7280236
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       greynetic - draw random stippled/color rectangles
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       g\bgr\bre\bey\byn\bne\bet\bti\bic\bc   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-delay _\bu_\bs_\be_\bc_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bg_\br_\be_\by_\bn_\be_\bt_\bi_\bc program draws random rectangles.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bg_\br_\be_\by_\bn_\be_\bt_\bi_\bc accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               Slow it down.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1992 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 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.
+
+
+
+X Version 11                13-aug-92                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                13-aug-92                           2
+
+
diff --git a/local/man/cat.1/halo.1 b/local/man/cat.1/halo.1
new file mode 100644 (file)
index 0000000..e5668e2
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       halo - draw circular patterns
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       h\bha\bal\blo\bo  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-count _\bi_\bn_\bt] [-delay _\bu_\bs_\be_\bc_\bs] [-mode seuss
+       | ramp | random ] [-animate]  [-colors  _\bi_\bn_\bt_\be_\bg_\be_\br]  [-cycle]
+       [-no-cycle] [-cycle-delay _\bu_\bs_\be_\bc_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bh_\ba_\bl_\bo program draws cool patterns based on circles.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bh_\ba_\bl_\bo accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many circles to draw.  Default 0, meaning ran-
+               dom.
+
+       -\b-m\bmo\bod\bde\be s\bse\beu\bus\bss\bs |\b| r\bra\bam\bmp\bp |\b| r\bra\ban\bnd\bdo\bom\bm
+               In _\bs_\be_\bu_\bs_\bs mode, alternating striped curves will  be
+               drawn.
+
+               In _\br_\ba_\bm_\bp mode, a color ramp will be drawn.
+
+               _\br_\ba_\bn_\bd_\bo_\bm means pick the mode randomly.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How  much  of a delay should be introduced between
+               steps of the animation.  Default 100000, or  about
+               0.1 second.
+
+       -\b-c\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors to use.  Default 100.
+
+       -\b-a\ban\bni\bim\bma\bat\bte\be
+               If specified, then the centerpoints of the circles
+
+
+
+X Version 11                12-Jun-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               will bounce around.  Otherwise, the  circles  will
+               be  drawn  once,  erased, and a new set of circles
+               will be drawn.
+
+       -\b-c\bcy\byc\bcl\ble\be
+
+       -\b-n\bno\bo-\b-c\bcy\byc\bcl\ble\be
+               Whether to do colormap  cycling.   Default  is  to
+               cycle.
+
+       -\b-c\bcy\byc\bcl\ble\be-\b-d\bde\bel\bla\bay\by
+               Number  of microseconds between shifts of the col-
+               ormap; default 100000, or 1/10th second.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 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  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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 6-jul-93.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                12-Jun-97                           2
+
+
diff --git a/local/man/cat.1/helix.1 b/local/man/cat.1/helix.1
new file mode 100644 (file)
index 0000000..2b74553
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       helix - draw helical string-art patterns
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       h\bhe\bel\bli\bix\bx  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background    _\bc_\bo_\bl_\bo_\br]    [-window]    [-root]     [-mono]
+       [-erase-speed  _\bu_\bs_\be_\bc_\bs]  [-erase-mode  _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bs_\be_\bc_\b-
+       _\bo_\bn_\bd_\bs] [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bh_\be_\bl_\bi_\bx program draws interesting patterns  composed  of
+       line segments in random colors.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bh_\be_\bl_\bi_\bx accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-e\ber\bra\bas\bse\be-\b-s\bsp\bpe\bee\bed\bd _\bu_\bs_\be_\bc_\bs
+               This  controls  the speed at which the screen will
+               be erased. Lower numbers erase faster.
+
+       -\b-e\ber\bra\bas\bse\be-\b-m\bmo\bod\bde\be _\bi_\bn_\bt_\be_\bg_\be_\br
+               This sets the erase mode. Mode -1 chooses a random
+               mode  each  time.  There  are  currently  6  modes
+               defined (0-5).
+
+       -\b-d\bde\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               This sets the number of  seconds  that  the  helix
+               will be on the screen.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+
+
+
+
+X Version 11                18-sep-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1992 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie  Zawinski  <jwz@jwz.org>,  13-aug-92.  Screen eraser
+       improved by Johannes Keukelaar <johannes@nada.kth.se>,
+        18-sep-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                18-sep-97                           2
+
+
diff --git a/local/man/cat.1/hopalong.1 b/local/man/cat.1/hopalong.1
new file mode 100644 (file)
index 0000000..fe9dafb
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       hopalong - draw real plane fractals
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       h\bho\bop\bpa\bal\blo\bon\bng\bg   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]   [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install]  [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-ncolors  _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay
+       _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs] [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count  _\bi_\bn_\bt_\be_\bg_\be_\br]  [-jong]
+       [-no-jong] [-jong] [-no-sine]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bh_\bo_\bp_\ba_\bl_\bo_\bn_\bg  program  generates  real  plane fractals as
+       described in the September 1986 issue of Scientific Ameri-
+       can.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bh_\bo_\bp_\ba_\bl_\bo_\bn_\bg accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 200.  The colors used  cycle  through  the
+               hue, making N stops around the color wheel.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  long to run each batch.  Default 2500 pixels.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many pixels should be  drawn  before  a  color
+               change.  Default 1000.
+
+       -\b-j\bjo\bon\bng\bg _\bi_\bn_\bt_\be_\bg_\be_\br
+
+       -\b-n\bno\bo-\b-j\bjo\bon\bng\bg _\bi_\bn_\bt_\be_\bg_\be_\br
+               Whether  to  use  the  Jong  format (default is to
+               choose randomly.)
+
+
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-s\bsi\bin\bne\be _\bi_\bn_\bt_\be_\bg_\be_\br
+
+       -\b-n\bno\bo-\b-s\bsi\bin\bne\be _\bi_\bn_\bt_\be_\bg_\be_\br
+               Whether to use the  Sine  format  (default  is  to
+               choose randomly.)
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1988-91 by Patrick J. Naughton.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Patrick J. Naughton <naughton@eng.sun.com>, 23-mar-88.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie  Zawinski  <jwz@jwz.org>,  13-aug-92,  and  again on
+       10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/hypercube.1 b/local/man/cat.1/hypercube.1
new file mode 100644 (file)
index 0000000..78f9a23
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       hypercube - 2d projection of a 4d object
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       h\bhy\byp\bpe\ber\brc\bcu\bub\bbe\be   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground
+       _\bc_\bo_\bl_\bo_\br] [-background _\bc_\bo_\bl_\bo_\br] [-color[0-7] _\bc_\bo_\bl_\bo_\br] [-xy _\bf_\bl_\bo_\ba_\bt]
+       [-xz  _\bf_\bl_\bo_\ba_\bt]  [-yz  _\bf_\bl_\bo_\ba_\bt]  [-xw  _\bf_\bl_\bo_\ba_\bt]  [-yw _\bf_\bl_\bo_\ba_\bt] [-zw
+       _\bf_\bl_\bo_\ba_\bt] [-observer-z _\bi_\bn_\bt] [-delay _\bu_\bs_\be_\bc_\bs] [-window]  [-root]
+       [-mono] [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bh_\by_\bp_\be_\br_\bc_\bu_\bb_\be program displays a wireframe projection of a
+       hypercube which is rotating at user-specified rates around
+       any or all of its four axes.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bh_\by_\bp_\be_\br_\bc_\bu_\bb_\be accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How  much  of a delay should be introduced between
+               steps of the animation.  Default 100000, or  about
+               1/10th second.
+
+       -\b-o\bob\bbs\bse\ber\brv\bve\ber\br-\b-z\bz _\bi_\bn_\bt
+               How  far  away  the observer is from the center of
+               the cube (the cube is one unit per side.)  Default
+               5.
+
+       -\b-c\bco\bol\blo\bor\br0\b0 _\bc_\bo_\bl_\bo_\br
+
+       -\b-c\bco\bol\blo\bor\br1\b1 _\bc_\bo_\bl_\bo_\br
+
+       -\b-c\bco\bol\blo\bor\br2\b2 _\bc_\bo_\bl_\bo_\br
+
+       -\b-c\bco\bol\blo\bor\br3\b3 _\bc_\bo_\bl_\bo_\br
+
+       -\b-c\bco\bol\blo\bor\br4\b4 _\bc_\bo_\bl_\bo_\br
+
+
+
+
+X Version 11                 6-dec-92                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-c\bco\bol\blo\bor\br5\b5 _\bc_\bo_\bl_\bo_\br
+
+       -\b-c\bco\bol\blo\bor\br6\b6 _\bc_\bo_\bl_\bo_\br
+
+       -\b-c\bco\bol\blo\bor\br7\b7 _\bc_\bo_\bl_\bo_\br
+               The  colors used to draw the line segments border-
+               ing the eight faces of  the  cube.   Some  of  the
+               faces have only two of their border-lines drawn in
+               the specified color, and some have all four.
+
+       -\b-x\bxw\bw _\bf_\bl_\bo_\ba_\bt
+
+       -\b-x\bxy\by _\bf_\bl_\bo_\ba_\bt
+
+       -\b-x\bxz\bz _\bf_\bl_\bo_\ba_\bt
+
+       -\b-y\byw\bw _\bf_\bl_\bo_\ba_\bt
+
+       -\b-y\byz\bz _\bf_\bl_\bo_\ba_\bt
+
+       -\b-z\bzw\bw _\bf_\bl_\bo_\ba_\bt
+               The amount that the cube 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.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1992 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 6-dec-92.
+
+
+
+
+
+
+X Version 11                 6-dec-92                           2
+
+
diff --git a/local/man/cat.1/ifs.1 b/local/man/cat.1/ifs.1
new file mode 100644 (file)
index 0000000..b3a4a82
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       ifs  -  draws spinning, colliding iterated-function-system
+       images
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       i\bif\bfs\bs  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground  _\bc_\bo_\bl_\bo_\br]
+       [-background  _\bc_\bo_\bl_\bo_\br]  [-window] [-root] [-mono] [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bi_\bf_\bs program draws spinning,  colliding  iterated-func-
+       tion-system images.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bi_\bf_\bs accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 200.  The colors used  cycle  through  the
+               hue, making N stops around the color wheel.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1997 by Massimino Pascal.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Massimino Pascal <Pascal.Massimon@ens.fr>, 1997.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/imsmap.1 b/local/man/cat.1/imsmap.1
new file mode 100644 (file)
index 0000000..4ec433c
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       imsmap - generate fractal maps
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       i\bim\bms\bsm\bma\bap\bp  [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt] [-delay _\bs_\be_\bc_\bo_\bn_\bd_\bs] [-itera-
+       tions _\bi_\bn_\bt] [-mode h|s|v|random] [-cycle] [-no-cycle]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bi_\bm_\bs_\bm_\ba_\bp program generates map or  cloud-like  patterns.
+       It looks quite different in monochrome and color.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bi_\bm_\bs_\bm_\ba_\bp accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors to use.  Default 50.
+
+       -\b-d\bde\bel\bla\bay\by _\bi_\bn_\bt_\be_\bg_\be_\br
+               How long to delay between images.  Default 10 sec-
+               onds.
+
+       -\b-i\bit\bte\ber\bra\bat\bti\bio\bon\bns\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               A measure  of  the  resolution  of  the  resultant
+               image, from 0 to 7.  Default 7.
+
+       -\b-m\bmo\bod\bde\be [\b[ h\bhu\bue\be |\b| s\bsa\bat\btu\bur\bra\bat\bti\bio\bon\bn |\b| v\bva\bal\blu\bue\be |\b| r\bra\ban\bnd\bdo\bom\bm ]\b]
+               The  axis upon which colors should be interpolated
+               between  the  foreground  and  background   color.
+               Default random.
+
+       -\b-c\bcy\byc\bcl\ble\be
+
+       -\b-n\bno\bo-\b-c\bcy\byc\bcl\ble\be
+               Whether  to  do  colormap  cycling.  Default is to
+               cycle.
+
+
+
+
+X Version 11                17-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-c\bcy\byc\bcl\ble\be-\b-d\bde\bel\bla\bay\by
+               Number of microseconds between shifts of the  col-
+               ormap; default 100000, or 1/10th second.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Juergen Nickelsen <nickel@cs.tu-berlin.de>, 23-aug-92.
+
+       Hacked  on  by  Jamie  Zawinski  <jwz@jwz.org>, 24-aug-92,
+       17-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                17-May-97                           2
+
+
diff --git a/local/man/cat.1/jigsaw.1 b/local/man/cat.1/jigsaw.1
new file mode 100644 (file)
index 0000000..21893bb
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       jigsaw - permute the screen image like a jigsaw puzzle
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       j\bji\big\bgs\bsa\baw\bw  [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-background _\bc_\bo_\bl_\bo_\br]
+       [-delay  _\bu_\bs_\be_\bc_\bs]  [-window]  [-root]  [-install]   [-visual
+       _\bv_\bi_\bs_\bu_\ba_\bl]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bj_\bi_\bg_\bs_\ba_\bw program takes an image of the screen, carves it
+       up into a jigsaw puzzle, shuffles it, and then solves  it.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bj_\bi_\bg_\bs_\ba_\bw accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to wait between shuffling pieces; default
+               700000, or 0.7 seconds.
+
+R\bRE\bES\bSO\bOU\bUR\bRC\bCE\bES\bS
+       On  some systems (currently, only SGIs), this program can,
+       instead of grabbing a desktop image, grab a frame of video
+       from  an external camera and manipulate that instead.  The
+       following resources control that.
+
+
+       g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by (Float)
+               What portion of the time to grab video rather than
+               a  screen image, between 0.0 and 1.0.  Defaults to
+               0.5, or half the time.
+
+       v\bvi\bid\bde\beo\boD\bDe\bev\bvi\bic\bce\be (Integer)
+               The number of the default video  input  device  to
+               check  first.   If unspecified, the default camera
+               (from videopanel(1)) will be checked first.  After
+               that, all other available video input devices will
+               be checked in order.
+
+               The first one which  produces  a  non-black  image
+               will be used.  If all images are black, the others
+               will be re-checked a few times  before  giving  up
+
+
+
+X Version 11                25-Nov-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               and  falling  back  to  simply  grabbing a desktop
+               image (but note that this takes a few seconds,  so
+               if  you  don't  actually  have  any  video sources
+               hooked up, you should consider turning  off  video
+               grabbing  by setting g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by to 0.0.)
+
+       v\bvi\bid\bde\beo\boG\bGa\bai\bin\bn (Float)
+               The amount by which to brighten the grabbed image.
+               This defaults to 2.2.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1997 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 25-Nov-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                25-Nov-97                           2
+
+
diff --git a/local/man/cat.1/kaleidescope.1 b/local/man/cat.1/kaleidescope.1
new file mode 100644 (file)
index 0000000..8aa4652
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+Kaleidescpe(1)                                     Kaleidescpe(1)
+
+
+N\bNA\bAM\bME\bE
+       Kaleidescope - rotating line segments
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       k\bka\bal\ble\bei\bid\bde\bes\bsc\bco\bop\bpe\be  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground
+       _\bc_\bo_\bl_\bo_\br] [-background _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-color_mode  _\bm_\bo_\bn_\bo  _\b|  _\bn_\bi_\bc_\be  _\b|  _\bg_\br_\be_\be_\bd_\by]
+       [-nsegments  _\bi_\bn_\bt]  [-ntrails  _\bi_\bn_\bt]  [-local_rotation  _\bi_\bn_\bt]
+       [-global_rotation   _\bi_\bn_\bt]   [-delay  _\bu_\bs_\be_\bc_\bs]  [-redmin  _\bi_\bn_\bt]
+       [-greenmin _\bi_\bn_\bt] [-bluemin _\bi_\bn_\bt]  [-redrange  _\bi_\bn_\bt]  [-green-
+       range _\bi_\bn_\bt] [-bluerange _\bi_\bn_\bt]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bk_\ba_\bl_\be_\bi_\bd_\be_\bs_\bc_\bo_\bp_\be program draws line segments in a symmet-
+       ric pattern that evolves over time.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bk_\ba_\bl_\be_\bi_\bd_\be_\bs_\bc_\bo_\bp_\be accepts the following options:
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-c\bco\bol\blo\bor\br_\b_m\bmo\bod\bde\be m\bmo\bon\bno\bo |\b| n\bni\bic\bce\be |\b| g\bgr\bre\bee\bed\bdy\by
+               Specify how kaleidescope uses  colors.  Mono  uses
+               just the default foreground and background colors.
+               Nice uses one color for each segment (specified by
+               nsegments).  Greedy uses (ntrails * nsegments) + 1
+               colors.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bns\bse\beg\bgm\bme\ben\bnt\bts\bs i\bin\bnt\bte\beg\bge\ber\br
+               The number of segments to draw. Default is 7.
+
+       -\b-n\bnt\btr\bra\bai\bil\bls\bs i\bin\bnt\bte\beg\bge\ber\br
+               The number of trails to draw. Default is 100.
+
+       -\b-l\blo\boc\bca\bal\bl_\b_r\bro\bot\bta\bat\bti\bio\bon\bn i\bin\bnt\bte\beg\bge\ber\br
+               The rate at which  segments  rotate  around  their
+               center. Default is -59.
+
+       -\b-g\bgl\blo\bob\bba\bal\bl_\b_r\bro\bot\bta\bat\bti\bio\bon\bn i\bin\bnt\bte\beg\bge\ber\br
+               The  rate at which segments rotate around the cen-
+               ter of the window.  Default is 1.
+
+       -\b-r\bre\bed\bdm\bmi\bin\bn,\b, -\b-g\bgr\bre\bee\ben\bnm\bmi\bin\bn,\b, -\b-b\bbl\blu\bue\bem\bmi\bin\bn,\b, -\b-r\bre\bed\bdr\bra\ban\bng\bge\be,\b, -\b-g\bgr\bre\bee\ben\bnr\bra\ban\bng\bge\be,\b,
+               -\b-b\bbl\blu\bue\ber\bra\ban\bng\bge\be
+               All take an integer argument. When colors are ran-
+               domly chosen, they are chosen  from  the  interval
+
+
+
+X Version 11                14-Dec-95                           1
+
+
+
+
+
+Kaleidescpe(1)                                     Kaleidescpe(1)
+
+
+               min  to  min  plus  range. The minimums default to
+               30000. The ranges default to 20000.
+
+       -\b-d\bde\bel\bla\bay\by m\bmi\bic\bcr\bro\bos\bse\bec\bco\bon\bnd\bds\bs
+               How much of a delay should be  introduced  between
+               steps  of  the  animation.   Default  is 20000, or
+               about 5 frames a second.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), k\bka\bal\ble\bei\bid\bde\bes\bsc\bco\bop\bpe\be(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1997 by Ron Tapia.  Permission to use, copy,
+       modify,  distribute,  and sell this software and its docu-
+       mentation 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  per-
+       mission  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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Ron Tapia <tapia@nmia.com>, 20-Mar-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                14-Dec-95                           2
+
+
diff --git a/local/man/cat.1/lament.1 b/local/man/cat.1/lament.1
new file mode 100644 (file)
index 0000000..a441a9b
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       lament - animates the Lament Configuration
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       l\bla\bam\bme\ben\bnt\bt  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-window] [-root]
+       [-install]  [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]   [-texture]   [-no-texture]
+       [-wireframe]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bl_\ba_\bm_\be_\bn_\bt program draws an animation of a particular puz-
+       zle box repeatedly solving itself.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bl_\ba_\bm_\be_\bn_\bt accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-t\bte\bex\bxt\btu\bur\bre\be
+               Use texture maps.  This is the default.
+
+       -\b-n\bno\bo-\b-t\bte\bex\bxt\btu\bur\bre\be
+               Do  not  use  texture  maps.   This  is boring and
+               wrong.
+
+       -\b-w\bwi\bir\bre\bef\bfr\bra\bam\bme\be
+               Only draw outlines.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+B\bBU\bUG\bGS\bS
+       This hack is glacially slow on machines  lacking  hardware
+       texture support.
+
+       Occasionally  opens  doors,  admitting  theologians of the
+       Order of the Gash.
+
+
+
+
+
+X Version 11                25-Jul-98                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1998 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 25-Jul-98.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                25-Jul-98                           2
+
+
diff --git a/local/man/cat.1/laser.1 b/local/man/cat.1/laser.1
new file mode 100644 (file)
index 0000000..f97588a
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       laser - draws vaguely laser-like moving lines
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       l\bla\bas\bse\ber\br  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count _\bi_\bn_\bt_\be_\bg_\be_\br]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bl_\ba_\bs_\be_\br program draws vaguely laser-like moving lines
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bl_\ba_\bs_\be_\br accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default  64.   The  colors  used cycle through the
+               hue, making N stops around the color wheel.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               Default 200.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               Default 10.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1995 by Pascal Pensa.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Pascal Pensa <pensa@aurora.unice.fr>, 1995.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/lightning.1 b/local/man/cat.1/lightning.1
new file mode 100644 (file)
index 0000000..e30ef01
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       lightning - draws fractal lightning bolts
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       l\bli\big\bgh\bht\btn\bni\bin\bng\bg   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install]  [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-ncolors  _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay
+       _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bl_\bi_\bg_\bh_\bt_\bn_\bi_\bn_\bg program draws fractal lightning bolts
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bl_\bi_\bg_\bh_\bt_\bn_\bi_\bn_\bg accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default 64.  The colors are chosen randomly.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1996 by Keith Romberg.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Keith Romberg <kromberg@saxe.com>, 27-Jun-96.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/lisa.1 b/local/man/cat.1/lisa.1
new file mode 100644 (file)
index 0000000..ab6ba00
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       lisa - draws animated full-loop lisajous figures
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       l\bli\bis\bsa\ba  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count _\bi_\bn_\bt_\be_\bg_\be_\br] [-size _\bi_\bn_\bt_\be_\bg_\be_\br]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bl_\bi_\bs_\ba program draws animated  full-loop  lisajous  fig-
+       ures.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bl_\bi_\bs_\ba accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 200.  The colors are chosen randomly.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-s\bsi\biz\bze\be _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+
+
+
+X Version 11                27-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1997 by Caleb Cullen.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Caleb Cullen, 1997.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 27-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                27-May-97                           2
+
+
diff --git a/local/man/cat.1/lmorph.1 b/local/man/cat.1/lmorph.1
new file mode 100644 (file)
index 0000000..8056614
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+LMORPH(1)                                               LMORPH(1)
+
+
+N\bNA\bAM\bME\bE
+       lmorph - morphing lines
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       l\blm\bmo\bor\brp\bph\bh  [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-points _\bi_\bn_\bt] [-steps _\bi_\bn_\bt] [-delay _\bu_\bs_\be_\bc_\bs]
+       [-figtype _\bt_\by_\bp_\be]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bl_\bm_\bo_\br_\bp_\bh  program  morphs  between  simple  linedrawings
+       using bilinear interpolation.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bl_\bm_\bo_\br_\bp_\bh accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.  This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-p\bpo\boi\bin\bnt\bts\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               Number  of points in each line drawing. Default is
+               150 points.
+
+       -\b-s\bst\bte\bep\bps\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               Interpolation steps from one drawing to the  next.
+               Default  is 0, which means a random number between
+               100 and 500.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How much of a delay should be  introduced  between
+               steps of the animation.  Default 50000.
+
+       -\b-f\bfi\big\bgt\bty\byp\bpe\be _\bt_\by_\bp_\be
+               Limit  the figures to only open or closed figures.
+               Possible types are  "all"  (default),  "open"  and
+               "closed".
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+
+
+
+
+                        xscreensaver hack                       1
+
+
+
+
+
+LMORPH(1)                                               LMORPH(1)
+
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Sverre  H.  Huseby <sverrehu@online.no> and Glenn T. Lines
+       <gtl@si.sintef.no>, built on top of the screen saver  rou-
+       tines by Jamie Zawinski <jwz@jwz.org>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                        xscreensaver hack                       2
+
+
diff --git a/local/man/cat.1/maze.1 b/local/man/cat.1/maze.1
new file mode 100644 (file)
index 0000000..8c460d2
--- /dev/null
@@ -0,0 +1,264 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       maze - an automated X11 demo repeatedly creating and solv-
+       ing a random maze
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       m\bma\baz\bze\be [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground  _\bc_\bo_\bl_\bo_\br]
+       [-background  _\bc_\bo_\bl_\bo_\br] [-window] [-root] [-install] [-visual
+       _\bv_\bi_\bs_\bu_\ba_\bl]   [-grid-size    _\bp_\bi_\bx_\be_\bl_\bs]    [-live-color    _\bc_\bo_\bl_\bo_\br]
+       [-dead-color   _\bc_\bo_\bl_\bo_\br]   [-solve-delay  _\bu_\bs_\be_\bc_\bs]  [-pre-delay
+       _\bu_\bs_\be_\bc_\bs]   [-post-delay    _\bu_\bs_\be_\bc_\bs]    [-generator    _\bi_\bn_\bt_\be_\bg_\be_\br]
+       [-max-length _\bi_\bn_\bt_\be_\bg_\be_\br] [-bridge] [-no-bridge]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bm_\ba_\bz_\be  program creates a "random" maze and then solves
+       it with graphical feedback.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bm_\ba_\bz_\be accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-g\bgr\bri\bid\bd-\b-s\bsi\biz\bze\be _\bp_\bi_\bx_\be_\bl_\bs
+               The  size  of  each  block of the maze, in pixels;
+               default is 0, meaning pick a random grid size.
+
+       -\b-l\bli\biv\bve\be-\b-c\bco\bol\blo\bor\br _\bc_\bo_\bl_\bo_\br
+               The color of the path.
+
+       -\b-d\bde\bea\bad\bd-\b-c\bco\bol\blo\bor\br _\bc_\bo_\bl_\bo_\br
+               The color of the failed path (it is also  stippled
+               with a 50% pattern.)
+
+       -\b-s\bsk\bki\bip\bp-\b-c\bco\bol\blo\bor\br _\bc_\bo_\bl_\bo_\br
+               The  maze solver will choose to not go down a path
+               if it can "see" (in a straight line) that it is  a
+               dead end.  This is the color to use for paths that
+               are skipped for this reason.
+
+       -\b-s\bsu\bur\brr\bro\bou\bun\bnd\bd-\b-c\bco\bol\blo\bor\br _\bc_\bo_\bl_\bo_\br
+               If the maze solver  ever  completely  encloses  an
+               area  within the maze, then it knows that the exit
+               is not in there (and in fact the interior of  that
+               area  might  not even be reachable.)  It will mark
+
+
+
+X Version 11                 7-mar-93                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               out those cells using this color.
+
+       -\b-s\bso\bol\blv\bve\be-\b-d\bde\bel\bla\bay\by _\bi_\bn_\bt_\be_\bg_\be_\br
+               Delay (in microseconds) between each step  of  the
+               solution  path.   Default  5000,  or about 1/200th
+               second.
+
+       -\b-p\bpr\bre\be-\b-d\bde\bel\bla\bay\by _\bi_\bn_\bt_\be_\bg_\be_\br
+               Delay (in microseconds) between generating a  maze
+               and starting to solve it.  Default 2000000 (2 sec-
+               onds.)
+
+       -\b-p\bpo\bos\bst\bt-\b-d\bde\bel\bla\bay\by _\bi_\bn_\bt_\be_\bg_\be_\br
+               Delay (in microseconds) after solving a  maze  and
+               before  generating  a new one.  Default 4000000 (4
+               seconds.)
+
+       -\b-g\bge\ben\bne\ber\bra\bat\bto\bor\br _\bn_\bu_\bm
+               Sets the algorithm that will be used  to  generate
+               the  mazes.  The  default  is  -1,  which randomly
+               selects an algorithm for each maze that is  gener-
+               ated.  Generator  0 is the original one, and works
+               by walking around randomly until we  hit  a  place
+               we've  been before, then backtracking and trying a
+               new direction somewhere. Generator 1 picks a  ran-
+               dom  spot  in the maze, then draws a straight wall
+               from that spot in a random direction until it hits
+               another wall (and continues until the maze is com-
+               plete). Generator 2 is based  on  sets.  Initially
+               all  cells  are in different sets. Then two neigh-
+               boring cells are chosen and if they are in differ-
+               ent  sets,  their sets are joined. If they were in
+               the same set, a wall is built between  them.  This
+               continues until the maze is complete.
+
+               All  generators  generate  mazes  with  a  certain
+               'characteristic'. See if you can spot them!
+
+       -\b-m\bma\bax\bx-\b-l\ble\ben\bng\bgt\bth\bh _\bn_\bu_\bm
+               Controls the maximum length of walls drawn in  one
+               go by generator 1.
+
+       -\b-b\bbr\bri\bid\bdg\bge\be
+
+       -\b-n\bno\bo-\b-b\bbr\bri\bid\bdg\bge\be
+               Controls  whether  or  not  a 'bridge' will appear
+               over the logo.
+
+       Clicking the mouse in the maze window controls it.
+
+       L\bLe\bef\bft\btB\bBu\but\btt\bto\bon\bn      Clears the window and restarts maze.
+
+       M\bMi\bid\bdd\bdl\ble\beB\bBu\but\btt\bto\bon\bn    Pause or unpause the program.
+
+
+
+
+X Version 11                 7-mar-93                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       R\bRi\big\bgh\bht\btB\bBu\but\btt\bto\bon\bn     Exit.
+
+B\bBU\bUG\bGS\bS
+       Expose events force a restart of maze.
+
+       Mouse actions are based on "raw" values (Button1,  Button2
+       and Button3) instead of using the pointer map.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C)  1988  by  Sun  Microsystems, Inc. Mountain
+       View, CA.
+
+       All Rights Reserved
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation,  and  that  the  names of Sun or MIT not be
+       used in advertising or publicity pertaining  to  distribu-
+       tion  of  the software without specific prior written per-
+       mission. Sun and M.I.T.  make no representations about the
+       suitability  of  this software for any purpose. It is pro-
+       vided "as is" without any express or implied warranty.
+
+       SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+       INCLUDING  ALL  IMPLIED  WARRANTIES OF MERCHANTABILITY AND
+       FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE
+       LIABLE  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES
+       OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
+       OR  PROFITS,  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+       OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN  CONNECTION
+       WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+A\bAU\bUT\bTH\bHO\bOR\bR(\b(s\bs)\b)
+       Zack Weinberg [ Smarter maze-solver ] zack@rabi.phys.columbia.edu
+       Johannes Keukelaar [ Generators 1 and 2 ] johannes@nada.kth.se
+         Royal Institute of Technology, Stockholm, Sweden
+       Jim Randell    [ XScreenSaver version ] jmr@mddjmr.fc.hp.com
+         HPLabs, Bristol
+       Richard Hess   [ X11 extensions ]       {...}!uunet!cimshop!rhess
+         Consilium, Mountain View, CA
+
+
+
+X Version 11                 7-mar-93                           3
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       Dave Lemke     [ X11 version ]          lemke@sun.COM
+         Sun MicroSystems, Mountain View, CA
+       Martin Weiss   [ SunView version ]
+         Sun MicroSystems, Mountain View, CA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                 7-mar-93                           4
+
+
diff --git a/local/man/cat.1/moire.1 b/local/man/cat.1/moire.1
new file mode 100644 (file)
index 0000000..4361a3c
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       halo - draw circular interference patterns
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       h\bha\bal\blo\bo  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual   _\bv_\bi_\bs_\bu_\ba_\bl]   [-delay  _\bs_\be_\bc_\bo_\bn_\bd_\bs]  [-random  _\bb_\bo_\bo_\bl_\be_\ba_\bn]
+       [-ncolors _\bi_\bn_\bt] [-offset _\bi_\bn_\bt]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bm_\bo_\bi_\br_\be program draws cool  circular  interference  pat-
+       terns.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bm_\bo_\bi_\br_\be accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How  long to wait before starting over.  Default 5
+               seconds.
+
+       -\b-r\bra\ban\bnd\bdo\bom\bm _\bb_\bo_\bo_\bl_\be_\ba_\bn
+               Whether to ignore the  foreground/background  col-
+               ors, and pick them randomly instead.
+
+       -\b-o\bof\bff\bfs\bse\bet\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               The maximum random radius increment to use.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors should be allocated in the color
+               ramp (note that this value interacts with _\bo_\bf_\bf_\bs_\be_\bt.)
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+
+
+X Version 11                27-Apr-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1997 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie  Zawinski <jwz@jwz.org>, 27-Apr-97, based on code by
+       Michael D. Bayne <mdb@go2net.com>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                27-Apr-97                           2
+
+
diff --git a/local/man/cat.1/munch.1 b/local/man/cat.1/munch.1
new file mode 100644 (file)
index 0000000..35203b0
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       munch - munching squares screen hack
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       m\bmu\bun\bnc\bch\bh  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-delay _\bs_\be_\bc_\bo_\bn_\bd_\bs] [-xor] [-noxor] [-shift]
+       [-noshift] [-logminwidth _\bm_\bi_\bn_\bi_\bm_\bu_\bm _\bw_\bi_\bd_\bt_\bh]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bm_\bu_\bn_\bc_\bh program preforms the munching squares hack until
+       killed.   It picks square size, position, and gravity ran-
+       domly; configurable options are listed below.
+
+       The munching squares hack cosists of drawing Y = X  XOR  T
+       for  a range of X and T over and over until all the possi-
+       ble combinations of X and T have come up.  It was  report-
+       edly  discovered  by  Jackson  Wright  in  1962 and took 5
+       instructions of PDP-6 code.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bm_\bu_\bn_\bc_\bh accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to wait before starting over.  Default  5
+               seconds.
+
+       -\b-x\bxo\bor\br    Use the XOR drawing function.  (Default.)
+
+       -\b-n\bno\bo-\b-x\bxo\bor\br Don't use the XOR drawing function.
+
+       -\b-s\bsh\bhi\bif\bft\bt  Start drawing the square at weird starting points.
+               (Default.)
+
+       -\b-n\bno\bo-\b-s\bsh\bhi\bif\bft\bt
+               Don't shift and start drawing the square at  weird
+               starting points.
+
+
+
+
+X Version 11                17-Jun-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-l\blo\bog\bgm\bmi\bin\bnw\bwi\bid\bdt\bth\bh _\bm_\bi_\bn_\bi_\bm_\bu_\bm_\b-_\bw_\bi_\bd_\bt_\bh
+               The  logarithm  (base  2) of the minimum with of a
+               square (must be a power of 2, or some parts of the
+               square aren't.)
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1),                                     x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1),
+       h\bht\btt\btp\bp:\b:/\b//\b/w\bww\bww\bw.\b.i\bin\bnw\bwa\bap\bp.\b.c\bco\bom\bm/\b/p\bpd\bdp\bp1\b10\b0/\b/h\bhb\bba\bak\bke\ber\br/\b/h\bha\bak\bkm\bme\bem\bm/\b/h\bha\bak\bkm\bme\bem\bm.\b.h\bht\btm\bml\bl,\b,
+       h\bht\btt\btp\bp:\b:/\b//\b/w\bww\bww\bw.\b.c\bco\bom\bme\bed\bdi\bia\ba.\b.c\bco\bom\bm/\b/H\bHo\bot\bt/\b/j\bja\bar\brg\bgo\bon\bn_\b_3\b3.\b.0\b0/\b/J\bJA\bAR\bRG\bGO\bON\bN_\b_M\bM/\b/M\bMU\bUN\bNC\bCH\bH-\b-
+       S\bSQ\bQR\bR.\b.H\bHT\bTM\bML\bL
+
+H\bHI\bIS\bST\bTO\bOR\bRY\bY
+       Quoted from HAKMEM, for historical interest.  As that doc-
+       ument  says,  "Unless  otherwise stated, all computer pro-
+       grams are in PDP-6/10 assembly language."
+
+       ITEM 146: MUNCHING SQUARES
+               Another simple display program. It is thought that
+               this  was  discovered by Jackson Wright on the RLE
+               PDP-1 circa 1962.
+
+
+                        DATAI 2
+                        ADDB 1,2
+                        ROTC 2,-22
+                        XOR 1,2
+                        JRST .-4
+
+               2=X,  3=Y.  Try  things  like  1001002   in   data
+               switches.  This  also does interesting things with
+               operations other than  XOR,  and  rotations  other
+               than  -22.  (Try  IOR; AND; TSC; FADR; FDV(!); ROT
+               -14, -9, -20, ...)
+
+       ITEM 147 (Schroeppel):
+               Munching squares is just views of the graph Y =  X
+               XOR T for consecutive values of T = time.
+
+       ITEM 148 (Cohen, Beeler):
+               A  modification  to munching squares which reveals
+               them in frozen states through opening and  closing
+               curtains: insert FADR 2,1 before the XOR. Try data
+               switches =
+
+
+
+
+
+
+X Version 11                17-Jun-97                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+                        4000,,4    1000,,2002    2000,,4    0,,1002
+
+               (Notation: <left half>,,<right half>)
+
+               Also try  the  FADR  after  the  XOR,  switches  =
+               1001,,1.
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C)  1997 by Tim Showalter.  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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Tim  Showalter  <tjs@andrew.cmu.edu>,  17-Jun-97, based on
+       what's in the Jargon File and stealing stuff from existing
+       xscreensaver modules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                17-Jun-97                           3
+
+
diff --git a/local/man/cat.1/noseguy.1 b/local/man/cat.1/noseguy.1
new file mode 100644 (file)
index 0000000..bf53609
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       noseguy  -  a  little  guy  with a big nose wanders around
+       being witty
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       n\bno\bos\bse\beg\bgu\buy\by [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background  _\bc_\bo_\bl_\bo_\br] [-text-foreground _\bc_\bo_\bl_\bo_\br] [-text-back-
+       ground _\bc_\bo_\bl_\bo_\br] [-font _\bf_\bo_\bn_\bt]  [-window]  [-root]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-mode _\bm_\bo_\bd_\be] [-program _\bp_\br_\bo_\bg_\br_\ba_\bm] [-file-
+       name le_\b] _\b[_\b-_\bt_\be_\bx_\bt _\bt_\be_\bx_\bt_\b]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       A little man with a big nose and a hat runs around spewing
+       out  messages  to the screen.  This code (and its bitmaps)
+       were extracted from the _\bx_\bn_\bl_\bo_\bc_\bk program.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bn_\bo_\bs_\be_\bg_\bu_\by accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-f\bfo\bon\bnt\bt _\bf_\bo_\bn_\bt
+               The font used for the messages.
+
+       -\b-m\bmo\bod\bde\be [\b[ p\bpr\bro\bog\bgr\bra\bam\bm |\b| f\bfi\bil\ble\be |\b| s\bst\btr\bri\bin\bng\bg ]\b]
+               In  _\bp_\br_\bo_\bg_\br_\ba_\bm  mode, the messages are gotten by run-
+               ning a program.  The program used is controlled by
+               the _\b-_\bp_\br_\bo_\bg_\br_\ba_\bm option, and the _\b._\bp_\br_\bo_\bg_\br_\ba_\bm resource.
+
+               In _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be mode, the message used is the contents
+               of a file.  The file used  is  controlled  by  the
+               _\b-_\bf_\bi_\bl_\be option, and the _\b._\bf_\bi_\bl_\be_\bn_\ba_\bm_\be resource.
+
+               In _\bs_\bt_\br_\bi_\bn_\bg mode, the message is whatever was speci-
+               fied on the command line as the _\b-_\bt_\be_\bx_\bt  option,  or
+               in the resource database as the _\b._\bt_\be_\bx_\bt resource.
+
+       -\b-p\bpr\bro\bog\bgr\bra\bam\bm _\bp_\br_\bo_\bg_\br_\ba_\bm
+               If  _\bm_\bo_\bd_\be  is _\bp_\br_\bo_\bg_\br_\ba_\bm (the default), then this pro-
+               gram will be run periodically, and its output will
+               be  the text of the messages.  The default program
+               is _\b"_\bf_\bo_\br_\bt_\bu_\bn_\be _\b-_\bs_\b", but _\by_\bo_\bw is also a good choice.
+
+
+
+
+X Version 11                13-aug-92                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-f\bfi\bil\ble\ben\bna\bam\bme\be _\bf_\bi_\bl_\be
+               If _\bm_\bo_\bd_\be is _\bf_\bi_\bl_\be, then the contents  of  this  file
+               will be used for all messages.
+
+       -\b-t\bte\bex\bxt\bt _\bs_\bt_\br_\bi_\bn_\bg
+               If _\bm_\bo_\bd_\be is _\bs_\bt_\br_\bi_\bn_\bg, then this text will be used for
+               all messages.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxn\bnl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright 1985, 1990 by Dan Heller <argv@sun.com>.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Dan Heller <argv@sun.com>, 1985.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                13-aug-92                           2
+
+
diff --git a/local/man/cat.1/pedal.1 b/local/man/cat.1/pedal.1
new file mode 100644 (file)
index 0000000..b31f6b8
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       pedal - pretty geometric picture program
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       p\bpe\bed\bda\bal\bl  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]  [-delay  _\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-maxlines    _\bn_\bu_\bm_\bb_\be_\br]    [-fadedelay   _\bu_\bs_\be_\bc_\bo_\bn_\bd_\bs]   [-mono]
+       [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bp_\be_\bd_\ba_\bl program displays pretty geometric pictures.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bp_\be_\bd_\ba_\bl accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-f\bfo\bor\bre\beg\bgr\bro\bou\bun\bnd\bd _\bc_\bo_\bl_\bo_\br
+               The color for the foreground.  Default is white.
+
+       -\b-b\bba\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd _\bc_\bo_\bl_\bo_\br
+               The color for the background.  Default is black.
+
+       -\b-d\bde\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               The  number  of seconds to pause between each pic-
+               ture.
+
+       -\b-m\bma\bax\bxl\bli\bin\bne\bes\bs _\bn_\bu_\bm_\bb_\be_\br
+               The maximum number of lines in the drawing.   Good
+               values  are between 20 and 2000.  Maximum value is
+               16K.
+
+       -\b-f\bfa\bad\bde\bed\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               The number of micro seconds to take when fading in
+               and out.
+
+       -\b-m\bmo\bon\bno\bo   Don't  do  fading.   Pretend we're on a monochrome
+               display.
+
+       To make your X server grunt under  load,  and  to  impress
+       your friends, try _\bp_\be_\bd_\ba_\bl _\b-_\bm_\bo_\bn_\bo _\b-_\bd_\be_\bl_\ba_\by _\b0 _\b-_\bm_\ba_\bx_\bl_\bi_\bn_\be_\bs _\b1_\b0_\b0_\b.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+
+
+
+
+X Version 11                24-Jun-94                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C)  1994, by Carnegie Mellon University.  Per-
+       mission 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  copy-
+       right notice appear in all copies and that both that copy-
+       right notice and this permission notice appear in support-
+       ing  documentation.  No representations are made about the
+       suitability of fnord this software for any purpose.  It is
+       provided "as is" without express or implied warranty.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Dale Moore <Dale.Moore@cs.cmu.edu>, 24-Jun-1994.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                24-Jun-94                           2
+
+
diff --git a/local/man/cat.1/penrose.1 b/local/man/cat.1/penrose.1
new file mode 100644 (file)
index 0000000..8bdb131
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       penrose - draws quasiperiodic tilings
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       p\bpe\ben\bnr\bro\bos\bse\be [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-redoDelay    _\bs_\be_\bc_\bo_\bn_\bd_\bs]    [-size    _\bi_\bn_\bt_\be_\bg_\be_\br]    [-ammann]
+       [-no-ammann]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bp_\be_\bn_\br_\bo_\bs_\be program draws quasiperiodic tilings.
+
+       See  Onoda,  Steinhardt,  DiVincenzo  and Socolar in Phys.
+       Rev. Lett. 60, #25, 1988 or  Strandburg  in  Computers  in
+       Physics, Sep/Oct 1991.
+
+       This implementation uses the simpler version of the growth
+       algorithm, i.e., if there are no forced vertices,  a  ran-
+       domly chosen tile is added to a randomly chosen vertex (no
+       preference for those 108 degree angles).
+
+       There are two essential differences to the algorithm  pre-
+       sented  in  the  literature:  First,  we  do not allow the
+       tiling to enclose an untiled area.  Whenever  this  is  in
+       danger  of  happening, we just do not add the tile, hoping
+       for a better random choice the next  time.   Second,  when
+       choosing  a  vertex  randomly,  we will take one that lies
+       withing the viewport if available.  If this seems to cause
+       enclosures  in the forced rule case, we will allow invisi-
+       ble vertices to be chosen.
+
+       Tiling is restarted whenever one of the following happens:
+       there  are  no  incomplete vertices within the viewport or
+       the tiling has extended a window's length beyond the  edge
+       of  the  window  horizontally or vertically or forced rule
+       choice has failed 100 times due to areas about  to  become
+       enclosed.
+
+       Although  quasiperiodic  tilings  are  produced, the tiles
+       themselves are not penrose tiles  (darts  and  kites).  In
+       contrast  to penrose tiles, these tiles can be arranged to
+       form a periodic tiling.
+
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bp_\be_\bn_\br_\bo_\bs_\be accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default 64.  The colors are chosen randomly.
+
+       -\b-s\bsi\biz\bze\be _\bi_\bn_\bt_\be_\bg_\be_\br
+               How big the tiles should be.  Default 40 pixels.
+
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bl_\bl_\bi_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How  long (in 1/1,000,000'ths of a second) to wait
+               between drawing each tile.  Default 10,000 or  .01
+               seconds.
+
+
+       -\b-r\bre\bed\bdo\boD\bDe\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to wait between starting a completely new
+               tiling.  Default 3 seconds.
+
+
+       -\b-a\bam\bmm\bma\ban\bnn\bn _\bi_\bn_\bt_\be_\bg_\be_\br
+
+       -\b-n\bno\bo-\b-a\bam\bmm\bma\ban\bnn\bn _\bi_\bn_\bt_\be_\bg_\be_\br
+               Whether Ammann lines should be added.
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1996 by Timo Korvola.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+
+
+
+X Version 11                10-May-97                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Timo Korvola <tkorvola@dopey.hut.fi>, 1996.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           3
+
+
diff --git a/local/man/cat.1/pyro.1 b/local/man/cat.1/pyro.1
new file mode 100644 (file)
index 0000000..d45279c
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       pyro - simulate fireworks
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       p\bpy\byr\bro\bo  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-count  _\bi_\bn_\bt_\be_\bg_\be_\br]  [-frequency _\bi_\bn_\bt_\be_\bg_\be_\br]
+       [-scatter _\bi_\bn_\bt_\be_\bg_\be_\br]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bp_\by_\br_\bo program simulates fireworks, in a way similar  to
+       a Macintosh program of the same name.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bp_\by_\br_\bo accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many particles should be allowed on the screen
+               at once.  Default 100.
+
+       -\b-f\bfr\bre\beq\bqu\bue\ben\bnc\bcy\by _\bi_\bn_\bt_\be_\bg_\be_\br
+               How often new missiles should launch.  Default 30.
+
+       -\b-s\bsc\bca\bat\btt\bte\ber\br _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  particles  should appear when a missile
+               explodes.  Default 20.  The actual number used  is
+               between _\bN and _\bN_\b+_\b(_\bN_\b/_\b2_\b).
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+
+
+X Version 11                13-aug-92                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1992 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                13-aug-92                           2
+
+
diff --git a/local/man/cat.1/qix.1 b/local/man/cat.1/qix.1
new file mode 100644 (file)
index 0000000..d99d5d8
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       qix - bounce colored lines around a window
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       q\bqi\bix\bx  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground  _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-segments _\bi_\bn_\bt] [-spread _\bp_\bi_\bx_\be_\bl_\bs] [-size
+       _\bp_\bi_\bx_\be_\bl_\bs] [-count _\bi_\bn_\bt] [-color-shift _\bd_\be_\bg_\br_\be_\be_\bs] [-delay _\bu_\bs_\be_\bc_\bs]
+       [-random]  [-linear]  [-solid]  [-hollow] [-xor] [-no-xor]
+       [-transparent] [-non-transparent]  [-additive]  [-subtrac-
+       tive] [-poly _\bi_\bn_\bt] [-gravity] [-no-gravity]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bq_\bi_\bx  program bounces a series of line segments around
+       its window.  This is truly the swiss army chainsaw of  qix
+       programs.   If  you know of one with more display modes, I
+       want to know about it.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bq_\bi_\bx accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-s\bse\beg\bgm\bme\ben\bnt\bts\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many line segments should be  drawn.   Default
+               50.
+
+       -\b-s\bsp\bpr\bre\bea\bad\bd _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  far apart the endpoints of one segment should
+               be from the next.  Default 8.
+
+       -\b-s\bsi\biz\bze\be _\bi_\bn_\bt_\be_\bg_\be_\br
+               The maximum distance one endpoint of a segment  is
+               allowed  to  be from the opposite end of that seg-
+               ment.  Default 0, meaning unlimited.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many qixes to draw.  Default 1.
+
+
+
+
+
+X Version 11                27-Apr-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-c\bco\bol\blo\bor\br-\b-s\bsh\bhi\bif\bft\bt _\bd_\be_\bg_\br_\be_\be_\bs
+               If on a color display, the color of the line  seg-
+               ments will cycle through the spectrum.  This spec-
+               ifies how far the hue of each  segment  should  be
+               from  the  next,  in  degrees  on  the  HSV wheel.
+               Default 3.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How much of a delay should be  introduced  between
+               steps  of  the animation.  Default 25000, or about
+               0.025 seconds.
+
+       -\b-r\bra\ban\bnd\bdo\bom\bm The _\bq_\bi_\bx will wander around  the  screen  semi-ran-
+               domly.  This is the default.
+
+       -\b-l\bli\bin\bne\bea\bar\br The  opposite  of  _\b-_\br_\ba_\bn_\bd_\bo_\bm: the _\bq_\bi_\bx will travel in
+               straight lines until it reaches a wall,  and  then
+               it will bounce.
+
+       -\b-s\bso\bol\bli\bid\bd  If  this  is  specified, then the area between the
+               line segments will be filled in with the appropri-
+               ate  color,  instead  of the _\bq_\bi_\bx simply being com-
+               posed  of  one-pixel-wide  line  segments.    This
+               option looks really good in color.
+
+       -\b-h\bho\bol\bll\blo\bow\bw The opposite of _\b-_\bs_\bo_\bl_\bi_\bd; this is the default.
+
+       -\b-x\bxo\bor\br    If  this  is  specified, then qix segments will be
+               drawn and erased with xor, instead of being  drawn
+               in  some color and erased in the background color.
+               This implies _\b-_\bm_\bo_\bn_\bo, in that only two colors can be
+               used.
+
+       -\b-t\btr\bra\ban\bns\bsp\bpa\bar\bre\ben\bnt\bt
+               If  this  is specified, and _\b-_\bc_\bo_\bu_\bn_\bt is greater than
+               1, then each qix will be drawn in one  color,  and
+               when they overlap, the colors will be mixed.  This
+               looks best in conjuction with _\b-_\bs_\bo_\bl_\bi_\bd.
+
+       -\b-n\bno\bon\bn-\b-t\btr\bra\ban\bns\bsp\bpa\bar\bre\ben\bnt\bt
+               Turns off _\b-_\bt_\br_\ba_\bn_\bs_\bp_\ba_\br_\be_\bn_\bt.
+
+       -\b-a\bad\bdd\bdi\bit\bti\biv\bve\be
+               If _\b-_\bt_\br_\ba_\bn_\bs_\bp_\ba_\br_\be_\bn_\bt is  specified,  then  this  option
+               means that the colors will be mixed using an addi-
+               tive color model, as if the qixes  were  projected
+               light.  This is the default.
+
+       -\b-s\bsu\bub\bbt\btr\bra\bac\bct\bti\biv\bve\be
+               If  _\b-_\bt_\br_\ba_\bn_\bs_\bp_\ba_\br_\be_\bn_\bt  is  specified,  then this option
+               means that the colors will be mixed using  a  sub-
+               tractive   color  model,  as  if  the  qixes  were
+               translucent filters.
+
+
+
+
+X Version 11                27-Apr-97                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-p\bpo\bol\bly\by _\bi_\bn_\bt
+               How many vertices each qix-line should  have:  the
+               default  is  2,  meaning  the traditional qix line
+               shape.  Three will yield triangles, and so on.
+
+       -\b-g\bgr\bra\bav\bvi\bit\bty\by
+
+       -\b-n\bno\bo-\b-g\bgr\bra\bav\bvi\bit\bty\by
+               Whether there should be downward attraction.   For
+               example,  the  options  -\b-g\bgr\bra\bav\bvi\bit\bty\by -\b-l\bli\bin\bne\bea\bar\br will make
+               everything move in nice smooth parabolas.  Gravity
+               is off by default.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1992 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+       Thanks  to  Ariel  Scolnicov  for  the  -poly and -gravity
+       options.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                27-Apr-97                           3
+
+
diff --git a/local/man/cat.1/rd-bomb.1 b/local/man/cat.1/rd-bomb.1
new file mode 100644 (file)
index 0000000..cd9240f
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       rd-bomb - reaction/diffusion textures
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       r\brd\bd-\b-b\bbo\bom\bmb\bb [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root] [-install]  [-visual
+       _\bv_\bi_\bs_\bu_\ba_\bl]  [-width  _\bn] [-height _\bn] [-reaction _\bn] [-diffusion
+       _\bn] [-size _\bf] [-speed _\bf] [-delay _\bu_\bs_\be_\bc_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\br_\bd_\b-_\bb_\bo_\bm_\bb  program  draws  reaction/diffusion  textures.
+       The code is derived from the 'd' mode of the "bomb" visual
+       musical                  instrument                   (see
+       http://www.cs.cmu.edu/~spot/bomb.html).   I  got the equa-
+       tions      from       xmorphia       (http://www.ccsf.cal-
+       tech.edu/ismap/image.html), which is based on a version of
+       the Gray-Scott model taken from:
+           John E. Pearson "Complex Patterns in a Simple System"
+           Science, 261,189, 9 July 1993.
+
+       If the frame-rate is  too  low,  consider  decreasing  the
+       width  and  height  of the tile, or decreasing the size of
+       the active part of the screen.
+
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       If one of the reaction,  diffusion,  radius,  and  palette
+       options  is set to a negative value, then that option will
+       be set to a random appropriate value.
+
+       Be sure to try "-speed 1 -size 0.1 -epoch 3000".
+
+       _\br_\bd_\b-_\bb_\bo_\bm_\bb accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-w\bwi\bid\bdt\bth\bh _\bn
+
+       -\b-h\bhe\bei\big\bgh\bht\bt _\bn
+               Specify the size of the tile, in pixels.
+
+       -\b-r\bre\bea\bac\bct\bti\bio\bon\bn _\bn
+
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-d\bdi\bif\bff\bfu\bus\bsi\bio\bon\bn _\bn
+               These  are  constants in the equations that effect
+               its visual nature.  Each may be one of 0, 1, or 2.
+
+       -\b-r\bra\bad\bdi\biu\bus\bs _\bn
+               Size of the seed.
+
+       -\b-p\bpa\bal\ble\bet\btt\bte\be _\bn
+               Selects  a  palette.   Must  be  between 0 and 80,
+               inclusive.
+
+       -\b-s\bsi\biz\bze\be _\bf What fraction of the window is actively  drawn,  a
+               floating  point number between 0 (exclusive) and 1
+               (inclusive).  Default is 0.66.
+
+       -\b-s\bsp\bpe\bee\bed\bd _\bf
+               When a fraction  of  the  screen  is  active,  the
+               active  area  moves at this rate (a floating point
+               number).  Default is zero.  Suggested value:  1.0.
+
+       -\b-d\bde\bel\bla\bay\by _\bu_\bs_\be_\bc_\bs
+               How  many  microseconds  to  delay between frames;
+               default 1000, or about 1/1000th of a second.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1997 by Scott Draves.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Scott Draves <spot@cs.cmu.edu>, 9/97
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/rocks.1 b/local/man/cat.1/rocks.1
new file mode 100644 (file)
index 0000000..cc811b4
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       rocks - animation of flying through an asteroid field
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       r\bro\boc\bck\bks\bs  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root] [-mono] [-ncolors _\bn]
+       [-install]   [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-count  _\bi_\bn_\bt_\be_\bg_\be_\br]  [-delay
+       _\bu_\bs_\be_\bc_\bs] [-speed _\bi_\bn_\bt_\be_\bg_\be_\br] [-norotate] [-nomove] [-3d]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\br_\bo_\bc_\bk_\bs program draws an animation of an asteroid  field
+       moving  past  the observer (or vice versa).  Sometimes the
+       observer picks up spin on Z axis.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\br_\bo_\bc_\bk_\bs accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   Make all the rocks the same color.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs c\bco\bol\blo\bor\brs\bs
+               How  many  different  colors  to  use.  Default 5.
+               Colors are chosen randomly.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               Maximum number of rocks to draw on the  screen  at
+               once.  Default 100.
+
+       -\b-s\bsp\bpe\bee\bed\bd _\bi_\bn_\bt_\be_\bg_\be_\br
+               A measure of the speed with which the observer and
+               the rocks pass each other, from 1 to 100.  Default
+               100,  meaning  ``very fast.''  If you're on a slow
+               display connection  (the  animation  looks  jerky)
+               then   try  making  this  number  smaller,  and/or
+               decreasing the number of rocks.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               Number  of  microseconds  to  delay  between  each
+               frame.   Default  50000, meaning about 1/20th sec-
+               ond.  Compare and contrast with _\b-_\bs_\bp_\be_\be_\bd, above.
+
+
+
+
+
+X Version 11                13-aug-92                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-n\bno\bor\bro\bot\bta\bat\bte\be
+               Don't rotate the observer; just  fly  through  the
+               field on the level.
+
+       -\b-n\bno\bom\bmo\bov\bve\be Don't  turn  the observer; just fly straight ahead
+               through the field.
+
+       -\b-3\b3d\bd     Do red/blue 3d separations: if  you  look  at  the
+               screen  with 3d glasses, the rocks will be _\bj_\bu_\bm_\bp_\bi_\bn_\bg
+               right _\bo_\bu_\bt at you.  Oooooh, scaaary!
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+B\bBU\bUG\bGS\bS
+       There should be an option  to  display  doppler  shift  (a
+       gravity rainbow.)
+
+       Speed of rotation should be settable.
+
+       Default  speed  of  rotation should be relative to forward
+       velocity.
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1992 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Based on Lisp Machine  code  copyright  1988  John  Nguyen
+       <johnn@hx.lcs.mit.edu>.
+
+       Ported  to  C  and  X  by  Jamie  Zawinski  <jwz@jwz.org>,
+       13-aug-92.
+
+       Steering  code  by  Jeremie  Petit;  3D  code  by   theil-
+       ing@coli.uni-sb.de.
+
+
+
+
+
+
+X Version 11                13-aug-92                           2
+
+
diff --git a/local/man/cat.1/rorschach.1 b/local/man/cat.1/rorschach.1
new file mode 100644 (file)
index 0000000..4592596
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       rorschach - simulate ink-blot patterns
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       r\bro\bor\brs\bsc\bch\bha\bac\bch\bh   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-iterations _\bi_\bn_\bt_\be_\bg_\be_\br] [-offset
+       _\bi_\bn_\bt_\be_\bg_\be_\br] [-xsymmetry] [-ysymmetry]  [-erase-mode  _\bi_\bn_\bt_\be_\bg_\be_\br]
+       [-erase-speed _\bu_\bs_\be_\bc_\bs] [-delay _\bs_\be_\bc_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\br_\bo_\br_\bs_\bc_\bh_\ba_\bc_\bh program draws random patterns reminiscent of
+       the psychological test of same name.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\br_\bo_\br_\bs_\bc_\bh_\ba_\bc_\bh accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-i\bit\bte\ber\bra\bat\bti\bio\bon\bns\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many dots should be drawn each time.   Default
+               4000.
+
+       -\b-o\bof\bff\bfs\bse\bet\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  far apart the dots should be.  Default 4 pix-
+               els.
+
+       -\b-x\bxs\bsy\bym\bmm\bme\bet\btr\bry\by
+               Whether the images should be horizontally  symmet-
+               rical.  Default true.
+
+       -\b-y\bys\bsy\bym\bmm\bme\bet\btr\bry\by
+               Whether  the images should be vertically symmetri-
+               cal.  Default false.
+
+       -\b-e\ber\bra\bas\bse\be-\b-m\bmo\bod\bde\be _\bi_\bn_\bt_\be_\bg_\be_\br
+               This sets the erase mode. Mode -1 chooses a random
+               mode  each  time.  There  are  currently  6  modes
+               defined (0-5).
+
+
+
+
+X Version 11                13-aug-92                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-e\ber\bra\bas\bse\be-\b-s\bsp\bpe\bee\bed\bd _\bu_\bs_\be_\bc_\bs
+               This controls the speed at which the  screen  will
+               be  erased.  (Delay  between erasing of individual
+               lines.)
+
+       -\b-d\bde\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               This sets the number of seconds  that  the  figure
+               will be on the screen.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+B\bBU\bUG\bGS\bS
+       May call your sanity into question.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1992 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                13-aug-92                           2
+
+
diff --git a/local/man/cat.1/sierpinski.1 b/local/man/cat.1/sierpinski.1
new file mode 100644 (file)
index 0000000..b09527f
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       sierpinski - draws Sierpinski triangle fractals
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bsi\bie\ber\brp\bpi\bin\bns\bsk\bki\bi   [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install]  [-visual  _\bv_\bi_\bs_\bu_\ba_\bl]  [-ncolors  _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay
+       _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs] [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count _\bi_\bn_\bt_\be_\bg_\be_\br]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bi_\be_\br_\bp_\bi_\bn_\bs_\bk_\bi program draws Sierpinski triangle fractals.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bi_\be_\br_\bp_\bi_\bn_\bs_\bk_\bi accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 64.  The colors are chosen randomly.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1996 by Desmond Daignault.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Desmond  Daignault  <tekdd@dtol.datatimes.com>, 05-Sep-96.
+       (Original xlock version was called tri.c.)
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie  Zawinski  <jwz@jwz.org>,  10-May-97.   (Renamed  to
+       sierpinski.)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/slidescreen.1 b/local/man/cat.1/slidescreen.1
new file mode 100644 (file)
index 0000000..695d71d
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       slidescreen - permute the screen image like an 8-puzzle
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bsl\bli\bid\bde\bes\bsc\bcr\bre\bee\ben\bn  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-background
+       _\bc_\bo_\bl_\bo_\br] [-grid-size _\bp_\bi_\bx_\be_\bl_\bs] [-ibw _\bp_\bi_\bx_\be_\bl_\bs] [-increment  _\bp_\bi_\bx_\b-
+       _\be_\bl_\bs]  [-delay  _\bu_\bs_\be_\bc_\bs]  [-delay2  _\bu_\bs_\be_\bc_\bs]  [-window] [-root]
+       [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bl_\bi_\bd_\be_\bs_\bc_\br_\be_\be_\bn program takes  an  image  of  the  screen,
+       divides  it  into  a grid, deletes a random square of that
+       grid, and then randomly slides one  of  the  neighbors  of
+       this "hole" into the hole (and repeat.)
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bl_\bi_\bd_\be_\bs_\bc_\br_\be_\be_\bn accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-g\bgr\bri\bid\bd-\b-s\bsi\biz\bze\be _\bp_\bi_\bx_\be_\bl_\bs
+               The size of the grid cells.  Default 70 pixels.
+
+       -\b-i\bib\bbw\bw _\bp_\bi_\bx_\be_\bl_\bs
+               The size  of  the  "gutter"  between  grid  cells.
+               Default 1 pixel.
+
+       -\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bt _\bp_\bi_\bx_\be_\bl_\bs
+               How  many  pixels by which a piece should be moved
+               when sliding to a new location.  Default  10  pix-
+               els.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How  much  of a delay should be introduced between
+               steps of the animation of the motion of each  seg-
+               ment.  Default 50000, which is 0.05 seconds.  This
+               is closely related to the _\b-_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt parameter.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How much of a delay should be  introduced  between
+               the  end  of  the  motion  of  one segment and the
+               beginning  of  the  motion  of  another.   Default
+               1000000, which is one second.
+
+
+
+X Version 11                24-Nov-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+R\bRE\bES\bSO\bOU\bUR\bRC\bCE\bES\bS
+       On  some systems (currently, only SGIs), this program can,
+       instead of grabbing a desktop image, grab a frame of video
+       from  an external camera and manipulate that instead.  The
+       following resources control that.
+
+
+       g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by (Float)
+               What portion of the time to grab video rather than
+               a  screen image, between 0.0 and 1.0.  Defaults to
+               0.5, or half the time.
+
+       v\bvi\bid\bde\beo\boD\bDe\bev\bvi\bic\bce\be (Integer)
+               The number of the default video  input  device  to
+               check  first.   If unspecified, the default camera
+               (from videopanel(1)) will be checked first.  After
+               that, all other available video input devices will
+               be checked in order.
+
+               The first one which  produces  a  non-black  image
+               will be used.  If all images are black, the others
+               will be re-checked a few times  before  giving  up
+               and  falling  back  to  simply  grabbing a desktop
+               image (but note that this takes a few seconds,  so
+               if  you  don't  actually  have  any  video sources
+               hooked up, you should consider turning  off  video
+               grabbing  by setting g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by to 0.0.)
+
+       v\bvi\bid\bde\beo\boG\bGa\bai\bin\bn (Float)
+               The amount by which to brighten the grabbed image.
+               This defaults to 2.2.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C) 1992 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 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.
+
+
+
+
+X Version 11                24-Nov-97                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 3-dec-92.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                24-Nov-97                           3
+
+
diff --git a/local/man/cat.1/slip.1 b/local/man/cat.1/slip.1
new file mode 100644 (file)
index 0000000..46c8df7
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       slip - sucks your screen into a jet engine
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bsl\bli\bip\bp  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-iterations _\bi_\bn_\bt_\be_\bg_\be_\br]
+       [-points _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs] [-delay2 _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\b-
+       _\bo_\bn_\bd_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bs_\bl_\bi_\bp  program  does  lots  of blits and chews up your
+       screen image.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bl_\bi_\bp accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default  128.   The  colors used cycle through the
+               hue, making N stops around the color wheel.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many whooziwhatsis to generate.  Default 35.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How long to frobnicate.  Default 50.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long we should wait between drawing each step.
+               Default 50000, or about 1/20th second.
+
+
+R\bRE\bES\bSO\bOU\bUR\bRC\bCE\bES\bS
+       On  some systems (currently, only SGIs), this program can,
+       instead of grabbing a desktop image, grab a frame of video
+       from  an external camera and manipulate that instead.  The
+       following resources control that.
+
+
+
+X Version 11                24-Nov-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by (Float)
+               What portion of the time to grab video rather than
+               a  screen image, between 0.0 and 1.0.  Defaults to
+               0.5, or half the time.
+
+       v\bvi\bid\bde\beo\boD\bDe\bev\bvi\bic\bce\be (Integer)
+               The number of the default video  input  device  to
+               check  first.   If unspecified, the default camera
+               (from videopanel(1)) will be checked first.  After
+               that, all other available video input devices will
+               be checked in order.
+
+               The first one which  produces  a  non-black  image
+               will be used.  If all images are black, the others
+               will be re-checked a few times  before  giving  up
+               and  falling  back  to  simply  grabbing a desktop
+               image (but note that this takes a few seconds,  so
+               if  you  don't  actually  have  any  video sources
+               hooked up, you should consider turning  off  video
+               grabbing  by setting g\bgr\bra\bab\bbV\bVi\bid\bde\beo\boP\bPr\bro\bob\bba\bab\bbi\bil\bli\bit\bty\by to 0.0.)
+
+       v\bvi\bid\bde\beo\boG\bGa\bai\bin\bn (Float)
+               The amount by which to brighten the grabbed image.
+               This defaults to 2.2.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1992 by Scott Draves.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Scott Graves <spot@cs.cmu.edu>.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 18-Oct-93.
+
+
+
+
+
+
+X Version 11                24-Nov-97                           2
+
+
diff --git a/local/man/cat.1/sonar.1 b/local/man/cat.1/sonar.1
new file mode 100644 (file)
index 0000000..494dbc0
--- /dev/null
@@ -0,0 +1,264 @@
+
+
+
+Sonar(1)                                                 Sonar(1)
+
+
+N\bNA\bAM\bME\bE
+       sonar - display a sonar scope
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bso\bon\bna\bar\br [-background _\bc_\bo_\bl_\bo_\br] [-sweep-color _\bc_\bo_\bl_\bo_\br] [-low-color
+       _\bc_\bo_\bl_\bo_\br]   [-scope-color    _\bc_\bo_\bl_\bo_\br]    [-grid-color    _\bc_\bo_\bl_\bo_\br]
+       [-text-color  _\bc_\bo_\bl_\bo_\br]  [-ttl  _\bi_\bn_\bt_\be_\bg_\be_\br]  [-mode ping] [-font
+       _\bf_\bo_\bn_\bt] [-ping-timeout _\bi_\bn_\bt] [-ping-source list | file | sub-
+       net  ] [-ping-file _\bh_\bo_\bs_\bt_\bs_\b-_\bf_\bi_\bl_\be] [-ping-list _\bh_\bo_\bs_\bt_\b-_\bn_\ba_\bm_\be_\b-_\bl_\bi_\bs_\bt]
+       [-team-a-name _\bs_\bt_\br_\bi_\bn_\bg] [-team-b-name _\bs_\bt_\br_\bi_\bn_\bg] [-team-a-count
+       _\bi_\bn_\bt] [-team-b-count _\bi_\bn_\bt]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bo_\bn_\ba_\br program displays a sonar scope on the computer's
+       screen.  This scope polls  a  sensor  as  the  sweep  goes
+       around  the  scope and displays what it finds as bogies on
+       the screen.  The program is designed to support  different
+       modes  representing different types of sensors.  Currently
+       the only implemented sensors are a simulator, and  a  net-
+       work  ping function that pings hosts and plots the results
+       on the scope.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bo_\bn_\ba_\br understands the following options:
+
+       -\b-b\bba\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd _\bC_\bo_\bl_\bo_\br
+               The background Color of the screen not covered  by
+               the scope.
+
+       -\b-s\bsw\bwe\bee\bep\bp-\b-c\bco\bol\blo\bor\br _\bC_\bo_\bl_\bo_\br
+               The color of the brightest part of the sweep.
+
+       -\b-s\bsc\bco\bop\bpe\be-\b-c\bco\bol\blo\bor\br _\bC_\bo_\bl_\bo_\br
+               The color of the circular part of the scope.
+
+       -\b-g\bgr\bri\bid\bd-\b-c\bco\bol\blo\bor\br _\bC_\bo_\bl_\bo_\br
+               The  color to the grid lines overlaying the scope.
+
+       -\b-t\bte\bex\bxt\bt-\b-c\bco\bol\blo\bor\br _\bC_\bo_\bl_\bo_\br
+               The color of the text identifying  bogies  on  the
+               scope.
+
+       -\b-t\btt\btl\bl _\bi_\bn_\bt_\be_\bg_\be_\br
+               "Time  to live": visible time of a Bogie. Try val-
+               ues between 10 (very short) and 100.
+
+       -\b-m\bmo\bod\bde\be _\bs_\bi_\bm_\bu_\bl_\ba_\bt_\bi_\bo_\bn _\b| _\bp_\bi_\bn_\bg
+               The sensor mode to use,  the  currently  supported
+               modes _\bs_\bi_\bm_\bu_\bl_\ba_\bt_\be (the default) and _\bp_\bi_\bn_\bg.
+
+       -\b-f\bfo\bon\bnt\bt _\bf_\bo_\bn_\bt
+               The  font  used  to  display  text  on  the scope.
+               Default "fixed".
+
+
+
+
+X Version 11                 3-Nov-98                           1
+
+
+
+
+
+Sonar(1)                                                 Sonar(1)
+
+
+       -\b-p\bpi\bin\bng\bg-\b-t\bti\bim\bme\beo\bou\but\bt _\bi_\bn_\bt
+               The amount of time  in  milliseconds  the  program
+               will wait for an answer to a ping.
+
+       -\b-p\bpi\bin\bng\bg-\b-s\bso\bou\bur\brc\bce\be l\bli\bis\bst\bt |\b| f\bfi\bil\ble\be |\b| s\bsu\bub\bbn\bne\bet\bt
+               Th source of the list of hosts to ping. Valid val-
+               ues are: _\bl_\bi_\bs_\bt, _\bf_\bi_\bl_\be, _\bs_\bu_\bb_\bn_\be_\bt.  The first two values
+               are described below; and _\bs_\bu_\bb_\bn_\be_\bt indicates that the
+               sonar should ping all hosts in the same subnet  as
+               the  current  machine.  (All addresses are treated
+               as class C nets, therefore this will at most  ping
+               254 hosts.)
+
+       -\b-p\bpi\bin\bng\bg-\b-f\bfi\bil\ble\be _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+               The  path  to  a  file  listing the hosts to ping.
+               This file can be in the format used by _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs,
+               or  it  can be any file that has host names as the
+               first element on each line.  If you use  ssh,  try
+               this:
+
+                    sonar -mode ping -ping-file $HOME/.ssh/known_hosts
+
+               This  is  used only used when _\bp_\bi_\bn_\bg_\bS_\bo_\bu_\br_\bc_\be is set to
+               f\bfi\bil\ble\be.
+
+       -\b-p\bpi\bin\bng\bg-\b-l\bli\bis\bst\bt _\bl_\bi_\bs_\bt
+               A  comma   separated   list   of   hostnames,   eg
+               _\b"_\bp_\bi_\bn_\bk_\by_\b,_\bb_\br_\ba_\bi_\bn_\b,_\bd_\bo_\bt_\b".   Only  used when _\bp_\bi_\bn_\bg_\bS_\bo_\bu_\br_\bc_\be is
+               set to l\bli\bis\bst\bt.
+
+       -\b-t\bte\bea\bam\bm-\b-a\ba-\b-n\bna\bam\bme\be _\bs_\bt_\br_\bi_\bn_\bg
+               The name of team A, in simulation-mode.
+
+       -\b-t\bte\bea\bam\bm-\b-b\bb-\b-n\bna\bam\bme\be _\bs_\bt_\br_\bi_\bn_\bg
+               The name of team B, in simulation-mode.
+
+       -\b-t\bte\bea\bam\bm-\b-a\ba-\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt
+               The number of bogies on  team  A,  in  simulation-
+               mode.
+
+       -\b-t\bte\bea\bam\bm-\b-b\bb-\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt
+               The  number  of  bogies  on team B, in simulation-
+               mode.
+
+R\bRE\bES\bSO\bOU\bUR\bRC\bCE\bES\bS
+       Configuration of the targets to ping is best done by  set-
+       ting X Resources.
+
+
+       b\bba\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd _\b(_\bC_\bo_\bl_\bo_\br_\b)
+               See  option  -background,  above; default value is
+               _\bb_\bl_\ba_\bc_\bk.
+
+
+
+
+
+X Version 11                 3-Nov-98                           2
+
+
+
+
+
+Sonar(1)                                                 Sonar(1)
+
+
+       s\bsw\bwe\bee\bep\bpC\bCo\bol\blo\bor\br _\b(_\bC_\bo_\bl_\bo_\br_\b)
+               See option -sweep-color, above; default  value  is
+               _\b#_\b0_\b0_\bf_\bf_\b0_\b0.
+
+       s\bsc\bco\bop\bpe\beC\bCo\bol\blo\bor\br _\b(_\bC_\bo_\bl_\bo_\br_\b)
+               See  option  -scope-color, above; default value is
+               _\b#_\b0_\b0_\b3_\b3_\b0_\b0.
+
+       g\bgr\bri\bid\bdC\bCo\bol\blo\bor\br _\b(_\bC_\bo_\bl_\bo_\br_\b)
+               See option -grid-color, above;  default  value  is
+               _\b#_\b0_\b0_\ba_\ba_\b0_\b0.
+
+       t\bte\bex\bxt\btC\bCo\bol\blo\bor\br _\b(_\bC_\bo_\bl_\bo_\br_\b)
+               See  option  -text-color,  above; default value is
+               _\b#_\bf_\bf_\bf_\bf_\b0_\b0.
+
+       t\btt\btl\bl _\b(_\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+               See option -ttl, above; default value is _\b9_\b0 or one
+               sweep.
+
+       m\bmo\bod\bde\be _\b(_\bp_\bi_\bn_\bg_\b)
+               See  option  -mode,  above.  If set to d\bde\bef\bfa\bau\bul\blt\bt, it
+               will ping hosts if possible, otherwise,  will  run
+               in simulation-mode.
+
+       f\bfo\bon\bnt\bt _\b(_\bf_\bo_\bn_\bt_\b)
+               See option -font, above; default value is _\bf_\bi_\bx_\be_\bd.
+
+       p\bpi\bin\bng\bgT\bTi\bim\bme\beo\bou\but\bt _\b(_\bI_\bn_\bt_\be_\bg_\be_\br_\b)
+               See  option  -pingtimeout, above; default value is
+               3000.
+
+       p\bpi\bin\bng\bgS\bSo\bou\bur\brc\bce\be _\bl_\bi_\bs_\bt _\b| _\bf_\bi_\bl_\be _\b| _\bs_\bu_\bb_\bn_\be_\bt
+               See option -ping-source, above.  Default value  is
+               _\bf_\bi_\bl_\be.
+
+       p\bpi\bin\bng\bgF\bFi\bil\ble\be _\bp_\ba_\bt_\bh_\bn_\ba_\bm_\be
+               See  option  -ping-file,  above.  Default value is
+               _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs.
+
+       p\bpi\bin\bng\bgL\bLi\bis\bst\bt _\bh_\bo_\bs_\bt_\b,_\bh_\bo_\bs_\bt_\b,_\bh_\bo_\bs_\bt_\b._\b._\b.
+               See option -ping-list,  above;  default  value  is
+               l\blo\boc\bca\bal\blh\bho\bos\bst\bt.
+
+       t\bte\bea\bam\bmA\bAN\bNa\bam\bme\be _\bs_\bt_\br_\bi_\bn_\bg
+               See  option -team-a-name, above.  Default value is
+               F\bF1\b18\b8.
+
+       t\bte\bea\bam\bmB\bBN\bNa\bam\bme\be _\bs_\bt_\br_\bi_\bn_\bg
+               See option -teamBName, above.   Default  value  is
+               M\bMI\bIG\bG.
+
+       t\bte\bea\bam\bmA\bAC\bCo\bou\bun\bnt\bt _\bi_\bn_\bt
+               See  option  -teamACount, above.  Default value is
+
+
+
+X Version 11                 3-Nov-98                           3
+
+
+
+
+
+Sonar(1)                                                 Sonar(1)
+
+
+               4.
+
+       t\bte\bea\bam\bmB\bBC\bCo\bou\bun\bnt\bt _\bi_\bn_\bt
+               See option -teamBCount, above.  Default  value  is
+               4.
+
+N\bNO\bOT\bTE\bES\bS
+       In  order  to  use  the  ping sensor, this program must be
+       installed as setuid root, so that it can  create  an  ICMP
+       socket.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), p\bpi\bin\bng\bg(8)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1998 by Stephen Martin. (smartin@canada.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  pro-
+       vided "as is" without express or implied warranty.
+
+
+A\bAU\bUT\bTH\bHO\bOR\bRS\bS
+       Stephen Martin <smartin@canada.com>, 3-nov-98.
+
+       Thanks  to  Tom Kelly for suggesting a modular approach to
+       the sensor amoung other things.
+
+       Thomas Bahls  <thommy@cs.tu-berlin.de>  hacked  the  "ttl"
+       option, 12-jul-98.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                 3-Nov-98                           4
+
+
diff --git a/local/man/cat.1/sphere.1 b/local/man/cat.1/sphere.1
new file mode 100644 (file)
index 0000000..82d4792
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       sphere - draws shaded spheres
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bsp\bph\bhe\ber\bre\be  [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bp_\bh_\be_\br_\be program draws shaded spheres.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bp_\bh_\be_\br_\be accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 64.  The colors are chosen randomly.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1988 by Sun Microsystems, Inc.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+
+
+
+X Version 11                27-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Sun Microsystems, Inc, 1988.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 27-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                27-May-97                           2
+
+
diff --git a/local/man/cat.1/spiral.1 b/local/man/cat.1/spiral.1
new file mode 100644 (file)
index 0000000..e817143
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       spiral - draws moving circular spiral patterns
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bsp\bpi\bir\bra\bal\bl  [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-count _\bi_\bn_\bt_\be_\bg_\be_\br]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bp_\bi_\br_\ba_\bl program draws moving circular spiral patterns
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bp_\bi_\br_\ba_\bl accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default 64.  The colors are chosen randomly.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+               Default 40.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               Default 350.
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1994 by Darrick Brown.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Darrick Brown, 1994.
+
+       Improved by Peter Schmitzberger  <schmitz@coma.sbg.ac.at>,
+       24-Jul-95.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/spotlight.1 b/local/man/cat.1/spotlight.1
new file mode 100644 (file)
index 0000000..9098673
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       spotlight - move spotlight around desktop
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bsp\bpo\bot\btl\bli\big\bgh\bht\bt   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-foreground
+       _\bc_\bo_\bl_\bo_\br]  [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]   [-mono]
+       [-install]  [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-delay _\bu_\bs_\be_\bc_\bs] [-radius _\bp_\bi_\bx_\b-
+       _\be_\bl_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bp_\bo_\bt_\bl_\bi_\bg_\bh_\bt program draws random rectangles.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bp_\bo_\bt_\bl_\bi_\bg_\bh_\bt accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               Slow it down.
+
+       -\b-r\bra\bad\bdi\biu\bus\bs _\bp_\bi_\bx_\be_\bl_\bs
+               Radius of the spotlight in pixels.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1999 by Rick Schultz.   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
+
+
+
+X Version 11               05-Apr-1999                          1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       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.
+
+C\bCR\bRE\bED\bDI\bIT\bTS\bS
+       Hacked together by Rick Schultz <rick@skapunx.net>,  based
+       on  StefView  for BackSpace by Darcy Brockbank and on sev-
+       eral other xscreensaver hacks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11               05-Apr-1999                          2
+
+
diff --git a/local/man/cat.1/squiral.1 b/local/man/cat.1/squiral.1
new file mode 100644 (file)
index 0000000..6c9072d
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       squiral - square spirals screensaver
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bsq\bqu\bui\bir\bra\bal\bl [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-noinstall] [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-fill _\bp_\be_\br_\bc_\be_\bn_\bt] [-count _\bn_\bu_\bm_\b-
+       _\bb_\be_\br] [-delay _\bu_\bs_\be_\bc] [-disorder _\bf_\br_\ba_\bc_\bt_\bi_\bo_\bn] [-handedness _\bf_\br_\ba_\bc_\b-
+       _\bt_\bi_\bo_\bn] [-cycle]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bq_\bu_\bi_\br_\ba_\bl program displays interacting, spiral-producing
+       automata
+
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bq_\bu_\bi_\br_\ba_\bl accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-f\bfi\bil\bll\bl _\bp_\be_\br_\bc_\be_\bn_\bt
+               Specify the percent (0-100) of  the  screen  which
+               must  be  filled  before  the  screen  is cleared.
+               60-80 percent are good values.
+
+       -\b-c\bco\bou\bun\bnt\bt _\bn_\bu_\bm_\bb_\be_\br
+               The number of squiralies.  By default, the  screen
+               width divided by 32.
+
+       -\b-d\bde\bel\bla\bay\by _\bu_\bs_\be_\bc
+               The wait between steps.  The default is 1000.
+
+       -\b-d\bdi\bis\bso\bor\brd\bde\ber\br _\bf_\br_\ba_\bc_\bt_\bi_\bo_\bn
+               The  fraction of the time a squiraly will choose a
+               new direction.  The default is 0.005.
+
+       -\b-h\bha\ban\bnd\bde\bed\bdn\bne\bes\bss\bs _\bf_\br_\ba_\bc_\bt_\bi_\bo_\bn
+               The fraction of the time a squiraly will choose to
+               enter  lefthanded  mode.   0.0  means  exclusively
+               right-handed behavior,  0.5  (the  default)  is  a
+
+
+
+X Version 11               18-mar-1999                          1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               balance  between  the  two, and 1.0 is exclusively
+               left-handed behaviour.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+B\bBU\bUG\bGS\bS
+       None known
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1999, by Jeff  Epler.   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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jeff Epler <jepler@inetnebr.com>, 18-mar-1999
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11               18-mar-1999                          2
+
+
diff --git a/local/man/cat.1/starfish.1 b/local/man/cat.1/starfish.1
new file mode 100644 (file)
index 0000000..105c770
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       starfish  -  radially-symmetric throbbing colormap-hacking
+       graphics demo
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bst\bta\bar\brf\bfi\bis\bsh\bh   [-display   _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]   [-foreground
+       _\bc_\bo_\bl_\bo_\br]   [-background  _\bc_\bo_\bl_\bo_\br]  [-window]  [-root]  [-mono]
+       [-install] [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-delay _\bu_\bs_\be_\bc_\bs] [-delay2  _\bs_\be_\bc_\bs]
+       [-cycle-delay2   _\bu_\bs_\be_\bc_\bs]   [-thickness  _\bp_\bi_\bx_\be_\bl_\bs]  [-rotation
+       _\bd_\be_\bg_\br_\be_\be_\bs]  [-duration  _\bs_\be_\bc_\bo_\bn_\bd_\bs]  [-colors   _\bi_\bn_\bt]   [-cycle]
+       [-no-cycle] [-blob] [-no-blob]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bs_\bt_\ba_\br_\bf_\bi_\bs_\bh  program  draws  radially symmetric objects,
+       which expand, contract, rotate, and turn inside  out.   It
+       uses  these  shapes  to lay down a field of smooth colors,
+       and then rotates the colormap.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bt_\ba_\br_\bf_\bi_\bs_\bh accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How much of a delay should be  introduced  between
+               steps  of  the animation.  Default 10000, or about
+               1/100th second.
+
+       -\b-c\bcy\byc\bcl\ble\be-\b-d\bde\bel\bla\bay\by _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to wait between shifing the  colormap  by
+               one step.  Default 100000, or about 1/10th second.
+
+       -\b-t\bth\bhi\bic\bck\bkn\bne\bes\bss\bs _\bp_\bi_\bx_\be_\bl_\bs
+               How wide each color band should  be.   Default  0,
+               meaning random (the chosen value will be between 0
+               and 15.)
+
+       -\b-r\bro\bot\bta\bat\bti\bio\bon\bn _\bd_\be_\bg_\br_\be_\be_\bs
+               How quickly the  objects  should  rotate  at  each
+               step.  Default 0, meaning random (the chosen value
+
+
+
+X Version 11                14-Jun-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               will be between 0 and 12 degrees.)
+
+       -\b-c\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt
+               How many colors to use.  Default  200.   The  more
+               colors,  the smoother the transitions will be, and
+               the nicer the resultant images.
+
+       -\b-c\bcy\byc\bcl\ble\be
+
+       -\b-n\bno\bo-\b-c\bcy\byc\bcl\ble\be
+               Whether to do colormap cycling.  Default true.
+
+       -\b-d\bdu\bur\bra\bat\bti\bio\bon\bn _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to  run  before  choosing  a  new  shape.
+               Default 30 seconds.
+
+       -\b-d\bde\bel\bla\bay\by2\b2 _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               When  _\bd_\bu_\br_\ba_\bt_\bi_\bo_\bn  expires,  how  long to wait before
+               starting a new run.  Default 5 seconds.
+
+       -\b-b\bbl\blo\bob\bb
+
+       -\b-n\bno\bo-\b-b\bbl\blo\bob\bb
+               If _\bb_\bl_\bo_\bb option is specified, then the  raw  shapes
+               will be shown, instead of a field of colors gener-
+               ated from them.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1997 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 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 14-Jun-97.
+
+
+
+
+
+
+X Version 11                14-Jun-97                           2
+
+
diff --git a/local/man/cat.1/strange.1 b/local/man/cat.1/strange.1
new file mode 100644 (file)
index 0000000..879ecaf
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       strange - draws strange attractors
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bst\btr\bra\ban\bng\bge\be [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bt_\br_\ba_\bn_\bg_\be program draws strange attractors
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bt_\br_\ba_\bn_\bg_\be accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 64.  The colors are chosen randomly.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1997 by Massimino Pascal.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the  above  copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Massimino Pascal <Pascal.Massimon@ens.fr>, 1997.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/swirl.1 b/local/man/cat.1/swirl.1
new file mode 100644 (file)
index 0000000..2dfcc77
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       swirl - draws swirly color-cycling patterns
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       s\bsw\bwi\bir\brl\bl  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count _\bi_\bn_\bt_\be_\bg_\be_\br]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bs_\bw_\bi_\br_\bl program draws swirly color-cycling patterns.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bs_\bw_\bi_\br_\bl accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default 200.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+
+
+
+
+X Version 11                13-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1994 M. Dobie.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       M.Dobie <mrd@ecs.soton.ac.uk>, 1994.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 13-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                13-May-97                           2
+
+
diff --git a/local/man/cat.1/t3d.1 b/local/man/cat.1/t3d.1
new file mode 100644 (file)
index 0000000..178599b
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+t3d(1)                                                     t3d(1)
+
+
+N\bNA\bAM\bME\bE
+       t3d - clock using flying balls to display the time
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       t3d [  _\bo_\bp_\bt_\bi_\bo_\bn_\bs ]...
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       Time  3D  is  a clock. It uses flying balls to display the
+       time. This balls move and wobble around to  give  you  the
+       impression  your graphic workstation with its many XStones
+       is doing something.
+
+       t3d uses mouse and keyboard to let  you  fly  through  the
+       balls. Hit S\bS to speed up, A\bA to slow down, Z\bZ to zoom in and
+       X\bX to zoom out.  Use the l\ble\bef\bft\bt m\bmo\bou\bus\bse\be b\bbu\but\btt\bto\bon\bn to rotate to the
+       left  and the r\bri\big\bgh\bht\bt m\bmo\bou\bus\bse\be b\bbu\but\btt\bto\bon\bn to rotate the view to the
+       right. Use the m\bmi\bid\bdd\bdl\ble\be m\bmo\bou\bus\bse\be b\bbu\but\btt\bto\bon\bn to change  the  optical
+       axis and the moving direction.  0\b0 (zero) will stop you.  Q\bQ
+       quits.
+
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       -\b-m\bmo\bov\bve\be _\bf_\ba_\bc_\bt_\bo_\br
+              Modifies the direction move of t3d. The clock looks
+              30  degrees*  _\bf_\ba_\bc_\bt_\bo_\br  to  the left and to the right
+              periodically.
+
+       -\b-w\bwo\bob\bbb\bbl\ble\be _\bf_\ba_\bc_\bt_\bo_\br
+              Modifies the wobbling (sounds nice :-)  of  t3d  by
+              multiplying  the  default  deformation of the clock
+              with _\bf_\ba_\bc_\bt_\bo_\br_\b.
+
+       -\b-m\bmi\bin\bnu\but\bte\bes\bs
+              Shows one small ball for every minute,  instead  of
+              one for every 2.5 minutes.
+
+       -\b-m\bma\bag\bg _\bf_\ba_\bc_\bt_\bo_\br
+              Changes  the  magnification of t3d. By default, t3d
+              draws a 200x200 image.  A .I factor of 2 means,  it
+              will use a 400x400 image.
+
+       -\b-c\bcy\byc\bcl\ble\be _\bp_\be_\br_\bi_\bo_\bd
+              Sets   the  moving  cycle  to  _\bp_\be_\br_\bi_\bo_\bd  seconds.  By
+              default, this value is 10 seconds.
+
+       -\b-w\bwa\bai\bit\bt _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc
+              Inserts a wait after drawing one view of the clock.
+              By  default,  t3d  waits  40 ms after each drawing.
+              This helps you to keep the performance loss  small.
+
+       -\b-f\bfa\bas\bst\bt _\bp_\br_\be_\bc_\ba_\bl_\bc_\b__\br_\ba_\bd_\bi_\bu_\bs
+              t3d  uses  bitmap copy to draw precalculated balls.
+              You can specify the radius in pixels  up  to  which
+              t3d  should  precalculate  balls.  t3d  will  set a
+
+
+
+Time 3D                    Version 1.1                          1
+
+
+
+
+
+t3d(1)                                                     t3d(1)
+
+
+              useful range by itself using the magnification when
+              it is started.
+
+       -\b-c\bco\bol\blc\bcy\byc\bcl\ble\be
+              Draws  cyclic the color scale used for the balls in
+              the background instead of the normal black.
+
+       -\b-r\brg\bgb\bb _\br_\be_\bd _\bg_\br_\be_\be_\bn _\bb_\bl_\bu_\be
+              Selects the color in RGB color space of the  light-
+              ning  spot on the balls.  All the other colors used
+              for balls or -\b-c\bco\bol\blc\bcy\byc\bcl\ble\be are less intensive colors of
+              the same hue and saturation. All values in range of
+              0 to 1.
+
+       -\b-h\bhs\bsv\bv _\bh_\bu_\be _\bs_\ba_\bt_\bu_\br_\ba_\bt_\bi_\bo_\bn _\bv_\ba_\bl_\bu_\be
+              Selects the color in HSV color space.   _\bh_\bu_\be  is  in
+              degrees  from  0  to 360, all other values in range
+              from 0 to 1. It gives nice but rather unpredictable
+              results, if you use a saturation of e.g. 2.  Try it
+              at your own risk.
+
+       -\b-h\bhs\bsv\bvc\bcy\byc\bcl\ble\be _\bs_\bp_\be_\be_\bd
+              Rotates the hue axis every 10 seconds* _\bs_\bp_\be_\be_\bd_\b.
+
+       -\b-h\bhe\bel\blp\bp  Prints a short usage message.
+
+
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Bernd Paysan
+
+       Email: bernd.paysan@gmx.de
+
+       Hacked on by jwz@jwz.org for xscreensaver.
+
+
+A\bAC\bCK\bKN\bNO\bOW\bWL\bLE\bED\bDG\bGE\bEM\bME\bEN\bNT\bT
+       Acknowledgement to Georg Acher, who wrote the initial pro-
+       gram displaying balls.
+
+
+C\bCO\bOP\bPY\bYI\bIN\bNG\bG
+       Copy,  modify, and distribute T3D either under GPL version
+       2 or newer, or under the standard MIT/X license notice.
+
+
+D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
+       T3D is  not  related  to  T3D(tm),  the  massive  parallel
+       Alpha--based  supercomputer from Cray Research. T3D's name
+       was invented in 1991, years before  the  project  at  Cray
+       Research  started. There is no relation from T3D to Cray's
+       T3D, even  the  balls  surrounding  T3D  on  some  posters
+       weren't  an  inspiration  for  T3D.  I don't know anything
+       about the other way round.
+
+
+
+Time 3D                    Version 1.1                          2
+
+
+
+
+
+t3d(1)                                                     t3d(1)
+
+
+       The programming style of T3D isn't intented as example  of
+       good  style,  but as example of how a fast prototyped demo
+       may look like. T3D wasn't created to  be  useful,  it  was
+       created to be nice.
+
+
+K\bKN\bNO\bOW\bWN\bN B\bBU\bUG\bGS\bS
+       There are no known bugs in T3D. Maybe there are bugs in X.
+       Slight changes in the T3D sources are known to show  these
+       bugs, e.g. if you remove the (int) casting at the XFillArc
+       x,y,w,h-coordinates...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Time 3D                    Version 1.1                          3
+
+
diff --git a/local/man/cat.1/vidwhacker.1 b/local/man/cat.1/vidwhacker.1
new file mode 100644 (file)
index 0000000..4462451
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       vidwhacker - grab images and apply random filters to them
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       v\bvi\bid\bdw\bwh\bha\bac\bck\bke\ber\br  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-root] [-win-
+       dow] [-verbose] [-stdin] [-stdout] [-delay seconds]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bv_\bi_\bd_\bw_\bh_\ba_\bc_\bk_\be_\br program grabs a  image  from  the  system's
+       video  input, applies random image filters to it, and dis-
+       plays the result.  The _\bv_\bi_\bd_\bw_\bh_\ba_\bc_\bk_\be_\br program does not  termi-
+       nate  until  killed.   It depends heavily on x\bxv\bv(1) and the
+       various PBM tools (e.g., p\bpp\bpm\bmr\bre\bel\bli\bie\bef\bf(1).)
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bv_\bi_\bd_\bw_\bh_\ba_\bc_\bk_\be_\br accepts the following options:
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Pop up a new window displaying the image.  When  a
+               new  image  has been fully processed, destroy that
+               window and pop up a new one.  This is the default.
+
+       -\b-v\bve\ber\brb\bbo\bos\bse\be
+               Print diagnostics.
+
+       -\b-s\bst\btd\bdi\bin\bn  Instead  of  grabbing  an  image from the system's
+               video input, read an  image  to  maniupulate  from
+               stdin.  This image must be in
+
+       -\b-d\bde\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How  long to sleep between images.  Default 3 sec-
+               onds (the actual  elapsed  time  is  significantly
+               longer,  due  to processing time.)  p\bpp\bpm\bm(5) format.
+               The program will  still  perform  repeated  random
+               image transformations, but it will always use this
+               one image as its starting point.
+
+       -\b-s\bst\btd\bdo\bou\but\bt Instead of displaying the image on a window or  on
+               the root, write the new image on stdout, and exit.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+B\bBU\bUG\bGS\bS
+       Grabbing video images is, of  course,  very  system-depen-
+       dent.   It  works  on SGIs, and on Linux systems that have
+       the q\bqc\bca\bam\bm(1) program.  If your system does  things  differ-
+       ently, you'll need to edit the vidwhacker script (look for
+
+
+
+X Version 11                17-Jun-99                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       the _\bg_\br_\ba_\bb_\b(_\b) function.)
+
+       It's slow.
+
+T\bTO\bO D\bDO\bO
+       It might be interesting to rewrite  this  to  use  g\bgi\bim\bmp\bp(1)
+       plugins instead of the pbm tools.  It probably wouldn't be
+       any faster, but there would be a wider variety of  effects
+       available.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxv\bv(1), p\bpp\bpm\bmt\bto\bog\bgi\bif\bf(1), c\bcj\bjp\bpe\beg\bg(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1998, 1999 by Jamie Zawinski.  Permission to
+       use, copy, modify, distribute, and sell this software  and
+       its  documentation for any purpose is hereby granted with-
+       out 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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 18-Jan-98.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                17-Jun-99                           2
+
+
diff --git a/local/man/cat.1/vines.1 b/local/man/cat.1/vines.1
new file mode 100644 (file)
index 0000000..c150472
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       vines - draws pseudo-fractal geometric patterns
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       v\bvi\bin\bne\bes\bs  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bv_\bi_\bn_\be_\bs program is yet another geometric pattern genera-
+       tor, this one's claim to fame being a pseudo-fractal look-
+       ing vine like pattern that creates nifty whorls and loops.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bv_\bi_\bn_\be_\bs accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How many colors  should  be  used  (if  possible).
+               Default 200.  The colors are chosen randomly.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1997 by Tracy Camp.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+
+
+
+X Version 11                10-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Tracy Camp <campt@hurrah.com>, 1997.
+
+       Tweaked by David Hansen <dhansen@metapath.com>, 21-Mar-97.
+
+       Ability  to  run  standalone or with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br added by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                10-May-97                           2
+
+
diff --git a/local/man/cat.1/webcollage.1 b/local/man/cat.1/webcollage.1
new file mode 100644 (file)
index 0000000..e023479
--- /dev/null
@@ -0,0 +1,198 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       webcollage  -  decorate the screen with random images from
+       the web
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       w\bwe\beb\bbc\bco\bol\bll\bla\bag\bge\be [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-root]  [-ver-
+       bose]  [-delay  _\bs_\be_\bc_\bs]  [-timeout  _\bs_\be_\bc_\bs]  [-background  _\bb_\bg]
+       [-filter _\bc_\bo_\bm_\bm_\ba_\bn_\bd] [-filter2 _\bc_\bo_\bm_\bm_\ba_\bn_\bd]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bw_\be_\bb_\bc_\bo_\bl_\bl_\ba_\bg_\be program pulls random image off of the World
+       Wide  Web  and scatters them on the root window.  It finds
+       these images by doing random web searches, and  extracting
+       images  from  the returned pages.  It places the images on
+       the root window  by  using  the  x\bxv\bv(1),  g\bgi\bif\bft\bto\bop\bpn\bnm\bm(1),  and
+       d\bdj\bjp\bpe\beg\bg(1) tools.
+
+       _\bw_\be_\bb_\bc_\bo_\bl_\bl_\ba_\bg_\be also works as a CGI program: simply make a sym-
+       bolic link to the _\bw_\be_\bb_\bc_\bo_\bl_\bl_\ba_\bg_\be executable called _\bn_\bp_\bh_\b-_\bw_\be_\bb_\bc_\bo_\bl_\b-
+       _\bl_\ba_\bg_\be_\b._\bc_\bg_\bi.   If this program sees that it is being run as a
+       CGI, then it will behave  appropriately.   (The  generated
+       web  page  will  list the images one after another, rather
+       than tiling them together.)
+
+       _\bw_\be_\bb_\bc_\bo_\bl_\bl_\ba_\bg_\be is written in p\bpe\ber\brl\bl(1) and requires Perl 5.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bw_\be_\bb_\bc_\bo_\bl_\bl_\ba_\bg_\be accepts the following options:
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.  This  option  is  mandi-
+               tory: drawing to a window other than the root win-
+               dow is not yet supported.
+
+       -\b-v\bve\ber\brb\bbo\bos\bse\be or -\b-v\bv
+               Print diagnostics to stderr.  Multiple _\b-_\bv switches
+               increase  the amount of output.  _\b-_\bv will print out
+               only the URLs of the images; _\b-_\bv_\bv  will  print  all
+               the  commands  being run; and _\b-_\bv_\bv_\bv will print more
+               than you care about.
+
+       -\b-d\bde\bel\bla\bay\by _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to sleep between images.  Default 1  sec-
+               ond.   (Remember that this program probably spends
+               a lot of time waiting for the network.)
+
+       -\b-b\bba\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd _\bc_\bo_\bl_\bo_\br_\b-_\bo_\br_\b-_\bp_\bp_\bm
+               What to use for the background onto  which  images
+               are pasted.  This may be a color name, a hexadeci-
+               mal RGB specification in the  form  '#rrggbb',  or
+               the name of a PPM file.
+
+       -\b-t\bti\bim\bme\beo\bou\but\bt _\bs_\be_\bc_\bo_\bn_\bd_\bs
+               How long to wait for a URL to complete before giv-
+               ing up on it  and  moving  on  to  the  next  one.
+
+
+
+X Version 11                17-Jun-99                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               Default 30 seconds.
+
+       -\b-f\bfi\bil\blt\bte\ber\br _\bc_\bo_\bm_\bm_\ba_\bn_\bd
+               Filter  all  source  images  through this command.
+               The command must take a PPM  file  on  stdin,  and
+               write  a  new PPM file to stdout.  One good choice
+               for a filter would be:
+
+                    webcollage -root -filter 'vidwhacker -stdin -stdout'
+
+
+       -\b-f\bfi\bil\blt\bte\ber\br2\b2 _\bc_\bo_\bm_\bm_\ba_\bn_\bd
+               Filter the _\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be image through  this  command.
+               The  _\b-_\bf_\bi_\bl_\bt_\be_\br option applies to the sub-images; the
+               _\b-_\bf_\bi_\bl_\bt_\be_\br_\b2 applies to the final, full-screen  image.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+F\bFI\bIL\bLE\bES\bS A\bAN\bND\bD U\bUR\bRL\bLS\bS
+       _\b/_\bu_\bs_\br_\b/_\bd_\bi_\bc_\bt_\b/_\bw_\bo_\br_\bd_\bs or _\b/_\bu_\bs_\br_\b/_\bs_\bh_\ba_\br_\be_\b/_\bl_\bi_\bb_\b/_\bd_\bi_\bc_\bt_\b/_\bw_\bo_\br_\bd_\bs
+              To find the random words to feed to search engines.
+
+       _\bh_\bt_\bt_\bp_\b:_\b/_\b/_\br_\ba_\bn_\bd_\bo_\bm_\b._\by_\ba_\bh_\bo_\bo_\b._\bc_\bo_\bm_\b/_\bb_\bi_\bn_\b/_\br_\by_\bl_\b,
+       _\bh_\bt_\bt_\bp_\b:_\b/_\b/_\bi_\bm_\ba_\bg_\be_\b._\ba_\bl_\bt_\ba_\bv_\bi_\bs_\bt_\ba_\b._\bc_\bo_\bm_\b/ To find random web pages.
+
+B\bBU\bUG\bGS\bS
+       When  drawing  on  the  root  window,  it  always uses the
+       default colormap.  This is actually a  limitation  of  xv.
+       But regardless, when using this program with xscreensaver,
+       it must be given the d\bde\bef\bfa\bau\bul\blt\bt-\b-n\bn visual  specification  (see
+       the x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1) manual for more details.)
+
+       Only the GIF and JPEG image formats are supported.
+
+       Transparent and animating GIFs are not supported.
+
+       It's slow.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1),  x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxv\bv(1), g\bgi\bif\bft\bto\bop\bpn\bnm\bm(1), d\bdj\bjp\bpe\beg\bg(1), v\bvi\bid\bd-\b-
+       w\bwh\bha\bac\bck\bke\ber\br(1), p\bpe\ber\brl\bl(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1998, 1999 by Jamie Zawinski.  Permission to
+       use,  copy, modify, distribute, and sell this software and
+       its documentation for any purpose is hereby granted  with-
+       out  fee,  provided that the above copyright notice appear
+       in all copies and that both that copyright notice and this
+
+
+
+X Version 11                17-Jun-99                           2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 24-May-98.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                17-Jun-99                           3
+
+
diff --git a/local/man/cat.1/xjack.1 b/local/man/cat.1/xjack.1
new file mode 100644 (file)
index 0000000..4410c3b
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       xjack - all work and no play makes jack a dull boy
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       x\bxj\bja\bac\bck\bk  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root] [-delay _\bu_\bs_\be_\bc_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       All work and no play makes jack a dull boy.  All work  and
+       no play makes jack a dull boy.  All work and no play makes
+       jack a dull boy.  All work and no play makes jack  a  dull
+       boy.   All  work  and  no play makes jack a dull boy.  All
+       work and no play makes jack a dull boy.
+
+               All work and no play makes jack a dull  boy.   All
+               work  and no play makes jack a dull boy.  All work
+               and no play makes jack a dull boy.  All  work  and
+               no  play  makes  jack a dull boy.  All work and no
+               play makes jack a dull boy.  All work and no  play
+               makes jack a dull boy.
+
+               All  work  and no play makes jack a dull boy.  All
+               work and no play makes jack a dull boy.  All  work
+               and  no  play makes jack a dull boy.  All work and
+               no play makes jack a dull boy.  All  work  and  no
+               play  makes jack a dull boy.  All work and no play
+               makes jack a dull boy.  All work and no play makes
+               jack  a dull boy.  All work and no play makes jack
+               a dull boy.
+
+       All work and no play makes jack a dull boy.  All work  and
+       no play makes jack a dull boy.  All work and no play makes
+       jack a dull boy.  All work and no play makes jack  a  dull
+       boy.   All  work  and  no play makes jack a dull boy.  All
+       work and no play makes jack a dull boy.  All work  and  no
+       play  makes  jack  a dull boy.  All work and no play makes
+       jack a dull boy.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY All work and no play makes jack a dull boy.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               All work and no play makes jack a dull  boy.   All
+               work and no play makes jack a dull boy.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C)  1997  by  Jamie Zawinski.  All work and no
+       play makes jack a dull boy.  All work and  no  play  makes
+       jack  a  dull boy.  All work and no play makes jack a dull
+       boy.  All work and no play makes jack  a  dull  boy.   All
+       work  and  no  play makes jack a fnord dull boy.  All work
+
+
+
+X Version 11                18-sep-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       and no play makes jack a dull boy.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 15-Nov-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                18-sep-97                           2
+
+
diff --git a/local/man/cat.1/xjulia.1 b/local/man/cat.1/xjulia.1
new file mode 100644 (file)
index 0000000..1ea5145
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       julia - draws spinning, animating julia-set fractals
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       j\bju\bul\bli\bia\ba  [-display  _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual  _\bv_\bi_\bs_\bu_\ba_\bl] [-ncolors _\bi_\bn_\bt_\be_\bg_\be_\br] [-delay _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs]
+       [-cycles _\bi_\bn_\bt_\be_\bg_\be_\br] [-count _\bi_\bn_\bt_\be_\bg_\be_\br] [-mouse] [-nomouse]
+
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bj_\bu_\bl_\bi_\ba  program  draws  spinning,  animating  julia-set
+       fractals.
+
+       It  uses ifs {w0 = sqrt(x-c), w1 = -sqrt(x-c)} with random
+       iteration to plot the julia set, and sinusoidially  varied
+       parameters  for  the set, and plots parameters with a cir-
+       cle.
+
+       One thing to note is that count is the _\bd_\be_\bp_\bt_\bh of the search
+       tree,  so the number of points computed is (2^count)-1.  I
+       use 8 or 9 on a dx266 and it looks okay.   The  sinusoidal
+       variation  of the parameter might not be as interesting as
+       it could, but it still gives an idea of the effect of  the
+       parameter.
+
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bj_\bu_\bl_\bi_\ba accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw  on  a  newly-created  window.   This  is the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If  on  a  color  display,  pretend  we're  on   a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+       -\b-n\bnc\bco\bol\blo\bor\brs\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+               How  many  colors  should  be  used (if possible).
+               Default 200.  The colors used  cycle  through  the
+               hue, making N stops around the color wheel.
+
+       -\b-c\bcy\byc\bcl\ble\bes\bs _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+
+
+
+X Version 11                28-May-97                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-c\bco\bou\bun\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
+
+
+       -\b-m\bmo\bou\bus\bse\be
+
+       -\b-n\bno\bom\bmo\bou\bus\bse\be
+               If  _\b-_\bm_\bo_\bu_\bs_\be  is specified, the control point of the
+               Julia set will be derived from the position of the
+               mouse in the window.  When the mouse is not in the
+               window, the control point  is  chosen  the  normal
+               way.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxl\blo\boc\bck\bk(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1995 by Sean McCullough.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is  hereby  granted,  provided  that  the  above copyright
+       notice appear in all copies and that both  that  copyright
+       notice  and  this  permission  notice appear in supporting
+       documentation.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Sean McCullough <bankshot@mailhost.nmt.edu>, 1995.
+
+       Ability to run standalone or with  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  added  by
+       Jamie Zawinski <jwz@jwz.org>, 10-May-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                28-May-97                           2
+
+
diff --git a/local/man/cat.1/xlyap.1 b/local/man/cat.1/xlyap.1
new file mode 100644 (file)
index 0000000..b550d07
--- /dev/null
@@ -0,0 +1,264 @@
+
+
+
+XLYAP(6X)                                               XLYAP(6X)
+
+
+N\bNA\bAM\bME\bE
+       xlyap - display an array of Lyapunov exponents graphically
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       _\bx_\bl_\by_\ba_\bp [-BLps][-W width][-H height][-o filename][-a _\bn ] [-b
+               _\bn  ]  [-w  _\bn ] [-h _\bn ] [-i xstart] [-M _\bn ] [-R _\bp ]
+               [-S _\bn ] [-D _\bn ] [-F string][-f string][-r _\bn ]  [-O
+               _\bn ] [-C _\bn ] [-c _\bn ] [-m _\bn ] [-x xpos] [-y ypos]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       _\bx_\bl_\by_\ba_\bp  generates and graphically displays an array of Lya-
+       punov exponents for a  variety  of  iterated  periodically
+       forced non-linear maps of the unit interval.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       -random A  good  choice  for  use with xscreensaver: picks
+               random parameters from a built-in list.
+
+       -C _\bn    Specifies the minimum color index to be  used  for
+               negative exponents
+
+       -D _\bn    Specifies the "dwell" or number of iterations over
+               which to average in order to  calculate  the  Lya-
+               punov exponent. Default is 400.
+
+       -B      Causes  the  stop, go, spin and quit buttons to be
+               displayed.
+
+       -H _\bn    Specifies the height of  the  window.  Default  is
+               256.
+
+       -L      Indicates use log(x) + log(y) rather than log(xy).
+
+       -M _\br    Specifies the real value to compare exponent  val-
+               ues  to  for  indexing  into  a  color  wheel. The
+               default value is 1.0.
+
+       -O _\bn    Specifies the minimum color index to be  used  for
+               positive exponents
+
+       -R _\bp    Specifies pseudo-random forcing with probability _\bp
+               of using parameter value 'a'.
+
+       -S _\bn    Specifies the "settle"  or  number  of  iterations
+               prior  to  the beginning of the calculation of the
+               Lyapunov exponent. Default is 200.
+
+       -W _\bn    Specifies the width of the window. Default is 256.
+
+       -a _\br    Specifies  the  real  value  to use as the minimum
+               parameter value of the horizontal axis. Default is
+               3.0 for the logistic map.
+
+       -b _\bn    Specifies  the  real  value  to use as the minimum
+
+
+
+                                                                1
+
+
+
+
+
+XLYAP(6X)                                               XLYAP(6X)
+
+
+               parameter value of the vertical axis.  Default  is
+               3.0 for the logistic map.
+
+       -c _\bn    Selects  one of six different color wheels to use.
+               The default color wheel is a rainbow palette.
+
+       -F _\b1_\b0_\b1_\b0_\b1_\b0_\b1_\b0
+               Specifies the "Function" forcing function to  use.
+               The  example above would alternate between iterat-
+               ing the circle and logistic maps. An  argument  of
+               "-F  2323"  would alternate between left and right
+               logistic maps. The default is to only use the sin-
+               gle specified map (see the description of -m).
+
+       -f _\ba_\bb_\bb_\ba_\bb_\ba_\ba_\bb
+               Specifies the forcing function to use. The default
+               is to alternate between the "a" parameter and  the
+               "b" parameter.
+
+       -h _\br    Specifies  the  real value to be used as the range
+               over which the vertical parameter values vary. The
+               default is 1.0.
+
+       -i _\br    Specifies  the real value of the initial condition
+               to use. Default is 0.05.
+
+       -m _\bn    Selects between available non-linear maps  of  the
+               unit interval. A value of 0 specifies the logistic
+               map. A value of 1, the circle map. A value  of  2,
+               the  left-logistic. A value of 3, the right-logis-
+               tic.  A  value  of  4,  the  double-logistic.  The
+               default is 0, the logistic map.
+
+       -o _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+               Specifies  the  output filename to be used. If the
+               -o option is given, this file  will  automatically
+               be  written  out at the completion of the drawing.
+               If it is not  specified,  a  default  filename  of
+               lyap.out  is  used  and only written if the 'f' or
+               'F' keys are pressed during a run. The  format  of
+               the  output  file  is  PPM  for  color and PGM for
+               monochrom. The parameters used  to  calculate  the
+               picture  are included as comments at the beginning
+               of the output file.
+
+       -p      Switches color indices for negative  and  positive
+               exponents. Generally, causes negative exponents to
+               be displayed in more detail  while  darkening  and
+               narrowing  the color range for positive exponents.
+               This can be toggled during runtime by pressing the
+               'p' key.
+
+       -r _\bn    Specifies  the  maximum  rgb  value  to  be  used.
+               Default is 35000.
+
+
+
+                                                                2
+
+
+
+
+
+XLYAP(6X)                                               XLYAP(6X)
+
+
+       -s _\bn    Specifies the length of the color wheel spin.
+
+       -u      Produces a usage message.
+
+       -v      Prints out the  various  values  to  be  used  and
+               exits.
+
+       -w _\br    Specifies  the  real value to be used as the range
+               over which the horizontal parameter  values  vary.
+               The default is 1.0.
+
+       -x _\bn    Specifies  the  x  screen coordinate of the window
+               (default is 256).
+
+       -y _\bn    Specifies the y screen coordinate  of  the  window
+               (default is 256).
+
+
+
+N\bNO\bOT\bTE\bES\bS
+       During  display,  pressing  any mouse button allows you to
+       select the area to be investigated  with  the  mouse.  The
+       upper left hand corner of the desired area is the location
+       of the cursor when the button is pressed. The lower  right
+       hand  corner is specified by the cursor when the button is
+       released.
+
+
+       Use of the keys _\bb_\bB_\be_\bE_\bf_\bF_\bk_\bK_\bj_\bJ_\bm_\bn_\br_\bR_\bs_\bS_\bw_\bW_\bx_\bX_\bq_\bQ indicates:
+
+          (<) Halve dwell value.
+          (>) Double dwell value.
+          ([) Halve settle value.
+          (]) Double settle value.
+          (B or b) Toggle button display on/off
+          (E or e) Recalculate the indices into the  color  wheel
+       using a different method
+          (F  or  f)  Save  current screen to ouput file (not yet
+       implemented)
+          (H or h or ?) Display brief help message
+          (i) Decrement the  interval  between  stripes  for  the
+       striped color map.
+          (I)  Increment  the  interval  between  stripes for the
+       striped color map.
+          (K) Decrease value exponents are  compared  against  by
+       0.05.
+          (J)  Increase  value  exponents are compared against by
+       0.05.
+          (M) Decrease value exponents are  compared  against  by
+       0.005.
+          (N)  Increase  value  exponents are compared against by
+       0.005.
+          (m) Increment the map index, changing  the  map  to  be
+       iterated.
+
+
+
+                                                                3
+
+
+
+
+
+XLYAP(6X)                                               XLYAP(6X)
+
+
+          (P or p) Toggle positive/negative exponent display.
+          (r) Redraw the window using previously calculated expo-
+       nents.
+          (R) Redraw the window using the newly set dwell  and/or
+       settle values.
+          (S) Spin the color wheel
+          (s)  Halve  the  length  of the spin and spin the color
+       wheel
+          (u) Go up to the window just prior to the  most  recent
+       zoom.
+          (U) Go all the way up to the original window.
+          (V or v) Display values of various parameters currently
+       in use
+          (W or w) Use next color map.
+          (X or x) Clear window
+          (Q or q) quit
+
+
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+               Ronald Joe Record
+            The Santa Cruz Operation
+                 P.O. Box 1900
+              Santa Cruz, CA 95061
+                   rr@sco.com
+
+
+
+A\bAC\bCK\bKN\bNO\bOW\bWL\bLE\bED\bDG\bGE\bEM\bME\bEN\bNT\bTS\bS
+       The algorithm was taken from the September 1991 Scientific
+       American  article  by  A.  K.  Dewdney who gives credit to
+       Mario Markus of the Max Planck Institute for its creation.
+       Additional  information  and  ideas  were gleaned from the
+       discussion on  alt.fractals  involving  Stephen  Hall,  Ed
+       Kubaitis, Dave Platt and Baback Moghaddam. Assistance with
+       colormaps and spinning color wheels and X was gleaned from
+       Hiram  Clawson.  Rubber  banding  code was adapted from an
+       existing Mandelbrot program written by Stacey Campbell.
+
+       Viciously  hacked  for  xscreensaver  by  Jamie  Zawinski,
+       20-Nov-97.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                                                                4
+
+
diff --git a/local/man/cat.1/xroger.1 b/local/man/cat.1/xroger.1
new file mode 100644 (file)
index 0000000..ae599d6
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       xroger - throbbing X logo, of a sort
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       x\bxr\bro\bog\bge\ber\br  [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-foreground _\bc_\bo_\bl_\bo_\br]
+       [-background _\bc_\bo_\bl_\bo_\br] [-window] [-root]  [-mono]  [-install]
+       [-visual _\bv_\bi_\bs_\bu_\ba_\bl]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The  _\bx_\br_\bo_\bg_\be_\br  program displays a replacement for the X logo
+       with a more accurate Look and Feel.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bx_\br_\bo_\bg_\be_\br accepts the following options:
+
+       -\b-w\bwi\bin\bnd\bdo\bow\bw Draw on  a  newly-created  window.   This  is  the
+               default.
+
+       -\b-r\bro\boo\bot\bt   Draw on the root window.
+
+       -\b-m\bmo\bon\bno\bo   If   on  a  color  display,  pretend  we're  on  a
+               monochrome display.
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Install a private colormap for the window.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               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.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to get the name of a resource file that  overrides
+               the  global  resources stored in the RESOURCE_MAN-
+               AGER property.
+
+B\bBU\bUG\bGS\bS
+       It should also drip blood while making a horrible screech-
+       ing noise.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1992, 1993 by Jamie Zawinski.  Permission to
+       use, copy, modify, distribute, and sell this software  and
+       its  documentation for any purpose is hereby granted with-
+       out 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 documenta-
+       tion.   No representations are made about the  suitability
+
+
+
+X Version 11                22-mar-93                           1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       of fnord this software for any purpose.   It  is  provided
+       "as is" without express or fnord implied warranty.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11                22-mar-93                           2
+
+
diff --git a/local/man/cat.1/xscreensaver-command.1 b/local/man/cat.1/xscreensaver-command.1
new file mode 100644 (file)
index 0000000..c8ca81f
--- /dev/null
@@ -0,0 +1,264 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       xscreensaver-command - control a running xscreensaver pro-
+       cess
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-c\bco\bom\bmm\bma\ban\bnd\bd [-help] [-demo] [-prefs]  [-activate]
+       [-deactivate] [-cycle] [-next] [-prev] [-select _\bn] [-exit]
+       [-restart] [-lock]  [-throttle]  [-unthrottle]  [-version]
+       [-time]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The   _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd   program  controls  a  running
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br process by sending it client-messages.
+
+       x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1) has a client-server  model:  the  xscreen-
+       saver  process is a daemon that runs in the background; it
+       is  controlled  by  other  foreground  programs  such   as
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd and x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1).
+
+       This program, _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd, is a command-line-ori-
+       ented tool; the x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1).  program is a graph-
+       ical tool.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd  accepts  the  following command-line
+       options:
+
+       -\b-h\bhe\bel\blp\bp   Prints a brief summary of command-line options.
+
+       -\b-d\bde\bem\bmo\bo   This just launches the  x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1)  pro-
+               gram, in which one can experiment with the various
+               graphics hacks available, and edit parameters.
+
+       -\b-d\bde\bem\bmo\bo _\bn_\bu_\bm_\bb_\be_\br
+               When the _\b-_\bd_\be_\bm_\bo option is followed by  an  integer,
+               it  instructs  the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br daemon to run that
+               hack, and wait for the user  to  click  the  mouse
+               before  deactivating  (i.e., mouse motion does not
+               deactivate.)   This  is  the  mechanism  by  which
+               x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1)    communicates    with   the
+               x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1) daemon.  (The first  hack  in  the
+               list is numbered 1, not 0.)
+
+       -\b-p\bpr\bre\bef\bfs\bs  Like  the no-argument form of _\b-_\bd_\be_\bm_\bo, but brings up
+               that program's Preferences panel by default.
+
+       -\b-a\bac\bct\bti\biv\bva\bat\bte\be
+               Tell xscreensaver to turn on immediately (that is,
+               blank the screen, as if the user had been idle for
+               long enough.)  The screensaver will deactivate  as
+               soon as there is any user activity, as usual.
+
+               It is useful to run this from a menu; you may wish
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               to run it as
+
+                    sleep 5 ; xscreensaver-command -activate
+
+               to be sure that you have time to  take  your  hand
+               off  the  mouse  before  the screensaver comes on.
+               (Because if you  jiggle  the  mouse,  xscreensaver
+               will notice, and deactivate.)
+
+       -\b-d\bde\bea\bac\bct\bti\biv\bva\bat\bte\be
+               If  the  screensaver  is  active  (the  screen  is
+               blanked), this command will deactivate it just  as
+               if  there had been keyboard or mouse activity.  If
+               locking is  enabled,  then  the  screensaver  will
+               prompt for a password as usual.
+
+       -\b-c\bcy\byc\bcl\ble\be  If  the  screensaver  is  active  (the  screen  is
+               blanked), then stop the current graphics demo  and
+               run a new one (chosen randomly.)
+
+       -\b-n\bne\bex\bxt\bt   This is like either _\b-_\ba_\bc_\bt_\bi_\bv_\ba_\bt_\be or _\b-_\bc_\by_\bc_\bl_\be, depending
+               on which is  more  appropriate,  except  that  the
+               graphics  hack that will be run is the next one in
+               the list, instead of a  randomly-chosen  one.   In
+               other words, repeatedly executing -next will cause
+               the xscreensaver process to invoke  each  graphics
+               demo sequentially.  (Though using the _\b-_\bd_\be_\bm_\bo option
+               is probably an easier way to accomplish that.)
+
+       -\b-p\bpr\bre\bev\bv   This is like _\b-_\bn_\be_\bx_\bt, but cycles in the other direc-
+               tion.
+
+       -\b-s\bse\bel\ble\bec\bct\bt _\bn_\bu_\bm_\bb_\be_\br
+               Like  _\b-_\ba_\bc_\bt_\bi_\bv_\ba_\bt_\be,  but  runs the _\bNth element in the
+               list of hacks.  By knowing what is in the _\bp_\br_\bo_\bg_\br_\ba_\bm_\bs
+               list, and in what order, you can use this to acti-
+               vate the screensaver with  a  particular  graphics
+               demo.   (The first element in the list is numbered
+               1, not 0.)
+
+       -\b-e\bex\bxi\bit\bt   Causes the xscreensaver  process  to  exit  grace-
+               fully.   This  is  roughly the same as killing the
+               process with k\bki\bil\bll\bl(1), but it is easier, since  you
+               don't need to first figure out the pid.
+
+               W\bWa\bar\brn\bni\bin\bng\bg:\b: never use _\bk_\bi_\bl_\bl _\b-_\b9 with _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br while
+               the screensaver is active.  If  you  are  using  a
+               virtual root window manager, that can leave things
+               in an inconsistent state,  and  you  may  need  to
+               restart  your window manager to repair the damage.
+
+       -\b-l\blo\boc\bck\bk   Tells the running xscreensaver process to lock the
+               screen  immediately.   This is like _\b-_\ba_\bc_\bt_\bi_\bv_\ba_\bt_\be, but
+               forces locking as well, even if locking is not the
+
+
+
+X Version 11             20-Jun-99 (3.15)                       2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               default  (that  is,  even  if  xscreensaver's _\bl_\bo_\bc_\bk
+               resource is false, and  even  if  the  _\bl_\bo_\bc_\bk_\bT_\bi_\bm_\be_\bo_\bu_\bt
+               resource is non-zero.)
+
+               Note that locking doesn't work unless the _\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+               _\bs_\ba_\bv_\be_\br process is running  as  you.   See  x\bxs\bsc\bcr\bre\bee\ben\bn-\b-
+               s\bsa\bav\bve\ber\br(1) for details.
+
+       -\b-t\bth\bhr\bro\bot\btt\btl\ble\be
+               Temporarily  switch  to ``blank screen'' mode, and
+               don't run any display  modes  at  all,  until  the
+               screensaver  is next de-activated.  This is useful
+               if you're using a machine remotely, and  you  find
+               that some display modes are using too much CPU.
+
+               (If  you want to do this _\bp_\be_\br_\bm_\ba_\bn_\be_\bn_\bt_\bl_\by, that is, you
+               want the screen saver to only blank the screen and
+               not  run  demos  at  all,  then  set  the _\bp_\br_\bo_\bg_\br_\ba_\bm_\bs
+               resource to an empty  list:   See  x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)
+               for details.)
+
+       -\b-u\bun\bnt\bth\bhr\bro\bot\btt\btl\ble\be
+               Turn `-throttle' mode off and resume normal behav-
+               ior.
+
+       -\b-v\bve\ber\brs\bsi\bio\bon\bn
+               Prints the version of xscreensaver  that  is  cur-
+               rently running on the display: that is, the actual
+               version number of the running  xscreensaver  back-
+               ground  process, rather than the version number of
+               xscreensaver-command.  (To see the version  number
+               of  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd  itself,  use  the  _\b-_\bh_\be_\bl_\bp
+               option.)
+
+       -\b-t\bti\bim\bme\be   Prints the time  at  which  the  screensaver  last
+               activated  or  deactivated  (roughly, how long the
+               user has been idle or  non-idle:  but  not  quite,
+               since  it  only  tells  you when the screen became
+               blanked or un-blanked.)
+
+       -\b-r\bre\bes\bst\bta\bar\brt\bt
+               Causes the screensaver process to  exit  and  then
+               restart  with  the  same command line arguments as
+               last time.   Do  this  after  you've  changed  the
+               resource database, to cause xscreensaver to notice
+               the changes.
+
+               W\bWa\bar\brn\bni\bin\bng\bg:\b: if you have a  _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  file,  this
+               might  not  do  what  you expect.  You're probably
+               better off killing the existing xscreensaver (with
+               _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd  _\b-_\be_\bx_\bi_\bt) and then launching it
+               again.
+
+               The important point is, you need to make sure that
+
+
+
+X Version 11             20-Jun-99 (3.15)                       3
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               the  xscreensaver  process  is running as you.  If
+               it's not, it won't be reading the right  _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+               _\bs_\ba_\bv_\be_\br file.
+
+D\bDI\bIA\bAG\bGN\bNO\bOS\bST\bTI\bIC\bCS\bS
+       If  an  error occurs while communicating with the _\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+       _\bs_\ba_\bv_\be_\br daemon, or if the daemon reports an error,  a  diag-
+       nostic  message  will  be  printed to stderr, and _\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+       _\bs_\ba_\bv_\be_\br_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd will exit with a  non-zero  value.   If  the
+       command is accepted, an indication of this will be printed
+       to stdout, and the exit value will be zero.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the host and display number of  the  screen
+               whose saver is to be manipulated.
+
+       P\bPA\bAT\bTH\bH    to   find  the  executable  to  restart  (for  the
+               _\b-_\br_\be_\bs_\bt_\ba_\br_\bt command).  Note  that  this  variable  is
+               consulted  in  the environment of the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br
+               process, not the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd process.
+
+U\bUP\bPG\bGR\bRA\bAD\bDE\bES\bS
+       The latest version of x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1)  and  related  tools
+       can always be found at http://www.jwz.org/xscreensaver/
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1) x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1992, 1993, 1997, 1998, 1999 by Jamie Zawin-
+       ski.  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 sup-
+       porting  documentation.  No representations are made about
+       the suitability of this software for any purpose.   It  is
+       provided "as is" without express or implied warranty.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+       Please  let  me  know  if  you  find  any bugs or make any
+       improvements.
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       4
+
+
diff --git a/local/man/cat.1/xscreensaver-demo.1 b/local/man/cat.1/xscreensaver-demo.1
new file mode 100644 (file)
index 0000000..dbea066
--- /dev/null
@@ -0,0 +1,330 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       xscreensaver-demo  -  interactively control the background
+       xscreensaver daemon
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn]  [-prefs]
+       [-xrm _\br_\be_\bs_\bo_\bu_\br_\bc_\be_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo program is a graphical front-end for
+       setting the parameters used  by  the  background  x\bxs\bsc\bcr\bre\bee\ben\bn-\b-
+       s\bsa\bav\bve\ber\br(1) daemon.  It is essentially two things: a tool for
+       editing the _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file; and a tool  for  demoing
+       the  various  graphics  hacks that the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br daemon
+       will launch.
+
+       The main dialog box contains  a  scrolling  list,  a  text
+       field, and a number of buttons.
+
+       Double-clicking  on  one  of the programs in the list will
+       run it.  The screen will go black, and  the  program  will
+       run  in full-screen mode, just as it would if the _\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+       _\bs_\ba_\bv_\be_\br daemon had launched it.  Clicking  the  mouse  again
+       will  stop  the  demo  and un-blank the screen, making the
+       dialog box visible again.
+
+       Single-clicking in the list will place the indicated  pro-
+       gram  and  its  args in the text field to be edited.  Edit
+       the arguments and hit return to run the program  with  the
+       parameters  you  have specified.  This will also save your
+       changes to your _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file: so any  changes  you
+       make in this way are persistent.
+
+       If  one of the lines in the scrolling list begins with the
+       character "-", then that means that the  program  is  dis-
+       abled:  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  will not select it to be run (though
+       you can still try it out by clicking on it.)  Rather  than
+       just  deleting  the  programs  you  don't want to run, you
+       might want to disable them in this way  instead,  so  that
+       you can more easily change your mind later.
+
+       If  the line begins with the name of a visual, followed by
+       a colon, then that program will only be run on  that  kind
+       of visual.  For example, you can specify that a particular
+       program should only be run  if  color  is  available,  and
+       another should only be run in monochrome.  See the discus-
+       sion of the _\bp_\br_\bo_\bg_\br_\ba_\bm_\bs parameter in the  _\bC_\bo_\bn_\bf_\bi_\bg_\bu_\br_\ba_\bt_\bi_\bo_\bn  sec-
+       tion of the x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1) manual.
+
+       The buttons are:
+
+       R\bRu\bun\bn N\bNe\bex\bxt\bt
+               Clicking  this button will run the next program in
+               the list after  the  currently-selected  one,  and
+
+
+
+X Version 11             20-Jun-99 (3.15)                       1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               will  wrap  around  to the top when it reaches the
+               bottom.
+
+       R\bRu\bun\bn P\bPr\bre\bev\bvi\bio\bou\bus\bs
+               Opposite of Run Next; at the top, it wraps  around
+               to the bottom.
+
+       P\bPr\bre\bef\bfe\ber\bre\ben\bnc\bce\bes\bs
+               This  pops  up  a  second dialog box, in which you
+               have the option to interactively  change  most  of
+               the  screensaver's operational parameters, such as
+               its timeouts,  and  whether  it  should  lock  the
+               screen.   When  you click OK, your chosen settings
+               will take effect immediately,  and  will  also  be
+               saved  to  the  _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  file in your home
+               directory, so that the settings will persist  next
+               time.
+
+       Q\bQu\bui\bit\bt    Exits  the  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo  program.  The back-
+               ground _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br daemon will  continue  running
+               as before.
+
+       The  Preferences  dialog box lets you change the following
+       settings.
+
+       (There are more settings available, but these are the most
+       commonly used ones; see the manual for x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1) for
+       other  parameters  that  can  be  set   by   editing   the
+       _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file, or the X resource database.)
+
+       S\bSa\bav\bve\ber\br T\bTi\bim\bme\beo\bou\but\bt
+               After  the  user  has  been  idle  this  long, the
+               _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br daemon will blank the screen.
+
+       C\bCy\byc\bcl\ble\be T\bTi\bim\bme\beo\bou\but\bt
+               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.
+
+       V\bVe\ber\brb\bbo\bos\bse\be
+               Whether to print lots of debugging information.
+
+       I\bIn\bns\bst\bta\bal\bll\bl C\bCo\bol\blo\bor\brm\bma\bap\bp
+               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
+               applies when the screen's default visual is  being
+               used, since non-default visuals get their own col-
+               ormaps automatically.)  This can also be  overrid-
+               den on a per-demo basis.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       F\bFa\bad\bde\be C\bCo\bol\blo\bor\brm\bma\bap\bp
+               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 Pseudo-
+               Color visual.  A  fade  will  also  be  done  when
+               switching  graphics  hacks (when the _\bC_\by_\bc_\bl_\be _\bT_\bi_\bm_\be_\bo_\bu_\bt
+               expires.)
+
+       U\bUn\bnf\bfa\bad\bde\be C\bCo\bol\blo\bor\brm\bma\bap\bp
+               The complement to _\bF_\ba_\bd_\be _\bC_\bo_\bl_\bo_\br_\bm_\ba_\bp: 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 colormaps, and when _\bF_\ba_\bd_\be
+               _\bC_\bo_\bl_\bo_\br_\bm_\ba_\bp is also selected.
+
+       F\bFa\bad\bde\be D\bDu\bur\bra\bat\bti\bio\bon\bn
+               When  fading  or  unfading are selected, this con-
+               trols how long the fade will take.
+
+       F\bFa\bad\bde\be T\bTi\bic\bck\bks\bs
+               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.
+
+       R\bRe\beq\bqu\bui\bir\bre\be P\bPa\bas\bss\bsw\bwo\bor\brd\bd
+               Whether the screen saver should  lock  the  screen
+               when it activates.
+
+       L\bLo\boc\bck\bk T\bTi\bim\bme\beo\bou\but\bt
+               If _\bR_\be_\bq_\bu_\bi_\br_\be _\bP_\ba_\bs_\bs_\bw_\bo_\br_\bd 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
+               _\bS_\ba_\bv_\be_\br  _\bT_\bi_\bm_\be_\bo_\bu_\bt  is 0:10:00, then after 10 minutes,
+               the screen would blank.  If there was user  activ-
+               ity  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, _\bL_\bo_\bc_\bk
+               _\bT_\bi_\bm_\be_\bo_\bu_\bt 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.
+
+       P\bPa\bas\bss\bsw\bwo\bor\brd\bd T\bTi\bim\bme\beo\bou\but\bt
+               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.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       3
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+C\bCO\bOM\bMM\bMA\bAN\bND\bD-\b-L\bLI\bIN\bNE\bE O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo  accepts  the  following  command   line
+       options.
+
+       -\b-d\bdi\bis\bsp\bpl\bla\bay\by _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn
+               The  X display to use.  The _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo pro-
+               gram will open its window  on  that  display,  and
+               also  control the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br daemon that is man-
+               aging that same display.
+
+       -\b-p\bpr\bre\bef\bfs\bs  Start up in Preferences mode: this  is  just  like
+               launching  the program with no arguments, and then
+               pressing the _\bP_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bs button.
+
+       It  is  important  that  the  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  and   _\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+       _\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo processes be running on the same machine, or at
+       least, on two machines that share  a  file  system.   When
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo  writes a new version of the _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+       _\bs_\ba_\bv_\be_\br file, it's important that the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br see  that
+       same  file.   If  the  two  processes are seeing different
+       _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br files, things will malfunction.
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number.
+
+       P\bPA\bAT\bTH\bH    to find the sub-programs to  run.   However,  note
+               that the sub-programs are actually launched by the
+               _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  daemon,  not  by   _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo
+               itself.   So,  what  matters  is  what  $\b$P\bPA\bAT\bTH\bH  the
+               _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br program sees.
+
+       H\bHO\bOM\bME\bE    for the directory in which to read and  write  the
+               _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+U\bUP\bPG\bGR\bRA\bAD\bDE\bES\bS
+       The    latest    version    can   always   be   found   at
+       http://www.jwz.org/xscreensaver/
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br(1), x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-c\bco\bom\bmm\bma\ban\bnd\bd(1)
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright (C) 1992, 1993, 1997, 1998, 1999 by Jamie Zawin-
+       ski.   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 sup-
+       porting documentation.  No representations are made  about
+
+
+
+X Version 11             20-Jun-99 (3.15)                       4
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       the  suitability  of this software for any purpose.  It is
+       provided "as is" without express or implied warranty.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+       Please let me know if  you  find  any  bugs  or  make  any
+       improvements.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       5
+
+
diff --git a/local/man/cat.1/xscreensaver.1 b/local/man/cat.1/xscreensaver.1
new file mode 100644 (file)
index 0000000..53b31a0
--- /dev/null
@@ -0,0 +1,1716 @@
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+N\bNA\bAM\bME\bE
+       xscreensaver  -  graphics hack and screen locker, launched
+       when the user is idle
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br [-display _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn] [-timeout _\bi_\bn_\bt]
+       [-cycle  _\bi_\bn_\bt]  [-lock-mode] [-no-lock-mode] [-lock-timeout
+       _\bi_\bn_\bt] [-visual _\bv_\bi_\bs_\bu_\ba_\bl] [-install] [-no-install]  [-verbose]
+       [-silent]    [-timestamp]    [-capture-stderr]   [-no-cap-
+       ture-stderr]   [-splash]    [-no-splash]    [-nice    _\bi_\bn_\bt]
+       [-mit-extension]    [-no-mit-extension]   [-sgi-extension]
+       [-no-sgi-extension]  [-xidle-extension]  [-no-xidle-exten-
+       sion]   [-proc-interrupts]   [-no-proc-interrupts]   [-xrm
+       _\br_\be_\bs_\bo_\bu_\br_\bc_\be_\bs]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       The _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br program  waits  until  the  keyboard  and
+       mouse  have been idle for a period, and then runs a graph-
+       ics demo chosen at random.  It turns off as soon as  there
+       is any mouse or keyboard activity.
+
+       This  program  can  lock your terminal in order to prevent
+       others from using it, though its default mode of operation
+       is  merely  to display pretty pictures on your screen when
+       it is not in use.
+
+       The benefit that this program has over the combination  of
+       the  x\bxl\blo\boc\bck\bk(1)  and  x\bxa\bau\but\bto\bol\blo\boc\bck\bk(1) programs is the ease with
+       which new graphics hacks can be installed.  You don't need
+       to  recompile  (or  even re-run) this program to add a new
+       display mode.
+
+G\bGE\bET\bTT\bTI\bIN\bNG\bG S\bST\bTA\bAR\bRT\bTE\bED\bD
+       For the impatient, try this:
+
+            xscreensaver &
+            xscreensaver-demo
+
+       The x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1) program should pop  up  a  dialog
+       box  that  lets  you experiment with the xscreensaver set-
+       tings and graphics modes.
+
+       N\bNo\bot\bte\be:\b: unlike x\bxl\blo\boc\bck\bk(1), xscreensaver  has  a  client-server
+       model:  the  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br program is a daemon that runs in
+       the  background;  it  is  controlled  by  the   foreground
+       x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1) and x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-c\bco\bom\bmm\bma\ban\bnd\bd(1) programs.
+
+C\bCO\bON\bNF\bFI\bIG\bGU\bUR\bRA\bAT\bTI\bIO\bON\bN
+       Options to  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  are  specified  in  one  of  two
+       places: in a _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file in your home directory; or
+       in the X resource database.   If  the  _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  file
+       exists,   it   overrides  any  settings  in  the  resource
+       database.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       1
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       The syntax of the _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file is similar to that of
+       the  _\b._\bX_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bs  file;  for  example,  to  set the _\bt_\bi_\bm_\be_\bo_\bu_\bt
+       paramter in the _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file, you  would  write  the
+       following:
+
+            timeout: 5
+
+       whereas, in the _\b._\bX_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bs file, you would write
+
+            xscreensaver.timeout: 5
+
+       If  you  change  a setting in the _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file while
+       xscreensaver is already running, it will notice this,  and
+       reload the file.  (The file will be reloaded the next time
+       the screen saver needs to take some action, such as blank-
+       ing  or  unblanking  the screen, or picking a new graphics
+       mode.)
+
+       If you change a setting in your X resource database, or if
+       you  want  xscreensaver to notice your changes immediately
+       instead of the next time it wakes up, then you  will  need
+       to  tell the running xscreensaver process to re-initialize
+       itself, like so:
+
+            xscreensaver-command -restart
+
+       Note that if you changed the _\b._\bX_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bs  file,  you  might
+       also need to run x\bxr\brd\bdb\bb(1):
+
+            xrdb < ~/.Xdefaults
+
+       If  you  want  to  set the system-wide defaults, then make
+       your edits to the xscreensaver  app-defaults  file,  which
+       should  have  been  installed when xscreensaver itself was
+       installed.  The app-defaults file will  usually  be  named
+       /usr/lib/X11/app-defaults/XScreenSaver, but different sys-
+       tems might keep it in  a  different  place  (for  example,
+       /usr/openwin/lib/app-defaults/XScreenSaver on Solaris.)
+
+       When  settings  are  changed in the Preferences dialog box
+       (see above) the current settings will be  written  to  the
+       _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  file.   (The  _\b._\bX_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bs  file and the app-
+       defaults  file  will  never  be  written  by  xscreensaver
+       itself.)
+
+
+       t\bti\bim\bme\beo\bou\but\bt (class T\bTi\bim\bme\be)
+               The  screensaver  will activate (blank the screen)
+               after the keyboard and mouse have  been  idle  for
+               this many minutes.  Default 10 minutes.
+
+       c\bcy\byc\bcl\ble\be (class T\bTi\bim\bme\be)
+               After  the  screensaver  has been running for this
+               many minutes, the currently running  graphics-hack
+
+
+
+X Version 11             20-Jun-99 (3.15)                       2
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               sub-process  will  be killed (with S\bSI\bIG\bGT\bTE\bER\bRM\bM), and a
+               new one started.  If this is 0, then the  graphics
+               hack will never be changed: only one demo will run
+               until  the  screensaver  is  deactivated  by  user
+               activity.  Default 10 minutes.
+
+       l\blo\boc\bck\bk (class B\bBo\boo\bol\ble\bea\ban\bn)
+               Enable  locking:  before the screensaver will turn
+               off, it will require you to type the  password  of
+               the  logged-in  user  (really,  the person who ran
+               xscreensaver), or the root password.  (N\bNo\bot\bte\be:\b:  this
+               doesn't  work  if  the  screensaver is launched by
+               x\bxd\bdm\bm(1) because it can't know the  user-id  of  the
+               logged-in user.  See the ``_\bU_\bs_\bi_\bn_\bg _\bX_\bD_\bM_\b(_\b1_\b)'' section,
+               below.
+
+       l\blo\boc\bck\bkT\bTi\bim\bme\beo\bou\but\bt (class T\bTi\bim\bme\be)
+               If locking is enabled, this controls the length of
+               the  ``grace period'' between when the screensaver
+               activates, and when  the  screen  becomes  locked.
+               For  example,  if  this  is 5, and _\b-_\bt_\bi_\bm_\be_\bo_\bu_\bt is 10,
+               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, _\b-_\bl_\bo_\bc_\bk_\b-_\bt_\bi_\bm_\be_\bo_\bu_\bt 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.
+
+       p\bpa\bas\bss\bsw\bwd\bdT\bTi\bim\bme\beo\bou\but\bt (class T\bTi\bim\bme\be)
+               If the screen is locked, then  this  is  how  many
+               seconds  the password dialog box should be left on
+               the screen before giving up (default 30  seconds.)
+               This  should  not  be  too  large: the X server is
+               grabbed for the duration that the password  dialog
+               box  is up (for security purposes) and leaving the
+               server grabbed for too long can cause problems.
+
+       v\bvi\bis\bsu\bua\bal\blI\bID\bD (class V\bVi\bis\bsu\bua\bal\blI\bID\bD)
+               Specify which X visual to use by  default.   (Note
+               carefully  that  this resource is called v\bvi\bis\bsu\bua\bal\blI\bID\bD,
+               not merely v\bvi\bis\bsu\bua\bal\bl; if you set the v\bvi\bis\bsu\bua\bal\bl  resource
+               instead,  things  will malfunction in obscure ways
+               for obscure reasons.)
+
+               Legal values for the V\bVi\bis\bsu\bua\bal\blI\bID\bD resource are:
+
+               d\bde\bef\bfa\bau\bul\blt\bt Use  the  screen's  default  visual   (the
+                       visual  of  the root window.)  This is the
+                       default.
+
+               b\bbe\bes\bst\bt    Use the visual  which  supports  the  most
+
+
+
+X Version 11             20-Jun-99 (3.15)                       3
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+                       colors.   Note,  however,  that the visual
+                       with the most colors might be a  TrueColor
+                       visual,  which  does  not support colormap
+                       animation.  Some programs have more inter-
+                       esting  behavior  when  run on PseudoColor
+                       visuals than on TrueColor.
+
+               m\bmo\bon\bno\bo    Use a monochrome visual, if there is  one.
+
+               g\bgr\bra\bay\by    Use  a  grayscale or staticgray visual, if
+                       there is one and  it  has  more  than  one
+                       plane (that is, it's not monochrome.)
+
+               c\bco\bol\blo\bor\br   Use  the  best  of  the  color visuals, if
+                       there are any.
+
+               G\bGL\bL      Use the visual that  is  best  for  OpenGL
+                       programs.   (OpenGL programs have somewhat
+                       different requirements than other  X  pro-
+                       grams.)
+
+               _\bc_\bl_\ba_\bs_\bs   where  _\bc_\bl_\ba_\bs_\bs is one of S\bSt\bta\bat\bti\bic\bcG\bGr\bra\bay\by, S\bSt\bta\bat\bti\bic\bc-\b-
+                       C\bCo\bol\blo\bor\br, T\bTr\bru\bue\beC\bCo\bol\blo\bor\br, G\bGr\bra\bay\byS\bSc\bca\bal\ble\be,  P\bPs\bse\beu\bud\bdo\boC\bCo\bol\blo\bor\br,
+                       or   D\bDi\bir\bre\bec\bct\btC\bCo\bol\blo\bor\br.    Selects  the  deepest
+                       visual of the given class.
+
+               _\bn_\bu_\bm_\bb_\be_\br  where _\bn_\bu_\bm_\bb_\be_\br (decimal or  hex)  is  inter-
+                       preted  as a visual id number, as reported
+                       by the x\bxd\bdp\bpy\byi\bin\bnf\bfo\bo(1) program;  in  this  way
+                       you  can  have  finer control over exactly
+                       which visual gets used,  for  example,  to
+                       select  a  shallower one than would other-
+                       wise have been chosen.
+
+               Note that this option specifies only  the  _\bd_\be_\bf_\ba_\bu_\bl_\bt
+               visual  that  will be used: the visual used may be
+               overridden on a program-by-program basis.  See the
+               description of the p\bpr\bro\bog\bgr\bra\bam\bms\bs resource, below.
+
+       i\bin\bns\bst\bta\bal\bll\blC\bCo\bol\blo\bor\brm\bma\bap\bp (class B\bBo\boo\bol\ble\bea\ban\bn)
+               Install  a  private colormap while the screensaver
+               is active, so that the graphics hacks can  get  as
+               many  colors  as  possible.   This is the default.
+               (This  only  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-hack basis: see the
+               discussion of the d\bde\bef\bfa\bau\bul\blt\bt-\b-n\bn name  in  the  section
+               about the p\bpr\bro\bog\bgr\bra\bam\bms\bs resource.
+
+       v\bve\ber\brb\bbo\bos\bse\be (class B\bBo\boo\bol\ble\bea\ban\bn)
+               Whether to print diagnostics.  Default false.
+
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       4
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       t\bti\bim\bme\bes\bst\bta\bam\bmp\bp (class B\bBo\boo\bol\ble\bea\ban\bn)
+               Whether  to  print  the time of day along with any
+               other diagnostic messages.  Default false.
+
+       s\bsp\bpl\bla\bas\bsh\bh (class B\bBo\boo\bol\ble\bea\ban\bn)
+               Whether to display a  splash  screen  at  startup.
+               Default true.
+
+       s\bsp\bpl\bla\bas\bsh\bhD\bDu\bur\bra\bat\bti\bio\bon\bn (class T\bTi\bim\bme\be)
+               How  long the splash screen should remain visible;
+               default 5 seconds.
+
+       h\bhe\bel\blp\bpU\bUR\bRL\bL (class U\bUR\bRL\bL)
+               The splash screen has a _\bH_\be_\bl_\bp button on  it.   When
+               you  press  it, it will display the web page indi-
+               cated here in your web browser.
+
+       l\blo\boa\bad\bdU\bUR\bRL\bL (class L\bLo\boa\bad\bdU\bUR\bRL\bL)
+               This is the shell command used to load a URL  into
+               your  web  browser.  The default setting will load
+               it into Netscape if it is already running,  other-
+               wise,  will  launch  a new Netscape looking at the
+               _\bh_\be_\bl_\bp_\bU_\bR_\bL.
+
+       d\bde\bem\bmo\boC\bCo\bom\bmm\bma\ban\bnd\bd (class D\bDe\bem\bmo\boC\bCo\bom\bmm\bma\ban\bnd\bd)
+               This is the shell command run when the _\bD_\be_\bm_\bo button
+               on  the  splash window is pressed.  It defaults to
+               _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo.
+
+       p\bpr\bre\bef\bfs\bsC\bCo\bom\bmm\bma\ban\bnd\bd (class P\bPr\bre\bef\bfs\bsC\bCo\bom\bmm\bma\ban\bnd\bd)
+               This is the shell command run when the _\bP_\br_\be_\bf_\bs  but-
+               ton  on the splash window is pressed.  It defaults
+               to _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br_\b-_\bd_\be_\bm_\bo _\b-_\bp_\br_\be_\bf_\bs.
+
+       n\bni\bic\bce\be (class N\bNi\bic\bce\be)
+               The sub-processes created by _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br will  be
+               ``niced''  to  this  level, so that they are given
+               lower priority than other processes on the system,
+               and  don't  increase  the load unnecessarily.  The
+               default is 10.
+
+               (Higher numbers mean lower priority;  see  n\bni\bic\bce\be(1)
+               for details.)
+
+       f\bfa\bad\bde\be (class B\bBo\boo\bol\ble\bea\ban\bn)
+               If  this  is true, then when the screensaver acti-
+               vates, 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 Pseu-
+               doColor visual.  A fade will  also  be  done  when
+               switching  graphics  hacks  (when  the _\bc_\by_\bc_\bl_\be timer
+               expires.)  Default: true.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       5
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       u\bun\bnf\bfa\bad\bde\be (class B\bBo\boo\bol\ble\bea\ban\bn)
+               If this is true, then when the screensaver deacti-
+               vates,  the  original  contents of the screen will
+               fade in from black instead  of  appearing  immedi-
+               ately.   This only works on displays with writable
+               colormaps, and if _\bf_\ba_\bd_\be is true as  well.   Default
+               false.
+
+       f\bfa\bad\bde\beS\bSe\bec\bco\bon\bnd\bds\bs (class T\bTi\bim\bme\be)
+               If _\bf_\ba_\bd_\be is true, this is how long the fade will be
+               in seconds (default 3 seconds.)
+
+       f\bfa\bad\bde\beT\bTi\bic\bck\bks\bs (class I\bIn\bnt\bte\beg\bge\ber\br)
+               If _\bf_\ba_\bd_\be is true, this is 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 _\bf_\ba_\bd_\be_\bS_\be_\bc_\b-
+               _\bo_\bn_\bd_\bs if your server isn't fast enough to keep  up.
+               Default 20.
+
+       c\bca\bap\bpt\btu\bur\bre\beS\bSt\btd\bde\ber\brr\br (class B\bBo\boo\bol\ble\bea\ban\bn)
+               Whether  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  should  redirect its stdout
+               and stderr streams to the  window  itself.   Since
+               its  nature  is to take over the screen, you would
+               not  normally  see  error  messages  generated  by
+               xscreensaver  or  the  sub-programs  it runs; this
+               resource will cause the  output  of  all  relevant
+               programs  to  be  drawn  on the screensaver window
+               itself, as well as being written to  the  control-
+               ling  terminal  of the screensaver driver process.
+               Default true.
+
+       f\bfo\bon\bnt\bt (class F\bFo\bon\bnt\bt)
+               The font used for the stdout/stderr text, if  c\bca\bap\bp-\b-
+               t\btu\bur\bre\beS\bSt\btd\bde\ber\brr\br         is        true.         Default
+               *\b*-\b-m\bme\bed\bdi\biu\bum\bm-\b-r\br-\b-*\b*-\b-1\b14\b40\b0-\b-*\b*-\b-m\bm-\b-*\b*  (a  14  point  fixed-width
+               font.)
+
+       p\bpr\bro\bog\bgr\bra\bam\bms\bs (class P\bPr\bro\bog\bgr\bra\bam\bms\bs)
+               The  graphics  hacks  which _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br runs when
+               the user is idle.  The value of this resource is a
+               string, one _\bs_\bh-syntax command per line.  Each line
+               must contain exactly one command:  no  semicolons,
+               no ampersands.
+
+               When  the  screensaver  starts up, one of these is
+               selected at random,  and  run.   After  the  _\bc_\by_\bc_\bl_\be
+               period  expires,  it  is  killed,  and  another is
+               selected and run.
+
+               If the value of this resource is  empty,  then  no
+               programs  will  be  run; the screen will simply be
+               made black.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       6
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               If the display has multiple screens, then  a  dif-
+               ferent  program will be run for each screen.  (All
+               screens are blanked and unblanked simultaniously.)
+
+               Note that you must escape the newlines; here is an
+               example  of  how  you  might  set  this  in   your
+               _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file:
+
+
+                    programs:  \
+                           qix -root                          \n\
+                           ico -r -faces -sleep 1 -obj ico    \n\
+                           xdaliclock -builtin2 -root         \n\
+                           xv -root -rmode 5 image.gif -quit  \n
+
+               Make  sure  your $\b$P\bPA\bAT\bTH\bH environment variable is set
+               up correctly _\bb_\be_\bf_\bo_\br_\be xscreensaver is  launched,  or
+               it  won't  be  able to find the programs listed in
+               the _\bp_\br_\bo_\bg_\br_\ba_\bm_\bs resource.
+
+               To use a program as a screensaver, two things  are
+               required:  that that program draw on the root win-
+               dow (or be able to be configured to  draw  on  the
+               root  window);  and  that  that program understand
+               ``virtual root'' windows, as used by virtual  win-
+               dow  managers  such as t\btv\bvt\btw\bwm\bm(1).  (Generally, this
+               is accomplished by just  including  the  _\b"_\bv_\br_\bo_\bo_\bt_\b._\bh_\b"
+               header file in the program's source.)
+
+               If  there  are  some programs that you want to run
+               only when using a color display, and  others  that
+               you  want to run only when using a monochrome dis-
+               play, you can specify that like this:
+
+                           mono:   mono-program  -root        \n\
+                           color:  color-program -root        \n\
+
+               More generally, you can specify the kind of visual
+               that  should  be  used for the window on which the
+               program will be drawing.  For example, if one pro-
+               gram  works best if it has a colormap, but another
+               works best if it has a 24-bit visual, both can  be
+               accommodated:
+
+                           PseudoColor: cmap-program  -root   \n\
+                           TrueColor:   24bit-program -root   \n\
+
+               In addition to the symbolic visual names described
+               above (in the discussion of the _\bv_\bi_\bs_\bu_\ba_\bl_\bI_\bD resource)
+               one other visual name is supported in the _\bp_\br_\bo_\bg_\br_\ba_\bm_\bs
+               list:
+
+                d\bde\bef\bfa\bau\bul\blt\bt-\b-n\bn
+                    This is like d\bde\bef\bfa\bau\bul\blt\bt, but also  requests  the
+
+
+
+X Version 11             20-Jun-99 (3.15)                       7
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+                    use  of  the  default  colormap, instead of a
+                    private colormap.  (That is, it behaves as if
+                    the _\b-_\bn_\bo_\b-_\bi_\bn_\bs_\bt_\ba_\bl_\bl command-line option was spec-
+                    ified, but only for  this  particular  hack.)
+                    This  is  provided  because  some third-party
+                    programs  that  draw  on  the   root   window
+                    (notably:  x\bxv\bv(1), and x\bxe\bea\bar\brt\bth\bh(1)) make assump-
+                    tions about the visual and  colormap  of  the
+                    root  window:  assumptions which xscreensaver
+                    can violate.
+
+               If you specify a particular visual for a  program,
+               and that visual does not exist on the screen, then
+               that program will not  be  chosen  to  run.   This
+               means  that  on  displays with multiple screens of
+               different depths, you can arrange for  appropriate
+               hacks  to  be  run  on  each.  For example, if one
+               screen is color and the other is monochrome, hacks
+               that  look  good  in  mono  can be run on one, and
+               hacks that only look good in color will show up on
+               the other.
+
+
+       Normally you won't need to change the following resources:
+
+
+       p\bpo\boi\bin\bnt\bte\ber\brP\bPo\bol\bll\blT\bTi\bim\bme\be (class T\bTi\bim\bme\be)
+               When server extensions are not in use,  this  con-
+               trols how frequently _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br checks to see if
+               the  mouse  position  or  buttons  have   changed.
+               Default 5 seconds.
+
+       w\bwi\bin\bnd\bdo\bow\bwC\bCr\bre\bea\bat\bti\bio\bon\bnT\bTi\bim\bme\beo\bou\but\bt (class T\bTi\bim\bme\be)
+               When  server  extensions are not in use, this con-
+               trols the delay between when windows  are  created
+               and  when  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  selects  events  on them.
+               Default 30 seconds.
+
+       i\bin\bni\bit\bti\bia\bal\blD\bDe\bel\bla\bay\by (class T\bTi\bim\bme\be)
+               When server extensions are not  in  use,  _\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+               _\bs_\ba_\bv_\be_\br will wait this many seconds before selecting
+               events on existing windows, under  the  assumption
+               that  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  is  started  during your login
+               procedure, and the window state may  be  in  flux.
+               Default  0.  (This used to default to 30, but that
+               was back in the days when slow machines and X ter-
+               minals were more common...)
+
+       s\bsg\bgi\biS\bSa\bav\bve\ber\brE\bEx\bxt\bte\ben\bns\bsi\bio\bon\bn (class B\bBo\boo\bol\ble\bea\ban\bn)
+               There  are  a  number of different X server exten-
+               sions which can make  xscreensaver's  job  easier.
+               The  next  few  resources  specify  whether  these
+               extensions should be utilized if they  are  avail-
+               able.
+
+
+
+X Version 11             20-Jun-99 (3.15)                       8
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               This    resource    controls   whether   the   SGI
+               S\bSC\bCR\bRE\bEE\bEN\bN_\b_S\bSA\bAV\bVE\bER\bR server  extension  will  be  used  to
+               decide  whether  the  user  is  idle.  This is the
+               default if _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  has  been  compiled  with
+               support  for  this extension (which is the default
+               on  SGI  systems.).   If  it  is  available,   the
+               S\bSC\bCR\bRE\bEE\bEN\bN_\b_S\bSA\bAV\bVE\bER\bR  method  is  faster and more reliable
+               than what will be done otherwise, so use it if you
+               can.  (This extension is only available on Silicon
+               Graphics systems, unfortunately.)
+
+       m\bmi\bit\btS\bSa\bav\bve\ber\brE\bEx\bxt\bte\ben\bns\bsi\bio\bon\bn (class B\bBo\boo\bol\ble\bea\ban\bn)
+               This     resource     controls     whether     the
+               M\bMI\bIT\bT-\b-S\bSC\bCR\bRE\bEE\bEN\bN-\b-S\bSA\bAV\bVE\bER\bR  server extension will be used to
+               decide whether the user  is  idle.   However,  the
+               default  for  this resource is _\bf_\ba_\bl_\bs_\be, because even
+               if this extension is available, it is  flaky  (and
+               it  also makes the f\bfa\bad\bde\be option not work properly.)
+               Use of this extension is not recommended.
+
+       x\bxi\bid\bdl\ble\beE\bEx\bxt\bte\ben\bns\bsi\bio\bon\bn (class B\bBo\boo\bol\ble\bea\ban\bn)
+               This resource controls whether  the  X\bXI\bID\bDL\bLE\bE  server
+               extension  will be used to decide whether the user
+               is idle.  This is the default if _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  has
+               been  compiled  with  support  for this extension.
+               (This extension is only available  for  X11R4  and
+               X11R5 systems, unfortunately.)
+
+       p\bpr\bro\boc\bcI\bIn\bnt\bte\ber\brr\bru\bup\bpt\bts\bs (class B\bBo\boo\bol\ble\bea\ban\bn)
+               This  resource  controls  whether the /\b/p\bpr\bro\boc\bc/\b/i\bin\bnt\bte\ber\br-\b-
+               r\bru\bup\bpt\bts\bs file should be consulted to  decide  whether
+               the user is idle.  This is the default if _\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+               _\bs_\ba_\bv_\be_\br has been compiled on a system which supports
+               this mechanism (i.e., Linux systems.)
+
+               The benefit to doing this is that _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br can
+               note that the user is active even when the X  con-
+               sole  is not the active one: if the user is typing
+               in  another  virtual  console,  xscreensaver  will
+               notice  that and will fail to activate.  For exam-
+               ple, if you're playing Quake in VGA-mode, xscreen-
+               saver won't wake up in the middle of your game and
+               start competing for CPU.
+
+               The drawback to doing this  is  that  perhaps  you
+               _\br_\be_\ba_\bl_\bl_\by  _\bd_\bo want idleness on the X console to cause
+               the X display to lock, even if there  is  activity
+               on other virtual consoles.  If you want that, then
+               set this option to False.  (Or  just  lock  the  X
+               console manually.)
+
+               The  default  value  for this resource is True, on
+               systems where it works.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                       9
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       o\bov\bve\ber\brl\bla\bay\byS\bSt\btd\bde\ber\brr\br (class B\bBo\boo\bol\ble\bea\ban\bn)
+               If c\bca\bap\bpt\btu\bur\bre\beS\bSt\btd\bde\ber\brr\br is True, and your server supports
+               ``overlay'' visuals, then the text will be written
+               into one of the higher layers instead of into  the
+               same layer as the running screenhack.  Set this to
+               False to disable that (though you  shouldn't  need
+               to.)
+
+       o\bov\bve\ber\brl\bla\bay\byT\bTe\bex\bxt\btF\bFo\bor\bre\beg\bgr\bro\bou\bun\bnd\bd (class F\bFo\bor\bre\beg\bgr\bro\bou\bun\bnd\bd)
+               The  foreground  color  used for the stdout/stderr
+               text, if c\bca\bap\bpt\btu\bur\bre\beS\bSt\btd\bde\ber\brr\br is true.  Default:  Yellow.
+
+       o\bov\bve\ber\brl\bla\bay\byT\bTe\bex\bxt\btB\bBa\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd (class B\bBa\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd)
+               The  background  color  used for the stdout/stderr
+               text, if c\bca\bap\bpt\btu\bur\bre\beS\bSt\btd\bde\ber\brr\br is true.  Default: Black.
+
+       b\bbo\bou\bur\brn\bne\beS\bSh\bhe\bel\bll\bl (class B\bBo\bou\bur\brn\bne\beS\bSh\bhe\bel\bll\bl)
+               The pathname of the shell that  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  uses
+               to start subprocesses.  This must be whatever your
+               local variant of /\b/b\bbi\bin\bn/\b/s\bsh\bh  is:  in  particular,  it
+               must not be c\bcs\bsh\bh.
+
+C\bCO\bOM\bMM\bMA\bAN\bND\bD-\b-L\bLI\bIN\bNE\bE O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  also  accepts  the  following  command  line
+       options.  Except for the _\b-_\bd_\bi_\bs_\bp_\bl_\ba_\by option,  these  command-
+       line  options are all simply shorthand for the X resources
+       described in the _\bC_\bo_\bn_\bf_\bi_\bg_\bu_\br_\ba_\bt_\bi_\bo_\bn section, above.
+
+       -\b-d\bdi\bis\bsp\bpl\bla\bay\by _\bh_\bo_\bs_\bt_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by_\b._\bs_\bc_\br_\be_\be_\bn
+               The X display to use.  For displays with  multiple
+               screens,  XScreenSaver  will manage all screens on
+               the display simultaniously;  the  _\bs_\bc_\br_\be_\be_\bn  argument
+               (the  ``default'' screen) says which screen should
+               be used for dialog  boxes  (the  password  window,
+               _\bD_\be_\bm_\bo _\bM_\bo_\bd_\be, etc.)
+
+       -\b-t\bti\bim\bme\beo\bou\but\bt _\bm_\bi_\bn_\bu_\bt_\be_\bs
+               Same as the _\bt_\bi_\bm_\be_\bo_\bu_\bt resource.
+
+       -\b-c\bcy\byc\bcl\ble\be _\bm_\bi_\bn_\bu_\bt_\be_\bs
+               Same as the _\bc_\by_\bc_\bl_\be resource.
+
+       -\b-l\blo\boc\bck\bk-\b-m\bmo\bod\bde\be
+               Same as setting the _\bl_\bo_\bc_\bk resource to _\bt_\br_\bu_\be.
+
+       -\b-n\bno\bo-\b-l\blo\boc\bck\bk-\b-m\bmo\bod\bde\be
+               Same as setting the _\bl_\bo_\bc_\bk resource to _\bf_\ba_\bl_\bs_\be.
+
+       -\b-l\blo\boc\bck\bk-\b-t\bti\bim\bme\beo\bou\but\bt _\bm_\bi_\bn_\bu_\bt_\be_\bs
+               Same as the _\bl_\bo_\bc_\bk_\bT_\bi_\bm_\be_\bo_\bu_\bt resource.
+
+       -\b-v\bvi\bis\bsu\bua\bal\bl _\bv_\bi_\bs_\bu_\ba_\bl
+               Same as the _\bv_\bi_\bs_\bu_\ba_\bl_\bI_\bD resource.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                      10
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       -\b-i\bin\bns\bst\bta\bal\bll\bl
+               Same  as  setting  the _\bi_\bn_\bs_\bt_\ba_\bl_\bl_\bC_\bo_\bl_\bo_\br_\bm_\ba_\bp resource to
+               _\bt_\br_\bu_\be.
+
+       -\b-n\bno\bo-\b-i\bin\bns\bst\bta\bal\bll\bl
+               Same as setting the  _\bi_\bn_\bs_\bt_\ba_\bl_\bl_\bC_\bo_\bl_\bo_\br_\bm_\ba_\bp  resource  to
+               _\bf_\ba_\bl_\bs_\be.
+
+       -\b-v\bve\ber\brb\bbo\bos\bse\be
+               Same as setting the _\bv_\be_\br_\bb_\bo_\bs_\be resource to _\bt_\br_\bu_\be.
+
+       -\b-s\bsi\bil\ble\ben\bnt\bt Same as setting the _\bv_\be_\br_\bb_\bo_\bs_\be resource to _\bf_\ba_\bl_\bs_\be.
+
+       -\b-t\bti\bim\bme\bes\bst\bta\bam\bmp\bp
+               Same as setting the _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp resource to _\bt_\br_\bu_\be.
+
+       -\b-c\bca\bap\bpt\btu\bur\bre\be-\b-s\bst\btd\bde\ber\brr\br
+               Same  as  setting  the  _\bc_\ba_\bp_\bt_\bu_\br_\be_\bS_\bt_\bd_\be_\br_\br  resource to
+               _\bt_\br_\bu_\be.
+
+       -\b-n\bno\bo-\b-c\bca\bap\bpt\btu\bur\bre\be-\b-s\bst\btd\bde\ber\brr\br
+               Same as  setting  the  _\bc_\ba_\bp_\bt_\bu_\br_\be_\bS_\bt_\bd_\be_\br_\br  resource  to
+               _\bf_\ba_\bl_\bs_\be.
+
+       -\b-s\bsp\bpl\bla\bas\bsh\bh Same as setting the _\bs_\bp_\bl_\ba_\bs_\bh resource to _\bt_\br_\bu_\be.
+
+       -\b-n\bno\bo-\b-s\bsp\bpl\bla\bas\bsh\bh
+               Same as setting the _\bs_\bp_\bl_\ba_\bs_\bh resource to _\bf_\ba_\bl_\bs_\be.
+
+       -\b-n\bni\bic\bce\be _\bi_\bn_\bt_\be_\bg_\be_\br
+               Same as the _\bn_\bi_\bc_\be resource.
+
+       -\b-s\bsg\bgi\bi-\b-e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn
+               Same  as setting the _\bs_\bg_\bi_\bS_\ba_\bv_\be_\br_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn resource to
+               _\bt_\br_\bu_\be.
+
+       -\b-n\bno\bo-\b-s\bsg\bgi\bi-\b-e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn
+               Same as setting the _\bs_\bg_\bi_\bS_\ba_\bv_\be_\br_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn resource  to
+               _\bf_\ba_\bl_\bs_\be.
+
+       -\b-m\bmi\bit\bt-\b-e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn
+               Same  as setting the _\bm_\bi_\bt_\bS_\ba_\bv_\be_\br_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn resource to
+               _\bt_\br_\bu_\be.
+
+       -\b-n\bno\bo-\b-m\bmi\bit\bt-\b-e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn
+               Same as setting the _\bm_\bi_\bt_\bS_\ba_\bv_\be_\br_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn resource  to
+               _\bf_\ba_\bl_\bs_\be.
+
+       -\b-x\bxi\bid\bdl\ble\be-\b-e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn
+               Same  as  setting  the  _\bx_\bi_\bd_\bl_\be_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn resource to
+               _\bt_\br_\bu_\be.
+
+       -\b-n\bno\bo-\b-x\bxi\bid\bdl\ble\be-\b-e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn
+               Same as setting  the  _\bx_\bi_\bd_\bl_\be_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn  resource  to
+
+
+
+X Version 11             20-Jun-99 (3.15)                      11
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               _\bf_\ba_\bl_\bs_\be.
+
+       -\b-p\bpr\bro\boc\bc-\b-i\bin\bnt\bte\ber\brr\bru\bup\bpt\bts\bs
+               Same  as  setting  the  _\bp_\br_\bo_\bc_\bI_\bn_\bt_\be_\br_\br_\bu_\bp_\bt_\bs resource to
+               _\bt_\br_\bu_\be.
+
+       -\b-n\bno\bo-\b-p\bpr\bro\boc\bc-\b-i\bin\bnt\bte\ber\brr\bru\bup\bpt\bts\bs
+               Same as setting  the  _\bp_\br_\bo_\bc_\bI_\bn_\bt_\be_\br_\br_\bu_\bp_\bt_\bs  resource  to
+               _\bf_\ba_\bl_\bs_\be.
+
+       -\b-x\bxr\brm\bm _\br_\be_\bs_\bo_\bu_\br_\bc_\be_\b-_\bs_\bp_\be_\bc_\bi_\bf_\bi_\bc_\ba_\bt_\bi_\bo_\bn
+               As  with  all other Xt programs, you can specify X
+               resources on the command-line using the _\b-_\bx_\br_\bm argu-
+               ment.  Most of the interesting resources have com-
+               mand-line equivalents, however.
+
+H\bHO\bOW\bW I\bIT\bT W\bWO\bOR\bRK\bKS\bS
+       When it is time to activate the screensaver, a full-screen
+       black  window  is  created  on each screen of the display.
+       Each window is created in such a way that, to  any  subse-
+       quently-created programs, it will appear to be a ``virtual
+       root'' window.  Because of this, any program  which  draws
+       on  the  root window (and which understands virtual roots)
+       can be used as a screensaver.
+
+       When the user becomes active again, the  screensaver  win-
+       dows are unmapped, and the running subprocesses are killed
+       by sending them S\bSI\bIG\bGT\bTE\bER\bRM\bM.  This is  also  how  the  subpro-
+       cesses  are  killed when the screensaver decides that it's
+       time to run a different demo: the old one is killed and  a
+       new one is launched.
+
+       Before  launching  a  subprocess,  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  stores an
+       appropriate value for $\b$D\bDI\bIS\bSP\bPL\bLA\bAY\bY in the environment that the
+       child  will  recieve.   (This  is  so  that  if  you start
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br with a _\b-_\bd_\bi_\bs_\bp_\bl_\ba_\by argument, the programs  which
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  launches  will draw on the same display; and
+       so that the child will end up drawing on  the  appropriate
+       screen of a multi-headed display.)
+
+       When  the  screensaver  turns  off,  or is killed, care is
+       taken to restore the ``real'' virtual root window if there
+       is  one.   Because  of  this, it is important that you not
+       kill the screensaver process with _\bk_\bi_\bl_\bl _\b-_\b9 if you are  run-
+       ning  a  virtual-root window manager.  If you kill it with
+       -9, you may need to restart your window manager to  repair
+       the  damage.   This isn't an issue if you aren't running a
+       virtual-root window manager.
+
+       For all the gory details, see the commentary at the top of
+       xscreensaver.c.
+
+       You can control a running screensaver process by using the
+       x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-c\bco\bom\bmm\bma\ban\bnd\bd(1) program (which see.)
+
+
+
+X Version 11             20-Jun-99 (3.15)                      12
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+P\bPO\bOW\bWE\bER\bR M\bMA\bAN\bNA\bAG\bGE\bEM\bME\bEN\bNT\bT
+       Modern X servers contain support to power down the monitor
+       after  an  idle  period.  If the monitor has powered down,
+       then _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br will notice this, and will not waste CPU
+       by  drawing  graphics demos on a black screen.  An attempt
+       will also be made to explicitly power the monitor back  up
+       as soon as user activity is detected.
+
+       If  your  X server supports power management, then x\bxs\bse\bet\bt(1)
+       will accept a d\bdp\bpm\bms\bs option.  So, if you wanted _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br
+       to  activate  after 5 minutes, but you wanted your monitor
+       to power down after one hour (3600 seconds) you  would  do
+       this:
+
+            xset dpms 3600
+
+       See  the  man  page  for  the x\bxs\bse\bet\bt(1) program for details.
+       (Note that power management requires both software support
+       in  the  X  server,  and  hardware  support in the monitor
+       itself.)
+
+U\bUS\bSI\bIN\bNG\bG X\bXD\bDM\bM(\b(1\b1)\b)
+       You can run _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br from your x\bxd\bdm\bm(1) session, so that
+       the  screensaver will run even when nobody is logged in on
+       the console.
+
+       The trick to using xscreensaver with _\bx_\bd_\bm is this: keep  in
+       mind  the  two very different states in which xscreensaver
+       will be running:
+
+           1\b1:\b: N\bNo\bob\bbo\bod\bdy\by l\blo\bog\bgg\bge\bed\bd i\bin\bn.\b.
+
+              If you're thinking of running xscreensaver from XDM
+              at  all, then it's probably because you want graph-
+              ics demos to be running on the console when  nobody
+              is  logged  in  there.   In this case, xscreensaver
+              will function only as a screen saver, not a  screen
+              locker:  it  doesn't make sense for xscreensaver to
+              lock the screen, since nobody  is  logged  in  yet!
+              The  only  thing  on  the  screen  is the XDM login
+              prompt.
+
+           2\b2:\b: S\bSo\bom\bme\beb\bbo\bod\bdy\by l\blo\bog\bgg\bge\bed\bd i\bin\bn.\b.
+
+              Once someone has logged in through  the  XDM  login
+              window, the situation is very different.  For exam-
+              ple: now it makes sense to  lock  the  screen  (and
+              prompt  for the logged in user's password); and now
+              xscreensaver should consult that user's _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\b-
+              _\bs_\ba_\bv_\be_\br file; and so on.
+
+       The  difference  between  these two states comes down to a
+       question of, which user is the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  process  run-
+       ning  as?  For the first state, it doesn't matter.  If you
+
+
+
+X Version 11             20-Jun-99 (3.15)                      13
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       start _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br in the usual XDM way, then xscreensaver
+       will  probably  end  up running as root, which is fine for
+       the first case (the ``nobody logged in'' case.)
+
+       However, once someone is logged in, running as root is  no
+       longer  fine:  because  xscreensaver  will  be  consulting
+       root's _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file instead of that of the logged in
+       user,  and  won't  be  prompting  for the logged in user's
+       password, and so on.  (This is  not  a  security  problem,
+       it's just not what you want.)
+
+       So,  once  someone has logged in, you want xscreensaver to
+       be running as that user.  The way to accomplish this is to
+       kill  the old xscreensaver process and start a new one (as
+       the new user.)
+
+       The simplest way to accomplish all of this is as follows:
+
+           1\b1:\b: L\bLa\bau\bun\bnc\bch\bh x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br b\bbe\bef\bfo\bor\bre\be a\ban\bny\byo\bon\bne\be l\blo\bog\bgs\bs i\bin\bn.\b.
+
+              To the file _\b/_\bu_\bs_\br_\b/_\bl_\bi_\bb_\b/_\bX_\b1_\b1_\b/_\bx_\bd_\bm_\b/_\bX_\bs_\be_\bt_\bu_\bp, add the lines
+
+                   xscreensaver-command -exit
+                   xscreensaver &
+
+              This will run xscreensaver as root,  over  the  XDM
+              login  window.   Moving  the  mouse  will cause the
+              screen to un-blank, and  allow  the  user  to  type
+              their password at XDM to log in.
+
+           2\b2:\b: R\bRe\bes\bst\bta\bar\brt\bt x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br w\bwh\bhe\ben\bn s\bso\bom\bme\beo\bon\bne\be l\blo\bog\bgs\bs i\bin\bn.\b.
+
+              Near the top of the file _\b/_\bu_\bs_\br_\b/_\bl_\bi_\bb_\b/_\bX_\b1_\b1_\b/_\bx_\bd_\bm_\b/_\bX_\bs_\be_\bs_\bs_\bi_\bo_\bn,
+              add those same lines:
+
+                   xscreensaver-command -exit
+                   xscreensaver &
+
+              When someone logs in, this will kill off the exist-
+              ing  (root)  xscreensaver  process, and start a new
+              one, running as the user who has  just  logged  in.
+              If  the user's .xscreensaver file requests locking,
+              they'll get it.   They  will  also  get  their  own
+              choice  of timeouts, and graphics demos, and so on.
+
+              Alternately, each user could just put  those  lines
+              in their personal _\b~_\b/_\b._\bx_\bs_\be_\bs_\bs_\bi_\bo_\bn files.
+
+       Make  sure  you  have $\b$P\bPA\bAT\bTH\bH set up correctly in the _\bX_\bs_\be_\bt_\bu_\bp
+       and _\bX_\bs_\be_\bs_\bs_\bi_\bo_\bn  scripts,  or  _\bx_\bd_\bm  won't  be  able  to  find
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br,  and/or  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  won't be able to find
+       its graphics demos.
+
+       (If your system does not seem to be executing  the  _\bX_\bs_\be_\bt_\bu_\bp
+
+
+
+X Version 11             20-Jun-99 (3.15)                      14
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       file,  you  may  need to configure it to do so: the tradi-
+       tional way to do this is to make that file  the  value  of
+       the      _\bD_\bi_\bs_\bp_\bl_\ba_\by_\bM_\ba_\bn_\ba_\bg_\be_\br_\b*_\bs_\be_\bt_\bu_\bp      resource     in     the
+       _\b/_\bu_\bs_\br_\b/_\bl_\bi_\bb_\b/_\bX_\b1_\b1_\b/_\bx_\bd_\bm_\b/_\bx_\bd_\bm_\b-_\bc_\bo_\bn_\bf_\bi_\bg file.  See the  man  page  for
+       x\bxd\bdm\bm(1) for more details.)
+
+       It  is  safe to run _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br as root (as _\bx_\bd_\bm is likely
+       to do.)  If run as root, _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br changes  its  effec-
+       tive  user and group ids to something safe (like _\b"_\bn_\bo_\bb_\bo_\bd_\by_\b")
+       before connecting to the X server or launching user-speci-
+       fied programs.
+
+       An  unfortunate  side  effect of this (important) security
+       precaution is  that  it  may  conflict  with  cookie-based
+       authentication.
+
+       If  you  get  "connection  refused"  errors  when  running
+       _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br from _\bx_\bd_\bm, then this probably means  that  you
+       have  x\bxa\bau\but\bth\bh(1) or some other security mechanism turned on.
+       One way  around  this  is  to  add  "\b"x\bxh\bho\bos\bst\bt +\b+l\blo\boc\bca\bal\blh\bho\bos\bst\bt"\b"  to
+       _\bX_\bs_\be_\bt_\bu_\bp, just before _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br is launched.
+
+       Note  that this will give access to the X server to anyone
+       capable of logging in to the local  machine,  so  in  some
+       environments,  this  might not be appropriate.  If turning
+       off file-system-based access control  is  not  acceptable,
+       then  running  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br from the _\bX_\bs_\be_\bt_\bu_\bp file might not
+       be possible, and xscreensaver will only work when  running
+       as a normal, unprivileged user.
+
+       For  more  information  on  the  X server's access control
+       mechanisms, see the  man  pages  for  X\bX(1),  X\bXs\bse\bec\bcu\bur\bri\bit\bty\by(1),
+       x\bxa\bau\but\bth\bh(1), and x\bxh\bho\bos\bst\bt(1).
+
+U\bUS\bSI\bIN\bNG\bG C\bCD\bDE\bE (\b(C\bCO\bOM\bMM\bMO\bON\bN D\bDE\bES\bSK\bKT\bTO\bOP\bP E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT)\b)
+       The  easiest  way to use _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br on a system with CDE
+       is to simply switch off the built-in CDE screensaver,  and
+       use  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  instead;  and second, to tell the front
+       panel to run x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-c\bco\bom\bmm\bma\ban\bnd\bd(1) with the _\b-_\bl_\bo_\bc_\bk option
+       when the _\bL_\bo_\bc_\bk icon is clicked.
+
+       To accomplish this involves five steps:
+
+           1\b1:\b: S\bSw\bwi\bit\btc\bch\bh o\bof\bff\bf C\bCD\bDE\bE'\b's\bs l\blo\boc\bck\bke\ber\br
+              Do  this  by  turning off ``_\bS_\bc_\br_\be_\be_\bn _\bS_\ba_\bv_\be_\br _\ba_\bn_\bd _\bS_\bc_\br_\be_\be_\bn
+              _\bL_\bo_\bc_\bk'' in the Screen section of the Style  Manager.
+
+           2\b2:\b: E\bEd\bdi\bit\bt s\bse\bes\bss\bsi\bio\bon\bne\bet\btc\bc
+              Edit  the file _\b~_\b/_\b._\bd_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\bs_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\be_\bt_\bc and add to
+              it the line
+
+                   xscreensaver &
+
+              This will cause _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br to  be  launched  when
+
+
+
+X Version 11             20-Jun-99 (3.15)                      15
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+              you  log  in.   (As always, make sure that xscreen-
+              saver and the graphics demos are on your $\b$P\bPA\bAT\bTH\bH; the
+              path  needs  to be set in _\b._\bc_\bs_\bh_\br_\bc and/or _\b._\bd_\bt_\bp_\br_\bo_\bf_\bi_\bl_\be,
+              not _\b._\bl_\bo_\bg_\bi_\bn.)
+
+           3\b3:\b: C\bCr\bre\bea\bat\bte\be X\bXS\bSc\bcr\bre\bee\ben\bnS\bSa\bav\bve\ber\br.\b.d\bdt\bt
+              Create a  file  called  _\b~_\b/_\b._\bd_\bt_\b/_\bt_\by_\bp_\be_\bs_\b/_\bX_\bS_\bc_\br_\be_\be_\bn_\bS_\ba_\bv_\be_\br_\b._\bd_\bt
+              with the following contents:
+
+                   ACTION XScreenSaver
+                   {
+                     LABEL         XScreenSaver
+                     TYPE          COMMAND
+                     EXEC_STRING   xscreensaver-command -lock
+                     ICON          Dtkey
+                     WINDOW_TYPE   NO_STDIO
+                   }
+
+              This  defines  a ``lock'' command for the CDE front
+              panel, that knows how to talk to _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br.
+
+           4\b4:\b: C\bCr\bre\bea\bat\bte\be L\bLo\boc\bck\bk.\b.f\bfp\bp
+              Create a file called _\b~_\b/_\b._\bd_\bt_\b/_\bt_\by_\bp_\be_\bs_\b/_\bL_\bo_\bc_\bk_\b._\bf_\bp  with  the
+              following contents:
+
+                   CONTROL Lock
+                   {
+                     TYPE             icon
+                     CONTAINER_NAME   Switch
+                     CONTAINER_TYPE   SWITCH
+                     POSITION_HINTS   1
+                     ICON             Fplock
+                     LABEL            Lock
+                     PUSH_ACTION      XScreenSaver
+                     HELP_TOPIC       FPOnItemLock
+                     HELP_VOLUME      FPanel
+                   }
+
+              This  associates  the CDE front panel ``Lock'' icon
+              with the lock command we just defined in step 3.
+
+           5\b5:\b: R\bRe\bes\bst\bta\bar\brt\bt
+              Select ``_\bR_\be_\bs_\bt_\ba_\br_\bt _\bW_\bo_\br_\bk_\bs_\bp_\ba_\bc_\be _\bM_\ba_\bn_\ba_\bg_\be_\br'' from the popup
+              menu  to  make your changes take effect.  If things
+              seem not to be working, check the file _\b~_\b/_\b._\bd_\bt_\b/_\be_\br_\br_\bo_\br_\b-
+              _\bl_\bo_\bg for error messages.
+
+U\bUS\bSI\bIN\bNG\bG H\bHP\bP V\bVU\bUE\bE (\b(V\bVI\bIS\bSU\bUA\bAL\bL U\bUS\bSE\bER\bR E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT)\b)
+       Since  CDE  is  a  descendant of VUE, the instructions for
+       using xscreensaver under VUE are similar to the above:
+
+           1\b1:\b: S\bSw\bwi\bit\btc\bch\bh o\bof\bff\bf V\bVU\bUE\bE'\b's\bs l\blo\boc\bck\bke\ber\br
+              Open the ``_\bS_\bt_\by_\bl_\be _\bM_\ba_\bn_\ba_\bg_\be_\br'' and  select  ``_\bS_\bc_\br_\be_\be_\bn.''
+              Turn off ``_\bS_\bc_\br_\be_\be_\bn _\bS_\ba_\bv_\be_\br _\ba_\bn_\bd _\bS_\bc_\br_\be_\be_\bn _\bL_\bo_\bc_\bk'' option.
+
+
+
+X Version 11             20-Jun-99 (3.15)                      16
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+           2\b2:\b: M\bMa\bak\bke\be s\bsu\bur\bre\be y\byo\bou\bu h\bha\bav\bve\be a\ba S\bSe\bes\bss\bsi\bio\bon\bn
+              Next,  go to the Style Manager's, ``_\bS_\bt_\ba_\br_\bt_\bu_\bp'' page.
+              Click on ``_\bS_\be_\bt _\bH_\bo_\bm_\be _\bS_\be_\bs_\bs_\bi_\bo_\bn'' to create a  session,
+              then  on  ``_\bR_\be_\bt_\bu_\br_\bn _\bt_\bo _\bH_\bo_\bm_\be _\bS_\be_\bs_\bs_\bi_\bo_\bn'' to select this
+              session each time you log in.
+
+           3\b3:\b: E\bEd\bdi\bit\bt v\bvu\bue\be.\b.s\bse\bes\bss\bsi\bio\bon\bn
+              Edit the file _\b~_\b/_\b._\bv_\bu_\be_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\bs_\b/_\bh_\bo_\bm_\be_\b/_\bv_\bu_\be_\b._\bs_\be_\bs_\bs_\bi_\bo_\bn  and
+              add to it the line
+
+                   vuesmcmd -screen 0 -cmd "xscreensaver"
+
+              This  will  cause  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br to be launched when
+              you log in.  (As always, make  sure  that  xscreen-
+              saver and the graphics demos are on your $\b$P\bPA\bAT\bTH\bH; the
+              path needs to be set in _\b._\bc_\bs_\bh_\br_\bc and/or _\b._\bp_\br_\bo_\bf_\bi_\bl_\be, not
+              _\b._\bl_\bo_\bg_\bi_\bn.)
+
+           3\b3:\b: E\bEd\bdi\bit\bt v\bvu\bue\bew\bwm\bmr\brc\bc
+              Edit  the  file  _\b~_\b/_\b._\bv_\bu_\be_\b/_\bv_\bu_\be_\bw_\bm_\br_\bc and add (or change)
+              the Lock control:
+
+                   CONTROL Lock
+                   {
+                     TYPE         button
+                     IMAGE        lock
+                     PUSH_ACTION  f.exec "xscreensaver-command -lock"
+                     HELP_TOPIC   FPLock
+                   }
+
+              This associates the VUE front panel  ``Lock''  icon
+              with the xscreensaver lock command.
+
+
+A\bAD\bDD\bDI\bIN\bNG\bG T\bTO\bO M\bME\bEN\bNU\bUS\bS
+       The x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-c\bco\bom\bmm\bma\ban\bnd\bd(1) program is a perfect candidate
+       for something to add to your window manager's popup menus.
+       If  you  use m\bmw\bwm\bm(1), 4\b4D\bDw\bwm\bm(1), t\btw\bwm\bm(1), or (probably) any of
+       _\bt_\bw_\bm's many descendants, you can do it like this:
+
+       1\b1.\b. C\bCr\bre\bea\bat\bte\be ~\b~/\b/.\b.m\bmw\bwm\bmr\brc\bc (\b(o\bor\br ~\b~/\b/.\b.t\btw\bwm\bmr\brc\bc o\bor\br .\b..\b..\b.)\b)
+          If you don't have a  _\b~_\b/_\b._\bm_\bw_\bm_\br_\bc  file  (or,  on  SGIs,  a
+          _\b~_\b/_\b._\b4_\bD_\bw_\bm_\br_\bc  file;  or,  with  twm, a _\b~_\b/_\b._\bt_\bw_\bm_\br_\bc file) then
+          create one by making a copy  of  the  _\b/_\bu_\bs_\br_\b/_\bl_\bi_\bb_\b/_\bX_\b1_\b1_\b/_\bs_\by_\bs_\b-
+          _\bt_\be_\bm_\b._\bm_\bw_\bm_\br_\bc  file  (or _\b/_\bu_\bs_\br_\b/_\bl_\bi_\bb_\b/_\bX_\b1_\b1_\b/_\bt_\bw_\bm_\b/_\bs_\by_\bs_\bt_\be_\bm_\b._\bt_\bw_\bm_\br_\bc, and
+          so on.)
+
+       2\b2.\b. A\bAd\bdd\bd a\ba m\bme\ben\bnu\bu d\bde\bef\bfi\bin\bni\bit\bti\bio\bon\bn.\b.
+          Something like this:
+
+               menu XScreenSaver
+               {
+                "Blank Screen Now" !"sleep 3; xscreensaver-command -activate"
+                "Lock Screen Now"  !"sleep 3; xscreensaver-command -lock"
+
+
+
+X Version 11             20-Jun-99 (3.15)                      17
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+                "Screen Saver Demo"         !"xscreensaver-demo"
+                "Screen Saver Preferences"  !"xscreensaver-demo -prefs"
+                "Reinitialize Screen Saver" !"xscreensaver-command -restart"
+                "Kill Screen Saver"         !"xscreensaver-command -exit"
+                "Launch Screen Saver"       !"xscreensaver &"
+               }
+
+
+       3\b3.\b. A\bAd\bdd\bd t\bth\bhe\be m\bme\ben\bnu\bu
+          For m\bmw\bwm\bm(1) and 4\b4D\bDw\bwm\bm(1), find the section  of  the  file
+          that  says  _\bM_\be_\bn_\bu  _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bR_\bo_\bo_\bt_\bM_\be_\bn_\bu.  For t\btw\bwm\bm(1), it will
+          probably be _\bm_\be_\bn_\bu _\b"_\bd_\be_\bf_\bo_\bp_\bs_\b".  If you add a line somewhere
+          in that menu definition that reads
+
+                 "XScreenSaver"        f.menu XScreenSaver
+
+          then  this  will  add  an XScreenSaver sub-menu to your
+          default root-window popup menu.  Alternately, you could
+          just  put the xscreensaver menu items directly into the
+          root menu.
+
+       Other window managers are guaranteed to do  things  gratu-
+       itously differently.
+
+B\bBU\bUG\bGS\bS
+       Bugs?   There  are no bugs.  Ok, well, maybe.  If you find
+       one,  please  let  me  know.   http://www.jwz.org/xscreen-
+       saver/bugs.html  explains how to construct the most useful
+       bug reports.
+
+       L\bLo\boc\bck\bki\bin\bng\bg a\ban\bnd\bd X\bXD\bDM\bM
+               If xscreensaver  has  been  launched  from  x\bxd\bdm\bm(1)
+               before anyone has logged in, you will need to kill
+               and then restart the xscreensaver daemon after you
+               have  logged  in,  or  you will be confused by the
+               results.  (For example, locking  won't  work,  and
+               your _\b~_\b/_\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file will be ignored.)
+
+               When  you are logged in, you want the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br
+               daemon to be running under _\by_\bo_\bu_\br user  id,  not  as
+               root or some other user.
+
+               If  it  has  already  been started by _\bx_\bd_\bm, you can
+               kill it by sending it the e\bex\bxi\bit\bt command,  and  then
+               re-launching  it as you, by putting something like
+               the following in your personal X startup script:
+
+                    xscreensaver-command -exit
+                    xscreensaver &
+
+               The ``_\bU_\bs_\bi_\bn_\bg _\bX_\bD_\bM_\b(_\b1_\b)''  section,  above,  goes  into
+               more  detail,  and  explains  how to configure the
+               system to do this for all users automatically.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                      18
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       L\bLo\boc\bck\bki\bin\bng\bg a\ban\bnd\bd r\bro\boo\bot\bt l\blo\bog\bgi\bin\bns\bs
+               In order for it to be safe for xscreensaver to  be
+               launched  by  _\bx_\bd_\bm,  certain  precautions had to be
+               taken, among them that xscreensaver never runs  as
+               _\br_\bo_\bo_\bt.   In  particular,  if it is launched as root
+               (as _\bx_\bd_\bm is likely to do), xscreensaver  will  dis-
+               avow  its  privileges, and switch itself to a safe
+               user id (such as _\bn_\bo_\bb_\bo_\bd_\by.)
+
+               An implication of this is that if you  log  in  as
+               _\br_\bo_\bo_\bt  on  the console, xscreensaver will refuse to
+               lock the screen (because it can't tell the differ-
+               ence  between _\br_\bo_\bo_\bt being logged in on the console,
+               and a normal user being logged in on  the  console
+               but  xscreensaver  having  been  launched  by  the
+               x\bxd\bdm\bm(1) _\bX_\bs_\be_\bt_\bu_\bp file.)
+
+               The solution to this is simple: you  shouldn't  be
+               logging  in  on  the  console as _\br_\bo_\bo_\bt in the first
+               place!  (What, are you crazy or something?)
+
+               Proper Unix hygiene dictates that you  should  log
+               in  as  yourself,  and s\bsu\bu(1) to _\br_\bo_\bo_\bt as necessary.
+               People who spend their day logged in as  _\br_\bo_\bo_\bt  are
+               just begging for disaster.
+
+       X\bXA\bAU\bUT\bTH\bH a\ban\bnd\bd X\bXD\bDM\bM
+               For  xscreensaver to work when launched by x\bxd\bdm\bm(1),
+               programs running on  the  local  machine  as  user
+               _\b"_\bn_\bo_\bb_\bo_\bd_\by_\b"  must be able to connect to the X server.
+               This means that if you want to run xscreensaver on
+               the  console  while  nobody  is logged in, you may
+               need to disable cookie-based access  control  (and
+               allow  all  users  who  can  log  in  to the local
+               machine to connect to the display.)
+
+               You should be sure  that  this  is  an  acceptable
+               thing  to  do in your environment before doing it.
+               See the ``_\bU_\bs_\bi_\bn_\bg _\bX_\bD_\bM_\b(_\b1_\b)'' section, above, for  more
+               details.
+
+               If  anyone  has  suggestions  on  how xscreensaver
+               could be made to work with  x\bxd\bdm\bm(1)  without  first
+               turning   off  _\b._\bX_\ba_\bu_\bt_\bh_\bo_\br_\bi_\bt_\by-based  access  control,
+               please let me know.
+
+       P\bPa\bas\bss\bsw\bwo\bor\brd\bds\bs
+               If you  get  an  error  message  at  startup  like
+               ``couldn't get password of _\bu_\bs_\be_\br'' then this proba-
+               bly means that you're on a  system  in  which  the
+               g\bge\bet\btp\bpw\bwe\ben\bnt\bt(3)  library  routine  can  only be effec-
+               tively used by root.  If this is  the  case,  then
+               _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  must  be installed as setuid to root
+               in order for locking to work.  Care has been taken
+
+
+
+X Version 11             20-Jun-99 (3.15)                      19
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               to make this a safe thing to do.
+
+               It  also  may  mean  that  your system uses shadow
+               passwords  instead  of  the  standard  g\bge\bet\btp\bpw\bwe\ben\bnt\bt(3)
+               interface;  in  that  case, you may need to change
+               some options with _\bc_\bo_\bn_\bf_\bi_\bg_\bu_\br_\be and recompile.
+
+               If you change your password after xscreensaver has
+               been  launched,  it  will  continue using your old
+               password to unlock the screen  until  xscreensaver
+               is restarted.  So, after you change your password,
+               you'll have to do
+
+                    xscreensaver-command -restart
+
+               to make _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br notice.
+
+       P\bPA\bAM\bM P\bPa\bas\bss\bsw\bwo\bor\brd\bds\bs
+               If your system uses PAM (Pluggable  Authentication
+               Modules),  then  in  order for xscreensaver to use
+               PAM properly, PAM must be told about xscreensaver.
+               The   xscreensaver   installation  process  should
+               update the PAM data (on  Linux,  by  creating  the
+               file   _\b/_\be_\bt_\bc_\b/_\bp_\ba_\bm_\b._\bd_\b/_\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  for  you,  and  on
+               Solaris, by telling you what lines to add  to  the
+               _\b/_\be_\bt_\bc_\b/_\bp_\ba_\bm_\b._\bc_\bo_\bn_\bf file.)
+
+               If  the  PAM configuration files do not know about
+               xscreensaver, then you _\bm_\bi_\bg_\bh_\bt  be  in  a  situation
+               where  xscreensaver will refuse to ever unlock the
+               screen.
+
+               This is a design flaw in PAM (there is no way  for
+               a  client  to  tell  the  difference  between  PAM
+               responding ``I have never heard of your  module,''
+               and responding, ``you typed the wrong password.'')
+               As far as I can tell, there is no way for xscreen-
+               saver to automatically work around this, or detect
+               the problem in advance, so if you have  PAM,  make
+               sure it is configured correctly!
+
+       C\bCo\bol\blo\bor\brm\bma\bap\bp l\blo\bos\bss\bsa\bag\bge\be:\b: T\bTW\bWM\bM
+               The  i\bin\bns\bst\bta\bal\bll\blC\bCo\bol\blo\bor\brm\bma\bap\bp option doesn't work very well
+               with the t\btw\bwm\bm(1) window  manager  and  its  descen-
+               dants.
+
+               There  is a race condition between the screensaver
+               and this window manager, which can result  in  the
+               screensaver's colormap not getting installed prop-
+               erly, meaning the graphics hacks  will  appear  in
+               essentially  random  colors.   (If the screen goes
+               white instead of black, this is probably why.)
+
+               The m\bmw\bwm\bm(1) and o\bol\blw\bwm\bm(1) window managers don't  have
+
+
+
+X Version 11             20-Jun-99 (3.15)                      20
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               this problem.  The race condition exists because X
+               (really, ICCCM) does not  provide  a  way  for  an
+               OverrideRedirect  window to have its own colormap,
+               short of grabbing the server (which is  neither  a
+               good  idea,  nor  really possible with the current
+               design.)   What  happens  is  that,  as  soon   as
+               xscreensaver  installs  its colormap, t\btw\bwm\bm responds
+               to  the  resultant  C\bCo\bol\blo\bor\brm\bma\bap\bpN\bNo\bot\bti\bif\bfy\by  event  by  re-
+               instaling  the  default colormap.  Apparently, t\btw\bwm\bm
+               doesn't _\ba_\bl_\bw_\ba_\by_\bs do this; it seems to  do  it  regu-
+               larly  if the screensaver is activated from a menu
+               item, but seems to not do it  if  the  screensaver
+               comes on of its own volition, or is activated from
+               another console.
+
+               A\bAt\btt\bte\ben\bnt\bti\bio\bon\bn,\b, w\bwi\bin\bnd\bdo\bow\bw m\bma\ban\bna\bag\bge\ber\br a\bau\but\bth\bho\bor\brs\bs!\b!
+                   You should only  call  X\bXI\bIn\bns\bst\bta\bal\bll\blC\bCo\bol\blo\bor\brm\bma\bap\bp(3)  in
+                   response  to  user  events.   That  is,  it is
+                   appropriate to install a colormap in  response
+                   to   F\bFo\boc\bcu\bus\bsI\bIn\bn,   F\bFo\boc\bcu\bus\bsO\bOu\but\bt,   E\bEn\bnt\bte\ber\brN\bNo\bot\bti\bif\bfy\by,   and
+                   L\bLe\bea\bav\bve\beN\bNo\bot\bti\bif\bfy\by events; but it is not  appropriate
+                   to  call  it  in  response  to  C\bCo\bol\blo\bor\brm\bma\bap\bpN\bNo\bot\bti\bif\bfy\by
+                   events.  If you install colormaps in  response
+                   to  _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn actions as well as in response
+                   to _\bu_\bs_\be_\br actions, then you create the situation
+                   where  it  is impossible for override-redirect
+                   applications (such as xscreensaver) to display
+                   their windows in the proper colors.
+
+       C\bCo\bol\blo\bor\brm\bma\bap\bp l\blo\bos\bss\bsa\bag\bge\be:\b: X\bXV\bV,\b, X\bXA\bAn\bni\bim\bm,\b, X\bXE\bEa\bar\brt\bth\bh
+               Some  programs  don't  operate properly on visuals
+               other than the  default  one,  or  with  colormaps
+               other than the default one.  See the discussion of
+               the magic "default-n" visual name in the  descrip-
+               tion of the p\bpr\bro\bog\bgr\bra\bam\bms\bs resource in the _\bC_\bo_\bn_\bf_\bi_\bg_\bu_\br_\ba_\bt_\bi_\bo_\bn
+               section.  When programs only work with the default
+               colormap, you need to use a syntax like this:
+
+                       default-n: xv -root image-1.gif -quit  \n\
+                       default-n: xearth -nostars -wait 0     \n\
+
+               It would also work to turn off the i\bin\bns\bst\bta\bal\bll\blC\bCo\bol\blo\bor\brm\bma\bap\bp
+               option altogether, but that would deny extra  col-
+               ors  to  those programs that _\bc_\ba_\bn take advantage of
+               them.
+
+       M\bMa\bac\bch\bhi\bin\bne\be L\bLo\boa\bad\bd
+               Although this program ``nices''  the  subprocesses
+               that it starts, graphics-intensive subprograms can
+               still overload the machine by causing the X server
+               process  itself (which is not ``niced'') to suck a
+               lot of cycles.  Care should be taken to slow  down
+               programs  intended  for  use  as  screensavers  by
+               inserting strategic calls to s\bsl\ble\bee\bep\bp(3) or u\bus\bsl\ble\bee\bep\bp(3)
+
+
+
+X Version 11             20-Jun-99 (3.15)                      21
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               (or making liberal use of any _\b-_\bd_\be_\bl_\ba_\by options which
+               the programs may provide.)
+
+               Note that the OpenGL-based graphics demos are real
+               pigs on machines that don't have texture hardware.
+
+               Also, an active  screensaver  will  cause  your  X
+               server  to  be pretty much permanently swapped in;
+               but the same is true of  any  program  that  draws
+               periodically, like x\bxc\bcl\blo\boc\bck\bk(1) or x\bxl\blo\boa\bad\bd(1).
+
+       L\bLa\bat\bte\ben\bnc\bcy\by a\ban\bnd\bd R\bRe\bes\bsp\bpo\bon\bns\bsi\biv\bve\ben\bne\bes\bss\bs
+               If  the  subprocess is drawing too quickly and the
+               connection to the X server is a slow one (such  as
+               an  X terminal running over a phone line) then the
+               screensaver might not turn off right away when the
+               user  becomes  active  again  (the i\bic\bco\bo(1) demo has
+               this problem if being  run  in  full-speed  mode).
+               This  can  be  alleviated  by  inserting strategic
+               calls to X\bXS\bSy\byn\bnc\bc(3) in code intended for  use  as  a
+               screensaver.   This  prevents  too  much  graphics
+               activity from being buffered up.
+
+       X\bXF\bFr\bre\bee\be8\b86\b6'\b's\bs M\bMa\bag\bgi\bic\bc K\bKe\bey\bys\bst\btr\bro\bok\bke\bes\bs
+               The  XFree86  X   server   traps   certain   magic
+               keystrokes  before  client programs ever see them.
+               Two that are of note are Ctrl+Alt+Backspace, which
+               causes  the  X  server  to  exit; and Ctrl+Alt+F_\bn,
+               which switches virtual  consoles.   The  X  server
+               will  respond to these keystrokes even if xscreen-
+               saver has the screen locked.   Depending  on  your
+               setup, you might consider this a problem.
+
+               Unfortunately,  there  is  no way for xscreensaver
+               itself to override  the  interpretation  of  these
+               keys.   If  you want to disable Ctrl+Alt+Backspace
+               globally, you need to set the _\bD_\bo_\bn_\bt_\bZ_\ba_\bp flag in your
+               _\b/_\be_\bt_\bc_\b/_\bX_\b1_\b1_\b/_\bX_\bF_\b8_\b6_\bC_\bo_\bn_\bf_\bi_\bg  file.   See the X\bXF\bF8\b86\b6C\bCo\bon\bnf\bfi\big\bg(5)
+               manual for details.
+
+               There is no way (as far as I can tell) to  disable
+               the VT-switching keystrokes.
+
+               Some  Linux  systems  come  with  a  VT_LOCKSWITCH
+               ioctl, that one could theoretically use to prevent
+               VT-switching  while  the  screen  is  locked;  but
+               unfortunately, this ioctl  can  only  be  used  by
+               root,  which  means that xscreensaver can't use it
+               (since  xscreensaver   disavows   its   privileges
+               shortly after startup, for security reasons.)
+
+               Any  suggestions for other solutions to this prob-
+               lem are welcome.
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                      22
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       X\bXV\bVi\bie\bew\bw C\bCl\bli\bie\ben\bnt\bts\bs
+               Apparently there are some problems with XView pro-
+               grams  getting  confused  and  thinking  that  the
+               screensaver window is the real  root  window  even
+               when the screensaver is not active: ClientMessages
+               intended for the window manager are  sent  to  the
+               screensaver  window instead.  This could be solved
+               by making xscreensaver  forward  all  unrecognised
+               ClientMessages  to the real root window, but there
+               may be other problems as well.  If anyone has  any
+               insight  on  the cause of this problem, please let
+               me know.  (XView is an X11 toolkit that implements
+               the  (quite  abominable)  Sun  OpenLook  look-and-
+               feel.)
+
+       M\bMI\bIT\bT E\bEx\bxt\bte\ben\bns\bsi\bio\bon\bn a\ban\bnd\bd F\bFa\bad\bdi\bin\bng\bg
+               The M\bMI\bIT\bT-\b-S\bSC\bCR\bRE\bEE\bEN\bN-\b-S\bSA\bAV\bVE\bER\bR extension is junk.  Don't use
+               it.
+
+               When  using the M\bMI\bIT\bT-\b-S\bSC\bCR\bRE\bEE\bEN\bN-\b-S\bSA\bAV\bVE\bER\bR extension in con-
+               junction with the f\bfa\bad\bde\be option,  you'll  notice  an
+               unattractive  flicker just before the fade begins.
+               This is because the server  maps  a  black  window
+               just  before  it tells the _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br process to
+               activate.  The  _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br  process  immediately
+               unmaps that window, but this results in a flicker.
+               I haven't figured a way  to get  around  this;  it
+               seems  to  be a fundamental property of the (mis-)
+               design of this server extension.
+
+               It sure would be nice if someone  would  implement
+               the  S\bSG\bGI\bI  S\bSC\bCR\bRE\bEE\bEN\bN_\b_S\bSA\bAV\bVE\bER\bR  extension in XFree86; it's
+               dead  simple,  and  works  far  better  than   the
+               overengineered  and broken M\bMI\bIT\bT-\b-S\bSC\bCR\bRE\bEE\bEN\bN-\b-S\bSA\bAV\bVE\bER\bR exten-
+               sion.
+
+       S\bSG\bGI\bI P\bPo\bow\bwe\ber\br S\bSa\bav\bve\ber\br
+               If you're running Irix 6.3, you  might  find  that
+               your monitor is powering down after an hour or two
+               even if you've told it not to.  This is  fixed  by
+               SGI patches 2447 and 2537.
+
+               If  you're  running Irix 6.5, this bug is back.  I
+               don't know a fix.
+
+       M\bMe\bes\bsa\baG\bGL\bL a\ban\bnd\bd V\bVo\boo\bod\bdo\boo\bo C\bCa\bar\brd\bds\bs
+               If you have a 3Dfx/Voodoo card, the  default  set-
+               tings  for  xscreensaver  will  run  the  GL-based
+               graphics demos in such a way that  they  will  not
+               take  advantage  of  the 3D acceleration hardware.
+               The solution is to change the p\bpr\bro\bog\bgr\bra\bam\bms\bs entries for
+
+
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                      23
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               the GL hacks from this:
+
+                           gears -root                        \n\
+
+               to this:
+
+                           MESA_GLX_FX=fullscreen  gears      \n\
+
+               That  is,  make  sure  that $\b$M\bME\bES\bSA\bA_\b_G\bGL\bLX\bX_\b_F\bFX\bX is set to
+               _\bf_\bu_\bl_\bl_\bs_\bc_\br_\be_\be_\bn, and don't tell the program to draw  on
+               the  root  window.  This may seem strange, but the
+               setup used by Mesa and these  kinds  of  cards  _\bi_\bs
+               strange!
+
+               For those who don't know, these cards work by sit-
+               ting between your normal video card and the  moni-
+               tor,  and seizing control of the monitor when it's
+               time to do 3D.  But this means that accelerated 3D
+               only  happens in full-screen mode (you can't do it
+               in a window, and you can't see the  output  of  3D
+               and  2D programs simultaniously), and that 3D will
+               probably drive your monitor at a lower resolution,
+               as well.  It's bizarre.
+
+               If  you  find  that GL programs only work properly
+               when run as root, and not as  normal  users,  then
+               the  problem  is  that  your _\b/_\bd_\be_\bv_\b/_\b3_\bd_\bf_\bx file is not
+               configured properly.  Check the Linux 3Dfx FAQ.
+
+       K\bKe\bey\byb\bbo\boa\bar\brd\bd L\bLE\bED\bDs\bs
+               If _\bp_\br_\bo_\bc_\bI_\bn_\bt_\be_\br_\br_\bu_\bp_\bt_\bs is on (which is the  default  on
+               Linux  systems) and you're using some program that
+               toggles the state of your keyboard LEDs,  xscreen-
+               saver  won't  work right: turning those LEDs on or
+               off causes a keyboard  interrupt,  which  xscreen-
+               saver  will  interpret  as  user  activity.  So if
+               you're using such a program,  set  the  _\bp_\br_\bo_\bc_\bI_\bn_\bt_\be_\br_\b-
+               _\br_\bu_\bp_\bt_\bs resource to False.
+
+       E\bEx\bxt\bte\ben\bns\bsi\bio\bon\bns\bs
+               If  you  are  not  making use of one of the server
+               extensions  (X\bXI\bID\bDL\bLE\bE,  S\bSG\bGI\bI  S\bSC\bCR\bRE\bEE\bEN\bN_\b_S\bSA\bAV\bVE\bER\bR,  or   M\bMI\bIT\bT-\b-
+               S\bSC\bCR\bRE\bEE\bEN\bN-\b-S\bSA\bAV\bVE\bER\bR), then it is possible, in rare situa-
+               tions, for _\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br to  interfere  with  event
+               propagation  and  make  another X program malfunc-
+               tion.  For this to occur, that  other  application
+               would  need  to  _\bn_\bo_\bt select K\bKe\bey\byP\bPr\bre\bes\bss\bs events on its
+               non-leaf windows within the first  30  seconds  of
+               their  existence,  but then select for them later.
+               In this case, that client _\bm_\bi_\bg_\bh_\bt  fail  to  receive
+               those  events.  This isn't very likely, since pro-
+               grams generally select a constant  set  of  events
+               immediately  after creating their windows and then
+               don't change them, but this  is  the  reason  that
+
+
+
+X Version 11             20-Jun-99 (3.15)                      24
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+               it's  a  good  idea  to install and use one of the
+               server extensions instead,  to  work  around  this
+               shortcoming in the X protocol.
+
+               In  all these years, I've not heard of even a sin-
+               gle case of this happening, but  it  is  theoreti-
+               cally possible, so I'm mentioning it for complete-
+               ness...
+
+       R\bRe\bed\bd H\bHo\bot\bt L\bLa\bav\bva\ba
+               There need to be a lot more  graphics  hacks.   In
+               particular,  there  should  be  a  simulation of a
+               Lavalite (tm).
+
+E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+       D\bDI\bIS\bSP\bPL\bLA\bAY\bY to get the default host and display number, and to
+               inform  the sub-programs of the screen on which to
+               draw.
+
+       P\bPA\bAT\bTH\bH    to find the sub-programs to run.
+
+       H\bHO\bOM\bME\bE    for the directory in which to read and  write  the
+               _\b._\bx_\bs_\bc_\br_\be_\be_\bn_\bs_\ba_\bv_\be_\br file.
+
+       X\bXE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+               to  get the name of a resource file that overrides
+               the global resources stored in  the  RESOURCE_MAN-
+               AGER property.
+
+U\bUP\bPG\bGR\bRA\bAD\bDE\bES\bS
+       The    latest    version    can   always   be   found   at
+       http://www.jwz.org/xscreensaver/
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       X\bX(1),    x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-d\bde\bem\bmo\bo(1),    x\bxs\bsc\bcr\bre\bee\ben\bns\bsa\bav\bve\ber\br-\b-c\bco\bom\bmm\bma\ban\bnd\bd(1),
+       x\bxd\bdm\bm(1),   x\bxs\bse\bet\bt(1),   X\bXs\bse\bec\bcu\bur\bri\bit\bty\by(1),   x\bxa\bau\but\bth\bh(1),   x\bxh\bho\bos\bst\bt(1).
+       a\ban\bnt\bt(1),    a\bat\btl\bla\ban\bnt\bti\bis\bs(1),    a\bat\btt\btr\bra\bac\bct\bti\bio\bon\bn(1),     b\bbl\bli\bit\bts\bsp\bpi\bin\bn(1),
+       b\bbo\bou\bub\bbo\bou\bul\ble\be(1),  b\bbr\bra\bai\bid\bd(1),  b\bbs\bso\bod\bd(1), b\bbu\bub\bbb\bbl\ble\be3\b3d\bd(1), b\bbu\bub\bbb\bbl\ble\bes\bs(1),
+       c\bca\bag\bge\be(1), c\bco\bom\bmp\bpa\bas\bss\bs(1),  c\bco\bor\bra\bal\bl(1),  c\bcr\bri\bit\bti\bic\bca\bal\bl(1),  c\bcr\bry\bys\bst\bta\bal\bl(1),
+       c\bcy\byn\bno\bos\bsu\bur\bre\be(1), d\bde\bec\bca\bay\bys\bsc\bcr\bre\bee\ben\bn(1), d\bde\bec\bco\bo(1), d\bde\bel\blu\bux\bxe\be(1), d\bde\bem\bmo\bon\bn(1),
+       d\bdi\bis\bsc\bcr\bre\bet\bte\be(1),  d\bdi\bis\bst\bto\bor\brt\bt(1),  d\bdr\bri\bif\bft\bt(1),  e\bep\bpi\bic\bcy\byc\bcl\ble\be(1),   f\bfa\bad\bde\be-\b-
+       p\bpl\blo\bot\bt(1), f\bfl\bla\bag\bg(1), f\bfl\bla\bam\bme\be(1), f\bfl\blo\bow\bw(1), f\bfo\bor\bre\bes\bst\bt(1), g\bga\bal\bla\bax\bxy\by(1),
+       g\bge\bea\bar\brs\bs(1),  g\bgl\blp\bpl\bla\ban\bne\bet\bt(1),  g\bgo\boo\bop\bp(1),  g\bgr\bra\bav\bv(1),  g\bgr\bre\bey\byn\bne\bet\bti\bic\bc(1),
+       h\bha\bal\blo\bo(1),   h\bhe\bel\bli\bix\bx(1),  h\bho\bop\bpa\bal\blo\bon\bng\bg(1),  h\bhy\byp\bpe\ber\brc\bcu\bub\bbe\be(1),  i\bif\bfs\bs(1),
+       i\bim\bms\bsm\bma\bap\bp(1), i\bin\bnt\bte\ber\brf\bfe\ber\bre\ben\bnc\bce\be(1),  j\bji\big\bgs\bsa\baw\bw(1),  j\bju\bul\bli\bia\ba(1),  k\bka\bal\ble\bei\bi-\b-
+       d\bde\bes\bsc\bco\bop\bpe\be(1),  k\bku\bum\bmp\bpp\bpa\ba(1), l\bla\bam\bme\ben\bnt\bt(1), l\bla\bas\bse\ber\br(1), l\bli\big\bgh\bht\btn\bni\bin\bng\bg(1),
+       l\bli\bis\bsa\ba(1),  l\bli\bis\bss\bsi\bie\be(1),  l\blm\bmo\bor\brp\bph\bh(1),  l\blo\boo\bop\bp(1),  m\bma\baz\bze\be(1),  m\bmo\boe\be-\b-
+       b\bbi\biu\bus\bs(1),  m\bmo\boi\bir\bre\be(1),  m\bmo\boi\bir\bre\be2\b2(1),  m\bmo\bor\brp\bph\bh3\b3d\bd(1),  m\bmo\bou\bun\bnt\bta\bai\bin\bn(1),
+       m\bmu\bun\bnc\bch\bh(1), n\bno\bos\bse\beg\bgu\buy\by(1), p\bpe\bed\bda\bal\bl(1), p\bpe\ben\bne\bet\btr\bra\bat\bte\be(1),  p\bpe\ben\bnr\bro\bos\bse\be(1),
+       p\bpe\bet\btr\bri\bi(1),   p\bph\bho\bos\bsp\bph\bho\bor\br(1),   p\bpi\bip\bpe\bes\bs(1),  p\bpu\bul\bls\bsa\bar\br(1),  p\bpy\byr\bro\bo(1),
+       q\bqi\bix\bx(1),  r\brd\bd-\b-b\bbo\bom\bmb\bb(1),  r\bro\boc\bck\bks\bs(1),  r\bro\bor\brs\bsc\bch\bha\bac\bch\bh(1),   r\bro\bot\bto\bor\br(1),
+       r\bru\bub\bbi\bik\bk(1),    s\bsi\bie\ber\brp\bpi\bin\bns\bsk\bki\bi(1),    s\bsl\bli\bid\bde\bes\bsc\bcr\bre\bee\ben\bn(1),    s\bsl\bli\bip\bp(1),
+       s\bso\bon\bna\bar\br(1),  s\bsp\bph\bhe\ber\bre\be(1),  s\bsp\bpi\bir\bra\bal\bl(1),  s\bsp\bpo\bot\btl\bli\big\bgh\bht\bt(1),   s\bsp\bpr\bro\boi\bin\bn-\b-
+       g\bgi\bie\bes\bs(1),  s\bsq\bqu\bui\bir\bra\bal\bl(1),  s\bst\bta\bai\bir\brs\bs(1), s\bst\bta\bar\brf\bfi\bis\bsh\bh(1), s\bst\btr\bra\ban\bng\bge\be(1),
+
+
+
+X Version 11             20-Jun-99 (3.15)                      25
+
+
+
+
+
+XScreenSaver(1)                                   XScreenSaver(1)
+
+
+       s\bsu\bup\bpe\ber\brq\bqu\bua\bad\bdr\bri\bic\bcs\bs(1),    s\bsw\bwi\bir\brl\bl(1),    t\bt3\b3d\bd(1),     t\btr\bri\bia\ban\bng\bgl\ble\be(1),
+       t\btr\bru\buc\bch\bhe\bet\bt(1),   v\bvi\bin\bne\bes\bs(1),   w\bwa\ban\bnd\bde\ber\br(1),  w\bwo\bor\brm\bm(1),  x\bxf\bfl\bla\bam\bme\be(1),
+       x\bxj\bja\bac\bck\bk(1),  x\bxl\bly\bya\bap\bp(1),  x\bxm\bma\bat\btr\bri\bix\bx(1),   x\bxr\bro\bog\bge\ber\br(1),   b\bbo\bon\bng\bgo\bo(1),
+       i\bic\bco\bo(1),   x\bxa\bao\bos\bs(1),   x\bxb\bbo\bou\bun\bnc\bce\beb\bbi\bit\bts\bs(1),  x\bxc\bct\bth\bhu\bug\bgh\bha\ba(1),  x\bxd\bda\bal\bli\bi-\b-
+       c\bcl\blo\boc\bck\bk(1),  x\bxf\bfi\bis\bsh\bht\bta\ban\bnk\bk(1),   x\bxm\bmo\bou\bun\bnt\bta\bai\bin\bns\bs(1),   x\bxs\bsp\bpl\bli\bin\bne\bef\bfu\bun\bn(1),
+       x\bxs\bsw\bwa\bar\brm\bm(1), x\bxt\bta\bac\bcy\by(1), x\bxv\bv(1), x\bxw\bwa\bav\bve\be(1).
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Copyright  (C)  1991,  1992, 1993, 1994, 1995, 1996, 1997,
+       1998, 1999 by Jamie Zawinski.  Permission  to  use,  copy,
+       modify,  distribute,  and sell this software and its docu-
+       mentation 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  per-
+       mission  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.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Jamie Zawinski <jwz@jwz.org>.  Written in late 1991; first
+       posted to comp.sources.x on 13-Aug-1992.
+
+       Please  let  me  know  if  you  find  any bugs or make any
+       improvements.
+
+A\bAC\bCK\bKN\bNO\bOW\bWL\bLE\bED\bDG\bGE\bEM\bME\bEN\bNT\bTS\bS
+       Thanks to the many people who  have  contributed  graphics
+       demos to the package.
+
+       Thanks to David Wojtowicz for implementing _\bl_\bo_\bc_\bk_\bT_\bi_\bm_\be_\bo_\bu_\bt.
+
+       Thanks  to  Martin  Kraemer  for adding support for shadow
+       passwords and locking-disabled diagnostics.
+
+       Thanks to Patrick Moreau for the VMS port.
+
+       Thanks to Mark Bowyer for figuring out how to hook  it  up
+       to CDE.
+
+       Thanks to Nat Lanza for the Kerberos support.
+
+       Thanks to Bill Nottingham for the initial PAM support.
+
+       And  thanks  to  Jon  A.  Christopher for implementing the
+       Athena dialog support, back in the days before Lesstif  or
+       Gtk were viable alternatives to Motif.
+
+
+
+
+
+
+
+
+
+
+X Version 11             20-Jun-99 (3.15)                      26
+
+
diff --git a/local/man/man.1/attraction.1 b/local/man/man.1/attraction.1
new file mode 100644 (file)
index 0000000..fabdc8a
--- /dev/null
@@ -0,0 +1,178 @@
+.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 "14-Jun-97" "X Version 11"
+.SH NAME
+attraction - interactions of opposing forces
+.SH SYNOPSIS
+.B attraction
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-points \fIint\fP] [\-threshold \fIint\fP] [\-mode balls | lines | polygons | splines | filled-splines | tails ] [\-size \fIint\fP] [\-segments \fIint\fP] [\-delay \fIusecs\fP] [\-color-shift \fIint\fP] [\-radius \fIint\fP] [\-vx \fIint\fP] [\-vy \fIint\fP] [\-glow] [\-noglow] [\-orbit] [\-viscosity \fIfloat\fP] [\-mouse] [\-no-mouse] [\-mouse-size]
+.SH DESCRIPTION
+The \fIattraction\fP program has several visually different modes of 
+operation, all of which are based on the interactions of a set of control
+points which attract each other up to a certain distance, and then begin
+to repel each other.  The attraction/repulsion is proportional to the 
+distance between any two particles.
+.SH OPTIONS
+.I attraction
+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 \-points integer
+How many control points should be used, or 0 to select the number randomly.
+Default 0.  Between 3 and 15 works best.
+.TP 8
+.B \-threshold integer
+The distance (in pixels) from each particle at which the attractive force
+becomes repulsive.  Default 100.
+.TP 8
+.B \-mode "balls | lines | polygons | tails | splines | filled-splines"
+In \fIballs\fP mode (the default) the control points are drawn as filled
+circles.  The larger the circle, the more massive the particle.
+
+In \fIlines\fP mode, the control points are connected by straight lines;
+the effect is something like \fIqix\fP.
+
+In \fIpolygons\fP mode, the control points are connected by straight
+lines, and filled in.  This is most interesting in color.
+
+In \fIsplines\fP mode, a closed spline is interpolated from the control 
+points.
+
+In \fIfilled-splines\fP mode, the splines are filled in instead of being
+outlines.  This is most interesting in color.
+
+In \fItails\fP mode, the path which each particle follows is indicated
+by a worm-like trail, whose length is controlled by the \fIsegments\fP
+parameter.
+.TP 8
+.B \-size integer
+The size of the balls in pixels, or 0, meaning to select the sizes 
+randomly (the default.)  If this is specified, then all balls will be 
+the same size.  This option has an effect in all modes, since the ``size''
+of the balls controls their mass.
+.TP 8
+.B \-segments integer
+If in \fIlines\fP or \fIpolygons\fP mode, how many sets of line segments
+or polygons should be drawn. Default 100.  This has no effect in \fIballs\fP
+mode.  If \fIsegments\fP is 0, then no segments will ever be erased (this
+is only useful in color.)
+.TP 8
+.B \-delay microseconds
+How much of a delay should be introduced between steps of the animation.
+Default 10000, or about 0.01 seconds.
+.TP 8
+.B \-color-shift int
+If on a color display, the color of the line segments or polygons will 
+cycle through the color map.  This specifies how many lines will be drawn
+before a new color is chosen.  (When a small number of colors are available,
+increasing this value will yield smoother transitions.)  Default 3.
+This has no effect in \fIballs\fP mode.
+.TP 8
+.B \-radius
+The size in pixels of the circle on which the points are initially positioned.
+The default is slightly smaller than the size of the window.
+.TP 8
+.B \-glow
+This is consulted only in \fIballs\fP mode.  If this is specified, then 
+the saturation of the colors of the points will vary according to their
+current acceleration.  This has the effect that the balls flare brighter
+when they are reacting to each other most strongly.
+
+In \fIglow\fP mode, all of the balls will be drawn the same (random)
+color, modulo the saturation shifts.  In non-glow mode, the balls will
+each be drawn in a random color that doesn't change.
+.TP 8
+.B \-noglow
+Don't do ``glowing.''  This is the default.
+.TP 8
+.B \-vx pixels
+.TP 8
+.B \-vy pixels
+Initial velocity of the balls.  This has no effect in \fB\-orbit\fP mode.
+.TP 8
+.B \-orbit
+Make the initial force on each ball be tangential to the circle on which
+they are initially placed, with the right velocity to hold them in orbit
+about each other.  After a while, roundoff errors will cause the orbit
+to decay.
+.TP 8
+.B \-vmult float
+In orbit mode, the initial velocity of the balls is multiplied by this;
+a number less than 1 will make the balls pull closer together, and a larger
+number will make them move apart.  The default is 0.9, meaning a slight
+inward pull.
+.TP 8
+.B \-viscosity float
+This sets the viscosity of the hypothetical fluid through which the control
+points move; the default is 1, meaning no resistance.  Values higher than 1
+aren't interesting; lower values cause less motion.
+
+One interesting thing to try is
+.EX
+attraction -viscosity 0.8 -points 75 \\
+  -mouse -geometry =500x500
+.EE
+Give it a few seconds to settle down into a stable clump, and then move
+the mouse through it to make "waves".
+.TP 8
+.B \-mouse
+This will cause the mouse to be considered a control point; it will not be
+drawn, but it will influence the other points, so you can wave the mouse
+and influence the images being created.
+.TP 8
+.B \-no-mouse
+Turns off \fB\-mouse\fP.
+.TP 8
+.B \-mouse-size integer
+In \fB\-mouse\fP mode, this sets the mass of the mouse (analagously to the
+\fB\-size\fP parameter.)
+.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 1992, 1993, 1997 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 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>, 13-aug-92.
+
+Viscosity and mouse support by Philip Edward Cutone, III.
diff --git a/local/man/man.1/blitspin.1 b/local/man/man.1/blitspin.1
new file mode 100644 (file)
index 0000000..f374666
--- /dev/null
@@ -0,0 +1,106 @@
+.TH XScreenSaver 1 "24-Nov-97" "X Version 11"
+.SH NAME
+blitspin - rotate a bitmap in an interesting way
+.SH SYNOPSIS
+.B blitspin
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-bitmap \fIfilename\fP] [\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP]
+.SH DESCRIPTION
+The \fIblitspin\fP program repeatedly rotates a bitmap by 90 degrees by
+using logical operations: the bitmap is divided into quadrants, and the
+quadrants are shifted clockwise.  Then the same thing is done again with
+progressively smaller quadrants, except that all sub-quadrants of a 
+given size are rotated in parallel.  So this takes \fBO(16*log2(N))\fP 
+blits of size NxN, with the limitation that the image must be square,
+and the size must be a power of 2.
+.SH OPTIONS
+.I blitspin
+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 \-bitmap \fIfilename\fP
+The file name of a bitmap to rotate.  It need not be square: it 
+will be padded with the background color.  If unspecified or the
+string \fI(default)\fP, a builtin bitmap is used.
+
+If support for the \fIXPM\fP library was enabled at compile-time, 
+the specified file may be in \fIXPM\fP format as well as \fIXBM\fP, and 
+thus may be a color image.
+
+The \fB*bitmapFilePath\fP resource will be searched if the bitmap
+name is not a fully-qualified pathname.
+.TP 8
+.B \-grab\-screen
+If this option is specified, then the image which is spun will be grabbed
+from the portion of the screen underlying the blitspin window.  (Or, it
+may come from an external video source: see below.)
+.PP
+.TP 8
+.B \-delay \fImicroseconds\fP
+How long to delay between steps of the rotation process, in microseconds.
+Default is 500000, one-half second.
+.PP
+.TP 8
+.B \-delay2 \fImicroseconds\fP
+How long to delay between each 90-degree rotation, in microseconds.
+Default is 500000, one-half second.
+.B DISPLAY
+to get the default host and display number.
+.SH RESOURCES
+On some systems (currently, only SGIs), this program can, instead of grabbing
+a desktop image, grab a frame of video from an external camera and manipulate
+that instead.  The following resources control that.
+.PP
+.TP 8
+.B grabVideoProbability \fR(Float)\fP
+What portion of the time to grab video rather than a screen image, 
+between 0.0 and 1.0.  Defaults to 0.5, or half the time.
+.TP 8
+.B videoDevice \fR(Integer)\fP
+The number of the default video input device to check first.  If unspecified, 
+the default camera (from videopanel(1)) will be checked first.  After that, all
+other available video input devices will be checked in order.  
+
+The first one which produces a non-black image will be used.  If all images
+are black, the others will be re-checked a few times before giving up and
+falling back to simply grabbing a desktop image (but note that this takes a
+few seconds, so if you don't actually have any video sources hooked up, you
+should consider turning off video grabbing by setting
+\fBgrabVideoProbability\fP to 0.0.)
+.TP 8
+.B videoGain \fR(Float)\fP
+The amount by which to brighten the grabbed image.  This defaults to 2.2.
+.SH ENVIRONMENT
+.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 1992, 1993, 1997 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 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>, 17-aug-92.
+
+Based on SmallTalk code which appeared in the August 1981 issue of Byte
+magazine.
diff --git a/local/man/man.1/bouboule.1 b/local/man/man.1/bouboule.1
new file mode 100644 (file)
index 0000000..b2a8df2
--- /dev/null
@@ -0,0 +1,76 @@
+.TH XScreenSaver 1 "15-May-97" "X Version 11"
+.SH NAME
+bouboule - draws spinning 3D blobs
+.SH SYNOPSIS
+.B bouboule
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-3d]
+
+.SH DESCRIPTION
+The \fIbouboule\fP program draws spinning 3D blobs.
+.SH OPTIONS
+.I bouboule
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors used cycle through the hue, making N stops around
+the color wheel.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.TP 8
+.B \-3d
+Do red/blue 3d separations (for 3d glasses.)
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1996 by Jeremie Petit.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Jeremie Petit <jpetit@essi.fr>, 1996.
+
+3D support by Henrik Theiling <theiling@coli-uni-sb.de>, 04-Sep-96.
+
+VMS support by Jouk Jansen <joukj@alpha.chem.uva.nl>, 01-Feb-96.
+
+TrueColor support by David Bagley <bagleyd@bigfoot.com>, 01-Feb-96.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 15-May-97.
diff --git a/local/man/man.1/braid.1 b/local/man/man.1/braid.1
new file mode 100644 (file)
index 0000000..65637af
--- /dev/null
@@ -0,0 +1,65 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+braid - draws random color-cycling braids around a circle
+.SH SYNOPSIS
+.B braid
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+
+.SH DESCRIPTION
+The \fIbraid\fP program draws random color-cycling braids around a circle.
+.SH OPTIONS
+.I braid
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors used cycle through the hue, making N stops around
+the color wheel.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1995 by John Neil.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+John Neil <neil@math.idbsu.edu>, 29-Aug-95.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/bsod.1 b/local/man/man.1/bsod.1
new file mode 100644 (file)
index 0000000..63bcee6
--- /dev/null
@@ -0,0 +1,126 @@
+.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 "28-Oct-98" "X Version 11"
+.SH NAME
+bsod - Blue Screen of Death emulator
+.SH SYNOPSIS
+.B bsod
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
+[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
+[\-visual \fIvisual\fP] [\-delay \fIseconds\fP]
+.SH DESCRIPTION
+The
+.I bsod
+program is the finest in personal computer emulation.  
+.PP
+.I bsod
+steps through a set of screens, each one a recreation of a different failure
+mode of an operating system.  Systems depicted include Microsoft's Windows 95
+and Windows NT, Commodore-Amiga's AmigaDOS 1.3, SPARC Linux, SCO UNIX, the
+Apple Macintosh (both the MacsBug debugger and the rarer "Sad Mac"), and the
+Atari ST.
+.PP
+.SH OPTIONS
+.I bsod
+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 \fIdelay\fP
+The delay between displaying one crash and another.
+.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 X RESOURCES
+Notable X resources supported include the following, which control which
+hacks are displayed and which aren't.
+.BR doWindows ,
+.BR doNT ,
+.BR doAmiga ,
+.BR doMac ,
+.BR doMacsBug ,
+.BR doSCO ,
+.BR doAtari ,
+and
+.BR doSparcLinux .
+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.
+There aren't command-line options for these, so to change them, you'll need
+to add entries to your .Xdefaults file, or use the -xrm option.
+For example, to tell bsod not to show the NT crash:
+.EX
+bsod -xrm '*doNT: false'
+.EE
+.SH BUGS
+Unlike the systems that the images are borrowed from,
+.I bsod
+does not require a reboot after running.
+.PP
+.I bsod
+should also emulate more systems, but systems with interesting crash
+graphics are not as common as one might hope.
+
+One I'd really like to see is a Unix system getting a kernel panic, 
+rebooting, and running
+.BR fsck (8).
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1),
+.BR http://www.microsoft.com/ ,
+.BR http://www.apple.com/ ,
+and
+.BR http://www.sco.com/ ,
+.BR http://www.kernel.org/ ,
+and
+.BR http://www.amiga.de/ .
+.SH TRADEMARKS
+Microsoft Windows, Microsoft Windows 95, and Microsoft Windows NT are all
+registered trademarks of Microsoft Corporation.  Apple Macintosh is a
+registered trademark of Apple Computer.  Amiga is a registered trademark of
+Amiga International, Inc.  Atari ST is probably a trademark, too, but it's
+hard to tell who owns it. Linux is a registered trademark of Linus Torvalds,
+but it isn't his fault.
+.SH COPYRIGHT
+Copyright \(co 1998 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 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.  No animals were harmed during the testing of
+these simulations.  Always mount a scratch monkey.
+.SH AUTHOR
+Concept cribbed from Stephen Martin <smartin@mks.com>.  This version is by
+Jamie Zawinski <jwz@jwz.org>.
diff --git a/local/man/man.1/bubbles.1 b/local/man/man.1/bubbles.1
new file mode 100644 (file)
index 0000000..c9016e6
--- /dev/null
@@ -0,0 +1,142 @@
+.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 "14-Dec-95" "X Version 11"
+.SH NAME
+bubbles - frying pan / soft drink simulation
+.SH SYNOPSIS
+.B bubbles
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-simple] [\-broken] [\-3D] [\-file filename] [\-directory directoryname]
+.SH DESCRIPTION
+\fIBubbles\fP sprays lots of little random bubbles all over the window which
+then grow until they reach their maximum size and go pop.  The inspiration
+for this was watching little globules of oil on the bottom of a frying pan
+and it also looks a little like bubbles in fizzy soft drink.  The default
+mode uses fancy ray-traced bubbles but there is also a mode which just draws 
+circles in case the default mode is too taxing on your hardware.
+.SH OPTIONS
+Depending on how your
+.I bubbles
+was compiled, it accepts the following options:
+.TP 8
+.B \-foreground
+Colour of circles if \fI\-simple\fP mode is selected.
+.TP 8
+.B \-background
+Colour of window background.
+.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 microseconds
+How much of a delay should be introduced between steps of the animation.
+Default 1, or about 1 microsecond.  Actually, this is the delay between each
+group of 15 new bubbles since such a delay between each step results in a
+very slow animation rate.
+.TP 8
+.B \-nodelay
+Same as \fI\-delay 0\fP.
+.TP 8
+.B \-simple
+Don't use the default fancy pixmap bubbles.  Just draw circles instead.
+This may give more bearable performance if your hardware wasn't made for
+this sort of thing.
+.TP 8
+.B \-broken
+Don't hide bubbles when they pop.  This was a bug during development
+but the results were actually quite attractive.  (This option is only
+available if you have the XPM library available and the imake generated
+Makefile has defined HAVE_XPM).
+.TP 8
+.B \-3D
+Normally, the simulation is done completely in two dimensions.  When a
+bubble swallows up another bubble, the areas of each are added to get
+the area of the resulting bubble.  This option changes the algorithm
+to instead add volume (imagining each to be a sphere in 3D space).  The
+whole thing looks more realistic but I find it attracts attention to
+the flickering of each bubble as they are move and are redrawn.  Your
+mileage may vary.
+.TP 8
+.B \-file filename
+Use the pixmap definitions in the given file, instead of the default (if
+one is compiled in).  This is ignored if \fI\-simple\fP is specified.  If
+the file is compressed (either with compress or gzip), it is decompressed
+before use.  (This option only works if you have XPM compiled into your
+binary and you have compiled with BUBBLES_IO set in bubbles.h.  This is
+\fBnot\fP the default).
+.TP 8
+.B \-directory directoryname
+Similar to \fI-file\fP except the file is taken randomly from the
+contents of the specified directory.  (Again, this option is only available
+if you have XPM and BUBBLES_IO was set when compiling.  See above).
+.TP 8
+.B \-quiet
+Don't print messages explaining why one or several command line options
+were ignored.  This is disabled by default.
+.SH NOTES
+If you find the pace of things too slow, remember that there is a delay
+even though you specify no \fI\-delay\fP option.  Try using \fI\-nodelay\fP
+although beware of the effects of irritation of other users if you're on a 
+shared system as you bleed their CPU time away.
+
+Some tools to assist in creation of new bubbles are included in the source
+distribution.  These can either be loaded with the \fI\-file\fP or
+\fI\-directory\fP options (if available) or they can be used in place
+of the distributed default bubble (bubble_default.c).
+You might like to copy these scripts to a permanent location and
+use them.  Read bubbles.README.
+
+Rendered bubbles are not supported on monochrome displays.  I'm not
+convinced that small bubbles, even dithered properly are going to look
+like anything more than a jumble of random dots.
+.SH BUGS
+There is a delay before something appears on the screen when using
+rendered bubbles.  The XPM library seems to take a \fBlong\fP time to make
+pixmaps out of raw data.  This can be irritating on slower systems.
+
+The movement of the bubbles looks jerky if an incomplete set of bubbles
+is used.  
+
+The hide/display algorithm could do with some work to avoid flickering
+when \fI\-nodelay\fP is set.
+.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 DISTRIBUTION POLICY
+This work is Copyright \(co 1995, 1996 by James Macnicol.  Distribution is
+allowed under the terms of the GNU General Public License.  Look at the
+sources for the legalese.
+.SH AUTHOR
+James Macnicol <J.Macnicol@student.anu.edu.au>.  
diff --git a/local/man/man.1/critical.1 b/local/man/man.1/critical.1
new file mode 100644 (file)
index 0000000..21eec6a
--- /dev/null
@@ -0,0 +1,87 @@
+.TH XScreenSaver 1 "13-Nov-98" "X Version 11"
+.SH NAME
+critical - Draw a system showing self-organizing criticality
+.SH SYNOPSIS
+.B critical
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-random \fIboolean\fP] [\-ncolors \fIint\fP] [\-offset \fIint\fP] 
+.SH DESCRIPTION
+The \fIcritical\fP program displays a self-organizing critical system
+that gradually emerges from chaos.
+
+\fIcritical\fP performs a simulation on a two-dimensional array of
+integers.  The array is initialized to random values.  On each
+iteration, it draws a line to the array position with the greatest
+value.  It then replaces that location and the eight neighboring
+locations with randomly-selected values.
+
+The lines are initially random, but over time a chaotic
+self-organizing system evolves: areas of the screen which happen to
+have lower values are less likely to be updated to new values, and so
+the line tends to avoid those areas.  Eventually, the histogram of
+changes approaches the power-law curve typical of such systems.
+
+The simplest documented self-organizing system is the one-dimensional
+equivalent of \fIcritical\fP.
+
+I heard about this algorithm second-hand: apparently there was an
+article in \fIScientific American\fP describing it sometime in 1997.
+.SH OPTIONS
+.I critical
+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 \fIusecs\fP
+Number of microseconds to wait after drawing each line.
+.TP 8
+.B \-random \fIboolean\fP
+Whether to use randomly selected colours rather than a cycle around
+the colour wheel.
+.TP 8
+.B \-offset \fIinteger\fP
+The maximum random radius increment to use.
+.TP 8
+.B \-ncolors \fIinteger\fP
+How many colors should be allocated in the color ramp (note that this
+value interacts with \fIoffset\fP.)
+.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)
+.BR xscreensaver-command (1)
+.BR xscreensaver-demo (1)
+.SH COPYRIGHT
+Copyright \(co 1998 by Martin Pool.
+
+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
+Martin Pool <mbp@humbug.org.au>, 13-Nov-1998.  Based in part on the
+XScreenSaver code by Jamie Zawinski <jwz@jwz.org>.
diff --git a/local/man/man.1/decayscreen.1 b/local/man/man.1/decayscreen.1
new file mode 100644 (file)
index 0000000..8dc0a0e
--- /dev/null
@@ -0,0 +1,88 @@
+.TH XScreenSaver 1 "05-Apr-1999" "X Version 11"
+.SH NAME
+decayscreen - make a screen meltdown.
+.SH SYNOPSIS
+.B decayscreen
+[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-mode \fImode\fP]
+.SH DESCRIPTION
+The \fIdecayscreen\fP program creates a melting effect by randomly
+shifting rectangles around the screen.
+.SH OPTIONS
+.I decayscreen
+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
+Slow it down.
+.TP 8
+.B \-mode \fImode\fP
+The direction in which the image should tend to slide.  Legal values are
+\fIrandom\fP (meaning pick one), \fIup\fP, \fIleft\fP, \fIright\fP, 
+\fIdown\fP, \fIupleft\fP, \fIdownleft\fP, \fIupright\fP, \fIdownright\fP, 
+\fIshuffle\fP (meaning perfer no particular direction), \fIin\fP (meaning
+move things toward the center), \fIout\fP (meaning move things away
+from the center), \fImelt\fP (meaning melt straight downward), and \fIstretch\fP 
+(meaning stretch the screen downward).
+.SH RESOURCES
+On some systems (currently, only SGIs), this program can, instead of grabbing
+a desktop image, grab a frame of video from an external camera and manipulate
+that instead.  The following resources control that.
+.PP
+.TP 8
+.B grabVideoProbability \fR(Float)\fP
+What portion of the time to grab video rather than a screen image, 
+between 0.0 and 1.0.  Defaults to 0.5, or half the time.
+.TP 8
+.B videoDevice \fR(Integer)\fP
+The number of the default video input device to check first.  If unspecified, 
+the default camera (from videopanel(1)) will be checked first.  After that, all
+other available video input devices will be checked in order.  
+
+The first one which produces a non-black image will be used.  If all images
+are black, the others will be re-checked a few times before giving up and
+falling back to simply grabbing a desktop image (but note that this takes a
+few seconds, so if you don't actually have any video sources hooked up, you
+should consider turning off video grabbing by setting
+\fBgrabVideoProbability\fP to 0.0.)
+.TP 8
+.B videoGain \fR(Float)\fP
+The amount by which to brighten the grabbed image.  This defaults to 2.2.
+.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"
+X(1),
+xscreensaver(1)
+.SH COPYRIGHT
+Copyright 1992 by Vivek Khera.  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
+Vivek Khera <khera@cs.duke.edu>, 05-Aug-93; based on code by David Wald, 1988.
+Modified by jwz, 28-Nov-97.  Modified by Rick Schultz <rick@skapunx.net> 05-Apr-1999.
+
diff --git a/local/man/man.1/deco.1 b/local/man/man.1/deco.1
new file mode 100644 (file)
index 0000000..5f8a6fc
--- /dev/null
@@ -0,0 +1,72 @@
+.TH XScreenSaver 1 "27-Apr-97" "X Version 11"
+.SH NAME
+deco - draw tacky 70s basement wall panelling
+.SH SYNOPSIS
+.B deco
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-max\-depth \fIint\fP] [\-min\-width \fIint\fP] [\-min\-height \fIint\fP] [\-cycle] [\-no\-cycle] [\-cycle\-delay]
+.SH DESCRIPTION
+The \fIdeco\fP program subdivides and colors rectangles randomly.
+It looks kind of like Brady-Bunch-era rec-room wall paneling.
+(Raven says: "this screensaver is ugly enough to peel paint.")
+.SH OPTIONS
+.I deco
+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 \fIseconds\fP
+How long to wait before starting over.  Default 5 seconds.
+.TP 8
+.B \-max\-depth \fIinteger\fP
+How deep to subdivide.  Default 12.
+Default 8.
+.TP 8
+.B \-min-width \fIinteger\fP
+.B \-min-height \fIinteger\fP
+The size of the smallest rectangle to draw.  Default 20x20.
+.TP 8
+.B \-cycle
+.TP 8
+.B \-no\-cycle
+Whether to do color cycling.  Default False.
+.TP 8
+.B \-cycle\-delay \fIusecs\fP
+If color cycling, how often to change the colors.  Default 1000000,
+or 1 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 1997 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 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>, 26-Apr-97, based on code by
+Michael D. Bayne <mdb@go2net.com>.
diff --git a/local/man/man.1/drift.1 b/local/man/man.1/drift.1
new file mode 100644 (file)
index 0000000..407f06a
--- /dev/null
@@ -0,0 +1,75 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+drift - draws drifting recursive fractal cosmic flames
+.SH SYNOPSIS
+.B drift
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP] [\-grow] [\-no\-grow] [\-liss] [\-no\-liss]
+
+.SH DESCRIPTION
+The \fIdrift\fP program draws drifting recursive fractal cosmic flames
+.SH OPTIONS
+.I drift
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+The colors used cycle through the hue, making N stops around
+the color wheel.
+.TP 8
+.B \-count \fIinteger\fP
+
+.TP 8
+.B \-grow
+.TP 8
+.B \-no\-grow
+Whether fractals should grow; otherwise, they are animated.
+
+.TP 8
+.B \-liss
+.TP 8
+.B \-no\-liss
+Whether we should use lissojous figures to get points.
+
+.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 flame (1),
+.BR X (1),
+.BR xscreensaver (1),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1991, 1995 by Scott Draves.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Scott Draves <spot@cs.cmu.edu>, 06-Jun-91, 01-Jun-95.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/epicycle.1 b/local/man/man.1/epicycle.1
new file mode 100644 (file)
index 0000000..3af0ed5
--- /dev/null
@@ -0,0 +1,200 @@
+.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 "27-Apr-97" "X Version 11"
+.SH NAME
+epicycle - draws a point moving around a circle which moves around a cicle which...
+.SH SYNOPSIS
+.B epicycle 
+[\-display \fIhost:display.screen\fP] [\-root] [\-window] [\-mono] [\-install] [\-noinstall] [\-visual \fIviz\fP] [\-colors \fIN\fP] [\-foreground \fIname\fP] [\-color\-shift \fIN\fP] [\-delay \fImicroseconds\fP] [\-holdtime \fIseconds\fP] [\-linewidth \fIN\fP] [\-min_circles \fIN\fP] [\-max_circles \fIN\fP] [\-min_speed \fInumber\fP] [\-max_speed \fInumber\fP] [\-harmonics \fIN\fP] [\-timestep \fInumber\fP] [\-divisor_poisson \fIprobability\fP] [\-size_factor_min \fInumber\fP] [\-size_factor_max \fInumber\fP]
+.SH DESCRIPTION
+The epicycle program draws the path traced out by a point on the edge
+of a circle.  That circle rotates around a point on the rim of another
+circle, and so on, several times.  The random curves produced can be
+simple or complex, convex or concave, but they are always closed
+curves (they never go in indefinitely).
+
+You can configure both the way the curves are drawn and the way in
+which the random sequence of circles is generated, either with
+command-line options or X resources.
+.SH OPTIONS
+.TP 8
+.B \-display \fIhost:display.screen\fP
+Specifies which X display we should use (see the section DISPLAY NAMES in
+.BR X (1)
+for more information about this option).
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-mono
+If on a color display, pretend we're on a monochrome display.
+If we're on a mono display, we have no choice.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-noinstall
+Don't install a private colormap for the window.
+.TP 8
+.B \-visual \fIviz\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.
+Possible choices include
+
+.RS
+default, best, mono, monochrome, gray, grey, color, staticgray, staticcolor, 
+truecolor, grayscale, greyscale, pseudocolor, directcolor, \fInumber\fP
+
+If a decimal or hexadecimal number is used, 
+.BR XGetVisualInfo (3X)
+is consulted to obtain the required visual.
+.RE
+.TP 8
+.B \-colors \fIN\fP
+How many colors should be used (if possible).  The colors are chosen
+randomly.
+.TP 8
+.B \-foreground \fIname\fP
+With 
+.BR \-mono ,
+this option selects the foreground colour.   
+.TP 8
+.B \-delay \fImicroseconds\fP
+Specifies the delay between drawing successive line segments of the
+path.   If you do not specify 
+.BR -sync ,
+some X servers may batch up several drawing operations together,
+producing a less smooth effect.   This is more likely to happen 
+in monochrome mode (on monochrome servers or when 
+.B \-mono 
+is specified).
+.TP 8
+.B \-holdtime \fIseconds\fP
+When the figure is complete, 
+.I epicycle
+pauses this number of seconds.
+.TP 8
+.B \-linewidth \fIN\fP
+Width in pixels of the body's track.   Specifying values greater than
+one may cause slower drawing.   The fastest value is usually zero,
+meaning one pixel.   
+.TP 8
+.B \-min_circles \fIN\fP
+Smallest number of epicycles in the figure.
+.TP 8
+.B \-max_circles \fIN\fP
+Largest number of epicycles in the figure.
+.TP 8
+.B \-min_speed \fInumber\fP
+Smallest possible value for the base speed of revolution of the
+epicycles.  The actual speeds of the epicycles vary from this down
+to
+.IB "min_speed / harmonics" .
+.TP 8
+.B \-max_speed \fInumber\fP
+Smallest possible value for the base speed of revolution of the 
+epicycles.
+.TP 8
+.B \-harmonics \fIN\fP
+Number of possible harmonics; the larger this value is, the greater
+the possible variety of possible speeds of epicycle.
+.TP 8
+.B \-timestep \fInumber\fP
+Decreasing this value will reduce the distance the body moves for
+each line segment, possibly producing a smoother figure.  Increasing
+it may produce faster results.  
+.TP 8
+.B \-divisor_poisson \fIprobability\fP
+Each epicycle rotates at a rate which is a factor of the base speed.
+The speed of each epicycle is the base speed divided by some integer
+between 1 and the value of the 
+.B \-harmonics 
+option.  This integer is decided by starting at 1 and tossing 
+a biased coin.  For each consecutive head, the value is incremented by
+one.  The integer will not be incremented above the value of the 
+.B \-harmonics
+option.  The argument of this option decides the bias of the coin; it
+is the probability that that coin will produce a head at any given toss.
+.TP 8
+.B \-size_factor_min \fInumber\fP
+Epicycles are always at least this factor smaller than their
+parents.  
+.TP 8
+.B \-size_factor_max \fInumber\fP
+Epicycles are never more than this factor smaller than their parents.
+.SH RESOURCES
+.EX
+Option            Resource               Default Value
+------            --------               -------------
+-colors           .colors                100
+-delay            .delay                 1000
+-holdtime         .holdtime              2
+-linewidth        .lineWidth             4
+-min_circles      .minCircles            2
+-max_circles      .maxCircles            10
+-min_speed        .minSpeed              0.003
+-max_speed        .maxSpeed              0.005
+-harmonics        .harmonics             8
+-timestep         .timestep              1.0
+-divisor_poisson  .divisorPoisson        0.4
+-size_factor_min  .sizeFactorMin         1.05
+-size_factor_max  .sizeFactorMax         2.05
+                  .timestepCoarseFactor  1.0
+.EE
+Before the drawing of the figure is begun, a preliminary calculation
+of the path is done in order to scale the radii of the epicycles so
+as to fit the figure on the screen or window.  For the sake of speed,
+This calculation is done with a larger timestep than the actual
+drawing.  The time-step used is the value of the
+.B \-timestep 
+option multiplied by the timestepCoarseFactor resource.  The default
+value of 1 will almost always work fast enough and so this resource
+is not available as a command-line option.
+.SH USER INTERFACE
+The program runs mostly without user interaction.  When running on the
+root window, no input is accepted.  When running in its own window,
+the program will exit if mouse button 3 is pressed.  If any other
+mouse button is pressed, the current figure will be abandoned and
+another will be started.
+.SH HISTORY
+The geometry of epicycles was perfected by Hipparchus of Rhodes at
+some time around 125 B.C., 185 years after the birth of Aristarchus of
+Samos, the inventor of the heliocentric universe model.  Hipparchus
+applied epicycles to the Sun and the Moon.  Ptolemy of Alexandria went
+on to apply them to what was then the known universe, at around 150
+A.D.  Copernicus went on to apply them to the heliocentric model at
+the beginning of the sixteenth century.  Johannes Kepler discovered
+that the planets actually move in elliptical orbits in about 1602.
+The inverse-square law of gravity was suggested by Boulliau in 1645.
+Isaac Newton's 
+.I Principia Mathematica
+was published in 1687, and proved that Kepler's laws derived from
+Newtonian gravitation.
+.SH BUGS
+The colour selection is re-done for every figure.  This may 
+generate too much network traffic for this program to work well 
+over slow or long links.   
+.SH COPYRIGHT
+Copyright \(co 1998, James Youngman.  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
+James Youngman <jay@gnu.org>, April 1998.
diff --git a/local/man/man.1/flag.1 b/local/man/man.1/flag.1
new file mode 100644 (file)
index 0000000..1c7d93b
--- /dev/null
@@ -0,0 +1,88 @@
+.TH XScreenSaver 1 "24-May-97" "X Version 11"
+.SH NAME
+flag - draws a waving flag, containing text or an image
+.SH SYNOPSIS
+.B flag
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-size \fIinteger\fP] [\-text \fIstring\fP] [\-font \fIfont\fP] [\-bitmap \fIxbm-file\fP]
+
+.SH DESCRIPTION
+The \fIflag\fP program draws a waving flag that contains text or a bitmap.
+.SH OPTIONS
+.I flag
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.TP 8
+.B \-size \fIinteger\fP
+How large the pixels in the flag should be, from 1 to 8.
+If this is a negative number, the pixel size is chosen randomly
+from the range 1 to -size.  Default -7.
+.TP 8
+.B \-text \fItext\fP
+The text to display in the flag.  Multiple lines of text are allowed;
+the lines will be displayed centered atop one another.  Default: none.
+If the text is the magic string \fI"(default)"\fP, then the text used 
+will be the local machine name; a newline; and the local OS version.
+.TP 8
+.B \-bitmap \fIxbm-file\fP
+The bitmap to display in the flag; this must be an XBM file (color XPMs
+are not allowed.)  Default: none.  If the bitmap is the magic 
+string \fI"(default)"\fP, then the bitmap used will be a charming 
+little picture of J. R. "Bob" Dobbs.
+
+If neither \fI\-text\fP nor \fI\-bitmap\fP are specified, then either
+the builtin text or the builtin bitmap will be chosen randomly.
+.TP 8
+.B \-font \fIfont\fP
+The font in which to draw the text; the default is
+"-*-helvetica-bold-r-*-240-*".
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1996 Charles Vidal.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Charles Vidal <vidalc@univ-mlv.fr>, 1996.
+
+Ability to run standalone or with \fIxscreensaver\fP, and the \-text
+and \-bitmap options, added by Jamie Zawinski <jwz@jwz.org>, 24-May-97.
diff --git a/local/man/man.1/flame.1 b/local/man/man.1/flame.1
new file mode 100644 (file)
index 0000000..a646973
--- /dev/null
@@ -0,0 +1,70 @@
+.TH XScreenSaver 1 "13-aug-92" "X Version 11"
+.SH NAME
+flame - draw weird cosmic fractals
+.SH SYNOPSIS
+.B flame
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-colors \fIinteger\fP] [\-iterations \fIinteger\fP] [\-points \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-delay2 \fImicroseconds\fP]
+.SH DESCRIPTION
+The \fIflame\fP program generates colorful fractal displays.
+.SH OPTIONS
+.I flame
+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 \-colors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+.TP 8
+.B \-iterations \fIinteger\fP
+How many fractals to generate.  Default 25.
+.TP 8
+.B \-points \fIinteger\fP
+How many pixels to draw for each fractal.  Default 10000.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How long we should wait between drawing each fractal.  Default 50000,
+or about 1/20th second.
+.TP 8
+.B \-delay2 \fImicroseconds\fP
+How long we should wait before clearing the screen when each run ends.
+Default 2000000, or two seconds.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1991 by Patrick J. Naughton
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Scott Graves <spot@cs.cmu.edu>, 06-Jun-91.n
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 18-Oct-93.
diff --git a/local/man/man.1/forest.1 b/local/man/man.1/forest.1
new file mode 100644 (file)
index 0000000..9f2d2c6
--- /dev/null
@@ -0,0 +1,63 @@
+.TH XScreenSaver 1 "27-May-97" "X Version 11"
+.SH NAME
+forest - draws a fractal forest
+.SH SYNOPSIS
+.B forest
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+
+.SH DESCRIPTION
+The \fIforest\fP program draws a fractal forest.
+.SH OPTIONS
+.I forest
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 100.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1995 by Pascal Pensa.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Pascal Pensa <pensa@aurora.unice.fr>, 1995.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 27-May-97.
diff --git a/local/man/man.1/galaxy.1 b/local/man/man.1/galaxy.1
new file mode 100644 (file)
index 0000000..2ef9e12
--- /dev/null
@@ -0,0 +1,83 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+galaxy - draws spinning galaxies
+.SH SYNOPSIS
+.B galaxy
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-size \fIinteger\fP] [\-trail] [\-no\-trail]
+
+.SH DESCRIPTION
+The \fIgalaxy\fP program draws spinning galaxies.
+.SH OPTIONS
+.I galaxy
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors used cycle through the hue, making N stops around
+the color wheel.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.TP 8
+.B \-size \fIinteger\fP
+
+.TP 8
+.B \-trail
+.TP 8
+.B \-no\-trail
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1994 by Hubert Feyrer.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Original Amiga version by Uli Siegmund <uli@wombat.okapi.sub.org>
+ for EGS in Cluster.
+
+Ported from Cluster/EGS to C/Intuition by Harald Backert.
+
+Ported to X11 and xlockmore by 
+Hubert Feyrer <hubert.feyrer@rz.uni-regensburg.de>, 30-Sep-94.
+
+Modified by David Bagley <bagleyd@bigfoot.com>, 23-Oct-94.
+
+Modified by Dave Mitchell <davem@magnet.com>, 7-Apr-97.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/goop.1 b/local/man/man.1/goop.1
new file mode 100644 (file)
index 0000000..adf79d8
--- /dev/null
@@ -0,0 +1,80 @@
+.TH XScreenSaver 1 "11-Jun-97" "X Version 11"
+.SH NAME
+goop - squishy transparent oil and bubble screenhack
+.SH SYNOPSIS
+.B goop
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-transparent] [\-non\-transparent] [\-additive] [\-subtractive] [\-xor] [\-no\-xor]
+.SH DESCRIPTION
+The \fIgoop\fP program draws a simulation of bubbles in layers of 
+overlapping multicolored translucent fluid.
+.SH OPTIONS
+.I goop
+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 \-count \fIinteger\fP
+How many bubbles to draw per layer.  Default: random.
+.TP 8
+.B \-layers \fIinteger\fP
+How many layers to draw.  Default: random, based on screen depth.
+.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 \-transparent
+If \fI\-layers\fP is greater than 1, then each layer will be drawn in one
+color, and when they overlap, the colors will be mixed. This is the default.
+.TP 8
+.B \-non\-transparent
+Turns off \fI\-transparent\fP.
+.TP 8
+.B \-additive
+If \fI\-transparent\fP is specified, then this option means that the colors
+will be mixed using an additive color model, as if the blobs were projected
+light.  This is the default.
+.TP 8
+.B \-subtractive
+If \fI\-transparent\fP is specified, then this option means that the
+colors will be mixed using a subtractive color model, as if the blobs were
+translucent filters.
+.TP 8
+.B \-xor
+Draw with xor instead of the other color tricks.
+.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 1997 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 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>, 11-Jun-97.
diff --git a/local/man/man.1/grav.1 b/local/man/man.1/grav.1
new file mode 100644 (file)
index 0000000..7cd42cb
--- /dev/null
@@ -0,0 +1,74 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+grav - draws a simple orbital simulation
+.SH SYNOPSIS
+.B grav
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP] [\-decay] [\-no\-decay] [\-trail] [\-no\-trail]
+
+.SH DESCRIPTION
+The \fIgrav\fP program draws a simple orbital simulation
+.SH OPTIONS
+.I grav
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+The colors are chosen randomly.
+.TP 8
+.B \-count \fIinteger\fP
+Default 12.
+.TP 8
+.B \-decay
+.TP 8
+.B \-no-\decay
+Whether orbits should decay.
+
+.TP 8
+.B \-trail
+.TP 8
+.B \-no\-trail
+Whether the objects should leave trails behind them (makes it look vaguely
+like a cloud-chamber.
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1993 by Greg Bowering.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/greynetic.1 b/local/man/man.1/greynetic.1
new file mode 100644 (file)
index 0000000..0b761cc
--- /dev/null
@@ -0,0 +1,52 @@
+.TH XScreenSaver 1 "13-aug-92" "X Version 11"
+.SH NAME
+greynetic - draw random stippled/color rectangles
+.SH SYNOPSIS
+.B greynetic
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP]
+.SH DESCRIPTION
+The \fIgreynetic\fP program draws random rectangles.
+.SH OPTIONS
+.I greynetic
+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
+Slow it down.
+.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 1992 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 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>, 13-aug-92.
diff --git a/local/man/man.1/halo.1 b/local/man/man.1/halo.1
new file mode 100644 (file)
index 0000000..a499357
--- /dev/null
@@ -0,0 +1,80 @@
+.TH XScreenSaver 1 "12-Jun-97" "X Version 11"
+.SH NAME
+halo - draw circular patterns
+.SH SYNOPSIS
+.B halo
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-count \fIint\fP] [\-delay \fIusecs\fP] [\-mode seuss | ramp | random ] [\-animate] [\-colors \fIinteger\fP] [\-cycle] [\-no\-cycle] [\-cycle\-delay \fIusecs\fP] 
+.SH DESCRIPTION
+The \fIhalo\fP program draws cool patterns based on circles.
+.SH OPTIONS
+.I halo
+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 \-count \fIinteger\fP
+How many circles to draw.  Default 0, meaning random.
+.TP 8
+.B \-mode "seuss | ramp | random"
+In \fIseuss\fP mode, alternating striped curves will be drawn.
+
+In \fIramp\fP mode, a color ramp will be drawn.
+
+\fIrandom\fP means pick the mode randomly.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How much of a delay should be introduced between steps of the animation.
+Default 100000, or about 0.1 second.
+.TP 8
+.B \-colors \fIinteger\fP
+How many colors to use.  Default 100.
+.TP 8
+.B \-animate
+If specified, then the centerpoints of the circles will bounce around.
+Otherwise, the circles will be drawn once, erased, and a new set of
+circles will be drawn.
+.TP 8
+.B \-cycle
+.TP 8
+.B \-no\-cycle
+Whether to do colormap cycling.  Default is to cycle.
+.TP 8
+.B \-cycle\-delay
+Number of microseconds between shifts of the colormap; default 100000,
+or 1/10th 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 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 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>, 6-jul-93.
diff --git a/local/man/man.1/helix.1 b/local/man/man.1/helix.1
new file mode 100644 (file)
index 0000000..2c1c3e3
--- /dev/null
@@ -0,0 +1,63 @@
+.TH XScreenSaver 1 "18-sep-97" "X Version 11"
+.SH NAME
+helix - draw helical string-art patterns
+.SH SYNOPSIS
+.B helix
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-erase\-speed \fIusecs\fP] [\-erase\-mode \fIinteger\fP] [\-delay \fIseconds\fP] [\-install] [\-visual \fIvisual\fP]
+.SH DESCRIPTION
+The \fIhelix\fP program draws interesting patterns composed of line segments
+in random colors.
+.SH OPTIONS
+.I helix
+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 \-erase\-speed \fIusecs\fP
+This controls the speed at which the screen will be erased. Lower numbers 
+erase faster.
+.TP 8
+.B \-erase\-mode \fIinteger\fP
+This sets the erase mode. Mode \-1 chooses a random mode each time. There
+are currently 6 modes defined (0\-5).
+.TP 8
+.B \-delay \fIseconds\fP
+This sets the number of seconds that the helix will be on the screen.
+.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 SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 1992 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 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>, 13-aug-92.
+Screen eraser improved by Johannes Keukelaar <johannes@nada.kth.se>, 
+ 18-sep-97.
diff --git a/local/man/man.1/hopalong.1 b/local/man/man.1/hopalong.1
new file mode 100644 (file)
index 0000000..d36a360
--- /dev/null
@@ -0,0 +1,78 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+hopalong - draw real plane fractals
+.SH SYNOPSIS
+.B hopalong
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-jong] [\-no\-jong] [\-jong] [\-no\-sine]
+
+.SH DESCRIPTION
+The \fIhopalong\fP program generates real plane fractals as described in
+the September 1986 issue of Scientific American.
+.SH OPTIONS
+.I hopalong
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+The colors used cycle through the hue, making N stops around
+the color wheel.
+.TP 8
+.B \-cycles \fIinteger\fP
+How long to run each batch.  Default 2500 pixels.
+.TP 8
+.B \-count \fIinteger\fP
+How many pixels should be drawn before a color change.  Default 1000.
+.TP 8
+.B \-jong \fIinteger\fP
+.TP 8
+.B \-no\-jong \fIinteger\fP
+Whether to use the Jong format (default is to choose randomly.)
+
+.TP 8
+.B \-sine \fIinteger\fP
+.TP 8
+.B \-no\-sine \fIinteger\fP
+Whether to use the Sine format (default is to choose randomly.)
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1988-91 by Patrick J. Naughton.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Patrick J. Naughton <naughton@eng.sun.com>, 23-mar-88.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 13-aug-92, and again on 10-May-97.
diff --git a/local/man/man.1/hypercube.1 b/local/man/man.1/hypercube.1
new file mode 100644 (file)
index 0000000..4c5f8f9
--- /dev/null
@@ -0,0 +1,93 @@
+.TH XScreenSaver 1 "6-dec-92" "X Version 11"
+.SH NAME
+hypercube - 2d projection of a 4d object
+.SH SYNOPSIS
+.B hypercube
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-color[0-7] \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 \fIhypercube\fP program displays a wireframe projection of a hypercube
+which is rotating at user-specified rates around any or all of its four axes.
+.SH OPTIONS
+.I hypercube
+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 \-color0 \fIcolor\fP
+.TP 8
+.B \-color1 \fIcolor\fP
+.TP 8
+.B \-color2 \fIcolor\fP
+.TP 8
+.B \-color3 \fIcolor\fP
+.TP 8
+.B \-color4 \fIcolor\fP
+.TP 8
+.B \-color5 \fIcolor\fP
+.TP 8
+.B \-color6 \fIcolor\fP
+.TP 8
+.B \-color7 \fIcolor\fP
+The colors used to draw the line segments bordering the eight faces of
+the cube.  Some of the faces have only two of their border-lines drawn in
+the specified color, and some have all four.
+.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 cube 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 1992 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 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>, 6-dec-92.
diff --git a/local/man/man.1/ifs.1 b/local/man/man.1/ifs.1
new file mode 100644 (file)
index 0000000..2d04eef
--- /dev/null
@@ -0,0 +1,59 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+ifs - draws spinning, colliding iterated-function-system images
+.SH SYNOPSIS
+.B ifs
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+
+.SH DESCRIPTION
+The \fIifs\fP program draws spinning, colliding iterated-function-system images.
+.SH OPTIONS
+.I ifs
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+The colors used cycle through the hue, making N stops around
+the color wheel.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1997 by Massimino Pascal.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Massimino Pascal <Pascal.Massimon@ens.fr>, 1997.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/imsmap.1 b/local/man/man.1/imsmap.1
new file mode 100644 (file)
index 0000000..b8f81ad
--- /dev/null
@@ -0,0 +1,66 @@
+.TH XScreenSaver 1 "17-May-97" "X Version 11"
+.SH NAME
+imsmap - generate fractal maps
+.SH SYNOPSIS
+.B imsmap
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIint\fP] [\-delay \fIseconds\fP] [\-iterations \fIint\fP] [\-mode h|s|v|random] [\-cycle] [\-no\-cycle]
+.SH DESCRIPTION
+The \fIimsmap\fP program generates map or cloud-like patterns.  It looks
+quite different in monochrome and color.
+.SH OPTIONS
+.I imsmap
+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 \-ncolors \fIinteger\fP
+How many colors to use.  Default 50.
+.TP 8
+.B \-delay \fIinteger\fP
+How long to delay between images.  Default 10 seconds.
+.TP 8
+.B \-iterations \fIinteger\fP
+A measure of the resolution of the resultant image, from 0 to 7.  Default 7.
+.TP 8
+.B \-mode [ hue | saturation | value | random ]
+The axis upon which colors should be interpolated between the foreground
+and background color.  Default random.  
+.TP 8
+.B \-cycle
+.TP 8
+.B \-no\-cycle
+Whether to do colormap cycling.  Default is to cycle.
+.TP 8
+.B \-cycle\-delay
+Number of microseconds between shifts of the colormap; default 100000,
+or 1/10th 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 AUTHOR
+Juergen Nickelsen <nickel@cs.tu-berlin.de>, 23-aug-92.
+
+Hacked on by Jamie Zawinski <jwz@jwz.org>, 24-aug-92, 17-May-97.
diff --git a/local/man/man.1/jigsaw.1 b/local/man/man.1/jigsaw.1
new file mode 100644 (file)
index 0000000..ae9f7a0
--- /dev/null
@@ -0,0 +1,74 @@
+.TH XScreenSaver 1 "25-Nov-97" "X Version 11"
+.SH NAME
+jigsaw - permute the screen image like a jigsaw puzzle
+.SH SYNOPSIS
+.B jigsaw
+[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP] [\-delay \fIusecs\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP]
+.SH DESCRIPTION
+The \fIjigsaw\fP program takes an image of the screen, carves it up into
+a jigsaw puzzle, shuffles it, and then solves it.
+.SH OPTIONS
+.I jigsaw
+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
+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 long to wait between shuffling pieces; default 700000, or 0.7 seconds.
+.SH RESOURCES
+On some systems (currently, only SGIs), this program can, instead of grabbing
+a desktop image, grab a frame of video from an external camera and manipulate
+that instead.  The following resources control that.
+.PP
+.TP 8
+.B grabVideoProbability \fR(Float)\fP
+What portion of the time to grab video rather than a screen image, 
+between 0.0 and 1.0.  Defaults to 0.5, or half the time.
+.TP 8
+.B videoDevice \fR(Integer)\fP
+The number of the default video input device to check first.  If unspecified, 
+the default camera (from videopanel(1)) will be checked first.  After that, all
+other available video input devices will be checked in order.  
+
+The first one which produces a non-black image will be used.  If all images
+are black, the others will be re-checked a few times before giving up and
+falling back to simply grabbing a desktop image (but note that this takes a
+few seconds, so if you don't actually have any video sources hooked up, you
+should consider turning off video grabbing by setting
+\fBgrabVideoProbability\fP to 0.0.)
+.TP 8
+.B videoGain \fR(Float)\fP
+The amount by which to brighten the grabbed image.  This defaults to 2.2.
+.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 1997 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 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>, 25-Nov-97.
diff --git a/local/man/man.1/kaleidescope.1 b/local/man/man.1/kaleidescope.1
new file mode 100644 (file)
index 0000000..6eca5e3
--- /dev/null
@@ -0,0 +1,85 @@
+.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 Kaleidescpe 1 "14-Dec-95" "X Version 11"
+.SH NAME
+Kaleidescope - rotating line segments
+.SH SYNOPSIS
+.B kaleidescope
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-color_mode \fImono | nice | greedy\fP] [-nsegments \fIint\fP] [\-ntrails \fIint\fP] [\-local_rotation \fIint\fP] [\-global_rotation \fIint\fP] [\-delay \fIusecs\fP] [\-redmin \fIint\fP] [\-greenmin \fIint\fP] [\-bluemin \fIint\fP] [\-redrange \fIint\fP] [\-greenrange \fIint\fP] [\-bluerange \fIint\fP]
+.SH DESCRIPTION
+The \fIkaleidescope\fP program draws line segments in a symmetric pattern
+that evolves over time. 
+.SH OPTIONS
+.I kaleidescope
+accepts the following options:
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-color_mode "mono | nice | greedy"
+Specify how kaleidescope uses colors. Mono uses
+just the default foreground and background colors. Nice uses one
+color for each segment (specified by nsegments). Greedy uses (ntrails * nsegments) + 1  colors.
+.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 \-nsegments integer
+The number of segments to draw. Default is 7.
+.TP 8
+.B \-ntrails integer
+The number of trails to draw. Default is 100.
+.TP 8
+.B \-local_rotation integer
+The rate at which segments rotate around their center. Default is -59.
+.TP 8
+.B \-global_rotation integer 
+The rate at which segments rotate around the center of the window.
+Default is 1. 
+.TP 8
+.B \-redmin, \-greenmin, \-bluemin, \-redrange, \-greenrange, \-bluerange
+All take an integer argument. When colors are randomly chosen, they 
+are chosen from the interval min to min plus range. The minimums default
+to 30000. The ranges default to 20000. 
+.TP 8
+.B \-delay microseconds
+How much of a delay should be introduced between steps of the animation.
+Default is 20000, or about 5 frames a 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 kaleidescope (1)
+.SH COPYRIGHT
+Copyright \(co 1997 by Ron Tapia.  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
+Ron Tapia <tapia@nmia.com>, 20-Mar-97.
+
diff --git a/local/man/man.1/lament.1 b/local/man/man.1/lament.1
new file mode 100644 (file)
index 0000000..52cb6b4
--- /dev/null
@@ -0,0 +1,60 @@
+.TH XScreenSaver 1 "25-Jul-98" "X Version 11"
+.SH NAME
+lament - animates the Lament Configuration
+.SH SYNOPSIS
+.B lament
+[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-texture] [\-no\-texture] [\-wireframe]
+.SH DESCRIPTION
+The \fIlament\fP program draws an animation of a particular puzzle box
+repeatedly solving itself.
+.SH OPTIONS
+.I lament
+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 \-texture
+Use texture maps.  This is the default.
+.TP 8
+.B \-no\-texture
+Do not use texture maps.  This is boring and wrong.
+.TP 8
+.B \-wireframe
+Only draw outlines.
+.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
+This hack is glacially slow on machines lacking hardware texture support.
+
+Occasionally opens doors, admitting theologians of the Order of the Gash.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 1998 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 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>, 25-Jul-98.
diff --git a/local/man/man.1/laser.1 b/local/man/man.1/laser.1
new file mode 100644 (file)
index 0000000..70cec4e
--- /dev/null
@@ -0,0 +1,64 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+laser - draws vaguely laser-like moving lines
+.SH SYNOPSIS
+.B laser
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+
+.SH DESCRIPTION
+The \fIlaser\fP program draws vaguely laser-like moving lines
+.SH OPTIONS
+.I laser
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors used cycle through the hue, making N stops around the color wheel.
+.TP 8
+.B \-cycles \fIinteger\fP
+Default 200.
+.TP 8
+.B \-count \fIinteger\fP
+Default 10.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1995 by Pascal Pensa.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Pascal Pensa <pensa@aurora.unice.fr>, 1995.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/lightning.1 b/local/man/man.1/lightning.1
new file mode 100644 (file)
index 0000000..786ee99
--- /dev/null
@@ -0,0 +1,58 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+lightning - draws fractal lightning bolts
+.SH SYNOPSIS
+.B lightning
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+
+.SH DESCRIPTION
+The \fIlightning\fP program draws fractal lightning bolts
+.SH OPTIONS
+.I lightning
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors are chosen randomly.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1996 by Keith Romberg.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Keith Romberg <kromberg@saxe.com>, 27-Jun-96.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/lisa.1 b/local/man/man.1/lisa.1
new file mode 100644 (file)
index 0000000..64cc06f
--- /dev/null
@@ -0,0 +1,67 @@
+.TH XScreenSaver 1 "27-May-97" "X Version 11"
+.SH NAME
+lisa - draws animated full-loop lisajous figures
+.SH SYNOPSIS
+.B lisa
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-size \fIinteger\fP]
+
+.SH DESCRIPTION
+The \fIlisa\fP program draws animated full-loop lisajous figures.
+.SH OPTIONS
+.I lisa
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+The colors are chosen randomly.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.TP 8
+.B \-size \fIinteger\fP
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1997 by Caleb Cullen.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Caleb Cullen, 1997.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 27-May-97.
diff --git a/local/man/man.1/lmorph.1 b/local/man/man.1/lmorph.1
new file mode 100644 (file)
index 0000000..50cf8d2
--- /dev/null
@@ -0,0 +1,58 @@
+.TH LMORPH 1 "xscreensaver hack"
+.SH NAME
+lmorph \- morphing lines
+.SH SYNOPSIS
+.B lmorph
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-points \fIint\fP] [\-steps \fIint\fP] [\-delay \fIusecs\fP] [\-figtype \fItype\fP]
+.SH DESCRIPTION
+The \fIlmorph\fP program morphs between simple linedrawings using bilinear
+interpolation.
+.SH OPTIONS
+.I lmorph
+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 \-points \fIinteger\fP
+Number of points in each line drawing. Default is 150 points.
+.TP 8
+.B \-steps \fIinteger\fP
+Interpolation steps from one drawing to the next. Default is 0, which
+means a random number between 100 and 500.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How much of a delay should be introduced between steps of the animation.
+Default 50000.
+.TP 8
+.B \-figtype \fItype\fP
+Limit the figures to only open or closed figures. Possible types are
+"all" (default), "open" and "closed".
+.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 AUTHOR
+Sverre H. Huseby <sverrehu@online.no> and Glenn T. Lines <gtl@si.sintef.no>,
+built on top of the screen saver routines by Jamie Zawinski <jwz@jwz.org>.
diff --git a/local/man/man.1/maze.1 b/local/man/man.1/maze.1
new file mode 100644 (file)
index 0000000..f482650
--- /dev/null
@@ -0,0 +1,146 @@
+.TH XScreenSaver 1 "7-mar-93" "X Version 11"
+.SH NAME
+maze \- an automated X11 demo repeatedly creating and solving a random maze
+.SH SYNOPSIS
+.B maze 
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-grid\-size \fIpixels\fP] [\-live\-color \fIcolor\fP] [\-dead\-color \fIcolor\fP] [\-solve\-delay \fIusecs\fP] [\-pre\-delay \fIusecs\fP] [\-post\-delay \fIusecs\fP] [\-generator \fIinteger\fP] [\-max\-length \fIinteger\fP] [\-bridge] [\-no\-bridge]
+.SH DESCRIPTION
+The \fImaze\fP program creates a "random" maze and then solves it with 
+graphical feedback. 
+.SH OPTIONS
+.I maze
+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
+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 \-grid\-size \fIpixels\fP
+The size of each block of the maze, in pixels; default is 0, meaning
+pick a random grid size.
+.TP 8
+.B \-live\-color \fIcolor\fP
+The color of the path.
+.TP 8
+.B \-dead\-color \fIcolor\fP
+The color of the failed path (it is also stippled with a 50% pattern.)
+.TP 8
+.B \-skip\-color \fIcolor\fP
+The maze solver will choose to not go down a path if it can "see" (in a
+straight line) that it is a dead end.  This is the color to use for paths
+that are skipped for this reason.
+.TP 8
+.B \-surround\-color \fIcolor\fP
+If the maze solver ever completely encloses an area within the maze, then
+it knows that the exit is not in there (and in fact the interior of that
+area might not even be reachable.)  It will mark out those cells using this
+color.
+.TP 8
+.B \-solve\-delay \fIinteger\fP
+Delay (in microseconds) between each step of the solution path.
+Default 5000, or about 1/200th second.
+.TP 8
+.B \-pre\-delay \fIinteger\fP
+Delay (in microseconds) between generating a maze and starting to solve it.
+Default 2000000 (2 seconds.)
+.TP 8
+.B \-post\-delay \fIinteger\fP
+Delay (in microseconds) after solving a maze and before generating a new one.
+Default 4000000 (4 seconds.)
+.TP 8
+.B \-generator \fInum\fP
+Sets the algorithm that will be used to generate the mazes. The
+default is \-1, which randomly selects an algorithm for each maze that
+is generated. Generator 0 is the original one, and works by walking
+around randomly until we hit a place we've been before, then
+backtracking and trying a new direction somewhere. Generator 1 picks a
+random spot in the maze, then draws a straight wall from that spot in
+a random direction until it hits another wall (and continues until the
+maze is complete). Generator 2 is based on sets. Initially all cells
+are in different sets. Then two neighboring cells are chosen and if
+they are in different sets, their sets are joined. If they were in the
+same set, a wall is built between them. This continues until the maze is
+complete. 
+
+All generators generate mazes with a certain 'characteristic'. See if you
+can spot them!
+.TP 8
+.B \-max\-length \fInum\fP
+Controls the maximum length of walls drawn in one go by generator 1.
+.TP 8
+.B \-bridge
+.TP 8
+.B \-no\-bridge
+Controls whether or not a 'bridge' will appear over the logo.
+.PP
+Clicking the mouse in the maze window controls it.
+.TP 16
+.B "LeftButton
+Clears the window and restarts maze.
+.TP 16
+.B MiddleButton
+Pause or unpause the program.
+.TP 16
+.B RightButton
+Exit.
+.SH BUGS
+Expose events force a restart of maze.
+
+Mouse actions are based on "raw" values (Button1, Button2 and Button3)
+instead of using the pointer map.
+.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
+.PP
+Copyright \(co 1988 by Sun Microsystems, Inc. Mountain View, CA.
+.PP  
+All Rights Reserved
+.PP
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation, and that
+the names of Sun or MIT not be used in advertising or publicity pertaining to
+distribution of the software without specific prior written permission. Sun
+and M.I.T.  make no representations about the suitability of this software for
+any purpose. It is provided "as is" without any express or implied warranty.
+.PP
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN
+NO EVENT SHALL SUN BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.SH AUTHOR(s)
+.nf
+Zack Weinberg [ Smarter maze-solver ] zack@rabi.phys.columbia.edu
+Johannes Keukelaar [ Generators 1 and 2 ] johannes@nada.kth.se 
+  Royal Institute of Technology, Stockholm, Sweden
+Jim Randell    [ XScreenSaver version ] jmr@mddjmr.fc.hp.com
+  HPLabs, Bristol
+Richard Hess   [ X11 extensions ]      {...}!uunet!cimshop!rhess
+  Consilium, Mountain View, CA
+Dave Lemke     [ X11 version ]         lemke@sun.COM
+  Sun MicroSystems, Mountain View, CA
+Martin Weiss   [ SunView version ]
+  Sun MicroSystems, Mountain View, CA
+.fi
diff --git a/local/man/man.1/moire.1 b/local/man/man.1/moire.1
new file mode 100644 (file)
index 0000000..c810265
--- /dev/null
@@ -0,0 +1,64 @@
+.TH XScreenSaver 1 "27-Apr-97" "X Version 11"
+.SH NAME
+halo - draw circular interference patterns
+.SH SYNOPSIS
+.B halo
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-random \fIboolean\fP] [\-ncolors \fIint\fP] [\-offset \fIint\fP] 
+.SH DESCRIPTION
+The \fImoire\fP program draws cool circular interference patterns.
+.SH OPTIONS
+.I moire
+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 \fIseconds\fP
+How long to wait before starting over.  Default 5 seconds.
+.TP 8
+.B \-random \fIboolean\fP
+Whether to ignore the foreground/background colors, and pick them randomly
+instead.
+.TP 8
+.B \-offset \fIinteger\fP
+The maximum random radius increment to use.
+.TP 8
+.B \-ncolors \fIinteger\fP
+How many colors should be allocated in the color ramp (note that this
+value interacts with \fIoffset\fP.)
+.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 1997 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 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>, 27-Apr-97, based on code by
+Michael D. Bayne <mdb@go2net.com>.
diff --git a/local/man/man.1/munch.1 b/local/man/man.1/munch.1
new file mode 100644 (file)
index 0000000..97b1b79
--- /dev/null
@@ -0,0 +1,133 @@
+.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 "17-Jun-97" "X Version 11"
+.SH NAME
+munch - munching squares screen hack
+.SH SYNOPSIS
+.B munch
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
+[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
+[\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-xor] [\-noxor] [\-shift]
+[\-noshift] [\-logminwidth \fIminimum width\fP]
+.SH DESCRIPTION
+The
+.I munch
+program preforms the munching squares hack until killed.  It picks square
+size, position, and gravity randomly; configurable options are listed
+below.
+.PP
+The munching squares hack cosists of drawing Y = X XOR T for a range of X
+and T over and over until all the possible combinations of X and T have
+come up.  It was reportedly discovered by Jackson Wright in 1962 and took 5
+instructions of PDP-6 code.
+.SH OPTIONS
+.I munch
+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 \fIseconds\fP
+How long to wait before starting over.  Default 5 seconds.
+.TP 8
+.B \-xor
+Use the XOR drawing function.  (Default.)
+.TP 8
+.B \-no\-xor
+Don't use the XOR drawing function.
+.TP 8
+.B \-shift
+Start drawing the square at weird starting points.  (Default.)
+.TP 8
+.B \-no\-shift
+Don't shift and start drawing the square at weird starting points.
+.TP 8
+.B \-logminwidth \fIminimum\-width\fP
+The logarithm (base 2) of the minimum with of a square (must be a power of
+2, or some parts of the square aren't.)
+.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),
+.BR http://www.inwap.com/pdp10/hbaker/hakmem/hakmem.html,
+.BR http://www.comedia.com/Hot/jargon_3.0/JARGON_M/MUNCHSQR.HTML
+.SH HISTORY
+Quoted from HAKMEM, for historical interest.  As that document says, "Unless
+otherwise stated, all computer programs are in PDP-6/10 assembly language."
+.TP 8
+ITEM 146: MUNCHING SQUARES
+Another simple display program. It is thought that this was discovered by
+Jackson Wright on the RLE PDP-1 circa 1962.
+
+.EX
+    DATAI 2
+    ADDB 1,2
+    ROTC 2,-22
+    XOR 1,2
+    JRST .-4
+.EE
+.RS 8
+2=X, 3=Y. Try things like 1001002 in data switches. This also does
+interesting things with operations other than XOR, and rotations other 
+than -22. (Try IOR; AND; TSC; FADR; FDV(!); ROT -14, -9, -20, ...)
+.RE
+.TP 8
+ITEM 147 (Schroeppel):
+Munching squares is just views of the graph Y = X XOR T for consecutive
+values of T = time.
+.TP 8
+ITEM 148 (Cohen, Beeler):
+A modification to munching squares which reveals them in frozen states
+through opening and closing curtains: insert FADR 2,1 before the XOR. Try
+data switches =
+
+.EX
+    4000,,4    1000,,2002    2000,,4    0,,1002
+.EE
+.RS 8
+(Notation: <left half>,,<right half>)
+
+Also try the FADR after the XOR, switches = 1001,,1. 
+.SH COPYRIGHT
+Copyright \(co 1997 by Tim Showalter.  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
+Tim Showalter <tjs@andrew.cmu.edu>, 17-Jun-97, based on what's in the
+Jargon File and stealing stuff from existing xscreensaver modules.
diff --git a/local/man/man.1/noseguy.1 b/local/man/man.1/noseguy.1
new file mode 100644 (file)
index 0000000..f23746b
--- /dev/null
@@ -0,0 +1,74 @@
+.TH XScreenSaver 1 "13-aug-92" "X Version 11"
+.SH NAME
+noseguy - a little guy with a big nose wanders around being witty
+.SH SYNOPSIS
+.B noseguy
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-text-foreground \fIcolor\fP] [\-text-background \fIcolor\fP] [\-font \fIfont\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-mode \fImode\fP] [\-program \fIprogram\fP] [\-filename \file\fP] [\-text \fItext\fP]
+.SH DESCRIPTION
+A little man with a big nose and a hat runs around spewing out messages to
+the screen.  This code (and its bitmaps) were extracted from the \fIxnlock\fP
+program.
+.SH OPTIONS
+.I noseguy
+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
+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 \-font \fIfont\fP
+The font used for the messages.
+.TP 8
+.B \-mode [ program | file | string ]
+In \fIprogram\fP mode, the messages are gotten by running a program.
+The program used is controlled by the \fI\-program\fP option, and 
+the \fI.program\fP resource.
+
+In \fIfilename\fP mode, the message used is the contents of a file.
+The file used is controlled by the \fI\-file\fP option, and 
+the \fI.filename\fP resource.
+
+In \fIstring\fP mode, the message is whatever was specified on the 
+command line as the \fI\-text\fP option, or in the resource database
+as the \fI.text\fP resource.
+.TP 8
+.B \-program \fIprogram\fP
+If \fImode\fP is \fIprogram\fP (the default), then this program will be
+run periodically, and its output will be the text of the messages.  The
+default program is \fI"fortune -s"\fP, but \fIyow\fP is also a good choice.
+.TP 8
+.B \-filename \fIfile\fP
+If \fImode\fP is \fIfile\fP, then the contents of this file will be used
+for all messages.
+.TP 8
+.B \-text \fIstring\fP
+If \fImode\fP is \fIstring\fP, then this text will be used for all messages.
+.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),
+.BR xnlock (1)
+.SH COPYRIGHT
+Copyright 1985, 1990 by Dan Heller <argv@sun.com>.
+.SH AUTHOR
+Dan Heller <argv@sun.com>, 1985.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
diff --git a/local/man/man.1/pedal.1 b/local/man/man.1/pedal.1
new file mode 100644 (file)
index 0000000..7a0c3e5
--- /dev/null
@@ -0,0 +1,62 @@
+.TH XScreenSaver 1 "24-Jun-94" "X Version 11"
+.SH NAME
+pedal - pretty geometric picture program
+.SH SYNOPSIS
+.B pedal
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-delay \fIseconds\fP] [-maxlines \fInumber\fP] [-fadedelay \fIuseconds\fP] [-mono] [\-install] [\-visual \fIvisual\fP]
+.SH DESCRIPTION
+The \fIpedal\fP program displays pretty geometric pictures.
+.SH OPTIONS
+.I pedal
+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 \-foreground \fIcolor\fP
+The color for the foreground.  Default is white.
+.TP 8
+.B \-background \fIcolor\fP
+The color for the background.  Default is black.
+.TP 8
+.B \-delay \fIseconds\fP
+The number of seconds to pause between each picture.
+.TP 8
+.B \-maxlines \fInumber\fP
+The maximum number of lines in the drawing.  Good values are
+between 20 and 2000.  Maximum value is 16K.
+.TP 8
+.B \-fadedelay \fImicroseconds\fP
+The number of micro seconds to take when fading in and out.
+.TP 8
+.B \-mono
+Don't do fading.  Pretend we're on a monochrome display.
+.PP
+To make your X server grunt under load, and to impress your
+friends, try \fIpedal -mono -delay 0 -maxlines 100\fp.
+.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 1994, by Carnegie Mellon University.  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 implied
+warranty.
+.SH AUTHOR
+Dale Moore <Dale.Moore@cs.cmu.edu>, 24-Jun-1994.
diff --git a/local/man/man.1/penrose.1 b/local/man/man.1/penrose.1
new file mode 100644 (file)
index 0000000..e4734bf
--- /dev/null
@@ -0,0 +1,106 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+penrose - draws quasiperiodic tilings
+.SH SYNOPSIS
+.B penrose
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-redoDelay \fIseconds\fP] [\-size \fIinteger\fP] [\-ammann] [\-no\-ammann]
+
+.SH DESCRIPTION
+The \fIpenrose\fP program draws quasiperiodic tilings.
+
+See Onoda, Steinhardt, DiVincenzo and Socolar in
+Phys. Rev. Lett. 60, #25, 1988 or
+Strandburg in Computers in Physics, Sep/Oct 1991.
+
+This implementation uses the simpler version of the growth
+algorithm, i.e., if there are no forced vertices, a randomly chosen
+tile is added to a randomly chosen vertex (no preference for those
+108 degree angles).
+
+There are two essential differences to the algorithm presented in
+the literature: First, we do not allow the tiling to enclose an
+untiled area.  Whenever this is in danger of happening, we just
+do not add the tile, hoping for a better random choice the next
+time.  Second, when choosing a vertex randomly, we will take
+one that lies withing the viewport if available.  If this seems to
+cause enclosures in the forced rule case, we will allow invisible
+vertices to be chosen.
+
+Tiling is restarted whenever one of the following happens: there
+are no incomplete vertices within the viewport or the tiling has
+extended a window's length beyond the edge of the window
+horizontally or vertically or forced rule choice has failed 100
+times due to areas about to become enclosed.
+
+Although quasiperiodic tilings are produced, the tiles themselves are
+not penrose tiles (darts and kites). In contrast to penrose tiles,
+these tiles can be arranged to form a periodic tiling.
+
+.SH OPTIONS
+.I penrose
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors are chosen randomly.
+.TP 8
+.B \-size \fIinteger\fP
+How big the tiles should be.  Default 40 pixels.
+
+.TP 8
+.B \-delay \fImilliseconds\fP
+How long (in 1/1,000,000'ths of a second) to wait between drawing each
+tile.  Default 10,000 or .01 seconds.
+
+.TP 8
+.B \-redoDelay \fIseconds\fP
+How long to wait between starting a completely new tiling.  Default 3 seconds.
+
+.TP 8
+.B \-ammann \fIinteger\fP
+.TP 8
+.B \-no\-ammann \fIinteger\fP
+Whether Ammann lines should be added.
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1996 by Timo Korvola.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Timo Korvola <tkorvola@dopey.hut.fi>, 1996.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/pyro.1 b/local/man/man.1/pyro.1
new file mode 100644 (file)
index 0000000..106fc8a
--- /dev/null
@@ -0,0 +1,60 @@
+.TH XScreenSaver 1 "13-aug-92" "X Version 11"
+.SH NAME
+pyro - simulate fireworks
+.SH SYNOPSIS
+.B pyro
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-count \fIinteger\fP] [\-frequency \fIinteger\fP] [\-scatter \fIinteger\fP]
+.SH DESCRIPTION
+The \fIpyro\fP program simulates fireworks, in a way similar to a Macintosh
+program of the same name.
+.SH OPTIONS
+.I pyro
+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 \-count \fIinteger\fP
+How many particles should be allowed on the screen at once.  Default 100.
+.TP 8
+.B \-frequency \fIinteger\fP
+How often new missiles should launch.  Default 30.
+.TP 8
+.B \-scatter \fIinteger\fP
+How many particles should appear when a missile explodes.  Default 20.
+The actual number used is between \fIN\fP and \fIN+(N/2)\fP.
+.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 1992 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 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>, 13-aug-92.
diff --git a/local/man/man.1/qix.1 b/local/man/man.1/qix.1
new file mode 100644 (file)
index 0000000..90dd67d
--- /dev/null
@@ -0,0 +1,128 @@
+.TH XScreenSaver 1 "27-Apr-97" "X Version 11"
+.SH NAME
+qix - bounce colored lines around a window
+.SH SYNOPSIS
+.B qix
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-segments \fIint\fP] [\-spread \fIpixels\fP] [\-size \fIpixels\fP] [\-count \fIint\fP] [\-color-shift \fIdegrees\fP] [\-delay \fIusecs\fP] [\-random] [\-linear] [\-solid] [\-hollow] [\-xor] [\-no\-xor] [\-transparent] [\-non\-transparent] [\-additive] [\-subtractive] [\-poly \fIint\fP] [\-gravity] [\-no\-gravity]
+.SH DESCRIPTION
+The \fIqix\fP program bounces a series of line segments around its window.
+This is truly the swiss army chainsaw of qix programs.  If you know of one
+with more display modes, I want to know about it.
+.SH OPTIONS
+.I qix
+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 \-segments \fIinteger\fP
+How many line segments should be drawn.  Default 50.
+.TP 8
+.B \-spread \fIinteger\fP
+How far apart the endpoints of one segment should be from the next.
+Default 8.
+.TP 8
+.B \-size \fIinteger\fP
+The maximum distance one endpoint of a segment is allowed to be from
+the opposite end of that segment.  Default 0, meaning unlimited.
+.TP 8
+.B \-count \fIinteger\fP
+How many qixes to draw.  Default 1.
+.TP 8
+.B \-color\-shift \fIdegrees\fP
+If on a color display, the color of the line segments will cycle through
+the spectrum.  This specifies how far the hue of each segment should be
+from the next, in degrees on the HSV wheel.  Default 3.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How much of a delay should be introduced between steps of the animation.
+Default 25000, or about 0.025 seconds.
+.TP 8
+.B \-random
+The \fIqix\fP will wander around the screen semi-randomly.  This is the
+default.
+.TP 8
+.B \-linear
+The opposite of \fI\-random\fP: the \fIqix\fP will travel in straight lines
+until it reaches a wall, and then it will bounce.
+.TP 8
+.B \-solid
+If this is specified, then the area between the line segments will be filled
+in with the appropriate color, instead of the \fIqix\fP simply being composed
+of one-pixel-wide line segments.  This option looks really good in color.
+.TP 8
+.B \-hollow
+The opposite of \fI\-solid\fP; this is the default.
+.TP 8
+.B \-xor
+If this is specified, then qix segments will be drawn and erased with xor,
+instead of being drawn in some color and erased in the background color.
+This implies \fI\-mono\fP, in that only two colors can be used.
+.TP 8
+.B \-transparent
+If this is specified, and \fI\-count\fP is greater than 1, then each qix
+will be drawn in one color, and when they overlap, the colors will be mixed.
+This looks best in conjuction with \fI\-solid\fP.
+.TP 8
+.B \-non\-transparent
+Turns off \fI\-transparent\fP.
+.TP 8
+.B \-additive
+If \fI\-transparent\fP is specified, then this option means that the colors
+will be mixed using an additive color model, as if the qixes were projected
+light.  This is the default.
+.TP 8
+.B \-subtractive
+If \fI\-transparent\fP is specified, then this option means that the
+colors will be mixed using a subtractive color model, as if the qixes were
+translucent filters.
+.TP 8
+.B \-poly \fIint\fP
+How many vertices each qix-line should have: the default is 2, meaning the
+traditional qix line shape.  Three will yield triangles, and so on.
+.TP 8
+.B \-gravity
+.TP 8
+.B \-no\-gravity
+Whether there should be downward attraction.  For example, the
+options
+.B \-gravity \-linear
+will make everything move in nice smooth parabolas.
+Gravity is off by default.
+.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 1992 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 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>, 13-aug-92.
+
+Thanks to Ariel Scolnicov for the \-poly and \-gravity options.
diff --git a/local/man/man.1/rd-bomb.1 b/local/man/man.1/rd-bomb.1
new file mode 100644 (file)
index 0000000..161c478
--- /dev/null
@@ -0,0 +1,98 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+rd-bomb - reaction/diffusion textures
+.SH SYNOPSIS
+.B rd-bomb
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
+[\-background \fIcolor\fP] [\-window] [\-root] [\-install]
+[\-visual \fIvisual\fP] [\-width \fIn\fP] [\-height \fIn\fP]
+[\-reaction \fIn\fP] [\-diffusion \fIn\fP]
+[\-size \fIf\fP] [\-speed \fIf\fP] [\-delay \fIusecs\fP]
+.SH DESCRIPTION
+
+The \fIrd-bomb\fP program draws reaction/diffusion textures.  The code
+is derived from the 'd' mode of the "bomb" visual musical instrument
+(see http://www.cs.cmu.edu/~spot/bomb.html).  I got the equations from
+xmorphia (http://www.ccsf.caltech.edu/ismap/image.html), which is
+based on a version of the Gray-Scott model taken from:
+    John E. Pearson "Complex Patterns in a Simple System"
+    Science, 261,189, 9 July 1993.
+
+If the frame-rate is too low, consider decreasing the width and height
+of the tile, or decreasing the size of the active part of the screen.
+
+.SH OPTIONS
+
+If one of the reaction, diffusion, radius, and palette options is set
+to a negative value, then that option will be set to a random
+appropriate value.
+
+Be sure to try "-speed 1 -size 0.1 -epoch 3000".
+
+.I rd-bomb
+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
+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 \-width \fIn\fP
+.TP 8
+.B \-height \fIn\fP
+Specify the size of the tile, in pixels.
+.TP 8
+.B \-reaction \fIn\fP
+.TP 8
+.B \-diffusion \fIn\fP
+These are constants in the equations that effect its visual nature.
+Each may be one of 0, 1, or 2.  
+.TP 8
+.B \-radius \fIn\fP
+Size of the seed.
+.TP 8
+.B \-palette \fIn\fP
+Selects a palette.  Must be between 0 and 80, inclusive.
+.TP 8
+.B \-size \fIf\fP
+What fraction of the window is actively drawn, a floating point number
+between 0 (exclusive) and 1 (inclusive).  Default is 0.66.
+.TP 8
+.B \-speed \fIf\fP
+When a fraction of the screen is active, the active area moves at this
+rate (a floating point number).  Default is zero.  Suggested value: 1.0.
+.TP 8
+.B \-delay \fIusecs\fP
+How many microseconds to delay between frames; default 1000, or 
+about 1/1000th of a 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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1997 by Scott Draves.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Scott Draves <spot@cs.cmu.edu>, 9/97
diff --git a/local/man/man.1/rocks.1 b/local/man/man.1/rocks.1
new file mode 100644 (file)
index 0000000..1d39130
--- /dev/null
@@ -0,0 +1,86 @@
+.TH XScreenSaver 1 "13-aug-92" "X Version 11"
+.SH NAME
+rocks - animation of flying through an asteroid field
+.SH SYNOPSIS
+.B rocks
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-ncolors \fIn\fP] [\-install] [\-visual \fIvisual\fP] [\-count \fIinteger\fP] [\-delay \fIusecs\fP] [\-speed \fIinteger\fP] [\-norotate] [\-nomove] [\-3d]
+.SH DESCRIPTION
+The \fIrocks\fP program draws an animation of an asteroid field moving past
+the observer (or vice versa).  Sometimes the observer picks up spin on Z axis.
+.SH OPTIONS
+.I rocks
+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
+Make all the rocks the same color.
+.TP 8
+.B \-ncolors colors
+How many different colors to use.  Default 5.  Colors are chosen randomly.
+.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 \-count \fIinteger\fP
+Maximum number of rocks to draw on the screen at once.  Default 100.
+.TP 8
+.B \-speed \fIinteger\fP
+A measure of the speed with which the observer and the rocks pass each other,
+from 1 to 100.  Default 100, meaning ``very fast.''  If you're on a slow 
+display connection (the animation looks jerky) then try making this number 
+smaller, and/or decreasing the number of rocks.
+.TP 8
+.B \-delay \fImicroseconds\fP
+Number of microseconds to delay between each frame.  Default 50000, meaning
+about 1/20th second.  Compare and contrast with \fI\-speed\fP, above.
+.TP 8
+.B \-norotate
+Don't rotate the observer; just fly through the field on the level.
+.TP 8
+.B \-nomove
+Don't turn the observer; just fly straight ahead through the field.
+.TP 8
+.B \-3d
+Do red/blue 3d separations: if you look at the screen with 3d glasses,
+the rocks will be \fIjumping\fP right \fIout\fP at you.  Oooooh, scaaary!
+.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 BUGS
+There should be an option to display doppler shift (a gravity rainbow.)
+
+Speed of rotation should be settable.
+
+Default speed of rotation should be relative to forward velocity.
+.SH COPYRIGHT
+Copyright \(co 1992 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 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
+Based on Lisp Machine code copyright 1988 John Nguyen <johnn@hx.lcs.mit.edu>.
+
+Ported to C and X by Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
+
+Steering code by Jeremie Petit; 3D code by theiling@coli.uni-sb.de.
diff --git a/local/man/man.1/rorschach.1 b/local/man/man.1/rorschach.1
new file mode 100644 (file)
index 0000000..56a6c48
--- /dev/null
@@ -0,0 +1,75 @@
+.TH XScreenSaver 1 "13-aug-92" "X Version 11"
+.SH NAME
+rorschach - simulate ink-blot patterns
+.SH SYNOPSIS
+.B rorschach
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-iterations \fIinteger\fP] [\-offset \fIinteger\fP] [\-xsymmetry] [\-ysymmetry] [\-erase\-mode \fIinteger\fP] [\-erase\-speed \fIusecs\fP] [\-delay \fIsecs\fP]
+.SH DESCRIPTION
+The \fIrorschach\fP program draws random patterns reminiscent of the
+psychological test of same name.
+.SH OPTIONS
+.I rorschach
+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 \-iterations \fIinteger\fP
+How many dots should be drawn each time.  Default 4000.
+.TP 8
+.B \-offset \fIinteger\fP
+How far apart the dots should be.  Default 4 pixels.
+.TP 8
+.B \-xsymmetry
+Whether the images should be horizontally symmetrical.  Default true.
+.TP 8
+.B \-ysymmetry
+Whether the images should be vertically symmetrical.  Default false.
+.TP 8
+.B \-erase\-mode \fIinteger\fP
+This sets the erase mode. Mode \-1 chooses a random mode each time. There
+are currently 6 modes defined (0\-5).
+.TP 8
+.B \-erase\-speed \fIusecs\fP
+This controls the speed at which the screen will be erased. (Delay between
+erasing of individual lines.)
+.TP 8
+.B \-delay \fIseconds\fP
+This sets the number of seconds that the figure will be on the screen.
+.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
+May call your sanity into question.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 1992 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 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>, 13-aug-92.
diff --git a/local/man/man.1/sierpinski.1 b/local/man/man.1/sierpinski.1
new file mode 100644 (file)
index 0000000..f3fdb34
--- /dev/null
@@ -0,0 +1,65 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+sierpinski - draws Sierpinski triangle fractals
+.SH SYNOPSIS
+.B sierpinski
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+
+.SH DESCRIPTION
+The \fIsierpinski\fP program draws Sierpinski triangle fractals.
+.SH OPTIONS
+.I sierpinski
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors are chosen randomly.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1996 by Desmond Daignault.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Desmond Daignault <tekdd@dtol.datatimes.com>, 05-Sep-96.  (Original 
+xlock version was called tri.c.)
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.  (Renamed to sierpinski.)
diff --git a/local/man/man.1/slidescreen.1 b/local/man/man.1/slidescreen.1
new file mode 100644 (file)
index 0000000..a3e9d90
--- /dev/null
@@ -0,0 +1,92 @@
+.TH XScreenSaver 1 "24-Nov-97" "X Version 11"
+.SH NAME
+slidescreen - permute the screen image like an 8-puzzle
+.SH SYNOPSIS
+.B slidescreen
+[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP] [\-grid-size \fIpixels\fP] [\-ibw \fIpixels\fP] [\-increment \fIpixels\fP] [\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP]
+.SH DESCRIPTION
+The \fIslidescreen\fP program takes an image of the screen, divides it into
+a grid, deletes a random square of that grid, and then randomly slides 
+one of the neighbors of this "hole" into the hole (and repeat.)
+.SH OPTIONS
+.I slidescreen
+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
+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 \-grid-size \fIpixels\fP
+The size of the grid cells.  Default 70 pixels.
+.TP 8
+.B \-ibw \fIpixels\fP
+The size of the "gutter" between grid cells.  Default 1 pixel.
+.TP 8
+.B \-increment \fIpixels\fP
+How many pixels by which a piece should be moved when sliding to a new 
+location.  Default 10 pixels.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How much of a delay should be introduced between steps of the animation of
+the motion of each segment.  Default 50000, which is 0.05 seconds.  This
+is closely related to the \fI\-increment\fP parameter.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How much of a delay should be introduced between the end of the motion of
+one segment and the beginning of the motion of another.  Default 1000000,
+which is one second.
+.SH RESOURCES
+On some systems (currently, only SGIs), this program can, instead of grabbing
+a desktop image, grab a frame of video from an external camera and manipulate
+that instead.  The following resources control that.
+.PP
+.TP 8
+.B grabVideoProbability \fR(Float)\fP
+What portion of the time to grab video rather than a screen image, 
+between 0.0 and 1.0.  Defaults to 0.5, or half the time.
+.TP 8
+.B videoDevice \fR(Integer)\fP
+The number of the default video input device to check first.  If unspecified, 
+the default camera (from videopanel(1)) will be checked first.  After that, all
+other available video input devices will be checked in order.  
+
+The first one which produces a non-black image will be used.  If all images
+are black, the others will be re-checked a few times before giving up and
+falling back to simply grabbing a desktop image (but note that this takes a
+few seconds, so if you don't actually have any video sources hooked up, you
+should consider turning off video grabbing by setting
+\fBgrabVideoProbability\fP to 0.0.)
+.TP 8
+.B videoGain \fR(Float)\fP
+The amount by which to brighten the grabbed image.  This defaults to 2.2.
+.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 1992 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 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>, 3-dec-92.
diff --git a/local/man/man.1/slip.1 b/local/man/man.1/slip.1
new file mode 100644 (file)
index 0000000..d513654
--- /dev/null
@@ -0,0 +1,93 @@
+.TH XScreenSaver 1 "24-Nov-97" "X Version 11"
+.SH NAME
+slip - sucks your screen into a jet engine
+.SH SYNOPSIS
+.B slip
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-iterations \fIinteger\fP] [\-points \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-delay2 \fImicroseconds\fP]
+.SH DESCRIPTION
+The \fIslip\fP program does lots of blits and chews up your screen image.
+.SH OPTIONS
+.I slip
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 128.
+The colors used cycle through the hue, making N stops around 
+the color wheel.
+.TP 8
+.B \-count \fIinteger\fP
+How many whooziwhatsis to generate.  Default 35.
+.TP 8
+.B \-cycles \fIinteger\fP
+How long to frobnicate.  Default 50.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How long we should wait between drawing each step.  Default 50000,
+or about 1/20th second.
+
+.SH RESOURCES
+On some systems (currently, only SGIs), this program can, instead of grabbing
+a desktop image, grab a frame of video from an external camera and manipulate
+that instead.  The following resources control that.
+.PP
+.TP 8
+.B grabVideoProbability \fR(Float)\fP
+What portion of the time to grab video rather than a screen image, 
+between 0.0 and 1.0.  Defaults to 0.5, or half the time.
+.TP 8
+.B videoDevice \fR(Integer)\fP
+The number of the default video input device to check first.  If unspecified, 
+the default camera (from videopanel(1)) will be checked first.  After that, all
+other available video input devices will be checked in order.  
+
+The first one which produces a non-black image will be used.  If all images
+are black, the others will be re-checked a few times before giving up and
+falling back to simply grabbing a desktop image (but note that this takes a
+few seconds, so if you don't actually have any video sources hooked up, you
+should consider turning off video grabbing by setting
+\fBgrabVideoProbability\fP to 0.0.)
+.TP 8
+.B videoGain \fR(Float)\fP
+The amount by which to brighten the grabbed image.  This defaults to 2.2.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1992 by Scott Draves.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Scott Graves <spot@cs.cmu.edu>.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 18-Oct-93.
diff --git a/local/man/man.1/sonar.1 b/local/man/man.1/sonar.1
new file mode 100644 (file)
index 0000000..1313972
--- /dev/null
@@ -0,0 +1,185 @@
+.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 Sonar 1 "3-Nov-98" "X Version 11"
+.SH NAME
+sonar - display a sonar scope
+.SH SYNOPSIS
+.B sonar
+[\-background \fIcolor\fP]
+[\-sweep\-color \fIcolor\fP]
+[\-low\-color \fIcolor\fP] 
+[\-scope\-color \fIcolor\fP]
+[\-grid\-color \fIcolor\fP]
+[\-text\-color \fIcolor\fP]
+[\-ttl \fIinteger\fP]
+[\-mode ping]
+[\-font \fIfont\fP]
+[\-ping\-timeout \fIint\fP]
+[\-ping\-source list | file | subnet ] 
+[\-ping\-file \fIhosts-file\fP]
+[\-ping\-list \fIhost-name-list\fP]
+[\-team-a-name \fIstring\fP] 
+[\-team-b-name \fIstring\fP]
+[\-team-a-count \fIint\fP]
+[\-team-b-count \fIint\fP]
+.SH DESCRIPTION
+The \fIsonar\fP program displays a sonar scope on the computer's screen.
+This scope polls a sensor as the sweep goes around the scope and displays
+what it finds as bogies on the screen.  The program is designed to support
+different modes representing different types of sensors.  Currently the
+only implemented sensors are a simulator, and a network ping function that
+pings hosts and plots the results on the scope.
+.SH OPTIONS
+.I sonar
+understands the following options:
+.TP 8
+.B \-background \fIColor\fP
+The background Color of the screen not covered by the scope.
+.TP 8
+.B \-sweep\-color \fIColor\fP
+The color of the brightest part of the sweep.
+.TP 8
+.B \-scope\-color \fIColor\fP
+The color of the circular part of the scope.
+.TP 8
+.B \-grid\-color \fIColor\fP
+The color to the grid lines overlaying the scope.
+.TP 8
+.B \-text\-color \fIColor\fP
+The color of the text identifying bogies on the scope.
+.TP 8
+.B \-ttl \fIinteger\fP
+"Time to live": visible time of a Bogie. Try values between 10 (very short)
+and 100. 
+.TP 8
+.B \-mode \fIsimulation | ping\fP
+The sensor mode to use, the currently supported modes \fIsimulate\fP (the
+default) and \fIping\fP.
+.TP 8
+.B \-font \fIfont\fP
+The font used to display text on the scope.  Default "fixed".
+.TP 8
+.B \-ping\-timeout \fIint\fP
+The amount of time in milliseconds the program will wait for an answer
+to a ping.
+.TP 8
+.B \-ping\-source list | file | subnet
+Th source of the list of hosts to ping. Valid values are: \fIlist\fP,
+\fIfile\fP, \fIsubnet\fP.  The first two values are described below;
+and \fIsubnet\fP indicates that the sonar should ping all hosts in the
+same subnet as the current machine.  (All addresses are treated
+as class C nets, therefore this will at most ping 254 hosts.)
+.TP 8
+.B \-ping\-file \fIfilename\fP
+The path to a file listing the hosts to ping.  This file can be in the
+format used by \fI/etc/hosts\fP, or it can be any file that has host
+names as the first element on each line.  If you use ssh, try this:
+.EX
+sonar -mode ping -ping-file $HOME/.ssh/known_hosts
+.EE
+This is used only used when \fIpingSource\fP is set to \fBfile\fP.
+.TP 8
+.B \-ping\-list \fIlist\fP
+A comma separated list of hostnames, eg \fI"pinky,brain,dot"\fP.
+Only used when \fIpingSource\fP is set to \fBlist\fP.
+.TP 8
+.B \-team-a-name \fIstring\fP
+The name of team A, in simulation-mode.
+.TP 8
+.B \-team-b-name \fIstring\fP
+The name of team B, in simulation-mode.
+.TP 8
+.B \-team-a-count \fIint\fP
+The number of bogies on team A, in simulation-mode.
+.TP 8
+.B \-team-b-count \fIint\fP
+The number of bogies on team B, in simulation-mode.
+.SH RESOURCES
+Configuration of the targets to ping is best done by setting X Resources.
+.PP
+.TP 8
+.B background \fI(Color)\fP
+See option \-background, above; default value is \fIblack\fP.
+.TP 8
+.B sweepColor \fI(Color)\fP
+See option \-sweep\-color, above; default value is \fI#00ff00\fP.
+.TP 8
+.B scopeColor \fI(Color)\fP
+See option \-scope\-color, above; default value is \fI#003300\fP.
+.TP 8
+.B gridColor \fI(Color)\fP
+See option \-grid\-color, above; default value is \fI#00aa00\fP.
+.TP 8
+.B textColor \fI(Color)\fP
+See option \-text\-color, above; default value is \fI#ffff00\fP.
+.TP 8
+.B ttl \fI(integer)\fP
+See option \-ttl, above; default value is \fI90\fP or one sweep.
+.TP 8
+.B mode \fI(ping)\fP
+See option \-mode, above.  If set to \fBdefault\fP, it will ping hosts if
+possible, otherwise, will run in simulation-mode.
+.TP 8
+.B font \fI(font)\fP
+See option \-font, above; default value is \fIfixed\fP.
+.TP 8
+.B pingTimeout \fI(Integer)\fP
+See option \-pingtimeout, above; default value is 3000.
+.TP 8
+.B pingSource \fIlist | file | subnet\fP
+See option \-ping\-source, above.  Default value is \fIfile\fP.
+.TP 8
+.B pingFile \fIpathname\fP
+See option \-ping\-file, above.  Default value is \fI/etc/hosts\fP.
+.TP 8
+.B pingList \fIhost,host,host...\fP
+See option \-ping\-list, above; default value is \fBlocalhost\fP.
+.TP 8
+.B teamAName \fIstring\fP
+See option \-team\-a\-name, above.  Default value is \fBF18\fP.
+.TP 8
+.B teamBName \fIstring\fP
+See option \-teamBName, above.  Default value is \fBMIG\fP.
+.TP 8
+.B teamACount \fIint\fP
+See option \-teamACount, above.  Default value is 4.
+.TP 8
+.B teamBCount \fIint\fP
+See option \-teamBCount, above.  Default value is 4.
+.SH NOTES
+In order to use the ping sensor, this program must be installed as 
+setuid root, so that it can create an ICMP socket.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1),
+.BR ping (8)
+.SH COPYRIGHT
+Copyright \(co 1998 by Stephen Martin. (smartin@canada.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.
+
+.SH AUTHORS
+Stephen Martin <smartin@canada.com>, 3-nov-98.
+
+Thanks to Tom Kelly for suggesting a modular approach to the sensor
+amoung other things.
+
+Thomas Bahls <thommy@cs.tu-berlin.de> hacked the "ttl" option, 12-jul-98.
+
diff --git a/local/man/man.1/sphere.1 b/local/man/man.1/sphere.1
new file mode 100644 (file)
index 0000000..1632ab9
--- /dev/null
@@ -0,0 +1,58 @@
+.TH XScreenSaver 1 "27-May-97" "X Version 11"
+.SH NAME
+sphere - draws shaded spheres
+.SH SYNOPSIS
+.B sphere
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+
+.SH DESCRIPTION
+The \fIsphere\fP program draws shaded spheres.
+.SH OPTIONS
+.I sphere
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors are chosen randomly.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1988 by Sun Microsystems, Inc.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Sun Microsystems, Inc, 1988.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 27-May-97.
diff --git a/local/man/man.1/spiral.1 b/local/man/man.1/spiral.1
new file mode 100644 (file)
index 0000000..a32db1e
--- /dev/null
@@ -0,0 +1,67 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+spiral - draws moving circular spiral patterns
+.SH SYNOPSIS
+.B spiral
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP]
+
+.SH DESCRIPTION
+The \fIspiral\fP program draws moving circular spiral patterns
+.SH OPTIONS
+.I spiral
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors are chosen randomly.
+.TP 8
+.B \-count \fIinteger\fP
+Default 40.
+.TP 8
+.B \-cycles \fIinteger\fP
+Default 350.
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1994 by Darrick Brown.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Darrick Brown, 1994.
+
+Improved by Peter Schmitzberger <schmitz@coma.sbg.ac.at>, 24-Jul-95.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/spotlight.1 b/local/man/man.1/spotlight.1
new file mode 100644 (file)
index 0000000..31e9f71
--- /dev/null
@@ -0,0 +1,57 @@
+.TH XScreenSaver 1 "05-Apr-1999" "X Version 11"
+.SH NAME
+spotlight - move spotlight around desktop
+.SH SYNOPSIS
+.B spotlight
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-radius \fIpixels\fP]
+.SH DESCRIPTION
+The \fIspotlight\fP program draws random rectangles.
+.SH OPTIONS
+.I spotlight
+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
+Slow it down.
+.TP 8
+.B \-radius \fIpixels\fP
+Radius of the spotlight in pixels.
+.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 1999 by Rick Schultz.  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 CREDITS
+Hacked together by Rick Schultz <rick@skapunx.net>, based on StefView for
+BackSpace by Darcy Brockbank and on several other xscreensaver hacks.
+
diff --git a/local/man/man.1/squiral.1 b/local/man/man.1/squiral.1
new file mode 100644 (file)
index 0000000..9e3ce5f
--- /dev/null
@@ -0,0 +1,76 @@
+.TH XScreenSaver 1 "18-mar-1999" "X Version 11"
+.SH NAME
+squiral - square spirals screensaver
+.SH SYNOPSIS
+.B squiral
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
+[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
+[\-noinstall] [\-visual \fIvisual\fP] [\-fill \fIpercent\fP] [-count
+\fInumber\fP] [-delay \fIusec\fP] [-disorder \fIfraction\fP] [-handedness
+\fIfraction\fP] [-cycle]
+.SH DESCRIPTION
+The \fIsquiral\fP program displays interacting, spiral-producing automata
+
+.SH OPTIONS
+.I squiral
+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 \-fill \fIpercent\fP
+Specify the percent (0-100) of the screen which must be filled before
+the screen is cleared.  60-80 percent are good values.
+.TP 8
+.B \-count \fInumber\fP
+The number of squiralies.  By default, the screen width divided by 32.
+.TP 8
+.B \-delay \fIusec\fP
+The wait between steps.  The default is 1000.
+.TP 8
+.B \-disorder \fIfraction\fP
+The fraction of the time a squiraly will choose a new direction.
+The default is 0.005.
+.TP 8
+.B \-handedness \fIfraction\fP
+The fraction of the time a squiraly will choose to enter lefthanded
+mode.  0.0 means exclusively right-handed behavior, 0.5 (the default) is
+a balance between the two, and 1.0 is exclusively left-handed behaviour.
+.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
+None known
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 1999, by Jeff Epler.  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
+Jeff Epler <jepler@inetnebr.com>, 18-mar-1999
+
diff --git a/local/man/man.1/starfish.1 b/local/man/man.1/starfish.1
new file mode 100644 (file)
index 0000000..63c70d4
--- /dev/null
@@ -0,0 +1,89 @@
+.TH XScreenSaver 1 "14-Jun-97" "X Version 11"
+.SH NAME
+starfish - radially-symmetric throbbing colormap-hacking graphics demo
+.SH SYNOPSIS
+.B starfish
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-delay2 \fIsecs\fP] [\-cycle\-delay2 \fIusecs\fP] [\-thickness \fIpixels\fP] [\-rotation \fIdegrees\fP] [\-duration \fIseconds\fP] [\-colors \fIint\fP] [\-cycle] [\-no\-cycle] [\-blob] [\-no\-blob]
+.SH DESCRIPTION
+The \fIstarfish\fP program draws radially symmetric objects, which expand,
+contract, rotate, and turn inside out.  It uses these shapes to lay down a
+field of smooth colors, and then rotates the colormap.
+.SH OPTIONS
+.I starfish
+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 10000, or about 1/100th second.
+.TP 8
+.B \-cycle\-delay \fImicroseconds\fP
+How long to wait between shifing the colormap by one step.
+Default 100000, or about 1/10th second.
+.TP 8
+.B \-thickness \fIpixels\fP
+How wide each color band should be.  Default 0, meaning random (the chosen
+value will be between 0 and 15.)
+.TP 8
+.B \-rotation \fIdegrees\fP
+How quickly the objects should rotate at each step.  Default 0, meaning 
+random (the chosen value will be between 0 and 12 degrees.)
+.TP 8
+.B \-colors \fIint\fP
+How many colors to use.  Default 200.  The more colors, the smoother the
+transitions will be, and the nicer the resultant images.
+.TP 8
+.B \-cycle
+.TP 8
+.B \-no\-cycle
+Whether to do colormap cycling.  Default true.
+.TP 8
+.B \-duration \fIseconds\fP
+How long to run before choosing a new shape.  Default 30 seconds.
+.TP 8
+.B \-delay2 \fIseconds\fP
+When \fIduration\fP expires, how long to wait before starting a new run.
+Default 5 seconds.
+.TP 8
+.B \-blob
+.TP 8
+.B \-no\-blob
+If \fIblob\fP option is specified, then the raw shapes will be shown, 
+instead of a field of colors generated from them.
+.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 1997 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 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>, 14-Jun-97.
diff --git a/local/man/man.1/strange.1 b/local/man/man.1/strange.1
new file mode 100644 (file)
index 0000000..088a9ee
--- /dev/null
@@ -0,0 +1,58 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+strange - draws strange attractors
+.SH SYNOPSIS
+.B strange
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+
+.SH DESCRIPTION
+The \fIstrange\fP program draws strange attractors
+.SH OPTIONS
+.I strange
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 64.
+The colors are chosen randomly.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1997 by Massimino Pascal.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Massimino Pascal <Pascal.Massimon@ens.fr>, 1997.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/swirl.1 b/local/man/man.1/swirl.1
new file mode 100644 (file)
index 0000000..c36733f
--- /dev/null
@@ -0,0 +1,64 @@
+.TH XScreenSaver 1 "13-May-97" "X Version 11"
+.SH NAME
+swirl - draws swirly color-cycling patterns
+.SH SYNOPSIS
+.B swirl
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+
+.SH DESCRIPTION
+The \fIswirl\fP program draws swirly color-cycling patterns.
+.SH OPTIONS
+.I swirl
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1994 M. Dobie.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+M.Dobie <mrd@ecs.soton.ac.uk>, 1994.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 13-May-97.
diff --git a/local/man/man.1/t3d.1 b/local/man/man.1/t3d.1
new file mode 100644 (file)
index 0000000..54ef3fd
--- /dev/null
@@ -0,0 +1,129 @@
+.TH t3d 1 "Version 1.1" "Time 3D"
+.SH NAME
+t3d \- clock using flying balls to display the time
+.SH SYNOPSIS
+t3d [ \f2 options\f1 ]...
+.SH DESCRIPTION
+.PP
+Time 3D is a clock. It uses flying balls to display the time. This
+balls move and wobble around to give you the impression your
+graphic workstation with its many XStones is doing something.
+.PP
+t3d uses mouse and keyboard to let you fly through the balls. Hit
+.B S
+to speed up, 
+.B A
+to slow down,
+.B Z
+to zoom in and
+.B X
+to zoom out.
+Use the
+.B left mouse button
+to rotate to the left and the
+.B right mouse button
+to rotate the view to the right. Use the
+.B middle mouse button
+to change the optical axis and the moving direction.
+.B 0
+(zero) will stop you.
+.B Q
+quits.
+.PP
+.SH OPTIONS
+.TP
+.BI "-move " "factor"
+Modifies the direction move of t3d. The clock looks 30 degrees*
+.I factor
+to the left and to the right periodically.
+.TP
+.BI "-wobble " "factor"
+Modifies the wobbling (sounds nice :-) of t3d by multiplying the
+default deformation of the clock with
+.I factor.
+.TP
+.B -minutes
+Shows one small ball for every minute, instead of one for every 2.5 minutes.
+.TP
+.BI "-mag " "factor"
+Changes the magnification of t3d. By default, t3d draws a 200x200 image.
+A .I factor
+of 2 means, it will use a 400x400 image.
+.TP
+.BI "-cycle " "period"
+Sets the moving cycle to
+.I period
+seconds. By default, this value is 10 seconds.
+.TP
+.BI "-wait " "microsec"
+Inserts a wait after drawing one view of the clock. By default, t3d waits
+40 ms after each drawing. This helps you to keep the performance loss
+small.
+.TP
+.BI "-fast " "precalc_radius"
+t3d uses bitmap copy to draw precalculated balls. You can specify the radius
+in pixels up to which t3d should precalculate balls. t3d will set a useful
+range by itself using the magnification when it is started.
+.TP
+.B -colcycle
+Draws cyclic the color scale used for the balls in the background instead
+of the normal black.
+.TP
+.BI "-rgb " "red green blue"
+Selects the color in RGB color space of the lightning spot on the balls.
+All the other colors used for balls or
+.B -colcycle
+are less intensive colors of the same hue and saturation. All values
+in range of 0 to 1.
+.TP
+.BI "-hsv " "hue saturation value"
+Selects the color in HSV color space.
+.I hue
+is in degrees from 0 to 360, all other values in range from 0 to 1. It gives
+nice but rather unpredictable results, if you use a saturation of e.g. 2.
+Try it at your own risk.
+.TP
+.BI "-hsvcycle " "speed"
+Rotates the hue axis every 10 seconds*
+.I speed.
+.TP
+.B -help
+Prints a short usage message.
+
+.PP
+.SH AUTHOR
+.PP
+Bernd Paysan
+
+Email: bernd.paysan@gmx.de
+
+Hacked on by jwz@jwz.org for xscreensaver.
+
+.SH ACKNOWLEDGEMENT
+.PP
+Acknowledgement to Georg Acher, who wrote the initial program displaying
+balls.
+
+.SH COPYING
+.PP
+Copy, modify, and distribute T3D either under GPL version 2 or newer, or
+under the standard MIT/X license notice.
+
+.SH DISCLAIMER
+.PP
+T3D is not related to T3D(tm), the massive parallel Alpha--based
+supercomputer from Cray Research. T3D's name was invented in 1991,
+years before the project at Cray Research started. There is no
+relation from T3D to Cray's T3D, even the balls surrounding T3D on
+some posters weren't an inspiration for T3D. I don't know anything
+about the other way round.
+
+The programming style of T3D isn't intented as example of good style,
+but as example of how a fast prototyped demo may look like. T3D wasn't
+created to be useful, it was created to be nice.
+
+.SH KNOWN BUGS
+.PP
+There are no known bugs in T3D. Maybe there are bugs in X. Slight
+changes in the T3D sources are known to show these bugs, e.g. if
+you remove the (int) casting at the XFillArc x,y,w,h-coordinates...
diff --git a/local/man/man.1/vidwhacker.1 b/local/man/man.1/vidwhacker.1
new file mode 100644 (file)
index 0000000..a1ffc10
--- /dev/null
@@ -0,0 +1,81 @@
+.TH XScreenSaver 1 "17-Jun-99" "X Version 11"
+.SH NAME
+vidwhacker - grab images and apply random filters to them
+.SH SYNOPSIS
+.B vidwhacker
+[\-display \fIhost:display.screen\fP] [\-root] [\-window] [\-verbose] [\-stdin] [\-stdout] [\-delay seconds]
+.SH DESCRIPTION
+The \fIvidwhacker\fP program grabs a image from the system's video input,
+applies random image filters to it, and displays the result.  
+The \fIvidwhacker\fP program does not terminate until killed.
+It depends heavily on
+.BR xv (1)
+and the various PBM tools
+(e.g.,
+.BR ppmrelief (1).)
+.SH OPTIONS
+.I vidwhacker
+accepts the following options:
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-window
+Pop up a new window displaying the image.  When a new image has been fully
+processed, destroy that window and pop up a new one.  This is the default.
+.TP 8
+.B \-verbose
+Print diagnostics.
+.TP 8
+.B \-stdin
+Instead of grabbing an image from the system's video input, read an image
+to maniupulate from stdin.  This image must be in 
+.TP 8
+.B \-delay \fIseconds\fP
+How long to sleep between images.  Default 3 seconds (the actual
+elapsed time is significantly longer, due to processing time.)
+.BR ppm (5)
+format.  The program will still perform repeated random image 
+transformations, but it will always use this one image as its starting point.
+.TP 8
+.B \-stdout
+Instead of displaying the image on a window or on the root, write the new
+image on stdout, and exit.
+.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
+Grabbing video images is, of course, very system-dependent.  It works
+on SGIs, and on Linux systems that have the
+.BR qcam (1)
+program.  If your system does things differently, you'll need to edit
+the vidwhacker script (look for the \fIgrab()\fP function.)
+
+It's slow.
+.SH TO DO
+It might be interesting to rewrite this to use
+.BR gimp (1)
+plugins instead of the pbm tools.  It probably wouldn't be any faster,
+but there would be a wider variety of effects available.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1),
+.BR xv (1),
+.BR ppmtogif (1),
+.BR cjpeg (1)
+.SH COPYRIGHT
+Copyright \(co 1998, 1999 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 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>, 18-Jan-98.
diff --git a/local/man/man.1/vines.1 b/local/man/man.1/vines.1
new file mode 100644 (file)
index 0000000..13b7dee
--- /dev/null
@@ -0,0 +1,62 @@
+.TH XScreenSaver 1 "10-May-97" "X Version 11"
+.SH NAME
+vines - draws pseudo-fractal geometric patterns
+.SH SYNOPSIS
+.B vines
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+
+.SH DESCRIPTION
+The \fIvines\fP program is yet another geometric pattern generator, this
+one's claim to fame being a pseudo-fractal looking vine like pattern that
+creates nifty whorls and loops.
+.SH OPTIONS
+.I vines
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+The colors are chosen randomly.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1997 by Tracy Camp.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Tracy Camp <campt@hurrah.com>, 1997.
+
+Tweaked by David Hansen <dhansen@metapath.com>, 21-Mar-97.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/webcollage.1 b/local/man/man.1/webcollage.1
new file mode 100644 (file)
index 0000000..2a11736
--- /dev/null
@@ -0,0 +1,128 @@
+.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 "17-Jun-99" "X Version 11"
+.SH NAME
+webcollage - decorate the screen with random images from the web
+.SH SYNOPSIS
+.B webcollage
+[\-display \fIhost:display.screen\fP] [\-root] [\-verbose]
+[\-delay \fIsecs\fP] [\-timeout \fIsecs\fP] [\-background \fIbg\fP]
+[\-filter \fIcommand\fP] [\-filter2 \fIcommand\fP]
+.SH DESCRIPTION
+The \fIwebcollage\fP program pulls random image off of the World Wide Web
+and scatters them on the root window.  It finds these images by doing
+random web searches, and extracting images from the returned pages.
+It places the images on the root window by using the 
+.BR xv (1),
+.BR giftopnm (1),
+and
+.BR djpeg (1)
+tools.
+
+\fIwebcollage\fP also works as a CGI program: simply make a symbolic
+link to the \fIwebcollage\fP executable called \fInph-webcollage.cgi\fP.
+If this program sees that it is being run as a CGI, then it will behave
+appropriately.  (The generated web page will list the images one after
+another, rather than tiling them together.)
+
+\fIwebcollage\fP is written in
+.BR perl (1)
+and requires Perl 5.
+.SH OPTIONS
+.I webcollage
+accepts the following options:
+.TP 8
+.B \-root
+Draw on the root window.  This option is manditory: drawing to a window
+other than the root window is not yet supported.
+.TP 8
+.B \-verbose \fRor\fP \-v
+Print diagnostics to stderr.  Multiple \fI-v\fP switches increase the
+amount of output.  \fI-v\fP will print out only the URLs of the 
+images; \fI-vv\fP will print all the commands being run; and \fI-vvv\fP
+will print more than you care about.
+.TP 8
+.B \-delay \fIseconds\fP
+How long to sleep between images.  Default 1 second.  (Remember that
+this program probably spends a lot of time waiting for the network.)
+.TP 8
+.B \-background \fIcolor-or-ppm\fP
+What to use for the background onto which images are pasted.  This may be
+a color name, a hexadecimal RGB specification in the form '#rrggbb', or 
+the name of a PPM file.
+.TP 8
+.B \-timeout \fIseconds\fP
+How long to wait for a URL to complete before giving up on it and
+moving on to the next one.
+Default 30 seconds.
+.TP 8
+.B \-filter \fIcommand\fP
+Filter all source images through this command.  The command must take
+a PPM file on stdin, and write a new PPM file to stdout.  One good 
+choice for a filter would be:
+.EX
+webcollage -root -filter 'vidwhacker -stdin -stdout'
+.EE
+.TP 8
+.B \-filter2 \fIcommand\fP
+Filter the \fIcomposite\fP image through this command.  The \fI-filter\fP
+option applies to the sub-images; the \fI-filter2\fP applies to the
+final, full-screen image.
+.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 FILES AND URLS
+.TP
+.I /usr/dict/words \fRor\fP /usr/share/lib/dict/words
+To find the random words to feed to search engines.
+.PP
+.I http://random.yahoo.com/bin/ryl, http://image.altavista.com/
+To find random web pages.
+.SH BUGS
+When drawing on the root window, it always uses the default colormap.
+This is actually a limitation of xv.  But regardless, when using this
+program with xscreensaver, it must be given the \fBdefault-n\fP 
+visual specification (see the
+.BR xscreensaver (1)
+manual for more details.)
+
+Only the GIF and JPEG image formats are supported.
+
+Transparent and animating GIFs are not supported.
+
+It's slow.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1),
+.BR xv (1),
+.BR giftopnm (1),
+.BR djpeg (1),
+.BR vidwhacker (1),
+.BR perl (1)
+.SH COPYRIGHT
+Copyright \(co 1998, 1999 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 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>, 24-May-98.
diff --git a/local/man/man.1/xjack.1 b/local/man/man.1/xjack.1
new file mode 100644 (file)
index 0000000..390e95f
--- /dev/null
@@ -0,0 +1,51 @@
+.TH XScreenSaver 1 "18-sep-97" "X Version 11"
+.SH NAME
+xjack - all work and no play makes jack a dull boy
+.SH SYNOPSIS
+.B xjack
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-delay \fIusecs\fP]
+.SH DESCRIPTION
+All work and no play makes jack a dull boy.  All work and no play makes jack
+a dull boy.  All work and no play makes jack a dull boy.  All work and no
+play makes jack a dull boy.  All work and no play makes jack a dull boy.
+All work and no play makes jack a dull boy.  
+.PP
+.RS 8
+All work and no play makes jack a dull boy.  All work and no play makes jack
+a dull boy.  All work and no play makes jack a dull boy.  All work and no
+play makes jack a dull boy.  All work and no play makes jack a dull boy.
+All work and no play makes jack a dull boy.  
+.PP
+All work and no play makes jack a dull boy.  All work and no play makes jack
+a dull boy.  All work and no play makes jack a dull boy.  All work and no
+play makes jack a dull boy.  All work and no play makes jack a dull boy.  All
+work and no play makes jack a dull boy.  All work and no play makes jack a
+dull boy.  All work and no play makes jack a dull boy.
+.PP
+.RE
+All work and no play makes jack a dull boy.
+All work and no play makes jack a dull boy.  All work and no play makes jack
+a dull boy.  All work and no play makes jack a dull boy.  All work and no
+play makes jack a dull boy.  All work and no play makes jack a dull boy.
+All work and no play makes jack a dull boy.  All work and no play makes jack 
+a dull boy.  
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+All work and no play makes jack a dull boy.  
+.TP 8
+.B XENVIRONMENT
+All work and no play makes jack a dull boy.  All work and no play makes jack
+a dull boy.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 1997 by Jamie Zawinski.  All work and no play makes jack a
+dull boy.  All work and no play makes jack a dull boy.  All work and no play
+makes jack a dull boy.  All work and no play makes jack a dull boy.  All work
+and no play makes jack a fnord dull boy.  All work and no play makes jack a
+dull boy.
+.SH AUTHOR
+Jamie Zawinski <jwz@jwz.org>, 15-Nov-97.
diff --git a/local/man/man.1/xjulia.1 b/local/man/man.1/xjulia.1
new file mode 100644 (file)
index 0000000..1aa6809
--- /dev/null
@@ -0,0 +1,83 @@
+.TH XScreenSaver 1 "28-May-97" "X Version 11"
+.SH NAME
+julia - draws spinning, animating julia-set fractals
+.SH SYNOPSIS
+.B julia
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-mouse] [\-nomouse]
+
+.SH DESCRIPTION
+The \fIjulia\fP program draws spinning, animating julia-set fractals.
+
+It uses ifs {w0 = sqrt(x-c), w1 = -sqrt(x-c)} with random iteration 
+to plot the julia set, and sinusoidially varied parameters for the set,
+and plots parameters with a circle.
+
+One thing to note is that count is the \fIdepth\fP of the search tree,
+so the number of points computed is (2^count)-1.  I use 8 or 9 on a
+dx266 and it looks okay.  The sinusoidal variation of the parameter
+might not be as interesting as it could, but it still gives an idea 
+of the effect of the parameter.
+
+.SH OPTIONS
+.I julia
+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 \-ncolors \fIinteger\fP
+How many colors should be used (if possible).  Default 200.
+The colors used cycle through the hue, making N stops around
+the color wheel.
+.TP 8
+.B \-cycles \fIinteger\fP
+
+.TP 8
+.B \-count \fIinteger\fP
+
+.TP 8
+.B \-mouse
+.TP 8
+.B \-nomouse
+If \fI\-mouse\fP is specified, the control point of the Julia set will
+be derived from the position of the mouse in the window.  When the mouse
+is not in the window, the control point is chosen the normal way.
+.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),
+.BR xlock (1)
+.SH COPYRIGHT
+Copyright \(co 1995 by Sean McCullough.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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
+Sean McCullough <bankshot@mailhost.nmt.edu>, 1995.
+
+Ability to run standalone or with \fIxscreensaver\fP added by 
+Jamie Zawinski <jwz@jwz.org>, 10-May-97.
diff --git a/local/man/man.1/xlyap.1 b/local/man/man.1/xlyap.1
new file mode 100644 (file)
index 0000000..6f69cad
--- /dev/null
@@ -0,0 +1,237 @@
+.TH XLYAP 6X
+.SH NAME
+xlyap \- display an array of Lyapunov exponents graphically
+.SH SYNOPSIS
+.in +8n
+.ti -8n
+\fIxlyap\fR
+[-BLps][-W width][-H height][-o filename][-a 
+\fIn\fR ]
+[-b 
+\fIn\fR ]
+[-w 
+\fIn\fR ]
+[-h 
+\fIn\fR ]
+[-i xstart]
+[-M 
+\fIn\fR ]
+[-R 
+\fIp\fR ]
+[-S 
+\fIn\fR ]
+[-D 
+\fIn\fR ]
+[-F string][-f string][-r 
+\fIn\fR ]
+[-O 
+\fIn\fR ]
+[-C 
+\fIn\fR ]
+[-c 
+\fIn\fR ]
+[-m 
+\fIn\fR ]
+[-x xpos]
+[-y ypos]
+.in -8n
+.SH DESCRIPTION
+\fIxlyap\fR
+generates and graphically displays an array of Lyapunov exponents for a 
+variety of iterated periodically forced non-linear maps of the unit interval.
+.SH OPTIONS
+.TP 8
+-random
+A good choice for use with xscreensaver: picks random parameters from 
+a built-in list.
+.TP 8
+-C \fIn\fP
+Specifies the minimum color index to be used for negative exponents
+.TP
+-D \fIn\fP
+Specifies the "dwell" or number of iterations over which to average in order
+to calculate the Lyapunov exponent. Default is 400.
+.TP
+-B 
+Causes the stop, go, spin and quit buttons to be displayed.
+.TP
+-H \fIn\fP
+Specifies the height of the window. Default is 256.
+.TP
+-L 
+Indicates use log(x) + log(y) rather than log(xy).
+.TP
+-M \fIr\fP
+Specifies the real value to compare exponent values to for indexing into
+a color wheel. The default value is 1.0.
+.TP
+-O \fIn\fP
+Specifies the minimum color index to be used for positive exponents
+.TP
+-R \fIp\fP
+Specifies pseudo-random forcing with probability \fIp\fP of using parameter
+value 'a'.
+.TP
+-S \fIn\fP
+Specifies the "settle" or number of iterations prior to the beginning of
+the calculation of the Lyapunov exponent. Default is 200.
+.TP
+-W \fIn\fP
+Specifies the width of the window. Default is 256.
+.TP
+-a \fIr\fP
+Specifies the real value to use as the minimum parameter value of the 
+horizontal axis. Default is 3.0 for the logistic map.
+.TP
+-b \fIn\fP
+Specifies the real value to use as the minimum parameter value of the 
+vertical axis. Default is 3.0 for the logistic map.
+.TP
+-c \fIn\fP
+Selects one of six different color wheels to use. The default color
+wheel is a rainbow palette.
+.TP
+-F \fI10101010\fP
+Specifies the "Function" forcing function to use. The example above would 
+alternate between iterating the circle and logistic maps. An argument of
+"-F 2323" would alternate between left and right logistic maps. The default
+is to only use the single specified map (see the description of -m).
+.TP
+-f \fIabbabaab\fP
+Specifies the forcing function to use. The default is to alternate between
+the "a" parameter and the "b" parameter.
+.TP
+-h \fIr\fP
+Specifies the real value to be used as the range over which the vertical
+parameter values vary. The default is 1.0.
+.TP
+-i \fIr\fP
+Specifies the real value of the initial condition to use. Default is 0.05.
+.TP
+-m \fIn\fP
+Selects between available non-linear maps of the unit interval. A value of
+0 specifies the logistic map. A value of 1, the circle map. A value of 2,
+the left-logistic. A value of 3, the right-logistic. A value of 4, the
+double-logistic. The default is 0, the logistic map.
+.TP
+-o \fIfilename\fP
+Specifies the output filename to be used. If the -o option is given, this
+file will automatically be written out at the completion of the drawing.
+If it is not specified, a default filename of lyap.out is used and only
+written if the 'f' or 'F' keys are pressed during a run. The format of the
+output file is PPM for color and PGM for monochrom. The parameters used to
+calculate the picture are included as comments at the beginning of the output
+file.
+.TP
+-p
+Switches color indices for negative and positive exponents. Generally,
+causes negative exponents to be displayed in more detail while darkening
+and narrowing the color range for positive exponents. This can be toggled
+during runtime by pressing the 'p' key.
+.TP
+-r \fIn\fP
+Specifies the maximum rgb value to be used. Default is 35000.
+.TP
+-s \fIn\fP
+Specifies the length of the color wheel spin.
+.TP
+-u
+Produces a usage message.
+.TP
+-v 
+Prints out the various values to be used and exits.
+.TP
+-w \fIr\fP
+Specifies the real value to be used as the range over which the horizontal
+parameter values vary. The default is 1.0.
+.TP
+-x \fIn\fP
+Specifies the x screen coordinate of the window (default is 256).
+.TP
+-y \fIn\fP
+Specifies the y screen coordinate of the window (default is 256).
+.sp 2
+.SH NOTES
+.sp
+During display, pressing any mouse button allows you to select the area to
+be investigated with the mouse. The upper left hand corner of the desired
+area is the location of the cursor when the button is pressed. The lower
+right hand corner is specified by the cursor when the button is released.
+.sp 2
+Use of the keys 
+\fIbBeEfFkKjJmnrRsSwWxXqQ\fP
+indicates:
+.sp
+.ti 10
+(<) Halve dwell value.
+.ti 10
+(>) Double dwell value.
+.ti 10
+([) Halve settle value.
+.ti 10
+(]) Double settle value.
+.ti 10
+(B or b) Toggle button display on/off
+.ti 10
+(E or e) Recalculate the indices into the color wheel using a different method
+.ti 10
+(F or f) Save current screen to ouput file (not yet implemented)
+.ti 10
+(H or h or ?) Display brief help message
+.ti 10
+(i) Decrement the interval between stripes for the striped color map.
+.ti 10
+(I) Increment the interval between stripes for the striped color map.
+.ti 10
+(K) Decrease value exponents are compared against by 0.05.
+.ti 10
+(J) Increase value exponents are compared against by 0.05.
+.ti 10
+(M) Decrease value exponents are compared against by 0.005.
+.ti 10
+(N) Increase value exponents are compared against by 0.005.
+.ti 10
+(m) Increment the map index, changing the map to be iterated.
+.ti 10
+(P or p) Toggle positive/negative exponent display.
+.ti 10
+(r) Redraw the window using previously calculated exponents.
+.ti 10
+(R) Redraw the window using the newly set dwell and/or settle values.
+.ti 10
+(S) Spin the color wheel
+.ti 10
+(s) Halve the length of the spin and spin the color wheel
+.ti 10
+(u) Go up to the window just prior to the most recent zoom.
+.ti 10
+(U) Go all the way up to the original window.
+.ti 10
+(V or v) Display values of various parameters currently in use
+.ti 10
+(W or w) Use next color map.
+.ti 10
+(X or x) Clear window
+.ti 10
+(Q or q) quit
+.sp 2
+.SH AUTHOR
+.nf
+        Ronald Joe Record
+     The Santa Cruz Operation 
+          P.O. Box 1900
+       Santa Cruz, CA 95061
+            rr@sco.com
+.fi
+.sp 2
+.SH ACKNOWLEDGEMENTS
+.PP
+The algorithm was taken from the September 1991 Scientific American article
+by A. K. Dewdney who gives credit to Mario Markus of the Max Planck Institute
+for its creation. Additional information and ideas were gleaned from the
+discussion on alt.fractals involving Stephen Hall, Ed Kubaitis, Dave Platt
+and Baback Moghaddam. Assistance with colormaps and spinning color wheels
+and X was gleaned from Hiram Clawson. Rubber banding code was adapted from
+an existing Mandelbrot program written by Stacey Campbell.
+
+Viciously hacked for xscreensaver by Jamie Zawinski, 20-Nov-97.
diff --git a/local/man/man.1/xroger.1 b/local/man/man.1/xroger.1
new file mode 100644 (file)
index 0000000..e66af96
--- /dev/null
@@ -0,0 +1,52 @@
+.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.
diff --git a/local/man/man.1/xscreensaver-command.1 b/local/man/man.1/xscreensaver-command.1
new file mode 100644 (file)
index 0000000..5e3b1fd
--- /dev/null
@@ -0,0 +1,217 @@
+.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 "20-Jun-99 (3.15)" "X Version 11"
+.SH NAME
+xscreensaver-command - control a running xscreensaver process
+.SH SYNOPSIS
+.B xscreensaver-command
+[\-help] \
+[\-demo] \
+[\-prefs] \
+[\-activate] \
+[\-deactivate] \
+[\-cycle] \
+[\-next] \
+[\-prev] \
+[\-select \fIn\fP] \
+[\-exit] \
+[\-restart] \
+[\-lock] \
+[\-throttle] \
+[\-unthrottle] \
+[\-version] \
+[\-time]
+.SH DESCRIPTION
+The \fIxscreensaver\-command\fP program controls a running \fIxscreensaver\fP
+process by sending it client-messages.
+
+.BR xscreensaver (1)
+has a client-server model: the xscreensaver process is a
+daemon that runs in the background; it is controlled by other
+foreground programs such as \fIxscreensaver-command\fP and
+.BR xscreensaver\-demo (1).
+
+This program, \fIxscreensaver-command\fP, is a command-line-oriented tool; the 
+.BR xscreensaver\-demo (1).
+program is a graphical tool.
+.SH OPTIONS
+.I xscreensaver-command
+accepts the following command-line options:
+.TP 8
+.B \-help
+Prints a brief summary of command-line options.
+.TP 8
+.B \-demo
+This just launches the
+.BR xscreensaver\-demo (1)
+program, in which one can experiment with the various graphics hacks
+available, and edit parameters.
+.TP 8
+.B \-demo \fP\fInumber\fP
+When the \fI\-demo\fP option is followed by an integer, it instructs 
+the \fIxscreensaver\fP daemon to run that hack, and wait for the user
+to click the mouse before deactivating (i.e., mouse motion does not
+deactivate.)  This is the mechanism by which
+.BR xscreensaver\-demo (1)
+communicates with the
+.BR xscreensaver (1)
+daemon.  (The first hack in the list is numbered 1, not 0.)
+.TP 8
+.B \-prefs
+Like the no-argument form of \fI\-demo\fP, but brings up that program's
+Preferences panel by default.
+.TP 8
+.B \-activate
+Tell xscreensaver to turn on immediately (that is, blank the screen, as if
+the user had been idle for long enough.)  The screensaver will deactivate as
+soon as there is any user activity, as usual.
+
+It is useful to run this from a menu; you may wish to run it as
+.EX
+sleep 5 ; xscreensaver-command -activate
+.EE
+to be sure that you have time to take your hand off the mouse before
+the screensaver comes on.  (Because if you jiggle the mouse, xscreensaver
+will notice, and deactivate.)
+.TP 8
+.B \-deactivate
+If the screensaver is active (the screen is blanked), this command will
+deactivate it just as if there had been keyboard or mouse activity.  
+If locking is enabled, then the screensaver will prompt for a password
+as usual.
+.TP 8
+.B \-cycle
+If the screensaver is active (the screen is blanked), then stop the current
+graphics demo and run a new one (chosen randomly.)
+.TP 8
+.B \-next
+This is like either \fI\-activate\fP or \fI\-cycle\fP, depending on which is
+more appropriate, except that the graphics hack that will be run is the next
+one in the list, instead of a randomly-chosen one.  In other words, 
+repeatedly executing -next will cause the xscreensaver process to invoke each
+graphics demo sequentially.  (Though using the \fI\-demo\fP option is probably
+an easier way to accomplish that.)
+.TP 8
+.B \-prev
+This is like \fI\-next\fP, but cycles in the other direction.
+.TP 8
+.B \-select \fInumber\fP
+Like \fI\-activate\fP, but runs the \fIN\fPth element in the list of hacks.
+By knowing what is in the \fIprograms\fP list, and in what order, you can use
+this to activate the screensaver with a particular graphics demo.  (The first
+element in the list is numbered 1, not 0.)
+.TP 8
+.B \-exit
+Causes the xscreensaver process to exit gracefully.  This is roughly the same
+as killing the process with
+.BR kill (1),
+but it is easier, since you don't need to first figure out the pid.  
+
+.B Warning:
+never use \fIkill -9\fP with \fIxscreensaver\fP while the screensaver is
+active.  If you are using a virtual root window manager, that can leave
+things in an inconsistent state, and you may need to restart your window
+manager to repair the damage.
+.TP 8
+.B \-lock
+Tells the running xscreensaver process to lock the screen immediately.  
+This is like \fI\-activate\fP, but forces locking as well, even if locking
+is not the default (that is, even if xscreensaver's \fIlock\fP resource is
+false, and even if the \fIlockTimeout\fP resource is non-zero.)
+
+Note that locking doesn't work unless the \fIxscreensaver\fP process is
+running as you.  See 
+.BR xscreensaver (1)
+for details.
+.TP 8
+.B \-throttle
+Temporarily switch to ``blank screen'' mode, and don't run any display modes
+at all, until the screensaver is next de-activated.  This is useful if you're
+using a machine remotely, and you find that some display modes are using too
+much CPU.  
+
+(If you want to do this \fIpermanently\fP, that is, you want the screen saver
+to only blank the screen and not run demos at all, then set the \fIprograms\fP
+resource to an empty list:  See
+.BR xscreensaver (1)
+for details.)
+.TP 8
+.B \-unthrottle
+Turn `-throttle' mode off and resume normal behavior.
+.TP 8
+.B \-version
+Prints the version of xscreensaver that is currently running on the display:
+that is, the actual version number of the running xscreensaver background 
+process, rather than the version number of xscreensaver-command.  (To see
+the version number of \fIxscreensaver-command\fP itself, use 
+the \fI\-help\fP option.)
+.TP 8
+.B \-time
+Prints the time at which the screensaver last activated or 
+deactivated (roughly, how long the user has been idle or non-idle: but 
+not quite, since it only tells you when the screen became blanked or
+un-blanked.)
+.TP 8
+.B \-restart
+Causes the screensaver process to exit and then restart with the same command
+line arguments as last time.  Do this after you've changed the resource
+database, to cause xscreensaver to notice the changes.
+
+.B Warning:
+if you have a \fI.xscreensaver\fP file, this might not do what you 
+expect.  You're probably better off killing the existing 
+xscreensaver (with \fIxscreensaver\-command -exit\fP) and then
+launching it again.
+
+The important point is, you need to make sure that the xscreensaver 
+process is running as you.  If it's not, it won't be reading the 
+right \fI.xscreensaver\fP file.
+.SH DIAGNOSTICS
+If an error occurs while communicating with the \fIxscreensaver\fP daemon, or
+if the daemon reports an error, a diagnostic message will be printed to
+stderr, and \fIxscreensaver-command\fP will exit with a non-zero value.  If
+the command is accepted, an indication of this will be printed to stdout, and
+the exit value will be zero.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the host and display number of the screen whose saver is
+to be manipulated.
+.TP 8
+.B PATH
+to find the executable to restart (for the \fI\-restart\fP command).  
+Note that this variable is consulted in the environment of 
+the \fIxscreensaver\fP process, not the \fIxscreensaver-command\fP process.
+.SH UPGRADES
+The latest version of
+.BR xscreensaver (1)
+and related tools can always be found at http://www.jwz.org/xscreensaver/
+.SH "SEE ALSO"
+.BR X (1),
+.BR xscreensaver (1)
+.BR xscreensaver\-demo (1)
+.SH COPYRIGHT
+Copyright \(co 1992, 1993, 1997, 1998, 1999
+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
+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>, 13-aug-92.
+
+Please let me know if you find any bugs or make any improvements.
diff --git a/local/man/man.1/xscreensaver-demo.1 b/local/man/man.1/xscreensaver-demo.1
new file mode 100644 (file)
index 0000000..25cc835
--- /dev/null
@@ -0,0 +1,208 @@
+.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 "20-Jun-99 (3.15)" "X Version 11"
+.SH NAME
+xscreensaver-demo - interactively control the background xscreensaver daemon
+.SH SYNOPSIS
+.B xscreensaver\-demo
+[\-display \fIhost:display.screen\fP] [\-prefs] [\-xrm \fIresources\fP]
+.SH DESCRIPTION
+The \fIxscreensaver\-demo\fP program is a graphical front-end for 
+setting the parameters used by the background
+.BR xscreensaver (1)
+daemon.
+It is essentially two things: a tool for editing the \fI~/.xscreensaver\fP
+file; and a tool for demoing the various graphics hacks that 
+the \fIxscreensaver\fP daemon will launch.
+
+The main dialog box contains a scrolling list, a text field, and a number 
+of buttons.  
+
+Double-clicking on one of the programs in the list will run it.  The screen
+will go black, and the program will run in full-screen mode, just as it would
+if the \fIxscreensaver\fP daemon had launched it.  Clicking the mouse again
+will stop the demo and un-blank the screen, making the dialog box visible 
+again.
+
+Single-clicking in the list will place the indicated program and its args
+in the text field to be edited.  Edit the arguments and hit return to run
+the program with the parameters you have specified.  This will also save
+your changes to your \fI~/.xscreensaver\fP file: so any changes you make
+in this way are persistent.
+
+If one of the lines in the scrolling list begins with the character "-",
+then that means that the program is disabled: \fIxscreensaver\fP will not
+select it to be run (though you can still try it out by clicking on it.)
+Rather than just deleting the programs you don't want to run, you might
+want to disable them in this way instead, so that you can more easily change
+your mind later.
+
+If the line begins with the name of a visual, followed by a colon, then
+that program will only be run on that kind of visual.  For example, you can
+specify that a particular program should only be run if color is available,
+and another should only be run in monochrome.  See the discussion of 
+the \fIprograms\fP parameter in the \fIConfiguration\fP section of the
+.BR xscreensaver (1)
+manual.
+
+The buttons are:
+.TP 8
+.B Run Next
+Clicking this button will run the next program in the list after the 
+currently-selected one, and will wrap around to the top when it reaches
+the bottom.
+.TP 8
+.B Run Previous
+Opposite of Run Next; at the top, it wraps around to the bottom.
+.TP 8
+.B Preferences
+This pops up a second dialog box, in which you have the option to 
+interactively change most of the screensaver's operational parameters,
+such as its timeouts, and whether it should lock the screen.  When you
+click OK, your chosen settings will take effect immediately, and will
+also be saved to the \fI~/.xscreensaver\fP file in your home directory,
+so that the settings will persist next time.
+.TP 8
+.B Quit
+Exits the \fIxscreensaver-demo\fP program.  The background \fIxscreensaver\fP
+daemon will continue running as before.
+.P
+The Preferences dialog box lets you change the following settings.
+
+(There are more settings available, but these are the most commonly used
+ones; see the manual for
+.BR xscreensaver (1)
+for other parameters that can be set by editing the \fI~/.xscreensaver\fP
+file, or the X resource database.)
+.TP 8
+.B Saver Timeout
+After the user has been idle this long, the \fIxscreensaver\fP daemon
+will blank the screen.
+.TP 8
+.B Cycle Timeout
+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 8
+.B Verbose\ 
+Whether to print lots of debugging information.
+.TP 8
+.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
+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 8
+.B Fade Colormap
+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.)
+.TP 8
+.B Unfade Colormap
+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
+colormaps, and when \fIFade Colormap\fP is also selected.
+.TP 8
+.B Fade Duration
+When fading or unfading are selected, this controls how long the fade will
+take.
+.TP 8
+.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 8
+.B Require Password
+Whether the screen saver should lock the screen when it activates.
+.TP 8
+.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 8
+.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.
+.SH COMMAND-LINE OPTIONS
+.I xscreensaver\-demo
+accepts the following command line options.
+.TP 8
+.B \-display \fIhost:display.screen\fP
+The X display to use.  The \fIxscreensaver\-demo\fP program will open its
+window on that display, and also control the \fIxscreensaver\fP daemon that
+is managing that same display.
+.TP 8
+.B \-prefs
+Start up in Preferences mode: this is just like launching the program with
+no arguments, and then pressing the \fIPreferences\fP button.
+.P
+It is important that the \fIxscreensaver\fP and \fIxscreensaver\-demo\fP
+processes be running on the same machine, or at least, on two machines
+that share a file system.  When \fIxscreensaver\-demo\fP writes a new version
+of the \fI~/.xscreensaver\fP file, it's important that the \fIxscreensaver\fP
+see that same file.  If the two processes are seeing 
+different \fI~/.xscreensaver\fP files, things will malfunction.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B PATH
+to find the sub-programs to run.  However, note that the sub-programs 
+are actually launched by the \fIxscreensaver\fP daemon, not 
+by \fIxscreensaver-demo\fP itself.  So, what matters is what \fB$PATH\fP
+the \fIxscreensaver\fP program sees.
+.TP 8
+.B HOME
+for the directory in which to read and write the \fI.xscreensaver\fP file.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH UPGRADES
+The latest version can always be found at 
+http://www.jwz.org/xscreensaver/
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1),
+.BR xscreensaver\-command (1)
+.SH COPYRIGHT
+Copyright \(co 1992, 1993, 1997, 1998, 1999
+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
+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>, 13-aug-92.
+
+Please let me know if you find any bugs or make any improvements.
diff --git a/local/man/man.1/xscreensaver.1 b/local/man/man.1/xscreensaver.1
new file mode 100644 (file)
index 0000000..34c1d80
--- /dev/null
@@ -0,0 +1,1358 @@
+.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 "20-Jun-99 (3.15)" "X Version 11"
+.SH NAME
+xscreensaver - graphics hack and screen locker, launched when the user is idle
+.SH SYNOPSIS
+.B xscreensaver
+[\-display \fIhost:display.screen\fP] \
+[\-timeout \fIint\fP] \
+[\-cycle \fIint\fP] \
+[\-lock\-mode] \
+[\-no\-lock\-mode] \
+[\-lock\-timeout \fIint\fP] \
+[\-visual \fIvisual\fP] \
+[\-install] \
+[\-no\-install] \
+[\-verbose] \
+[\-silent] \
+[\-timestamp] \
+[\-capture\-stderr] \
+[\-no\-capture\-stderr] \
+[\-splash] \
+[\-no\-splash] \
+[\-nice \fIint\fP] \
+[\-mit\-extension] \
+[\-no\-mit\-extension] \
+[\-sgi\-extension] \
+[\-no\-sgi\-extension] \
+[\-xidle\-extension] \
+[\-no\-xidle\-extension] \
+[\-proc\-interrupts] \
+[\-no\-proc\-interrupts] \
+[\-xrm \fIresources\fP]
+.SH DESCRIPTION
+The \fIxscreensaver\fP program waits until the keyboard and mouse have been 
+idle for a period, and then runs a graphics demo chosen at random.  It 
+turns off as soon as there is any mouse or keyboard activity.
+
+This program can lock your terminal in order to prevent others from using it,
+though its default mode of operation is merely to display pretty pictures on
+your screen when it is not in use.  
+
+The benefit that this program has over the combination of the
+.BR xlock (1)
+and
+.BR xautolock (1)
+programs is the ease with which new graphics hacks can be installed.  You
+don't need to recompile (or even re-run) this program to add a new display
+mode.
+.SH GETTING STARTED
+For the impatient, try this:
+.EX
+xscreensaver &
+xscreensaver-demo
+.EE
+The
+.BR xscreensaver-demo (1)
+program should pop up a dialog box that lets you experiment with the
+xscreensaver settings and graphics modes.
+
+.B Note:
+unlike
+.BR xlock (1),
+xscreensaver has a client-server model: the \fIxscreensaver\fP program is a
+daemon that runs in the background; it is controlled by the foreground
+.BR xscreensaver-demo (1)
+and
+.BR xscreensaver-command (1)
+programs.
+.SH CONFIGURATION
+Options to \fIxscreensaver\fP are specified in one of two places: in 
+a \fI.xscreensaver\fP file in your home directory; or in the X resource
+database.  If the \fI.xscreensaver\fP file exists, it overrides any settings
+in the resource database.  
+
+The syntax of the \fI.xscreensaver\fP file is similar to that of
+the \fI.Xdefaults\fP file; for example, to set the \fItimeout\fP paramter
+in the \fI.xscreensaver\fP file, you would write the following:
+.EX
+timeout: 5
+.EE
+whereas, in the \fI.Xdefaults\fP file, you would write
+.EX
+xscreensaver.timeout: 5
+.EE
+If you change a setting in the \fI.xscreensaver\fP file while xscreensaver
+is already running, it will notice this, and reload the file.  (The file will
+be reloaded the next time the screen saver needs to take some action, such as
+blanking or unblanking the screen, or picking a new graphics mode.)
+
+If you change a setting in your X resource database, or if you want
+xscreensaver to notice your changes immediately instead of the next time
+it wakes up, then you will need to tell the running xscreensaver process
+to re-initialize itself, like so:
+.EX
+xscreensaver-command -restart
+.EE
+Note that if you changed the \fI.Xdefaults\fP file, you might also need to run
+.BR xrdb (1):
+.EX
+xrdb < ~/.Xdefaults
+.EE
+If you want to set the system-wide defaults, then make your edits to
+the xscreensaver app-defaults file, which should have been installed
+when xscreensaver itself was installed.  The app-defaults file will
+usually be named /usr/lib/X11/app-defaults/XScreenSaver, but different
+systems might keep it in a different place (for example,
+/usr/openwin/lib/app-defaults/XScreenSaver on Solaris.)
+
+When settings are changed in the Preferences dialog box (see above)
+the current settings will be written to the \fI.xscreensaver\fP file.
+(The \fI.Xdefaults\fP file and the app-defaults file will never be
+written by xscreensaver itself.)
+.PP
+.TP 8
+.B timeout\fP (class \fBTime\fP)
+The screensaver will activate (blank the screen) after the keyboard and
+mouse have been idle for this many minutes.  Default 10 minutes.
+.TP 8
+.B cycle\fP (class \fBTime\fP)
+After the screensaver has been running for this many minutes, the currently
+running graphics-hack sub-process will be killed (with \fBSIGTERM\fP), and a
+new one started.  If this is 0, then the graphics hack will never be changed:
+only one demo will run until the screensaver is deactivated by user activity.
+Default 10 minutes.
+.TP 8
+.B lock\fP (class \fBBoolean\fP)
+Enable locking: before the screensaver will turn off, it will require you 
+to type the password of the logged-in user (really, the person who ran
+xscreensaver), or the root password.  (\fBNote:\fP this doesn't work if the
+screensaver is launched by
+.BR xdm (1)
+because it can't know the user-id of the logged-in user.  See 
+the ``\fIUsing XDM(1)\fP'' section, below.
+.TP 8
+.B lockTimeout\fP (class \fBTime\fP)
+If locking is enabled, this controls the length of the ``grace period''
+between when the screensaver activates, and when the screen becomes locked.
+For example, if this is 5, and \fI\-timeout\fP is 10, 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, \fI\-lock\-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 8
+.B passwdTimeout\fP (class \fBTime\fP)
+If the screen is locked, then this is how many seconds the password dialog box
+should be left on the screen before giving up (default 30 seconds.)  This
+should not be too large: the X server is grabbed for the duration that the
+password dialog box is up (for security purposes) and leaving the server 
+grabbed for too long can cause problems.
+.TP 8
+.B visualID\fP (class \fBVisualID\fP)
+Specify which X visual to use by default.  (Note carefully that this resource
+is called \fBvisualID\fP, not merely \fBvisual\fP; if you set the \fBvisual\fP
+resource instead, things will malfunction in obscure ways for obscure reasons.)
+
+Legal values for the \fBVisualID\fP resource are:
+.RS 8
+.TP 8
+.B default
+Use the screen's default visual (the visual of the root window.)  
+This is the default.
+.TP 8
+.B best
+Use the visual which supports the most colors.  Note, however, that the
+visual with the most colors might be a TrueColor visual, which does not
+support colormap animation.  Some programs have more interesting behavior
+when run on PseudoColor visuals than on TrueColor.
+.TP 8
+.B mono
+Use a monochrome visual, if there is one.
+.TP 8
+.B gray
+Use a grayscale or staticgray visual, if there is one and it has more than
+one plane (that is, it's not monochrome.)
+.TP 8
+.B color
+Use the best of the color visuals, if there are any.
+.TP 8
+.B GL
+Use the visual that is best for OpenGL programs.  (OpenGL programs have
+somewhat different requirements than other X programs.)
+.TP 8
+.I class
+where \fIclass\fP is one of \fBStaticGray\fP, \fBStaticColor\fP, 
+\fBTrueColor\fP, \fBGrayScale\fP, \fBPseudoColor\fP, or \fBDirectColor\fP.
+Selects the deepest visual of the given class.
+.TP 8
+.I number
+where \fInumber\fP (decimal or hex) is interpreted as a visual id number, 
+as reported by the
+.BR xdpyinfo (1)
+program; in this way you can have finer control over exactly which visual
+gets used, for example, to select a shallower one than would otherwise
+have been chosen.
+
+.RE
+.RS 8
+Note that this option specifies only the \fIdefault\fP visual that will
+be used: the visual used may be overridden on a program-by-program basis.
+See the description of the \fBprograms\fP resource, below.
+.RE
+.TP 8
+.B installColormap\fP (class \fBBoolean\fP)
+Install a private colormap while the screensaver is active, so that the
+graphics hacks can get as many colors as possible.  This is the 
+default.  (This only 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-hack basis: see the discussion of
+the \fBdefault\-n\fP name in the section about the \fBprograms\fP resource.
+.TP 8
+.B verbose\fP (class \fBBoolean\fP)
+Whether to print diagnostics.  Default false.
+.TP 8
+.B timestamp\fP (class \fBBoolean\fP)
+Whether to print the time of day along with any other diagnostic messages.
+Default false.
+.TP 8
+.B splash\fP (class \fBBoolean\fP)
+Whether to display a splash screen at startup.  Default true.
+.TP 8
+.B splashDuration\fP (class \fBTime\fP)
+How long the splash screen should remain visible; default 5 seconds.
+.TP 8
+.B helpURL\fP (class \fBURL\fP)
+The splash screen has a \fIHelp\fP button on it.  When you press it, it will
+display the web page indicated here in your web browser.
+.TP 8
+.B loadURL\fP (class \fBLoadURL\fP)
+This is the shell command used to load a URL into your web browser.
+The default setting will load it into Netscape if it is already running,
+otherwise, will launch a new Netscape looking at the \fIhelpURL\fP.
+.TP 8
+.B demoCommand\fP (class \fBDemoCommand\fP)
+This is the shell command run when the \fIDemo\fP button on the splash window
+is pressed.  It defaults to \fIxscreensaver\-demo\fP.
+.TP 8
+.B prefsCommand\fP (class \fBPrefsCommand\fP)
+This is the shell command run when the \fIPrefs\fP button on the splash window
+is pressed.  It defaults to \fIxscreensaver\-demo\ \-prefs\fP.
+.TP 8
+.B nice\fP (class \fBNice\fP)
+The sub-processes created by \fIxscreensaver\fP will be ``niced'' to this
+level, so that they are given lower priority than other processes on the
+system, and don't increase the load unnecessarily.  The default is 10.  
+
+(Higher numbers mean lower priority; see 
+.BR nice (1)
+for details.)
+.TP 8
+.B fade\fP (class \fBBoolean\fP)
+If this is true, 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\fP timer expires.)
+Default: true.  
+.TP 8
+.B unfade\fP (class \fBBoolean\fP)
+If this is true, 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 colormaps, and if \fIfade\fP is true
+as well.  Default false.
+.TP 8
+.B fadeSeconds\fP (class \fBTime\fP)
+If \fIfade\fP is true, this is how long the fade will be in 
+seconds (default 3 seconds.)
+.TP 8
+.B fadeTicks\fP (class \fBInteger\fP)
+If \fIfade\fP is true, this is 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 \fIfadeSeconds\fP if
+your server isn't fast enough to keep up.  Default 20.
+.TP 8
+.B captureStderr\fP (class \fBBoolean\fP)
+Whether \fIxscreensaver\fP should redirect its stdout and stderr streams to
+the window itself.  Since its nature is to take over the screen, you would not
+normally see error messages generated by xscreensaver or the sub-programs it
+runs; this resource will cause the output of all relevant programs to be
+drawn on the screensaver window itself, as well as being written to the
+controlling terminal of the screensaver driver process.  Default true.
+.TP 8
+.B font\fP (class \fBFont\fP)
+The font used for the stdout/stderr text, if \fBcaptureStderr\fP is true.
+Default \fB*\-medium\-r\-*\-140\-*\-m\-*\fP (a 14 point fixed-width font.)
+.TP 8
+.B programs\fP (class \fBPrograms\fP)
+The graphics hacks which \fIxscreensaver\fP runs when the user is idle.
+The value of this resource is a string, one \fIsh\fP-syntax command per line.  
+Each line must contain exactly one command: no semicolons, no ampersands.
+
+When the screensaver starts up, one of these is selected at random, and
+run.  After the \fIcycle\fP period expires, it is killed, and another
+is selected and run.
+
+If the value of this resource is empty, then no programs will be run; the
+screen will simply be made black.
+
+If the display has multiple screens, then a different program will be run
+for each screen.  (All screens are blanked and unblanked simultaniously.)
+
+Note that you must escape the newlines; here is an example of how you
+might set this in your \fI~/.xscreensaver\fP file:
+
+.RS 8
+.EX
+programs:  \\
+       qix -root                          \\n\\
+       ico -r -faces -sleep 1 -obj ico    \\n\\
+       xdaliclock -builtin2 -root         \\n\\
+       xv -root -rmode 5 image.gif -quit  \\n
+.EE
+.RE
+.RS 8
+Make sure your \fB$PATH\fP environment variable is set up correctly
+\fIbefore\fP xscreensaver is launched, or it won't be able to find the
+programs listed in the \fIprograms\fP resource.
+
+To use a program as a screensaver, two things are required: that that
+program draw on the root window (or be able to be configured to draw on
+the root window); and that that program understand ``virtual root''
+windows, as used by virtual window managers such as
+.BR tvtwm (1).
+(Generally, this is accomplished by just including the \fI"vroot.h"\fP 
+header file in the program's source.)
+
+If there are some programs that you want to run only when using a color
+display, and others that you want to run only when using a monochrome
+display, you can specify that like this:
+.EX
+       mono:   mono-program  -root        \\n\\
+       color:  color-program -root        \\n\\
+.EE
+.RE
+.RS 8
+More generally, you can specify the kind of visual that should be used for
+the window on which the program will be drawing.  For example, if one 
+program works best if it has a colormap, but another works best if it has
+a 24-bit visual, both can be accommodated:
+.EX
+       PseudoColor: cmap-program  -root   \\n\\
+       TrueColor:   24bit-program -root   \\n\\
+.EE
+.RE
+.RS 8
+In addition to the symbolic visual names described above (in the discussion
+of the \fIvisualID\fP resource) one other visual name is supported in
+the \fIprograms\fP list:
+.RS 1
+.TP 4
+.B default-n
+This is like \fBdefault\fP, but also requests the use of the default colormap,
+instead of a private colormap.  (That is, it behaves as if 
+the \fI\-no\-install\fP command-line option was specified, but only for
+this particular hack.)  This is provided because some third-party programs
+that draw on the root window (notably: 
+.BR xv (1),
+and
+.BR xearth (1))
+make assumptions about the visual and colormap of the root window: 
+assumptions which xscreensaver can violate.
+
+.RE
+If you specify a particular visual for a program, and that visual does not
+exist on the screen, then that program will not be chosen to run.  This
+means that on displays with multiple screens of different depths, you can
+arrange for appropriate hacks to be run on each.  For example, if one screen
+is color and the other is monochrome, hacks that look good in mono can be 
+run on one, and hacks that only look good in color will show up on the other.
+.RE
+.PP
+.PP
+Normally you won't need to change the following resources:
+.PP
+.TP 8
+.B pointerPollTime\fP (class \fBTime\fP)
+When server extensions are not in use, this controls how 
+frequently \fIxscreensaver\fP checks to see if the mouse position or buttons
+have changed.  Default 5 seconds.
+.TP 8
+.B windowCreationTimeout\fP (class \fBTime\fP)
+When server extensions are not in use, this controls the delay between when 
+windows are created and when \fIxscreensaver\fP selects events on them.
+Default 30 seconds.
+.TP 8
+.B initialDelay\fP (class \fBTime\fP)
+When server extensions are not in use, \fIxscreensaver\fP will wait this many
+seconds before selecting events on existing windows, under the assumption that 
+\fIxscreensaver\fP is started during your login procedure, and the window 
+state may be in flux.  Default 0.  (This used to default to 30, but that was
+back in the days when slow machines and X terminals were more common...)
+.TP 8
+.B sgiSaverExtension\fP (class \fBBoolean\fP)
+There are a number of different X server extensions which can make
+xscreensaver's job easier.  The next few resources specify whether these
+extensions should be utilized if they are available.
+
+This resource controls whether the SGI \fBSCREEN_SAVER\fP server extension
+will be used to decide whether the user is idle.  This is the default 
+if \fIxscreensaver\fP has been compiled with support for this 
+extension (which is the default on SGI systems.).  If it is available, 
+the \fBSCREEN_SAVER\fP method is faster and more reliable than what will
+be done otherwise, so use it if you can.  (This extension is only available
+on Silicon Graphics systems, unfortunately.)
+.TP 8
+.B mitSaverExtension\fP (class \fBBoolean\fP)
+This resource controls whether the \fBMIT\-SCREEN\-SAVER\fP server extension
+will be used to decide whether the user is idle.  However, the default for
+this resource is \fIfalse\fP, because even if this extension is available,
+it is flaky (and it also makes the \fBfade\fP option not work properly.)
+Use of this extension is not recommended.
+.TP 8
+.B xidleExtension\fP (class \fBBoolean\fP)
+This resource controls whether the \fBXIDLE\fP server extension will be
+used to decide whether the user is idle.  This is the default 
+if \fIxscreensaver\fP has been compiled with support for this extension.
+(This extension is only available for X11R4 and X11R5 systems, unfortunately.)
+.TP 8
+.B procInterrupts\fP (class \fBBoolean\fP)
+This resource controls whether the \fB/proc/interrupts\fP file should be
+consulted to decide whether the user is idle.  This is the default
+if \fIxscreensaver\fP has been compiled on a system which supports this
+mechanism (i.e., Linux systems.)  
+
+The benefit to doing this is that \fIxscreensaver\fP can note that the user
+is active even when the X console is not the active one: if the user is 
+typing in another virtual console, xscreensaver will notice that and will
+fail to activate.  For example, if you're playing Quake in VGA-mode, 
+xscreensaver won't wake up in the middle of your game and start competing 
+for CPU.
+
+The drawback to doing this is that perhaps you \fIreally do\fP want idleness
+on the X console to cause the X display to lock, even if there is activity
+on other virtual consoles.  If you want that, then set this option to False.
+(Or just lock the X console manually.)
+
+The default value for this resource is True, on systems where it works.
+.TP 8
+.B overlayStderr\fP (class \fBBoolean\fP)
+If \fBcaptureStderr\fP is True, and your server supports ``overlay'' visuals,
+then the text will be written into one of the higher layers instead of into
+the same layer as the running screenhack.  Set this to False to disable 
+that (though you shouldn't need to.)
+.TP 8
+.B overlayTextForeground\fP (class \fBForeground\fP)
+The foreground color used for the stdout/stderr text, if \fBcaptureStderr\fP
+is true.  Default: Yellow.
+.TP 8
+.B overlayTextBackground\fP (class \fBBackground\fP)
+The background color used for the stdout/stderr text, if \fBcaptureStderr\fP
+is true.  Default: Black.
+.TP 8
+.B bourneShell\fP (class \fBBourneShell\fP)
+The pathname of the shell that \fIxscreensaver\fP uses to start subprocesses.
+This must be whatever your local variant of \fB/bin/sh\fP is: in particular,
+it must not be \fBcsh\fP.
+.SH COMMAND-LINE OPTIONS
+.I xscreensaver
+also accepts the following command line options.  Except for 
+the \fI\-display\fP option, these command-line options are all 
+simply shorthand for the X resources described in 
+the \fIConfiguration\fP section, above.
+.TP 8
+.B \-display \fIhost:display.screen\fP
+The X display to use.  For displays with multiple screens, XScreenSaver 
+will manage all screens on the display simultaniously; the \fIscreen\fP 
+argument (the ``default'' screen) says which screen should be used for
+dialog boxes (the password window, \fIDemo Mode\fP, etc.)
+.TP 8
+.B \-timeout \fIminutes\fP
+Same as the \fItimeout\fP resource.
+.TP 8
+.B \-cycle \fIminutes\fP
+Same as the \fIcycle\fP resource.
+.TP 8
+.B \-lock\-mode
+Same as setting the \fIlock\fP resource to \fItrue\fP.
+.TP 8
+.B \-no\-lock\-mode
+Same as setting the \fIlock\fP resource to \fIfalse\fP.
+.TP 8
+.B \-lock\-timeout \fIminutes\fP
+Same as the \fIlockTimeout\fP resource.
+.TP 8
+.B \-visual \fIvisual\fP
+Same as the \fIvisualID\fP resource.
+.TP 8
+.B \-install
+Same as setting the \fIinstallColormap\fP resource to \fItrue\fP.
+.TP 8
+.B \-no\-install
+Same as setting the \fIinstallColormap\fP resource to \fIfalse\fP.
+.TP 8
+.B \-verbose
+Same as setting the \fIverbose\fP resource to \fItrue\fP.
+.TP 8
+.B \-silent
+Same as setting the \fIverbose\fP resource to \fIfalse\fP.
+.TP 8
+.B \-timestamp
+Same as setting the \fItimestamp\fP resource to \fItrue\fP.
+.TP 8
+.B \-capture\-stderr
+Same as setting the \fIcaptureStderr\fP resource to \fItrue\fP.
+.TP 8
+.B \-no\-capture\-stderr
+Same as setting the \fIcaptureStderr\fP resource to \fIfalse\fP.
+.TP 8
+.B \-splash
+Same as setting the \fIsplash\fP resource to \fItrue\fP.
+.TP 8
+.B \-no\-splash
+Same as setting the \fIsplash\fP resource to \fIfalse\fP.
+.TP 8
+.B \-nice \fIinteger\fP
+Same as the \fInice\fP resource.
+.TP 8
+.B \-sgi\-extension
+Same as setting the \fIsgiSaverExtension\fP resource to \fItrue\fP.
+.TP 8
+.B \-no\-sgi\-extension
+Same as setting the \fIsgiSaverExtension\fP resource to \fIfalse\fP.
+.TP 8
+.B \-mit\-extension
+Same as setting the \fImitSaverExtension\fP resource to \fItrue\fP.
+.TP 8
+.B \-no\-mit\-extension
+Same as setting the \fImitSaverExtension\fP resource to \fIfalse\fP.
+.TP 8
+.B \-xidle\-extension
+Same as setting the \fIxidleExtension\fP resource to \fItrue\fP.
+.TP 8
+.B \-no\-xidle\-extension
+Same as setting the \fIxidleExtension\fP resource to \fIfalse\fP.
+.TP 8
+.B \-proc\-interrupts
+Same as setting the \fIprocInterrupts\fP resource to \fItrue\fP.
+.TP 8
+.B \-no\-proc\-interrupts
+Same as setting the \fIprocInterrupts\fP resource to \fIfalse\fP.
+.TP 8
+.B \-xrm \fIresource-specification\fP
+As with all other Xt programs, you can specify X resources on the command-line
+using the \fI\-xrm\fP argument.  Most of the interesting resources have 
+command-line equivalents, however.
+.SH HOW IT WORKS
+When it is time to activate the screensaver, a full-screen black window is
+created on each screen of the display.  Each window is created in such a way
+that, to any subsequently-created programs, it will appear to be a ``virtual
+root'' window.  Because of this, any program which draws on the root 
+window (and which understands virtual roots) can be used as a screensaver.
+
+When the user becomes active again, the screensaver windows are unmapped, and
+the running subprocesses are killed by sending them \fBSIGTERM\fP.  This is 
+also how the subprocesses are killed when the screensaver decides that it's
+time to run a different demo: the old one is killed and a new one is launched.
+
+Before launching a subprocess, \fIxscreensaver\fP stores an appropriate value
+for \fB$DISPLAY\fP in the environment that the child will recieve.  (This is
+so that if you start \fIxscreensaver\fP with a \fI-display\fP argument, the
+programs which \fIxscreensaver\fP launches will draw on the same display;
+and so that the child will end up drawing on the appropriate screen of a
+multi-headed display.)
+
+When the screensaver turns off, or is killed, care is taken to restore 
+the ``real'' virtual root window if there is one.  Because of this, it is
+important that you not kill the screensaver process with \fIkill -9\fP if
+you are running a virtual-root window manager.  If you kill it with \-9,
+you may need to restart your window manager to repair the damage.  This
+isn't an issue if you aren't running a virtual-root window manager.
+
+For all the gory details, see the commentary at the top of xscreensaver.c.
+
+You can control a running screensaver process by using the
+.BR xscreensaver\-command (1)
+program (which see.)
+.SH POWER MANAGEMENT
+Modern X servers contain support to power down the monitor after an idle
+period.  If the monitor has powered down, then \fIxscreensaver\fP will
+notice this, and will not waste CPU by drawing graphics demos on a black
+screen.  An attempt will also be made to explicitly power the monitor
+back up as soon as user activity is detected.
+
+If your X server supports power management, then
+.BR xset (1)
+will accept a \fBdpms\fP option.  So, if you wanted \fIxscreensaver\fP
+to activate after 5 minutes, but you wanted your monitor to power down
+after one hour (3600 seconds) you would do this:
+.EX
+xset dpms 3600
+.EE
+See the man page for the
+.BR xset (1)
+program for details.  (Note that power management requires both software
+support in the X server, and hardware support in the monitor itself.)
+.SH USING XDM(1)
+You can run \fIxscreensaver\fP from your 
+.BR xdm (1)
+session, so that the screensaver will run even when nobody is logged 
+in on the console.
+
+The trick to using xscreensaver with \fIxdm\fP is this: keep in mind the 
+two very different states in which xscreensaver will be running:
+.RS 4
+.TP 3
+.B 1: Nobody logged in.
+
+If you're thinking of running xscreensaver from XDM at all, then it's 
+probably because you want graphics demos to be running on the console
+when nobody is logged in there.  In this case, xscreensaver will function
+only as a screen saver, not a screen locker: it doesn't make sense
+for xscreensaver to lock the screen, since nobody is logged in yet!
+The only thing on the screen is the XDM login prompt.
+.TP 3
+.B 2: Somebody logged in.
+
+Once someone has logged in through the XDM login window, the situation is
+very different.  For example: now it makes sense to lock the screen (and
+prompt for the logged in user's password); and now xscreensaver should
+consult that user's \fI~/.xscreensaver\fP file; and so on.
+.RE
+
+The difference between these two states comes down to a question of,
+which user is the \fIxscreensaver\fP process running as?  For the first
+state, it doesn't matter.  If you start \fIxscreensaver\fP in the usual
+XDM way, then xscreensaver will probably end up running as root, which 
+is fine for the first case (the ``nobody logged in'' case.)
+
+However, once someone is logged in, running as root is no longer fine:
+because xscreensaver will be consulting root's \fI.xscreensaver\fP file
+instead of that of the logged in user, and won't be prompting for the
+logged in user's password, and so on.  (This is not a security problem,
+it's just not what you want.)
+
+So, once someone has logged in, you want xscreensaver to be running as that
+user.  The way to accomplish this is to kill the old xscreensaver process
+and start a new one (as the new user.)
+
+The simplest way to accomplish all of this is as follows:
+.RS 4
+.TP 3
+.B 1: Launch xscreensaver before anyone logs in.
+
+To the file \fI/usr/lib/X11/xdm/Xsetup\fP, add the lines
+.EX
+xscreensaver-command -exit
+xscreensaver &
+.EE
+This will run xscreensaver as root, over the XDM login window.
+Moving the mouse will cause the screen to un-blank, and allow the user
+to type their password at XDM to log in.
+.TP 3
+.B 2: Restart xscreensaver when someone logs in.
+
+Near the top of the file \fI/usr/lib/X11/xdm/Xsession\fP, add those same lines:
+.EX
+xscreensaver-command -exit
+xscreensaver &
+.EE
+When someone logs in, this will kill off the existing (root) xscreensaver
+process, and start a new one, running as the user who has just logged in.
+If the user's .xscreensaver file requests locking, they'll get it.  They
+will also get their own choice of timeouts, and graphics demos, and so on.
+
+Alternately, each user could just put those lines in their 
+personal \fI~/.xsession\fP files.
+.RE
+
+Make sure you have \fB$PATH\fP set up correctly in the \fIXsetup\fP 
+and \fIXsession\fP scripts, or \fIxdm\fP won't be able to 
+find \fIxscreensaver\fP, and/or \fIxscreensaver\fP won't be able to 
+find its graphics demos.
+
+(If your system does not seem to be executing the \fIXsetup\fP file, you
+may need to configure it to do so: the traditional way to do this is
+to make that file the value of the \fIDisplayManager*setup\fP resource
+in the \fI/usr/lib/X11/xdm/xdm-config\fP file.  See the man page for
+.BR xdm (1)
+for more details.)
+
+It is safe to run \fIxscreensaver\fP as root (as \fIxdm\fP is likely to do.)  
+If run as root, \fIxscreensaver\fP changes its effective user and group ids 
+to something safe (like \fI"nobody"\fP) before connecting to the X server
+or launching user-specified programs.
+
+An unfortunate side effect of this (important) security precaution is that
+it may conflict with cookie-based authentication.
+
+If you get "connection refused" errors when running \fIxscreensaver\fP
+from \fIxdm\fP, then this probably means that you have
+.BR xauth (1)
+or some other security mechanism turned on.  One way around this is to
+add \fB"xhost\ +localhost"\fP to \fIXsetup\fP, just before \fIxscreensaver\fP
+is launched.  
+
+Note that this will give access to the X server to anyone capable of logging
+in to the local machine, so in some environments, this might not be 
+appropriate.  If turning off file-system-based access control is not
+acceptable, then running \fIxscreensaver\fP from the \fIXsetup\fP file
+might not be possible, and xscreensaver will only work when running as
+a normal, unprivileged user.
+
+For more information on the X server's access control mechanisms, see the
+man pages for
+.BR X (1),
+.BR Xsecurity (1),
+.BR xauth (1),
+and
+.BR xhost (1).
+.SH USING CDE (COMMON DESKTOP ENVIRONMENT)
+The easiest way to use \fIxscreensaver\fP on a system with CDE is to simply
+switch off the built-in CDE screensaver, and use \fIxscreensaver\fP instead;
+and second, to tell the front panel to run 
+.BR xscreensaver\-command (1)
+with the \fI\-lock\fP option when the \fILock\fP icon is clicked.
+
+To accomplish this involves five steps:
+.RS 4
+.TP 3
+\fB1: Switch off CDE's locker\fP
+Do this by turning off ``\fIScreen Saver and Screen Lock\fP'' in the
+Screen section of the Style Manager.
+.TP 3
+\fB2: Edit sessionetc\fP
+Edit the file \fI~/.dt/sessions/sessionetc\fP and add to it the line
+.EX
+xscreensaver &
+.EE
+This will cause \fIxscreensaver\fP to be launched when you log in.
+(As always, make sure that xscreensaver and the graphics demos are on
+your \fB$PATH\fP; the path needs to be set in \fI.cshrc\fP 
+and/or \fI.dtprofile\fP, not \fI.login\fP.)
+.TP 3
+\fB3: Create XScreenSaver.dt\fP
+Create a file called \fI~/.dt/types/XScreenSaver.dt\fP with the following
+contents:
+.EX
+ACTION XScreenSaver
+{
+  LABEL         XScreenSaver
+  TYPE          COMMAND
+  EXEC_STRING   xscreensaver-command -lock
+  ICON          Dtkey
+  WINDOW_TYPE   NO_STDIO
+}
+.EE
+This defines a ``lock'' command for the CDE front panel, that knows how
+to talk to \fIxscreensaver\fP.
+.TP 3
+\fB4: Create Lock.fp\fP
+Create a file called \fI~/.dt/types/Lock.fp\fP with the following
+contents:
+.EX
+CONTROL Lock
+{
+  TYPE             icon
+  CONTAINER_NAME   Switch
+  CONTAINER_TYPE   SWITCH
+  POSITION_HINTS   1
+  ICON             Fplock
+  LABEL            Lock
+  PUSH_ACTION      XScreenSaver
+  HELP_TOPIC       FPOnItemLock
+  HELP_VOLUME      FPanel
+}
+.EE
+This associates the CDE front panel ``Lock'' icon with the lock command
+we just defined in step 3.
+.TP 3
+\fB5: Restart\fP
+Select ``\fIRestart Workspace Manager\fP'' from the popup menu to make
+your changes take effect.  If things seem not to be working, check the
+file \fI~/.dt/errorlog\fP for error messages.
+.RE
+.SH USING HP VUE (VISUAL USER ENVIRONMENT)
+Since CDE is a descendant of VUE, the instructions for using xscreensaver
+under VUE are similar to the above:
+.RS 4
+.TP 3
+\fB1: Switch off VUE's locker\fP
+Open the ``\fIStyle Manager\fP'' and select ``\fIScreen\fP.''
+Turn off ``\fIScreen Saver and Screen Lock\fP'' option.
+.TP 3
+\fB2: Make sure you have a Session\fP
+Next, go to the Style Manager's, ``\fIStartup\fP'' page.
+Click on ``\fISet Home Session\fP'' to create a session, then 
+on ``\fIReturn to Home Session\fP'' to select this session each
+time you log in.
+.TP 3
+\fB3: Edit vue.session\fP
+Edit the file \fI~/.vue/sessions/home/vue.session\fP and add to it
+the line
+.EX
+vuesmcmd -screen 0 -cmd "xscreensaver"
+.EE
+This will cause \fIxscreensaver\fP to be launched when you log in.
+(As always, make sure that xscreensaver and the graphics demos are on
+your \fB$PATH\fP; the path needs to be set in \fI.cshrc\fP
+and/or \fI.profile\fP, not \fI.login\fP.)
+.TP 3
+\fB3: Edit vuewmrc\fP
+Edit the file \fI~/.vue/vuewmrc\fP and add (or change) the Lock control:
+.EX
+CONTROL Lock
+{
+  TYPE         button
+  IMAGE        lock
+  PUSH_ACTION  f.exec "xscreensaver-command -lock"
+  HELP_TOPIC   FPLock
+}
+.EE
+This associates the VUE front panel ``Lock'' icon with the xscreensaver 
+lock command.
+.RE
+.PP
+.SH ADDING TO MENUS
+The
+.BR xscreensaver-command (1)
+program is a perfect candidate for something to add to your window manager's
+popup menus.  If you use 
+.BR mwm (1),
+.BR 4Dwm (1),
+.BR twm (1),
+or (probably) any of \fItwm\fP's many descendants, you can do it like this:
+.RS 0
+.TP 3
+\fB1. Create ~/.mwmrc (or ~/.twmrc or ...)\fP
+If you don't have a \fI~/.mwmrc\fP file (or, on SGIs, a \fI~/.4Dwmrc\fP file;
+or, with twm, a \fI~/.twmrc\fP file) then create one by making a copy of
+the \fI/usr/lib/X11/system.mwmrc\fP 
+file (or \fI/usr/lib/X11/twm/system.twmrc\fP, and so on.)
+.TP 3
+\fB2. Add a menu definition.\fP
+Something like this:
+.EX
+menu XScreenSaver
+{
+ "Blank Screen Now" !"sleep 3; xscreensaver-command -activate"
+ "Lock Screen Now"  !"sleep 3; xscreensaver-command -lock"
+ "Screen Saver Demo"         !"xscreensaver-demo"
+ "Screen Saver Preferences"  !"xscreensaver-demo -prefs"
+ "Reinitialize Screen Saver" !"xscreensaver-command -restart"
+ "Kill Screen Saver"         !"xscreensaver-command -exit"
+ "Launch Screen Saver"       !"xscreensaver &"
+}
+.EE
+.TP 3
+\fB3. Add the menu\fP
+For
+.BR mwm (1)
+and
+.BR 4Dwm (1),
+find the section of the file that says \fIMenu DefaultRootMenu\fP.
+For
+.BR twm (1),
+it will probably be \fImenu "defops"\fP.  If you add a line somewhere 
+in that menu definition that reads
+.EX
+  "XScreenSaver"        f.menu XScreenSaver
+.EE
+then this will add an XScreenSaver sub-menu to your default root-window
+popup menu.  Alternately, you could just put the xscreensaver menu items
+directly into the root menu.
+.RE
+
+Other window managers are guaranteed to do things gratuitously differently.
+.SH BUGS
+Bugs?  There are no bugs.  Ok, well, maybe.  If you find one, please let
+me know.  http://www.jwz.org/xscreensaver/bugs.html explains how to
+construct the most useful bug reports.
+.TP 8
+.B Locking and XDM
+If xscreensaver has been launched from 
+.BR xdm (1)
+before anyone has logged in, you will need to kill and then restart the
+xscreensaver daemon after you have logged in, or you will be confused by
+the results.  (For example, locking won't work, and your \fI~/.xscreensaver\fP
+file will be ignored.)
+
+When you are logged in, you want the \fIxscreensaver\fP daemon to be 
+running under \fIyour\fP user id, not as root or some other user.
+
+If it has already been started by \fIxdm\fP, you can kill it by sending
+it the \fBexit\fP command, and then re-launching it as you, by putting
+something like the following in your personal X startup script:
+.EX
+xscreensaver-command -exit
+xscreensaver &
+.EE
+The ``\fIUsing XDM(1)\fP'' section, above, goes into more detail, and explains
+how to configure the system to do this for all users automatically.
+.TP 8
+.B Locking and root logins
+In order for it to be safe for xscreensaver to be launched by \fIxdm\fP,
+certain precautions had to be taken, among them that xscreensaver never
+runs as \fIroot\fP.  In particular, if it is launched as root (as \fIxdm\fP
+is likely to do), xscreensaver will disavow its privileges, and switch 
+itself to a safe user id (such as \fInobody\fP.)
+
+An implication of this is that if you log in as \fIroot\fP on the console, 
+xscreensaver will refuse to lock the screen (because it can't tell
+the difference between \fIroot\fP being logged in on the console, and a
+normal user being logged in on the console but xscreensaver having been 
+launched by the
+.BR xdm (1)
+.I Xsetup
+file.)
+
+The solution to this is simple: you shouldn't be logging in on the console
+as \fIroot\fP in the first place!  (What, are you crazy or something?)  
+
+Proper Unix hygiene dictates that you should log in as yourself, and
+.BR su (1)
+to \fIroot\fP as necessary.  People who spend their day logged in
+as \fIroot\fP are just begging for disaster.
+.TP 8
+.B XAUTH and XDM
+For xscreensaver to work when launched by
+.BR xdm (1),
+programs running on the local machine as user \fI"nobody"\fP must be
+able to connect to the X server.  This means that if you want to run
+xscreensaver on the console while nobody is logged in, you may need
+to disable cookie-based access control (and allow all users who can log
+in to the local machine to connect to the display.)  
+
+You should be sure that this is an acceptable thing to do in your
+environment before doing it.  See the ``\fIUsing XDM(1)\fP'' section, 
+above, for more details.
+
+If anyone has suggestions on how xscreensaver could be made to work with
+.BR xdm (1)
+without first turning off \fI.Xauthority\fP-based access control, please
+let me know.
+.TP 8
+.B Passwords
+If you get an error message at startup like ``couldn't get password
+of \fIuser\fP'' then this probably means that you're on a system in which 
+the
+.BR getpwent (3)
+library routine can only be effectively used by root.  If this is the case, 
+then \fIxscreensaver\fP must be installed as setuid to root in order for
+locking to work.  Care has been taken to make this a safe thing to do.  
+
+It also may mean that your system uses shadow passwords instead of the standard
+.BR getpwent (3)
+interface; in that case, you may need to change some options 
+with \fIconfigure\fP and recompile.
+
+If you change your password after xscreensaver has been launched, it will
+continue using your old password to unlock the screen until xscreensaver
+is restarted.  So, after you change your password, you'll have to do
+.EX
+xscreensaver-command -restart
+.EE
+to make \fIxscreensaver\fP notice.
+.TP 8
+.B PAM Passwords
+If your system uses PAM (Pluggable Authentication Modules), then in order
+for xscreensaver to use PAM properly, PAM must be told about xscreensaver.
+The xscreensaver installation process should update the PAM data (on Linux,
+by creating the file \fI/etc/pam.d/xscreensaver\fP for you, and on Solaris, 
+by telling you what lines to add to the \fI/etc/pam.conf\fP file.)  
+
+If the PAM configuration files do not know about xscreensaver, then 
+you \fImight\fP be in a situation where xscreensaver will refuse to ever
+unlock the screen.
+
+This is a design flaw in PAM (there is no way for a client to tell the
+difference between PAM responding ``I have never heard of your module,''
+and responding, ``you typed the wrong password.'')  As far as I can tell,
+there is no way for xscreensaver to automatically work around this, or
+detect the problem in advance, so if you have PAM, make sure it is
+configured correctly!
+.TP 8
+.B Colormap lossage: TWM
+The \fBinstallColormap\fP option doesn't work very well with the
+.BR twm (1)
+window manager and its descendants.  
+
+There is a race condition between the screensaver and this window manager,
+which can result in the screensaver's colormap not getting installed
+properly, meaning the graphics hacks will appear in essentially random
+colors.  (If the screen goes white instead of black, this is probably why.)
+
+The
+.BR mwm (1)
+and
+.BR olwm (1)
+window managers don't have this problem.  The race condition exists
+because X (really, ICCCM) does not provide a way for an OverrideRedirect 
+window to have its own colormap, short of grabbing the server (which is 
+neither a good idea, nor really possible with the current design.)  What 
+happens is that, as soon as xscreensaver installs its colormap, \fBtwm\fP 
+responds to the resultant \fBColormapNotify\fP event by re-instaling the 
+default colormap.  Apparently, \fBtwm\fP doesn't \fIalways\fP do this; it 
+seems to do it regularly if the screensaver is activated from a menu item, 
+but seems to not do it if the screensaver comes on of its own volition, or 
+is activated from another console.  
+.RS 8
+.TP 4
+.B Attention, window manager authors!
+You should only call
+.BR XInstallColormap (3)
+in response to user events.  That is, it is appropriate to install a colormap
+in response to \fBFocusIn\fP, \fBFocusOut\fP, \fBEnterNotify\fP, 
+and \fBLeaveNotify\fP events; but it is not appropriate to call it in
+response to \fBColormapNotify\fP events.  If you install colormaps in
+response to \fIapplication\fP actions as well as in response to \fIuser\fP
+actions, then you create the situation where it is impossible for 
+override-redirect applications (such as xscreensaver) to display their
+windows in the proper colors.
+.RE
+.TP 8
+.B Colormap lossage: XV, XAnim, XEarth
+Some programs don't operate properly on visuals other than the default one,
+or with colormaps other than the default one.  See the discussion of the
+magic "default-n" visual name in the description of the \fBprograms\fP 
+resource in the \fIConfiguration\fP section.  When programs only work with
+the default colormap, you need to use a syntax like this:
+.EX
+   default-n: xv -root image-1.gif -quit  \\n\\
+   default-n: xearth -nostars -wait 0     \\n\\
+.EE
+It would also work to turn off the \fBinstallColormap\fP option altogether,
+but that would deny extra colors to those programs that \fIcan\fP take
+advantage of them.
+.TP 8
+.B Machine Load
+Although this program ``nices'' the subprocesses that it starts, 
+graphics-intensive subprograms can still overload the machine by causing
+the X server process itself (which is not ``niced'') to suck a lot of 
+cycles.  Care should be taken to slow down programs intended for use as 
+screensavers by inserting strategic calls to
+.BR sleep (3)
+or
+.BR usleep (3)
+(or making liberal use of any \fI\-delay\fP options which the programs 
+may provide.)
+
+Note that the OpenGL-based graphics demos are real pigs on machines that
+don't have texture hardware.
+
+Also, an active screensaver will cause your X server to be pretty much 
+permanently swapped in; but the same is true of any program that draws
+periodically, like 
+.BR xclock (1)
+or
+.BR xload (1).
+.TP 8
+.B Latency and Responsiveness
+If the subprocess is drawing too quickly and the connection to the X
+server is a slow one (such as an X terminal running over a phone line) then 
+the screensaver might not turn off right away when the user becomes active
+again (the
+.BR ico (1)
+demo has this problem if being run in full-speed mode).  This can be
+alleviated by inserting strategic calls to
+.BR XSync (3)
+in code intended for use as a screensaver.  This prevents too much graphics
+activity from being buffered up.
+.TP 8
+.B XFree86's Magic Keystrokes
+The XFree86 X server traps certain magic keystrokes before client programs ever
+see them.  Two that are of note are Ctrl+Alt+Backspace, which causes 
+the X server to exit; and Ctrl+Alt+F\fIn\fP, which switches virtual consoles.
+The X server will respond to these keystrokes even if xscreensaver has the
+screen locked.  Depending on your setup, you might consider this a problem.
+
+Unfortunately, there is no way for xscreensaver itself to override the
+interpretation of these keys.  If you want to disable Ctrl+Alt+Backspace
+globally, you need to set the \fIDontZap\fP flag in 
+your \fI/etc/X11/XF86Config\fP file.  See the
+.BR XF86Config (5)
+manual for details.
+
+There is no way (as far as I can tell) to disable the VT-switching keystrokes.
+
+Some Linux systems come with a VT_LOCKSWITCH ioctl, that one could 
+theoretically use to prevent VT-switching while the screen is locked; 
+but unfortunately, this ioctl can only be used by root, which means
+that xscreensaver can't use it (since xscreensaver disavows its privileges
+shortly after startup, for security reasons.)
+
+Any suggestions for other solutions to this problem are welcome.
+.TP 8
+.B XView Clients
+Apparently there are some problems with XView programs getting confused
+and thinking that the screensaver window is the real root window even when
+the screensaver is not active: ClientMessages intended for the window manager
+are sent to the screensaver window instead.  This could be solved by making
+xscreensaver forward all unrecognised ClientMessages to the real root window,
+but there may be other problems as well.  If anyone has any insight on the
+cause of this problem, please let me know.  (XView is an X11 toolkit that 
+implements the (quite abominable) Sun OpenLook look-and-feel.)
+.TP 8
+.B MIT Extension and Fading
+The \fBMIT-SCREEN-SAVER\fP extension is junk.  Don't use it.
+
+When using the \fBMIT-SCREEN-SAVER\fP extension in conjunction with 
+the \fBfade\fP option, you'll notice an unattractive flicker just before 
+the fade begins.  This is because the server maps a black window just before 
+it tells the \fIxscreensaver\fP process to activate.  The \fIxscreensaver\fP 
+process immediately unmaps that window, but this results in a flicker.  I 
+haven't figured a way  to get around this; it seems to be a fundamental
+property of the (mis-) design of this server extension.
+
+It sure would be nice if someone would implement the \fBSGI SCREEN_SAVER\fP
+extension in XFree86; it's dead simple, and works far better than the
+overengineered and broken \fBMIT-SCREEN-SAVER\fP extension.
+.TP 8
+.B SGI Power Saver
+If you're running Irix 6.3, you might find that your monitor is powering down
+after an hour or two even if you've told it not to.  This is fixed by SGI
+patches 2447 and 2537.
+
+If you're running Irix 6.5, this bug is back.  I don't know a fix.
+.TP 8
+.B MesaGL and Voodoo Cards
+If you have a 3Dfx/Voodoo card, the default settings for xscreensaver will
+run the GL-based graphics demos in such a way that they will not take 
+advantage of the 3D acceleration hardware.  The solution is to change
+the \fBprograms\fP entries for the GL hacks from this:
+.EX
+       gears -root                        \\n\\
+.EE
+to this:
+.EX
+       MESA_GLX_FX=fullscreen  gears      \\n\\
+.EE
+That is, make sure that \fB$MESA_GLX_FX\fP is set to \fIfullscreen\fP, and
+don't tell the program to draw on the root window.  This may seem strange,
+but the setup used by Mesa and these kinds of cards \fIis\fP strange!
+
+For those who don't know, these cards work by sitting between your normal
+video card and the monitor, and seizing control of the monitor when it's 
+time to do 3D.  But this means that accelerated 3D only happens in full-screen
+mode (you can't do it in a window, and you can't see the output of 3D and 2D
+programs simultaniously), and that 3D will probably drive your monitor at a
+lower resolution, as well.  It's bizarre.
+
+If you find that GL programs only work properly when run as root, and not
+as normal users, then the problem is that your \fI/dev/3dfx\fP file is not
+configured properly.  Check the Linux 3Dfx FAQ.
+.TP 8
+.B Keyboard LEDs
+If \fIprocInterrupts\fP is on (which is the default on Linux systems) and
+you're using some program that toggles the state of your keyboard LEDs,
+xscreensaver won't work right: turning those LEDs on or off causes a 
+keyboard interrupt, which xscreensaver will interpret as user activity.
+So if you're using such a program, set the \fIprocInterrupts\fP resource
+to False.
+.TP 8
+.B Extensions
+If you are not making use of one of the server extensions (\fBXIDLE\fP,
+\fBSGI SCREEN_SAVER\fP, or \fBMIT-SCREEN-SAVER\fP), then it is possible, in 
+rare situations, for \fIxscreensaver\fP to interfere with event propagation 
+and make another X program malfunction.  For this to occur, that other
+application would need to \fInot\fP select \fBKeyPress\fP events on its 
+non-leaf windows within the first 30 seconds of their existence, but then 
+select for them later.  In this case, that client \fImight\fP fail to receive 
+those events.  This isn't very likely, since programs generally select a
+constant set of events immediately after creating their windows and then 
+don't change them, but this is the reason that it's a good idea to install 
+and use one of the server extensions instead, to work around this shortcoming
+in the X protocol.
+
+In all these years, I've not heard of even a single case of this happening,
+but it is theoretically possible, so I'm mentioning it for completeness...
+.TP 8
+.B Red Hot Lava
+There need to be a lot more graphics hacks.  In particular, there should be
+a simulation of a Lavalite (tm).
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number, and to inform the sub-programs
+of the screen on which to draw.
+.TP 8
+.B PATH
+to find the sub-programs to run.
+.TP 8
+.B HOME
+for the directory in which to read and write the \fI.xscreensaver\fP file.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH UPGRADES
+The latest version can always be found at 
+http://www.jwz.org/xscreensaver/
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver\-demo (1),
+.BR xscreensaver\-command (1),
+.BR xdm (1),
+.BR xset (1),
+.BR Xsecurity (1),
+.BR xauth (1),
+.BR xhost (1).
+.BR ant (1),
+.BR atlantis (1),
+.BR attraction (1),
+.BR blitspin (1),
+.BR bouboule (1),
+.BR braid (1),
+.BR bsod (1),
+.BR bubble3d (1),
+.BR bubbles (1),
+.BR cage (1),
+.BR compass (1),
+.BR coral (1),
+.BR critical (1),
+.BR crystal (1),
+.BR cynosure (1),
+.BR decayscreen (1),
+.BR deco (1),
+.BR deluxe (1),
+.BR demon (1),
+.BR discrete (1),
+.BR distort (1),
+.BR drift (1),
+.BR epicycle (1),
+.BR fadeplot (1),
+.BR flag (1),
+.BR flame (1),
+.BR flow (1),
+.BR forest (1),
+.BR galaxy (1),
+.BR gears (1),
+.BR glplanet (1),
+.BR goop (1),
+.BR grav (1),
+.BR greynetic (1),
+.BR halo (1),
+.BR helix (1),
+.BR hopalong (1),
+.BR hypercube (1),
+.BR ifs (1),
+.BR imsmap (1),
+.BR interference (1),
+.BR jigsaw (1),
+.BR julia (1),
+.BR kaleidescope (1),
+.BR kumppa (1),
+.BR lament (1),
+.BR laser (1),
+.BR lightning (1),
+.BR lisa (1),
+.BR lissie (1),
+.BR lmorph (1),
+.BR loop (1),
+.BR maze (1),
+.BR moebius (1),
+.BR moire (1),
+.BR moire2 (1),
+.BR morph3d (1),
+.BR mountain (1),
+.BR munch (1),
+.BR noseguy (1),
+.BR pedal (1),
+.BR penetrate (1),
+.BR penrose (1),
+.BR petri (1),
+.BR phosphor (1),
+.BR pipes (1),
+.BR pulsar (1),
+.BR pyro (1),
+.BR qix (1),
+.BR rd-bomb (1),
+.BR rocks (1),
+.BR rorschach (1),
+.BR rotor (1),
+.BR rubik (1),
+.BR sierpinski (1),
+.BR slidescreen (1),
+.BR slip (1),
+.BR sonar (1),
+.BR sphere (1),
+.BR spiral (1),
+.BR spotlight (1),
+.BR sproingies (1),
+.BR squiral (1),
+.BR stairs (1),
+.BR starfish (1),
+.BR strange (1),
+.BR superquadrics (1),
+.BR swirl (1),
+.BR t3d (1),
+.BR triangle (1),
+.BR truchet (1),
+.BR vines (1),
+.BR wander (1),
+.BR worm (1),
+.BR xflame (1),
+.BR xjack (1),
+.BR xlyap (1),
+.BR xmatrix (1),
+.BR xroger (1),
+.BR bongo (1),
+.BR ico (1),
+.BR xaos (1),
+.BR xbouncebits (1),
+.BR xcthugha (1),
+.BR xdaliclock (1),
+.BR xfishtank (1),
+.BR xmountains (1),
+.BR xsplinefun (1),
+.BR xswarm (1),
+.BR xtacy (1),
+.BR xv (1),
+.BR xwave (1).
+.SH COPYRIGHT
+Copyright \(co 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
+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
+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>.  Written in late 1991; first posted
+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 the many people who have contributed graphics demos to the package.
+
+Thanks to David Wojtowicz for implementing \fIlockTimeout\fP.
+
+Thanks to Martin Kraemer for adding support for shadow passwords and
+locking-disabled diagnostics.
+
+Thanks to Patrick Moreau for the VMS port.
+
+Thanks to Mark Bowyer for figuring out how to hook it up to CDE.
+
+Thanks to Nat Lanza for the Kerberos support.
+
+Thanks to Bill Nottingham for the initial PAM support.
+
+And thanks to Jon A. Christopher for implementing the Athena dialog
+support, back in the days before Lesstif or Gtk were viable alternatives
+to Motif.
diff --git a/makevms.com b/makevms.com
deleted file mode 100644 (file)
index 213cc0c..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-$! Build Xscreensaver under OpenVMS V 6.x system  with DEC C 5.x compiler
-$!
-$ copy /log CONFIG.H-VMS CONFIG.H
-$!
-$! Architecture type test (VAX < 1024 <= Alpha AXP)
-$!
-$ if f$getsyi("HW_MODEL").ge.1024
-$ then
-$! 
-$! Alpha AXP
-$! build Utils library
-$!
-$   set def [.UTILS]
-$   @COMPILE_AXP
-$   set def [-]
-$!
-$! build graphics hacks
-$!
-$   set def [.HACKS]
-$   @COMPILE_AXP
-$   @LINK_AXP
-$   set def [-]
-$!
-$! Build Xscreensaver & Xscreensaver-command
-$!
-$   set def [.DRIVER]
-$   @COMPILE_AXP
-$   @LINK_AXP
-$   set def [-]
-$ else
-$! 
-$! Good old VAX
-$! build Utils library
-$!
-$   set def [.UTILS]
-$   @COMPILE_DECC
-$   set def [-]
-$!
-$! build graphics hacks
-$!
-$   set def [.HACKS]
-$   @COMPILE_DECC
-$   @LINK_DECC
-$   set def [-]
-$!
-$! Build Xscreensaver & Xscreensaver-command
-$!
-$   set def [.DRIVER]
-$   @COMPILE_DECC
-$   @LINK_DECC
-$   set def [-]
-$ endif
-$!
-$! DCL symbols definition 
-$!
-$ @SETUP
-$ exit
diff --git a/screenblank.txt b/screenblank.txt
deleted file mode 100644 (file)
index 1762158..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-From mrapple@quack.kfu.com Mon Apr 26 18:31:07 1993
-Newsgroups: alt.hackers
-From: mrapple@quack.kfu.com (Nick Sayer)
-Subject: screenblank and xautolock living in harmony
-Organization: The Duck Pond public unix: +1 408 249 9630, log in as 'guest'.
-Date: 23 Apr 1993 19:26:57 UTC
-
-
-I have a Sun and use xinit to start X. This presented a problem.
-If I use xautolock or xscreensaver to save the screen, then after
-a period of inactivity screenblank would turn the video off despite
-'xset s off'. If I didn't run screenblank, then who would take care of
-the display when X wasn't running?
-
-The hack that saved the day was to include this in .xinitrc:
-
-(
-
-while true ; do
-sleep 360
-touch /dev/console
-done
-
-) &
-killblank=$!
-
-[start up all the clients, etc, etc. Wait for the window manager
-to die, then ]
-
-kill $killblank
-
-The result is that screenblank is kept safely out of the way when X
-is running and left to do its job otherwise.
-
-Yes, I know using XDM would solve this problem.
-
-No, I'm probably not the first to think of this.
-
-You're welcome.
-
--- 
-Nick Sayer <mrapple@quack.kfu.com>   | "Dear Sexy Nickers. I don't half fancy
-N6QQQ @ N0ARY.#NOCAL.CA.USA.NOAM     | you. Meet me at the lift at 5:30 and
-+1 408 249 9630, log in as 'guest'   | we'll get it together."
-PGP 2.2 public key via finger        |               -- Mr. Lucas
-
diff --git a/setup.com b/setup.com
deleted file mode 100644 (file)
index ec96853..0000000
--- a/setup.com
+++ /dev/null
@@ -1,95 +0,0 @@
-$! Xscreensaver - definition of various DCL symbols
-$ set NOON
-$ set def [.HACKS]
-$ mydisk = f$trnlmn("SYS$DISK")
-$ mydir  = mydisk+f$directory()
-$ ant          :== $'mydir'ant
-$ attraction   :== $'mydir'attraction
-$ blitspin     :== $'mydir'blitspin
-$ bouboule     :== $'mydir'bouboule
-$ braid                :== $'mydir'braid
-$ bsod         :== $'mydir'bsod
-$ bubbles      :== $'mydir'bubbles
-$ compass      :== $'mydir'compass
-$ coral                :== $'mydir'coral
-$ critical     :== $'mydir'critical
-$ crystal      :== $'mydir'crystal
-$ cynosure     :== $'mydir'cynosure
-$ decayscreen  :== $'mydir'decayscreen
-$ deco         :== $'mydir'deco
-$ deluxe       :== $'mydir'deluxe
-$ demon                :== $'mydir'demon
-$ discrete     :== $'mydir'discrete
-$ distort      :== $'mydir'distort
-$ drift                :== $'mydir'drift
-$ epicycle     :== $'mydir'epicycle
-$ fadeplot     :== $'mydir'fadeplot
-$ flag         :== $'mydir'flag
-$ flame                :== $'mydir'flame
-$ flow         :== $'mydir'flow
-$ forest       :== $'mydir'forest
-$ galaxy       :== $'mydir'galaxy
-$ goop         :== $'mydir'goop
-$ grav         :== $'mydir'grav
-$ greynetic    :== $'mydir'greynetic
-$ halo         :== $'mydir'halo
-$ helix                :== $'mydir'helix
-$ hopalong     :== $'mydir'hopalong
-$ hypercube    :== $'mydir'hypercube
-$ ifs          :== $'mydir'ifs
-$ imsmap       :== $'mydir'imsmap
-$ interference :== $'mydir'interference
-$ jigsaw       :== $'mydir'jigsaw
-$ julia                :== $'mydir'julia
-$ kaleidescope :== $'mydir'kaleidescope
-$ kumppa       :== $'mydir'kumppa
-$ laser                :== $'mydir'laser
-$ lightning    :== $'mydir'lightning
-$ lisa         :== $'mydir'lisa
-$ lissie       :== $'mydir'lissie
-$ lmorph       :== $'mydir'lmorph
-$ loop         :== $'mydir'loop
-$ maze         :== $'mydir'maze
-$ moire                :== $'mydir'moire
-$ moire2       :== $'mydir'moire2
-$ mountain     :== $'mydir'mountain
-$ munch                :== $'mydir'munch
-$ noseguy      :== $'mydir'noseguy
-$ pedal                :== $'mydir'pedal
-$ penetrate    :== $'mydir'penetrate
-$ penrose      :== $'mydir'penrose
-$ phosphor     :== $'mydir'phosphor
-$ pyro         :== $'mydir'pyro
-$ qix          :== $'mydir'qix
-$ rd-bomb      :== $'mydir'rd-bomb
-$ rocks                :== $'mydir'rocks
-$ rorschach    :== $'mydir'rorschach
-$ rotor                :== $'mydir'rotor
-$ sierpinski   :== $'mydir'sierpinski
-$ slidescreen  :== $'mydir'slidescreen
-$ slip         :== $'mydir'slip
-$ sonar                :== $'mydir'sonar
-$ sphere       :== $'mydir'sphere
-$ spiral       :== $'mydir'spiral
-$ spotlight    :== $'mydir'spotlight
-$ squiral      :== $'mydir'squiral
-$ starfish     :== $'mydir'starfish
-$ strange      :== $'mydir'strange
-$ swirl                :== $'mydir'swirl
-$ t3d          :== $'mydir't3d
-$ triangle     :== $'mydir'triangle
-$ truchet      :== $'mydir'truchet
-$ vines                :== $'mydir'vines
-$ wander       :== $'mydir'wander
-$ worm         :== $'mydir'worm
-$ xflame       :== $'mydir'xflame
-$ xjack                :== $'mydir'xjack
-$ xlyap                :== $'mydir'xlyap
-$ xmatrix      :== $'mydir'xmatrix
-$ xroger       :== $'mydir'xroger
-$ set def [-.DRIVER]
-$ mydir  = mydisk+f$directory()
-$ xscreensaver :== $'mydir'xscreensaver
-$ xscreen*command :== $'mydir'xscreensaver-command
-$ set def [-]
-$ exit
diff --git a/utils/Makefile.in b/utils/Makefile.in
deleted file mode 100644 (file)
index 071cc94..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-# utils/Makefile.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski.
-# the `../configure' script generates `utils/Makefile' from this file.
-
-
-# The utilities in this directory are used mostly by the demos in ../hacks/.
-# The Makefile in that directory builds executables by simply referencing
-# the .o files in this directory.
-
-
-##############################################################################
-#
-# Some rambling about dynamic libraries follows, ignore it if you don't care
-# (which is almost assuredly the case.)
-#
-#
-# It would probably be sensible to just build a single .a file in this
-# directory, and link the hacks against that (statically.)  I haven't done
-# that for two reasons: first, it works now, and why fix what ain't broke;
-# second, it wouldn't actually improve anything for the end user (it would
-# just make the Makefiles be a little smaller.)
-#
-# People sometimes suggest that the stuff in this directory should be in a
-# dynamic library, and that the hacks should be linked dynamically against
-# it.  I haven't done this for a number of reasons:
-#
-#  *  First, the only thing that would improve would be disk space, in that
-#     the executable files themselves would be smaller.  That's it.  Many other
-#     things would get worse if we used a dynamic library:
-#
-#  *  Complication of installation procedures: suddenly, before any of the
-#     hacks will work, you need to have a dynamic library installed, and
-#     the system configured to use it.  This is, basically, rocket science.
-#     Most people don't know how to do this, it's a huge pain, and on many
-#     systems, it requires root access.
-#
-#  *  Complication of the Makefile: every system builds dynamic libraries
-#     differently.  Every compiler takes different flags.  I don't want to
-#     do the hand-holding for the scores of Unix systems and compilers on 
-#     which people try to build this program.
-#
-#  *  Reduction of maintainability: gdb is remarkably bad at dealing with
-#     debug info in dynamic libraries, and when debugging a hack, one would
-#     constantly be fighting the linker and the debugger (or linking
-#     statically when debugging.)
-#
-#  *  Version skew: when things are statically linked, it's perfectly ok to
-#     make incompatible changes to the APIs defined in this directory, so long
-#     as the current version in ../hacks/ is in sync.  Much more care would 
-#     need to be taken with such things if dynamic libraries were involved,
-#     to make sure that the major and minor versions of the library changed
-#     at the appropriate time.  This isn't too hard, but it's more work, and
-#     yet another opportunity to screw up.
-#
-#  *  Runtime memory usage goes *up*.  That's right, up!  When a program
-#     links in a dynamic library, the whole library is brought into the 
-#     address space, not just the files that are actually used.  Normally,
-#     this is ok, because if several programs are using (for example)
-#     libX11.so, chances are that the savings outweighs the overhead.  But
-#     the nature of xscreensaver is that only one of the hacks ever runs at
-#     a time -- so there would never be a second program using the utils/
-#     dynamic library with which things could be shared.
-#
-#  *  Runtime speed decreases slightly, since dynamic code is marginally
-#     slower.  On modern machines, this probably doesn't make a perceptible
-#     difference, however.
-#
-# So basically, I just don't think using libraries would be a win, and it would
-# definitely cause more of a maintenance and portability headache.  However,
-# if someone else wants to do the work to make it be an option to configure,
-# and verifies that it works on several (more than three) different Unixes,
-# I'd be happy to take the patches.
-#                                                           -- jwz, 30-Jun-98
-#
-##############################################################################
-
-
-@SET_MAKE@
-.SUFFIXES:
-.SUFFIXES: .c .o
-
-srcdir         = @srcdir@
-VPATH          = @srcdir@
-prefix         = @prefix@
-
-CC             = @CC@
-CFLAGS         = @CFLAGS@
-DEFS           = @DEFS@
-
-DEPEND         = @DEPEND@
-DEPEND_FLAGS   = @DEPEND_FLAGS@
-DEPEND_DEFINES = @DEPEND_DEFINES@
-
-SHELL          = /bin/sh
-INSTALL                = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA   = @INSTALL_DATA@
-INSTALL_DIRS   = @INSTALL_DIRS@
-
-X_CFLAGS       = @X_CFLAGS@
-
-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
-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
-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
-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)
-
-
-all: $(OBJS)
-
-install:   install-program   install-man
-uninstall: uninstall-program uninstall-man
-
-install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
-
-install-program:
-install-man:
-uninstall-program:
-uninstall-man:
-
-clean:
-       -rm -f *.o a.out core
-
-distclean: clean
-       -rm -f Makefile TAGS *~ "#"*
-
-# Adds all current dependencies to Makefile
-depend:
-       $(DEPEND) -s '# DO NOT DELETE: updated by make depend'              \
-       $(DEPEND_FLAGS) --                                                  \
-       $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
-       $(SRCS)
-
-# Adds some dependencies to Makefile.in -- not totally accurate, but pretty
-# close.  This excludes dependencies on files in /usr/include, etc.  It tries
-# to include only dependencies on files which are themselves a part of this
-# package.
-distdepend::
-       @echo updating dependencies in `pwd`/Makefile.in... ;               \
-       $(DEPEND) -w 0 -f -                                                 \
-       -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
-       $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
-       $(SRCS) |                                                           \
-       (                                                                   \
-         awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \
-         sed -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d'                        \
-             -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'                            \
-             -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g' ;                     \
-         echo ''                                                           \
-       ) > /tmp/distdepend.$$$$ &&                                         \
-       mv Makefile.in Makefile.in.bak &&                                   \
-       mv /tmp/distdepend.$$$$ Makefile.in
-
-TAGS: tags
-tags:
-       find $(srcdir) -name '*.[chly]' -print | xargs etags -a
-
-echo_tarfiles:
-       @echo $(TARFILES)
-
-
-# How we build object files in this directory.
-.c.o:
-       $(CC) -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) $<
-
-
-# Rules for generating the VMS makefiles on Unix, so that it doesn't have to
-# be done by hand...
-#
-VMS_AXP_COMPILE=$$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-])
-
-compile_axp.com: Makefile.in
-       @echo generating $@ from $<...  ;                                   \
-       ( ( for c in $(SRCS) vms-*.c ; do                                   \
-             c=`echo $$c | tr a-z A-Z` ;                                   \
-             echo "$(VMS_AXP_COMPILE) $$c" ;                               \
-            done ;                                                         \
-         ) | sort ;                                                        \
-          echo '$$ lib/cre utils.olb_axp' ;                                \
-         echo '$$ lib utils.olb_axp *.obj' ;                               \
-         echo '$$! delete/noconf *.obj;' ;                                 \
-        ) > $@
-
-compile_decc.com: compile_axp.com
-       @echo generating $@ from $<...  ;                                   \
-       sed 's/axp/decc/g' < $< > $@
-
-distdepend:: compile_axp.com compile_decc.com
-
-
-##############################################################################
-#
-# DO NOT DELETE: updated by make distdepend
-# $(srcdir)/DO $(srcdir)/NOT $(srcdir)/DELETE: $(srcdir)/updated $(srcdir)/by $(srcdir)/make $(srcdir)/distdepend
-
-alpha.o: $(srcdir)/utils.h
-alpha.o: ../config.h
-alpha.o: $(srcdir)/alpha.h
-alpha.o: $(srcdir)/hsv.h
-alpha.o: $(srcdir)/yarandom.h
-alpha.o: $(srcdir)/resources.h
-colors.o: $(srcdir)/utils.h
-colors.o: ../config.h
-colors.o: $(srcdir)/hsv.h
-colors.o: $(srcdir)/yarandom.h
-colors.o: $(srcdir)/visual.h
-colors.o: $(srcdir)/colors.h
-fade.o: $(srcdir)/utils.h
-fade.o: ../config.h
-fade.o: $(srcdir)/visual.h
-fade.o: $(srcdir)/usleep.h
-fade.o: $(srcdir)/fade.h
-grabscreen.o: $(srcdir)/utils.h
-grabscreen.o: ../config.h
-grabscreen.o: $(srcdir)/yarandom.h
-grabscreen.o: $(srcdir)/usleep.h
-grabscreen.o: $(srcdir)/colors.h
-grabscreen.o: $(srcdir)/grabscreen.h
-grabscreen.o: $(srcdir)/sgivideo.h
-grabscreen.o: $(srcdir)/visual.h
-grabscreen.o: $(srcdir)/resources.h
-grabscreen.o: $(srcdir)/vroot.h
-hsv.o: $(srcdir)/utils.h
-hsv.o: ../config.h
-hsv.o: $(srcdir)/hsv.h
-overlay.o: $(srcdir)/utils.h
-overlay.o: ../config.h
-overlay.o: $(srcdir)/visual.h
-resources.o: $(srcdir)/utils.h
-resources.o: ../config.h
-resources.o: $(srcdir)/resources.h
-spline.o: $(srcdir)/utils.h
-spline.o: ../config.h
-spline.o: $(srcdir)/spline.h
-usleep.o: ../config.h
-visual.o: $(srcdir)/utils.h
-visual.o: ../config.h
-visual.o: $(srcdir)/resources.h
-visual.o: $(srcdir)/visual.h
-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
-yarandom.o: ../config.h
-yarandom.o: $(srcdir)/yarandom.h
-erase.o: $(srcdir)/utils.h
-erase.o: ../config.h
-erase.o: $(srcdir)/yarandom.h
-erase.o: $(srcdir)/usleep.h
-erase.o: $(srcdir)/resources.h
-sgivideo.o: $(srcdir)/utils.h
-sgivideo.o: ../config.h
-sgivideo.o: $(srcdir)/sgivideo.h
-sgivideo.o: $(srcdir)/resources.h
-sgivideo.o: $(srcdir)/visual.h
-xshm.o: $(srcdir)/utils.h
-xshm.o: ../config.h
-xshm.o: $(srcdir)/xshm.h
-xshm.o: $(srcdir)/resources.h
-xdbe.o: $(srcdir)/utils.h
-xdbe.o: ../config.h
-xdbe.o: $(srcdir)/xdbe.h
-xdbe.o: $(srcdir)/resources.h
-
diff --git a/utils/README b/utils/README
deleted file mode 100644 (file)
index 2f5bc11..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-This directory contains various utilities that are used both by the 
-screensaver driver and by the demo programs; for example, a portable
-implementation of usleep(), and code for manipulating color maps.
-
-If you have compilation problems, check the parameters in ../config.h.
diff --git a/utils/ad2c b/utils/ad2c
deleted file mode 100755 (executable)
index 1435e55..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-#
-#      ad2c : Convert app-defaults file to C strings decls.
-#
-#      George Ferguson, ferguson@cs.rcohester.edu, 12 Nov 1990.
-#      19 Mar 1991 : gf
-#              Made it self-contained.
-#      6 Jan 1992 : mycroft@gnu.ai.mit.edu (Charles Hannum)
-#              Removed use of "-n" and ":read" label since Gnu and
-#              IBM sed print pattern space on "n" command. Still works
-#              with Sun sed, of course.
-#      7 Jan 1992: matthew@sunpix.East.Sun.COM (Matthew Stier)
-#              Escape quotes after escaping backslashes.
-#
-
-sed '
-/^!/d
-/^$/d
-s/\\/\\\\/g
-s/\\$//g
-s/"/\\"/g
-s/^/"/
-: test
-/\\$/b slash
-s/$/",/
-p
-d
-: slash
-n
-/^!/d
-/^$/d
-s/"/\\"/g
-s/\\\\/\\/g
-s/\\n/\\\\n/g
-s/\\t/\\\\t/g
-s/\\f/\\\\f/g
-s/\\b/\\\\b/g
-b test' "$@"
diff --git a/utils/alpha.c b/utils/alpha.c
deleted file mode 100644 (file)
index 1812cab..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997
- *  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.
- */
-
-/* Beauty is only skin deep, unless you've got an alpha channel. */
-
-
-#include "utils.h"
-#include "alpha.h"
-#include "hsv.h"
-#include "yarandom.h"
-#include "resources.h"
-
-#ifndef countof
-# define countof(x) (sizeof(*(x))/sizeof((x)))
-#endif
-
-
-/* I don't believe this fucking language doesn't have builtin exponentiation.
-   I further can't believe that the fucking ^ character means fucking XOR!! */
-static int 
-i_exp (int i, int j)
-{
-  int k = 1;
-  while (j--) k *= i;
-  return k;
-}
-
-
-static void
-merge_colors (int argc, XColor **argv, XColor *into_color, int mask,
-             Bool additive_p)
-{
-  int j;
-  *into_color = *argv [0];
-  into_color->pixel |= mask;
-
-  for (j = 1; j < argc; j++)
-    {
-# define SHORT_INC(x,y) (x = ((((x)+(y)) > 0xFFFF) ? 0xFFFF : ((x)+(y))))
-# define SHORT_DEC(x,y) (x = ((((x)-(y)) < 0)      ? 0      : ((x)-(y))))
-      if (additive_p)
-       {
-         SHORT_INC (into_color->red,   argv[j]->red);
-         SHORT_INC (into_color->green, argv[j]->green);
-         SHORT_INC (into_color->blue,  argv[j]->blue);
-       }
-      else
-       {
-         SHORT_DEC (into_color->red,   argv[j]->red);
-         SHORT_DEC (into_color->green, argv[j]->green);
-         SHORT_DEC (into_color->blue,  argv[j]->blue);
-       }
-# undef SHORT_INC
-# undef SHORT_DEC
-    }
-}
-
-static void
-permute_colors (XColor *pcolors, XColor *colors,
-               int count,
-               unsigned long *plane_masks,
-               Bool additive_p)
-{
-  int out = 0;
-  int max = i_exp (2, count);
-  if (count > 31) abort ();
-  for (out = 1; out < max; out++)
-    {
-      XColor *argv [32];
-      int this_mask = 0;
-      int argc = 0;
-      int bit;
-      for (bit = 0; bit < 32; bit++)
-       if (out & (1<<bit))
-         {
-           argv [argc++] = &pcolors [bit];
-           this_mask |= plane_masks [bit];
-         }
-      merge_colors (argc, argv, &colors [out-1], this_mask, additive_p);
-    }
-}
-
-
-int
-allocate_color_planes (Display *dpy, Colormap cmap,
-                      int nplanes, unsigned long *plane_masks,
-                      unsigned long *base_pixel_ret)
-{
-  while (nplanes > 1 &&
-        !XAllocColorCells (dpy, cmap, False, plane_masks, nplanes,
-                           base_pixel_ret, 1))
-    nplanes--;
-
-  return nplanes;
-}
-                      
-
-void
-initialize_transparency_colormap (Display *dpy, Colormap cmap,
-                                 int nplanes,
-                                 unsigned long base_pixel,
-                                 unsigned long *plane_masks,
-                                 XColor *colors,
-                                 Bool additive_p)
-{
-  int i;
-  int total_colors = i_exp (2, nplanes);
-  XColor *all_colors = (XColor *) calloc (total_colors, sizeof (XColor));
-
-  for (i = 0; i < nplanes; i++)
-    colors[i].pixel = base_pixel | plane_masks [i];
-  permute_colors (colors, all_colors, nplanes, plane_masks, additive_p);
-
-  /* clone the default background of the window into our "base" pixel */
-  all_colors [total_colors - 1].pixel =
-    get_pixel_resource ("background", "Background", dpy, cmap);
-  XQueryColor (dpy, cmap, &all_colors [total_colors - 1]);
-  all_colors [total_colors - 1].pixel = base_pixel;
-
-  for (i = 0; i < total_colors; i++)
-    all_colors[i].flags = DoRed|DoGreen|DoBlue;
-  XStoreColors (dpy, cmap, all_colors, total_colors);
-  XFree ((XPointer) all_colors);
-}
-
-
-Bool
-allocate_alpha_colors (Display *dpy, Colormap cmap,
-                      int *nplanesP, Bool additive_p,
-                      unsigned long **plane_masks,
-                      unsigned long *base_pixelP)
-{
-  XColor *colors;
-  int nplanes = *nplanesP;
-  int i;
-
-  if (nplanes > 31) nplanes = 31;
-  *plane_masks = (unsigned long *) malloc(sizeof(unsigned long) * nplanes);
-
-  nplanes = allocate_color_planes (dpy, cmap, nplanes, *plane_masks,
-                                  base_pixelP);
-  *nplanesP = nplanes;
-
-  if (nplanes <= 1)
-    {
-      free(*plane_masks);
-      *plane_masks = 0;
-      return False;
-    }
-
-  colors = (XColor *) calloc (nplanes, sizeof (XColor));
-  for (i = 0; i < nplanes; i++)
-    {
-      /* pick the base colors. If we are in subtractive mode, pick higher
-        intensities. */
-      hsv_to_rgb (random () % 360,
-                 frand (1.0),
-                 frand (0.5) + (additive_p ? 0.2 : 0.5),
-                 &colors[i].red,
-                 &colors[i].green,
-                 &colors[i].blue);
-    }
-  initialize_transparency_colormap (dpy, cmap, nplanes,
-                                   *base_pixelP, *plane_masks, colors,
-                                   additive_p);
-  XFree ((XPointer) colors);
-  return True;
-}
diff --git a/utils/alpha.h b/utils/alpha.h
deleted file mode 100644 (file)
index 1474367..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997
- *  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.
- */
-
-#ifndef __XSCREENSAVER_ALPHA_H__
-#define __XSCREENSAVER_ALPHA_H__
-
-extern int allocate_color_planes (Display *dpy, Colormap cmap,
-                                 int nplanes, unsigned long *plane_masks,
-                                 unsigned long *base_pixel_ret);
-
-extern void initialize_transparency_colormap (Display *dpy, Colormap cmap,
-                                             int nplanes,
-                                             unsigned long base_pixel,
-                                             unsigned long *plane_masks,
-                                             XColor *colors,
-                                             Bool additive_p);
-
-extern Bool allocate_alpha_colors (Display *dpy, Colormap cmap,
-                                  int *nplanesP, Bool additive_p,
-                                  unsigned long **plane_masks,
-                                  unsigned long *base_pixelP);
-
-#endif /* __XSCREENSAVER_ALPHA_H__ */
diff --git a/utils/colors.c b/utils/colors.c
deleted file mode 100644 (file)
index 698bc94..0000000
+++ /dev/null
@@ -1,686 +0,0 @@
-/* xscreensaver, Copyright (c) 1997 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 file contains some utility routines for randomly picking the colors
-   to hack the screen with.
- */
-
-#include "utils.h"
-#include "hsv.h"
-#include "yarandom.h"
-#include "visual.h"
-#include "colors.h"
-
-extern char *progname;
-
-void
-free_colors(Display *dpy, Colormap cmap, XColor *colors, int ncolors)
-{
-  int i;
-  if (ncolors > 0)
-    {
-      unsigned long *pixels = (unsigned long *)
-       malloc(sizeof(*pixels) * ncolors);
-      for (i = 0; i < ncolors; i++)
-       pixels[i] = colors[i].pixel;
-      XFreeColors (dpy, cmap, pixels, ncolors, 0L);
-      free(pixels);
-    }
-}
-
-
-void
-allocate_writable_colors (Display *dpy, Colormap cmap,
-                         unsigned long *pixels, int *ncolorsP)
-{
-  int desired = *ncolorsP;
-  int got = 0;
-  int requested = desired;
-  unsigned long *new_pixels = pixels;
-
-  *ncolorsP = 0;
-  while (got < desired
-        && requested > 0)
-    {
-      if (desired - got < requested)
-       requested = desired - got;
-
-      if (XAllocColorCells (dpy, cmap, False, 0, 0, new_pixels, requested))
-       {
-         /* Got all the pixels we asked for. */
-         new_pixels += requested;
-         got += requested;
-       }
-      else
-       {
-         /* We didn't get all/any of the pixels we asked for.  This time, ask
-            for half as many.  (If we do get all that we ask for, we ask for
-            the same number again next time, so we only do O(log(n)) server
-            roundtrips.)
-         */
-         requested = requested / 2;
-       }
-    }
-  *ncolorsP += got;
-}
-
-
-
-void
-make_color_ramp (Display *dpy, Colormap cmap,
-                int h1, double s1, double v1,   /* 0-360, 0-1.0, 0-1.0 */
-                int h2, double s2, double v2,   /* 0-360, 0-1.0, 0-1.0 */
-                XColor *colors, int *ncolorsP,
-                Bool closed_p,
-                Bool allocate_p,
-                Bool writable_p)
-{
-  int i;
-  int ncolors = *ncolorsP;
-  double dh, ds, dv;           /* deltas */
-
- AGAIN:
-
-  memset (colors, 0, (*ncolorsP) * sizeof(*colors));
-
-  if (closed_p)
-    ncolors = (ncolors / 2) + 1;
-
-  /* Note: unlike other routines in this module, this function assumes that
-     if h1 and h2 are more than 180 degrees apart, then the desired direction
-     is always from h1 to h2 (rather than the shorter path.)  make_uniform
-     depends on this.
-   */
-  dh = ((double)h2 - (double)h1) / ncolors;
-  ds = (s2 - s1) / ncolors;
-  dv = (v2 - v1) / ncolors;
-
-  for (i = 0; i < ncolors; i++)
-    {
-      colors[i].flags = DoRed|DoGreen|DoBlue;
-      hsv_to_rgb ((int) (h1 + (i*dh)), (s1 + (i*ds)), (v1 + (i*dv)),
-                 &colors[i].red, &colors[i].green, &colors[i].blue);
-    }
-
-  if (closed_p)
-    for (i = ncolors; i < *ncolorsP; i++)
-      colors[i] = colors[(*ncolorsP)-i];
-
-  if (!allocate_p)
-    return;
-
-  if (writable_p)
-    {
-      unsigned long *pixels = (unsigned long *)
-       malloc(sizeof(*pixels) * ((*ncolorsP) + 1));
-
-      /* allocate_writable_colors() won't do here, because we need exactly this
-        number of cells, or the color sequence we've chosen won't fit. */
-      if (! XAllocColorCells(dpy, cmap, False, 0, 0, pixels, *ncolorsP))
-       {
-         free(pixels);
-         goto FAIL;
-       }
-
-      for (i = 0; i < *ncolorsP; i++)
-       colors[i].pixel = pixels[i];
-      free (pixels);
-
-      XStoreColors (dpy, cmap, colors, *ncolorsP);
-    }
-  else
-    {
-      for (i = 0; i < *ncolorsP; i++)
-       {
-         XColor color;
-         color = colors[i];
-         if (XAllocColor (dpy, cmap, &color))
-           {
-             colors[i].pixel = color.pixel;
-           }
-         else
-           {
-             free_colors (dpy, cmap, colors, i);
-             goto FAIL;
-           }
-       }
-    }
-
-  return;
-
- FAIL:
-  /* we weren't able to allocate all the colors we wanted;
-     decrease the requested number and try again.
-   */
-  ncolors = (ncolors > 170 ? ncolors - 20 :
-            ncolors > 100 ? ncolors - 10 :
-            ncolors >  75 ? ncolors -  5 :
-            ncolors >  25 ? ncolors -  3 :
-            ncolors >  10 ? ncolors -  2 :
-            ncolors >   2 ? ncolors -  1 :
-            0);
-  *ncolorsP = ncolors;
-  if (ncolors > 0)
-    goto AGAIN;
-}
-
-
-#define MAXPOINTS 50   /* yeah, so I'm lazy */
-
-
-static void
-make_color_path (Display *dpy, Colormap cmap,
-                int npoints, int *h, double *s, double *v,
-                XColor *colors, int *ncolorsP,
-                Bool allocate_p,
-                Bool writable_p)
-{
-  int i, j, k;
-  int total_ncolors = *ncolorsP;
-
-  int ncolors[MAXPOINTS];  /* number of pixels per edge */
-  double dh[MAXPOINTS];    /* distance between pixels, per edge (0 - 360.0) */
-  double ds[MAXPOINTS];    /* distance between pixels, per edge (0 - 1.0) */
-  double dv[MAXPOINTS];    /* distance between pixels, per edge (0 - 1.0) */
-
-  if (npoints == 0)
-    {
-      *ncolorsP = 0;
-      return;
-    }
-  else if (npoints == 2)       /* using make_color_ramp() will be faster */
-    {
-      make_color_ramp (dpy, cmap,
-                      h[0], s[0], v[0], h[1], s[1], v[1],
-                      colors, ncolorsP,
-                      True,  /* closed_p */
-                      allocate_p, writable_p);
-      return;
-    }
-  else if (npoints >= MAXPOINTS)
-    {
-      npoints = MAXPOINTS-1;
-    }
-
- AGAIN:
-
-  {
-    double DH[MAXPOINTS];      /* Distance between H values in the shortest
-                                  direction around the circle, that is, the
-                                  distance between 10 and 350 is 20.
-                                  (Range is 0 - 360.0.)
-                               */
-    double edge[MAXPOINTS];    /* lengths of edges in unit HSV space. */
-    double ratio[MAXPOINTS];   /* proportions of the edges (total 1.0) */
-    double circum = 0;
-    double one_point_oh = 0;   /* (debug) */
-
-    for (i = 0; i < npoints; i++)
-      {
-       int j = (i+1) % npoints;
-       double d = ((double) (h[i] - h[j])) / 360;
-       if (d < 0) d = -d;
-       if (d > 0.5) d = 0.5 - (d - 0.5);
-       DH[i] = d;
-      }
-
-    for (i = 0; i < npoints; i++)
-      {
-       int j = (i+1) % npoints;
-       edge[i] = sqrt((DH[i] * DH[j]) +
-                      ((s[j] - s[i]) * (s[j] - s[i])) +
-                      ((v[j] - v[i]) * (v[j] - v[i])));
-       circum += edge[i];
-      }
-
-#ifdef DEBUG
-    fprintf(stderr, "\ncolors:");
-    for (i=0; i < npoints; i++)
-      fprintf(stderr, " (%d, %.3f, %.3f)", h[i], s[i], v[i]);
-    fprintf(stderr, "\nlengths:");
-    for (i=0; i < npoints; i++)
-      fprintf(stderr, " %.3f", edge[i]);
-#endif /* DEBUG */
-
-    if (circum < 0.0001)
-      goto FAIL;
-
-    for (i = 0; i < npoints; i++)
-      {
-       ratio[i] = edge[i] / circum;
-       one_point_oh += ratio[i];
-      }
-
-#ifdef DEBUG
-    fprintf(stderr, "\nratios:");
-    for (i=0; i < npoints; i++)
-      fprintf(stderr, " %.3f", ratio[i]);
-#endif /* DEBUG */
-
-    if (one_point_oh < 0.99999 || one_point_oh > 1.00001)
-      abort();
-
-    /* space the colors evenly along the circumference -- that means that the
-       number of pixels on a edge is proportional to the length of that edge
-       (relative to the lengths of the other edges.)
-     */
-    for (i = 0; i < npoints; i++)
-      ncolors[i] = total_ncolors * ratio[i];
-
-
-#ifdef DEBUG
-    fprintf(stderr, "\npixels:");
-    for (i=0; i < npoints; i++)
-      fprintf(stderr, " %d", ncolors[i]);
-    fprintf(stderr, "  (%d)\n", total_ncolors);
-#endif /* DEBUG */
-
-    for (i = 0; i < npoints; i++)
-      {
-       int j = (i+1) % npoints;
-
-       if (ncolors[i] > 0)
-         {
-           dh[i] = 360 * (DH[i] / ncolors[i]);
-           ds[i] = (s[j] - s[i]) / ncolors[i];
-           dv[i] = (v[j] - v[i]) / ncolors[i];
-         }
-      }
-  }
-
-  memset (colors, 0, (*ncolorsP) * sizeof(*colors));
-
-  k = 0;
-  for (i = 0; i < npoints; i++)
-    {
-      int distance, direction;
-      distance = h[(i+1) % npoints] - h[i];
-      direction = (distance >= 0 ? -1 : 1);
-
-      if (distance > 180)
-       distance = 180 - (distance - 180);
-      else if (distance < -180)
-       distance = -(180 - ((-distance) - 180));
-      else
-       direction = -direction;
-
-#ifdef DEBUG
-      fprintf (stderr, "point %d: %3d %.2f %.2f\n",
-              i, h[i], s[i], v[i]);
-      fprintf(stderr, "  h[i]=%d  dh[i]=%.2f  ncolors[i]=%d\n",
-             h[i], dh[i], ncolors[i]);
-#endif /* DEBUG */
-      for (j = 0; j < ncolors[i]; j++, k++)
-       {
-         double hh = (h[i] + (j * dh[i] * direction));
-         if (hh < 0) hh += 360;
-         else if (hh > 360) hh -= 0;
-         colors[k].flags = DoRed|DoGreen|DoBlue;
-         hsv_to_rgb ((int)
-                     hh,
-                     (s[i] + (j * ds[i])),
-                     (v[i] + (j * dv[i])),
-                     &colors[k].red, &colors[k].green, &colors[k].blue);
-#ifdef DEBUG
-         fprintf (stderr, "point %d+%d: %.2f %.2f %.2f  %04X %04X %04X\n",
-                  i, j,
-                  hh,
-                  (s[i] + (j * ds[i])),
-                  (v[i] + (j * dv[i])),
-                  colors[k].red, colors[k].green, colors[k].blue);
-#endif /* DEBUG */
-       }
-    }
-
-  /* Floating-point round-off can make us decide to use fewer colors. */
-  if (k < *ncolorsP)
-    {
-      *ncolorsP = k;
-      if (k <= 0)
-       return;
-    }
-
-  if (!allocate_p)
-    return;
-
-  if (writable_p)
-    {
-      unsigned long *pixels = (unsigned long *)
-       malloc(sizeof(*pixels) * ((*ncolorsP) + 1));
-
-      /* allocate_writable_colors() won't do here, because we need exactly this
-        number of cells, or the color sequence we've chosen won't fit. */
-      if (! XAllocColorCells(dpy, cmap, False, 0, 0, pixels, *ncolorsP))
-       {
-         free(pixels);
-         goto FAIL;
-       }
-
-      for (i = 0; i < *ncolorsP; i++)
-       colors[i].pixel = pixels[i];
-      free (pixels);
-
-      XStoreColors (dpy, cmap, colors, *ncolorsP);
-    }
-  else
-    {
-      for (i = 0; i < *ncolorsP; i++)
-       {
-         XColor color;
-         color = colors[i];
-         if (XAllocColor (dpy, cmap, &color))
-           {
-             colors[i].pixel = color.pixel;
-           }
-         else
-           {
-             free_colors (dpy, cmap, colors, i);
-             goto FAIL;
-           }
-       }
-    }
-
-  return;
-
- FAIL:
-  /* we weren't able to allocate all the colors we wanted;
-     decrease the requested number and try again.
-   */
-  total_ncolors = (total_ncolors > 170 ? total_ncolors - 20 :
-                  total_ncolors > 100 ? total_ncolors - 10 :
-                  total_ncolors >  75 ? total_ncolors -  5 :
-                  total_ncolors >  25 ? total_ncolors -  3 :
-                  total_ncolors >  10 ? total_ncolors -  2 :
-                  total_ncolors >   2 ? total_ncolors -  1 :
-                  0);
-  *ncolorsP = total_ncolors;
-  if (total_ncolors > 0)
-    goto AGAIN;
-}
-
-
-void
-make_color_loop (Display *dpy, Colormap cmap,
-                int h0, double s0, double v0,   /* 0-360, 0-1.0, 0-1.0 */
-                int h1, double s1, double v1,   /* 0-360, 0-1.0, 0-1.0 */
-                int h2, double s2, double v2,   /* 0-360, 0-1.0, 0-1.0 */
-                XColor *colors, int *ncolorsP,
-                Bool allocate_p,
-                Bool writable_p)
-{
-  int h[3];
-  double s[3], v[3];
-  h[0] = h0; h[1] = h1; h[2] = h2;
-  s[0] = s0; s[1] = s1; s[2] = s2;
-  v[0] = v0; v[1] = v1; v[2] = v2;
-  make_color_path(dpy, cmap,
-                 3, h, s, v,
-                 colors, ncolorsP,
-                 allocate_p, writable_p);
-}
-
-
-static void
-complain (int wanted_colors, int got_colors,
-         Bool wanted_writable, Bool got_writable)
-{
-  if (wanted_writable && !got_writable)
-    fprintf(stderr,
-           "%s: wanted %d writable colors; got %d read-only colors.\n",
-           progname, wanted_colors, got_colors);
-
-  else if (wanted_colors > (got_colors + 10))
-    /* don't bother complaining if we're within ten pixels. */
-    fprintf(stderr, "%s: wanted %d%s colors; got %d.\n",
-           progname, wanted_colors, (got_writable ? " writable" : ""),
-           got_colors);
-}
-
-
-void
-make_smooth_colormap (Display *dpy, Visual *visual, Colormap cmap,
-                     XColor *colors, int *ncolorsP,
-                     Bool allocate_p,
-                     Bool *writable_pP,
-                     Bool verbose_p)
-{
-  int npoints;
-  int ncolors = *ncolorsP;
-  Bool wanted_writable = (allocate_p && writable_pP && *writable_pP);
-  int i;
-  int h[MAXPOINTS];
-  double s[MAXPOINTS];
-  double v[MAXPOINTS];
-  double total_s = 0;
-  double total_v = 0;
-  Screen *screen = DefaultScreenOfDisplay(dpy); /* #### WRONG! */
-
-  if (*ncolorsP <= 0) return;
-
-  {
-    int n = random() % 20;
-    if      (n <= 5)  npoints = 2;     /* 30% of the time */
-    else if (n <= 15) npoints = 3;     /* 50% of the time */
-    else if (n <= 18) npoints = 4;     /* 15% of the time */
-    else             npoints = 5;      /*  5% of the time */
-  }
-
- REPICK_ALL_COLORS:
-  for (i = 0; i < npoints; i++)
-    {
-    REPICK_THIS_COLOR:
-      h[i] = random() % 360;
-      s[i] = frand(1.0);
-      v[i] = frand(0.8) + 0.2;
-
-      /* Make sure that no two adjascent colors are *too* close together.
-        If they are, try again.
-       */
-      if (i > 0)
-       {
-         int j = (i+1 == npoints) ? 0 : (i-1);
-         double hi = ((double) h[i]) / 360;
-         double hj = ((double) h[j]) / 360;
-         double dh = hj - hi;
-         double distance;
-         if (dh < 0) dh = -dh;
-         if (dh > 0.5) dh = 0.5 - (dh - 0.5);
-         distance = sqrt ((dh * dh) +
-                          ((s[j] - s[i]) * (s[j] - s[i])) +
-                          ((v[j] - v[i]) * (v[j] - v[i])));
-         if (distance < 0.2)
-           goto REPICK_THIS_COLOR;
-       }
-      total_s += s[i];
-      total_v += v[i];
-    }
-
-  /* If the average saturation or intensity are too low, repick the colors,
-     so that we don't end up with a black-and-white or too-dark map.
-   */
-  if (total_s / npoints < 0.2)
-    goto REPICK_ALL_COLORS;
-  if (total_v / npoints < 0.3)
-    goto REPICK_ALL_COLORS;
-
-  /* If this visual doesn't support writable cells, don't bother trying.
-   */
-  if (wanted_writable && !has_writable_cells(screen, visual))
-    *writable_pP = False;
-
- RETRY_NON_WRITABLE:
-  make_color_path (dpy, cmap, npoints, h, s, v, colors, &ncolors,
-                  allocate_p, (writable_pP && *writable_pP));
-
-  /* If we tried for writable cells and got none, try for non-writable. */
-  if (allocate_p && *ncolorsP == 0 && *writable_pP)
-    {
-      *writable_pP = False;
-      goto RETRY_NON_WRITABLE;
-    }
-
-  if (verbose_p)
-    complain(*ncolorsP, ncolors, wanted_writable,
-            wanted_writable && *writable_pP);
-
-  *ncolorsP = ncolors;
-}
-
-
-void
-make_uniform_colormap (Display *dpy, Visual *visual, Colormap cmap,
-                      XColor *colors, int *ncolorsP,
-                      Bool allocate_p,
-                      Bool *writable_pP,
-                      Bool verbose_p)
-{
-  int ncolors = *ncolorsP;
-  Bool wanted_writable = (allocate_p && writable_pP && *writable_pP);
-  Screen *screen = DefaultScreenOfDisplay(dpy); /* #### WRONG! */
-
-  double S = ((double) (random() % 34) + 66) / 100.0;  /* range 66%-100% */
-  double V = ((double) (random() % 34) + 66) / 100.0;  /* range 66%-100% */
-
-  if (*ncolorsP <= 0) return;
-
-  /* If this visual doesn't support writable cells, don't bother trying. */
-  if (wanted_writable && !has_writable_cells(screen, visual))
-    *writable_pP = False;
-
- RETRY_NON_WRITABLE:
-  make_color_ramp(dpy, cmap,
-                 0,   S, V,
-                 359, S, V,
-                 colors, &ncolors,
-                 False, True,
-                  (writable_pP && *writable_pP));
-
-  /* If we tried for writable cells and got none, try for non-writable. */
-  if (allocate_p && *ncolorsP == 0 && writable_pP && *writable_pP)
-    {
-      ncolors = *ncolorsP;
-      *writable_pP = False;
-      goto RETRY_NON_WRITABLE;
-    }
-
-  if (verbose_p)
-    complain(*ncolorsP, ncolors, wanted_writable,
-            wanted_writable && *writable_pP);
-
-  *ncolorsP = ncolors;
-}
-
-
-void
-make_random_colormap (Display *dpy, Visual *visual, Colormap cmap,
-                     XColor *colors, int *ncolorsP,
-                     Bool bright_p,
-                     Bool allocate_p,
-                     Bool *writable_pP,
-                     Bool verbose_p)
-{
-  Bool wanted_writable = (allocate_p && writable_pP && *writable_pP);
-  int ncolors = *ncolorsP;
-  int i;
-  Screen *screen = DefaultScreenOfDisplay(dpy); /* #### WRONG! */
-
-  if (*ncolorsP <= 0) return;
-
-  /* If this visual doesn't support writable cells, don't bother trying. */
-  if (wanted_writable && !has_writable_cells(screen, visual))
-    *writable_pP = False;
-
-  for (i = 0; i < ncolors; i++)
-    {
-      colors[i].flags = DoRed|DoGreen|DoBlue;
-      if (bright_p)
-       {
-         int H = random() % 360;                          /* range 0-360    */
-         double S = ((double) (random()%70) + 30)/100.0;  /* range 30%-100% */
-         double V = ((double) (random()%34) + 66)/100.0;  /* range 66%-100% */
-         hsv_to_rgb (H, S, V,
-                     &colors[i].red, &colors[i].green, &colors[i].blue);
-       }
-      else
-       {
-         colors[i].red   = random() % 0xFFFF;
-         colors[i].green = random() % 0xFFFF;
-         colors[i].blue  = random() % 0xFFFF;
-       }
-    }
-
-  if (!allocate_p)
-    return;
-
- RETRY_NON_WRITABLE:
-  if (writable_pP && *writable_pP)
-    {
-      unsigned long *pixels = (unsigned long *)
-       malloc(sizeof(*pixels) * (ncolors + 1));
-
-      allocate_writable_colors (dpy, cmap, pixels, &ncolors);
-      if (ncolors > 0)
-       for (i = 0; i < ncolors; i++)
-         colors[i].pixel = pixels[i];
-      free (pixels);
-      if (ncolors > 0)
-       XStoreColors (dpy, cmap, colors, ncolors);
-    }
-  else
-    {
-      for (i = 0; i < ncolors; i++)
-       {
-         XColor color;
-         color = colors[i];
-         if (!XAllocColor (dpy, cmap, &color))
-           break;
-         colors[i].pixel = color.pixel;
-       }
-      ncolors = i;
-    }
-
-  /* If we tried for writable cells and got none, try for non-writable. */
-  if (allocate_p && ncolors == 0 && writable_pP && *writable_pP)
-    {
-      ncolors = *ncolorsP;
-      *writable_pP = False;
-      goto RETRY_NON_WRITABLE;
-    }
-
-  if (verbose_p)
-    complain(*ncolorsP, ncolors, wanted_writable,
-            wanted_writable && *writable_pP);
-
-  *ncolorsP = ncolors;
-}
-
-
-void
-rotate_colors (Display *dpy, Colormap cmap,
-              XColor *colors, int ncolors, int distance)
-{
-  int i;
-  XColor *colors2 = (XColor *) malloc(sizeof(*colors2) * ncolors);
-  if (ncolors < 2) return;
-  distance = distance % ncolors;
-  for (i = 0; i < ncolors; i++)
-    {
-      int j = i - distance;
-      if (j >= ncolors) j -= ncolors;
-      if (j < 0) j += ncolors;
-      colors2[i] = colors[j];
-      colors2[i].pixel = colors[i].pixel;
-    }
-  XStoreColors (dpy, cmap, colors2, ncolors);
-  XFlush(dpy);
-  memcpy(colors, colors2, sizeof(*colors) * ncolors);
-  free(colors2);
-}
diff --git a/utils/colors.h b/utils/colors.h
deleted file mode 100644 (file)
index 61421cf..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1997 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.
- */
-
-#ifndef __COLORS_H__
-#define __COLORS_H__
-
-/* Like XFreeColors, but works on `XColor *' instead of `unsigned long *'
- */
-extern void free_colors (Display *, Colormap, XColor *, int ncolors);
-
-
-/* Allocates writable, non-contiguous color cells.  The number requested is
-   passed in *ncolorsP, and the number actually allocated is returned there.
-   (Unlike XAllocColorCells(), this will allocate as many as it can, instead
-   of failing if they can't all be allocated.)
- */
-extern void allocate_writable_colors (Display *dpy, Colormap cmap,
-                                     unsigned long *pixels, int *ncolorsP);
-
-
-/* Generates a sequence of colors evenly spaced between the given pair
-   of HSV coordinates.
-
-   If closed_p is true, the colors will go from the first point to the
-   second then back to the first.
-
-   If allocate_p is true, the colors will be allocated from the map;
-   if enough colors can't be allocated, we will try for less, and the
-   result will be returned to ncolorsP.
-
-   If writable_p is true, writable color cells will be allocated;
-   otherwise, read-only cells will be allocated.
- */
-extern void make_color_ramp (Display *dpy, Colormap cmap,
-                            int h1, double s1, double v1,
-                            int h2, double s2, double v2,
-                            XColor *colors, int *ncolorsP,
-                            Bool closed_p,
-                            Bool allocate_p,
-                            Bool writable_p);
-
-/* Generates a sequence of colors evenly spaced around the triangle
-   indicated by the thee HSV coordinates.
-
-   If allocate_p is true, the colors will be allocated from the map;
-   if enough colors can't be allocated, we will try for less, and the
-   result will be returned to ncolorsP.
-
-   If writable_p is true, writable color cells will be allocated;
-   otherwise, read-only cells will be allocated.
- */
-extern void make_color_loop (Display *, Colormap,
-                            int h1, double s1, double v1,
-                            int h2, double s2, double v2,
-                            int h3, double s3, double v3,
-                            XColor *colors, int *ncolorsP,
-                            Bool allocate_p,
-                            Bool writable_p);
-
-
-/* Allocates a hopefully-interesting colormap, which will be a closed loop
-   without any sudden transitions.
-
-   If allocate_p is true, the colors will be allocated from the map;
-   if enough colors can't be allocated, we will try for less, and the
-   result will be returned to ncolorsP.  An error message will be
-   printed on stderr (if verbose_p).
-
-   If *writable_pP is true, writable color cells will be allocated;
-   otherwise, read-only cells will be allocated.  If no writable cells
-   cannot be allocated, we will try to allocate unwritable cells
-   instead, and print a message on stderr to that effect (if verbose_p).
- */
-extern void make_smooth_colormap (Display *dpy, Visual *visual,
-                                 Colormap cmap,
-                                 XColor *colors, int *ncolorsP,
-                                 Bool allocate_p,
-                                 Bool *writable_pP,
-                                 Bool verbose_p);
-
-/* Allocates a uniform colormap which touches each hue of the spectrum,
-   evenly spaced.  The saturation and intensity are chosen randomly, but
-   will be high enough to be visible.
-
-   If allocate_p is true, the colors will be allocated from the map;
-   if enough colors can't be allocated, we will try for less, and the
-   result will be returned to ncolorsP.  An error message will be
-   printed on stderr (if verbose_p).
-
-   If *writable_pP is true, writable color cells will be allocated;
-   otherwise, read-only cells will be allocated.  If no writable cells
-   cannot be allocated, we will try to allocate unwritable cells
-   instead, and print a message on stderr to that effect (if verbose_p).
- */
-extern void make_uniform_colormap (Display *dpy, Visual *visual,
-                                  Colormap cmap,
-                                  XColor *colors, int *ncolorsP,
-                                  Bool allocate_p,
-                                  Bool *writable_pP,
-                                  Bool verbose_p);
-
-/* Allocates a random colormap (the colors are unrelated to one another.)
-   If `bright_p' is false, the colors will be completely random; if it is
-   true, all of the colors will be bright enough to see on a black background.
-
-   If allocate_p is true, the colors will be allocated from the map;
-   if enough colors can't be allocated, we will try for less, and the
-   result will be returned to ncolorsP.  An error message will be
-   printed on stderr (if verbose_p).
-
-   If *writable_pP is true, writable color cells will be allocated;
-   otherwise, read-only cells will be allocated.  If no writable cells
-   cannot be allocated, we will try to allocate unwritable cells
-   instead, and print a message on stderr to that effect (if verbose_p).
- */
-extern void make_random_colormap (Display *dpy, Visual *visual,
-                                 Colormap cmap,
-                                 XColor *colors, int *ncolorsP,
-                                 Bool bright_p,
-                                 Bool allocate_p,
-                                 Bool *writable_pP,
-                                 Bool verbose_p);
-
-
-/* Assuming that the array of colors indicates the current state of a set
-   of writable color cells, this rotates the contents of the array by
-   `distance' steps, moving the colors of cell N to cell (N - distance).
- */
-extern void rotate_colors (Display *, Colormap,
-                          XColor *, int ncolors, int distance);
-
-#endif /* __COLORS_H__ */
diff --git a/utils/compile_axp.com b/utils/compile_axp.com
deleted file mode 100644 (file)
index 78fa5f4..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) ALPHA.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) COLORS.C
-$ 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=([],[-]) 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
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SPLINE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) USLEEP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL-GL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL.C
-$ 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
-$ lib utils.olb_axp *.obj
-$! delete/noconf *.obj;
diff --git a/utils/compile_decc.com b/utils/compile_decc.com
deleted file mode 100644 (file)
index 7310767..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) ALPHA.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) COLORS.C
-$ 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=([],[-]) 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
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SPLINE.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) USLEEP.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL-GL.C
-$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL.C
-$ 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
-$ lib utils.olb_decc *.obj
-$! delete/noconf *.obj;
diff --git a/utils/erase.c b/utils/erase.c
deleted file mode 100644 (file)
index c2c8de7..0000000
+++ /dev/null
@@ -1,586 +0,0 @@
-/* erase.c: Erase the screen in various more or less interesting ways.
- * (c) 1997 by Johannes Keukelaar <johannes@nada.kth.se>
- * Permission to use in any way granted. Provided "as is" without expressed
- * or implied warranty. NO WARRANTY, NO EXPRESSION OF SUITABILITY FOR ANY
- * PURPOSE. (I.e.: Use in any way, but at your own risk!)
- */
-
-#include "utils.h"
-#include "yarandom.h"
-#include "usleep.h"
-#include "resources.h"
-
-#undef countof
-#define countof(x) (sizeof(x)/sizeof(*(x)))
-
-typedef void (*Eraser) (Display *dpy, Window window, GC gc,
-                       int width, int height, int delay, int granularity);
-
-
-static void
-random_lines (Display *dpy, Window window, GC gc,
-             int width, int height, int delay, int granularity)
-{
-  Bool horiz_p = (random() & 1);
-  int max = (horiz_p ? height : width);
-  int *lines = (int *) calloc(max, sizeof(*lines));
-  int i;
-
-  for (i = 0; i < max; i++)
-    lines[i] = i;
-
-  for (i = 0; i < max; i++)
-    {
-      int t, r;
-      t = lines[i];
-      r = random() % max;
-      lines[i] = lines[r];
-      lines[r] = t;
-    }
-
-  for (i = 0; i < max; i++)
-    { 
-      if (horiz_p)
-       XDrawLine (dpy, window, gc, 0, lines[i], width, lines[i]);
-      else
-       XDrawLine (dpy, window, gc, lines[i], 0, lines[i], height);
-
-      XSync (dpy, False);
-      if (delay > 0 && ((i % granularity) == 0))
-       usleep (delay * granularity);
-    }
-  free(lines);
-}
-
-
-static void
-venetian (Display *dpy, Window window, GC gc,
-         int width, int height, int delay, int granularity)
-{
-  Bool horiz_p = (random() & 1);
-  Bool flip_p = (random() & 1);
-  int max = (horiz_p ? height : width);
-  int *lines = (int *) calloc(max, sizeof(*lines));
-  int i, j;
-
-  granularity /= 6;
-
-  j = 0;
-  for (i = 0; i < max*2; i++)
-    {
-      int line = ((i / 16) * 16) - ((i % 16) * 15);
-      if (line >= 0 && line < max)
-       lines[j++] = (flip_p ? max - line : line);
-    }
-
-  for (i = 0; i < max; i++)
-    { 
-      if (horiz_p)
-       XDrawLine (dpy, window, gc, 0, lines[i], width, lines[i]);
-      else
-       XDrawLine (dpy, window, gc, lines[i], 0, lines[i], height);
-
-      XSync (dpy, False);
-      if (delay > 0 && ((i % granularity) == 0))
-       usleep (delay * granularity);
-    }
-  free(lines);
-}
-
-
-static void
-triple_wipe (Display *dpy, Window window, GC gc,
-            int width, int height, int delay, int granularity)
-{
-  Bool flip_x = random() & 1;
-  Bool flip_y = random() & 1;
-  int max = width + (height / 2);
-  int *lines = (int *)calloc(max, sizeof(int));
-  int i;
-
-  for(i = 0; i < width/2; i++)
-    lines[i] = i*2+height;
-  for(i = 0; i < height/2; i++)
-    lines[i+width/2] = i*2;
-  for(i = 0; i < width/2; i++)
-    lines[i+width/2+height/2] = width-i*2-(width%2?0:1)+height;
-
-  granularity /= 6;
-
-  for (i = 0; i < max; i++)
-    { 
-      int x, y, x2, y2;
-      if (lines[i] < height)
-       x = 0, y = lines[i], x2 = width, y2 = y;
-      else
-       x = lines[i]-height, y = 0, x2 = x, y2 = height;
-
-      if (flip_x)
-       x = width-x, x2 = width-x2;
-      if (flip_y)
-       y = height-y, y2 = height-y2;
-
-      XDrawLine (dpy, window, gc, x, y, x2, y2);
-      XSync (dpy, False);
-      if (delay > 0 && ((i % granularity) == 0))
-       usleep (delay*granularity);
-    }
-  free(lines);
-}
-
-
-static void
-quad_wipe (Display *dpy, Window window, GC gc,
-          int width, int height, int delay, int granularity)
-{
-  Bool flip_x = random() & 1;
-  Bool flip_y = random() & 1;
-  int max = width + height;
-  int *lines = (int *)calloc(max, sizeof(int));
-  int i;
-
-  granularity /= 3;
-
-  for (i = 0; i < max/4; i++)
-    {
-      lines[i*4]   = i*2;
-      lines[i*4+1] = height-i*2-(height%2?0:1);
-      lines[i*4+2] = height+i*2;
-      lines[i*4+3] = height+width-i*2-(width%2?0:1);
-    }
-
-  for (i = 0; i < max; i++)
-    { 
-      int x, y, x2, y2;
-      if (lines[i] < height)
-       x = 0, y = lines[i], x2 = width, y2 = y;
-      else
-       x = lines[i]-height, y = 0, x2 = x, y2 = height;
-
-      if (flip_x)
-       x = width-x, x2 = width-x2;
-      if (flip_y)
-       y = height-y, y2 = height-y2;
-
-      XDrawLine (dpy, window, gc, x, y, x2, y2);
-      XSync (dpy, False);
-      if (delay > 0 && ((i % granularity) == 0))
-       usleep (delay*granularity);
-    }
-  free(lines);
-}
-
-
-
-static void
-circle_wipe (Display *dpy, Window window, GC gc,
-            int width, int height, int delay, int granularity)
-{
-  int full = 360 * 64;
-  int inc = full / 64;
-  int start = random() % full;
-  int rad = (width > height ? width : height);
-  int i;
-  if (random() & 1)
-    inc = -inc;
-  for (i = (inc > 0 ? 0 : full);
-       (inc > 0 ? i < full : i > 0);
-       i += inc)
-    {
-      XFillArc(dpy, window, gc,
-              (width/2)-rad, (height/2)-rad, rad*2, rad*2,
-              (i+start) % full, inc);
-      XFlush (dpy);
-      usleep (delay*granularity);
-    }
-}
-
-
-static void
-three_circle_wipe (Display *dpy, Window window, GC gc,
-                  int width, int height, int delay, int granularity)
-{
-  int i;
-  int full = 360 * 64;
-  int q = full / 6;
-  int q2 = q * 2;
-  int inc = full / 240;
-  int start = random() % q;
-  int rad = (width > height ? width : height);
-
-  for (i = 0; i < q; i += inc)
-    {
-      XFillArc(dpy, window, gc, (width/2)-rad, (height/2)-rad, rad*2, rad*2,
-              (start+i) % full, inc);
-      XFillArc(dpy, window, gc, (width/2)-rad, (height/2)-rad, rad*2, rad*2,
-              (start-i) % full, -inc);
-
-      XFillArc(dpy, window, gc, (width/2)-rad, (height/2)-rad, rad*2, rad*2,
-              (start+q2+i) % full, inc);
-      XFillArc(dpy, window, gc, (width/2)-rad, (height/2)-rad, rad*2, rad*2,
-              (start+q2-i) % full, -inc);
-
-      XFillArc(dpy, window, gc, (width/2)-rad, (height/2)-rad, rad*2, rad*2,
-              (start+q2+q2+i) % full, inc);
-      XFillArc(dpy, window, gc, (width/2)-rad, (height/2)-rad, rad*2, rad*2,
-              (start+q2+q2-i) % full, -inc);
-
-      XSync (dpy, False);
-      usleep (delay*granularity);
-    }
-}
-
-
-static void
-squaretate (Display *dpy, Window window, GC gc,
-           int width, int height, int delay, int granularity)
-{
-  int steps = (((width > height ? width : width) * 2) / granularity);
-  int i;
-  Bool flip = random() & 1;
-
-#define DRAW() \
-      if (flip) { \
-       points[0].x = width-points[0].x; \
-       points[1].x = width-points[1].x; \
-        points[2].x = width-points[2].x; } \
-      XFillPolygon (dpy, window, gc, points, 3, Convex, CoordModeOrigin)
-
-  for (i = 0; i < steps; i++)
-    {
-      XPoint points [3];
-      points[0].x = 0;
-      points[0].y = 0;
-      points[1].x = width;
-      points[1].y = 0;
-      points[2].x = 0;
-      points[2].y = points[0].y + ((i * height) / steps);
-      DRAW();
-
-      points[0].x = 0;
-      points[0].y = 0;
-      points[1].x = 0;
-      points[1].y = height;
-      points[2].x = ((i * width) / steps);
-      points[2].y = height;
-      DRAW();
-
-      points[0].x = width;
-      points[0].y = height;
-      points[1].x = 0;
-      points[1].y = height;
-      points[2].x = width;
-      points[2].y = height - ((i * height) / steps);
-      DRAW();
-
-      points[0].x = width;
-      points[0].y = height;
-      points[1].x = width;
-      points[1].y = 0;
-      points[2].x = width - ((i * width) / steps);
-      points[2].y = 0;
-      DRAW();
-
-      XSync (dpy, True);
-      if (delay > 0)
-       usleep (delay * granularity);
-   }
-#undef DRAW
-}
-
-
-/* from Frederick Roeber <roeber@netscape.com> */
-static void
-fizzle (Display *dpy, Window window, GC gc,
-           int width, int height, int delay, int granularity)
-{
-  /* These dimensions must be prime numbers.  They should be roughly the
-     square root of the width and height. */
-# define BX 31
-# define BY 31
-# define SIZE (BX*BY)
-
-  int array[SIZE];
-  int i, j;
-  XPoint *skews;
-  int nx, ny;
-
-  /* Distribute the numbers [0,SIZE) randomly in the array */
-  {
-    int indices[SIZE];
-
-    for( i = 0; i < SIZE; i++ ) {
-      array[i] = -1;
-      indices[i] = i;
-    } 
-
-    for( i = 0; i < SIZE; i++ ) {
-      j = random()%(SIZE-i);
-      array[indices[j]] = i;
-      indices[j] = indices[SIZE-i-1];
-    }
-  }
-
-  /* nx, ny are the number of cells across and down, rounded up */
-  nx = width  / BX + (0 == (width %BX) ? 0 : 1);
-  ny = height / BY + (0 == (height%BY) ? 0 : 1);
-  skews = (XPoint *)malloc(sizeof(XPoint) * (nx*ny));
-  if( (XPoint *)0 != skews ) {
-    for( i = 0; i < nx; i++ ) {
-      for( j = 0; j < ny; j++ ) {
-        skews[j * nx + i].x = random()%BX;
-        skews[j * nx + i].y = random()%BY;
-      }
-    }
-  }
-
-# define SKEWX(cx, cy) (((XPoint *)0 == skews)?0:skews[cy*nx + cx].x)
-# define SKEWY(cx, cy) (((XPoint *)0 == skews)?0:skews[cy*nx + cx].y)
-
-  for( i = 0; i < SIZE; i++ ) {
-    int x = array[i] % BX;
-    int y = array[i] / BX;
-
-    {
-      int iy, cy;
-      for( iy = 0, cy = 0; iy < height; iy += BY, cy++ ) {
-        int ix, cx;
-        for( ix = 0, cx = 0; ix < width; ix += BX, cx++ ) {
-          int xx = ix + (SKEWX(cx, cy) + x*((cx%(BX-1))+1))%BX;
-          int yy = iy + (SKEWY(cx, cy) + y*((cy%(BY-1))+1))%BY;
-          XDrawPoint(dpy, window, gc, xx, yy);
-        }
-      }
-    }
-
-    if( (BX-1) == (i%BX) ) {
-      XSync (dpy, False);
-      usleep (delay*granularity);
-    }
-  }
-
-# undef SKEWX
-# undef SKEWY
-
-  if( (XPoint *)0 != skews ) {
-    free(skews);
-  }
-
-# undef BX
-# undef BY
-# undef SIZE
-}
-
-
-/* from Rick Campbell <rick@campbellcentral.org> */
-static void
-spiral (Display *display, Window window, GC context,
-        int width, int height, int delay, int granularity)
-{
-# define SPIRAL_ERASE_PI_2 (M_PI + M_PI)
-# define SPIRAL_ERASE_LOOP_COUNT (10)
-# define SPIRAL_ERASE_ARC_COUNT (360.0)
-# define SPIRAL_ERASE_ANGLE_INCREMENT (SPIRAL_ERASE_PI_2 /     \
-SPIRAL_ERASE_ARC_COUNT)
-# define SPIRAL_ERASE_DELAY (0)
-
-  double angle;
-  int arc_limit;
-  int arc_max_limit;
-  int length_step;
-  XPoint points [3];
-
-  angle = 0.0;
-  arc_limit = 1;
-  arc_max_limit = (int) (ceil (sqrt ((width * width) + (height * height)))
-                         / 2.0);
-  length_step = ((arc_max_limit + SPIRAL_ERASE_LOOP_COUNT - 1) /
-                 SPIRAL_ERASE_LOOP_COUNT);
-  arc_max_limit += length_step;
-  points [0].x = width / 2;
-  points [0].y = height / 2;
-  points [1].x = points [0].x + length_step;
-  points [1].y = points [0].y;
-  points [2].x = points [1].x;
-  points [2].y = points [1].y;
-
-  for (arc_limit = length_step;
-       arc_limit < arc_max_limit;
-       arc_limit += length_step)
-    {
-      int arc_length = length_step;
-      int length_base = arc_limit;
-      for (angle = 0.0; angle < SPIRAL_ERASE_PI_2;
-           angle += SPIRAL_ERASE_ANGLE_INCREMENT)
-        {
-          arc_length = length_base + ((length_step * angle) /
-                                      SPIRAL_ERASE_PI_2);
-          points [1].x = points [2].x;
-          points [1].y = points [2].y;
-          points [2].x = points [0].x + (int)(cos (angle) * arc_length);
-          points [2].y = points [0].y + (int)(sin (angle) * arc_length);
-          XFillPolygon (display, window, context, points, 3, Convex,
-                        CoordModeOrigin);
-# if (SPIRAL_ERASE_DELAY != 0)
-          usleep (SPIRAL_ERASE_DELAY);
-# endif /* (SPIRAL_ERASE_DELAY != 0) */
-        }
-    }
-# undef SPIRAL_ERASE_DELAY
-# undef SPIRAL_ERASE_ANGLE_INCREMENT
-# undef SPIRAL_ERASE_ARC_COUNT
-# undef SPIRAL_ERASE_LOOP_COUNT
-# undef SPIRAL_ERASE_PI_2
-}
-
-
-#undef MAX
-#undef MIN
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#define MIN(a,b) ((a)<(b)?(a):(b))
-
-/* from David Bagley <bagleyd@tux.org> */
-static void
-random_squares(Display * dpy, Window window, GC gc,
-               int width, int height, int delay, int granularity)
-{
-  int randsize = MAX(1, MIN(width, height) / (16 + (random() % 32)));
-  int max = (height / randsize + 1) * (width / randsize + 1);
-  int *squares = (int *) calloc(max, sizeof (*squares));
-  int i;
-  int columns = width / randsize + 1;  /* Add an extra for roundoff */
-
-  for (i = 0; i < max; i++)
-    squares[i] = i;
-
-  for (i = 0; i < max; i++)
-    {
-      int t, r;
-      t = squares[i];
-      r = random() % max;
-      squares[i] = squares[r];
-      squares[r] = t;
-    }
-
-  for (i = 0; i < max; i++)
-    {
-      XFillRectangle(dpy, window, gc,
-                    (squares[i] % columns) * randsize,
-                    (squares[i] / columns) * randsize,
-                    randsize, randsize);
-
-      XSync(dpy, False);
-      if (delay > 0 && ((i % granularity) == 0))
-      usleep(delay * granularity);
-    }
-  free(squares);
-}
-
-
-static Eraser erasers[] = {
-  random_lines,
-  venetian,
-  triple_wipe,
-  quad_wipe,
-  circle_wipe,
-  three_circle_wipe,
-  squaretate,
-  fizzle,
-  random_squares,
-  spiral,
-};
-
-
-void
-erase_window(Display *dpy, Window window, GC gc,
-            int width, int height, int mode, int delay)
-{
-  int granularity = 25;
-
-  if (mode < 0 || mode >= countof(erasers))
-    mode = random() % countof(erasers);
-  (*(erasers[mode])) (dpy, window, gc, width, height, delay, granularity);
-  XClearWindow (dpy, window);
-  XSync(dpy, False);
-}
-
-
-void
-erase_full_window(Display *dpy, Window window)
-{
-  XWindowAttributes xgwa;
-  XGCValues gcv;
-  GC erase_gc;
-  XColor black;
-  int erase_speed, erase_mode;
-  char *s;
-
-  s = get_string_resource("eraseSpeed", "Integer");
-  if (s && *s)
-    erase_speed = get_integer_resource("eraseSpeed", "Integer");
-  else
-    erase_speed = 400;
-  if (s) free(s);
-
-  s = get_string_resource("eraseMode", "Integer");
-  if (s && *s)
-    erase_mode = get_integer_resource("eraseMode", "Integer");
-  else
-    erase_mode = -1;
-  if (s) free(s);
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-  black.flags = DoRed|DoGreen|DoBlue;
-  black.red = black.green = black.blue = 0;
-  XAllocColor(dpy, xgwa.colormap, &black);
-  gcv.foreground = black.pixel;
-  erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
-  erase_window (dpy, window, erase_gc, xgwa.width, xgwa.height,
-               erase_mode, erase_speed);
-  XFreeColors(dpy, xgwa.colormap, &black.pixel, 1, 0);
-  XFreeGC(dpy, erase_gc);
-}
-
-
-\f
-#if 0
-#include "screenhack.h"
-
-char *progclass = "Erase";
-char *defaults [] = {
-  0
-};
-
-XrmOptionDescRec options [] = {{0}};
-int options_size = 0;
-
-void
-screenhack (dpy, window)
-     Display *dpy;
-     Window window;
-{
-  int delay = 500000;
-  XGCValues gcv;
-  GC gc;
-  XColor white;
-  XWindowAttributes xgwa;
-  XGetWindowAttributes (dpy, window, &xgwa);
-  white.flags = DoRed|DoGreen|DoBlue;
-  white.red = white.green = white.blue = 0xFFFF;
-  XAllocColor(dpy, xgwa.colormap, &white);
-  gcv.foreground = white.pixel;
-  gc = XCreateGC (dpy, window, GCForeground, &gcv);
-
-  while (1)
-    {
-      XFillRectangle(dpy, window, gc, 0, 0, 1280, 1024);
-      XSync (dpy, False);
-      usleep (delay);
-      erase_full_window(dpy, window);
-      XSync (dpy, False);
-      usleep (delay);
-
-    }
-}
-
-#endif
diff --git a/utils/erase.h b/utils/erase.h
deleted file mode 100644 (file)
index 2f00d3e..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* erase.c: Erase the screen in various more or less interesting ways.
- * (c) 1997 by Johannes Keukelaar <johannes@nada.kth.se>
- * Permission to use in any way granted. Provided "as is" without expressed
- * or implied warranty. NO WARRANTY, NO EXPRESSION OF SUITABILITY FOR ANY
- * PURPOSE. (I.e.: Use in any way, but at your own risk!)
- */
-
-#ifndef __XSCREENSAVER_ERASE_H__
-#define __XSCREENSAVER_ERASE_H__
-
-extern void erase_window(Display *dpy, Window window, GC gc,
-                        int width, int height, int mode, int delay);
-extern void erase_full_window(Display *dpy, Window window);
-
-#endif /* __XSCREENSAVER_ERASE_H__ */
diff --git a/utils/fade.c b/utils/fade.c
deleted file mode 100644 (file)
index 07b1a4e..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-/* xscreensaver, Copyright (c) 1992-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"
-
-#include <sys/time.h> /* for gettimeofday() */
-
-#ifdef VMS
-# include "vms-gtod.h"
-#endif /* VMS */
-
-#include "visual.h"
-#include "usleep.h"
-#include "fade.h"
-
-
-Colormap
-copy_colormap (Screen *screen, Visual *visual,
-              Colormap cmap, Colormap into_cmap)
-{
-  int i;
-  Display *dpy = DisplayOfScreen (screen);
-  Window window = RootWindowOfScreen (screen);
-  int ncolors = CellsOfScreen (screen);
-  XColor *colors = 0;
-
-  /* If this is a colormap on a mono visual, or one with insanely many
-     color cells, bug out. */
-  if (ncolors <= 2 || ncolors > 4096)
-    return 0;
-  /* If this is a non-writable visual, bug out. */
-  if (!has_writable_cells (screen, visual))
-    return 0;
-
-  if (! into_cmap)
-    into_cmap = XCreateColormap (dpy, window, visual, AllocAll);
-  if (! cmap)
-    cmap = DefaultColormapOfScreen (screen);
-
-  colors = (XColor *) calloc(sizeof(XColor), ncolors);
-  for (i = 0; i < ncolors; i++)
-    colors [i].pixel = i;
-  XQueryColors (dpy, cmap, colors, ncolors);
-  XStoreColors (dpy, into_cmap, colors, ncolors);
-  free (colors);
-  return into_cmap;
-}
-
-
-void
-blacken_colormap (Screen *screen, Colormap cmap)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  int ncolors = CellsOfScreen (screen);
-  XColor *colors;
-  int i;
-  if (ncolors > 4096)
-    return;
-  colors = (XColor *) calloc(sizeof(XColor), ncolors);
-  for (i = 0; i < ncolors; i++)
-    colors[i].pixel = i;
-  XStoreColors (dpy, cmap, colors, ncolors);
-  free (colors);
-}
-
-
-
-static void fade_screens_1 (Display *dpy, Colormap *cmaps,
-                           Window *black_windows, int seconds, int ticks,
-                           Bool out_p, Bool clear_windows);
-#ifdef HAVE_SGI_VC_EXTENSION
-static int sgi_gamma_fade (Display *dpy,
-                          Window *black_windows, int seconds, int ticks,
-                          Bool out_p, Bool clear_windows);
-#endif /* HAVE_SGI_VC_EXTENSION */
-
-
-
-void
-fade_screens (Display *dpy, Colormap *cmaps, Window *black_windows,
-             int seconds, int ticks,
-             Bool out_p, Bool clear_windows)
-{
-  int oseconds = seconds;
-  Bool was_in_p = !out_p;
-
-  /* When we're asked to fade in, first fade out, then fade in.
-     That way all the transitions are smooth -- from what's on the
-     screen, to black, to the desktop.
-   */
-  if (was_in_p)
-    {
-      clear_windows = True;
-      out_p = True;
-      seconds /= 3;
-      if (seconds == 0)
-       seconds = 1;
-    }
-
- AGAIN:
-
-#ifdef HAVE_SGI_VC_EXTENSION
-  /* First try to do it by fading the gamma in an SGI-specific way... */
-  if (0 != sgi_gamma_fade(dpy, black_windows, seconds, ticks, out_p,
-                         clear_windows))
-#endif /* HAVE_SGI_VC_EXTENSION */
-    /* Else, do it the old-fashioned way, which (somewhat) loses if
-       there are TrueColor windows visible. */
-    fade_screens_1 (dpy, cmaps, black_windows, seconds, ticks,
-                   out_p, clear_windows);
-
-  /* If we were supposed to be fading in, do so now (we just faded out,
-     so now fade back in.)
-   */
-  if (was_in_p)
-    {
-      was_in_p = False;
-      out_p = False;
-      seconds = oseconds * 2 / 3;
-      if (seconds == 0)
-       seconds = 1;
-      goto AGAIN;
-    }
-}
-
-
-/* The business with `cmaps_per_screen' is to fake out the SGI 8-bit video
-   hardware, which is capable of installing multiple (4) colormaps
-   simultaniously.  We have to install multiple copies of the same set of
-   colors in order to fill up all the available slots in the hardware color
-   lookup table, so we install an extra N colormaps per screen to make sure
-   that all screens really go black.
-
-   I'm told that this trick also works with XInside's AcceleratedX when using
-   the Matrox Millenium card (which also allows multiple PseudoColor and
-   TrueColor visuals to co-exist and display properly at the same time.)  
-
-   This trick works ok on the 24-bit Indy video hardware, but doesn't work at
-   all on the O2 24-bit hardware.  I guess the higher-end hardware is too
-   "good" for this to work (dammit.)  So... I figured out the "right" way to
-   do this on SGIs, which is to ramp the monitor's gamma down to 0.  That's
-   what is implemented in sgi_gamma_fade(), so we use that if we can.
- */
-static void
-fade_screens_1 (Display *dpy, Colormap *cmaps, Window *black_windows,
-               int seconds, int ticks,
-               Bool out_p, Bool clear_windows)
-{
-  int i, j, k;
-  int steps = seconds * ticks;
-  long usecs_per_step = (long)(seconds * 1000000) / (long)steps;
-  XEvent dummy_event;
-  int cmaps_per_screen = 5;
-  int nscreens = ScreenCount(dpy);
-  int ncmaps = nscreens * cmaps_per_screen;
-  Colormap *fade_cmaps = 0;
-  Bool installed = False;
-  int total_ncolors;
-  XColor *orig_colors, *current_colors, *screen_colors, *orig_screen_colors;
-  struct timeval then, now;
-#ifdef GETTIMEOFDAY_TWO_ARGS
-  struct timezone tzp;
-#endif
-
-  total_ncolors = 0;
-  for (i = 0; i < nscreens; i++)
-    total_ncolors += CellsOfScreen (ScreenOfDisplay(dpy, i));
-
-  orig_colors    = (XColor *) calloc(sizeof(XColor), total_ncolors);
-  current_colors = (XColor *) calloc(sizeof(XColor), total_ncolors);
-
-  /* Get the contents of the colormap we are fading from or to. */
-  screen_colors = orig_colors;
-  for (i = 0; i < nscreens; i++)
-    {
-      int ncolors = CellsOfScreen (ScreenOfDisplay (dpy, i));
-      Colormap cmap = (cmaps ? cmaps[i] : 0);
-      if (!cmap) cmap = DefaultColormap(dpy, i);
-
-      for (j = 0; j < ncolors; j++)
-       screen_colors[j].pixel = j;
-      XQueryColors (dpy, cmap, screen_colors, ncolors);
-
-      screen_colors += ncolors;
-    }
-
-  memcpy (current_colors, orig_colors, total_ncolors * sizeof (XColor));
-
-
-  /* Make the writable colormaps (we keep these around and reuse them.) */
-  if (!fade_cmaps)
-    {
-      fade_cmaps = (Colormap *) calloc(sizeof(Colormap), ncmaps);
-      for (i = 0; i < nscreens; i++)
-       {
-         Visual *v = DefaultVisual(dpy, i);
-         Screen *s = ScreenOfDisplay(dpy, i);
-         if (has_writable_cells (s, v))
-           for (j = 0; j < cmaps_per_screen; j++)
-             fade_cmaps[(i * cmaps_per_screen) + j] =
-               XCreateColormap (dpy, RootWindowOfScreen (s), v, AllocAll);
-       }
-    }
-
-#ifdef GETTIMEOFDAY_TWO_ARGS
-  gettimeofday(&then, &tzp);
-#else
-  gettimeofday(&then);
-#endif
-
-  /* Iterate by steps of the animation... */
-  for (i = (out_p ? steps : 0);
-       (out_p ? i > 0 : i < steps);
-       (out_p ? i-- : i++))
-    {
-
-      /* For each screen, compute the current value of each color...
-       */
-      orig_screen_colors = orig_colors;
-      screen_colors = current_colors;
-      for (j = 0; j < nscreens; j++)
-       {
-         int ncolors = CellsOfScreen (ScreenOfDisplay (dpy, j));
-         for (k = 0; k < ncolors; k++)
-           {
-             /* This doesn't take into account the relative luminance of the
-                RGB components (0.299, 0.587, and 0.114 at gamma 2.2) but
-                the difference is imperceptible for this application... */
-             screen_colors[k].red   = orig_screen_colors[k].red   * i / steps;
-             screen_colors[k].green = orig_screen_colors[k].green * i / steps;
-             screen_colors[k].blue  = orig_screen_colors[k].blue  * i / steps;
-           }
-         screen_colors      += ncolors;
-         orig_screen_colors += ncolors;
-       }
-
-      /* Put the colors into the maps...
-       */
-      screen_colors = current_colors;
-      for (j = 0; j < nscreens; j++)
-       {
-         int ncolors = CellsOfScreen (ScreenOfDisplay (dpy, j));
-         for (k = 0; k < cmaps_per_screen; k++)
-           {
-             Colormap c = fade_cmaps[j * cmaps_per_screen + k];
-             if (c)
-               XStoreColors (dpy, c, screen_colors, ncolors);
-           }
-         screen_colors += ncolors;
-       }
-
-      /* Put the maps on the screens, and then take the windows off the screen.
-        (only need to do this the first time through the loop.)
-       */
-      if (!installed)
-       {
-         for (j = 0; j < ncmaps; j++)
-           if (fade_cmaps[j])
-             XInstallColormap (dpy, fade_cmaps[j]);
-         installed = True;
-
-         if (black_windows && !out_p)
-           for (j = 0; j < nscreens; j++)
-             if (black_windows[j])
-               {
-                 XUnmapWindow (dpy, black_windows[j]);
-                 XClearWindow (dpy, black_windows[j]);
-               }
-       }
-
-      XSync (dpy, False);
-
-      /* If there is user activity, bug out.  (Bug out on keypresses or
-        mouse presses, but not motion, and not release events.  Bugging
-        out on motion made the unfade hack be totally useless, I think.)
-
-        We put the event back so that the calling code can notice it too.
-        It would be better to not remove it at all, but that's harder
-        because Xlib has such a non-design for this kind of crap, and
-        in this application it doesn't matter if the events end up out
-        of order, so in the grand unix tradition we say "fuck it" and
-        do something that mostly works for the time being.
-       */
-      if (XCheckMaskEvent (dpy, (KeyPressMask|ButtonPressMask), &dummy_event))
-       {
-         XPutBackEvent (dpy, &dummy_event);
-         goto DONE;
-       }
-
-#ifdef GETTIMEOFDAY_TWO_ARGS
-      gettimeofday(&now, &tzp);
-#else
-      gettimeofday(&now);
-#endif
-
-      /* If we haven't already used up our alotted time, sleep to avoid
-        changing the colormap too fast. */
-      {
-       long diff = (((now.tv_sec - then.tv_sec) * 1000000) +
-                    now.tv_usec - then.tv_usec);
-       then.tv_sec = now.tv_sec;
-       then.tv_usec = now.tv_usec;
-       if (usecs_per_step > diff)
-         usleep (usecs_per_step - diff);
-      }
-    }
-
- DONE:
-
-  if (orig_colors)    free (orig_colors);
-  if (current_colors) free (current_colors);
-
-  /* If we've been given windows to raise after blackout, raise them before
-     releasing the colormaps.
-   */
-  if (out_p && black_windows)
-    {
-      for (i = 0; i < nscreens; i++)
-       {
-         if (clear_windows)
-           XClearWindow (dpy, black_windows[i]);
-         XMapRaised (dpy, black_windows[i]);
-       }
-      XSync(dpy, False);
-    }
-
-  /* Now put the target maps back.
-     If we're fading out, use the given cmap (or the default cmap, if none.)
-     If we're fading in, always use the default cmap.
-   */
-  for (i = 0; i < nscreens; i++)
-    {
-      Colormap cmap = (cmaps ? cmaps[i] : 0);
-      if (!cmap || !out_p)
-       cmap = DefaultColormap(dpy, i);
-      XInstallColormap (dpy, cmap);
-    }
-
-  /* The fade (in or out) is complete, so we don't need the black maps on
-     stage any more.
-   */
-  for (i = 0; i < ncmaps; i++)
-    if (fade_cmaps[i])
-      {
-       XUninstallColormap(dpy, fade_cmaps[i]);
-       XFreeColormap(dpy, fade_cmaps[i]);
-       fade_cmaps[i] = 0;
-      }
-  free(fade_cmaps);
-  fade_cmaps = 0;
-}
-
-
-#ifdef HAVE_SGI_VC_EXTENSION
-
-# include <X11/extensions/XSGIvc.h>
-
-struct screen_gamma_info {
-  int gamma_map;  /* ??? always using 0 */
-  int nred, ngreen, nblue;
-  unsigned short *red1, *green1, *blue1;
-  unsigned short *red2, *green2, *blue2;
-  int gamma_size;
-  int gamma_precision;
-  Bool alpha_p;
-};
-
-
-static void whack_gamma(Display *dpy, int screen,
-                       struct screen_gamma_info *info, float ratio);
-
-static int
-sgi_gamma_fade (Display *dpy,
-               Window *black_windows, int seconds, int ticks,
-               Bool out_p, Bool clear_windows)
-{
-  int steps = seconds * ticks;
-  long usecs_per_step = (long)(seconds * 1000000) / (long)steps;
-  XEvent dummy_event;
-  int nscreens = ScreenCount(dpy);
-  struct timeval then, now;
-#ifdef GETTIMEOFDAY_TWO_ARGS
-  struct timezone tzp;
-#endif
-  int i, screen;
-  int status = -1;
-  struct screen_gamma_info *info = (struct screen_gamma_info *)
-    calloc(nscreens, sizeof(*info));
-
-  /* Get the current gamma maps for all screens.
-     Bug out and return -1 if we can't get them for some screen.
-   */
-  for (screen = 0; screen < nscreens; screen++)
-    {
-      if (!XSGIvcQueryGammaMap(dpy, screen, info[screen].gamma_map,
-                              &info[screen].gamma_size,
-                              &info[screen].gamma_precision,
-                              &info[screen].alpha_p))
-       goto FAIL;
-
-      if (!XSGIvcQueryGammaColors(dpy, screen, info[screen].gamma_map,
-                                 XSGIVC_COMPONENT_RED,
-                                 &info[screen].nred, &info[screen].red1))
-       goto FAIL;
-      if (! XSGIvcQueryGammaColors(dpy, screen, info[screen].gamma_map,
-                                  XSGIVC_COMPONENT_GREEN,
-                                  &info[screen].ngreen, &info[screen].green1))
-       goto FAIL;
-      if (!XSGIvcQueryGammaColors(dpy, screen, info[screen].gamma_map,
-                                 XSGIVC_COMPONENT_BLUE,
-                                 &info[screen].nblue, &info[screen].blue1))
-       goto FAIL;
-
-      if (info[screen].gamma_precision == 8)    /* Scale it up to 16 bits. */
-       {
-         int j;
-         for(j = 0; j < info[screen].nred; j++)
-           info[screen].red1[j]   =
-             ((info[screen].red1[j]   << 8) | info[screen].red1[j]);
-         for(j = 0; j < info[screen].ngreen; j++)
-           info[screen].green1[j] =
-             ((info[screen].green1[j] << 8) | info[screen].green1[j]);
-         for(j = 0; j < info[screen].nblue; j++)
-           info[screen].blue1[j]  =
-             ((info[screen].blue1[j]  << 8) | info[screen].blue1[j]);
-       }
-
-      info[screen].red2   = (unsigned short *)
-       malloc(sizeof(*info[screen].red2)   * (info[screen].nred+1));
-      info[screen].green2 = (unsigned short *)
-       malloc(sizeof(*info[screen].green2) * (info[screen].ngreen+1));
-      info[screen].blue2  = (unsigned short *)
-       malloc(sizeof(*info[screen].blue2)  * (info[screen].nblue+1));
-    }
-
-#ifdef GETTIMEOFDAY_TWO_ARGS
-  gettimeofday(&then, &tzp);
-#else
-  gettimeofday(&then);
-#endif
-
-  /* If we're fading in (from black), then first crank the gamma all the
-     way down to 0, then take the windows off the screen.
-   */
-  if (!out_p)
-    for (screen = 0; screen < nscreens; screen++)
-      {
-       whack_gamma(dpy, screen, &info[screen], 0.0);
-       if (black_windows && black_windows[screen])
-         {
-           XUnmapWindow (dpy, black_windows[screen]);
-           XClearWindow (dpy, black_windows[screen]);
-           XSync(dpy, False);
-         }
-      }
-
-
-  /* Iterate by steps of the animation... */
-  for (i = (out_p ? steps : 0);
-       (out_p ? i > 0 : i < steps);
-       (out_p ? i-- : i++))
-    {
-      for (screen = 0; screen < nscreens; screen++)
-       {
-         whack_gamma(dpy, screen, &info[screen],
-                     (((float)i) / ((float)steps)));
-
-         /* If there is user activity, bug out.  (Bug out on keypresses or
-            mouse presses, but not motion, and not release events.  Bugging
-            out on motion made the unfade hack be totally useless, I think.)
-
-            We put the event back so that the calling code can notice it too.
-            It would be better to not remove it at all, but that's harder
-            because Xlib has such a non-design for this kind of crap, and
-            in this application it doesn't matter if the events end up out
-            of order, so in the grand unix tradition we say "fuck it" and
-            do something that mostly works for the time being.
-          */
-         if (XCheckMaskEvent (dpy, (KeyPressMask|ButtonPressMask),
-                              &dummy_event))
-           {
-             XPutBackEvent (dpy, &dummy_event);
-             goto DONE;
-           }
-
-#ifdef GETTIMEOFDAY_TWO_ARGS
-         gettimeofday(&now, &tzp);
-#else
-         gettimeofday(&now);
-#endif
-
-         /* If we haven't already used up our alotted time, sleep to avoid
-            changing the colormap too fast. */
-         {
-           long diff = (((now.tv_sec - then.tv_sec) * 1000000) +
-                        now.tv_usec - then.tv_usec);
-           then.tv_sec = now.tv_sec;
-           then.tv_usec = now.tv_usec;
-           if (usecs_per_step > diff)
-             usleep (usecs_per_step - diff);
-         }
-       }
-    }
-  
-
- DONE:
-
-  if (out_p && black_windows)
-    {
-      for (screen = 0; screen < nscreens; screen++)
-       {
-         if (clear_windows)
-           XClearWindow (dpy, black_windows[screen]);
-         XMapRaised (dpy, black_windows[screen]);
-       }
-      XSync(dpy, False);
-    }
-
-  /* I can't explain this; without this delay, we get a flicker.
-     I suppose there's some lossage with stale bits being in the
-     hardware frame buffer or something, and this delay gives it
-     time to flush out.  This sucks! */
-  usleep(100000);  /* 1/10th second */
-
-  for (screen = 0; screen < nscreens; screen++)
-    whack_gamma(dpy, screen, &info[screen], 1.0);
-  XSync(dpy, False);
-
-  status = 0;
-
- FAIL:
-  for (screen = 0; screen < nscreens; screen++)
-    {
-      if (info[screen].red1)   free (info[screen].red1);
-      if (info[screen].green1) free (info[screen].green1);
-      if (info[screen].blue1)  free (info[screen].blue1);
-      if (info[screen].red2)   free (info[screen].red2);
-      if (info[screen].green2) free (info[screen].green2);
-      if (info[screen].blue2)  free (info[screen].blue2);
-    }
-  free(info);
-
-  return status;
-}
-
-static void
-whack_gamma(Display *dpy, int screen, struct screen_gamma_info *info,
-           float ratio)
-{
-  int k;
-
-  if (ratio < 0) ratio = 0;
-  if (ratio > 1) ratio = 1;
-  for (k = 0; k < info->gamma_size; k++)
-    {
-      info->red2[k]   = info->red1[k]   * ratio;
-      info->green2[k] = info->green1[k] * ratio;
-      info->blue2[k]  = info->blue1[k]  * ratio;
-    }
-
-  XSGIvcStoreGammaColors16(dpy, screen, info->gamma_map, info->nred,
-                          XSGIVC_MComponentRed, info->red2);
-  XSGIvcStoreGammaColors16(dpy, screen, info->gamma_map, info->ngreen,
-                          XSGIVC_MComponentGreen, info->green2);
-  XSGIvcStoreGammaColors16(dpy, screen, info->gamma_map, info->nblue,
-                          XSGIVC_MComponentBlue, info->blue2);
-  XSync(dpy, False);
-}
-
-#endif /* HAVE_SGI_VC_EXTENSION */
-
-
-
-\f
-#if 0
-#include "screenhack.h"
-
-char *progclass = "foo";
-char *defaults [] = {
-  0
-};
-
-XrmOptionDescRec options [] = {0};
-int options_size = 0;
-
-void
-screenhack (dpy, w)
-     Display *dpy;
-     Window w;
-{
-  int seconds = 3;
-  int ticks = 20;
-  int delay = 1;
-
-  while (1)
-    {
-      XSync (dpy, False);
-
-      fprintf(stderr,"out..."); fflush(stderr);
-      fade_screens (dpy, 0, seconds, ticks, True);
-      fprintf(stderr, "done.\n"); fflush(stderr);
-
-      if (delay) sleep (delay);
-
-      fprintf(stderr,"in..."); fflush(stderr);
-      fade_screens (dpy, 0, seconds, ticks, False);
-      fprintf(stderr, "done.\n"); fflush(stderr);
-
-      if (delay) sleep (delay);
-    }
-}
-
-#endif
diff --git a/utils/fade.h b/utils/fade.h
deleted file mode 100644 (file)
index bbe1c9b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/* xscreensaver, Copyright (c) 1992-1997 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.
- */
-
-#ifndef __FADE_H__
-#define __FADE_H__
-
-extern Colormap copy_colormap (Screen *, Visual *, Colormap from, Colormap to);
-extern void blacken_colormap (Screen *, Colormap cmap);
-extern void fade_screens (Display *dpy,
-                         Colormap *cmaps, Window *black_windows,
-                         int seconds, int ticks,
-                         Bool out_p, Bool clear_windows);
-#endif /* __FADE_H__ */
diff --git a/utils/grabscreen.c b/utils/grabscreen.c
deleted file mode 100644 (file)
index 3919457..0000000
+++ /dev/null
@@ -1,726 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 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.
- */
-
-/* This file contains code for grabbing an image of the screen to hack its
-   bits.  This is a little tricky, since doing this involves the need to tell
-   the difference between drawing on the actual root window, and on the fake
-   root window used by the screensaver, since at this level the illusion 
-   breaks down...
- */
-
-#include "utils.h"
-#include "yarandom.h"
-
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-
-#ifdef HAVE_XMU
-# ifndef VMS
-#  include <X11/Xmu/WinUtil.h>
-# else  /* VMS */
-#  include <Xmu/WinUtil.h>
-# endif /* VMS */
-#endif
-
-#include "usleep.h"
-#include "colors.h"
-#include "grabscreen.h"
-#include "sgivideo.h"
-#include "visual.h"
-#include "resources.h"
-
-#include "vroot.h"
-#undef RootWindowOfScreen
-#undef RootWindow
-#undef DefaultRootWindow
-
-
-#ifdef HAVE_READ_DISPLAY_EXTENSION
-# include <X11/extensions/readdisplay.h>
-  static Bool read_display (Screen *, Window, Pixmap, Bool);
-#endif /* HAVE_READ_DISPLAY_EXTENSION */
-
-
-static void copy_default_colormap_contents (Screen *, Colormap, Visual *);
-
-#if defined(HAVE_READ_DISPLAY_EXTENSION) || defined(HAVE_SGI_VIDEO)
-static void make_cubic_colormap (Screen *, Window, Visual *);
-#endif
-
-
-static Bool
-MapNotify_event_p (Display *dpy, XEvent *event, XPointer window)
-{
-  return (event->xany.type == MapNotify &&
-         event->xvisibility.window == (Window) window);
-}
-
-#ifdef DEBUG
-extern char *progname;
-#endif /* DEBUG */
-
-
-static void
-raise_window(Display *dpy, Window window, Bool dont_wait)
-{
-#ifdef DEBUG
-  fprintf(stderr, "%s: raising window 0x%08lX (%s)\n",
-         progname, (unsigned long) window,
-         (dont_wait ? "not waiting" : "waiting"));
-#endif /* DEBUG */
-
-  if (! dont_wait)
-    {
-      XWindowAttributes xgwa;
-      XSizeHints hints;
-      long supplied = 0;
-      memset(&hints, 0, sizeof(hints));
-      XGetWMNormalHints(dpy, window, &hints, &supplied);
-      XGetWindowAttributes (dpy, window, &xgwa);
-      hints.x = xgwa.x;
-      hints.y = xgwa.y;
-      hints.width = xgwa.width;
-      hints.height = xgwa.height;
-      hints.flags |= (PPosition|USPosition|PSize|USSize);
-      XSetWMNormalHints(dpy, window, &hints);
-    }
-
-  XMapRaised(dpy, window);
-
-  if (! dont_wait)
-    {
-      XEvent event;
-      XIfEvent (dpy, &event, MapNotify_event_p, (XPointer) window);
-      XSync (dpy, True);
-    }
-}
-
-
-static Bool
-xscreensaver_window_p (Display *dpy, Window window)
-{
-  Atom type;
-  int format;
-  unsigned long nitems, bytesafter;
-  char *version;
-  if (XGetWindowProperty (dpy, window,
-                         XInternAtom (dpy, "_SCREENSAVER_VERSION", False),
-                         0, 1, False, XA_STRING,
-                         &type, &format, &nitems, &bytesafter,
-                         (unsigned char **) &version)
-      == Success
-      && type != None)
-    return True;
-  return False;
-}
-
-
-
-static XErrorHandler old_ehandler = 0;
-static int
-BadWindow_ehandler (Display *dpy, XErrorEvent *error)
-{
-  if (error->error_code == BadWindow || error->error_code == BadDrawable)
-    return 0;
-  else if (!old_ehandler)
-    {
-      abort();
-      return 0;
-    }
-  else
-    return (*old_ehandler) (dpy, error);
-}
-
-
-/* XCopyArea seems not to work right on SGI O2s if you draw in SubwindowMode
-   on a window whose depth is not the maximal depth of the screen?  Or
-   something.  Anyway, things don't work unless we: use SubwindowMode for
-   the real root window (or a legitimate virtual root window); but do not
-   use SubwindowMode for the xscreensaver window.  I make no attempt to
-   explain.
- */
-Bool
-use_subwindow_mode_p(Screen *screen, Window window)
-{
-  if (window != VirtualRootWindowOfScreen(screen))
-    return False;
-  else if (xscreensaver_window_p(DisplayOfScreen(screen), window))
-    return False;
-  else
-    return True;
-}
-
-
-/* Install the colormaps of all visible windows, deepest first.
-   This should leave the colormaps of the topmost windows installed
-   (if only N colormaps can be installed at a time, then only the
-   topmost N windows will be shown in the right colors.)
- */
-static void
-install_screen_colormaps (Screen *screen)
-{
-  int i;
-  Display *dpy = DisplayOfScreen (screen);
-  Window vroot, real_root;
-  Window parent, *kids = 0;
-  unsigned int nkids = 0;
-
-  XSync (dpy, False);
-  old_ehandler = XSetErrorHandler (BadWindow_ehandler);
-
-  vroot = VirtualRootWindowOfScreen (screen);
-  if (XQueryTree (dpy, vroot, &real_root, &parent, &kids, &nkids))
-    for (i = 0; i < nkids; i++)
-      {
-       XWindowAttributes xgwa;
-       Window client;
-#ifdef HAVE_XMU
-       /* #### need to put XmuClientWindow() in xmu.c, sigh... */
-       if (! (client = XmuClientWindow (dpy, kids[i])))
-#endif
-         client = kids[i];
-       xgwa.colormap = 0;
-       XGetWindowAttributes (dpy, client, &xgwa);
-       if (xgwa.colormap && xgwa.map_state == IsViewable)
-         XInstallColormap (dpy, xgwa.colormap);
-      }
-  XInstallColormap (dpy, DefaultColormapOfScreen (screen));
-  XSync (dpy, False);
-  XSetErrorHandler (old_ehandler);
-  XSync (dpy, False);
-
-  if (kids)
-    XFree ((char *) kids);
-}
-
-
-static void
-grab_screen_image_1 (Screen *screen, Window window)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  XWindowAttributes xgwa;
-  Window real_root = XRootWindowOfScreen (screen);  /* not vroot */
-  Bool root_p = (window == real_root);
-  Bool saver_p = xscreensaver_window_p (dpy, window);
-  Bool grab_mouse_p = False;
-  int unmap_time = 0;
-
-  if (saver_p)
-    /* I think this is redundant, but just to be safe... */
-    root_p = False;
-
-  if (saver_p)
-    /* The only time grabbing the mouse is important is if this program
-       is being run while the saver is locking the screen. */
-    grab_mouse_p = True;
-
-  if (!root_p)
-    {
-      double unmap = 0;
-      if (saver_p)
-       {
-         unmap = get_float_resource("grabRootDelay", "Seconds");
-         if (unmap <= 0.00001 || unmap > 20) unmap = 2.5;
-       }
-      else
-       {
-         unmap = get_float_resource("grabWindowDelay", "Seconds");
-         if (unmap <= 0.00001 || unmap > 20) unmap = 0.66;
-       }
-      unmap_time = unmap * 100000;
-    }
-
-#ifdef DEBUG
-  fprintf(stderr,
-         "\n%s: window 0x%08lX root: %d saver: %d grab: %d wait: %.1f\n",
-         progname, (unsigned long) window,
-         root_p, saver_p, grab_mouse_p, ((double)unmap_time)/1000000.0);
-  {
-    XWindowAttributes xgwa2;
-    XGetWindowAttributes (dpy, window, &xgwa2);
-    fprintf(stderr, "%s: ", progname);
-    describe_visual(stderr, screen, xgwa2.visual, ####);
-    fprintf (stderr, "\n");
-  }
-#endif /* DEBUG */
-
-  if (!root_p)
-    XSetWindowBackgroundPixmap (dpy, window, None);
-
-  if (grab_mouse_p)
-    {
-      /* prevent random viewer of the screen saver (locker) from messing
-        with windows.   We don't check whether it succeeded, because what
-        are our options, really... */
-      XGrabPointer (dpy, real_root, True, ButtonPressMask|ButtonReleaseMask,
-                   GrabModeAsync, GrabModeAsync, None, None, CurrentTime);
-      XGrabKeyboard (dpy, real_root, True, GrabModeSync, GrabModeAsync,
-                    CurrentTime);
-    }
-
-  if (unmap_time > 0)
-    {
-      XUnmapWindow (dpy, window);
-      install_screen_colormaps (screen);
-      XSync (dpy, True);
-      usleep(unmap_time); /* wait for everyone to swap in and handle exposes */
-    }
-
-  XGetWindowAttributes (dpy, window, &xgwa);
-
-  if (!root_p)
-    {
-#ifdef HAVE_READ_DISPLAY_EXTENSION
-      if (! read_display(screen, window, 0, saver_p))
-#endif /* HAVE_READ_DISPLAY_EXTENSION */
-       {
-#if defined(HAVE_READ_DISPLAY_EXTENSION) && defined(DEBUG)
-         fprintf(stderr, "%s: read_display() failed\n", progname);
-#endif /* DEBUG */
-         copy_default_colormap_contents (screen, xgwa.colormap, xgwa.visual);
-         raise_window(dpy, window, saver_p);
-       }
-    }
-  else  /* root_p */
-    {
-      Pixmap pixmap;
-      XWindowAttributes xgwa;
-      XGetWindowAttributes(dpy, window, &xgwa);
-      pixmap = XCreatePixmap(dpy, window, xgwa.width, xgwa.height, xgwa.depth);
-
-#ifdef HAVE_READ_DISPLAY_EXTENSION
-      if (! read_display(screen, window, pixmap, True))
-#endif
-       {
-         Window real_root = XRootWindowOfScreen (xgwa.screen); /* not vroot */
-         XGCValues gcv;
-         GC gc;
-
-#if defined(HAVE_READ_DISPLAY_EXTENSION) && defined(DEBUG)
-         fprintf(stderr, "%s: read_display() failed\n", progname);
-#endif /* DEBUG */
-
-         copy_default_colormap_contents (screen, xgwa.colormap, xgwa.visual);
-
-         gcv.function = GXcopy;
-         gcv.subwindow_mode = IncludeInferiors;
-         gc = XCreateGC (dpy, window, GCFunction | GCSubwindowMode, &gcv);
-         XCopyArea (dpy, real_root, pixmap, gc,
-                    xgwa.x, xgwa.y, xgwa.width, xgwa.height, 0, 0);
-         XFreeGC (dpy, gc);
-       }
-      XSetWindowBackgroundPixmap (dpy, window, pixmap);
-      XFreePixmap (dpy, pixmap);
-    }
-
-  if (grab_mouse_p)
-    {
-      XUngrabPointer (dpy, CurrentTime);
-      XUngrabKeyboard (dpy, CurrentTime);
-    }
-
-  XSync (dpy, True);
-}
-
-void
-grab_screen_image (Screen *screen, Window window)
-{
-#ifdef HAVE_SGI_VIDEO
-  char c, *s = get_string_resource("grabVideoProbability", "Float");
-  double prob = -1;
-  if (!s ||
-      (1 != sscanf (s, " %lf %c", &prob, &c)) ||
-      prob < 0 ||
-      prob > 1)
-    prob = 0.5;
-
-  if ((random() % 100) < ((int) (100 * prob)))
-    {
-      XWindowAttributes xgwa;
-      Display *dpy = DisplayOfScreen (screen);
-      XGetWindowAttributes (dpy, window, &xgwa);
-# ifdef DEBUG
-      fprintf(stderr, "%s: trying to grab from video...\n", progname);
-# endif /* DEBUG */
-      if (grab_video_frame (screen, xgwa.visual, window))
-       {
-         if (xgwa.depth < 24)
-           {
-             int class = visual_class (screen, xgwa.visual);
-             if (class == PseudoColor || class == DirectColor)
-               make_cubic_colormap (screen, window, xgwa.visual);
-           }
-         return;
-       }
-    }
-#endif /* HAVE_SGI_VIDEO */
-
-  grab_screen_image_1 (screen, window);
-}
-
-
-/* When we are grabbing and manipulating a screen image, it's important that
-   we use the same colormap it originally had.  So, if the screensaver was
-   started with -install, we need to copy the contents of the default colormap
-   into the screensaver's colormap.
- */
-static void
-copy_default_colormap_contents (Screen *screen,
-                               Colormap to_cmap,
-                               Visual *to_visual)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  Visual *from_visual = DefaultVisualOfScreen (screen);
-  Colormap from_cmap = XDefaultColormapOfScreen (screen);
-
-  XColor *old_colors, *new_colors;
-  unsigned long *pixels;
-  XVisualInfo vi_in, *vi_out;
-  int out_count;
-  int from_cells, to_cells, max_cells, got_cells;
-  int i;
-
-  if (from_cmap == to_cmap)
-    return;
-
-  vi_in.screen = XScreenNumberOfScreen (screen);
-  vi_in.visualid = XVisualIDFromVisual (from_visual);
-  vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
-                          &vi_in, &out_count);
-  if (! vi_out) abort ();
-  from_cells = vi_out [0].colormap_size;
-  XFree ((char *) vi_out);
-
-  vi_in.screen = XScreenNumberOfScreen (screen);
-  vi_in.visualid = XVisualIDFromVisual (to_visual);
-  vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
-                          &vi_in, &out_count);
-  if (! vi_out) abort ();
-  to_cells = vi_out [0].colormap_size;
-  XFree ((char *) vi_out);
-
-  max_cells = (from_cells > to_cells ? to_cells : from_cells);
-
-  old_colors = (XColor *) calloc (sizeof (XColor), max_cells);
-  new_colors = (XColor *) calloc (sizeof (XColor), max_cells);
-  pixels = (unsigned long *) calloc (sizeof (unsigned long), max_cells);
-  for (i = 0; i < max_cells; i++)
-    old_colors[i].pixel = i;
-  XQueryColors (dpy, from_cmap, old_colors, max_cells);
-
-  got_cells = max_cells;
-  allocate_writable_colors (dpy, to_cmap, pixels, &got_cells);
-
-#ifdef DEBUG
-  if (got_cells != max_cells)
-    fprintf(stderr, "%s: got only %d of %d cells\n", progname,
-           got_cells, max_cells);
-#endif /* DEBUG */
-
-  if (got_cells <= 0)                                   /* we're screwed */
-    ;
-  else if (got_cells == max_cells &&                    /* we're golden */
-          from_cells == to_cells)
-    XStoreColors (dpy, to_cmap, old_colors, got_cells);
-  else                                                  /* try to cope... */
-    {
-      for (i = 0; i < got_cells; i++)
-       {
-         XColor *c = old_colors + i;
-         int j;
-         for (j = 0; j < got_cells; j++)
-           if (pixels[j] == c->pixel)
-             {
-               /* only store this color value if this is one of the pixels
-                  we were able to allocate. */
-               XStoreColors (dpy, to_cmap, c, 1);
-               break;
-             }
-       }
-    }
-
-
-#ifdef DEBUG
-  fprintf(stderr, "%s: installing copy of default colormap\n", progname);
-#endif /* DEBUG */
-
-  free (old_colors);
-  free (new_colors);
-  free (pixels);
-}
-
-
-\f
-/* The SGI ReadDisplay extension.
-   This extension lets you get back a 24-bit image of the screen, taking into
-   account the colors with which all windows are *currently* displayed, even
-   if those windows have different visuals.  Without this extension, presence
-   of windows with different visuals or colormaps will result in technicolor
-   when one tries to grab the screen image.
- */
-
-#ifdef HAVE_READ_DISPLAY_EXTENSION
-
-static Bool
-read_display (Screen *screen, Window window, Pixmap into_pixmap,
-             Bool dont_wait)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  XWindowAttributes xgwa;
-  int rd_event_base = 0;
-  int rd_error_base = 0;
-  unsigned long hints = 0;
-  XImage *image = 0;
-  XGCValues gcv;
-  int class;
-  GC gc;
-  Bool install_p = False;
-
-  /* Check to see if the server supports the extension, and bug out if not.
-   */
-  if (! XReadDisplayQueryExtension (dpy, &rd_event_base, &rd_error_base))
-    return False;
-
-  /* If this isn't a visual we know how to handle, bug out.  We handle:
-      = TrueColor in depths 8, 12, 16, and 32;
-      = PseudoColor and DirectColor in depths 8 and 12.
-   */
-  XGetWindowAttributes(dpy, window, &xgwa);
-  class = visual_class (screen, xgwa.visual);
-  if (class == TrueColor)
-    {
-      if (xgwa.depth != 8  && xgwa.depth != 12 && xgwa.depth != 16 &&
-         xgwa.depth != 24 && xgwa.depth != 32)
-       return False;
-    }
-  else if (class == PseudoColor || class == DirectColor)
-    {
-      if (xgwa.depth != 8 && xgwa.depth != 12)
-       return False;
-      else
-       /* Install a colormap that makes this visual behave like
-          a TrueColor visual of the same depth. */
-       install_p = True;
-    }
-
-
-  /* Try and read the screen.
-   */
-  hints = (XRD_TRANSPARENT | XRD_READ_POINTER);
-  image = XReadDisplay (dpy, window, xgwa.x, xgwa.y, xgwa.width, xgwa.height,
-                       hints, &hints);
-  if (!image)
-    return False;
-  if (!image->data)
-    {
-      XDestroyImage(image);
-      return False;
-    }
-
-  /* XReadDisplay tends to LIE about the depth of the image it read.
-     It is returning an XImage which has `depth' and `bits_per_pixel'
-     confused!
-
-     That is, on a 24-bit display, where all visuals claim depth 24, and
-     where XGetImage would return an XImage with depth 24, and where
-     XPutImage will get a BadMatch with images that are not depth 24,
-     XReadDisplay is returning images with depth 32!  Fuckwits!
-
-     So if the visual is of depth 24, but the image came back as depth 32,
-     hack it to be 24 lest we get a BadMatch from XPutImage.
-
-     I wonder what happens on an 8-bit SGI...  Probably it still returns
-     an image claiming depth 32?  Certainly it can't be 8.  So, let's just
-     smash it to 32...
-   */
-  if (image->depth == 32 /* && xgwa.depth == 24 */ )
-    image->depth = 24;
-
-  /* If the visual of the window/pixmap into which we're going to draw is
-     less deep than the screen itself, then we need to convert the grabbed bits
-     to match the depth by clipping off the less significant bit-planes of each
-     color component.
-   */
-  if (image->depth > xgwa.depth)
-    {
-      int x, y;
-      /* We use the same image->data in both images -- that's ok, because
-        since we're reading from B and writing to A, and B uses more bytes
-        per pixel than A, the write pointer won't overrun the read pointer.
-       */
-      XImage *image2 = XCreateImage (dpy, xgwa.visual, xgwa.depth,
-                                    ZPixmap, 0, image->data,
-                                    xgwa.width, xgwa.height,
-                                    8, 0);
-      if (!image2)
-       return False;
-
-#ifdef DEBUG
-      fprintf(stderr, "%s: converting from depth %d to depth %d\n",
-             progname, image->depth, xgwa.depth);
-#endif /* DEBUG */
-
-      for (y = 0; y < image->height; y++)
-       for (x = 0; x < image->width; x++)
-         {
-           /* #### really these shift values should be determined from the
-              mask values -- but that's a pain in the ass, and anyway,
-              this is an SGI-specific extension so hardcoding assumptions
-              about the SGI server's behavior isn't *too* heinous... */
-           unsigned long pixel = XGetPixel(image, x, y);
-           unsigned int r = (pixel & image->red_mask);
-           unsigned int g = (pixel & image->green_mask) >> 8;
-           unsigned int b = (pixel & image->blue_mask) >> 16;
-
-           if (xgwa.depth == 8)
-             pixel = ((r >> 5) | ((g >> 5) << 3) | ((b >> 6) << 6));
-           else if (xgwa.depth == 12)
-             pixel = ((r >> 4) | ((g >> 4) << 4) | ((b >> 4) << 8));
-           else if (xgwa.depth == 16)
-             pixel = ((r >> 3) | ((g >> 3) << 5) | ((b >> 3) << 10));
-           else
-             abort();
-
-           XPutPixel(image2, x, y, pixel);
-         }
-      image->data = 0;
-      XDestroyImage(image);
-      image = image2;
-    }
-
-
-  /* Now actually put the bits into the window or pixmap -- note the design
-     bogosity of this extension, where we've been forced to take 24 bit data
-     from the server to the client, and then push it back from the client to
-     the server, *without alteration*.  We should have just been able to tell
-     the server, "put a screen image in this drawable", instead of having to
-     go through the intermediate step of converting it to an Image.  Geez.
-     (Assuming that the window is of screen depth; we happen to handle less
-     deep windows, but that's beside the point.)
-   */
-  gcv.function = GXcopy;
-  gc = XCreateGC (dpy, window, GCFunction, &gcv);
-
-  if (into_pixmap)
-    {
-      gcv.function = GXcopy;
-      gc = XCreateGC (dpy, into_pixmap, GCFunction, &gcv);
-      XPutImage (dpy, into_pixmap, gc, image, 0, 0, 0, 0,
-                xgwa.width, xgwa.height);
-    }
-  else
-    {
-      gcv.function = GXcopy;
-      gc = XCreateGC (dpy, window, GCFunction, &gcv);
-
-      /* Ok, now we'll be needing that window on the screen... */
-      raise_window(dpy, window, dont_wait);
-
-      /* Plop down the bits... */
-      XPutImage (dpy, window, gc, image, 0, 0, 0, 0, xgwa.width, xgwa.height);
-    }
-  XFreeGC (dpy, gc);
-
-  if (image->data)
-    {
-      free(image->data);
-      image->data = 0;
-    }
-  XDestroyImage(image);
-
-  if (install_p)
-    make_cubic_colormap (screen, window, xgwa.visual);
-
-  return True;
-}
-#endif /* HAVE_READ_DISPLAY_EXTENSION */
-
-
-#if defined(HAVE_READ_DISPLAY_EXTENSION) || defined(HAVE_SGI_VIDEO)
-
-/* Makes and installs a colormap that makes a PseudoColor or DirectColor
-   visual behave like a TrueColor visual of the same depth.
- */
-static void
-make_cubic_colormap (Screen *screen, Window window, Visual *visual)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  Colormap cmap = XCreateColormap(dpy, window, visual, AllocAll);
-  int nr, ng, nb, cells;
-  int r, g, b;
-  int depth;
-  XColor colors[4097];
-  int i;
-
-  depth = visual_depth(screen, visual);
-  switch (depth)
-    {
-    case 8:  nr = 3; ng = 3; nb = 2; cells = 256;  break;
-    case 12: nr = 4; ng = 4; nb = 4; cells = 4096; break;
-    default: abort(); break;
-    }
-
-  memset(colors, 0, sizeof(colors));
-  for (i = 0; i < cells; i++)
-    {
-      colors[i].flags = DoRed|DoGreen|DoBlue;
-      colors[i].red = colors[i].green = colors[i].blue = 0;
-    }
-
-  for (r = 0; r < (1 << nr); r++)
-    for (g = 0; g < (1 << ng); g++)
-      for (b = 0; b < (1 << nb); b++)
-       {
-         i = (r | (g << nr) | (b << (nr + ng)));
-         colors[i].pixel = i;
-         if (depth == 8)
-           {
-             colors[i].red   = ((r << 13) | (r << 10) | (r << 7) |
-                                (r <<  4) | (r <<  1));
-             colors[i].green = ((g << 13) | (g << 10) | (g << 7) |
-                                (g <<  4) | (g <<  1));
-             colors[i].blue  = ((b << 14) | (b << 12) | (b << 10) |
-                                (b <<  8) | (b <<  6) | (b <<  4) |
-                                (b <<  2) | b);
-           }
-         else
-           {
-             colors[i].red   = (r << 12) | (r << 8) | (r << 4) | r;
-             colors[i].green = (g << 12) | (g << 8) | (g << 4) | g;
-             colors[i].blue  = (b << 12) | (b << 8) | (b << 4) | b;
-           }
-       }
-
-#ifdef DEBUG
-  fprintf(stderr, "%s: installing cubic colormap\n", progname);
-#endif /* DEBUG */
-
-  XStoreColors (dpy, cmap, colors, cells);
-  XSetWindowColormap (dpy, window, cmap);
-
-  /* Gag, install the colormap.
-     This is definitely right in the `if xscreensaver_window_p' case, since
-     it will never get installed otherwise.  But, if we don't do it
-     unconditionally, then the new colormap won't get installed until the
-     window (re-)gains focus.  It's generally very antisocial to install
-     the colormap of a non-OverrideRedirect window (that task belongs to
-     the WM) and if we were being kosher, we would only install this cmap
-     if the old cmap was already installed (or perhaps, if the window had
-     focus.)  But, since this extension only exists on SGIs, and since SGIs
-     can handle four colormaps at once, let's go ahead and install it all
-     the time, so that even if the window pops up and has never had focus,
-     it will still display in the proper colors.
-   */
-  XInstallColormap (dpy, cmap);
-}
-
-#endif /* HAVE_READ_DISPLAY_EXTENSION || HAVE_SGI_VIDEO */
diff --git a/utils/grabscreen.h b/utils/grabscreen.h
deleted file mode 100644 (file)
index 6d2503a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997
- *  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.
- */
-
-#ifndef __GRABSCREEN_H__
-#define __GRABSCREEN_H__
-
-/* This will write a snapshot of the screen image into the given window.
-   Beware that the colormap of the window may also be changed (to match
-   the bits that were drawn.)
- */
-extern void grab_screen_image (Screen *, Window);
-
-/* Whether one should use GCSubwindowMode when drawing on this window
-   (assuming a screen image has been grabbed onto it.)  Yes, this is a
-   total kludge. */
-extern Bool use_subwindow_mode_p(Screen *screen, Window window);
-
-#endif /* __GRABSCREEN_H__ */
diff --git a/utils/hsv.c b/utils/hsv.c
deleted file mode 100644 (file)
index cf1cc8d..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1997 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 file contains some utility routines for randomly picking the colors
-   to hack the screen with.
- */
-
-#include "utils.h"
-#include "hsv.h"
-
-void
-hsv_to_rgb (int h, double s, double v,
-           unsigned short *r, unsigned short *g, unsigned short *b)
-{
-  double H, S, V, R, G, B;
-  double p1, p2, p3;
-  double f;
-  int i;
-
-  if (s < 0) s = 0;
-  if (v < 0) v = 0;
-  if (s > 1) s = 1;
-  if (v > 1) v = 1;
-
-  S = s; V = v;
-  H = (h % 360) / 60.0;
-  i = H;
-  f = H - i;
-  p1 = V * (1 - S);
-  p2 = V * (1 - (S * f));
-  p3 = V * (1 - (S * (1 - f)));
-  if     (i == 0) { R = V;  G = p3; B = p1; }
-  else if (i == 1) { R = p2; G = V;  B = p1; }
-  else if (i == 2) { R = p1; G = V;  B = p3; }
-  else if (i == 3) { R = p1; G = p2; B = V;  }
-  else if (i == 4) { R = p3; G = p1; B = V;  }
-  else            { R = V;  G = p1; B = p2; }
-  *r = R * 65535;
-  *g = G * 65535;
-  *b = B * 65535;
-}
-
-void
-rgb_to_hsv (unsigned short r, unsigned short g, unsigned short b,
-           int *h, double *s, double *v)
-{
-  double R, G, B, H, S, V;
-  double cmax, cmin;
-  double cmm;
-  int imax;
-  R = ((double) r) / 65535.0;
-  G = ((double) g) / 65535.0;
-  B = ((double) b) / 65535.0;
-  cmax = R; cmin = G; imax = 1;
-  if  ( cmax < G ) { cmax = G; cmin = R; imax = 2; }
-  if  ( cmax < B ) { cmax = B; imax = 3; }
-  if  ( cmin > B ) { cmin = B; }
-  cmm = cmax - cmin;
-  V = cmax;
-  if (cmm == 0)
-    S = H = 0;
-  else
-    {
-      S = cmm / cmax;
-      if       (imax == 1)    H =       (G - B) / cmm;
-      else  if (imax == 2)    H = 2.0 + (B - R) / cmm;
-      else /*if (imax == 3)*/ H = 4.0 + (R - G) / cmm;
-      if (H < 0) H += 6.0;
-    }
-  *h = (H * 60.0);
-  *s = S;
-  *v = V;
-}
diff --git a/utils/hsv.h b/utils/hsv.h
deleted file mode 100644 (file)
index e0fdfb0..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1997 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.
- */
-
-#ifndef __HSV_H__
-#define __HSV_H__
-
-/* Converts between RGB and HSV color spaces.
-   R, G, and B are in the range 0 - 65535;
-   H is in the range 0 - 360;
-   S and V are in the range 0.0 - 1.0.
- */
-extern void hsv_to_rgb (int h, double s, double v,
-                       unsigned short *r,
-                       unsigned short *g,
-                       unsigned short *b);
-extern void rgb_to_hsv (unsigned short r, unsigned short g, unsigned short b,
-                       int *h, double *s, double *v);
-
-#endif /* __HSV_H__ */
diff --git a/utils/overlay.c b/utils/overlay.c
deleted file mode 100644 (file)
index c9faef8..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/* xscreensaver, Copyright (c) 1997 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.
- */
-
-/* If the server's root window contains a SERVER_OVERLAY_VISUALS property,
-   then that identifies the visuals which correspond to the video hardware's
-   overlay planes.  Windows created in these kinds of visuals have the
-   property that one particular pixel value is transparent.
-
-   On my Indy, there are two transparent visuals, one of which is at layer 1,
-   and one of which is at layer 2.  This is apparently the ordering in which
-   they are overlayed (1 being topmost.)  The other difference between them
-   is that the topmost one only has 2 planes, while the next one has 8.
-
-   Rumor has it that SGI, HP, DEC, and IBM all use the same mechanism.
-
-   This code selects the topmost one, regardless of depth.  Maybe that's not
-   the right thing.  Well, in XScreenSaver, we only need to allocate two
-   colors from it (it's only used to display the stderr output, so that the
-   text can overlay the graphics without being obliterated by it.)
- */
-
-
-#include "utils.h"
-
-#include <X11/Xutil.h>
-#include <X11/Xproto.h>
-
-#include "visual.h"
-
-
-struct overlay_data
-{
-  CARD32 visual_id;
-  CARD32 transparency; /* 0: none; 1: pixel; 2: mask (?) */
-  CARD32 value;                /* the transparent pixel */
-  CARD32 layer;                /* -1: underlay; 0: normal; 1: popup; 2: overlay */
-};
-
-static int
-get_overlay_prop (Screen *screen, struct overlay_data **data_ret)
-{
-  int result;
-  Atom actual_type;
-  int actual_format;
-  unsigned long nitems, bytes_after;
-  struct overlay_data *data = 0;
-  Display *dpy = DisplayOfScreen(screen);
-  Window window = RootWindowOfScreen(screen);
-  Atom XA_SERVER_OVERLAY_VISUALS =
-    XInternAtom (dpy, "SERVER_OVERLAY_VISUALS", False);
-
-  *data_ret = 0;
-  result = XGetWindowProperty (dpy, window, XA_SERVER_OVERLAY_VISUALS,
-                              0, (65536 / sizeof (long)), False, 
-                              XA_SERVER_OVERLAY_VISUALS,
-                              &actual_type, &actual_format,
-                              &nitems, &bytes_after,
-                              (unsigned char **) &data);
-  if (result != Success ||
-      actual_type != XA_SERVER_OVERLAY_VISUALS ||
-      actual_format != 32 ||
-      nitems < 1)
-    {
-      if (data) XFree(data);
-      return 0;
-    }
-  else
-    {
-      *data_ret = data;
-      return nitems / (sizeof(*data) / sizeof(CARD32));
-    }
-}
-
-
-Visual *
-get_overlay_visual (Screen *screen, unsigned long *transparent_pixel_ret)
-{
-  struct overlay_data *data = 0;
-  int n_visuals = get_overlay_prop (screen, &data);
-  Visual *visual = 0;
-  int depth = 0;
-  unsigned long pixel = 0;
-  unsigned int layer = 0;
-  int i;
-
-  if (data)
-    for (i = 0; i < n_visuals; i++)
-
-      /* Only accept ones that have a transparent pixel. */
-      if (data[i].transparency == 1)
-       {
-         XVisualInfo vi_in, *vi_out;
-         int out_count;
-         vi_in.visualid = data[i].visual_id;
-         vi_out = XGetVisualInfo (DisplayOfScreen(screen), VisualIDMask,
-                                  &vi_in, &out_count);
-         if (vi_out)
-           {
-             /* Prefer the one at the topmost layer; after that, prefer
-                the one with the greatest depth (most colors.) */
-             if (layer < data[i].layer ||
-                 (layer == data[i].layer &&
-                  depth < vi_out[0].depth))
-               {
-                 visual = vi_out[0].visual;
-                 depth  = vi_out[0].depth;
-                 layer  = data[i].layer;
-                 pixel  = data[i].value;
-               }
-             XFree(vi_out);
-           }
-       }
-
-  if (data) XFree(data);
-  if (visual && transparent_pixel_ret)
-    *transparent_pixel_ret = pixel;
-  return visual;
-}
diff --git a/utils/resources.c b/utils/resources.c
deleted file mode 100644 (file)
index 5bcd2c2..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1997, 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"
-#include "resources.h"
-#include <X11/Xresource.h>
-
-
-/* Resource functions.  Assumes: */
-
-extern char *progname;
-extern char *progclass;
-extern XrmDatabase db;
-
-static unsigned int get_time_resource (char *res_name, char *res_class,
-                                      Bool sec_p);
-
-#ifndef isupper
-# define isupper(c)  ((c) >= 'A' && (c) <= 'Z')
-#endif
-#ifndef _tolower
-# define _tolower(c)  ((c) - 'A' + 'a')
-#endif
-
-char *
-get_string_resource (char *res_name, char *res_class)
-{
-  XrmValue value;
-  char *type;
-  char full_name [1024], full_class [1024];
-  strcpy (full_name, progname);
-  strcat (full_name, ".");
-  strcat (full_name, res_name);
-  strcpy (full_class, progclass);
-  strcat (full_class, ".");
-  strcat (full_class, res_class);
-  if (XrmGetResource (db, full_name, full_class, &type, &value))
-    {
-      char *str = (char *) malloc (value.size + 1);
-      strncpy (str, (char *) value.addr, value.size);
-      str [value.size] = 0;
-      return str;
-    }
-  return 0;
-}
-
-Bool 
-get_boolean_resource (char *res_name, char *res_class)
-{
-  char *tmp, buf [100];
-  char *s = get_string_resource (res_name, res_class);
-  char *os = s;
-  if (! s) return 0;
-  for (tmp = buf; *s; s++)
-    *tmp++ = isupper (*s) ? _tolower (*s) : *s;
-  *tmp = 0;
-  free (os);
-
-  while (*buf &&
-        (buf[strlen(buf)-1] == ' ' ||
-         buf[strlen(buf)-1] == '\t'))
-    buf[strlen(buf)-1] = 0;
-
-  if (!strcmp (buf, "on") || !strcmp (buf, "true") || !strcmp (buf, "yes"))
-    return 1;
-  if (!strcmp (buf,"off") || !strcmp (buf, "false") || !strcmp (buf,"no"))
-    return 0;
-  fprintf (stderr, "%s: %s must be boolean, not %s.\n",
-          progname, res_name, buf);
-  return 0;
-}
-
-int 
-get_integer_resource (char *res_name, char *res_class)
-{
-  int val;
-  char c, *s = get_string_resource (res_name, res_class);
-  char *ss = s;
-  if (!s) return 0;
-
-  while (*ss && *ss <= ' ') ss++;                      /* skip whitespace */
-
-  if (ss[0] == '0' && (ss[1] == 'x' || ss[1] == 'X'))  /* 0x: parse as hex */
-    {
-      if (1 == sscanf (ss+2, "%x %c", &val, &c))
-       {
-         free (s);
-         return val;
-       }
-    }
-  else                                                 /* else parse as dec */
-    {
-      if (1 == sscanf (ss, "%d %c", &val, &c))
-       {
-         free (s);
-         return val;
-       }
-    }
-
-  fprintf (stderr, "%s: %s must be an integer, not %s.\n",
-          progname, res_name, s);
-  free (s);
-  return 0;
-}
-
-double
-get_float_resource (char *res_name, char *res_class)
-{
-  double val;
-  char c, *s = get_string_resource (res_name, res_class);
-  if (! s) return 0.0;
-  if (1 == sscanf (s, " %lf %c", &val, &c))
-    {
-      free (s);
-      return val;
-    }
-  fprintf (stderr, "%s: %s must be a float, not %s.\n",
-          progname, res_name, s);
-  free (s);
-  return 0.0;
-}
-
-
-unsigned int
-get_pixel_resource (char *res_name, char *res_class,
-                   Display *dpy, Colormap cmap)
-{
-  XColor color;
-  char *s = get_string_resource (res_name, res_class);
-  char *s2;
-  if (!s) goto DEFAULT;
-
-  for (s2 = s + strlen(s) - 1; s2 > s; s2--)
-    if (*s2 == ' ' || *s2 == '\t')
-      *s2 = 0;
-    else
-      break;
-
-  if (! XParseColor (dpy, cmap, s, &color))
-    {
-      fprintf (stderr, "%s: can't parse color %s\n", progname, s);
-      goto DEFAULT;
-    }
-  if (! XAllocColor (dpy, cmap, &color))
-    {
-      fprintf (stderr, "%s: couldn't allocate color %s\n", progname, s);
-      goto DEFAULT;
-    }
-  free (s);
-  return color.pixel;
- DEFAULT:
-  if (s) free (s);
-  return ((strlen(res_class) >= 10 &&
-          !strcmp ("Background", res_class + strlen(res_class) - 10))
-         ? BlackPixel (dpy, DefaultScreen (dpy))
-         : WhitePixel (dpy, DefaultScreen (dpy)));
-}
-
-
-int
-parse_time (char *string, Bool seconds_default_p, Bool silent_p)
-{
-  unsigned int h, m, s;
-  char c;
-  if (3 == sscanf (string,   " %u : %2u : %2u %c", &h, &m, &s, &c))
-    ;
-  else if (2 == sscanf (string, " : %2u : %2u %c", &m, &s, &c) ||
-          2 == sscanf (string,    " %u : %2u %c", &m, &s, &c))
-    h = 0;
-  else if (1 == sscanf (string,       " : %2u %c", &s, &c))
-    h = m = 0;
-  else if (1 == sscanf (string,          " %u %c",
-                       (seconds_default_p ? &s : &m), &c))
-    {
-      h = 0;
-      if (seconds_default_p) m = 0;
-      else s = 0;
-    }
-  else
-    {
-      if (! silent_p)
-       fprintf (stderr, "%s: invalid time interval specification \"%s\".\n",
-                progname, string);
-      return -1;
-    }
-  if (s >= 60 && (h != 0 || m != 0))
-    {
-      if (! silent_p)
-       fprintf (stderr, "%s: seconds > 59 in \"%s\".\n", progname, string);
-      return -1;
-    }
-  if (m >= 60 && h > 0)
-    {
-      if (! silent_p)
-       fprintf (stderr, "%s: minutes > 59 in \"%s\".\n", progname, string);
-      return -1;
-    }
-  return ((h * 60 * 60) + (m * 60) + s);
-}
-
-static unsigned int 
-get_time_resource (char *res_name, char *res_class, Bool sec_p)
-{
-  int val;
-  char *s = get_string_resource (res_name, res_class);
-  if (!s) return 0;
-  val = parse_time (s, sec_p, False);
-  free (s);
-  return (val < 0 ? 0 : val);
-}
-
-unsigned int 
-get_seconds_resource (char *res_name, char *res_class)
-{
-  return get_time_resource (res_name, res_class, True);
-}
-
-unsigned int 
-get_minutes_resource (char *res_name, char *res_class)
-{
-  return get_time_resource (res_name, res_class, False);
-}
diff --git a/utils/resources.h b/utils/resources.h
deleted file mode 100644 (file)
index 14ce1ac..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1997 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.
- */
-
-#ifndef __XSCREENSAVER_RESOURCES_H__
-#define __XSCREENSAVER_RESOURCES_H__
-
-extern char *get_string_resource (char*,char*);
-extern Bool get_boolean_resource (char*,char*);
-extern int get_integer_resource (char*,char*);
-extern double get_float_resource (char*,char*);
-extern unsigned int get_pixel_resource (char*,char*,Display*,Colormap);
-extern unsigned int get_minutes_resource (char*,char*);
-extern unsigned int get_seconds_resource (char*,char*);
-extern int parse_time (char *string, Bool seconds_default_p, Bool silent_p);
-
-#endif /* __XSCREENSAVER_RESOURCES_H__ */
diff --git a/utils/sgivideo.c b/utils/sgivideo.c
deleted file mode 100644 (file)
index 9fc0b78..0000000
+++ /dev/null
@@ -1,502 +0,0 @@
-/* xscreensaver, Copyright (c) 1997, 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.
- */
-
-/* This file contains code for grabbing a frame from one of the video inputs
-   on an SGI.  It returns it on a Drawable where it can be hacked at will.
-   This code checks all available video devices for the first one with a
-   non-blank signal.
-
-   It checks the deviced whose number comes from the `videoDevice' resource
-   first, then the default video device, then all the devices in order.
-
-   The intensity of the video signal is increased by the value of the
-   `videoGain' resource (a float) defaulting to 2.2, since NTSC video tends
-   to appear kind of dim on computer screens.
-
-   The video image is expanded to fit the window (while preserving the aspect
-   ratio.)  This is done by simply replicating pixels, not dithering.  That
-   turns out to look good enough most of the time.
-
-   If the target window is not TrueColor, the grabbed image will be quantized
-   to fit.  This also is done without dithering, but in this case, dithering
-   would help a lot, because it looks like crap.  So use TrueColor if you care.
- */
-
-#include "utils.h"
-#include "sgivideo.h"
-#include "resources.h"
-#include "visual.h"
-
-#ifdef HAVE_SGI_VIDEO  /* whole file */
-
-#include "usleep.h"
-
-#include <X11/Xutil.h>
-
-#ifdef DEBUG
-extern char *progname;
-#endif /* DEBUG */
-
-
-# include <dmedia/vl.h>
-
-static Bool dark_image_p(unsigned long *image, int width, int height);
-static Bool install_video_frame(unsigned long *image, int width, int height,
-                               Screen *screen, Visual *visual, Drawable dest);
-
-#ifdef DEBUG
-static void
-describe_input(const char *prefix, VLServer server, int camera)
-{
-  VLDevList dl;
-  int i, j;
-
-  if (camera == VL_ANY)
-    {
-      printf("%s: %s VL_ANY\n", progname, prefix);
-      return;
-    }
-
-  vlGetDeviceList(server, &dl);
-  for (i = 0; i < dl.numDevices; i++)
-    {
-      VLDevice *d = &dl.devices[i];
-      for (j = 0; j < d->numNodes; j++)
-       if (d->nodes[j].number == camera)
-         {
-           printf("%s: %s %d, \"%s\"\n", progname, prefix,
-                  d->nodes[j].number,
-                  d->nodes[j].name);
-           return;
-         }
-    }
-
-  /* else... */
-  printf("%s: %s %d (???)\n", progname, prefix, camera);
-}
-#endif /* DEBUG */
-
-
-static Bool
-grab_frame_1(Screen *screen, Visual *visual, Drawable dest, int camera)
-{
-  Bool status = False;
-  int width = 0;
-  int height = 0;
-  VLServer server = 0;
-  VLNode input = -1;
-  VLNode output = -1;
-  VLPath path = 0;
-  VLBuffer buffer = 0;
-  VLControlValue ctl;
-  VLInfoPtr info;
-  VLTransferDescriptor trans;
-  unsigned long *image = 0;
-
-  server = vlOpenVideo (NULL);
-  if (!server)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to open video server\n", progname);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-#ifdef DEBUG
-  describe_input("trying device", server, camera);
-#endif /* DEBUG */
-
-  input  = vlGetNode (server, VL_SRC, VL_VIDEO, camera);
-  output = vlGetNode (server, VL_DRN, VL_MEM, VL_ANY);
-
-  if (input == -1 || output == -1)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to get video I/O nodes: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-  path = vlCreatePath (server, VL_ANY, input, output);
-  if (path == -1)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to get video path: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-  if (vlSetupPaths (server, (VLPathList) &path, 1, VL_SHARE, VL_SHARE) == -1)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to set up video path: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-  ctl.intVal = VL_CAPTURE_INTERLEAVED;
-  if (vlSetControl (server, path, output, VL_CAP_TYPE, &ctl) == -1)
-    {
-#ifdef DEBUG
-      fprintf (stderr,
-              "%s: unable to set video capture type to interleaved: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-  ctl.intVal = VL_PACKING_RGBA_8;
-  if (vlSetControl (server, path, output, VL_PACKING, &ctl) == -1)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to set video packing to RGB8: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-  buffer = vlCreateBuffer (server, path, output, 3);
-  if (!buffer)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to create video buffer: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-  vlRegisterBuffer (server, path, output, buffer);
-
-  memset(&trans, 0, sizeof(trans));
-  trans.trigger = VLTriggerImmediate;
-  trans.mode = VL_TRANSFER_MODE_DISCRETE;
-  trans.delay = 0;
-  trans.count = 1;
-  if (vlBeginTransfer (server, path, 1, &trans) == -1)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to begin video transfer: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-    
-  
-  /* try to get a frame; don't try more than a zillion times.
-     I strongly suspect this isn't the best way to do this...
-   */
-  {
-    int i;
-    for (i = 0; i < 1000; i++)
-      {
-       info = vlGetLatestValid (server, buffer);
-       if (info) break;
-       usleep(10000);  /* 1/100th second (a bit more than half a field) */
-      }
-  }
-
-  if (!info)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to get video info: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-  image = vlGetActiveRegion (server, buffer, info);
-  if (!image)
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to grab video frame: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-  if (vlGetControl (server, path, input, VL_SIZE, &ctl) != -1)
-    {
-      width  = ctl.xyVal.x;
-      height = ctl.xyVal.y;
-    }
-  else
-    {
-#ifdef DEBUG
-      fprintf (stderr, "%s: unable to get video image size: %d\n",
-              progname, vlErrno);
-#endif /* DEBUG */
-      goto DONE;
-    }
-
-#ifdef DEBUG
-  describe_input("read device", server, camera);
-#endif /* DEBUG */
-
-  if (dark_image_p(image, width, height))
-    goto DONE;
-
-  status = install_video_frame(image, width, height, screen, visual, dest);
-
- DONE:
-
-  /* I think `image' is freed as a result of destroying buffer. */
-
-  if (buffer)
-    vlDestroyBuffer(server, buffer);
-  if (path)
-    vlDestroyPath(server, path);
-  if (server)
-    vlCloseVideo (server);
-
-  return status;
-}
-
-
-static Bool
-dark_image_p(unsigned long *image, int width, int height)
-{
-  double max = 0.02;
-  double total = 0.0;
-  int i;
-  int pixels = (width * height);
-#ifdef DEBUG
-  int mr = 0, mg = 0, mb = 0;
-#endif /* DEBUG */
-  for (i = pixels-1; i >= 0; i--)
-    {
-      unsigned long pixel = image[i];
-      unsigned int r = (pixel & 0x0000FF);
-      unsigned int g = (pixel & 0x00FF00) >> 8;
-      unsigned int b = (pixel & 0xFF0000) >> 16;
-#ifdef DEBUG
-      if (r > mr) mr = r;
-      if (g > mg) mg = g;
-      if (b > mb) mb = b;
-#endif /* DEBUG */
-      total += ((r * (0.3086 / 0xFF)) +       /* gamma 1.0 intensity values */
-               (g * (0.6094 / 0xFF)) +
-               (b * (0.0820 / 0xFF)));
-    }
-  total /= pixels;
-#ifdef DEBUG
-  fprintf(stderr, "%s: %sdark %f (max rgb: %d %d %d)\n", progname,
-         (total < max ? "" : "not "),
-         total, mr, mg, mb);
-#endif /* DEBUG */
-  return (total < max);
-}
-
-
-Bool
-grab_video_frame(Screen *screen, Visual *visual, Drawable dest)
-{
-  char *def_camera = get_string_resource("videoDevice", "Integer");
-  if (def_camera && *def_camera)
-    {
-      int cam;
-      char c;
-      int ok = (1 == sscanf(def_camera, " %d %c", &cam, &c));
-      free (def_camera);
-      if (ok && grab_frame_1(screen, visual, dest, cam))
-       return True;
-    }
-
-  if (grab_frame_1(screen, visual, dest, VL_ANY))
-    return True;
-  else
-    {
-      int i;
-      VLServer server = vlOpenVideo (NULL);
-      for (i = 0; i < 5; i++)  /* if we get all black images, retry up to
-                                  five times. */
-       {
-         VLDevList dl;
-         int j;
-         vlGetDeviceList(server, &dl);
-         vlCloseVideo(server);
-         for (j = 0; j < dl.numDevices; j++)
-           {
-             VLDevice *d = &dl.devices[j];
-             int k;
-             for (k = 0; k < d->numNodes; k++)
-               if (d->nodes[k].type == VL_SRC &&
-                   d->nodes[k].kind == VL_VIDEO)
-                 if (grab_frame_1(screen, visual, dest, d->nodes[k].number))
-                   return True;
-             /* nothing yet?  go around and try again... */
-           }
-       }
-    }
-#ifdef DEBUG
-  fprintf (stderr, "%s: images on all video feeds are too dark.\n",
-          progname);
-#endif /* DEBUG */
-  return False;
-}
-
-
-static Bool
-install_video_frame(unsigned long *image, int width, int height,
-                   Screen *screen, Visual *visual, Drawable dest)
-{
-  Display *dpy = DisplayOfScreen(screen);
-  int x, y;
-  unsigned int w, h, b, d;
-  Window root;
-  XGCValues gcv;
-  GC gc;
-  XImage *ximage = 0;
-  int image_depth;
-  Bool free_data = False;
-  int vblank_kludge = 3;       /* lose the closed-captioning blips... */
-
-  double gain;
-  char c, *G = get_string_resource("videoGain", "Float");
-  if (!G || (1 != sscanf (G, " %lf %c", &gain, &c)))
-    /* default to the usual NTSC gamma value.  Is this the right thing to do?
-       (Yeah, "gain" isn't quite "gamma", but it's close enough...) */
-    gain = 2.2;
-  if (G) free (G);
-
-  XGetGeometry(dpy, dest, &root, &x, &y, &w, &h, &b, &d);
-  
-  gcv.function = GXcopy;
-  gcv.foreground = BlackPixelOfScreen(screen);
-  gc = XCreateGC (dpy, dest, GCFunction|GCForeground, &gcv);
-
-  image_depth = visual_depth(screen, visual);
-  if (image_depth < 24)
-    image_depth = 24;  /* We'll dither */
-
-  ximage = XCreateImage (dpy, visual, image_depth, ZPixmap, 0, (char *) image,
-                        width, height, 8, 0);
-  XInitImage(ximage);
-  if (!ximage)
-    return False;
-
-  if (gain > 0.0)      /* Pump up the volume */
-    {
-      unsigned char *end = (unsigned char *) (image + (width * height));
-      unsigned char *s = (unsigned char *) image;
-      while (s < end)
-       {
-         unsigned int r = s[1] * gain;
-         unsigned int g = s[2] * gain;
-         unsigned int b = s[3] * gain;
-         s[1] = (r > 255 ? 255 : r);
-         s[2] = (g > 255 ? 255 : g);
-         s[3] = (b > 255 ? 255 : b);
-         s += 4;
-       }
-    }
-
-  /* If the drawable is not of truecolor depth, we need to convert the
-     grabbed bits to match the depth by clipping off the less significant
-     bit-planes of each color component.
-  */
-  if (d != 24 && d != 32)
-    {
-      int x, y;
-      /* We use the same ximage->data in both images -- that's ok, because
-        since we're reading from B and writing to A, and B uses more bytes
-        per pixel than A, the write pointer won't overrun the read pointer.
-      */
-      XImage *ximage2 = XCreateImage (dpy, visual, d, ZPixmap, 0,
-                                     (char *) image,
-                                     width, height, 8, 0);
-      XInitImage(ximage2);
-      if (!ximage2)
-       {
-         XDestroyImage(ximage);
-         return False;
-       }
-
-#ifdef DEBUG
-      fprintf(stderr, "%s: converting from depth %d to depth %d\n",
-             progname, ximage->depth, ximage2->depth);
-#endif /* DEBUG */
-
-      for (y = 0; y < ximage->height; y++)
-       for (x = 0; x < ximage->width; x++)
-         {
-           unsigned long pixel = XGetPixel(ximage, x, y);
-           unsigned int r = (pixel & 0x0000FF);
-           unsigned int g = (pixel & 0x00FF00) >> 8;
-           unsigned int b = (pixel & 0xFF0000) >> 16;
-
-           if (d == 8)
-             pixel = ((r >> 5) | ((g >> 5) << 3) | ((b >> 6) << 6));
-           else if (d == 12)
-             pixel = ((r >> 4) | ((g >> 4) << 4) | ((b >> 4) << 8));
-           else if (d == 16)
-             pixel = ((r >> 3) | ((g >> 3) << 5) | ((b >> 3) << 10));
-           else
-             abort();
-
-           XPutPixel(ximage2, x, y, pixel);
-         }
-      ximage->data = 0;
-      XDestroyImage(ximage);
-      ximage = ximage2;
-    }
-
-  if (width < w && height < h)      /* Stretch the image to fit the window. */
-    {
-      double dw = (((double) w) / ((double) width));
-      double dh = (((double) h) / ((double) height));
-      double d = (dw > dh ? dh : dw);
-      int width2  = d * width;
-      int height2 = d * height;
-      int x, y;
-      XImage *ximage2 = XCreateImage (dpy, visual, ximage->depth, ZPixmap,
-                                     0, NULL,
-                                     width2, height2, 8, 0);
-      if (!ximage2->data)
-       ximage2->data = (char *) malloc(width2 * height2 * 4);
-      free_data = True;
-      XInitImage(ximage2);
-#ifdef DEBUG
-      fprintf(stderr, "%s: stretching video image by %f (%d %d -> %d %d)\n",
-             progname, d, width, height, width2, height2);
-#endif /* DEBUG */
-      for (y = 0; y < height2; y++)
-       {
-         int y2 = (int) (y / d);
-         for (x = 0; x < width2; x++)
-           XPutPixel(ximage2, x, y, XGetPixel(ximage, (int) (x / d), y2));
-       }
-      ximage->data = 0;
-      XDestroyImage(ximage);
-      ximage = ximage2;
-      width = width2;
-      height = height2;
-      vblank_kludge *= d;
-    }
-
-  XFillRectangle(dpy, dest, gc, 0, 0, w, h);
-  XPutImage(dpy, dest, gc, ximage, 0, vblank_kludge,
-           (w - width) / 2,
-           (h - height) / 2,
-           width, height - vblank_kludge);
-  XSync(dpy, False);
-
-  if (free_data)
-    free(ximage->data);
-  ximage->data = 0;
-  XDestroyImage(ximage);
-  XFreeGC (dpy, gc);
-  return True;
-}
-
-#endif /* HAVE_SGI_VIDEO */
diff --git a/utils/sgivideo.h b/utils/sgivideo.h
deleted file mode 100644 (file)
index 794fde6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* xscreensaver, Copyright (c) 1997 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.
- */
-
-#ifndef __SGIVIDEO_H__
-# ifdef HAVE_SGI_VIDEO
-
-Bool grab_video_frame(Screen *screen, Visual *visual, Drawable dest);
-
-# endif /* HAVE_SGI_VIDEO */
-#endif /* __SGIVIDEO_H__ */
diff --git a/utils/spline.c b/utils/spline.c
deleted file mode 100644 (file)
index ed3d31c..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Copyright (c) 1987, 1988, 1989 Stanford University
- *
- * 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, and that the name of Stanford not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission.  Stanford makes no representations about
- * the suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- *
- * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
- * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* This code came with the InterViews distribution, and was translated
-   from C++ to C by Matthieu Devin <devin@lucid.com> some time in 1992.
- */
-
-#include "utils.h"
-#include "spline.h"
-
-#define SMOOTHNESS 1.0
-
-static void no_more_memory (void);
-static void grow_spline_points (spline* s);
-static void mid_point (double x0, double y0, double x1, double y1,
-                      double *mx, double *my);
-static int can_approx_with_line (double x0, double y0, double x2,
-                                double y2, double x3, double y3);
-static void add_line (spline* s, double x0, double y0, double x1, double y1);
-static void add_bezier_arc (spline* s,
-                           double x0, double y0, double x1, double y1,
-                           double x2, double y2, double x3, double y3);
-static void third_point (double x0, double y0, double x1, double y1,
-                        double *tx, double *ty);
-static void calc_section (spline* s, double cminus1x, double cminus1y,
-                         double cx, double cy, double cplus1x, double cplus1y,
-                         double cplus2x, double cplus2y);
-
-static void
-no_more_memory (void)
-{
-  fprintf (stderr, "No more memory\n");
-  exit (1);
-}
-
-spline*
-make_spline (unsigned int size)
-{
-  spline* s = (spline*)calloc (1, sizeof (spline));
-  if (!s)
-    no_more_memory ();
-  s->n_controls = size;
-  s->control_x = (double*)calloc (s->n_controls, sizeof (double));
-  s->control_y = (double*)calloc (s->n_controls, sizeof (double));
-
-  s->n_points = 0;
-  s->allocated_points = s->n_controls;
-  s->points = (XPoint*)calloc (s->allocated_points, sizeof (XPoint));
-
-  if (!s->control_x || !s->control_y || !s->points)
-    no_more_memory ();
-
-  return s;
-}
-
-static void
-grow_spline_points (spline *s)
-{
-  s->allocated_points *= 2;
-  s->points =
-    (XPoint*)realloc (s->points, s->allocated_points * sizeof (XPoint));
-
-  if (!s->points)
-    no_more_memory ();
-}
-
-static void 
-mid_point (double x0, double y0,
-          double x1, double y1,
-          double *mx, double *my)
-{
-  *mx = (x0 + x1) / 2.0;
-  *my = (y0 + y1) / 2.0;
-}
-
-static void 
-third_point (double x0, double y0,
-            double x1, double y1,
-            double *tx, double *ty)
-{
-  *tx = (2 * x0 + x1) / 3.0;
-  *ty = (2 * y0 + y1) / 3.0;
-}
-
-static int
-can_approx_with_line (double x0, double y0,
-                     double x2, double y2,
-                     double x3, double y3)
-{
-  double triangle_area, side_squared, dx, dy;
-  
-  triangle_area = x0 * y2 - x2 * y0 + x2 * y3 - x3 * y2 + x3 * y0 - x0 * y3;
-  /* actually 4 times the area. */
-  triangle_area *= triangle_area;
-  dx = x3 - x0;
-  dy = y3 - y0;
-  side_squared = dx * dx + dy * dy;
-  return triangle_area <= SMOOTHNESS * side_squared;
-}
-
-static void
-add_line (spline *s,
-         double x0, double y0,
-         double x1, double y1)
-{
-  if (s->n_points >= s->allocated_points)
-    grow_spline_points (s);
-
-  if (s->n_points == 0)
-    {
-      s->points [s->n_points].x = x0;
-      s->points [s->n_points].y = y0;
-      s->n_points += 1;
-    }
-  s->points [s->n_points].x = x1;
-  s->points [s->n_points].y = y1;
-  s->n_points += 1;
-}
-
-static void 
-add_bezier_arc (spline *s,
-               double x0, double y0,
-               double x1, double y1,
-               double x2, double y2,
-               double x3, double y3)
-{
-  double midx01, midx12, midx23, midlsegx, midrsegx, cx,
-  midy01, midy12, midy23, midlsegy, midrsegy, cy;
-    
-  mid_point (x0, y0, x1, y1, &midx01, &midy01);
-  mid_point (x1, y1, x2, y2, &midx12, &midy12);
-  mid_point (x2, y2, x3, y3, &midx23, &midy23);
-  mid_point (midx01, midy01, midx12, midy12, &midlsegx, &midlsegy);
-  mid_point (midx12, midy12, midx23, midy23, &midrsegx, &midrsegy);
-  mid_point (midlsegx, midlsegy, midrsegx, midrsegy, &cx, &cy);    
-
-  if (can_approx_with_line (x0, y0, midlsegx, midlsegy, cx, cy))
-    add_line (s, x0, y0, cx, cy);
-  else if ((midx01 != x1) || (midy01 != y1) || (midlsegx != x2)
-          || (midlsegy != y2) || (cx != x3) || (cy != y3))
-    add_bezier_arc (s, x0, y0, midx01, midy01, midlsegx, midlsegy, cx, cy);
-
-  if (can_approx_with_line (cx, cy, midx23, midy23, x3, y3))
-    add_line (s, cx, cy, x3, y3);
-  else if ((cx != x0) || (cy != y0) || (midrsegx != x1) || (midrsegy != y1)
-          || (midx23 != x2) || (midy23 != y2))  
-    add_bezier_arc (s, cx, cy, midrsegx, midrsegy, midx23, midy23, x3, y3);
-}
-
-static void
-calc_section (spline *s,
-             double cminus1x, double cminus1y,
-             double cx, double cy,
-             double cplus1x, double cplus1y,
-             double cplus2x, double cplus2y)
-{
-  double p0x, p1x, p2x, p3x, tempx,
-  p0y, p1y, p2y, p3y, tempy;
-  
-  third_point (cx, cy, cplus1x, cplus1y, &p1x, &p1y);
-  third_point (cplus1x, cplus1y, cx, cy, &p2x, &p2y);
-  third_point (cx, cy, cminus1x, cminus1y, &tempx, &tempy);
-  mid_point (tempx, tempy, p1x, p1y, &p0x, &p0y);
-  third_point (cplus1x, cplus1y, cplus2x, cplus2y, &tempx, &tempy);
-  mid_point (tempx, tempy, p2x, p2y, &p3x, &p3y);
-  add_bezier_arc (s, p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y);
-}
-
-void
-compute_spline (spline *s)
-{
-  int i;
-  s->n_points = 0;
-  
-  if (s->n_controls < 3)
-    return;
-
-  calc_section (s, s->control_x [0], s->control_y [0], s->control_x [0],
-               s->control_y [0], s->control_x [0], s->control_y [0],
-               s->control_x [1], s->control_y [1]);
-  calc_section (s, s->control_x [0], s->control_y [0], s->control_x [0],
-               s->control_y [0], s->control_x [1], s->control_y [1],
-               s->control_x [2], s->control_y [2]);
-
-  for (i = 1; i < s->n_controls - 2; i++)
-    calc_section (s, s->control_x [i - 1], s->control_y [i - 1],
-                 s->control_x [i], s->control_y [i],
-                 s->control_x [i + 1], s->control_y [i + 1],
-                 s->control_x [i + 2], s->control_y [i + 2]);
-  
-  calc_section (s, s->control_x [i - 1], s->control_y [i - 1],
-               s->control_x [i], s->control_y [i],
-               s->control_x [i + 1], s->control_y [i + 1],
-               s->control_x [i + 1], s->control_y [i + 1]);
-  calc_section (s, s->control_x [i], s->control_y [i],
-               s->control_x [i + 1], s->control_y [i + 1],
-               s->control_x [i + 1], s->control_y [i + 1],
-               s->control_x [i + 1], s->control_y [i + 1]);
-}
-
-void 
-compute_closed_spline (spline *s)
-{
-  int i;
-  s->n_points = 0;
-
-  if (s->n_controls < 3) 
-    return;
-
-  calc_section (s,
-               s->control_x [s->n_controls - 1],
-               s->control_y [s->n_controls - 1],
-               s->control_x [0], s->control_y [0],
-               s->control_x [1], s->control_y [1],
-               s->control_x [2], s->control_y [2]);
-
-  for (i = 1; i < s->n_controls - 2; i++)
-    calc_section (s, s->control_x [i - 1], s->control_y [i - 1],
-                 s->control_x [i], s->control_y [i],
-                 s->control_x [i + 1], s->control_y [i + 1],
-                 s->control_x [i + 2], s->control_y [i + 2]);
-      
-  calc_section (s, s->control_x [i - 1], s->control_y [i - 1],
-               s->control_x [i], s->control_y [i],
-               s->control_x [i + 1], s->control_y [i + 1],
-               s->control_x [0], s->control_y [0]);
-  calc_section (s, s->control_x [i], s->control_y [i],
-               s->control_x [i + 1], s->control_y [i + 1],
-               s->control_x [0], s->control_y [0],
-               s->control_x [1], s->control_y [1]);
-}
-
-void
-just_fill_spline (spline *s)
-{
-  int i;
-
-  while (s->allocated_points < s->n_controls + 1)
-    grow_spline_points (s);
-    
-  for (i = 0; i < s->n_controls; i++)
-    {
-      s->points [i].x = s->control_x [i];
-      s->points [i].y = s->control_y [i];
-    }
-  s->points [s->n_controls].x = s->control_x [0];
-  s->points [s->n_controls].y = s->control_y [0];
-  s->n_points = s->n_controls + 1;
-}
-
-void
-append_spline_points (spline *s1, spline *s2)
-{
-  int i;
-  while (s1->allocated_points < s1->n_points + s2->n_points)
-    grow_spline_points (s1);
-  for (i = s1->n_points; i < s1->n_points + s2->n_points; i++)
-    {
-      s1->points [i].x = s2->points [i - s1->n_points].x;
-      s1->points [i].y = s2->points [i - s1->n_points].y;
-    }
-  s1->n_points = s1->n_points + s2->n_points;
-}
-
-void
-spline_bounding_box (spline *s, XRectangle *rectangle_out)
-{
-  int min_x;
-  int max_x;
-  int min_y;
-  int max_y;
-  int i;
-
-  if (s->n_points == 0)
-    {
-      rectangle_out->x = 0;
-      rectangle_out->y = 0;
-      rectangle_out->width = 0;
-      rectangle_out->height = 0;
-    }
-
-  min_x = s->points [0].x;
-  max_x = min_x;
-  min_y = s->points [0].y;
-  max_y = min_y;
-
-  for (i = 1; i < s->n_points; i++)
-    {
-      if (s->points [i].x < min_x)
-       min_x = s->points [i].x;
-      if (s->points [i].x > max_x)
-       max_x = s->points [i].x;
-      if (s->points [i].y < min_y)
-       min_y = s->points [i].y;
-      if (s->points [i].y > max_y)
-       max_y = s->points [i].y;
-    }
-  rectangle_out->x = min_x;
-  rectangle_out->y = min_y;
-  rectangle_out->width = max_x - min_x;
-  rectangle_out->height = max_y - min_y;
-}
-
-void
-free_spline(spline * s)
-{
-  free ((void *) s->control_x);
-  free ((void *) s->control_y);
-  free ((void *) s->points);
-  free ((void *) s);
-}
diff --git a/utils/spline.h b/utils/spline.h
deleted file mode 100644 (file)
index a5a366c..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 1987, 1988, 1989 Stanford University
- *
- * 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, and that the name of Stanford not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission.  Stanford makes no representations about
- * the suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- *
- * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
- * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* This code came with the InterViews distribution, and was translated
-   from C++ to C by Matthieu Devin <devin@lucid.com> some time in 1992.
- */
-
-#ifndef _SPLINE_H_
-#define _SPLINE_H_
-
-typedef struct _spline
-{
-  /* input */
-  unsigned int n_controls;
-  double*      control_x;
-  double*      control_y;
-
-  /* output */
-  unsigned int         n_points;
-  XPoint*      points;
-  unsigned int         allocated_points;
-} spline;
-
-spline* make_spline (unsigned int size);
-void compute_spline (spline* s);
-void compute_closed_spline (spline* s);
-void just_fill_spline (spline* s);
-void append_spline_points (spline* s1, spline* s2);
-void spline_bounding_box (spline* s, XRectangle* rectangle_out);
-void free_spline(spline *s);
-
-#endif /* _SPLINE_H_ */
diff --git a/utils/usleep.c b/utils/usleep.c
deleted file mode 100644 (file)
index 7066759..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1996, 1997
- *  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"
-#else  /* !HAVE_CONFIG_H */
-# ifndef NO_SELECT
-#  define HAVE_SELECT
-# endif
-#endif /* !HAVE_CONFIG_H */
-
-#ifdef __STDC__
-# include <stdlib.h>
-#endif
-
-#if defined(VMS)
-# include <descrip.h>
-# include <stdio.h>
-# include <lib$routines.h>
-#elif defined(HAVE_SELECT)
-# include <sys/time.h>         /* for struct timeval */
-#endif
-
-
-#ifdef __SCREENHACK_USLEEP_H__
-ERROR, do not include that here
-#endif
-
-void
-screenhack_usleep (unsigned long usecs)
-{
-# if defined(VMS)
-  float seconds = ((float) usecs)/1000000.0;
-  unsigned long int statvms = lib$wait(&seconds);
-
-#elif defined(HAVE_SELECT)
-  /* usleep() doesn't exist everywhere, and select() is faster anyway. */
-  struct timeval tv;
-  tv.tv_sec  = usecs / 1000000L;
-  tv.tv_usec = usecs % 1000000L;
-  (void) select (0, 0, 0, 0, &tv);
-
-#else /* !VMS && !HAVE_SELECT */
-  /* If you don't have select() or usleep(), I guess you lose...
-     Maybe you have napms() instead?  Let me know. */
-  usleep (usecs);
-
-#endif /* !VMS && !HAVE_SELECT */
-}
diff --git a/utils/usleep.h b/utils/usleep.h
deleted file mode 100644 (file)
index c40363e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1996 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.
- */
-
-#ifndef __SCREENHACK_USLEEP_H__
-#define __SCREENHACK_USLEEP_H__
-
-extern void screenhack_usleep (unsigned long usecs);
-
-#undef usleep
-#define usleep(usecs) screenhack_usleep(usecs)
-
-#endif /* __SCREENHACK_USLEEP_H__ */
diff --git a/utils/utils.h b/utils/utils.h
deleted file mode 100644 (file)
index 284bb86..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* xscreensaver, Copyright (c) 1997 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 <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xos.h>
diff --git a/utils/version.h b/utils/version.h
deleted file mode 100644 (file)
index f81d45d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-static const char screensaver_id[] =
-       "@(#)xscreensaver 3.12 (10-May-99), by Jamie Zawinski (jwz@jwz.org)";
diff --git a/utils/visual-gl.c b/utils/visual-gl.c
deleted file mode 100644 (file)
index fb83fe4..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/* xscreensaver, Copyright (c) 1999 by 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 file contains code for picking the best visual for GL programs by
-   actually asking the GL library to figure it out for us.  The code in
-   visual.c might do a good job of this on most systems, but not, in
-   particular, on SGIs.
-
-   Why?  Because with the SGI O2 X server is weird.
-
-   GL programs tend to work best on a visual that is *half* as deep as the
-   depth of the screen, since that way, they can do double-buffering.  So
-   generally, if the screen is 24 bits deep, but a 12-bit TrueColor visual
-   is available, then that's the visual you should use.
-
-   But on the server that runs on the O2 (a machine that has serious hardware
-   support for GL) the 12-bit PseudoColor visual looks awful (you get a black
-   and white, flickery image.)  On these machines, the visual you want turns
-   out to be 0x31 -- this is but one of the eight 15-bit TrueColor visuals
-   (yes, 8, and yes, 15) that O2s provide.  This is the only visual that works
-   properly -- as far as `xdpyinfo' is concerned, all of the 15-bit TrueColor
-   visuals are identical, but some flicker like mad, and some have deeply
-   weird artifacts (hidden surfaces show through!)  I suppose these other
-   visuals must be tied to some arcane hardware feature...
-
-   So the bottom line is, there exists information about visuals which is
-   available to GL, but which is not available via Xlib calls.  So the only
-   way to know which visual to use (other than impirically) is to actually
-   call GLX routines.
- */
-
-#include "utils.h"
-#include "visual.h"
-
-#ifdef HAVE_GL
-# include <GL/gl.h>
-# include <GL/glx.h>
-#endif /* HAVE_GL */
-
-Visual *
-get_gl_visual (Screen *screen)
-{
-#ifdef HAVE_GL
-  XVisualInfo *vi = 0;
-  Display *dpy = DisplayOfScreen (screen);
-  int screen_num = screen_number (screen);
-  int attrs[20];
-  int i = 0;
-
-  attrs[i++] = GLX_RGBA;
-  attrs[i++] = GLX_RED_SIZE;     attrs[i++] = 1;
-  attrs[i++] = GLX_GREEN_SIZE;   attrs[i++] = 1;
-  attrs[i++] = GLX_BLUE_SIZE;    attrs[i++] = 1;
-  attrs[i++] = GLX_DEPTH_SIZE;   attrs[i++] = 1;
-  attrs[i++] = GLX_DOUBLEBUFFER;
-  attrs[i++] = 0;
-
-  vi = glXChooseVisual (dpy, screen_num, attrs);
-
-  if (!vi)                             /* Try without double-buffering. */
-    {
-      attrs[i-1] = 0;
-      vi = glXChooseVisual (dpy, screen_num, attrs);
-    }
-
-  if (!vi)                             /* Try mono. */
-    {
-      i = 0;
-      attrs[i++] = GLX_DOUBLEBUFFER;
-      attrs[i++] = 0;
-      vi = glXChooseVisual (dpy, screen_num, attrs);
-    }
-
-  if (!vi)                             /* Try mono without double-buffer. */
-    {
-      attrs[0] = 0;
-      vi = glXChooseVisual (dpy, screen_num, attrs);
-    }
-
-  if (!vi)
-    return 0;
-  else
-    {
-      Visual *v = vi->visual;
-      XFree (vi);
-      return v;
-    }
-#else  /* !HAVE_GL */
-  return 0;
-#endif /* !HAVE_GL */
-}
diff --git a/utils/visual.c b/utils/visual.c
deleted file mode 100644 (file)
index 195ef79..0000000
+++ /dev/null
@@ -1,543 +0,0 @@
-/* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999
- *  by 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 file contains some code for intelligently picking the best visual
-   (where "best" is biased in the direction of either: high color counts;
-   or: having writable color cells...)
- */
-
-#include "utils.h"
-#include "resources.h"  /* for get_string_resource() */
-#include "visual.h"
-
-#include <X11/Xutil.h>
-
-extern char *progname;
-
-
-#ifndef isupper
-# define isupper(c)  ((c) >= 'A' && (c) <= 'Z')
-#endif
-#ifndef _tolower
-# define _tolower(c)  ((c) - 'A' + 'a')
-#endif
-
-
-static Visual *pick_best_visual (Screen *, Bool, Bool);
-static Visual *pick_mono_visual (Screen *);
-static Visual *pick_best_visual_of_class (Screen *, int);
-static Visual *pick_best_gl_visual (Screen *);
-static Visual *id_to_visual (Screen *, int);
-static Visual *id_to_visual (Screen *screen, int id);
-
-
-#define DEFAULT_VISUAL -1
-#define BEST_VISUAL    -2
-#define MONO_VISUAL    -3
-#define GRAY_VISUAL    -4
-#define COLOR_VISUAL   -5
-#define GL_VISUAL      -6
-#define SPECIFIC_VISUAL        -7
-
-Visual *
-get_visual (Screen *screen, const char *string, Bool prefer_writable_cells,
-           Bool verbose_p)
-{
-  char *v = (string ? strdup(string) : 0);
-  char c, *tmp;
-  int vclass;
-  unsigned long id;
-  Visual *result = 0;
-
-  if (v)
-    for (tmp = v; *tmp; tmp++)
-      if (isupper (*tmp)) *tmp = _tolower (*tmp);
-
-  if (!v)                                        vclass = BEST_VISUAL;
-  else if (!strcmp (v, "default"))               vclass = DEFAULT_VISUAL;
-  else if (!strcmp (v, "best"))                  vclass = BEST_VISUAL;
-  else if (!strcmp (v, "mono"))                  vclass = MONO_VISUAL;
-  else if (!strcmp (v, "monochrome"))            vclass = MONO_VISUAL;
-  else if (!strcmp (v, "gray"))                  vclass = GRAY_VISUAL;
-  else if (!strcmp (v, "grey"))                  vclass = GRAY_VISUAL;
-  else if (!strcmp (v, "color"))                 vclass = COLOR_VISUAL;
-  else if (!strcmp (v, "gl"))                    vclass = GL_VISUAL;
-  else if (!strcmp (v, "staticgray"))            vclass = StaticGray;
-  else if (!strcmp (v, "staticcolor"))           vclass = StaticColor;
-  else if (!strcmp (v, "truecolor"))             vclass = TrueColor;
-  else if (!strcmp (v, "grayscale"))             vclass = GrayScale;
-  else if (!strcmp (v, "greyscale"))             vclass = GrayScale;
-  else if (!strcmp (v, "pseudocolor"))           vclass = PseudoColor;
-  else if (!strcmp (v, "directcolor"))           vclass = DirectColor;
-  else if (1 == sscanf (v, " %ld %c", &id, &c))          vclass = SPECIFIC_VISUAL;
-  else if (1 == sscanf (v, " 0x%lx %c", &id, &c)) vclass = SPECIFIC_VISUAL;
-  else
-    {
-      fprintf (stderr, "%s: unrecognized visual \"%s\".\n", progname, v);
-      vclass = DEFAULT_VISUAL;
-    }
-
-  if (vclass == DEFAULT_VISUAL)
-    result = DefaultVisualOfScreen (screen);
-  else if (vclass == BEST_VISUAL)
-    result = pick_best_visual (screen, prefer_writable_cells, False);
-  else if (vclass == MONO_VISUAL)
-    {
-      result = pick_mono_visual (screen);
-      if (!result && verbose_p)
-       fprintf (stderr, "%s: no monochrome visuals.\n", progname);
-    }
-  else if (vclass == GRAY_VISUAL)
-    {
-      if (prefer_writable_cells)
-       result = pick_best_visual_of_class (screen, GrayScale);
-      if (!result)
-       result = pick_best_visual_of_class (screen, StaticGray);
-      if (!result)
-       result = pick_best_visual_of_class (screen, GrayScale);
-      if (!result && verbose_p)
-       fprintf (stderr, "%s: no GrayScale or StaticGray visuals.\n",
-                progname);
-    }
-  else if (vclass == COLOR_VISUAL)
-    {
-      int class;
-      /* First see if the default visual will do. */
-      result = DefaultVisualOfScreen (screen);
-      class = visual_class(screen, result);
-      if (class != TrueColor &&
-         class != PseudoColor &&
-         class != DirectColor &&
-         class != StaticColor)
-       result = 0;
-      if (result && visual_depth(screen, result) <= 1)
-       result = 0;
-
-      /* Else, find the best non-default color visual */
-      if (!result)
-       result = pick_best_visual (screen, prefer_writable_cells, True);
-
-      if (!result && verbose_p)
-       fprintf (stderr, "%s: no color visuals.\n", progname);
-    }
-  else if (vclass == GL_VISUAL)
-    {
-      Visual *visual = pick_best_gl_visual (screen);
-      if (visual)
-       result = visual;
-      else if (verbose_p)
-       fprintf (stderr, "%s: no visual suitable for GL.\n", progname, v);
-    }
-  else if (vclass == SPECIFIC_VISUAL)
-    {
-      result = id_to_visual (screen, id);
-      if (!result && verbose_p)
-       fprintf (stderr, "%s: no visual with id 0x%x.\n", progname,
-                (unsigned int) id);
-    }
-  else
-    {
-      Visual *visual = pick_best_visual_of_class (screen, vclass);
-      if (visual)
-       result = visual;
-      else if (verbose_p)
-       fprintf (stderr, "%s: no visual of class %s.\n", progname, v);
-    }
-
-  if (v) free (v);
-  return result;
-}
-
-Visual *
-get_visual_resource (Screen *screen, char *name, char *class,
-                    Bool prefer_writable_cells)
-{
-  char *string = get_string_resource (name, class);
-  Visual *v = get_visual (screen, string, prefer_writable_cells, True);
-  if (string)
-    free(string);
-  if (v)
-    return v;
-  else
-    return DefaultVisualOfScreen (screen);
-}
-
-
-static Visual *
-pick_best_visual (Screen *screen, Bool prefer_writable_cells, Bool color_only)
-{
-  Visual *visual;
-
-  if (!prefer_writable_cells)
-    {
-      /* If we don't prefer writable cells, then the "best" visual is the one
-        on which we can allocate the largest range and number of colors.
-
-        Therefore, a TrueColor visual which is at least 16 bits deep is best.
-        (The assumption here being that a TrueColor of less than 16 bits is
-        really just a PseudoColor visual with a pre-allocated color cube.)
-
-        The next best thing is a PseudoColor visual of any type.  After that
-        come the non-colormappable visuals, and non-color visuals.
-       */
-      if ((visual = pick_best_visual_of_class (screen, TrueColor)) &&
-         visual_depth (screen, visual) >= 16)
-       return visual;
-    }
-
-#define TRY_CLASS(CLASS) \
-  if ((visual = pick_best_visual_of_class (screen, CLASS)) && \
-      (!color_only || visual_depth(screen, visual) > 1)) \
-    return visual
-  TRY_CLASS(PseudoColor);
-  TRY_CLASS(TrueColor);
-  TRY_CLASS(DirectColor);
-  TRY_CLASS(StaticColor);
-  if (!color_only)
-    {
-      TRY_CLASS(GrayScale);
-      TRY_CLASS(StaticGray);
-    }
-#undef TRY_CLASS
-
-  visual = DefaultVisualOfScreen (screen);
-  if (!color_only || visual_depth(screen, visual) > 1)
-    return visual;
-  else
-    return 0;
-}
-
-static Visual *
-pick_mono_visual (Screen *screen)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  int out_count;
-
-  vi_in.depth = 1;
-  vi_in.screen = screen_number (screen);
-  vi_out = XGetVisualInfo (dpy, (VisualDepthMask | VisualScreenMask),
-                          &vi_in, &out_count);
-  if (vi_out)
-    {
-      Visual *v = (out_count > 0 ? vi_out [0].visual : 0);
-      if (v && vi_out[0].depth != 1)
-       v = 0;
-      XFree ((char *) vi_out);
-      return v;
-    }
-  else
-    return 0;
-}
-
-
-static Visual *
-pick_best_visual_of_class (Screen *screen, int visual_class)
-{
-  /* The best visual of a class is the one which on which we can allocate
-     the largest range and number of colors, which means the one with the
-     greatest depth and number of cells.
-
-     (But actually, for XDaliClock, all visuals of the same class are
-     probably equivalent - either we have writable cells or we don't.)
-   */
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  int out_count;
-
-  vi_in.class = visual_class;
-  vi_in.screen = screen_number (screen);
-  vi_out = XGetVisualInfo (dpy, (VisualClassMask | VisualScreenMask),
-                          &vi_in, &out_count);
-  if (vi_out)
-    {
-      /* choose the 'best' one, if multiple */
-      int i, best;
-      Visual *visual;
-      for (i = 0, best = 0; i < out_count; i++)
-       /* It's better if it's deeper, or if it's the same depth with
-          more cells (does that ever happen?  Well, it could...) */
-       if ((vi_out [i].depth > vi_out [best].depth) ||
-           ((vi_out [i].depth == vi_out [best].depth) &&
-            (vi_out [i].colormap_size > vi_out [best].colormap_size)))
-         best = i;
-      visual = (best < out_count ? vi_out [best].visual : 0);
-      XFree ((char *) vi_out);
-      return visual;
-    }
-  else
-    return 0;
-}
-
-static Visual *
-pick_best_gl_visual (Screen *screen)
-{
-  /* The best visual for GL is a TrueColor visual that is half as deep as
-     the screen.  If such a thing doesn't exist, then TrueColor is best.
-     Failing that, the deepest available color visual is best.
-
-     Compare this function to get_gl_visual() in visual-gl.c.
-     This function tries to find the best GL visual using Xlib calls,
-     whereas that function does the same thing using GLX calls.
-   */
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  int out_count;
-  Visual *result = 0;
-
-  int ndepths = 0;
-  int *depths = XListDepths (dpy, screen_number (screen), &ndepths);
-  int screen_depth = depths[ndepths];
-  XFree (depths);
-
-  vi_in.class = TrueColor;
-  vi_in.screen = screen_number (screen);
-  vi_in.depth = screen_depth / 2;
-  vi_out = XGetVisualInfo (dpy, (VisualClassMask | VisualScreenMask |
-                                 VisualDepthMask),
-                          &vi_in, &out_count);
-  if (out_count > 0)
-    result = vi_out[0].visual;
-
-  if (vi_out)
-    XFree ((char *) vi_out);
-
-  if (!result && screen_depth > 24)
-    {
-      /* If it's a 32-deep screen and we didn't find a depth-16 visual,
-         see if there's a depth-12 visual. */
-      vi_in.class = TrueColor;
-      vi_in.screen = screen_number (screen);
-      vi_in.depth = 12;
-      vi_out = XGetVisualInfo (dpy, (VisualClassMask | VisualScreenMask |
-                                     VisualDepthMask),
-                               &vi_in, &out_count);
-      if (out_count > 0)
-        result = vi_out[0].visual;
-    }
-
-  if (result)
-    /* No half-depth TrueColor?  Ok, try for any TrueColor (the deepest.) */
-    result = pick_best_visual_of_class (screen, TrueColor);
-
-  if (!result)
-    /* No TrueColor?  Ok, try for anything. */
-    result = pick_best_visual (screen, False, False);
-
-  return result;
-}
-
-
-static Visual *
-id_to_visual (Screen *screen, int id)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  int out_count;
-  vi_in.screen = screen_number (screen);
-  vi_in.visualid = id;
-  vi_out = XGetVisualInfo (dpy, (VisualScreenMask | VisualIDMask),
-                          &vi_in, &out_count);
-  if (vi_out)
-    {
-      Visual *v = vi_out[0].visual;
-      XFree ((char *) vi_out);
-      return v;
-    }
-  return 0;
-}
-
-int
-visual_depth (Screen *screen, Visual *visual)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  int out_count, d;
-  vi_in.screen = screen_number (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;
-}
-
-
-#if 0
-/* You very probably don't want to be using this.
-   Pixmap depth doesn't refer to the depths of pixmaps, but rather, to
-   the depth of protocol-level on-the-wire pixmap data, that is, XImages.
-   To get this info, you should be looking at XImage->bits_per_pixel
-   instead.  (And allocating the data for your XImage structures by
-   multiplying ximage->bytes_per_line by ximage->height.)
- */
-int
-visual_pixmap_depth (Screen *screen, Visual *visual)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  int vdepth = visual_depth (screen, visual);
-  int pdepth = vdepth;
-  int i, pfvc = 0;
-  XPixmapFormatValues *pfv = XListPixmapFormats (dpy, &pfvc);
-
-  /* Return the first matching depth in the pixmap formats.  If there are no
-     matching pixmap formats (which shouldn't be able to happen at all) then
-     return the visual depth instead. */
-  for (i = 0; i < pfvc; i++)
-    if (pfv[i].depth == vdepth)
-      {
-       pdepth = pfv[i].bits_per_pixel;
-       break;
-      }
-  if (pfv)
-    XFree (pfv);
-  return pdepth;
-}
-#endif /* 0 */
-
-
-int
-visual_class (Screen *screen, Visual *visual)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  int out_count, c;
-  vi_in.screen = screen_number (screen);
-  vi_in.visualid = XVisualIDFromVisual (visual);
-  vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
-                          &vi_in, &out_count);
-  if (! vi_out) abort ();
-  c = vi_out [0].class;
-  XFree ((char *) vi_out);
-  return c;
-}
-
-Bool
-has_writable_cells (Screen *screen, Visual *visual)
-{
-  switch (visual_class (screen, visual))
-    {
-    case GrayScale:    /* Mappable grays. */
-    case PseudoColor:  /* Mappable colors. */
-      return True;
-    case StaticGray:   /* Fixed grays. */
-    case TrueColor:    /* Fixed colors. */
-    case StaticColor:  /* (What's the difference again?) */
-    case DirectColor:  /* DirectColor visuals are like TrueColor, but have
-                          three colormaps - one for each component of RGB.
-                          Screw it. */
-      return False;
-    default:
-      abort();
-      return False;
-    }
-}
-
-void
-describe_visual (FILE *f, Screen *screen, Visual *visual, Bool private_cmap_p)
-{
-  char n[10];
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  int out_count;
-  vi_in.screen = screen_number (screen);
-  vi_in.visualid = XVisualIDFromVisual (visual);
-  vi_out = XGetVisualInfo (dpy, (VisualScreenMask | VisualIDMask),
-                          &vi_in, &out_count);
-  if (! vi_out) abort ();
-  if (private_cmap_p)
-    sprintf(n, "%3d", vi_out->colormap_size);
-  else
-    strcpy(n, "default");
-
-  fprintf (f, "0x%02x (%s depth: %2d, cmap: %s)\n",
-          (unsigned int) vi_out->visualid,
-          (vi_out->class == StaticGray  ? "StaticGray, " :
-           vi_out->class == StaticColor ? "StaticColor," :
-           vi_out->class == TrueColor   ? "TrueColor,  " :
-           vi_out->class == GrayScale   ? "GrayScale,  " :
-           vi_out->class == PseudoColor ? "PseudoColor," :
-           vi_out->class == DirectColor ? "DirectColor," :
-                                          "UNKNOWN:    "),
-          vi_out->depth, n);
-  XFree ((char *) vi_out);
-}
-
-int
-screen_number (Screen *screen)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  int i;
-  for (i = 0; i < ScreenCount (dpy); i++)
-    if (ScreenOfDisplay (dpy, i) == screen)
-      return i;
-  abort ();
-  return 0;
-}
-
-int
-visual_cells (Screen *screen, Visual *visual)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  int out_count, c;
-  vi_in.screen = screen_number (screen);
-  vi_in.visualid = XVisualIDFromVisual (visual);
-  vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
-                          &vi_in, &out_count);
-  if (! vi_out) abort ();
-  c = vi_out [0].colormap_size;
-  XFree ((char *) vi_out);
-  return c;
-}
-
-Visual *
-find_similar_visual(Screen *screen, Visual *old_visual)
-{
-  Display *dpy = DisplayOfScreen (screen);
-  XVisualInfo vi_in, *vi_out;
-  Visual *result = 0;
-  int out_count;
-
-  vi_in.screen = screen_number (screen);
-  vi_in.class  = visual_class (screen, old_visual);
-  vi_in.depth  = visual_depth (screen, old_visual);
-
-  /* Look for a visual of the same class and depth.
-   */
-  vi_out = XGetVisualInfo (dpy, (VisualScreenMask | VisualClassMask |
-                                VisualDepthMask),
-                          &vi_in, &out_count);
-  if (vi_out && out_count > 0)
-    result = vi_out[0].visual;
-  if (vi_out) XFree (vi_out);
-  vi_out = 0;
-
-  /* Failing that, look for a visual of the same class.
-   */
-  if (!result)
-    {
-      vi_out = XGetVisualInfo (dpy, (VisualScreenMask | VisualClassMask),
-                              &vi_in, &out_count);
-      if (vi_out && out_count > 0)
-       result = vi_out[0].visual;
-      if (vi_out) XFree (vi_out);
-      vi_out = 0;
-    }
-
-  /* Failing that, return the default visual. */
-  if (!result)
-    result = DefaultVisualOfScreen (screen);
-
-  return result;
-}
diff --git a/utils/visual.h b/utils/visual.h
deleted file mode 100644 (file)
index dd45708..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* xscreensaver, Copyright (c) 1993-1999 by 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.
- */
-
-#ifndef __VISUAL_H__
-#define __VISUAL_H__
-
-extern Visual *get_visual (Screen *, const char *name, Bool, Bool);
-extern Visual *get_visual_resource (Screen *, char *, char *, Bool);
-extern int visual_depth (Screen *, Visual *);
-/* extern int visual_pixmap_depth (Screen *, Visual *); */
-extern int visual_class (Screen *, Visual *);
-extern int visual_cells (Screen *, Visual *);
-extern int screen_number (Screen *);
-extern Visual *find_similar_visual (Screen *, Visual *old);
-extern void describe_visual (FILE *f, Screen *, Visual *, Bool private_cmap_p);
-extern Visual *get_overlay_visual (Screen *, unsigned long *pixel_return);
-extern Bool has_writable_cells (Screen *screen, Visual *visual);
-
-Visual *get_gl_visual (Screen *screen);
-
-#endif /* __VISUAL_H__ */
diff --git a/utils/vms-gtod.c b/utils/vms-gtod.c
deleted file mode 100644 (file)
index 7b1df5a..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *     UNIX-style Time Functions, by pmoreau@cena.dgac.fr <Patrick MOREAU>
- *      (picked up from XVMSUTILS unix emulation routines for VMS by
- *       Trevor Taylor, Patrick Mahans and Martin P.J. Zinser)
- *
- * 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 <stdio.h>
-#include <signal.h>
-#include <time.h>
-#include "vms-gtod.h"
-
-/*
- *     gettimeofday(2) - Returns the current time
- */
-
-int gettimeofday(tv)
-struct timeval  *tv;
-{
-    timeb_t tmp_time;
-    ftime(&tmp_time);
-    tv->tv_sec  = tmp_time.time;
-    tv->tv_usec = tmp_time.millitm * 1000;
-    return (0);
-}
diff --git a/utils/vms-gtod.h b/utils/vms-gtod.h
deleted file mode 100644 (file)
index ffd6586..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*     @(#)time.h 2.9 87/01/17 SMI; from UCB 7.1 6/4/86        */
-
-/*
-       Definitions of various structures used on UNIX for
-       time-related syscalls.
-*/
-
-/*
- * Copyright (c) 1982, 1986 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
- */
-
-#ifndef _VMS_GTOD_
-#define _VMS_GTOD_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Structure returned by gettimeofday(2) system call,
- * and used in other calls.
- */
-#ifndef __DECC
-struct timeval
-{
-       long    tv_sec;         /* seconds */
-       long    tv_usec;        /* and microseconds */
-};
-#else
-#if __DECC_VER < 50200000
-struct timeval
-{
-       long    tv_sec;         /* seconds */
-       long    tv_usec;        /* and microseconds */
-};
-#endif /* __DECC_VER */
-#endif /* __DECC */
-
-/*
- * Operations on timevals.
- *
- * NB: timercmp does not work for >= or <=.
- */
-#define        timerisset(tvp)         ((tvp)->tv_sec || (tvp)->tv_usec)
-#define        timercmp(tvp, uvp, cmp) \
-       ((tvp)->tv_sec cmp (uvp)->tv_sec || \
-        (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
-#define        timerclear(tvp)         (tvp)->tv_sec = (tvp)->tv_usec = 0
-
-/*
- * Names of the interval timers, and structure
- * defining a timer setting.
- */
-#define        ITIMER_REAL     0
-#define        ITIMER_VIRTUAL  1
-#define        ITIMER_PROF     2
-
-#ifndef __DECC
-struct itimerval
-{
-       struct  timeval it_interval;    /* timer interval */
-       struct  timeval it_value;       /* current value */
-};
-#else
-#if __DECC_VER < 50200000
-struct itimerval
-{
-       struct  timeval it_interval;    /* timer interval */
-       struct  timeval it_value;       /* current value */
-};
-#endif /* __DECC_VER */
-#endif /* __DECC */
-
-#ifndef KERNEL
-#include <time.h>
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*!_VMS_GTOD_*/
-
diff --git a/utils/vms-strdup.c b/utils/vms-strdup.c
deleted file mode 100644 (file)
index 1afc257..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * strdup.c
- *
- * Simple version of strdup for machines without it (ie DEC Ultrix 4.2)
- * Apparently VMS only got strdup in 1995 (v5.2...)
- *
- * By David Chatterton
- * 29 July 1993
- *
- * You can do anything you like to this... :)
- * I've stolen it from xpilot and added it to the xvmstuils MPJZ ;-)
- */
-
-#if (__VMS_VER < 70000000)
-#include <stdlib.h>
-#include <string.h>
-
-char* strdup (const char* s1)
-{
-       char* s2;
-       if (s2 = (char*)malloc(strlen(s1)+1))
-               strcpy(s2,s1);
-       return s2;
-}
-#endif
diff --git a/utils/vroot.h b/utils/vroot.h
deleted file mode 100644 (file)
index ba3e5d2..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*****************************************************************************/
-/**                   Copyright 1991 by Andreas Stolcke                     **/
-/**               Copyright 1990 by Solbourne Computer Inc.                 **/
-/**                          Longmont, Colorado                             **/
-/**                                                                         **/
-/**                           All Rights Reserved                           **/
-/**                                                                         **/
-/**    Permission to use, copy, modify, and distribute this software and    **/
-/**    its documentation  for  any  purpose  and  without  fee is hereby    **/
-/**    granted, provided that the above copyright notice appear  in  all    **/
-/**    copies and that both  that  copyright  notice  and  this  permis-    **/
-/**    sion  notice appear in supporting  documentation,  and  that  the    **/
-/**    name of Solbourne not be used in advertising                         **/
-/**    in publicity pertaining to distribution of the  software  without    **/
-/**    specific, written prior permission.                                  **/
-/**                                                                         **/
-/**    ANDREAS STOLCKE AND SOLBOURNE COMPUTER INC. DISCLAIMS ALL WARRANTIES **/
-/**    WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF    **/
-/**    MERCHANTABILITY  AND  FITNESS,  IN  NO  EVENT SHALL ANDREAS STOLCKE  **/
-/**    OR SOLBOURNE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL    **/
-/**    DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA   **/
-/**    OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER    **/
-/**    TORTIOUS ACTION, ARISING OUT OF OR IN  CONNECTION  WITH  THE  USE    **/
-/**    OR PERFORMANCE OF THIS SOFTWARE.                                     **/
-/*****************************************************************************/
-/*
- * vroot.h -- Virtual Root Window handling header file
- *
- * This header file redefines the X11 macros RootWindow and DefaultRootWindow,
- * making them look for a virtual root window as provided by certain `virtual'
- * window managers like swm and tvtwm. If none is found, the ordinary root
- * window is returned, thus retaining backward compatibility with standard
- * window managers.
- * The function implementing the virtual root lookup remembers the result of
- * its last invocation to avoid overhead in the case of repeated calls
- * on the same display and screen arguments. 
- * The lookup code itself is taken from Tom LaStrange's ssetroot program.
- *
- * Most simple root window changing X programs can be converted to using
- * virtual roots by just including
- *
- * #include <X11/vroot.h>
- *
- * after all the X11 header files.  It has been tested on such popular
- * X clients as xphoon, xfroot, xloadimage, and xaqua.
- * It also works with the core clients xprop, xwininfo, xwd, and editres
- * (and is necessary to get those clients working under tvtwm).
- * It does NOT work with xsetroot; get the xsetroot replacement included in
- * the tvtwm distribution instead.
- *
- * Andreas Stolcke <stolcke@ICSI.Berkeley.EDU>, 9/7/90
- * - replaced all NULL's with properly cast 0's, 5/6/91
- * - free children list (suggested by Mark Martin <mmm@cetia.fr>), 5/16/91
- * - include X11/Xlib.h and support RootWindowOfScreen, too 9/17/91
- */
-
-#ifndef _VROOT_H_
-#define _VROOT_H_
-
-#if !defined(lint) && !defined(SABER)
-static const char vroot_rcsid[] = "#Id: vroot.h,v 1.4 1991/09/30 19:23:16 stolcke Exp stolcke #";
-#endif
-
-#include <X11/X.h>
-#include <X11/Xatom.h>
-#include <X11/Xlib.h>
-
-static Window
-#ifdef __STDC__ /* ANSIfication added by jwz, to avoid superfluous warnings. */
-VirtualRootWindowOfScreen(Screen *screen)
-#else /* !__STDC__ */
-VirtualRootWindowOfScreen(screen) Screen *screen;
-#endif /* !__STDC__ */
-{
-       static Screen *save_screen = (Screen *)0;
-       static Window root = (Window)0;
-
-       if (screen != save_screen) {
-               Display *dpy = DisplayOfScreen(screen);
-               Atom __SWM_VROOT = None;
-               int i;
-               Window rootReturn, parentReturn, *children;
-               unsigned int numChildren;
-
-               root = RootWindowOfScreen(screen);
-
-               /* go look for a virtual root */
-               __SWM_VROOT = XInternAtom(dpy, "__SWM_VROOT", False);
-               if (XQueryTree(dpy, root, &rootReturn, &parentReturn,
-                                &children, &numChildren)) {
-                       for (i = 0; i < numChildren; i++) {
-                               Atom actual_type;
-                               int actual_format;
-                               unsigned long nitems, bytesafter;
-                               Window *newRoot = (Window *)0;
-
-                               if (XGetWindowProperty(dpy, children[i],
-                                       __SWM_VROOT, 0, 1, False, XA_WINDOW,
-                                       &actual_type, &actual_format,
-                                       &nitems, &bytesafter,
-                                       (unsigned char **) &newRoot) == Success
-                                   && newRoot) {
-                                   root = *newRoot;
-                                   break;
-                               }
-                       }
-                       if (children)
-                               XFree((char *)children);
-               }
-
-               save_screen = screen;
-       }
-
-       return root;
-}
-
-#undef RootWindowOfScreen
-#define RootWindowOfScreen(s) VirtualRootWindowOfScreen(s)
-
-#undef RootWindow
-#define RootWindow(dpy,screen) VirtualRootWindowOfScreen(ScreenOfDisplay(dpy,screen))
-
-#undef DefaultRootWindow
-#define DefaultRootWindow(dpy) VirtualRootWindowOfScreen(DefaultScreenOfDisplay(dpy))
-
-#endif /* _VROOT_H_ */
diff --git a/utils/xdbe.c b/utils/xdbe.c
deleted file mode 100644 (file)
index af0ba3a..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* xscreensaver, Copyright (c) 1998, 1999 by 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.
- */
-
-/* The XDBE (Double Buffering) extension is pretty tricky to use, since you
-   can get X errors at inconvenient times during initialization.  This file
-   contains a utility routine to make it easier to deal with.
- */
-
-#include "utils.h"
-#include "xdbe.h"
-#include "resources.h"         /* for get_string_resource() */
-
-/* #define DEBUG */
-
-#ifdef DEBUG
-# include <X11/Xmu/Error.h>
-#endif
-
-extern char *progname;
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION    /* whole file */
-
-static Bool xdbe_got_x_error = False;
-static int
-xdbe_ehandler (Display *dpy, XErrorEvent *error)
-{
-  xdbe_got_x_error = True;
-
-#ifdef DEBUG
-  fprintf (stderr, "\n%s: ignoring X error from DOUBLE-BUFFER:\n", progname);
-  XmuPrintDefaultErrorMessage (dpy, error, stderr);
-  fprintf (stderr, "\n");
-#endif
-
-  return 0;
-}
-
-
-XdbeBackBuffer 
-xdbe_get_backbuffer (Display *dpy, Window window,
-                     XdbeSwapAction action)
-{
-  XdbeBackBuffer b;
-  XErrorHandler old_handler;
-  int maj, min;
-
-  if (!get_boolean_resource("useDBE", "Boolean"))
-    return 0;
-
-  if (!XdbeQueryExtension (dpy, &maj, &min))
-    return 0;
-
-  XSync (dpy, False);
-  xdbe_got_x_error = False;
-  old_handler = XSetErrorHandler (xdbe_ehandler);
-  b = XdbeAllocateBackBufferName(dpy, window, XdbeUndefined);
-  XSync (dpy, False);
-  XSetErrorHandler (old_handler);
-
-  if (xdbe_got_x_error)
-    return 0;
-
-  return b;
-}
-
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
diff --git a/utils/xdbe.h b/utils/xdbe.h
deleted file mode 100644 (file)
index 26f2de8..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* xscreensaver, Copyright (c) 1998, 1999 by 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.
- */
-
-/* The XDBE (Double Buffering) extension is pretty tricky to use, since you
-   can get X errors at inconvenient times during initialization.  This file
-   contains a utility routine to make it easier to deal with.
- */
-
-#ifndef __XSCREENSAVER_XDBE_H__
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
-
-# include <X11/extensions/Xdbe.h>
-
-extern XdbeBackBuffer xdbe_get_backbuffer (Display *, Window, XdbeSwapAction);
-
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-#endif /* __XSCREENSAVER_XDBE_H__ */
diff --git a/utils/xmu.c b/utils/xmu.c
deleted file mode 100644 (file)
index 6cd6f46..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-/* This file contains compatibility routines for systems without Xmu.
- * You would be better served by installing Xmu on your machine or
- * yelling at your vendor to ship it.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifndef HAVE_XMU
-/*
- * Copyright 1989 Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.  M.I.T. makes no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- *
- * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "xmu.h"
-
-#ifndef NEED_EVENTS
-# define NEED_EVENTS           /* to make Xproto.h define xEvent */
-#endif
-#ifndef VMS
-# include <X11/Xproto.h>       /* for xEvent (used by Xlibint.h) */
-# include <X11/Xlibint.h>      /* for _XExtension */
-#else /* VMS */
-# include <X11/Xlib.h>
-#endif /* VMS */
-#include <X11/Intrinsic.h>     /* for XtSpecificationRelease */
-
-/*
- * XmuPrintDefaultErrorMessage - print a nice error that looks like the usual 
- * message.  Returns 1 if the caller should consider exitting else 0.
- */
-int XmuPrintDefaultErrorMessage (Display *dpy, XErrorEvent *event, FILE *fp)
-{
-    char buffer[BUFSIZ];
-    char mesg[BUFSIZ];
-    char number[32];
-    char *mtype = "XlibMessage";
-    _XExtension *ext = (_XExtension *)NULL;
-    XGetErrorText(dpy, event->error_code, buffer, BUFSIZ);
-    XGetErrorDatabaseText(dpy, mtype, "XError", "X Error", mesg, BUFSIZ);
-    (void) fprintf(fp, "%s:  %s\n  ", mesg, buffer);
-    XGetErrorDatabaseText(dpy, mtype, "MajorCode", "Request Major code %d", 
-       mesg, BUFSIZ);
-    (void) fprintf(fp, mesg, event->request_code);
-    if (event->request_code < 128) {
-       sprintf(number, "%d", event->request_code);
-       XGetErrorDatabaseText(dpy, "XRequest", number, "", buffer, BUFSIZ);
-    } else {
-       /* XXX this is non-portable */
-       for (ext = dpy->ext_procs;
-            ext && (ext->codes.major_opcode != event->request_code);
-            ext = ext->next)
-         ;
-       if (ext)
-           strcpy(buffer, ext->name);
-       else
-           buffer[0] = '\0';
-    }
-    (void) fprintf(fp, " (%s)", buffer);
-    fputs("\n  ", fp);
-#if (XtSpecificationRelease >= 5)
-    if (event->request_code >= 128) {
-       XGetErrorDatabaseText(dpy, mtype, "MinorCode", "Request Minor code %d",
-                             mesg, BUFSIZ);
-       (void) fprintf(fp, mesg, event->minor_code);
-       if (ext) {
-           sprintf(mesg, "%s.%d", ext->name, event->minor_code);
-           XGetErrorDatabaseText(dpy, "XRequest", mesg, "", buffer, BUFSIZ);
-           (void) fprintf(fp, " (%s)", buffer);
-       }
-       fputs("\n  ", fp);
-    }
-    if (event->error_code >= 128) {
-       /* let extensions try to print the values */
-       /* XXX this is non-portable code */
-       for (ext = dpy->ext_procs; ext; ext = ext->next) {
-           if (ext->error_values)
-               (*ext->error_values)(dpy, event, fp);
-       }
-       /* the rest is a fallback, providing a simple default */
-       /* kludge, try to find the extension that caused it */
-       buffer[0] = '\0';
-       for (ext = dpy->ext_procs; ext; ext = ext->next) {
-           if (ext->error_string) 
-               (*ext->error_string)(dpy, event->error_code, &ext->codes,
-                                    buffer, BUFSIZ);
-           if (buffer[0])
-               break;
-       }    
-       if (buffer[0])
-           sprintf(buffer, "%s.%d", ext->name,
-                   event->error_code - ext->codes.first_error);
-       else
-           strcpy(buffer, "Value");
-       XGetErrorDatabaseText(dpy, mtype, buffer, "", mesg, BUFSIZ);
-       if (*mesg) {
-           (void) fprintf(fp, mesg, event->resourceid);
-           fputs("\n  ", fp);
-       }
-    } else if ((event->error_code == BadWindow) ||
-              (event->error_code == BadPixmap) ||
-              (event->error_code == BadCursor) ||
-              (event->error_code == BadFont) ||
-              (event->error_code == BadDrawable) ||
-              (event->error_code == BadColor) ||
-              (event->error_code == BadGC) ||
-              (event->error_code == BadIDChoice) ||
-              (event->error_code == BadValue) ||
-              (event->error_code == BadAtom)) {
-       if (event->error_code == BadValue)
-           XGetErrorDatabaseText(dpy, mtype, "Value", "Value 0x%x",
-                                 mesg, BUFSIZ);
-       else if (event->error_code == BadAtom)
-           XGetErrorDatabaseText(dpy, mtype, "AtomID", "AtomID 0x%x",
-                                 mesg, BUFSIZ);
-       else
-           XGetErrorDatabaseText(dpy, mtype, "ResourceID", "ResourceID 0x%x",
-                                 mesg, BUFSIZ);
-       (void) fprintf(fp, mesg, event->resourceid);
-       fputs("\n  ", fp);
-    }
-#elif (XtSpecificationRelease == 4)
-    XGetErrorDatabaseText(dpy, mtype, "MinorCode", "Request Minor code %d",
-                         mesg, BUFSIZ);
-    (void) fprintf(fp, mesg, event->minor_code);
-    fputs("\n  ", fp);
-    if (ext) {
-      sprintf(mesg, "%s.%d", ext->name, event->minor_code);
-      XGetErrorDatabaseText(dpy, "XRequest", mesg, "", buffer, BUFSIZ);
-      (void) fprintf(fp, " (%s)", buffer);
-    }
-    XGetErrorDatabaseText(dpy, mtype, "ResourceID", "ResourceID 0x%x",
-                         mesg, BUFSIZ);
-    (void) fprintf(fp, mesg, event->resourceid);
-    fputs("\n  ", fp);
-#else
-ERROR! Unsupported release of X11
-#endif
-    XGetErrorDatabaseText(dpy, mtype, "ErrorSerial", "Error Serial #%d", 
-       mesg, BUFSIZ);
-    (void) fprintf(fp, mesg, event->serial);
-    fputs("\n  ", fp);
-    XGetErrorDatabaseText(dpy, mtype, "CurrentSerial", "Current Serial #%d",
-       mesg, BUFSIZ);
-    (void) fprintf(fp, mesg, NextRequest(dpy)-1);
-    fputs("\n", fp);
-    if (event->error_code == BadImplementation) return 0;
-    return 1;
-}
-
-#else  /* HAVE_XMU */
-
-# ifdef __osf__
-  /* Stupid alpha 3.2 compiler returns a FAILURE exit code if compiling
-     an empty file.  Fake it out with a file-private variable. */
-  static const int digital_unix_compiler_sucks;
-# endif /* __osf__ */
-
-#endif /* HAVE_XMU */
diff --git a/utils/xmu.h b/utils/xmu.h
deleted file mode 100644 (file)
index 48084f7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* This file contains compatibility routines for systems without Xmu.
- * You would be better served by installing Xmu on your machine or
- * yelling at your vendor to ship it.
- */
-
-#ifndef __XMU_H__
-#define __XMU_H__
-
-#include <X11/Xlib.h>
-#include <stdio.h>
-
-int XmuPrintDefaultErrorMessage (Display *dpy, XErrorEvent *event, FILE *fp);
-
-#endif /* __XMU_H__ */
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);
-}
diff --git a/utils/xshm.c b/utils/xshm.c
deleted file mode 100644 (file)
index c9498e5..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-/* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998
- *  by 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.
- */
-
-/* The MIT-SHM (Shared Memory) extension is pretty tricky to use.
-   This file contains the common boiler-plate for creating a shared
-   XImage structure, and for making sure that the shared memory segments
-   get allocated and shut down cleanly.
-
-   This code currently deals only with shared XImages, not with shared Pixmaps.
-   It also doesn't use "completion events", but so far that doesn't seem to
-   be a problem (and I'm not entirely clear on when they would actually be
-   needed, anyway.)
-
-   If you don't have man pages for this extension, see
-   http://www.physik.uni-regensburg.de/~scs22156/sofie-0.2/mit-shm.html
-   or in the R6 sources as "xc/doc/specs/Xext/mit-shm.ms", for example,
-   ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/mit-shm.ms
-
-   (This document seems not to ever remain available on the web in one place
-   for very long; you can search for it by the title, "MIT-SHM -- The MIT
-   Shared Memory Extension".)
-
-   To monitor the system's shared memory segments, run "ipcs -m".
-  */
-
-#include "utils.h"
-
-#ifdef HAVE_XSHM_EXTENSION     /* whole file */
-
-/* #define DEBUG */
-
-#include <errno.h>             /* for perror() */
-#include <X11/Xutil.h>         /* for XDestroyImage() */
-
-#include "xshm.h"
-#include "resources.h"         /* for get_string_resource() */
-
-#ifdef DEBUG
-# include <X11/Xmu/Error.h>
-#endif
-
-extern char *progname;
-
-
-/* The documentation for the XSHM extension implies that if the server
-   supports XSHM but is not the local machine, the XShm calls will return
-   False; but this turns out not to be the case.  Instead, the server
-   throws a BadAccess error.  So, we need to catch X errors around all
-   of our XSHM calls, sigh.
- */
-
-static Bool shm_got_x_error = False;
-XErrorHandler old_handler = 0;
-static int
-shm_ehandler (Display *dpy, XErrorEvent *error)
-{
-  shm_got_x_error = True;
-
-#ifdef DEBUG
-  fprintf (stderr, "\n%s: ignoring X error from XSHM:\n", progname);
-  XmuPrintDefaultErrorMessage (dpy, error, stderr);
-  fprintf (stderr, "\n");
-#endif
-
-  return 0;
-}
-
-
-#define CATCH_X_ERROR(DPY) do {                                \
-  XSync((DPY), False);                                         \
-  shm_got_x_error = False;                             \
-  if (old_handler != shm_ehandler)                     \
-    old_handler = XSetErrorHandler (shm_ehandler);     \
-} while(0)
-
-#define UNCATCH_X_ERROR(DPY) do {                      \
-  XSync((DPY), False);                                         \
-  if (old_handler)                                     \
-    XSetErrorHandler (old_handler);                    \
-    old_handler = 0;                                   \
-} while(0)
-
-
-XImage *
-create_xshm_image (Display *dpy, Visual *visual,
-                  unsigned int depth,
-                  int format, char *data,
-                  XShmSegmentInfo *shm_info,
-                  unsigned int width, unsigned int height)
-{
-  Status status;
-  XImage *image = 0;
-  if (!get_boolean_resource("useSHM", "Boolean"))
-    return 0;
-
-  if (!XShmQueryExtension (dpy))
-    return 0;
-
-  CATCH_X_ERROR(dpy);
-  image = XShmCreateImage(dpy, visual, depth,
-                         format, data, shm_info, width, height);
-  UNCATCH_X_ERROR(dpy);
-  if (shm_got_x_error)
-    return 0;
-
-#ifdef DEBUG
-  fprintf(stderr, "\n%s: XShmCreateImage(... %d, %d)\n", progname,
-         width, height);
-#endif
-
-  shm_info->shmid = shmget(IPC_PRIVATE,
-                          image->bytes_per_line * image->height,
-                          IPC_CREAT | 0777);
-#ifdef DEBUG
-  fprintf(stderr, "%s: shmget(IPC_PRIVATE, %d, IPC_CREAT | 0777) ==> %d\n",
-         progname, image->bytes_per_line * image->height, shm_info->shmid);
-#endif
-
-  if (shm_info->shmid == -1)
-    {
-      char buf[1024];
-      sprintf (buf, "%s: shmget failed", progname);
-      perror(buf);
-      XDestroyImage (image);
-      image = 0;
-      XSync(dpy, False);
-    }
-  else
-    {
-      shm_info->readOnly = False;
-      image->data = shm_info->shmaddr = shmat(shm_info->shmid, 0, 0);
-
-#ifdef DEBUG
-      fprintf(stderr, "%s: shmat(%d, 0, 0) ==> %d\n", progname,
-             shm_info->shmid, (int) image->data);
-#endif
-
-      CATCH_X_ERROR(dpy);
-      status = XShmAttach(dpy, shm_info);
-      UNCATCH_X_ERROR(dpy);
-      if (shm_got_x_error)
-       status = False;
-
-      if (!status)
-       {
-         fprintf (stderr, "%s: XShmAttach failed!\n", progname);
-         XDestroyImage (image);
-         XSync(dpy, False);
-         shmdt (shm_info->shmaddr);
-         image = 0;
-       }
-#ifdef DEBUG
-      else
-        fprintf(stderr, "%s: XShmAttach(dpy, shm_info) ==> True\n", progname);
-#endif
-
-      XSync(dpy, False);
-
-      /* Delete the shared segment right now; the segment won't actually
-        go away until both the client and server have deleted it.  The
-        server will delete it as soon as the client disconnects, so we
-        should delete our side early in case of abnormal termination.
-        (And note that, in the context of xscreensaver, abnormal
-        termination is the rule rather than the exception, so this would
-        leak like a sieve if we didn't do this...)
-
-        #### Are we leaking anyway?  Perhaps because of the window of
-        opportunity between here and the XShmAttach call above, during
-        which we might be killed?  Do we need to establish a signal
-        handler for this case?
-       */
-      shmctl (shm_info->shmid, IPC_RMID, 0);
-
-#ifdef DEBUG
-      fprintf(stderr, "%s: shmctl(%d, IPC_RMID, 0)\n\n", progname,
-             shm_info->shmid);
-#endif
-    }
-
-  return image;
-}
-
-#endif /* HAVE_XSHM_EXTENSION */
diff --git a/utils/xshm.h b/utils/xshm.h
deleted file mode 100644 (file)
index 54e492e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998
- *  by 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.
- */
-
-/* The MIT-SHM (Shared Memory) extension is pretty tricky to use.
-   This file contains the common boiler-plate for creating a shared
-   XImage structure, and for making sure that the shared memory segments
-   get allocated and shut down cleanly.
- */
-
-#ifndef __XSCREENSAVER_XSHM_H__
-
-#ifdef HAVE_XSHM_EXTENSION
-
-# include <sys/ipc.h>
-# include <sys/shm.h>
-# include <X11/extensions/XShm.h>
-
-extern XImage *create_xshm_image (Display *dpy, Visual *visual,
-                                 unsigned int depth,
-                                 int format, char *data,
-                                 XShmSegmentInfo *shm_info,
-                                 unsigned int width, unsigned int height);
-
-#endif /* HAVE_XSHM_EXTENSION */
-
-#endif /* __XSCREENSAVER_XSHM_H__ */
diff --git a/utils/yarandom.c b/utils/yarandom.c
deleted file mode 100644 (file)
index 63958e2..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/* yarandom.c -- Yet Another Random Number Generator.
-
-   The unportable mess that is rand(), random(), drand48() and friends led me
-   to ask Phil Karlton <karlton@netscape.com> what the Right Thing to Do was.
-   He responded with this.  It is non-cryptographically secure, reasonably
-   random (more so than anything that is in any C library), and very fast.
-
-   I don't understand how it works at all, but he says "look at Knuth,
-   Vol. 2 (original edition), page 26, Algorithm A.  In this case n=55,
-   k=20 and m=2^32."
-
-   So there you have it.
-
-   ---------------------------
-   Note: xlockmore 4.03a10 uses this very simple RNG:
-
-       if ((seed = seed % 44488 * 48271 - seed / 44488 * 3399) < 0)
-         seed += 2147483647;
-       return seed-1;
-
-   of which it says
-
-       ``Dr. Park's algorithm published in the Oct. '88 ACM  "Random Number
-         Generators: Good Ones Are Hard To Find" His version available at
-         ftp://cs.wm.edu/pub/rngs.tar Present form by many authors.''
-
-   Karlton says: ``the usual problem with that kind of RNG turns out to
-   be unexepected short cycles for some word lengths.''
-
-   Karlton's RNG is faster, since it does three adds and two stores, while the
-   xlockmore RNG does two multiplies, two divides, three adds, and one store.
-
-   Compiler optimizations make a big difference here:
-       gcc -O:     difference is 1.2x.
-       gcc -O2:    difference is 1.4x.
-       gcc -O3:    difference is 1.5x.
-       SGI cc -O:  difference is 2.4x.
-       SGI cc -O2: difference is 2.4x.
-       SGI cc -O3: difference is 5.1x.
-   Irix 6.2; Indy r5k; SGI cc version 6; gcc version 2.7.2.1.
- */
-
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>  /* for getpid() */
-#endif
-#include <sys/time.h> /* for gettimeofday() */
-
-#include "yarandom.h"
-
-
-/* The following 'random' numbers are taken from CRC, 18th Edition, page 622.
-   Each array element was taken from the corresponding line in the table,
-   except that a[0] was from line 100. 8s and 9s in the table were simply
-   skipped. The high order digit was taken mod 4.
- */
-#define VectorSize 55
-static unsigned int a[VectorSize] = {
- 035340171546, 010401501101, 022364657325, 024130436022, 002167303062, /*  5 */
- 037570375137, 037210607110, 016272055420, 023011770546, 017143426366, /* 10 */
- 014753657433, 021657231332, 023553406142, 004236526362, 010365611275, /* 14 */
- 007117336710, 011051276551, 002362132524, 001011540233, 012162531646, /* 20 */
- 007056762337, 006631245521, 014164542224, 032633236305, 023342700176, /* 25 */
- 002433062234, 015257225043, 026762051606, 000742573230, 005366042132, /* 30 */
- 012126416411, 000520471171, 000725646277, 020116577576, 025765742604, /* 35 */
- 007633473735, 015674255275, 017555634041, 006503154145, 021576344247, /* 40 */
- 014577627653, 002707523333, 034146376720, 030060227734, 013765414060, /* 45 */
- 036072251540, 007255221037, 024364674123, 006200353166, 010126373326, /* 50 */
- 015664104320, 016401041535, 016215305520, 033115351014, 017411670323  /* 55 */
-};
-
-static int i1, i2;
-
-unsigned int
-ya_random (void)
-{
-  register int ret = a[i1] + a[i2];
-  a[i1] = ret;
-  if (++i1 >= VectorSize) i1 = 0;
-  if (++i2 >= VectorSize) i2 = 0;
-  return ret;
-}
-
-void
-ya_rand_init(unsigned int seed)
-{
-  int i;
-  if (seed == 0)
-    {
-      struct timeval tp;
-#ifdef GETTIMEOFDAY_TWO_ARGS
-      struct timezone tzp;
-      gettimeofday(&tp, &tzp);
-#else
-      gettimeofday(&tp);
-#endif
-      /* ignore overflow */
-      seed = (999*tp.tv_sec) + (1001*tp.tv_usec) + (1003 * getpid());
-    }
-
-  a[0] += seed;
-  for (i = 1; i < VectorSize; i++)
-    {
-      seed = a[i-1]*1001 + seed*999;
-      a[i] += seed;
-    }
-
-  i1 = a[0] % VectorSize;
-  i2 = (i1 + 024) % VectorSize;
-}
diff --git a/utils/yarandom.h b/utils/yarandom.h
deleted file mode 100644 (file)
index abea226..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* xscreensaver, Copyright (c) 1997, 1998 by 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.
- */
-
-#ifndef __YARANDOM_H__
-#define __YARANDOM_H__
-
-#undef random
-#undef rand
-#undef drand48
-#undef srandom
-#undef srand
-#undef srand48
-#undef frand
-#undef RAND_MAX
-
-#ifdef VMS
-# include "vms-gtod.h"
-#endif
-
-#define random()   ya_random()
-#define srandom(i) ya_rand_init(0)
-#define RAND_MAX   0x7FFFFFFF
-
-extern unsigned int ya_random (void);
-extern void ya_rand_init (unsigned int);
-
-
-#if defined (__GNUC__) && (__GNUC__ >= 2)
- /* Implement frand using GCC's statement-expression extension. */
-
-# define frand(f)                                                      \
-  ({ double tmp = (((double) random()) /                               \
-                  (((double) ((unsigned int)~0)) / ((double) (f))));   \
-     tmp < 0 ? (-tmp) : tmp; })
-
-#else /* not GCC2 - implement frand using a global variable.*/
-
-static double _frand_tmp_;
-# define frand(f)                                                      \
-  (_frand_tmp_ = (((double) random()) /                                \
-                 (((double) ((unsigned int)~0)) / ((double) (f)))),    \
-   _frand_tmp_ < 0 ? (-_frand_tmp_) : _frand_tmp_)
-
-#endif /* not GCC2 */
-
-#endif /* __YARANDOM_H__ */
diff --git a/xscreensaver.lsm b/xscreensaver.lsm
deleted file mode 100644 (file)
index c2ba77d..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-Begin3
-Title:          xscreensaver
-Version:        3.12
-Entered-date:   10MAY99
-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.
-                Comes with more than 90 display modes.
-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/
-                1094K xscreensaver-3.12.tar.gz
-                32K  xscreensaver.README
-                1K   xscreensaver.lsm
-Alternate-site: sunsite.unc.edu /pub/Linux/X11/screensavers/
-                1094K xscreensaver-3.12.tar.gz
-                32K  xscreensaver.README
-                1K   xscreensaver.lsm
-Alternate-site: ftp.x.org /contrib/applications/
-                1094K xscreensaver-3.12.tar.gz
-                32K  xscreensaver.README
-                1K   xscreensaver.lsm
-Platforms:      Linux, Irix, SunOS, Solaris, HPUX, AIX, FreeBSD, NetBSD,
-                BSDI, SCO, OSF1, Ultrix, VMS.
-                Requires X11 and ANSI C.
-                Works with Motif or Athena.
-                Shadow passwords, Kerberos, and OpenGL optionally supported.
-                Multi-headed machines supported.
-Copying-policy: BSD
-End
diff --git a/xscreensaver.lsm.sh b/xscreensaver.lsm.sh
deleted file mode 100755 (executable)
index fbba335..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/sh
-#
-# generate an lsm file (http://sunsite.unc.edu/pub/Linux/Incoming/LSM-TEMPLATE)
-# that is more-or-less correct for the current version of xscreensaver.
-# jwz, 18-Jan-98
-
-size() {
-    ls -l $* |
-    tail -1 |
-    sed 's/.* \([0-9][0-9][0-9][0-9][0-9]*\) .*/\1/' |
-    sed 's/[0-9][0-9][0-9]$/K/'
-}
-
-TAR_SIZE=`size xscreensaver-*.gz`
-README_SIZE=`size README`
-#LSM_SIZE=`size xscreensaver.lsm`
-LSM_SIZE="1K"
-
-VERSION=`sed -n 's/.*\([0-9][0-9]*\.[0-9]*\).*/\1/p' < utils/version.h`
-DATE=`date '+%d%b%y' | tr a-z A-Z`
-
-#URL=`sed -n 's/\(http:[^ ]*\)/\1/p' < README | sed 's/[^a-zA-Z/]$//'`
-
-echo "Begin3
-Title:          xscreensaver
-Version:        $VERSION
-Entered-date:   $DATE
-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.
-                Comes with more than 90 display modes.
-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/
-                $TAR_SIZE xscreensaver-$VERSION.tar.gz
-                $README_SIZE  xscreensaver.README
-                $LSM_SIZE   xscreensaver.lsm
-Alternate-site: sunsite.unc.edu /pub/Linux/X11/screensavers/
-                $TAR_SIZE xscreensaver-$VERSION.tar.gz
-                $README_SIZE  xscreensaver.README
-                $LSM_SIZE   xscreensaver.lsm
-Alternate-site: ftp.x.org /contrib/applications/
-                $TAR_SIZE xscreensaver-$VERSION.tar.gz
-                $README_SIZE  xscreensaver.README
-                $LSM_SIZE   xscreensaver.lsm
-Platforms:      Linux, Irix, SunOS, Solaris, HPUX, AIX, FreeBSD, NetBSD,
-                BSDI, SCO, OSF1, Ultrix, VMS.
-                Requires X11 and ANSI C.
-                Works with Motif or Athena.
-                Shadow passwords, Kerberos, and OpenGL optionally supported.
-                Multi-headed machines supported.
-Copying-policy: BSD
-End"
-
-exit 0
diff --git a/xscreensaver.spec b/xscreensaver.spec
deleted file mode 100644 (file)
index 610bda5..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-Name: xscreensaver
-Summary: X screen saver and locker
-Vendor: Jamie Zawinski <jwz@jwz.org>
-Version: 3.12
-Release: 1
-URL: http://www.jwz.org/xscreensaver/
-Source: xscreensaver-%{version}.tar.gz
-Copyright: BSD
-Group: X11/Utilities
-Buildroot: /var/tmp/xscreensaver-root
-
-%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.
-More than 90 display modes are included in this package.
-
-%prep
-
-%setup -q
-
-%build
-
-./configure --prefix=/usr/X11R6 \
-     --enable-subdir=/usr/X11R6/lib/xscreensaver
-make
-
-%install
-
-# This is the only directory that "make install" won't make as needed
-# (since Linux uses /etc/pam.d/* and Solaris uses /etc/pam.conf).
-#
-mkdir -p $RPM_BUILD_ROOT/etc/pam.d
-
-make  prefix=$RPM_BUILD_ROOT/usr/X11R6 \
-      AD_DIR=$RPM_BUILD_ROOT/usr/X11R6/lib/X11/app-defaults \
-     HACKDIR=$RPM_BUILD_ROOT/usr/X11R6/lib/xscreensaver \
-     PAM_DIR=$RPM_BUILD_ROOT/etc/pam.d \
-     install-strip
-
-# This line is redundant, except that it causes the "xscreensaver"
-# executable to be installed unstripped (while all others are stripped.)
-# You should install it this way so that jwz gets useful bug reports.
-#
-install -m 4755 driver/xscreensaver $RPM_BUILD_ROOT/usr/X11R6/bin
-
-# Even if we weren't compiled with PAM support, make sure to include
-# the PAM module file in the RPM anyway, just in case.
-#
-( cd driver; make PAM_DIR=$RPM_BUILD_ROOT/etc/pam.d install-pam )
-
-# This is for wmconfig, a tool that generates init files for window managers.
-#
-mkdir -p $RPM_BUILD_ROOT/etc/X11/wmconfig
-cat > $RPM_BUILD_ROOT/etc/X11/wmconfig/xscreensaver <<EOF
-xscreensaver name "xscreensaver (1min timeout)"
-xscreensaver description "xscreensaver"
-xscreensaver group "Amusements/Screen Savers"
-xscreensaver exec "xscreensaver -timeout 1 -cycle 1 &"
-EOF
-
-# This is for the GNOME desktop:
-#
-mkdir -p "$RPM_BUILD_ROOT/usr/share/apps/Amusements/Screen Savers"
-cat > "$RPM_BUILD_ROOT/usr/share/apps/Amusements/Screen Savers/xscreensaver.desktop" <<EOF
-[Desktop Entry]
-Name=xscreensaver (1min timeout)
-Description=xscreensaver
-Exec=xscreensaver -timeout 1 -cycle 1
-EOF
-
-# Make sure all files are readable by all, and writable only by owner.
-#
-chmod -R a+r,u+w,og-w $RPM_BUILD_ROOT
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-
-%doc                README README.debugging
-                    /usr/X11R6/bin/*
-                    /usr/X11R6/lib/xscreensaver/*
-%config             /usr/X11R6/lib/X11/app-defaults/*
-                    /usr/X11R6/man/man1/*
-                    /etc/pam.d/*
-%config(missingok)  /etc/X11/wmconfig/*
-%config(missingok)  "/usr/share/apps/Amusements/Screen Savers/*"