home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume20 / xboing / part10 < prev    next >
Encoding:
Text File  |  1993-09-03  |  54.0 KB  |  1,241 lines

  1. Newsgroups: comp.sources.x
  2. From: jck@kimba.catt.citri.edu.au (Justin Kibell)
  3. Subject: v20i117:  xboing - a simple blockout type game, Part10/26
  4. Message-ID: <1993Sep3.123254.7383@sparky.sterling.com>
  5. X-Md4-Signature: 72cc1dbc78a5d0111424fcedc4f14aa3
  6. Sender: chris@sparky.sterling.com (Chris Olson)
  7. Organization: Sterling Software
  8. Date: Fri, 3 Sep 1993 12:32:54 GMT
  9. Approved: chris@sterling.com
  10.  
  11. Submitted-by: jck@kimba.catt.citri.edu.au (Justin Kibell)
  12. Posting-number: Volume 20, Issue 117
  13. Archive-name: xboing/part10
  14. Environment: X11, xpm, color
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then feed it
  18. # into a shell via "sh file" or similar.  To overwrite existing files,
  19. # type "sh file -c".
  20. # Contents:  bitmaps/kibell.xpm init.c sounds/evillaugh.au.uue
  21. # Wrapped by chris@sparky on Fri Sep  3 07:14:45 1993
  22. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  23. echo If this archive is complete, you will see the following message:
  24. echo '          "shar: End of archive 10 (of 26)."'
  25. if test -f 'bitmaps/kibell.xpm' -a "${1}" != "-c" ; then 
  26.   echo shar: Will not clobber existing file \"'bitmaps/kibell.xpm'\"
  27. else
  28.   echo shar: Extracting \"'bitmaps/kibell.xpm'\" \(10951 characters\)
  29.   sed "s/^X//" >'bitmaps/kibell.xpm' <<'END_OF_FILE'
  30. X/* XPM */
  31. Xstatic char * kibell_xpm[] = {
  32. X"260 40 16 1",
  33. X"     s None    c None",
  34. X".    c #F0F0F0F0F0F0",
  35. X"X    c #E0E0E0E0F0F0",
  36. X"o    c #D0D0D0D0F0F0",
  37. X"O    c #C0C0C0C0F0F0",
  38. X"+    c #B0B0B0B0F0F0",
  39. X"@    c #A0A0A0A0F0F0",
  40. X"#    c #90909090F0F0",
  41. X"$    c #80808080F0F0",
  42. X"%    c #60607070F0F0",
  43. X"&    c #50506060F0F0",
  44. X"*    c #40405050F0F0",
  45. X"=    c #30304040F0F0",
  46. X"-    c #20202020F0F0",
  47. X";    c #10101010F0F0",
  48. X":    c #00000000F0F0",
  49. X"                       ...                      ..                              ...                                   ............                                        ............                                ...                              ...          ",
  50. X"                      XXXXXXX                 XXXXX                            XXXXXX                          XXXXXXXXXXXXXXXXXXXXXXX                            XXXXXXXXXXXXXXXXXXXXXXX                            XXXXXX                           XXXXXX        ",
  51. X"                     XXXXXXXXX               XXXXXXX                          XXXXXXXX                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                       XXXXXXXXXXXXXXXXXXXXXXXXXXX                          XXXXXXXX                         XXXXXXXX       ",
  52. X"                    XXXXXXXXXX              XXXXXXXX                         XXoXXXoXXX                  XXoXXXoXXXoXXXoXXXoXXXoXXXoXXXoX                     XoXXXoXXXoXXXoXXXoXXXoXXXoXXX                        oXXXoXXXo                        XXXoXXXoX       ",
  53. X"                    ooooooooo             oooooooooo                         ooooooooo                   ooooooooooooooooooooooooooooooooo                    ooooooooooooooooooooooooooooo                       oooooooooo                       oooooooooo       ",
  54. X"                   oooooooooo            oooooooooo                         oooooooooo                   oooooooooooooooooooooooooooooooooo                    oooooooooooooo                                     oooooooooo                       oooooooooo       ",
  55. X"                  OoOoOoOoOo            OoOoOoOoOo                         oOoOoOoOoO                           OoOoOoOoOo        OoOoOoOoO                      oOoOoOoOoOo                                     oOoOoOoOoO                       OoOoOoOoOo        ",
  56. X"                  OOOOOOOOOO          OOOOOOOOOOO                          OOOOOOOOO                           OOOOOOOOO           OOOOOOOO                      OOOOOOOOOO                                     OOOOOOOOOO                       OOOOOOOOOO         ",
  57. X"                 O+O+O+O+O+          O+O+O+O+O+O                          +O+O+O+O+O                           O+O+O+O+            O+O+O+O+                     +O+O+O+O+O                                      +O+O+O+O+O                       O+O+O+O+O+         ",
  58. X"                 ++++++++++         +++++++++++                          ++++++++++                           +++++++++           +++++++++                     +++++++++                                      ++++++++++                       ++++++++++          ",
  59. X"                ++++++++++        ++++++++++++                           +++++++++                           +++++++++           ++++++++++                    +++++++++                                      ++++++++++                       ++++++++++           ",
  60. X"               @+@+@+@+@+@       @+@+@+@+@+@                            @@@@@@@@@@                           @@@@@@@@@          @@@@@@@@@@                    @@@@@@@@@                                      @@@@@@@@@@@                      @@@@@@@@@@@           ",
  61. X"               @@@@@@@@@@      @@@@@@@@@@@@                             @@@@@@@@@                           @@@@@@@@@          @@@@@@@@@@@                   @@@@@@@@@@                                      @@@@@@@@@@                       @@@@@@@@@@            ",
  62. X"              @@@@@@@@@@@    @@@@@@@@@@@@@                             @@#@@@#@@                           @@#@@@#@@@        #@@@#@@@#@@@                   @#@@@#@@@#                                      @#@@@#@@@#                       #@@@#@@@#@             ",
  63. X"             ##@###@###@#  @###@###@###@                              ##########                           #########       #############                   ###########                                     ##########                       ##########              ",
  64. X"             ##########################                               #########                           ##########     #############                    ############                                     ##########                       ##########              ",
  65. X"            $#$#$#$#$#$#$#$#$#$#$#$#$                                #$#$#$#$#                            $#$#$#$#$#$#$#$#$#$#$#$#$#$                     $#$#$#$#$#$#$#$#$#$#$#                          $#$#$#$#$#                       #$#$#$#$#$               ",
  66. X"            $$$$$$$$$$$$$$$$$$$$$$$                                 $$$$$$$$$$                           $$$$$$$$$$$$$$$$$$$$$$$$$$                      $$$$$$$$$$$$$$$$$$$$$$$$                        $$$$$$$$$$                       $$$$$$$$$$                ",
  67. X"           $$$$$$$$$$$$$$$$$$$$$$                                  $%$%$%$%$%                           %$%$%$%$%$%$%$%$%$%$%$%$%$                      %$%$%$%$%$%$%$%$%$%$%$%$%                       %$%$%$%$%$%                      $%$%$%$%$%$                ",
  68. X"          %%%%%%%%%%%%%%%%%%%%%                                    %%%%%%%%%                            %%%%%%%%%%%%%%%%%%%%%%%                         %%%%%%%%%%%%%%%%%%%%%%%%%                       %%%%%%%%%%                       %%%%%%%%%%                 ",
  69. X"         %%%%%%%%%%%%%%%%%%%%%                                    %%%%%%%%%%                           %%%%%%%%%%%%%%%%%%%%%%%%%%                      %%%%%%%%%%%%%%%%%%%%%%%%                        %%%%%%%%%%                       %%%%%%%%%%                  ",
  70. X"         %%%%%%%%%%%%%%%%%%%%%                                    %%%%%%%%%                           %%%%%%%%%%%%%%%%%%%%%%%%%%%%                    %%%%%%%%%%%%%                                    %%%%%%%%%%                       %%%%%%%%%%                  ",
  71. X"        %%&%%%%%%%    %%%%&%%%                                   %&%&%&%&%&                           &%&%&%&%&%&%       %&%&%&%&%&                   &%&%&%&%&%&                                     &%&%&%&%&%                       %&%&%&%&%&                   ",
  72. X"       &&&&&&&&&&&    &&&&&&&&&                                 &&&&&&&&&&                           &&&&&&&&&&&&         &&&&&&&&&                  &&&&&&&&&&&                                     &&&&&&&&&&                       &&&&&&&&&&                    ",
  73. X"       &&&&&&&&&&     &&&&&&&&&                                 &&&&&&&&&&                          &&&&&&&&&&&&          &&&&&&&&&                  &&&&&&&&&&                                      &&&&&&&&&&                       &&&&&&&&&&                    ",
  74. X"      &&&*&&&*&&&      &&*&&&*&&                               **********                           ***********           *********                 ***********                                     **********                       **********                     ",
  75. X"     ***********       *********                               **********                          ***********           **********                 **********                                      **********                       **********                     ",
  76. X"     **********        *********                              *=*=*=*=*=                          *=*=*=*=*=*           *=*=*=*=*=                 =*=*=*=*=*=                                     =*=*=*=*=*                       *=*=*=*=*=                      ",
  77. X"    =*=*=*=*=*=         =*=*=*=*=                            ===========                         ===========           ===========                ===========                                      ==========                       ==========                      ",
  78. X"   ===========          =========                            ==========                          ==========           ===========                 ===========                                     ==========                       ==========                       ",
  79. X"   ===========          ==========                          ==========                          ==========           ===========                  ==========                                      =========                        =========                        ",
  80. X"  ===========            =========                          ==========                         ===========         ============                  ===========                                     ==========             ===       ==========             ===        ",
  81. X" ===========             ==========                        =-=-=-=-=-                         -=-=-=-=-=-=       =-=-=-=-=-=-                    =-=-=-=-=-=          -=-=-=-=                   =-=-=-=-=-       -=-=-=-=-=      -=-=-=-=-=       =-=-=-=-=-       ",
  82. X" ---=---=---              --=---=--                        ----------                         ------------------------------                     -----------------------------                   ---------------------------      ---------------------------       ",
  83. X"-----------               ----------                      ----;-----                         -;-------;-------;-------;----                      -----;-------;-------;-------                    ----;-------;-------;----        ---;-------;-------;-----        ",
  84. X"----------                 ----------                     ;;;;;;;;;;                         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;                         ;;;;;;;;;;;;;;;;;;;;;;;;;;;                     ;;;;;;;;;;;;;;;;;;;;;;;;         ;;;;;;;;;;;;;;;;;;;;;;;;         ",
  85. X";-;;;;;;;                  ;;;;;;-;;;;                    ;;;;;;;;;                          ;;;;;;;;;;;;;;;;;;;;;;;;;;                           ;;;;;;;;;;;;;;;;;;;;;;;;;                        ;;;;;;;;;;;;;;;;;;;;;            ;;;;;;;;;;;;;;;;;;;;;           ",
  86. X" ;;;;;;;;                   ;;;;;;;;;;;                     ;:;;;:;                           ;;;:;;     :;;;:;;;:;;;                              ;;:;;;:;;;:;;;:;;;:                               :;;;:;;;:;;;:;;                  ;;;:;;;:;;;:;;;               ",
  87. X"                             ;:;:;:;:;:                      :::::                              :::        :::::::                                    :::::::::                                         :::::::::                        :::::::::                  ",
  88. X"                              :::::::::                                                                                                                                                                                                                             "};
  89. END_OF_FILE
  90.   if test 10951 -ne `wc -c <'bitmaps/kibell.xpm'`; then
  91.     echo shar: \"'bitmaps/kibell.xpm'\" unpacked with wrong size!
  92.   fi
  93.   # end of 'bitmaps/kibell.xpm'
  94. fi
  95. if test -f 'init.c' -a "${1}" != "-c" ; then 
  96.   echo shar: Will not clobber existing file \"'init.c'\"
  97. else
  98.   echo shar: Extracting \"'init.c'\" \(21321 characters\)
  99.   sed "s/^X//" >'init.c' <<'END_OF_FILE'
  100. X#include "copyright.h"
  101. X
  102. X/*
  103. X *  Include file dependencies:
  104. X */
  105. X
  106. X#include <stdio.h>
  107. X#include <stdlib.h>
  108. X#include <stddef.h>
  109. X#include <sys/time.h>
  110. X#include <X11/Xlib.h>
  111. X#include <X11/Xutil.h>
  112. X#include <X11/Xos.h>
  113. X
  114. X#include "score.h"
  115. X#include "presents.h"
  116. X#include "special.h"
  117. X#include "main.h"
  118. X#include "version.h"
  119. X#include "error.h"
  120. X#include "mess.h"
  121. X#include "ball.h"
  122. X#include "gun.h"
  123. X#include "sfx.h"
  124. X#include "blocks.h"
  125. X#include "level.h"
  126. X#include "bonus.h"
  127. X#include "stage.h"
  128. X#include "paddle.h"
  129. X#include "intro.h"
  130. X#include "inst.h"
  131. X#include "highscore.h"
  132. X#include "keys.h"
  133. X#include "audio.h"
  134. X#include "misc.h"
  135. X
  136. X#include "init.h"
  137. X
  138. X/*
  139. X *  Internal macro definitions:
  140. X */
  141. X
  142. X#define TITLE_FONT     "-adobe-helvetica-bold-r-*-*-24-*-*-*-*-*-*-*"
  143. X#define COPY_FONT   "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
  144. X#define TEXT_FONT      "-adobe-helvetica-medium-r-*-*-18-*-*-*-*-*-*-*"
  145. X
  146. X/*
  147. X *  Internal type declarations:
  148. X */
  149. X
  150. X#if NeedFunctionPrototypes
  151. Xstatic void ParseCommandLine(char **argv, int argc);
  152. Xstatic void InitialiseSettings(void);
  153. Xstatic int compareArgument(char *arg1, char *arg2, int minMatch);
  154. Xstatic void HandleDisplayErrors(char *displayName);
  155. Xstatic void PrintVersion(void);
  156. Xstatic void PrintUsage(void);
  157. Xstatic void PrintHelp(void);
  158. Xstatic void InitialiseGraphics(Display *display, Window window);
  159. Xstatic void InitialiseColourNames(Display *display, Colormap colormap);
  160. Xstatic void InitialiseFonts(Display *display);
  161. Xstatic void ReleaseGraphics(Display *display);
  162. Xstatic void ReleaseFonts(Display *display);
  163. Xstatic void ExitProgramNow(int value);
  164. Xstatic void TurnOnSynchronise(Display *display);
  165. X#else
  166. Xstatic void ExitProgramNow();
  167. Xstatic void ParseCommandLine();
  168. Xstatic void InitialiseSettings();
  169. Xstatic int compareArgument();
  170. Xstatic void HandleDisplayErrors();
  171. Xstatic void PrintVersion();
  172. Xstatic void PrintUsage();
  173. Xstatic void PrintHelp();
  174. Xstatic void InitialiseGraphics();
  175. Xstatic void InitialiseColourNames();
  176. Xstatic void InitialiseFonts();
  177. Xstatic void ReleaseGraphics();
  178. Xstatic void ReleaseFonts();
  179. Xstatic void TurnOnSynchronise();
  180. X#endif
  181. X
  182. X/*
  183. X *  Internal variable declarations:
  184. X */
  185. X
  186. Xint red, tann, yellow, green, white, black, blue, purple;
  187. XGC gc, gcxor, gcand, gcor;
  188. XXFontStruct *titleFont, *copyFont, *textFont;
  189. XColormap     colormap;
  190. Xstatic XVisualInfo    visual_info;
  191. Xstatic unsigned long event_mask;
  192. Xstatic char *displayName = (char *) NULL;
  193. Xstatic int    syncOn;
  194. Xstatic int    grabPointer;
  195. Xint    noSound;
  196. X
  197. X#if NeedFunctionPrototypes
  198. Xstatic void InitialiseGraphics(Display *display, Window window)
  199. X#else
  200. Xstatic void InitialiseGraphics(display, window)
  201. X    Display *display;
  202. X    Window window;
  203. X#endif
  204. X{
  205. X    XGCValues    gcv;
  206. X
  207. X    /* Create a graphics context using copy mode */
  208. X    gcv.function               = GXcopy;
  209. X    gcv.fill_style            = FillTiled;
  210. X    gcv.graphics_exposures    = False;
  211. X    if (!(gc = XCreateGC(display, window, 
  212. X        GCFunction | GCFillStyle | GCGraphicsExposures, &gcv)))
  213. X        ShutDown(display, 1, "Cannot create GXcopy graphics context.");
  214. X
  215. X    /* Create a graphics context using xor mode */
  216. X    gcv.function               = GXxor;
  217. X    gcv.graphics_exposures    = False;
  218. X    if (!(gcxor = XCreateGC(display, window, 
  219. X        GCFunction | GCGraphicsExposures, &gcv)))
  220. X        ShutDown(display, 1, "Cannot create GXxor graphics context.");
  221. X
  222. X    /* Create a graphics context using and mode */
  223. X    gcv.function               = GXand;
  224. X    gcv.graphics_exposures    = False;
  225. X    if (!(gcand = XCreateGC(display, window, 
  226. X        GCFunction | GCGraphicsExposures, &gcv)))
  227. X        ShutDown(display, 1, "Cannot create GXand graphics context.");
  228. X    XSetForeground(display, gcand, 0);
  229. X    XSetBackground(display, gcand, ~0);
  230. X
  231. X    /* Create a graphics context using or mode */
  232. X    gcv.function               = GXor;
  233. X    gcv.graphics_exposures    = False;
  234. X    if (!(gcor = XCreateGC(display, window, 
  235. X        GCFunction | GCGraphicsExposures, &gcv)))
  236. X        ShutDown(display, 1, "Cannot create GXor graphics context.");
  237. X}
  238. X
  239. X#if NeedFunctionPrototypes
  240. Xstatic void InitialiseColourNames(Display *display, Colormap colormap)
  241. X#else
  242. Xstatic void InitialiseColourNames(display, colormap)
  243. X    Display *display;
  244. X    Colormap colormap;
  245. X#endif
  246. X{
  247. X    /* Obtain the colour index of several colours from colourmap */
  248. X    red     = ColourNameToPixel(display, colormap, "red");
  249. X    tann    = ColourNameToPixel(display, colormap, "tan");
  250. X    yellow  = ColourNameToPixel(display, colormap, "yellow");
  251. X    green   = ColourNameToPixel(display, colormap, "green");
  252. X    white   = ColourNameToPixel(display, colormap, "white");
  253. X    black   = ColourNameToPixel(display, colormap, "black");
  254. X    purple  = ColourNameToPixel(display, colormap, "purple");
  255. X    blue    = ColourNameToPixel(display, colormap, "blue");
  256. X}
  257. X
  258. X#if NeedFunctionPrototypes
  259. Xstatic void InitialiseFonts(Display *display)
  260. X#else
  261. Xstatic void InitialiseFonts(display)
  262. X    Display *display;
  263. X#endif
  264. X{
  265. X    /* Create all required font structures */
  266. X
  267. X    /* Font used for titles */
  268. X    if (!(titleFont = XLoadQueryFont(display, TITLE_FONT)))
  269. X    {
  270. X        ErrorMessage("Cannot open the title font. Using fixed.");
  271. X        titleFont = XLoadQueryFont(display, "fixed");
  272. X    }
  273. X
  274. X    /* Very small font used for copyright message etc. */
  275. X    if (!(copyFont = XLoadQueryFont(display, COPY_FONT)))
  276. X    {
  277. X        ErrorMessage("Cannot open the copyright font. Using fixed.");
  278. X        copyFont = XLoadQueryFont(display, "fixed");
  279. X    }
  280. X
  281. X    /* Font used for general text everywhere */
  282. X    if (!(textFont = XLoadQueryFont(display, TEXT_FONT)))
  283. X    {
  284. X        ErrorMessage("Cannot open the text font. Using fixed.");
  285. X        textFont = XLoadQueryFont(display, "fixed");
  286. X    }
  287. X}
  288. X
  289. X#if NeedFunctionPrototypes
  290. Xstatic void ReleaseFonts(Display *display)
  291. X#else
  292. Xstatic void ReleaseFonts(display)
  293. X    Display *display;
  294. X#endif
  295. X{
  296. X    /* Free all the fonts used */
  297. X    if (titleFont)    XFreeFont(display, titleFont);
  298. X    if (copyFont)    XFreeFont(display, copyFont);
  299. X    if (textFont)    XFreeFont(display, textFont);
  300. X}
  301. X
  302. X#if NeedFunctionPrototypes
  303. Xstatic void ExitProgramNow(int value)
  304. X#else
  305. Xstatic void ExitProgramNow(value)
  306. X    int value;
  307. X#endif
  308. X{
  309. X    /* Return to the shell with error code */
  310. X    exit(value);
  311. X}
  312. X
  313. X#if NeedFunctionPrototypes
  314. Xstatic void ReleaseGraphics(Display *display)
  315. X#else
  316. Xstatic void ReleaseGraphics(display)
  317. X    Display *display;
  318. X#endif
  319. X{
  320. X    /* Free the graphics contexts */
  321. X    if (gc)     XFreeGC(display, gc);
  322. X    if (gcxor)     XFreeGC(display, gcxor);
  323. X    if (gcand)     XFreeGC(display, gcand);
  324. X    if (gcor)     XFreeGC(display, gcor);
  325. X}
  326. X
  327. X#if NeedFunctionPrototypes
  328. Xvoid ShutDown(Display *display, int exit_code, char *message)
  329. X#else
  330. Xvoid ShutDown(display, exit_code, message)
  331. X    Display *display;
  332. X    int exit_code;
  333. X    char *message;
  334. X#endif
  335. X{
  336. X    /* This is the last function called when exiting */
  337. X
  338. X    /* Remove the colour map */
  339. X    if (colormap) XUninstallColormap(display, colormap);
  340. X
  341. X    /* Close the audio device if available and wanted */
  342. X    if (noSound == False)
  343. X        FreeAudioSystem();
  344. X
  345. X    FreeMisc(display);                /* Free backing store pixmap*/
  346. X    FreeKeyControl(display);        /* Free key control         */
  347. X    FreeHighScore(display);            /* Free high score memory     */
  348. X    FreeInstructions(display);        /* Free instructions        */
  349. X    FreeBonus(display);                /* Free bonus memory         */
  350. X    FreeIntroduction(display);        /* Free introduction memory */
  351. X    FreeMessageSystem(display);        /* Free message system         */
  352. X    FreePaddle(display);            /* Free paddle pixmaps         */
  353. X    FreeLevelInfo(display);            /* Free level pixmaps         */
  354. X    FreeScoreDigits(display);        /* Free digit pixmaps         */
  355. X    FreeBlockPixmaps(display);        /* Free all block pixmaps     */
  356. X    FreeBall(display);                /* Free the ball animation     */
  357. X    FreeBullet(display);            /* Free the bullet          */
  358. X    ReleaseGraphics(display);        /* Free graphics contexts     */
  359. X    ReleaseFonts(display);            /* Unload fonts used        */
  360. X
  361. X    /* Output an error message if required */
  362. X    if (message[0] != '\0')
  363. X        ErrorMessage(message);
  364. X
  365. X    /* Exit with the error code */
  366. X    ExitProgramNow(exit_code);
  367. X}
  368. X
  369. X#if NeedFunctionPrototypes
  370. Xstatic int ErrorHandler(Display *display, XErrorEvent *err)
  371. X#else
  372. Xstatic int ErrorHandler(display, err)
  373. X    Display *display;
  374. X    XErrorEvent *err;
  375. X#endif
  376. X{
  377. X     char msg[80];
  378. X     char string[256];
  379. X
  380. X    /* Obtain the error message from the server */
  381. X    XGetErrorText(display, err->error_code, msg, 80);
  382. X    sprintf(string, "Xlib Error: %s", msg);
  383. X
  384. X    /* Close down the system */
  385. X    ShutDown(display, 1, string);
  386. X
  387. X    /* Not reached but makes the compiler happy */
  388. X    return True;
  389. X}
  390. X
  391. X#if NeedFunctionPrototypes
  392. Xstatic void HandleDisplayErrors(char *displayName)
  393. X#else
  394. Xstatic void HandleDisplayErrors(displayName)
  395. X    char *displayName;
  396. X#endif
  397. X{
  398. X     char string[256];
  399. X
  400. X    /* Check if the DISPLAY variable is set and write correct message */
  401. X    if (getenv("DISPLAY") == NULL)
  402. X        ErrorMessage("Your X-Window system display variable is not set.");
  403. X    else
  404. X    {
  405. X        sprintf(string, "Cannot connect to display called <%s>.", displayName);
  406. X        ErrorMessage(string);
  407. X    }
  408. X}
  409. X
  410. X#if NeedFunctionPrototypes
  411. Xstatic void PrintVersion(void)
  412. X#else
  413. Xstatic void PrintVersion()
  414. X#endif
  415. X{
  416. X    /* Print version for program to user for command line help */
  417. X    fprintf(stdout, 
  418. X        "XBoing by Justin Kibell (jck@citri.edu.au)\n"); 
  419. X    fprintf(stdout, 
  420. X      "Version %d.%d %s\n", VERSION, REVNUM + buildNum, dateString);
  421. X    fprintf(stdout, "(c) Copyright 1993, All Rights Reserved\n");
  422. X
  423. X    /* Exit now */
  424. X    ExitProgramNow(0);
  425. X}
  426. X
  427. X#if NeedFunctionPrototypes
  428. Xstatic void PrintUsage(void)
  429. X#else
  430. Xstatic void PrintUsage()
  431. X#endif
  432. X{
  433. X    /* Print usage to user for command line help */
  434. X
  435. X    fprintf(stdout, "%s%s",
  436. X        "Usage: XBoing [-version] [-usage] [-help] [-sync] ",
  437. X        "[-display <displayName>]\n"); 
  438. X    fprintf(stdout, "%s%s\n%s\n",
  439. X        "              [-speed <1-9>] [-scores] [-keys] [-sound] [-setup]",
  440. X        " [-nosfx]",
  441. X        "              [-pointergrab] [-maxvol <1-100>] [-startlevel <1-MAX>]");
  442. X
  443. X    /* Exit now */
  444. X    ExitProgramNow(0);
  445. X}
  446. X
  447. X#if NeedFunctionPrototypes
  448. Xstatic void PrintSetup(void)
  449. X#else
  450. Xstatic void PrintSetup()
  451. X#endif
  452. X{
  453. X    /* Print setup information about xboing */
  454. X    char *str;
  455. X
  456. X    fprintf(stdout, "xboing: Setup Information\n");
  457. X    fprintf(stdout, "           Audio: %s\n", 
  458. X        AUDIO_AVAILABLE ? "Available" : "Not available");
  459. X    fprintf(stdout, "         Version: %d.%d\n", VERSION, REVNUM + buildNum);
  460. X    fprintf(stdout, "        Compiled: %s\n", dateString);
  461. X
  462. X    /* If the environment variable exists - use it */
  463. X    if ((str = getenv("XBOING_SCORE_FILE")) != NULL)
  464. X        fprintf(stdout, "      Score File: %s\n", str);
  465. X    else
  466. X        fprintf(stdout, "      Score File: %s\n", HIGH_SCORE_FILE);
  467. X
  468. X    /* If the environment variable exists - use it */
  469. X    if ((str = getenv("XBOING_LEVELS_DIR")) != NULL)
  470. X        fprintf(stdout, " Level directory: %s\n", str);
  471. X    else
  472. X        fprintf(stdout, " Level directory: %s\n", LEVEL_INSTALL_DIR);
  473. X
  474. X    fprintf(stdout, "Number of levels: %d\n", MAX_NUM_LEVELS);
  475. X
  476. X    /* If the environment variable exists - use it */
  477. X    if ((str = getenv("XBOING_SOUND_DIR")) != NULL)
  478. X        fprintf(stdout, "Sounds directory: %s\n", str);
  479. X    else
  480. X        fprintf(stdout, "Sounds directory: %s\n", SOUNDS_DIR);
  481. X
  482. X    /* Exit now */
  483. X    ExitProgramNow(0);
  484. X}
  485. X
  486. X
  487. X#if NeedFunctionPrototypes
  488. Xstatic void PrintHelp(void)
  489. X#else
  490. Xstatic void PrintHelp()
  491. X#endif
  492. X{
  493. X    /* Print help for program to user for command line help */
  494. X    fprintf(stdout, 
  495. X        "XBoing by Justin Kibell (jck@citri.edu.au)\n"); 
  496. X    fprintf(stdout, "Version %d.%d %s\n", VERSION, REVNUM + buildNum,
  497. X        "(c) Copyright 1993, All Rights Reserved\n");
  498. X
  499. X    fprintf(stdout, "Help: \n");
  500. X    fprintf(stdout, "%s%s%s%s%s%s%s%s%s%s%s%s%s",
  501. X        "    -speed <n>              - The game speed, 1 - 9. 9 = fast\n",
  502. X        "    -maxvol <n>             - The maximum volume as percentage.\n",
  503. X        "    -startlevel <n>         - The starting level for game.\n",
  504. X        "    -help                   - Produce this help message.\n",
  505. X        "    -sync                   - Turn on X synchronisation.\n",
  506. X        "    -usage                  - Print a brief help message.\n",
  507. X        "    -version                - Print out the current version.\n",
  508. X        "    -scores                 - Print out the current highscores.\n",
  509. X        "    -keys                   - Use keys instead of mouse control.\n",
  510. X        "    -sound                  - Turn audio ON for game.\n",
  511. X        "    -setup                  - Print setup information.\n",
  512. X        "    -nosfx                  - Do not use special effects.\n",
  513. X        "    -grabPointer            - Turn on pointer grab.\n",
  514. X        "    -display <display>      - Set the display for the game.\n");
  515. X
  516. X    /* Exit now */
  517. X    ExitProgramNow(0);
  518. X}
  519. X
  520. X#if NeedFunctionPrototypes
  521. Xstatic int compareArgument(char *arg1, char *arg2, int minMatch)
  522. X#else
  523. Xstatic int compareArgument(arg1, arg2, minMatch)
  524. X    char *arg1;
  525. X    char *arg2;
  526. X    int minMatch;
  527. X#endif
  528. X{
  529. X    if ((strlen(arg1) < minMatch) || (strlen(arg2) < minMatch)) 
  530. X        return 1;
  531. X    if (strlen(arg1) > strlen(arg2)) 
  532. X        return 1;
  533. X
  534. X    /* Return true or false basically */
  535. X    return (strncmp(arg1, arg2, strlen(arg1)));
  536. X}
  537. X
  538. X#if NeedFunctionPrototypes
  539. Xstatic void TurnOnSynchronise(Display *display)
  540. X#else
  541. Xstatic void TurnOnSynchronise(display)
  542. X    Display *display;
  543. X#endif
  544. X{
  545. X    /* Turn the X synchronisation on to flush all calls each frame */
  546. X    XSynchronize(display, True);
  547. X}
  548. X
  549. X#if NeedFunctionPrototypes
  550. Xstatic void InitialiseSettings(void)
  551. X#else
  552. Xstatic void InitialiseSettings()
  553. X#endif
  554. X{
  555. X    /* Initialise some variables */
  556. X    syncOn = False;
  557. X    grabPointer = False;
  558. X
  559. X    /* The audio is off by default */
  560. X    noSound = True;
  561. X
  562. X    /* So the audio code will use system default */
  563. X    SetMaximumVolume(0);    
  564. X
  565. X    /* Always start on level one */
  566. X    SetStartingLevel(1);
  567. X    SetLevelNumber(1);
  568. X
  569. X    /* Not so fast */
  570. X    SetUserSpeed(7);
  571. X
  572. X    useSpecialEffects(True);
  573. X    score = 0L;
  574. X}
  575. X
  576. X#if NeedFunctionPrototypes
  577. Xstatic void ParseCommandLine(char **argv, int argc)
  578. X#else
  579. Xstatic void ParseCommandLine(argv, argc)
  580. X    char **argv;
  581. X    int argc;
  582. X#endif
  583. X{
  584. X    /* Parse the command line options */
  585. X    int i, l;
  586. X    char str[80];
  587. X
  588. X    /* Initialise variables */
  589. X    InitialiseSettings();
  590. X
  591. X    for (i = 1; i < argc; i++)
  592. X    {
  593. X        if (argv[i][0] != '-')
  594. X        {
  595. X            PrintUsage();
  596. X            break;
  597. X        }
  598. X
  599. X        if (!compareArgument(argv[i], "-display", 7))
  600. X        {
  601. X            /* Set the display name for later connection */
  602. X            i++;
  603. X            if (i < argc)
  604. X                displayName = argv[i];
  605. X            else PrintUsage();
  606. X
  607. X        } else if (!compareArgument(argv[i], "-help", 4))
  608. X        {
  609. X            /* Print out the help information and quit */
  610. X            PrintHelp();
  611. X
  612. X        } else if (!compareArgument(argv[i], "-setup", 5))
  613. X        {
  614. X            /* Print out information on setup */
  615. X            PrintSetup();
  616. X
  617. X        } else if (!compareArgument(argv[i], "-sync", 4))
  618. X        {
  619. X            /* Turn on X protocol synchronisation */
  620. X            syncOn = True;
  621. X
  622. X        } else if (!compareArgument(argv[i], "-version", 7))
  623. X        {
  624. X            /* Print out the version information and quit */
  625. X            PrintVersion();
  626. X
  627. X        } else if (!compareArgument(argv[i], "-sound", 5))
  628. X        {
  629. X            /* Enable the sound in the game */
  630. X            noSound = False;
  631. X
  632. X        } else if (!compareArgument(argv[i], "-keys", 4))
  633. X        {
  634. X            /* Set the paddle control mode to use keys */
  635. X            SetPaddleControlMode(CONTROL_KEYS);
  636. X
  637. X        } else if (!compareArgument(argv[i], "-scores", 6))
  638. X        {
  639. X            /* List all the highscores */
  640. X            CommandlineHighscorePrint();
  641. X            ExitProgramNow(0);
  642. X
  643. X        } else if (!compareArgument(argv[i], "-usage", 5))
  644. X        {
  645. X            /* Print out the usage and quit */
  646. X            PrintUsage();
  647. X
  648. X        } else if (!compareArgument(argv[i], "-nosfx", 5))
  649. X        {
  650. X            /* Turn off special effects then */
  651. X            useSpecialEffects(False);
  652. X            
  653. X        } else if (!compareArgument(argv[i], "-pointergrab", 6))
  654. X        {
  655. X            /* Turn on pointer grabbing */
  656. X            grabPointer = True;
  657. X
  658. X        } else if (!compareArgument(argv[i], "-speed", 5))
  659. X        {
  660. X            /* Set the speed for the game */
  661. X            i++;
  662. X            if (i < argc)
  663. X            {
  664. X                /* Obtain the speed setting */
  665. X                l = atoi(argv[i]);
  666. X                if ((l > 0) && (l <= 9))
  667. X                    SetUserSpeed(10 - l);
  668. X                else 
  669. X                {
  670. X                    ErrorMessage("The speed setting range is [1-9]");
  671. X                    PrintUsage();
  672. X                }
  673. X            } else PrintUsage();
  674. X
  675. X        } else if (!compareArgument(argv[i], "-startlevel", 10))
  676. X        {
  677. X            /* Set the starting level */
  678. X            i++;
  679. X            if (i < argc)
  680. X            {
  681. X                /* Obtain the start level setting */
  682. X                l = atoi(argv[i]);
  683. X                if ((l > 0) && (l <= MAX_NUM_LEVELS))
  684. X                    SetStartingLevel(l);
  685. X                else 
  686. X                {
  687. X                    sprintf(str, "The starting level range is [1-%d]", 
  688. X                        MAX_NUM_LEVELS);
  689. X                    ErrorMessage(str);
  690. X                    PrintUsage();
  691. X                }
  692. X            } else PrintUsage();
  693. X
  694. X        } else if (!compareArgument(argv[i], "-maxvol", 6))
  695. X        {
  696. X            /* Set the maximum volume to use for the game */
  697. X            i++;
  698. X            if (i < argc)
  699. X            {
  700. X                /* Obtain the maximum volume setting */
  701. X                l = atoi(argv[i]);
  702. X                if ((l >= 1) && (l <= 100))
  703. X                    SetMaximumVolume(l);
  704. X                else 
  705. X                {
  706. X                    ErrorMessage("Maximum volume range is [1-100]");
  707. X                    PrintUsage();
  708. X                }
  709. X            } else PrintUsage();
  710. X
  711. X        } else PrintUsage();
  712. X    }
  713. X}
  714. X
  715. X#if NeedFunctionPrototypes
  716. Xvoid UnGrabPointer(Display *display)
  717. X#else
  718. Xvoid UnGrabPointer(display)
  719. X    Display *display;
  720. X#endif
  721. X{
  722. X    /* Ungrab the pointer */
  723. X    if (grabPointer == True)
  724. X        XUngrabPointer(display, CurrentTime);
  725. X}
  726. X
  727. X#if NeedFunctionPrototypes
  728. Xvoid GrabPointer(Display *display, Window window)
  729. X#else
  730. Xvoid GrabPointer(display, window)
  731. X    Display *display;
  732. X    Window window;
  733. X#endif
  734. X{
  735. X    Cursor cursor;
  736. X    XColor colour;
  737. X    Pixmap cursorPixmap;
  738. X
  739. X    /* Create a cursor with nothing inside it */
  740. X    colour.pixel = WhitePixel(display, DefaultScreen(display));
  741. X    XQueryColor(display, 
  742. X        DefaultColormap(display, DefaultScreen(display)), &colour);
  743. X    cursorPixmap = XCreatePixmap(display, window, 1, 1, 1);
  744. X
  745. X    cursor = XCreatePixmapCursor(display, 
  746. X        cursorPixmap, cursorPixmap, &colour, &colour, 0, 0);
  747. X    if (cursorPixmap) XFreePixmap(display, cursorPixmap);
  748. X
  749. X    if (grabPointer == True)
  750. X    {
  751. X        /* Grab the pointer so you cannot move the  mouse out of the main
  752. X          * window. Also set the cursor to a new cursor with no shape.
  753. X          */
  754. X        if (XGrabPointer(display, window, True,
  755. X            ButtonReleaseMask | ButtonPressMask,
  756. X            GrabModeAsync, GrabModeAsync, window,
  757. X            cursor, CurrentTime) != GrabSuccess)
  758. X        {
  759. X            /* Error while grab - not too bad but let user know. */    
  760. X            ErrorMessage("Warning: Pointer grab unsuccessful.");
  761. X        }
  762. X    }
  763. X    else
  764. X        XDefineCursor(display, window, cursor);
  765. X}
  766. X
  767. X#if NeedFunctionPrototypes
  768. XDisplay *InitialiseGame(char **argv, int argc)
  769. X#else
  770. XDisplay *InitialiseGame(argv, argc)
  771. X    char **argv;
  772. X    int argc;
  773. X#endif
  774. X{
  775. X    int screen_num;
  776. X    static Display *display;
  777. X
  778. X    /* Setup the default speed for game */
  779. X    SetUserSpeed(5);
  780. X
  781. X    /* Set the paddle control mode to mouse */
  782. X    SetPaddleControlMode(CONTROL_MOUSE);
  783. X
  784. X    /* Parse all command line arguments - may exit here */
  785. X    ParseCommandLine(argv, argc);
  786. X
  787. X    /* Open a display connection */
  788. X    if (!(display = XOpenDisplay(displayName)))
  789. X    {
  790. X        /* Handle display connection errors */
  791. X        HandleDisplayErrors(displayName);
  792. X        ExitProgramNow(1);
  793. X    }
  794. X
  795. X    /* User wants synchronisation turned on so do it */
  796. X    if (syncOn == True) TurnOnSynchronise(display);
  797. X
  798. X    /* Set the error handlers to point to mine */
  799. X    XSetErrorHandler(ErrorHandler);
  800. X
  801. X    /* Seed the random number generator */
  802. X    srand(time(NULL));
  803. X
  804. X    /* Obtain the screen number for this display */
  805. X    screen_num = XDefaultScreen(display);
  806. X
  807. X    /* Make sure that we are using a colour visual */
  808. X    if (!XMatchVisualInfo(display, screen_num, 
  809. X        DefaultDepth(display, screen_num), PseudoColor, &visual_info))
  810. X    {
  811. X        if (!XMatchVisualInfo(display, screen_num, 
  812. X            DefaultDepth(display, screen_num), DirectColor, &visual_info))
  813. X        {
  814. X            if (!XMatchVisualInfo(display, screen_num, 
  815. X                DefaultDepth(display, screen_num), TrueColor, &visual_info))
  816. X            {
  817. X                ErrorMessage("Sorry, your display must be colour.");
  818. X                ExitProgramNow(1);
  819. X            }
  820. X        }
  821. X    }
  822. X
  823. X    /* Create our own colour map for the game to use */
  824. X    colormap = XCreateColormap(display, RootWindow(display, screen_num), 
  825. X        visual_info.visual, AllocNone);
  826. X
  827. X    
  828. X    /* Be polite */
  829. X    fprintf(stdout, "Please wait, initialising xboing ...\n");
  830. X
  831. X    /* Initialise the audio system if possible */
  832. X    if (noSound == False)
  833. X    {
  834. X        /* Try to turn audio on */
  835. X        if (SetUpAudioSystem(display) == False)
  836. X        {
  837. X            /* Audio failed - let user know */
  838. X            noSound = True;
  839. X            ErrorMessage("Warning: Audio unavailable or not supported.");
  840. X        }
  841. X    }
  842. X
  843. X    /* Find out some colours */
  844. X    InitialiseColourNames(display, colormap);
  845. X
  846. X    /* Create all windows */
  847. X    CreateAllWindows(display, colormap, argv, argc);
  848. X
  849. X    InitialiseGraphics(display, playWindow);
  850. X    InitialiseFonts(display);
  851. X
  852. X    SetBackgrounds(display, colormap);
  853. X
  854. X    /* Initialise all pixmaps and objects and setup special screens etc. */
  855. X    InitialiseMessageSystem(display,     messWindow,     colormap);
  856. X    InitialiseBlocks(display,             playWindow,     colormap);
  857. X    InitialiseBall(display,             playWindow,     colormap);
  858. X    InitialiseBullet(display,             playWindow,     colormap);
  859. X    InitialiseScoreDigits(display,         scoreWindow,     colormap);
  860. X    InitialiseLevelInfo(display,         levelWindow,     colormap);
  861. X    InitialisePaddle(display,             playWindow,     colormap);
  862. X
  863. X    SetUpPresents(display,                 mainWindow,     colormap);
  864. X    SetUpKeys(display,                     playWindow,     colormap);
  865. X    SetUpInstructions(display,             playWindow,     colormap);
  866. X    SetUpIntroduction(display,             playWindow,     colormap);
  867. X    SetUpBonus(display,                 mainWindow,     colormap);
  868. X    SetUpHighScore(display,             playWindow,     colormap);
  869. X
  870. X    DisplayLevelInfo(display, levelWindow, level);
  871. X    SetLevelTimeBonus(display, timeWindow, 180);
  872. X    DrawSpecials(display);
  873. X
  874. X    event_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask |
  875. X       ButtonReleaseMask | ExposureMask | StructureNotifyMask;
  876. X    XSelectInput(display, mainWindow, event_mask);
  877. X
  878. X    event_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask |
  879. X       ButtonReleaseMask;
  880. X    XSelectInput(display, playWindow, event_mask);
  881. X
  882. X    /* Actually map the main window */
  883. X    XMapWindow(display, mainWindow);
  884. X
  885. X    /* Install our new colormap into the server list */
  886. X    XInstallColormap(display, colormap);
  887. X
  888. X    /* Return the new display */
  889. X    return display;
  890. X}
  891. END_OF_FILE
  892.   if test 21321 -ne `wc -c <'init.c'`; then
  893.     echo shar: \"'init.c'\" unpacked with wrong size!
  894.   fi
  895.   # end of 'init.c'
  896. fi
  897. if test -f 'sounds/evillaugh.au.uue' -a "${1}" != "-c" ; then 
  898.   echo shar: Will not clobber existing file \"'sounds/evillaugh.au.uue'\"
  899. else
  900.   echo shar: Extracting \"'sounds/evillaugh.au.uue'\" \(18655 characters\)
  901.   sed "s/^X//" >'sounds/evillaugh.au.uue' <<'END_OF_FILE'
  902. Xbegin 664 evillaugh.au
  903. XM+G-N9    "   #2N     0  'T     !          #KZU]?W__/[^=5ZW??
  904. XM[_??9\?O[T+?6=OO77=;XU5C66OGT]]=55OOU>]KV=G_7V_WSV?3]U-KU5-C
  905. XM:TWWV>M77TOKU>?W7>OGV=O)4=_9W5U.[TQKW=-=5\I33?__8]WO64]CS-M)
  906. XM=\GG:U5;[\SKU6_?Y_?K[V=GU]WK]TEG8]U;8UGOZV=3_TQOW><_7]O9:]=C
  907. XM8^?/Y__(]VM=5^/-=\]C75G=U5E,RUW;6UM-9U_KR5=C3]%GV^_%3M_W5UO_
  908. XM7]'93$K5Z^]1X]W9:^-+0\'W7^MWS=E+5U?&W]].9^_/:W=&Y]/+2TA7Z[YC
  909. XMY^?7/N_-[]?76]]$65G,S&=KWTA7T5_O5\GK;U]?3<YGPN<_W?=/T]-37<MW
  910. XM[TS#4^_1V4WWP,M%:\[+6V?;R4953=GK9^]&3-/?/LE.QS[$4=]GV\I5V5/G
  911. XM=V_9=]-W;TWK2'=1R6<\=]G)SE%(VTW"75-,QW?7XU]K7=?=5T??U]]39TO'
  912. XM;]W?T5G)9]U(T]/K6UW-0555V\%O3<]9=V_.5\_?4^=WS4];S%5GY]E3/T^_
  913. XM0\Q-1?_':T;-6>_/TUE-]\WCV^M?Z]G$3O_5O4)(T?<_S5M9SDS=55G 2$!W
  914. XMPU'=WUE/_UM97UG&Q]](7^=9R-_;9[] 2MF_3D?,U\K?0%OWY^//4U]!S=?,
  915. XM9U'-_V-WYTW7Q43;1LE&2]/1UUG&4]59RTG=6]E-_]%-74W9R-="W=-GW6,Y
  916. XM]TNU0<UW4]_7SU5K4\U9;U/'7<[)4>==6]'%:T)C7[HXU^?5YW=3U=536TG'
  917. XM2T_O_T]'O^O.7U5*W??'8^]G7>.^5UM/6=O$ZT%WS\Y,V4[*RUU'1%/ S5E%
  918. XM1U?+VU'_T;]/TV?.2??*U5MCSCQ/_[7"36]7T]/W9TUO3[L_7TCO9[Y!0T]3
  919. XMS_=G2<W)UT3G7U-?O=]-TV?OR<M#WV>^8\U+ZU71[VM#[^?.6V=/4V/%TU5.
  920. XMV^-?V7=93\#10%]=U[[C1TQCY\Q!5>?.P4Y/6]G=_TW)SUE3NDQC25M'Q,%+
  921. XM/]_#WU?W6\G?655;;U7$UUU*SO]=9U-&N[G74W<^SLK13,5=U6-,0-'?3<[O
  922. XM6U'#:S]5Z[Q%2>>[/DC=]TK#R>=CPM-G45'G8]O'3S[,ST4^;\=OU4OOR[Y=
  923. XMY^O_SL[C54I(P\M&.\2WW\I!-S"YPM$^=[W7:SI(.]E?5SG=R[C*Q<?,S\G9
  924. XM3W?KS./G7U%;66\ZME%*+DV^OU==8[[=N#DY3V/?.TQW:\7+PD-OW[C"T]/=
  925. XM;UGC5W?WZ^=;2TIC:^-3455-_U]=3\OC=T].W__G]]GO65G#O,O)S<#)S5O?
  926. XMR^_53%E9;U-+34U10#U+3D='4UU&=^/7U<O+T^?5S+_)S,C7S,K/ZVO;V6]3
  927. XM255,4UU,26OW5U%;5U_K=W?W[]_5Y^?GW6=GXW?K_V]5;^_K;VO?W]G==VMO
  928. XMU<[9]]_=[]U7655W=UU3:V-/3%%O[VMO9U=K8V]OZV_9U]_OV]W-=_?3U]O9
  929. XMV>OKX]WK75MG;^MW45M1]V=74>MC2$_OW>]C9V-#24MKS=/$S]7;]U5+_W?;
  930. XMSN?'W]-WZV_OSM-O]V===SY,P3-'7[2Y8S4X-\A-9\VZK+I$+RI5OKZPLSPC
  931. XM5;JEO,LU-38],K_+N:7'NS([,C<ZQ\VUP[EW-B]1NZZPMUFRNB$H0*NHQ2\G
  932. XM,4\W4=^ZH*W.+3$IW^^NP;1#6SK=J*A/(%E?G\S$(3 KU2^N2JI?;SHZ16=G
  933. XM1V=3M,K',S?9L;.CJ40C/;6LK4TT*CXO-^OOKK+12RHU3#L^T:NJKDPO*MFE
  934. XMGZ\B)T^BH^,M*#1K63'&1:Y!/BPZ=[PXWT^UU=TORL.@K;Z^+,T[H\.I,#@G
  935. XM9S9WV;^Q9S4K,SC5P<"_S.='64#,O+2@+SDNL[&^+24R6[<^V<Z[SS,N.,&T
  936. XMO=%%RMO'.N?_I;ZB32DM_Y].21_++:\E3,VYK2\]+KQ5KCF\0L)+PE^YP[V?
  937. XM,25,NZ8]31]O-;)/1,4QKR=)*[]9JCS.,LXU=\VINY\J(KJSGS](-4FS8]$I
  938. XMM2BW(#@TQ].N0M4V42Y&8ZRFIA\N7Y^?WRO".*4XP#&@3[<@,4TXO$C)-F<G
  939. XM4S7;NJ4_)^NPGZHL6\_GN"FUV:$_QQ]-.._W_SHW=RK+*,:HKA]OO9^G[R2]
  940. XM,Z4Y.:VHJ%DV'[T]V\\].6<A0S=+H[(?1-N@HS@@N3:H1MFLLKDOO1^U:VO+
  941. XM,DQO-CY=6:8Y'SJWGZ$Z'[ MIDU1J+JN*\4@K?<_1"MKX]4L/JNL(T'WH*"P
  942. XM'[1!M;,OM+VLW_\I*ZPPV2Q5+L,K.R^F2R-,I**H*":Z/*6[2*JYJ3U=)[RS
  943. XMTRY&*;Y?+KZQ(B[1KZ.K(%])+:0J6:NVL#%"+J-WWR;"+;TN0:[+(3&YGZC_
  944. XM(%&_2J@OJ[3#.SM93:&U+BT_-LTQR:\M,,^LG\H@MV^ZJ">VM:T_.4$TIL)=
  945. XM2^\L;R]!I:LA/<"CT4,AO,-7US3=ICDQ1ZZ_O54FMC=+2..?KR"_S*^R-B2E
  946. XM[[75([>XZRW-3%.F1#LU)RB^MJI"'T*VH5<G'ZRVM3HHO;5K,&^YJ:FZ/"!5
  947. XM-*C7OKXH++JAK6<?,ZHKLSB^YS8J7:R^L,8M)SKWM+FS,"0[QJ&J*BFL4[,M
  948. XMRCFSOBK$M\^OM3 L0+1(R[VZ+3K1HZ1O'SC-M<E#32Z[+DFLRRW*3%LJ,^>Y
  949. XMW<B\*K^^OZ>I*D%9U_>O7<Q-.$K,N:JM2B8I+F>SO+DM*;Q,KJ0]T]M'2D['
  950. XMQ\J_-C(\MJFM."0JO+ZS1;G7*CV]Q)_(-B7_SB_;QN_;,4-"NJ'=)SL[9ZA-
  951. XM/$JRJ\\N2=N?JT(E7\.^*BXYIK]%1;Y"/B@HO+L[0LG'3\<S-U?!HZ2_/2A-
  952. XM-W?9K;>[0"5?O+5"=R5KV[P\..N[NE-G.^^SJM&J2295O%.N/T4TN+^W.R#_
  953. XMRN<K-CZU[]W*NL#KL+$ZQ#C*N,FRS#0X1+^Q.BXE*+[,Z[[/2=57;ZVO+4O5
  954. XMN;RJOCY16S)#Q[NJN^\F*43,O\-K,2]&MJ7#9SDU_[/!KL3+.R8KLZ2R/"4R
  955. XM/F]KQ;M)-"U LZC)TSU;N4"MN[&O]RI'LM>L+2]*2D^KV3-C+S/$TSC Q4--
  956. XM-SI/M[;,+TF]ND9'7\'31S.OK;/'.2^]]SS&O<LS-,*[.$D]8ZZ^-K\T7U51
  957. XMM+Y*Q+]ORS8\OL3-/DTU6;3'U^=(,6N[N5M".;[OUU.U]S>[5;,U2$O9S<'K
  958. XM2DA$;TA9O.-"R;;CU2PQY[ZKST>_VW>V4RM,V<#.PCW;,7?K=],^S:E;/S5,
  959. XMVZ\Y6[;=/],ZSJ[ +S-W3+KK43SO,\.ZZTMO54+$LF,TZ^>OMME*1\G=O2QC
  960. XMO,KG,4GKU^.X+'<DM;7!-BNZL+([9T?3K3\PT<BZKC,VX_^RORLOL,#!-RC!
  961. XM0[Q-+KVW4],Z,,1'YZG*4S<_W:]'.C[=I_= --O!S%,V][*ZW2XM5[C)04MG
  962. XMV[_7.$]-S[RX/]?GKC@]XZ_OR4PMOC?$R4;GR+[W2C_CU;LWV\:^S#_3,4+7
  963. XML4?$.5O1-5_G/[:[0=5G7[PX.]O#K\U._^.]7T*WT[/K0&]!P]4IR6O1OE4Y
  964. XMQ;_G*RQ9R:E)2C<XLL%GO#Y?JS[/,]^_0.--S;9/Q48ZUS#*M$FO8T'-Z[7%
  965. XM-6MWN\ XZT+_;RS/1T2K2DE%.\UCS3M+NCW..+FL1L++Q\T\7<B]NBZ^O%^\
  966. XM+D7W:ZTR.UW*VS5=8]>P/#S=2+]?.F]WP]6X3+I#.&M3PL-10-//54W1N;D_
  967. XM1>>OL3-7/Z\W.O?(6\<JR\]%P34[YS7,2\FV_\8VW<[)M;=-/2[ NJE;5SQ=
  968. XM2CHWO#ZRN^>W-RTX.]',Y[NUS3H[:^^MV;MWQ[XO24-GK, _,C$^VRQ9Z[.O
  969. XMRE]C+O_G5:A/SC_5O:VX42O%0*UG1#+11DXZ57>OST>[*=,ZW]/',[OCNULL
  970. XMWT[#ZZ6M*V]1YZM/3$](ORQ90\W7Y[4Z/4K;ODO+OM-52C3,QZN\0"Q RJBZ
  971. XM0"HRRL\]0%.VS4Q"2$2\1C=K3<"V2$K*L,+)V>>[_TZSND=*ZSE5_\^WR3Y9
  972. XM-#XT1LO#S<AK15U"NL7!NM7++<B\LT]#/&?1.T);KD(X1SM+M%NY2TEK3,Q/
  973. XM/J^[RLDO0T:E0$LTT;%O+2^][ZTRT4_W53:].&]ONLQ/8UUKI.,N_SNHNLTR
  974. XM/DK1S#V^2ZTW.SU%/\)'V4-/25$_O6.L_RNU4ZK -S5,H/_K*..^=S0J/;ZI
  975. XMQ$HYT3]"-#VZNK(U,+BYK],]RSRQP\),Q+$RLRC'(4G9ZUE*26N[2\3.Q2<R
  976. XMZZ^IQS7*2[%%=\.UOF<R/SM,9TNX,<X?.#<KOJ];R;RJJ[<ZRF._O>_ON:YG
  977. XMMRY9/B_9P2\^/B,^+;"T-B4K]["X-[;1J+A,O[^FQ+PS+ZL\ND(]/T]K/[I9
  978. XM*SHQI*9;.!_K.3_%6Z*PW3(\S,.S.]=)PU^N*TXZM;E;(ZI+I3LW;S^MOSG7
  979. XM:[)5,"G.2Z]G_T'?1D] OK,LRJI7Q6LEJ"-+O#6TT;]?4U\WVU<_V[I&R$A5
  980. XMN%4XX[6KI"\GGR:@+A^I/,A=,3C(MDXB[S?WKR_+NS,J:ZZJM5'*5RBB/*>I
  981. XM([(]-L5+MT#-21^^5S>@.S355[Z[.5^SR)\Q(J^\I[LI)J=OS3=G1[/+'[>M
  982. XM*V]#M++W)#J[LF,[VY\G*JZZHLLF*: S0;= J* B([K=LKH?SZ[OV2L\I*XG
  983. XMQ*TN6:Y"M#P?.I^YR3A"SI_$'RJOGT,Y+S^ESB=?I+]$YY\G,+5(I;PO,[5;
  984. XML*^^,T_('RFLO,L^(DNFM#G_LC<H2U6MGRL?,K"?JR CMJE#-VO MKP?)JVP
  985. XML;HL+S?+S+9.N/?)[SK+H"T?R[^?R"D?2Z[1,K=,_],O*^NJV;A59R[7O[FR
  986. XMU4="N,G7NNO_KC<IQKVAJ$,?-CK)5U&Q12XW5\*DQ-U"2C<RR[2^OSTJ6;:Y
  987. XML,DZ*%_,2K;$,4@XT;"P/SH]M\$S-+JUK3XR/L>OR#A)6TUC.F_WNJO9+=/'
  988. XMQJ]7)M>XP5<M):V]PE% 54O$+K6^35,U.<Z^O\Q,-M^NLE<]-$[G:[W"_\$J
  989. XM4ZRQ/L@X/;'34SG&1<5K-]>\R[Y13[LI+JW7N]\S/KIOP[HA,\^^OVL\,4/,
  990. XM2;F^QL#%5U%7N+U%X\4V4^?%KLXL*35*QLNLODL^*CK!L^=35\VZP=TXVUM/
  991. XM05^PM+S_+2OOS,ZYO3TP+=6PL3(S9TZXV\R^M#8V+^NJK^,M/4I51;RY34T[
  992. XM+LROQ<31*37OQ[6UN4-*-4F^OG<SU6-.NK<_0D QQJO9[VM(-3M.1^>MOSP]
  993. XM_]._7]4YV<H^O[[;U^\\T[OW3<+%0S+?8TO/3CZXN#=&5U_"SV]1R5O31]M=
  994. XM=\M.XV=?+U_7QL!K1C=36\.X.CO&[T_"R6-16]?*W4M"_]_?PKYC2E4UU<_?
  995. XM/,G&W\%//<[1_VO,R,5'Y[<^/D9WP;5#.,X_RT9+4\V\:U=K.<];.#:N4]7/
  996. XM6SW%PSE$[U?CQ5DSO3G54<A3:^=)[[^[4?=,1+;7O4=KZ\M..;UCOC9//??)
  997. XMQKM+.#+_R6M5T^_1RCM 2;_+Z^O;SZ\X/3?(R*TW,-_+R>LI_\S?QS-3M*\\
  998. XM64'-ZT>^Q;I9.S^RRCX[.J^O1S/?R;I&/4+=MLCC-F-C6T!$U6>XR.L_/5VZ
  999. XMOU/O6;['+6O#XV_C,L-=R?\_T???S%E.WTW3S6OCZ]6]R40Z3K3$55,[V>\T
  1000. XM2T#!L\<]3N?_S#!;S\BX:_].O4QGP<+-P5\XVT_9+N?'=\A"2M7"W3LZ:U6]
  1001. XMO#C..<C/T]'#T=M77>]KPT)+R3Z[3]G37W<^/EUCO+M$Q<S&V3Y(Y\^_4>/O
  1002. XM.^=145]!P<](SS[.9_]76\9 ]UM=QKY;Q-EW=T3OU[=)3_=WR6\X:]NWUSM3
  1003. XM=[X^3M,]MU5 7_?GS41+SD3/YVN^ZSUWVU'&W4??S\M7S5?%;U=OW[M/SE7?
  1004. XM3CW34?]G04+,/=.Y.6M!7U7+M$[3__?+Q>?5Q$0\4;R]RME 44A=.,193\5;
  1005. XMQTE .3O!R5G;O\_?0$-)P,S/QFO$,V_C6;B_7SM'.MU556_+KTC.43U3O#ZO
  1006. XMO.=O0=W'N<X^4UOCPTM,8U-1WT3;U[\_M#%/2FO;QCM%PM7'/-]WVW=)KCCK
  1007. XMW6>YOT=?9\D_2$5-P&^_W3]?3U]K5[C,X_<YR\K.RN-%9__!PO]'-]WO2%%C
  1008. XMR;Q-4TQ1U4L\8UOGQ_]1S]6^4^O"7U-7S:_'0ME;X^_-RLU#:S8]14G5QO_=
  1009. XMS%E;2.NZS&O/W5,Y45>YO3\W5]5W1JTEW3B_SM'/U;157^O?5UE/=SS!74EG
  1010. XMNLY94U?%O4\^XSE?XUW-//]KOSW;+JA+M"Y,SKFL8\QWQ[1//#]GY\$Z8UW1
  1011. XM;T!38\U?ZTX\35<_M"\T1ZA9JRTQ:\]=;ZZEQ\ U:V?,76M-O/==.N]/RT=$
  1012. XM,W?CQ#^N4R>[YS>M*C+*O]M7W[\WT2\GM[RS3<]1U4A/R[;)0U'?Q+A7O27G
  1013. XMI#RMOBM%MC-7.KC_;^<N/3NK,$*P4T3#L[VZ6]7/:V.[]R-*J<S-12,?K]L[
  1014. XM-*TW,S7=P+W+QR^VN$['K;_9N;'OZ[FS)A^JN,_3+!\^JLTLO\](*>.LQKQ#
  1015. XM42H[P$3*HTM;3,4YTZP](3ZNI%\V*32JH34OKZG%(S2]M,M"0BVUN^LO0[O/
  1016. XMS#4_NK0T(\^?KSM$-C>CO#118[(F)J^JN,PQ)SO?NW?",4'.R+Q.Y[8V1["?
  1017. XM7U$R1\XUH$<?LT-3,46L]\QC).M/NZ/C'S&KI=^RSR@KH:_$K2]=R3:G,41?
  1018. XMRT8C.;.TJLXE2]O*LK\Z8\JIOS(TO+&XXR8^JD0P-ZNQ[R(YO3C%O^^T8RA"
  1019. XM9]W(J&]G,SNHOZ]&.BS%M]^\W4*QRC0D*ZR?OBPN-KI&7\"U4SZW.2^KN:MO
  1020. XM+B;!N.O.V6>TNR<RP*K/24(VO[8V0+FZ-5>RW3AO/\O W4G_R[Z]4\Y;9RXP
  1021. XMJ<(Z13Y,MK!59[Q9+T?%SL(_*T17N[=5-$6I63$]KK?(.3]/N+JXYT$X8T-G
  1022. XM:\>_6=5++:RE,"[5N;,_*CZUOCCKZ^NUO&\L1].\4^M'1L)/NME"1]^VOKQ%
  1023. XM.:_$*5O9K*77+2\NS+[&PL Q*N/?M=&_P#DU..^ZN\E7,3;$OL#/O,\Z43_"
  1024. XMM>]-.#VVJKHI4[S7.33&N+7*+T==OM/OT=U,64D_2.^[Q, ^/$*UM#EO3MG*
  1025. XM]T1-Y^/;.G=GZT;+:T#CYT)CP=O%:S@VL+%;1D!;P]%CWSBROCS5OLA*3TO*
  1026. XM7<KO2$QOZU5WM^?_3S3*0CN^P\?*-SAOU=&N.RQ/O,]!9SXTS^?'Q\S-65?1
  1027. XMSDS%S$*_SF-76[R\6SXV[\[?V7=OXU$_6=/_4<^\OT3-/D:[:T!1]\+(WTDY
  1028. XMW6=O_[MC1SQ&P;=?05%WR5M+;ZE*,TH_V;VU2S-*5UE.K\$WXUMK=\R]R48U
  1029. XM8U/(SL3=1ST^R,^\46M3Y\6SSS+O0/>WR=-!V3XT=V?.QL%5/?=1[]'!2S;%
  1030. XM2/^Z1,GOU?=O_T#_QF=G6=])0\='T[S;2,Y.2&?1_\A5=TQ5X^/$4U7/Q6<[
  1031. XM1LW-9U5)3F_(SUM1[]5)7[W-;SY7PM],0TW/V;MG]U>\[T1K7VM"T]/&R4'=
  1032. XM:^_?8\R^:TW+0CS?Z^?;54._4<Y'/<S1R4U=T3!9P5LWPLU*U5UGQ<=*-?_?
  1033. XMZ\G=755#0G>]LN](1M?$ZUE/UT7%V4[76^/9_^M9:__K44A-S,O'/4(^Y[_!
  1034. XM7TO,U<@^/?_KRL1!54K!P3X_P+O;4T!!R\7'0SS+1U]$P<F]W4<]7]M?R,^Z
  1035. XM4UE18\QGUT;,N4Y78]W;3W=31K)K54UK;T?+06],S,E'WU-*P-O_1$[.QC=-
  1036. XMO.=1P34^N\Z].,_55<M;8\==XTG9W\_OX\M51E/?O]59=S_,/3[*V<OKWU-9
  1037. XM5\Y30V//OEW_2=W*4V/7S<;+.^_C455-SDK3U5-;TTW?;V-=7:PV0&MWSTW3
  1038. XMS^?O=UO&0V-?7;M-X]/-RS[K55-W[^?_5\[1UV]34]U99\SO9TY3;U7_3/?(
  1039. XMTUU52_?C3&/(9V_W2D7(O,_O2UWW9]O=65EK[^O.45'*T\U14\_,5T;/8W??
  1040. XM:V?_8]WC2=]%Z\M-;\)'3&--U\A=9U7507?/Z\Y,V>-?8V_5QTX^Q'?G9UE$
  1041. XMU]U5P45$2O_/6\==_\M%7\_-9\M5157&S,;?0TACQ_]OVU7W2\_W548_T\UG
  1042. XM3M'.QTI+=UG7=\=1VT-+[V?+Z__OU4-?S4O;:[M9:V]33-M;S[K.XTKOV]''
  1043. XM6TU33\QO=U5;0\]G_T;7V\3_1%%+X\91/L9CWV-WZV?'7\CG2MWOS;]7YV]K
  1044. XM3UO%35M7W=M)6U%1WU79X]WK0-O!U\[=7VOG_\'58TOG=T-)T\+%5SKGU]_K
  1045. XM-3]?Y]/70__KT]W91N=WZ\.\RD-19__9S^/)T5\]-DA-:^-W_\UW8_]OQ\'_
  1046. XMZ]G31UE;U_]30U?-WV/1-SS13=7KR<3&_S="RV_+=W=?7>/;.6?"T=^S/4A;
  1047. XM0,_.V<E9XU%%3-'W_S^]1O=&:^.[M[]GSE_+]TH_[\S364%.3-7W2V_;W]WG
  1048. XM+C:G5<BN)2NLK\E;/+S_/D)-Q[3#6TM=P,]3=]7(RE].3.M944]/Z_]/]]<_
  1049. XM5[8]O44E1I^S/-M7+-.L/$>\JT\U2?_37<1C/CS'Z]^[6TA7-L=GM\MC->--
  1050. XM2FO3LULM)J"MX_\Z.4"[JU$]KJI#+/_3RK?5+UMKVT,\+[S+/D5O/$?K-U>W
  1051. XM4<Q*N5\HK9_+3UO;.[VGN"TLJZDQ-;E*)ZVI)C[&2#)!L+U?7S] []E,2;IW
  1052. XM]]VP-".\G]$F9[[O3+OW4<JXR%TQL^M.,*9G,4$TQ,??Q3 TW;-7+DVL6R=K
  1053. XMJ:DT(D*HJ4PO5T5GL<HZ4:FJ*Q]GJ[Q$3S]$1<B_S..V7S ^J:YC/#3;3;ZO
  1054. XM-]T^+#FOI; @)S3%S;^G[ROC2$K7O:;O*2R\/]FR2\9.U\9-S-]G,U>YQN/G
  1055. XM+K"I)"ZLP+W?3CT^9[.O9TC+.F,]0DRLM?\^)SM(V[6_O<(N.%6[9]7(T^,U
  1056. XMP;R_;]TW-JG,-;*]U[#3*BEGK:3;,2>WS3_)Q5$YT<@[6].WOTT\3<C,T4-C
  1057. XMOKLT0\S*Q$Y/2M&V_SM7MCTYO*W -SU$V>M&/>O,O<[=/#U+,W>RQ=-W/TC#
  1058. XMOL/%]U5/W_=OT4_O3E'_[TE"LK=)+UW/S&L^0-6ZL.,Y.4'WV;[5P>M?43G,
  1059. XMK>\[[U.Z8S4SOK4_9]U3RO?)VV_#OU4U6TK.]]O(9W=(WU]OVU/GNT%'7]FW
  1060. XMRTE91U7,UV/)ZSE/=\?*3]W_8T1CR]/?XV<]76O,[]?,/5=CS+W(1TX^8[>T
  1061. XM/E7(YT1"2[Z]N&]"25OKS]_'8TUC24Y1Z]?*WU=)3\=7_VOWPO=;5V=/U_]7
  1062. XMWW?O[^M)56-OZ\M;:]-//^>[T6--3]_?]V-.Y[U17=V_3V=,SNO?S%EK7_?K
  1063. XM3]7+W^<_4>].X]OWRE=%]^-1S^\X/]/!;TM-1%-55<O%S&OW=]5/U]-CQ+[3
  1064. XM6TO1O]U#/TW,[__/6VMC:T-"W5%=Q<#+24(\R<]%[__+R6]?0=WCV=7=R$;C
  1065. XM.$2UXT5)4^=;3^^]QC]734/=O=-$]^O_5=&[1F?GZ]O;RUU-3E?=W7?K6>M!
  1066. XM2,G?ON-);_?1QK@_6V<_P]OW;UWO.TG=4]G-YTA*V?_WXUE(;]7_R-MOZUGG
  1067. XMWV]CX]579W?C8TC)YUMWUTW746MW[]?CW5UW_TIKQ\EW2,S*2$7_S5WW54UK
  1068. XM=\['449C6^?=S^M;ZW?13D]?3]7%SL_K[]MG73[76]_)5]T_7^-.UV/7RO]G
  1069. XM6]_O3^/?Q%E!V>_CPTU73\M90=M-]\OK43W3;UOG2-&Z64P_YW?3SN-W:S]O
  1070. XM;\O/5U?WR=?O45%?SN]/[]-K4^OW:\I9V4]K6>O1RV/?24KCW=--;]?_7495
  1071. XM46?-35%O=[Y32E/'S/=+6=7*X_=,V?=/3-W=S]-G3E_*5=GO=\-754?5V573
  1072. XM7>OC7UOCXW=O=TW/T4G574I?SG=-_^?73?=?5\C,TUM7]]%K3,OK3==-/\]O
  1073. XMS%-3W>_5]UW+X]M$;]O=WU?5[TE?7\S12%E?V5-3S/]O:]'5;^/GZU%.]\K5
  1074. XM;TO_R$9WZ]?9W^M%9T[_6?=W9]]K37=55]E?WU&^VT/55]7=7<K;[]%CS5E)
  1075. XMYU'3ZTW;:\]53^--6U/GTT_3SN?576-W9__7VV=W3E'K;U];S<U/8U5KRW=K
  1076. XMV6MWX_]+7[W/YU5+WU]KU]UC4]MG_^M(W]G.W4IK]^M3Y]E=9VMG9TKCS5O?
  1077. XM44_/66O74U'O7V/,Y^-=ZV=5Y^O9V5=?=UUKYW?33.]WW=M57_?+6^OK5V]=
  1078. XMR^MG[U??3E/=T>__ZUM1U]G1V>M98^?37]=G:U5CRE%?2V_/_U_KW\GW25U;
  1079. XM[^OG=UU72F/CS]WK8V-;5^M.:^?-W4YC37?=W6_3S=MO[]WGRN-C7^_WWV-7
  1080. XM8U'O;T]56<_=U4SW3%?=:TG?Z___9W=CV^_CTT]O[]/-Z]?C9W=WSVMKYVOW
  1081. XM6?]C5>-?7^/O[TM3W]W_=_]?[^O3XV]G=^=54??.S]%+9^/=U5U%5^/?VTM+
  1082. XMWV_CT5]O4W?GQ<W76V=97=__[]=G4T5.4VMGX]_=[__?:]_(WW=;ZW=756OC
  1083. XM65%3_^?=]^M(TTWW]]W5S\Y.1FM7;]EO:UWWUUU7S]ECR=4\64S?Y^MWZ\3;
  1084. XM.UM.P\Y73L]C[UECW\[!;^];S<]W6U/7V=-=7UGWZU%;:]_;[T US,!.O4$R
  1085. XMS;9GPUW,SDL_3./#ZUU$_^?#7U-.Y\RQ,UU&MFN^0D-(T4_!S]N[VU=*,3NM
  1086. XMKDI12C<[Q=/_PK7*/3Y,ZV?7R4Q'55%,P]79WS)/V[VZW4A7OT-$.KZVN3U7
  1087. XM=R[/S<)9R+Q7,TVVP$_CXT5;4T-+O;G!VT!/RE=KT=%19SX_UV,^/\F\/%F[
  1088. XMMDI)-MNNKJDL'TBGN%.YNSQ,OBPRQ+=5.4/12EUK7]N^73]GT]/KN[0Z3;/?
  1089. XM,M^_US[5R4,GUY^Z2/\D*+2MQ$K*22[GSN_KN%5(]SQ"L*]50,BQ."M"M[2\
  1090. XM.3L].[S*8V>_M?\?)Y^?/]DV(&.FKU'/N.\I+[ZJN:XN)R[9MN>]MCA!7<? 
  1091. XM5W<^74Y/N<=+1,#$+"JOGTPR52(HHJIG/KNX+C?+O4"PIS8L/CM;I<DS3\99
  1092. XMVT_!=TG.5TY1R\[$XTHF5Y^D2#$L*L:?L4#/R30JY\C)QZG1)#!#2;JMXST]
  1093. XMQC;CLZK!72LI/;JFKE4H/E5CP:RU/3XN2,:ML:U13#%#WU_"N=E3*"3?NZ^Q
  1094. XM3SCWWUOWS\0\/\[(S4%G,U>PKDT?:ZFNJ;HC*"ZSI;Y%U]D_4=%WQ;3#-3%9
  1095. XM7]&]PF]G8_]//;^WUS]&5>/WU\\Z3KA=/O=*35>[T5E=QK]"*[^K/45WSG?O
  1096. XM/C5)S\V_[]W=SL35]]]C0/=?;\W;T^-;67=/4]U+2L!;1DM&OK_%5SM$R[^[
  1097. XM8U,X2,W)R&O/3%%,8\C-V3]19\C=7V]=P$=(6?_'O>]72T]OU]/5]]M934J_
  1098. XMV_];4U]/Y_]OT_=5=^]C[VOCX\[7557WRT[54]_O:U%*T]]53??KQMU&2$G_
  1099. XMS7=15>O(T5=+UW=,XU7GSO]W65/)R-UWS^=;;]/=5<S?35%C]U7=W]'73E%G
  1100. XM55_,Y^?-8UUK3]?G5TCWR]]*3DY)W4WCQ-G#6UWO;]W=_U71_^MC6[W)33U(
  1101. XM]]_7SLW?SN-$2'?7;__7]TU-5TOG55/.T\O=_U-1R]/CW]-K[]\Z]\Y,4T[_
  1102. XM]T]K4=O;;]M?:^=CYV_#R\KOY^M7[^?3S-W-=U%#W]__UUWK1E%9:]OG/U%G
  1103. XM[VO-V4U92</17]OGRUM3;T]WU]?_ZUG9ZU__1&?;S<7=ZTY1:]G32NO_[UU=
  1104. XMXV-C[]M?7<U99U%1[U_7V=M?:_];S^/&]T_/W5D^2F?*]U5O9\];ZV]OS%E7
  1105. XM;^?/9TW_Y_=-SU/K9\S;2.OKZTY-66_WR<QC]U??74K73\C5U^]CW5UG=]G)
  1106. XM1%G;SM5*=S_1:]M=3VO.YU%/S__CV5M%PMG=2V?(ZV-=65M"_\[!]TM;4__9
  1107. XMS-E=__=W1^O?]W?_TVO9U5W_W\M-[UG/S4I-V>MCT=]?YUU924UG[]-;YT=;
  1108. XMR5=WR,3;2U?_SF_7:^]?9TS7]VO.]V]1W^_;ZU71W5M-S>?W6W=;64KCW6_=
  1109. XM7]=C7\]OQN-3]V/17]EC]UWW;T[;RV-?S6]OUU=W8U==WU_W;^=W3]]=TU%3
  1110. XMSM'O:TO/9VO9;\U=4U=GS6=7:_?C:^O96U/9Q_?G7W=W76/7SEM95=5W35O/
  1111. XM=U7G3M]176]9Z^/WSD]7[TSG=_=CY\9=6^/5V]UGS^]9Y]_9;]]*:]U-_]?G
  1112. XM:T+=34WW]^M7=\OK:]WK7]WW:V]K=V-C8^=G[]O58U?KZ^_9Z^OW9V=?3E_+
  1113. XMS-U=66=7;U_)WV?G_T[C6]?,Y]U+9_]W8_?955UK7U=?9]EKV>M?]^]KVUU.
  1114. XM]]WWV^MK_VMO3&_/T<Y.2UU3W=EW_VM/XW?K8V?KW=O_77?KZ]/G=]MC5U==
  1115. XMX]_;:V-;:^_=U]OK_UMG_U%WW>/C7>-W;VM1U=7K:]WK_UUG_V]OY_=K7U-G
  1116. XMZ^O9;V?_]^/_4UO7Z_]C;UU-[]EKW\_7YV_O[^O7ZU]O8UEK:^=GZ]5=6U?K
  1117. XM8]UC_U]/=_]=8_==[V/_;^?G=\WK7V_=T]GOY^/OZ]UG;_]78VM9_W==YUO?
  1118. XMYW=?6>__Y]U?6UGC8^]?[]G=]U5=W]?'XT]?[^O_4VM;W]EK3EMCY^O_;V=?
  1119. XM8]?=T6MO;UUW[VOCYVM-3U=?U=MWZ^O___?9W]?C9VO_47?_U]UC65M;8VO?
  1120. XM;U]98VOCWV_G=U?K;U/7X^MG7__;=_?W_^O)6U];Z]MO:]O=RT5.3M77WTIC
  1121. XM5^-O7_?GW>MW=V/3V_=98]W5WU]G9V-W9VOCZ^]G0V^^5=_K0D?$W>OO9]UG
  1122. XM1DU3SNMC;UU/U<W95U-/Q5_9[^?G[\<_6V]79\=7W;Q/249-NJM&.SI*][['
  1123. XM3MG.XT=.Y]_K4VM.9^OC4<O5W=M"1=W1QF=*1=UK6U%KQ]/5/L\^T<S-7>//
  1124. XM8TY.RL7O_VM+45];SLYG4?]W8\K75=FX.D'CQ;WK5RPWS<'?P+'O-2]/P+JO
  1125. XMLR\LW\7_O;#C-$]70N.XQG<_745&;\COS=%G3E=)SLW#R,[3/C-(O[C3ST L
  1126. XM+LZIIMLR(B3"J*K$QCLH1LVXN;C,,C9 7[^OR$A)O/\]0\^_SC@X3T/$NST_
  1127. XM2V_35]>JL#%#U4S3LMDL/\&IN3$N-C>^J[K7-RPO1KFOLK\_,4-GV\*WRD],
  1128. XM74J\K]LP-L[O/^?*7<A**B^NI\,[+D;,S+7)-#PS.JB?+BDP,U^LI[D_+C\[
  1129. XM5[>JO&,X)BS#HJW"-RXPOZV_NT]+/4 M2*RKV2X]+S.^J;QC.^]!.E6YM*_,
  1130. XM,R\LRZVRV<%"/#T^O<G(4T ^R-G7Q$/%9^?1S4?;U5]CV[K=0"Y3Q^/K/CQ9
  1131. XM;TN]N+Q/7SDPOJJP+"C+R:^J0C OYZJV/4[?/TW7O%G T5$P.N//N[K55=U3
  1132. XM2%O1Q7= .D[50G?50CS77=W;]^-'V;FVON].62Y"L'<Z0\S'S.M'URO?Q+#9
  1133. XMU48O/G>VSTA55VO/R\376573R^]O13W9SV-91T]WS\MW35U5Q-/=4T-7RL;+
  1134. XMV=MO9UG/T=M=6UO7SEU/,F-/5W=?/E'O8\WC;V/GQ=/3U5=&W]W7T>OK:V?O
  1135. XMZ]7=7?_/[TM*8V?.TUUO5=%G:]O;W^]C8]??64Y/Z^/C34M#_]/7;TI-W<C5
  1136. XM:UU;3EUK=\?C[VMOW\_9V^_9T6?W=VOGU_==9^].2./.T=E?56_KS\U3__]G
  1137. XM:TY35U-=55757U];76OK9\S?R>M?]W=?8V_W]\]OXUW1S5M-2M%G=]'W]^OO
  1138. XM55=OV]GGU]]135M7V>M;8UE;Z^_O8]G=[__K]]O1_T_?2TEG:^=?6TU?]^/C
  1139. XMT>-W3-]CV\[1V^M?6>MW5]W=W>??545/Y]'=WV-72.?3T5-1_^?_=]GW;U77
  1140. XM[TS?[]'9]VM.:]WGZ^]19^MC_]];:]O;T>M55U5CSN_KUU5W6^_C]]'K8U=W
  1141. XM;V=W9\UO:V?K76_OY]=7XV=?X^OG645W_]=;Y_?=7VO97>-K76O756=7V>??
  1142. XM7W=C8]O=W4]=;W?W=W=;=]_-[_];3>=-X__9V]G_;_=?=W=CS%%9W]_'76-+
  1143. XM7]OC]UEW]V-7Y]]CSM?_2^/1[UEO=]UO:^_C2%M=W]?O;U]39^?1]_]WU5EG
  1144. XM_UMK8W?C;^M7[_?.555CX\_O6^OG:^?1Y]]97=E)=^_;W5-;1M5=7=O5W5]-
  1145. XM6^MKT^-?ZUE7W]]1P_=59V_CU]WWZ]=G3>]WWV_C76M39^OC;]?;ZV?K;^/C
  1146. XM6W=39^OKYV=O]W=K6\WK7>MO9^]G[_?C=U___UEOT6]?6\[?4>_;=UU;W^]/
  1147. XM5]-G8UWOZ]-9[_=C]^_KUU-9V=G+7=MW7UWCZ\]G_UEW_W=76^=W7UM9WTY;
  1148. XM7^=K:]_5;UUG[^/?]V/!XUEO:]GKY^?K:V_C[__;9U-K67?7]^-1]V=5X^_C
  1149. XM7U7?;U?9V5%WY]OWZW?_[__?]U_KX^M=9U]WY]UW]U]5;_=W8^?;:U]C;^=K
  1150. XM_W=WZW=WWT]GSN-G9VMO8UUWT5=W[W=3]_?C;__;XUWG=^?K5UWK5V?WWW=C
  1151. XM[U%?V=G365-98U5=Z^OO7V_-:_?W[W?W[]E=:W?._U__U5]97>??]V_C65=W
  1152. XM]]W__]E94VO57^OGW>]?W>OK3UGGW57W[_=K4]]W65_?V6]=9^__8^_C:__;
  1153. XMYV-?Y]5;6^M=35_?[T[=S=?=Z_?;Z]G;_UM;:^OK9UWGZU=;;UEG:^]O75_W
  1154. XM=TMW=_]C9^]C=VO-V5W_U]/?9]G?_V_GWUUK=V]W7V/C5V-W=^OK9_]K;^?7
  1155. XM8UW_YV-;Y^MW]VOK:VOGT_]WZV_K7V]W6V?_=U]19V_G]W?_8V?KW=W_ZV-O
  1156. XMYV-G_V]?3U]K9]G7X]_CX]_=V=?=]_]KY__W_V/K8U5O=UMC9UU/56=W6V-O
  1157. XM75]9W=MGZ]_CV^_CU>]KZV]?YV]5_W??WW?;U]%=6^OC]_=755OO[VMC6?]K
  1158. XM=W=WW]__=U_OV]UW_V?_[V]GZ^/W_TU=SFMKYUM.X]OW_U?C]VM?=V-W[^?W
  1159. XM9V_=ZV]K;^O=;]UG=UWG16/1S&?W3U'3U__O9V_#W49)66O,U4Y9;]EK6^-O
  1160. XM=V?_8U___U]OY]?5VU5O_]GO3DW_T]W_3V?_W5EW7W=O:^OOV^-=2F/CQ]W?
  1161. XMV]'9/D;,QLS'2S5GR<#?SE4R04W!P,L[.$7=X]6ZNUTV-4S"MZ_,1TQ52\VT
  1162. XMN%E!2DQ)56?CT7<[.4W)UU_/O<O_3TE!6:Y906>^PSXNS:J_*"GGJK),4>L]
  1163. XM2>^TN^-$+E'*QL?!N$DY/O_&NM-+255)36_'QE<\.5EKW;GCY]%(+C/&IJ] 
  1164. XM6<4\,T6YN\]/R[E-,CM=OK#C74\X/4W#K;W10#U):]_;Q-U-1#[*P,'W.3'*
  1165. XMQT=3N+/7-RYGL;AK;\9 +#:UI<$L,U6UK3XP2D(\7;:OOBXX5]?'NKW)YS$N
  1166. XM/+BU]SI=65%$.,^E:S,TU:['.TGKL:H[(S*^MN]GNM\\+4S"J,HS*DK%YT35
  1167. XMP_]31KN[]S_?S,G YVLX9[IO-SR^QG<S5;NZ/C8K0ZN?21\A5:>TN:_'-3--
  1168. XM[[RLM30N3=G+S<SOR<=9/U%-3U'9L]]$7=T_0V=W/TZWKKX].4=7X[&N,R$G
  1169. XMO+&XJSDI2$C_K-T\,TV^O;A'.M=+0;BWU2XI2:6GT2\PW<,T-]&Z64Y(;[9O
  1170. XM.D;CI*4W-#_?OEO&M&\^*CW=MM=G/>_&14S*5^-OY]&VN3H_P+6Z5SN]USHT
  1171. XM/MG :UW?W4)GRTOCO]E7/3I,Q;Z]:UEC4??.:TA'X[Q?256_NDTZ5[;&2S[.
  1172. XMN^] /,NY23M*56M5V[I-0E77S'=5S\K3T==?/O?'[SL_X\W?7T_;OV]&2E7&
  1173. XMXS_KQ=G;3T7CP,]-X\/!V^-325W7R._C44M524M7:T%9[TE#7<K%X^_?S\[/
  1174. XM=TA;V[_1]^?!R5O_;_=G54!#4=O=0T!9W\EK/3W5R=7(R=%347?3QMM3:]MG
  1175. XM]]?K3O==7=]C0U515\*_TUE.:V_CRKGK:T)"8^?_4UMO55=*8]];:^?(T4U*
  1176. XMW>?)TT5&9]O7U<C"S]'7]\?72T!,7UGK=V]33DG_T\]G7??GYUUOU<?9Z]WC
  1177. XM8U]WT<K1;T1,5UWW0$!?9U].5\UK6]O,U='?U\G3U<C*R]_KYW?_5UOO64I'
  1178. XM14@_;V=.0T3W55]WV]OK]U?/P<'*Q[B\SN/,P>=CRLS?2D]//TYK7S-974DS
  1179. XM.DE36TA355=._]G-P]?5Z\J^O+K*Q+J_S.O9V\+#6U-CYV-)/#M.1UE.1T \
  1180. XM2UU?1E?O6T[O[]W=T]/!Q\7)W^?1R,_=X\C_7W?W7_];8]__9TI/36]-7TQ.
  1181. XM9V]5;\[1=VMKS7?3Z_?CT;O.045;S,'33%E)5U'KR5]!35M91$Y'_\[._^=C
  1182. XM9^?CW;_$=U?KS<6_T=V_RUWC[\7G63]+2U5-23U%/T@]1$9':VO)Q,O"PKN^
  1183. XMP<C5R^_9S='974E"4U=-04))3D=%3./WU]';QN?/PLW,R,K);V?38VM,45U.
  1184. XM/T-G4TE#1%]=24=)R.MOR,?7V\JZNL')T\;%S.OW_]G?6V]3]U5.74Q)2D8]
  1185. XM.3U!/4(\75\]36O?]]_.Q\;'N;J_O;J]N;W%QL2^V__93UEW5SPY/T<_.3Y)
  1186. XM/D)+3$E766]15=GC=]?$S,S7OKW/SLK-5>OGTV];ZTI1[T]C7V?____OW]/.
  1187. XMX]E=X^-514Q76^](2VO=]V=KU]?3ZW?K_^O7=V=OV^]/7^OC6^?K8U%;VV]G
  1188. XM7]/-;^-W_\K7Q5G1T]'?9]_;56?O349%2&=.04Y375E9W]]=9^/?U=W7T^OG
  1189. XMRM/5S\S,S.??S=UW_V=165WW3C]7:TY71%U30U]=9^_OV^_CR<7OZ^/7SO?O
  1190. XM_U5GZ]'__^OKW>/GWUU-]V-C5U]C7U]?V]G_:V]W:]?5V6-57]%34=/WVU]C
  1191. XMW?=576-?:UM54U'_;_]17^=G]]'-UV]KW^/CR,_9V=_7Y_?OUW=?]]WC3T]9
  1192. XM64U-1U=9:U-O9TYG;V?7[]WGV=?"=]W=X\W=V=WO=]/K[U=.44M*65=92C])
  1193. XM8V=;V_]CU\KC_^_3V_?GS-/?;^_GV>/?[^-W[]?=:UM976-O=U5(55]W6U57
  1194. XM9TU1S^/W9U_G_^O,6V_1R=GWZ]_98U-CX^];8UGGV^M?75W7_V/W7UEW=V==
  1195. XM7V?W=V]O;]GK;]G;]W=96]W9T\1?_]W'T?=K9_=13&M+]U=-65]5:_]K8VM;
  1196. XMV6MO7>O;T?=?Z]7/T6-9U]7/W6-97]U$6>/'O]-)1$I;]^]O=]-=]V_CR\[7
  1197. XMY]_K5UE-2T]C8U%)5U]K5^_?=]W5U>M/;^/7U^_KZUUC[]O;WV]K54A;Y\GK
  1198. XMS=L^9\K$RLW90D],U>?_7T=GS'=?RK],0#I7U\WC3#4[5]W$N[C-44]*_]G)
  1199. XMSVM-/SQ1W<#(Q,+.:U=*45?+=T-&45D_-T:XL3\U8[BWRG?.457+=\;;;TU3
  1200. XM4^M7[\1K54_;T5E%3SM15]_$QUE!.T9KO[ZSV4]52$0]7[.O5SI,6UUWO+:]
  1201. XM7V??_T9#6\W&VU-;445-X]&_P%=%/UW76]7?T<\^7^?$O^<W654Z2MVZNL[;
  1202. XM.T2WS\?)/T8U4[^\6U=(_[7_2T5WUV/.S,),14WKT\SGR]- 0C[;O=M)75=W
  1203. X23TE)Q<KW0.>^W5=*2;NNKB@@
  1204. Xend
  1205. END_OF_FILE
  1206.   if test 18655 -ne `wc -c <'sounds/evillaugh.au.uue'`; then
  1207.     echo shar: \"'sounds/evillaugh.au.uue'\" unpacked with wrong size!
  1208.   fi
  1209.   # end of 'sounds/evillaugh.au.uue'
  1210. fi
  1211. echo shar: End of archive 10 \(of 26\).
  1212. cp /dev/null ark10isdone
  1213. MISSING=""
  1214. for I in 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 ; do
  1215.     if test ! -f ark${I}isdone ; then
  1216.     MISSING="${MISSING} ${I}"
  1217.     fi
  1218. done
  1219. if test "${MISSING}" = "" ; then
  1220.     echo You have unpacked all 26 archives.
  1221.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1222.     echo "merging split files..."
  1223.     cat blocks.c[12] > blocks.c
  1224.     rm blocks.c[12]
  1225.     echo "blocks.c done"
  1226.     cat bitmaps/earth.xpm.Z.u.[ab] > bitmaps/earth.xpm.Z.uue
  1227.     rm bitmaps/earth.xpm.Z.u.[ab]
  1228.     echo "bitmaps/earth.xpm.Z.uue done"
  1229. else
  1230.     echo You still must unpack the following archives:
  1231.     echo "        " ${MISSING}
  1232. fi
  1233. exit 0
  1234. exit 0 # Just in case...
  1235. -- 
  1236.   // chris@Sterling.COM           | Send comp.sources.x submissions to:
  1237. \X/  Amiga - The only way to fly! |    sources-x@sterling.com
  1238.  "It's intuitively obvious to the |
  1239.   most casual observer..."        | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
  1240.