home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume18 / xboing / part11 < prev    next >
Encoding:
Internet Message Format  |  1993-09-13  |  59.3 KB

  1. Path: uunet!news.tek.com!news.cna.tek.com!not-for-mail
  2. From: billr@saab.cna.tek.com (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v18i070:  xboing - blockout variant with color and sound for X, Part11/30
  5. Date: 30 Aug 1993 10:27:52 -0700
  6. Organization: Tektronix, Inc., Redmond, OR
  7. Lines: 1693
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <25tdao$hv7@saab.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1870
  12.  
  13. Submitted-by: jck@kimba.catt.citri.edu.au (Justin Kibell)
  14. Posting-number: Volume 18, Issue 70
  15. Archive-name: xboing/part11
  16. Environment: X11, Xlib, XPM
  17.  
  18.  
  19.  
  20. #! /bin/sh
  21. # This is a shell archive.  Remove anything before this line, then unpack
  22. # it by saving it into a file and typing "sh file".  To overwrite existing
  23. # files, type "sh file -c".  You can also feed this as standard input via
  24. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  25. # will see the following message at the end:
  26. #        "End of archive 11 (of 30)."
  27. # Contents:  highscore.c include/keys.h sounds/applause.au.uu
  28. # Wrapped by billr@saab on Mon Aug 30 09:14:25 1993
  29. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  30. if test -f 'highscore.c' -a "${1}" != "-c" ; then 
  31.   echo shar: Will not clobber existing file \"'highscore.c'\"
  32. else
  33. echo shar: Extracting \"'highscore.c'\" \(27771 characters\)
  34. sed "s/^X//" >'highscore.c' <<'END_OF_FILE'
  35. X#include "include/copyright.h"
  36. X
  37. X/*
  38. X *  Include file dependencies:
  39. X */
  40. X
  41. X#include <stdio.h>
  42. X#include <stdlib.h>
  43. X#include <stddef.h>
  44. X#include <ctype.h>
  45. X#include <unistd.h>
  46. X#include <sys/time.h>
  47. X#include <sys/param.h>
  48. X#include <sys/file.h>
  49. X#include <sys/types.h>
  50. X#include <netinet/in.h>
  51. X#include <pwd.h>
  52. X#include <X11/Xlib.h>
  53. X#include <X11/Xutil.h>
  54. X#include <X11/Xos.h>
  55. X#include <xpm.h>
  56. X
  57. X#include "include/error.h"
  58. X#include "include/misc.h"
  59. X#include "include/main.h"
  60. X#include "include/audio.h"
  61. X#include "include/special.h"
  62. X#include "include/init.h"
  63. X#include "include/inst.h"
  64. X#include "include/stage.h"
  65. X#include "include/blocks.h"
  66. X#include "include/ball.h"
  67. X#include "include/sfx.h"
  68. X#include "include/score.h"
  69. X#include "include/paddle.h"
  70. X#include "include/level.h"
  71. X#include "include/mess.h"
  72. X#include "include/intro.h"
  73. X
  74. X#include "bitmaps/highscores.xpm"
  75. X
  76. X#include "include/highscore.h"
  77. X
  78. X/*
  79. X *  Internal macro definitions:
  80. X */
  81. X
  82. X#define GAP                13
  83. X#define NUM_HIGHSCORES    10
  84. X
  85. X#ifndef MAXPATHLEN
  86. X#define MAXPATHLEN 1024
  87. X#endif
  88. X
  89. X/*
  90. X *  Internal type declarations:
  91. X */
  92. X
  93. X#if NeedFunctionPrototypes
  94. Xstatic void SetHighScoreWait(int newMode, int waitFrame);
  95. Xstatic void InitialiseHighScores(void);
  96. Xstatic void SortHighScores(void);
  97. Xstatic char *GetHomeDir(void);
  98. Xstatic void DeleteScore(int index);
  99. Xstatic int LockUnlock(int cmd);
  100. X#else
  101. Xstatic int LockUnlock();
  102. Xstatic void DeleteScore();
  103. Xstatic char *GetHomeDir();
  104. Xstatic void SetHighScoreWait();
  105. Xstatic void InitialiseHighScores();
  106. Xstatic void SortHighScores();
  107. X#endif
  108. X
  109. X/*
  110. X *  Internal variable declarations:
  111. X */
  112. X
  113. Xstatic int nextFrame = 0;
  114. Xstatic int endFrame = 0;
  115. Xenum HighScoreStates HighScoreState;
  116. Xstatic Pixmap titlePixmap, titlePixmapM;
  117. Xstatic int waitingFrame, waitMode;
  118. Xstatic int sparkley = 0;
  119. Xstatic int sindex = 0;
  120. Xstatic int si = 0;
  121. Xstatic int scoreType = GLOBAL;
  122. X
  123. XhighScoreEntry highScores[NUM_HIGHSCORES];
  124. X
  125. X#if NeedFunctionPrototypes
  126. Xvoid SetUpHighScore(Display *display, Window window, Colormap colormap)
  127. X#else
  128. Xvoid SetUpHighScore(display, window, colormap)
  129. X    Display *display;
  130. X    Window window;
  131. X    Colormap colormap;
  132. X#endif
  133. X{
  134. X    XpmAttributes   attributes;
  135. X    int             XpmErrorStatus;
  136. X
  137. X    attributes.valuemask = XpmColormap;
  138. X    attributes.colormap = colormap;
  139. X
  140. X    /* Load the highscore title pixmap */
  141. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, highscores_xpm,
  142. X        &titlePixmap, &titlePixmapM, &attributes);
  143. X    HandleXPMError(display, XpmErrorStatus, "InitialiseHighScore()");
  144. X
  145. X    /* Free the xpm pixmap attributes */
  146. X    XpmFreeAttributes(&attributes);
  147. X
  148. X    /* Setup the high score table */
  149. X    InitialiseHighScores();
  150. X    ResetHighScore(GLOBAL);
  151. X}
  152. X
  153. X#if NeedFunctionPrototypes
  154. Xstatic void DoTitle(Display *display, Window window)
  155. X#else
  156. Xstatic void DoTitle(display, window)
  157. X    Display *display;
  158. X    Window window;
  159. X#endif
  160. X{
  161. X    char string[80];
  162. X
  163. X    /* Clear */
  164. X    DrawStageBackground(display, window, BACKGROUND_0);
  165. X
  166. X    /* Draw the highscore title */
  167. X    RenderShape(display, window, titlePixmap, titlePixmapM,
  168. X        59, 20, 377, 37, False);
  169. X
  170. X    /* Let the dudes know how to start the game */
  171. X    strcpy(string, "Press <Space> to start the game");
  172. X    DrawShadowCentredText(display, window, textFont,
  173. X        string, PLAY_HEIGHT - 40, tann, PLAY_WIDTH);
  174. X
  175. X    /* Set the message window to have the other display toggle key */
  176. X    if (scoreType == GLOBAL)
  177. X        SetCurrentMessage(display, messWindow, 
  178. X            "<H> - Personal Best", False);
  179. X    else
  180. X        SetCurrentMessage(display, messWindow, 
  181. X            "<h> - Roll of Honour", False);
  182. X
  183. X    SetHighScoreWait(HIGHSCORE_SHOW, frame + 10);
  184. X}
  185. X
  186. X#if NeedFunctionPrototypes
  187. Xstatic void DoHighScores(Display *display, Window window)
  188. X#else
  189. Xstatic void DoHighScores(display, window)
  190. X    Display *display;
  191. X    Window window;
  192. X#endif
  193. X{
  194. X    int i, len, plen;
  195. X    int xr = 30;
  196. X    int ym = 75;
  197. X    int xs = xr + 30;
  198. X    int xl = xs + 80;
  199. X    int xt = xl + 35;
  200. X    int xg = xt + 55;
  201. X    int xn = xg + 90;
  202. X    int y = 180;
  203. X    char string[80];
  204. X    char string2[80];
  205. X    char *p;
  206. X    time_t    theTime;
  207. X
  208. X    /* Read the high score table */
  209. X    if (ReadHighScoreTable(GLOBAL) == False)
  210. X        InitialiseHighScores();
  211. X
  212. X    /* Draw the boing master at top of the list */
  213. X    strcpy(string, "Boing Master");
  214. X    DrawShadowCentredText(display, window, textFont, 
  215. X        string, ym, red, PLAY_WIDTH);
  216. X    ym += textFont->ascent + GAP;
  217. X
  218. X    /* Render the boing master's name */
  219. X    strcpy(string, highScores[0].name);
  220. X    DrawShadowCentredText(display, window, titleFont, 
  221. X        string, ym, yellow, PLAY_WIDTH);
  222. X    ym += textFont->ascent + GAP * 2;
  223. X
  224. X    /* Read the high score table */
  225. X    if (ReadHighScoreTable(scoreType) == False)
  226. X        InitialiseHighScores();
  227. X
  228. X    /* Explain that this is the roll of honour */
  229. X    if (scoreType == GLOBAL)
  230. X        strcpy(string, "- The Roll of Honour -");
  231. X    else
  232. X        strcpy(string, "- Personal Best -");
  233. X    DrawShadowCentredText(display, window, textFont, 
  234. X        string, ym, green, PLAY_WIDTH);
  235. X    ym += textFont->ascent + GAP;
  236. X
  237. X    /* Draw the titles for the highscore table */
  238. X    strcpy(string, "#");
  239. X    len = strlen(string);
  240. X    DrawText(display, window, xr+2, y+2, textFont, black, string, len);
  241. X    DrawText(display, window, xr, y, textFont, yellow, string, len);
  242. X
  243. X    strcpy(string, "Score");
  244. X    len = strlen(string);
  245. X    DrawText(display, window, xs+2, y+2, textFont, black, string, len);
  246. X    DrawText(display, window, xs, y, textFont, yellow, string, len);
  247. X
  248. X    strcpy(string, "L");
  249. X    len = strlen(string);
  250. X    DrawText(display, window, xl+2, y+2, textFont, black, string, len);
  251. X    DrawText(display, window, xl, y, textFont, yellow, string, len);
  252. X
  253. X    strcpy(string, "Time");
  254. X    len = strlen(string);
  255. X    DrawText(display, window, xt+2, y+2, textFont, black, string, len);
  256. X    DrawText(display, window, xt, y, textFont, yellow, string, len);
  257. X
  258. X    strcpy(string, "Date");
  259. X    len = strlen(string);
  260. X    DrawText(display, window, xg+2, y+2, textFont, black, string, len);
  261. X    DrawText(display, window, xg, y, textFont, yellow, string, len);
  262. X
  263. X    strcpy(string, "Player");
  264. X    len = strlen(string);
  265. X    DrawText(display, window, xn+2, y+2, textFont, black, string, len);
  266. X    DrawText(display, window, xn, y, textFont, yellow, string, len);
  267. X
  268. X    y += textFont->ascent + GAP / 2;
  269. X
  270. X    /* Draw the line above the table */
  271. X    DrawLine(display, window, 22, y+2, PLAY_WIDTH - 18, y+2, black, 3);
  272. X    DrawLine(display, window, 20, y, PLAY_WIDTH - 20, y, white, 3);
  273. X
  274. X    y += textFont->ascent;
  275. X
  276. X    /* Draw the scores into the table */
  277. X    for (i = 0; i < NUM_HIGHSCORES; i++)
  278. X    {
  279. X        if (ntohl(highScores[i].score) > (u_long) 0)
  280. X        {
  281. X            /* Draw the rank */
  282. X            sprintf(string, "%d", i+1);
  283. X            if (ntohl(highScores[i].score) != score)
  284. X                DrawShadowText(display, window, textFont, string, xr, y, tann);
  285. X            else
  286. X                DrawShadowText(display, window, textFont, string, xr, y, green);
  287. X
  288. X            /* Draw the score */
  289. X            sprintf(string, "%ld", ntohl(highScores[i].score));
  290. X            if (highScores[i].score != score)
  291. X                DrawShadowText(display, window, textFont, string, xs, y, red);
  292. X            else
  293. X                DrawShadowText(display, window, textFont, string, xs, y, green);
  294. X
  295. X            /* Write out the level reached */
  296. X            sprintf(string, "%ld", ntohl(highScores[i].level));
  297. X            DrawShadowText(display, window, textFont, string, xl, y, green);
  298. X
  299. X            /* Game duration in minutes and seconds */
  300. X            sprintf(string, "%d'%d\"",
  301. X                ntohl(highScores[i].gameTime) / 60,
  302. X                ntohl(highScores[i].gameTime) % 60);
  303. X            if (ntohl(highScores[i].score) != score)
  304. X                DrawShadowText(display, window, textFont, string, xt, y, tann);
  305. X            else
  306. X                DrawShadowText(display, window, textFont, string, xt, y, green);
  307. X
  308. X            /* Construct the date for the highscore entry */
  309. X            theTime = (time_t) ntohl(highScores[i].time);
  310. X            strftime(string, 10, "%d %b %y", localtime(&theTime));
  311. X            string[9] = '\0';    /* Just to be sure */
  312. X            if (ntohl(highScores[i].score) != score)
  313. X                DrawShadowText(display, window, textFont, string, xg, y, white);
  314. X            else    
  315. X                DrawShadowText(display, window, textFont, string, xg, y, green);
  316. X
  317. X            /* Name of the boing master */
  318. X            strcpy(string, highScores[i].name);
  319. X            plen = XTextWidth(textFont, string, len);
  320. X
  321. X            /* Only use the first name if too big for screen */
  322. X            if ((plen + xn) > PLAY_WIDTH)
  323. X            {
  324. X                /* Find the first space and null terminate there */
  325. X                p = strchr(string, ' ');
  326. X                *p = '\0';
  327. X                strcpy(string2, string);
  328. X
  329. X                /* Draw a much smaller version of your name */
  330. X                if (ntohl(highScores[i].score) != score)
  331. X                    DrawShadowText(display, window, textFont, string2, xn, y, 
  332. X                        yellow);
  333. X                else
  334. X                    DrawShadowText(display, window, textFont, string2, xn, y, 
  335. X                        green);
  336. X            }
  337. X            else
  338. X            {
  339. X                /* Write out users name */
  340. X                if (ntohl(highScores[i].score) != score)
  341. X                    DrawShadowText(display, window, textFont, string, xn, y, 
  342. X                        yellow);
  343. X                else
  344. X                    DrawShadowText(display, window, textFont, string, xn, y, 
  345. X                        green);
  346. X            }
  347. X
  348. X        }
  349. X        else
  350. X        {
  351. X            /* This bit is for when the table entry is blank */
  352. X            sprintf(string, "%d", i+1);
  353. X            DrawShadowText(display, window, textFont, string, xr, y, tann);
  354. X
  355. X            /* Draw dashes for blank entries */
  356. X            strcpy(string, "--");
  357. X            DrawShadowText(display, window, textFont, string, xs, y, red);
  358. X            DrawShadowText(display, window, textFont, string, xl, y, green);
  359. X            DrawShadowText(display, window, textFont, string, xt, y, tann);
  360. X            DrawShadowText(display, window, textFont, string, xg, y, white);
  361. X            DrawShadowText(display, window, textFont, string, xn, y, yellow);
  362. X        }
  363. X
  364. X        y += textFont->ascent + GAP;
  365. X    }
  366. X
  367. X    /* Draw the line above the table */
  368. X    DrawLine(display, window, 22, y+2, PLAY_WIDTH - 18, y+2, black, 3);
  369. X    DrawLine(display, window, 20, y, PLAY_WIDTH - 20, y, white, 3);
  370. X
  371. X    SetHighScoreWait(HIGHSCORE_SPARKLE, frame + 2);
  372. X}
  373. X
  374. X#if NeedFunctionPrototypes
  375. Xstatic void DoSparkle(Display *display, Window window)
  376. X#else
  377. Xstatic void DoSparkle(display, window)
  378. X    Display *display;
  379. X    Window window;
  380. X#endif
  381. X{
  382. X    static Pixmap store;    /* backing store for the sparkle */
  383. X    static int x = 6;        /* X position of the sparkle */
  384. X
  385. X    if (!store)
  386. X    {
  387. X        /* Create some backing store for the sparkle star */
  388. X        store = XCreatePixmap(display, window, 20, 20,
  389. X            DefaultDepth(display, XDefaultScreen(display)));
  390. X    }
  391. X
  392. X    if (frame == endFrame)
  393. X    {
  394. X        /* Bug out of the sparkle and goto next sequence */
  395. X        si = 0;
  396. X        sindex = 0;
  397. X        sparkley = 180 + textFont->ascent + 20;
  398. X
  399. X        /* End the sparkle and now set up for finish */
  400. X        SetHighScoreWait(HIGHSCORE_FINISH, frame + 1000);
  401. X        return;
  402. X    }
  403. X
  404. X    if (sindex == 0)
  405. X        XCopyArea(display, window, store, gc, x, sparkley, 20, 20, 0, 0);
  406. X
  407. X    if (frame == nextFrame)
  408. X    {
  409. X        /* Draw the sparkle frame */
  410. X        RenderShape(display, window, stars[sindex], starsM[sindex],
  411. X            x, sparkley, 20, 20, False);
  412. X
  413. X        sindex++;
  414. X        nextFrame = frame + 15;
  415. X
  416. X        /* Last frame of sparkle so reset */
  417. X        if (sindex == 11)
  418. X        {
  419. X            XCopyArea(display, store, window, gc, 0, 0, 20, 20, x, sparkley);
  420. X
  421. X            sindex = 0;
  422. X            nextFrame = frame + 100;
  423. X            sparkley += textFont->ascent + GAP;
  424. X
  425. X            si++;
  426. X
  427. X            if ((ntohl(highScores[si].score) <= (u_long) 0) || (si == 10))
  428. X            {
  429. X                si = 0;
  430. X                sindex = 0;
  431. X                sparkley = 180 + textFont->ascent + 20;
  432. X            }
  433. X        }
  434. X    }
  435. X}
  436. X
  437. X
  438. X
  439. X#if NeedFunctionPrototypes
  440. Xstatic void SetHighScoreWait(int newMode, int waitFrame)
  441. X#else
  442. Xstatic void SetHighScoreWait(newMode, waitFrame)
  443. X    int newMode;
  444. X    int waitFrame;
  445. X#endif
  446. X{
  447. X    waitingFrame = waitFrame;
  448. X    waitMode = newMode;
  449. X    HighScoreState = HIGHSCORE_WAIT;
  450. X}
  451. X
  452. X#if NeedFunctionPrototypes
  453. Xvoid DoHighScoreWait(void)
  454. X#else
  455. Xvoid DoHighScoreWait()
  456. X#endif
  457. X{
  458. X    /* Wait for the end frame then change mode */
  459. X    if (frame == waitingFrame)
  460. X        HighScoreState = waitMode;
  461. X}
  462. X
  463. X#if NeedFunctionPrototypes
  464. Xstatic void DoFinish(Display *display, Window window)
  465. X#else
  466. Xstatic void DoFinish(display, window)
  467. X    Display *display;
  468. X    Window window;
  469. X#endif
  470. X{
  471. X    mode = MODE_INTRO;
  472. X    HighScoreState = HIGHSCORE_TITLE;
  473. X    ResetIntroduction();
  474. X
  475. X    if (noSound == False)
  476. X        playSoundFile("weeek", 100);
  477. X
  478. X    SetGameSpeed(FAST_SPEED);
  479. X}
  480. X
  481. X#if NeedFunctionPrototypes
  482. Xvoid HighScore(Display *display, Window window)
  483. X#else
  484. Xvoid HighScore(display, window)
  485. X    Display *display;
  486. X    Window window;
  487. X#endif
  488. X{
  489. X    /* Switch on the highscore table state */
  490. X    switch (HighScoreState)
  491. X    {
  492. X        case HIGHSCORE_TITLE:
  493. X            if (getSpecialEffects(display) == True)
  494. X                DoTitle(display, bufferWindow);
  495. X            else
  496. X                DoTitle(display, window);
  497. X            break;
  498. X
  499. X        case HIGHSCORE_SHOW:
  500. X            if (getSpecialEffects(display) == True)
  501. X            {
  502. X                DoHighScores(display, bufferWindow);
  503. X                while (WindowBlindEffect(display, window));
  504. X            }
  505. X            else
  506. X                DoHighScores(display, window);
  507. X            break;
  508. X
  509. X        case HIGHSCORE_SPARKLE:
  510. X            DoSparkle(display, window);
  511. X            if ((frame % FLASH) == 0)
  512. X                RandomDrawSpecials(display);
  513. X            BorderGlow(display, window);
  514. X            break;
  515. X
  516. X        case HIGHSCORE_FINISH:
  517. X            DoFinish(display, window);
  518. X            break;
  519. X
  520. X        case HIGHSCORE_WAIT:
  521. X            DoHighScoreWait();
  522. X            break;
  523. X
  524. X        default:
  525. X            break;
  526. X    }
  527. X}
  528. X
  529. X#if NeedFunctionPrototypes
  530. Xvoid CommandlineHighscorePrint(void)
  531. X#else
  532. Xvoid CommandlineHighscorePrint()
  533. X#endif
  534. X{
  535. X    char string[11];
  536. X    int i;
  537. X    time_t theTime;
  538. X
  539. X    InitialiseHighScores();
  540. X
  541. X    /* Must have table initialised with scores */
  542. X    if (ReadHighScoreTable(GLOBAL) == False)
  543. X        InitialiseHighScores();
  544. X
  545. X    /* Print out a pretty title message for scores */
  546. X    fprintf(stdout, "XBoing Roll of Honour\n\n");
  547. X    fprintf(stdout, "Rank\tScore\t  Level\tTime\tDate       Name\n");
  548. X    fprintf(stdout, 
  549. X        "----------------------------------------------------------------\n");
  550. X
  551. X    /* Zoom through the highscore table from the top */
  552. X    for (i = 0; i < NUM_HIGHSCORES; i++)
  553. X    {
  554. X        theTime = (time_t) ntohl(highScores[i].time);
  555. X        strftime(string, 10, "%d %b %y", localtime(&theTime));
  556. X
  557. X        if (ntohl(highScores[i].score) > 0)
  558. X        {
  559. X            /* Print out the actual record */
  560. X            fprintf(stdout, "%d\t%ld\t  %ld\t%d'%d\"\t%s  %s\n", 
  561. X                i + 1, ntohl(highScores[i].score), 
  562. X                ntohl(highScores[i].level),
  563. X                ntohl(highScores[i].gameTime) / 60, 
  564. X                ntohl(highScores[i].gameTime) % 60, 
  565. X                string, highScores[i].name);
  566. X        }
  567. X    }
  568. X
  569. X    /* Print a trailing line to make the table look good */
  570. X    fprintf(stdout, 
  571. X        "----------------------------------------------------------------\n");
  572. X    fflush(stdout);
  573. X
  574. X    /* Now display the personal highscore table */
  575. X
  576. X    InitialiseHighScores();
  577. X
  578. X    /* Must have table initialised with scores */
  579. X    if (ReadHighScoreTable(PERSONAL) == False)
  580. X        InitialiseHighScores();
  581. X
  582. X    /* Print out a pretty title message for scores */
  583. X    fprintf(stdout, "\nPersonal Best\n\n");
  584. X    fprintf(stdout, "Rank\tScore\t  Level\tTime\tDate       Name\n");
  585. X    fprintf(stdout, 
  586. X        "----------------------------------------------------------------\n");
  587. X
  588. X    /* Zoom through the highscore table from the top */
  589. X    for (i = 0; i < NUM_HIGHSCORES; i++)
  590. X    {
  591. X        theTime = (time_t) ntohl(highScores[i].time);
  592. X        strftime(string, 10, "%d %b %y", localtime(&theTime));
  593. X
  594. X        if (ntohl(highScores[i].score) > 0)
  595. X        {
  596. X            /* Print out the actual record */
  597. X            fprintf(stdout, "%d\t%ld\t  %ld\t%d'%d\"\t%s  %s\n", 
  598. X                i + 1, ntohl(highScores[i].score), 
  599. X                ntohl(highScores[i].level),
  600. X                ntohl(highScores[i].gameTime) / 60, 
  601. X                ntohl(highScores[i].gameTime) % 60, 
  602. X                string, highScores[i].name);
  603. X        }
  604. X    }
  605. X
  606. X    /* Print a trailing line to make the table look good */
  607. X    fprintf(stdout, 
  608. X        "----------------------------------------------------------------\n");
  609. X    fflush(stdout);
  610. X}
  611. X
  612. X#if NeedFunctionPrototypes
  613. Xint GetHighScoreRanking(u_long score)
  614. X#else
  615. Xint GetHighScoreRanking(score)
  616. X    u_long score;
  617. X#endif
  618. X{
  619. X    int i;
  620. X
  621. X    /* Must have table initialised with scores */
  622. X    if (ReadHighScoreTable(GLOBAL) == False)
  623. X        InitialiseHighScores();
  624. X
  625. X    /* Zoom through the highscore table from the top */
  626. X    for (i = 0; i < NUM_HIGHSCORES; i++)
  627. X    {
  628. X        /* Is my score better than theirs */
  629. X        if (score >= ntohl(highScores[i].score))
  630. X            return (i + 1);
  631. X    }
  632. X
  633. X    /* Not even in highscore table yet! */
  634. X    return -1;
  635. X}
  636. X
  637. X#if NeedFunctionPrototypes
  638. Xstatic void ShiftScoresDown(int index, u_long score, u_long level, 
  639. X    time_t gameTime, char *name)
  640. X#else
  641. Xstatic void ShiftScoresDown(index, score, level, gameTime, name)
  642. X    int index;
  643. X    u_long score;
  644. X    u_long level;
  645. X    time_t gameTime;
  646. X    char *name;
  647. X#endif
  648. X{
  649. X    /* This function will shift all score below the index down
  650. X     * towards the end and kill off the last dude. Sorry mate.
  651. X     */
  652. X    int i;
  653. X
  654. X    /* Move all the scores down one notch */
  655. X    for (i = NUM_HIGHSCORES-1; i > index; i--)
  656. X    {
  657. X        /* Shift the scores down one notch */
  658. X        highScores[i].score     = highScores[i-1].score;
  659. X        highScores[i].level     = highScores[i-1].level;
  660. X        highScores[i].time         = highScores[i-1].time;
  661. X        highScores[i].gameTime     = highScores[i-1].gameTime;
  662. X        highScores[i].userId     = highScores[i-1].userId;
  663. X        strcpy(highScores[i].name, highScores[i-1].name);
  664. X    }
  665. X
  666. X    /* Add our new high score to the high score table */
  667. X    highScores[index].score     = htonl(score);
  668. X    highScores[index].level     = htonl(level);
  669. X    highScores[index].gameTime     = htonl(gameTime);
  670. X    highScores[index].userId     = htonl(getuid());
  671. X    highScores[index].time         = htonl(time(NULL));
  672. X    strcpy(highScores[index].name, name);
  673. X}
  674. X
  675. X#if NeedFunctionPrototypes
  676. Xchar *getUsersFullName(void)
  677. X#else
  678. Xchar *getUsersFullName()
  679. X#endif
  680. X{
  681. X    struct passwd   *pass;
  682. X    char *comma;
  683. X    char *cp1, *cp2;
  684. X    static char fullname[80];
  685. X
  686. X    /* Get user information from password file */
  687. X    if (!(pass = getpwuid(getuid())))
  688. X        return("Anonymous?");        /* Unknown user oops. */
  689. X
  690. X    /* find a comma indicating further info after name */
  691. X    comma = index(pass->pw_gecos, ',');
  692. X
  693. X    /* NULL out the comma */
  694. X    if (comma) *comma = '\0';
  695. X
  696. X    cp1 = pass->pw_gecos;
  697. X    cp2 = fullname;
  698. X
  699. X    /* Search through the gecos field looking for an '&' which on very
  700. X     * old UNIX systems is supposed to be the users user name with the
  701. X     * first letter uppercased.
  702. X     */
  703. X    while(*cp1)
  704. X    {
  705. X        /* Look for the '&' symbol */
  706. X        if(*cp1 != '&')
  707. X            *cp2++ = *cp1++;
  708. X        else
  709. X        {
  710. X            /* A ha. Now copy the users name to be in place of '&' */
  711. X            strcpy(cp2, pass->pw_name);
  712. X            
  713. X            /* Convert the first letter to uppercase. */
  714. X            if(islower(*cp2)) 
  715. X                *cp2 = toupper(*cp2);
  716. X
  717. X            /* Continue with the remaining string */
  718. X            while(*cp2) cp2++;
  719. X                cp1++;
  720. X        }
  721. X    }
  722. X
  723. X    /* Return their name without any trailing stuff */
  724. X    return(fullname);
  725. X}
  726. X
  727. X#if NeedFunctionPrototypes
  728. Xstatic void DeleteScore(int index)
  729. X#else
  730. Xstatic void DeleteScore(index)
  731. X    int index;
  732. X#endif
  733. X{
  734. X    /* Delete the given score and shift all others up to fill in the hole */
  735. X    int i;
  736. X
  737. X    /* Move all the scores down one notch */
  738. X    for (i = index; i < NUM_HIGHSCORES-1; i++)
  739. X    {
  740. X        /* Shift the scores up one notch */
  741. X        highScores[i].score     = highScores[i+1].score;
  742. X        highScores[i].level     = highScores[i+1].level;
  743. X        highScores[i].time         = highScores[i+1].time;
  744. X        highScores[i].gameTime     = highScores[i+1].gameTime;
  745. X        highScores[i].userId     = highScores[i+1].userId;
  746. X        strcpy(highScores[i].name, highScores[i+1].name);
  747. X    }
  748. X
  749. X    highScores[i].score     = htonl((u_long)0);
  750. X    highScores[i].level     = htonl((u_long)1);
  751. X    highScores[i].gameTime     = htonl(0);
  752. X    highScores[i].userId     = htonl(getuid());
  753. X    highScores[i].time         = htonl(time(NULL));
  754. X    strcpy(highScores[i].name, "To be announced!");
  755. X}
  756. X
  757. X#if NeedFunctionPrototypes
  758. Xint CheckAndAddScoreToHighScore(u_long score, u_long level, time_t gameTime,
  759. X    int type)
  760. X#else
  761. Xint CheckAndAddScoreToHighScore(score, level, gameTime, type)
  762. X    u_long score;
  763. X    u_long level;
  764. X    time_t gameTime;
  765. X    int type;
  766. X#endif
  767. X{
  768. X    int i;
  769. X    int id = -1;
  770. X    char name[80];
  771. X
  772. X    /* Lock the file for me only */
  773. X    if (type == GLOBAL)
  774. X#ifdef USE_FLOCK
  775. X        id = LockUnlock(LOCK_EX);
  776. X#else
  777. X        id = LockUnlock(F_LOCK);
  778. X#endif
  779. X
  780. X    /* Read in the lastest scores */
  781. X    if (ReadHighScoreTable(type) == False)
  782. X        InitialiseHighScores();
  783. X
  784. X    /* Speed up by obtaining users name */
  785. X    strcpy(name, getUsersFullName());
  786. X
  787. X    if (type == GLOBAL)
  788. X    {
  789. X        /* Go through the highscore table */
  790. X        for (i = 0; i < NUM_HIGHSCORES; i++)
  791. X        {
  792. X            if (ntohl(highScores[i].userId) == getuid())
  793. X            {
  794. X                /* Can the last score be added to the highscores */
  795. X                if (score > ntohl(highScores[i].score))
  796. X                {
  797. X                    /* Delete and move up all old scores */
  798. X                    DeleteScore(i);
  799. X
  800. X                    break;
  801. X                }
  802. X                else
  803. X                {
  804. X                    /* Don't add as score is smaller */
  805. X                    return False;
  806. X                }
  807. X            }
  808. X        }    /* for */
  809. X
  810. X        /* Now add the new score into the table */
  811. X        for (i = 0; i < NUM_HIGHSCORES; i++)
  812. X        {
  813. X            /* Can the last game be added to the highscores */
  814. X            if (score > ntohl(highScores[i].score))
  815. X            {
  816. X                ShiftScoresDown(i, score, level, gameTime, name);
  817. X
  818. X                /* Add to the highscore by writing it out */
  819. X                (void) WriteHighScoreTable(type);
  820. X
  821. X                /* Unlock the file now thanks */
  822. X                if (id != -1) 
  823. X#ifdef USE_FLOCK
  824. X                    id = LockUnlock(LOCK_UN);
  825. X#else
  826. X                    id = LockUnlock(F_ULOCK);
  827. X#endif
  828. X
  829. X                /* Yes - it was placed in the highscore */
  830. X                return True;
  831. X            }
  832. X        }
  833. X
  834. X        /* Unlock the file now thanks */
  835. X        if (id != -1) 
  836. X#ifdef USE_FLOCK
  837. X                    id = LockUnlock(LOCK_UN);
  838. X#else
  839. X                    id = LockUnlock(F_ULOCK);
  840. X#endif
  841. X
  842. X        /* Not even a highscore - loser! */
  843. X        return False;
  844. X    }
  845. X    else    /* Type == PERSONAL */
  846. X    {
  847. X        /* Go through the highscore table */
  848. X        for (i = 0; i < NUM_HIGHSCORES; i++)
  849. X        {
  850. X            /* Can the last game be added to the highscores */
  851. X            if (score > ntohl(highScores[i].score))
  852. X            {
  853. X                ShiftScoresDown(i, score, level, gameTime, name);
  854. X
  855. X                /* Add to the highscore by writing it out */
  856. X                (void) WriteHighScoreTable(type);
  857. X
  858. X                /* Yes - it was placed in the highscore */
  859. X                return True;
  860. X            }
  861. X        }
  862. X
  863. X        /* Not even a highscore - loser! */
  864. X        return False;
  865. X    }
  866. X}
  867. X
  868. X#if NeedFunctionPrototypes
  869. Xstatic void SortHighScores(void)
  870. X#else
  871. Xstatic void SortHighScores()
  872. X#endif
  873. X{
  874. X    int i, j;
  875. X    highScoreEntry tempHighScore;
  876. X
  877. X    /* The old bubble sort strikes again :-) */
  878. X    for (i = 0; i < NUM_HIGHSCORES - 1; ++i)
  879. X    {
  880. X        for (j = NUM_HIGHSCORES - 1; j > i; --j)
  881. X        {
  882. X            /* Who has the higher score */
  883. X            if (highScores[j-1].score < highScores[j].score)
  884. X            {
  885. X                /* Swap the entries around - use memcpy in future */
  886. X                tempHighScore.score         = highScores[j-1].score;
  887. X                tempHighScore.level         = highScores[j-1].level;
  888. X                tempHighScore.gameTime         = highScores[j-1].gameTime;
  889. X                tempHighScore.userId         = highScores[j-1].userId;
  890. X                strcpy(tempHighScore.name, highScores[j-1].name);
  891. X
  892. X                highScores[j-1].score         = highScores[j].score;
  893. X                highScores[j-1].level         = highScores[j].level;
  894. X                highScores[j-1].gameTime     = highScores[j].gameTime;
  895. X                highScores[j-1].userId         = highScores[j].userId;
  896. X                strcpy(highScores[j-1].name, highScores[j].name);
  897. X
  898. X                highScores[j].score         = tempHighScore.score;
  899. X                highScores[j].level         = tempHighScore.level;
  900. X                highScores[j].gameTime         = tempHighScore.gameTime;
  901. X                highScores[j].userId         = tempHighScore.userId;
  902. X                strcpy(highScores[j].name, tempHighScore.name);
  903. X            }
  904. X        }
  905. X    }
  906. X}
  907. X
  908. X#if NeedFunctionPrototypes
  909. Xstatic void InitialiseHighScores(void)
  910. X#else
  911. Xstatic void InitialiseHighScores()
  912. X#endif
  913. X{
  914. X    int i;
  915. X
  916. X    /* Loop down table clearing everything out */
  917. X    for (i = 0; i < NUM_HIGHSCORES; i++)
  918. X    {
  919. X        /* Null out all entries */
  920. X        highScores[i].score     = htonl((u_long) 0);
  921. X        highScores[i].level     = htonl((u_long) 1);
  922. X        highScores[i].gameTime     = htonl(0);
  923. X        highScores[i].userId     = htonl(0);
  924. X        highScores[i].time         = htonl(time(NULL));
  925. X        strcpy(highScores[i].name, "To be announced!");
  926. X    }
  927. X}
  928. X
  929. X#if NeedFunctionPrototypes
  930. Xstatic char *GetHomeDir(void)
  931. X#else
  932. Xstatic char *GetHomeDir()
  933. X#endif
  934. X{
  935. X    int uid;
  936. X    struct passwd *pw;
  937. X    register char *ptr;
  938. X    static char dest[MAXPATHLEN];
  939. X
  940. X    /* This function will return the home directory of the user
  941. X     * by either using the HOME environment variable or constructing
  942. X     * it through the USER environment variable.
  943. X     */
  944. X
  945. X    if ((ptr = getenv("HOME")) != NULL)
  946. X        (void) strcpy(dest, ptr);
  947. X    else
  948. X    {
  949. X        /* HOME variable is not present so get USER var */
  950. X        if ((ptr = getenv("USER")) != NULL)
  951. X            pw = getpwnam(ptr);
  952. X        else
  953. X        {
  954. X            /* Obtain user id etc. */
  955. X            uid = getuid();
  956. X            pw = getpwuid(uid);
  957. X        }
  958. X
  959. X        if (pw)
  960. X            (void) strcpy(dest, pw->pw_dir);
  961. X        else
  962. X            *dest = '\0';
  963. X    }
  964. X
  965. X    /* This will be NULL on error or the actual path */
  966. X    return dest;
  967. X}
  968. X
  969. X#if NeedFunctionPrototypes
  970. Xint ReadHighScoreTable(int type)
  971. X#else
  972. Xint ReadHighScoreTable(type)
  973. X    int type;
  974. X#endif
  975. X{
  976. X    /* Read the high score table into memory structure */
  977. X    FILE *hsfp;
  978. X    int i;
  979. X    char filename[MAXPATHLEN];
  980. X    char *str;
  981. X
  982. X    /* Are we going to use the global or personal highscore file */
  983. X    if (type == GLOBAL)
  984. X    {
  985. X        /* Use the environment variable if it exists */
  986. X        if ((str = getenv("XBOING_SCORE_FILE")) != NULL)
  987. X            strcpy(filename, str);
  988. X        else
  989. X            strcpy(filename, HIGH_SCORE_FILE);
  990. X    }
  991. X    else
  992. X        sprintf(filename, "%s/.xboing-scores", GetHomeDir());
  993. X
  994. X    /* Open the high score file */
  995. X    if ((hsfp = fopen(filename, "r")) == NULL)
  996. X    {
  997. X        /* Cannot open the high score file */
  998. X        WarningMessage("Cannot open high score file for reading.");
  999. X        return False;
  1000. X    }
  1001. X
  1002. X    /* Read all high score entries */
  1003. X    for (i = 0; i < NUM_HIGHSCORES; i++)
  1004. X    {
  1005. X        /* Read the highscore entry */
  1006. X        if (fread(&highScores[i], sizeof(highScoreEntry), 1, hsfp) != 1)
  1007. X        {
  1008. X            if (fclose(hsfp) < 0)
  1009. X                WarningMessage("Cannot close high score file.");
  1010. X            return False;
  1011. X        }
  1012. X    }
  1013. X
  1014. X    /* Close the high score file */
  1015. X    if (fclose(hsfp) < 0)
  1016. X        WarningMessage("Cannot close high score file.");
  1017. X
  1018. X    return True;
  1019. X}
  1020. X
  1021. X
  1022. X#if NeedFunctionPrototypes
  1023. Xint WriteHighScoreTable(int type)
  1024. X#else
  1025. Xint WriteHighScoreTable(type)
  1026. X    int type;
  1027. X#endif
  1028. X{
  1029. X    /* write the high score table to the high score file */
  1030. X    FILE *hsfp;
  1031. X    int i;
  1032. X    char filename[MAXPATHLEN];
  1033. X    char *str;
  1034. X
  1035. X    /* Make sure the table is sorted */
  1036. X    SortHighScores();
  1037. X
  1038. X    /* Are we going to use the global or personal highscore file */
  1039. X    if (type == GLOBAL)
  1040. X    {
  1041. X        /* Use the environment variable if it exists */
  1042. X        if ((str = getenv("XBOING_SCORE_FILE")) != NULL)
  1043. X            strcpy(filename, str);
  1044. X        else
  1045. X            strcpy(filename, HIGH_SCORE_FILE);
  1046. X    }    
  1047. X    else
  1048. X        sprintf(filename, "%s/.xboing-scores", GetHomeDir());
  1049. X
  1050. X    /* Open the high score file */
  1051. X    if ((hsfp = fopen(filename, "w+")) == NULL)
  1052. X    {
  1053. X        /* Cannot open the high score file */
  1054. X        WarningMessage("Cannot open high score file for writing.");
  1055. X        return False;
  1056. X    }
  1057. X
  1058. X    /* Write out all high score entries */
  1059. X    for (i = 0; i < NUM_HIGHSCORES; i++)
  1060. X    {
  1061. X        /* Write the highscore entry */
  1062. X        if (fwrite(&highScores[i], sizeof(highScoreEntry), 1, hsfp) != 1)
  1063. X        {
  1064. X            if (fclose(hsfp) < 0)
  1065. X                WarningMessage("Cannot close high score file.");
  1066. X            return False;
  1067. X        }
  1068. X    }
  1069. X    
  1070. X    /* Make sure that the permissions on the file are rw for everyone */
  1071. X    fchmod(fileno(hsfp), 0666);
  1072. X    
  1073. X    /* Close the high score file */
  1074. X    if (fclose(hsfp) < 0)
  1075. X        WarningMessage("Cannot close high score file.");
  1076. X
  1077. X    return True;
  1078. X}
  1079. X
  1080. X#if NeedFunctionPrototypes
  1081. Xvoid RedrawHighScore(Display *display, Window window)
  1082. X#else
  1083. Xvoid RedrawHighScore(display, window)
  1084. X    Display *display;
  1085. X    Window window;
  1086. X#endif
  1087. X{
  1088. X    /* Draw the title screen for highscore table */
  1089. X    DoTitle(display, window);
  1090. X}
  1091. X
  1092. X#if NeedFunctionPrototypes
  1093. Xvoid FreeHighScore(Display *display)
  1094. X#else
  1095. Xvoid FreeHighScore(display)
  1096. X    Display *display;
  1097. X#endif
  1098. X{
  1099. X    /* Free up those memory leaks thanks */
  1100. X    if (titlePixmap)     XFreePixmap(display, titlePixmap);
  1101. X    if (titlePixmapM)     XFreePixmap(display, titlePixmapM);
  1102. X}
  1103. X
  1104. X#if NeedFunctionPrototypes
  1105. Xvoid ResetHighScore(int type)
  1106. X#else
  1107. Xvoid ResetHighScore(type)
  1108. X    int type;
  1109. X#endif
  1110. X{
  1111. X    HighScoreState = HIGHSCORE_TITLE;
  1112. X    nextFrame = frame + 100;
  1113. X    endFrame = frame + 4000;
  1114. X
  1115. X    /* Reset the sparkles for the names */
  1116. X    sparkley = 180 + textFont->ascent + 20;
  1117. X    sindex = 0;
  1118. X    si = 0;
  1119. X    scoreType = type;
  1120. X}
  1121. X
  1122. X#if NeedFunctionPrototypes
  1123. Xstatic int LockUnlock(int cmd)
  1124. X#else
  1125. Xstatic int LockUnlock(cmd)
  1126. X    int cmd;
  1127. X#endif
  1128. X{
  1129. X    int inter = -1;
  1130. X    char filename[1024];
  1131. X    char *str;
  1132. X
  1133. X    /* Use the environment variable if it exists */
  1134. X    if ((str = getenv("XBOING_SCORE_FILE")) != NULL)
  1135. X        strcpy(filename, str);
  1136. X    else
  1137. X        strcpy(filename, HIGH_SCORE_FILE);
  1138. X
  1139. X    /* Open the highscore file for both read & write */
  1140. X    if (cmd == F_LOCK || cmd == LOCK_EX)
  1141. X        inter = open(filename, O_RDWR);
  1142. X
  1143. X    /* Ok - if successful then lock or unlock the file */
  1144. X    if (inter != -1) 
  1145. X#ifndef USE_FLOCK
  1146. X        lockf(inter, cmd, sizeof(highScores));
  1147. X#else
  1148. X        flock(inter, cmd);
  1149. X#endif
  1150. X
  1151. X    /* Are we unlocking the file */
  1152. X    if (cmd == F_ULOCK || cmd == LOCK_UN)
  1153. X    {
  1154. X        /* Close the file now thanks */
  1155. X        close(inter);
  1156. X        inter = -1;
  1157. X    }
  1158. X
  1159. X    /* Return success */
  1160. X    return inter;
  1161. X}
  1162. END_OF_FILE
  1163. if test 27771 -ne `wc -c <'highscore.c'`; then
  1164.     echo shar: \"'highscore.c'\" unpacked with wrong size!
  1165. fi
  1166. # end of 'highscore.c'
  1167. fi
  1168. if test -f 'include/keys.h' -a "${1}" != "-c" ; then 
  1169.   echo shar: Will not clobber existing file \"'include/keys.h'\"
  1170. else
  1171. echo shar: Extracting \"'include/keys.h'\" \(720 characters\)
  1172. sed "s/^X//" >'include/keys.h' <<'END_OF_FILE'
  1173. X#ifndef _KEYS_H_
  1174. X#define _KEYS_H_
  1175. X
  1176. X#include "copyright.h"
  1177. X
  1178. X/*
  1179. X *  Dependencies on other include files:
  1180. X */
  1181. X
  1182. X#include <X11/Xlib.h>
  1183. X
  1184. X/*
  1185. X *  Constants and macros:
  1186. X */
  1187. X
  1188. X/*
  1189. X *  Type declarations:
  1190. X */
  1191. X
  1192. Xenum KeysStates 
  1193. X{ 
  1194. X    KEYS_TITLE, 
  1195. X    KEYS_TEXT, 
  1196. X    KEYS_SPARKLE, 
  1197. X    KEYS_WAIT, 
  1198. X    KEYS_FINISH 
  1199. X};
  1200. X
  1201. X/*
  1202. X *  Function prototypes:
  1203. X */
  1204. X
  1205. X#if NeedFunctionPrototypes
  1206. Xvoid SetUpKeys(Display *display, Window window, Colormap colormap);
  1207. Xvoid Keys(Display *display, Window window);
  1208. Xvoid RedrawKeys(Display *display, Window window);
  1209. Xvoid FreeKeyControl(Display *display);
  1210. Xvoid ResetKeys(void);
  1211. X#else
  1212. Xvoid SetUpKeys();
  1213. Xvoid Keys();
  1214. Xvoid RedrawKeys();
  1215. Xvoid FreeKeyControl();
  1216. Xvoid ResetKeys();
  1217. X#endif
  1218. X
  1219. Xextern enum KeysStates KeysState;
  1220. X
  1221. X#endif
  1222. END_OF_FILE
  1223. if test 720 -ne `wc -c <'include/keys.h'`; then
  1224.     echo shar: \"'include/keys.h'\" unpacked with wrong size!
  1225. fi
  1226. # end of 'include/keys.h'
  1227. fi
  1228. if test -f 'sounds/applause.au.uu' -a "${1}" != "-c" ; then 
  1229.   echo shar: Will not clobber existing file \"'sounds/applause.au.uu'\"
  1230. else
  1231. echo shar: Extracting \"'sounds/applause.au.uu'\" \(27680 characters\)
  1232. sed "s/^X//" >'sounds/applause.au.uu' <<'END_OF_FILE'
  1233. Xbegin 644 applause.au
  1234. XM+G-N9````"```$Y%`````0``'T`````!``````````!#]\7=_^/1;TA-16_K
  1235. XMS,'_3F?,RO?OUV],7]WK/T?-P<?1;U7OYT]"3<?O8[[.2#E/O;'-.E_94455
  1236. XMW\M.2LC`PMU.15'?6U?;L,%.0D%3[^_+44IWY]U`/6?K/T_'Q+UW.3(_W[6^
  1237. XM44>_O5G3WU\^3E?-S^N\]S[CY]D_/='?8V-GU[S'VUM?455*3=N[NU'5QC\R
  1238. XM/M_+R]?!;SI/R]W915_9U6-)SKR\RN]`;]=C4T9$V\3&V5E;4W?,O\3W-#9+
  1239. XMSN/#PLX^/^.[_T7?VV/OR]D_9\S7QFMK[TSCNKG5;UU-/T/=5V?9]_?WW]?!
  1240. XMUS],X\+'74IWQKG&4S0]Y]-,8]UW6\C-;SQ&[]?7PK?(,$;*7U-OQ_]3Q\CO
  1241. XM1D1,S=/OPD\WP[+9/SM%1^.QN]7_T?=%.#AWQ;E&4<G=1$U=46='5;[5V<_$
  1242. XMR#L\4UO*S-G5SU'-W6_9W<WO/D%CRKC145_.R?]&2-_773-CN[C33TM,QKQK
  1243. XM1EF^V45!U=/O3/_"445-S%E56=6^34UKXTUWQ\GW/$9G7]^\TTE;Q]/_9U5=
  1244. XMY]GK56?.Q\XS1N?W7\"S3#=G:T'K[U71Q.O$QSI&W>?KR==G1-W7Z^=G[\==
  1245. XM1>O)R$A$2<N_3#]KL+_1/BXPQL;CO[J]=SPZ2D'=[T<_P+2VUTY1;U$N+\JG
  1246. XMQ#LYRFO#9SIKO,`T1L'73DX^RKG,9SW1P,5-W[O1ZUTX+S>VP=?OS^](455)
  1247. XM7<[/X\B_ST%$36?;Z]&_ZT-=V\;/=W=C65/;PU5;_W=5V6M+S-?%O,E+,C-$
  1248. XMO+F\2T=)S,:^2#M&;TI3P\A9Z\YW=_?7_U'?9V--W<)*2%7,5T/?S<Y5V<-9
  1249. XM34K3S?=?U;Q-45E.37?,O+Y?.$3?SFO?TUE17<[3ZU-"1,BYMDQ*5UU*/M>[
  1250. XMO-U(1UMWWV?+[V<_2<2N23%%:U]CW\2\V5=`.U7-3U'%N,4W/%W+Z^-?R\Y!
  1251. XM.E?&R=U=6U]KSMFZ6T)%T;_5RO=/3D%WX\K/U^_;TUW_9SD\4;>MKTXS-W?;
  1252. XMU4])V]4V/;6S[S\O+:VO0UW(4?_?3&/3_U=-V]O9U\G-15%-;W?+V]WG-UW*
  1253. XMQ,#;,#?/RL"[SG=,340[8[G'.4^M_RI5NK@Z.U?+;]7'U5<_X[[W9V/$/T[+
  1254. XMNUDW-L--/[2OV3EOSE?7NLU-75<]-KW=5=>_R]EC4T)%1L^ZK[]$3%=G1TS_
  1255. XMS&=%[\3#1E%OQ\]W5]_C1DQCL+A9.DU?3V_=S,G9P\U/T\P[.?>WWSI/Q\9G
  1256. XM9]=;66-K0S+#L;K=S=-1/5EW7>O!N]5,6TE?;T5=P+Q?,4#=S.?3RDM$4_=K
  1257. XM;\SGZ]'3S4X]05G,OK[&P5T\*BD\J*&M+2U!O,/32CHYM[[_25W/74S1R=%7
  1258. XMY\I%/N?&63KWO+@^/E/.1SZ[MK]%/D157^O;OME-0^-C5=VZMT8Q.\';5;6U
  1259. XMV3\Z-,V\N<S(2CD\8[ZYQSTY=]/*=\['6TM,U='K5TWKT<6W63L\V>?_V[^\
  1260. XM."Y!QE%*QLG"=TE+;\A&7]/#OL-$.#S,PFM,=^__QL'G=__=8U_5W>/,=TU*
  1261. XM4UEOS+OW/%_/[V??P5U$64I`2+S*7<K-4SS;O&<Y/<1W1,6]5U'(XSPYR5U`
  1262. XMO;UC1MVYSD,W=U%!N;+C/M?)S,1K.4O3Q,'O0D';U<_7TT\__\5G55O!V_].
  1263. XM.SN]M,9O3C_WO\K.YT93VTM-6[>RO#8X2LW5W>?;Y^?WWTD_1N?9PKW53E=3
  1264. XM1\KO3G='RKS"2UE$V\_+:U7+/3]WO,K!,3[+UU<^S+_K/#Y+R^-WR-E+3_]9
  1265. XM;^OGV\UK/3WWR\'*W>M525?)T7=$:\'+9TE(46-;R<BVO3`]3&?.WVO'SFM3
  1266. XM36?`RMM;/=_G9__CS[W(_SQ.:__-S-W;.BPTK[I.3<&UT4,\U<MO0_?9U<6^
  1267. XM3%UC7?_;W>]G+T>MK4XWL;WCM$]W]UF[SD]'7?]#7]'9S\-#/57K3D_3S-55
  1268. XM1NN_OME=3%]K3^_7X]W(T45-56OW:T[9O\K-QS$G+JVBM3B_RCOWU</_P\;W
  1269. XM]UU`/V?&S?];Z]7?/T=-T<K,W]?.5TM);VO?U=%-4]O=64W`M\LO.\ZZT5=,
  1270. XMX_<[3LF]:T++Q,H_/UG12C]OSL=O5>/77SY?Z\G)U6?9V45`5<._[TUW;UMG
  1271. XMU__CRW=C;U]#3]W;R\]OV<#..CQ5N\5C2TY;T]O7YUU=2E?C2_>\[V=/S/]/
  1272. XM[]TQ-O^UJ:DH+<;9+2^RMD8T7[G$X^\]0-/?7V\]U;#!43O'PBM3K4TUZ\M`
  1273. XM2MG9SO=C=VMG9VM/3LJ_S5-9]_=).M6Y445.X^OC9_]O6UWKT>]O65__9U=;
  1274. XMU]?7YV]KT?=17>MW6_?KY]/;V]W_=TM(V[YW6T=GS<_-S=]'3%?_W=/=:TMG
  1275. XM]W?)ON=)2$__ZTE1_^=79]7)R55%2%5WT]W9;VO/UTM*3L7'SUE11U'GP<3O
  1276. XM8\;,/2XYN;K3N;A,+4O+_T9*N[W;1EEG35O.VVM3]__?O,(Z/TO;O;\_1^-9
  1277. XMYV])27>]O<AC7T9,8\S5=]_$RFM!44Q-S\1K2_?.U6/O7T=KP_='17??S]_K
  1278. XMU<Y;2W??T7=!1\?92TKKT=GG9UW3_SX^QNM*;]_;44U/:]G3V^O914I,R,G.
  1279. XM=^/K:TY?8___Y]?(=S]7Q[Y.3^O3[V=C0CU.;]79[T[_SLM':\W1XU_GX]M*
  1280. XM/EO;Q=%5//?`;U5C;^_OX__?8]_+S5O5S&_O_[B_/#9'R[^]V34UW<C,1D)W
  1281. XM_U5.9\2_443KR6=(54MKR-WW]UU`Z]]O24W!O]-33EMG5?=K23[ORL;1Q<0^
  1282. XM/SY1;[_;7<S.[UMG]]]?35-/6\?)S^],/-W17>?#PME`/LO$76?7U5'KT5M(
  1283. XM44YOV=]CU<W"9TQ-75U5Q>M=9T,_7<_(TV=3:\__S6\W2[ZR7SC?W?=G_^OG
  1284. XMSE5,S,!&4V=WO[KO0$[=UU-3_UGGR-E?S$D]2-_KRCI'2\/5:^]79^/96\K#
  1285. XMXSQ5TUO7S=7G8\?+55%G3^O"9TUKS=W_/T!3SL_)3D%#R+K=44$ZT=&]:T(\
  1286. XMW[:S53=!8]O`Q+X_.5';7T%;56>[P>=.74M76^?/ON<T2\KW3.N^UTI78V/?
  1287. XMZT1/S,?;V3X[8]5)8[^\VTI.0.?7[]'=5W?*RT;_OU4MQ='#5U,\OKQC;[YC
  1288. XM36MKP,9*1V_KR]WOR,"[2#<\=U-,T[I/;[U#-V?_.SS#WS_.O+^^_S!,R=O/
  1289. XMSE_3R,AG-S'!QC];S+C(6VO.]T-*3S11M\T^0\E7/[WC1C97N;_G6?]$.]''
  1290. XMREM).TK=O\//=U-=ZTY!S,3-3$<]W]O3P[S.-CA$6\K#1F^TREE50#-CO\EK
  1291. XM]]_?V]O7UU]-7UOOT\[5W6]OSKQ+.S[5W>-G1,_%SCY3V<K?36=O3#E'_\2W
  1292. XML&,_-"H_K;%9+^>WL-M#.U=;;UU;S<3W66=K=UUWS<K*0T%#3>M?OLC.4V?,
  1293. XM74E)5TEGV5_W[_^\O%MC2W=`/4JXKK#.2C8W5==C647*MKEO9U$\]\(X/K%G
  1294. XM-L7"ZU\Z/K?5.U?#R&OO6<G(:S1$U\S5V]?.O_\[.$91OVM-V;W!1DWKVT]%
  1295. XM]TM?OKR]+RDSLKG&YU5(U=M+2>>]]VO3XSY"4V.^O%/"N=U'15>\S$XN-T6O
  1296. XMJ;`V/>_$XS4[S*]!0.OKO;'_-2<N8ZFRQ=%K2SX\2-_.NTHV.^?1UU=+7<O;
  1297. XM]S\^QL755='(O,Y)0&?,Q^=1X]]?7\/&73Q!NLT\/N?!SN]CO]DW0%E*;]O,
  1298. XMX^MO/S3*K:A'+"[3O+H_55]';^>ZML9,;\HY*D>QJ5<P-[NUZSO,N$Q)3<;!
  1299. XM8U'+S3U`157`NT=+Y\//5^O3UTM`0\RPS$@\/]O5X\O*]VM?[^]C15OCT<W3
  1300. XM3E%`T;NYU4`Q/U_=P;O(S\S"S5\_7>_;53E$S\KG0D''Q>.]:SQ30SRXO;`_
  1301. XM1$=73NM;4<7*V4@]0KS57SO!K30F,KR_L;/*ZS,O-\VRK]-,/EG+/3]-9U_W
  1302. XMT<'93'?/44I1SLSW/EO)WU%"O[O1148\U^]7O\!$.D/&V7=WY^?_3$'=SLI*
  1303. XM1F//=VL[2LW34T[;R,5;U=%*.4C1N\]K2>>XMSP]3/=G;\K'S=7?3L[_7W?C
  1304. XMW4@U0;G-7=G-ZS]19S4]_\7-2W>\V3@^4^=G8V=5O;5'[ZJN=SDI+<"GV32P
  1305. XMJ[TL+S3OP<)3/T-OQJYC]\A&/D-;0$EKS[;!VT!&YTI'/D+'O:[C+CS3N=,]
  1306. XM.<.\S3Y%X[++/3U76=755V/'O-/*NV-*55<]=W?,9UG?63Q(4>?'TV].1F/*
  1307. XM2SE3N+;;/5M=T]=W6T+!O=UC9TWKW^M=6^/W;]O)[S]1X\9)3.>[NM<D)DBE
  1308. XMNDO=TTA%[]M+-LV]Q-U;5TU)W6],5;VYU4=-V]G_4=7=2SI!7[_"]ST\3U%;
  1309. XM_]_.R5\^U;2\.#E$P\S+Y]'G/T#7O.\_9U598_?#V55=X\7O34%-Z\S?56OG
  1310. XMY^_OU^MK74]G44S3643K8TW7=TE#M<;C15=W/6_,V[RZTS$VY[#?-EG=U\G;
  1311. XM64S?SCE"Q+I3/UG(5>O;0C_?UTY(OMDWS*ZZ25=.-M>O1C9-Q<A3R;7*-6.[
  1312. XM432X6S$_/<FW9TS_[\I*4=^ZO^MO8V-!W<_W037(KK`Z)V?,XV=77]7*O'<Q
  1313. XM,<VYSE>UJME*.4-'3,'+YUV^[RLTV;2ZW44U2FMC0_>\L\1/3%?;W4I*:\[1
  1314. XM/SM&L+378TP]7=-55T[3QEM$65]O44YGP;C=/DK(R&=!16?KR=,]1NNWO5-3
  1315. XMS,P\.TG/P\-;0=_K2]794^_WWTK(PC9"V<?%O%]K3E5'/3E'T[+52TE+S,[=
  1316. XM;],[O[;90%'%OLWK3CY"64Q1QLQKT]7-3TD]1$?ON=%&Z[_#63]9V]79V=U+
  1317. XM[]_5=T[/U4_/6SEONKHS0L[?7T)?V^MG6UMWT^OG=]7+ZTM":_]/9\IG4<R[
  1318. XMOTH_2D]36<_.ZT@^W;_*:UM(R/]$TV_WNS<JLJ]+/,>S4=?O0%-G]]N^=T](
  1319. XM1SO&KUWKP,3),2DU4\*CO#8O6\#-ZS-7S-_9M*Y?,3)9R<-56<G3:U?3P<Y1
  1320. XM1E_G;]G3RV/K75=G4T%CU]/9]]M734YCX_],6V-KU]5?V]?(Z]7-3UUW2V]W
  1321. XMWW=76<B\QSXU-DJTJCTEP[$]8[3_.T,^YZ]&,%7*Z_=744CCS^-;:U6\UT%.
  1322. XMZ\_)1#K.S=MK7UMG_^?3YU/=S\_-YTQ)0TI;:]?W7>/5ZU_KR&=77]_=1T!1
  1323. XMJJRR)BK?R#,MM['*,S_1P=/?]TU-U^=,3./;2$SO53]$S\5=5V^_R>-=5UE=
  1324. XMR[Q72G?94U/__^=+65-9X\/G2TSGXTG1Q-_9W5U776O_]^]125UO[UUWQ\O;
  1325. XMZV]W=T[WUW=WQ\KC]V-1:V-%9VMK4_?)ONM*1UE==\W3T_=.Y\C923Y'O\AG
  1326. XM16MOQ;O;4TW9YTI5]_]?3%//S=5&1$=;U<=O8UM53UEC7]7$U>LW-]O$Q-?/
  1327. XMRE/_S]_K76O-ST-.;^MC7='*_SU+9]'%Q%5GWUU&3->_03],3L^Z8VO!_T%1
  1328. XM1$K#WW=GR\Y+7]MG]]710DQKS<UO7]573DW774I)7\G1ZTM,U<I(04[9U6_*
  1329. XM9TCKU]GCSDY(0DNZO+W1WT_5T4<^/$AWO]=7;]%O2DMK=TYGSF]KS\UW45-?
  1330. XM_V];Y]'9_UM9T;_3T=-5]W=C9\;,8_??2%/;3E_5V=O=24Q-16_K:\G;54C;
  1331. XMQ]M3]^-?=V/-QN-WV_=7]\&X_T117UG?VUUK65UWVSHY/\/`9U/;T>=;=_=?
  1332. XM;]'*;T/GY\=71L^_WT=O9SUCO]'CSM].1F_KT]_W44Q-5\NZ6T1,;]GC;U%$
  1333. XM7>/=Q]53O\#C__]-3FM;2T1CT]U-1SYCS=--2T;;S;_#Y]UG:]]58V-96__5
  1334. XMV4=K=^>_:[[$SD?;V?=`1;Z^T5M7ZSTW/M^\M-\]-$'?QF-"75U'4?]K2TQ.
  1335. XMQ<3.W=/W2U_?V<G.=\RYT\;".R\X[[FU4SFYNTHZ25^ZO5T]_\E;;UE7V\)/
  1336. XM03H_7\BWSF/CU>].1F]C7^O,W\AG-RU;L]%;8V<_.[JUYS1!8\F[O-%-03U#
  1337. XM4=G?8[O%S&=O9T9.]V_;PL'38_?K33S14TW7Q>L^/EGCW4Q/=U=-3E/$QO=`
  1338. XM07==4U7,R-UWT=%GZ]G58UW'R,E=[_<[/E6QN,E/+E&ZO#LP8\LX-\K(R4P_
  1339. XM1_]GU^O=W[[93,SG]^<]/$E3:[K"2TQ7V6=*T5E+=\O1VU5/RL;756]WS>],
  1340. XM4TY?U='W6TX_1N?G;^>_OLAG9U=KRK]O45GG:U7KW<SG2#GKR\G-UU%/T]D]
  1341. XM4[_715O$Q$E16TOCO+W_2EOK6>OW:\YW7>/C_^_C8^?K8U=33TWGT\]O4T97
  1342. XM_^?OUU%$R\790%_(PL6]2F,[1L:XT=E;4?>_P,I*3EU125/=U>_C[_?.T>-*
  1343. XM3%]G[V_7Q<-=15%,:\M3/#(_Q:>EKBTB*KN]S<W_53U`8[JYS$%/S,#+=T-#
  1344. XM5]_9;UU.7=/C[\7&75M%2M7K0VO1R\G,Z[RS43H^:T]*4TKWQ]';T?],65WW
  1345. XMSLU/=]/GY]GG74]134]-9UW(T_=GV<QW_V/?T^/#_ST\R*ZTRSX[0\G?9V/C
  1346. XM6<J\P=';SS<E);>?GR\D+JBMRBXT6[YC-M=,Z\FON5<L*%7'O:J]2+NMRSL[
  1347. XMRET_TT4RY_]*0TW,R4?%P/]#9\9(27?#S<;79U514]'-W]M%/U'C5]]C65W3
  1348. XMXUMC6TU/]\#)Y^/G3D%"3M>]O.M56VOO6='+T<S+:T?/OD4S/+FX7??945EC
  1349. XMS\W11DE;V>M?V<:\0#A'R+B^_U]1XTQ#6]]GSM=-0D3=W=GKT]=97?_153W/
  1350. XMP,MW]^=;=^O/V>/OW4[;R<;W:TU17W?=7TWWS,!/W\:_O3`K+\3`W=/;44=&
  1351. XM05/&VSS`KE7?]]O/ZSI!O+M=V[Q?1F-?Z\&]NK7K)B`HJZ*K3%=1M[M/,]W!
  1352. XMS-\X+S75N[CC]]'3WUTT-DW*RLC,74E'2DMCV='C_V-79\W(W3@Z4ZJP2RM*
  1353. XML:IG+>M-+V.YKR\TP:O`1CI%VU=#=\[-:T1GQLC7S^?755]O+SC=M+W9V<[O
  1354. XMXVL_/$M755M5Q<#345U7ZU]-37=?[]O'V>M*W]7K9V=93U.WSS[/S5/3RFM$
  1355. XM0SU.P;A'1L>^O6]/9^\]2,W5/FO%R5ECUV-C3#U/T<5/1UGWW<N_O+[10D1*
  1356. XMU\W1W=UORE=-55U'15E?T=%O=\C1S<#?2T[?5UGWS6?GPKE++BU;O[W%UV\Z
  1357. XM8\'C=W=,:\-3,BPYU:S93$3#S4[5T4953TC5ML911U=KSNOCT^]K:T=)9\W3
  1358. XMY^/W2CY(;]UCZ]EK0$=5NKO.X]/'_T8S0W>^7U?CNKN_23(R3=F]3SI*MKU*
  1359. XM1,K=1$A/1$>ZN>MW1CC3T<-?[\]*.T:QT3?OP[[$5T`_0TQ9[V]=Q;=7.=W#
  1360. XMTS\_3O_O;U%*2>??S;_*YT9`3E],3<_%O<Q/2M7/5U=K3=G(;T%%9\O'RV]3
  1361. XM[W=O14[WP<]K6UGC4U5;0VO#N<]/[^LZ.EF[PM'7_V_O]T<Q2+W"63C9RL]*
  1362. XM4>?;Q+M-0TA7W]=73[Z\SSDZ/-''QF=;Y]]C3D1(Z]]=6]'`S#L\2VM9Z[G"
  1363. XMU]G#4R\NT;>V74XP-].KM"<?O+*_26/$:\^Z1CU%QLI=0TG7Q>_1U=G$]T,\
  1364. XM7<*[V3S_Q\7+649/1#1+S[S,T?=13U'?=TA-R,[,X\W)7T?WP[[5345CT\K9
  1365. XMW=%C3#__S'=)4=/=:V_?]T_75UM(Z[^Z2C4OO*>O+#+?V49`P+?(,4/'QM?K
  1366. XM4TU&8]V_P]O(;U%GU<5K0T#WZV_.VVM/0#SCR,5C6U5975OGW=U5X]W3P\/?
  1367. XM;T(\.T=9QJO'049;OLM9.3Q=S.];5\RYO4DS-L.XNTE7S<Q,.T[#NL`_-E^]
  1368. XM:\/.]S4]0\N]V3\\[\#";T__WW=;.$G#UUOON;\K,/^NL;]`+2$VJY\\+%FQ
  1369. XM5SJMJL<L1,3?;UTQ.4`]PZ:_.E'/2D*_LSXX[W=+4[?*YVM,0+^UQSPZ_]U5
  1370. XM2>?=X\"^-S)"]^]CP[[-8__?0$+=PL3"P4PW4</)7UO/S5M//CI(U[F]Q?=*
  1371. XM8W<Q.V>LJK,Y,3;$MK<\-O?`5S(UTZI1*"FXK55)YV-'.6NKJD1(R$I!1M_%
  1372. XMMCDQ3?=GQ\]/45=/]]'+VT=38T@WRL;GV_]*5=',W<G;/4-W]]UWWV=;[]_;
  1373. XM44!'Q5_K_UU$2->^U6M)3U7KT\1"2>?/ZTM17TW+QMO-PO]/Z\7%SF<^1N-W
  1374. XM;U]34<W,V<?,=VOOX__?66-9549!SE=5]]GKWT1)1F_#P#@VR[FY3CT_2\Q?
  1375. XMO\C'-3C.=]O.]V];449WS+J_/#Y9O<'+53X_2E/+O[]50DM14__'=TMC76?1
  1376. XMT]U(/D[-S>OKS<?.R\[;R5U14V/_3E7WX^/OYTY+/M?$T]/97TK/O49*SM5,
  1377. XM-6^ZLF-"P+GG/F?;/$?7SN_K:UUC]^M%U\2[W<>[-RTZ_[2N.BTYM<)%+C[(
  1378. XMK[KW.BL^.C2NLN/*O=<[4\99/4ZRO$E/]V]/Z\K#XU5#RW=;06__S&M'/_=3
  1379. XM1^O;5T3?UUG_T<5O5TVQK!\?*[B?J$4L]Z^N2C0O7>M9V[RS2S8VR;C#0TK.
  1380. XMS6L_=\C+2$E;V=__Y]'WW<I"-S[7P[]7O\Y`1.OCW41*_[O-8T,\4<G374U+
  1381. XMR[R^Q4!`5<#.24S5Q5E+64-"5;[%Z]7755%K=V=;1L"XQ$]$2E=W5VO(T=U=
  1382. XMU]E=6\J[/S0_W>_;T\_W8]?K5UWO3U51W]?9XV,_/D^YN\]1W;U9,CK(PLE7
  1383. XM5?^\W4WKSV](.399O[3*3T'?RV\^0,[`QC<T.KRUS3E$_^/*Q,W%[U]`0[V[
  1384. XMP5%#/$1KT<?'9U%K441?UV]K=V_CVU=5T7=1Y^/C45__V^/OW4U!X]OK66?_
  1385. XMWV\\26_7VV=?8VOW9V/W_^_=_U7-W7=?_^?GZ\_=54IGZ]MG8W?1TUU/66?O
  1386. XM[V-G3=G/R6=+1MW3Z]'*W4]*;\[._UGO9U5GS]=?1%'7VTY*Z\O+145?U=]W
  1387. XM/D%3T6=`6='-;_?5U]UW3TU76U_5R\T\2=_.T\+1XTYWV<YK9V]+4<NVR4<]
  1388. XM3'=W1CE!6<_'P=/=;T9#X]U=:U512-G;S-W3Q=?)QVL].%/;;]?7S]E5.4!5
  1389. XMT=/CX]?;0$-5O\[C5U__RL///T5OS6M=X]_C8]W&9^_1_TE'/4C$6T1&Z[_#
  1390. XMYV?GTU532CO_S<?K=VMW_]GW75GKT\O.TU%33^_9[TK7O>M31-/!RSXZ0D9*
  1391. XM6\;%]VO,PUE&1DU9W[^Y[TU/R\3C9VM)55=;T<EW7UG_WU%$SMEK64L^W<[=
  1392. XM]\U;2FMO9W?.Z\I+2[P_P\E!6ZA1'R`]6;FU7TG-P\0^3M%*1EU&26_KSU__
  1393. XMW6_.O,_O2E-&34WWS,O.R&M+3MGC1%W;VV_3Z\N^XTQ)W\MK25OG;VM.;\S,
  1394. XM5U-O;V=K9UGGXT(]R]__[V]5S\W*_TUOXW='35]/2D_9YUW/RL5C657-RV-!
  1395. XM3_?7YV.^N%--_V](-./`P/_WP_=.1%WG2TWW[U'OR]U32-W._]W79UWO4<K`
  1396. XMO\SC/$%WXUE&V4](1E77RV]-8\3%8]_=XV-5Q\C_15EC[W=K8]M97]/?34A(
  1397. XM3U'CW6??=TG?X\;%P\TS+#6SKKLJK:.T/A\C8Y^W,TJ_MU%&44`Y1K6\W3\\
  1398. XM//?/Q[G.ZT%&4]G=6UW_U>M!3_?_3^/*33T_]V]5V<S*S,O,54QCOK2W9S8J
  1399. XM.*ZARB<UNJ=O+BK1O<!*2E-GU=_92CHV4;NSP,_79U4\25]3[\W7/#[?O\55
  1400. XM.$W$O$Y,:TM';[[+64`X/\:ZN3P[W[Q.0/=GS]E3/E^__U5K9UU9=V=9[^?G
  1401. XM3E_;S&-11$[?S,_?_T%&V<W;V=U,26=+3U/77UF_N<5'5UL_6\Y;1/]=4U5/
  1402. XMY[O10#M;R,#'749*7]OKYVO9[T4^.V^^OTI%/\/(8\2VOV-1]]];0$[(R%--
  1403. XMS>]=5U%3R<)W4\"W-C$^QU?CT4\[*S/;K;O.S-5+5=//63>XO\L\,3%*O:VZ
  1404. XM0S;3R>]?U_]13E7_S,M.3E=?Q,P\3&O'OE\T+J^IMSQ/SDQ1R4$]S\A92E%C
  1405. XM:U].45M%8\_O7=753TK9RE]12E%CR=7O75];=[FO0#4\SL++3]W(0$'CPV-%
  1406. XM25WKV<_/_TY1=VL_3.?3ZTY;]_]*4U_3:T_=RL[K[W=)3??(R=E?_]MK3DU,
  1407. XM[_?9OLE+/__;]TE+5==O1^O`OCY`[^MWUV?.O\'3.5G33&_`3D;G;U53U=M*
  1408. XM:\OG1$A/W]G9;V/?R]/O;]]C75U/;\;754IO[V]&47=?V=?WX]7?_VM17_=W
  1409. XM6??'W5]K8UM=9U]53??GZ]?K:TM55W?K=SY%T<7756]=57=73<_K6V]/[\+K
  1410. XM7;S'_T<ZZ[[!_VMGU=U.1$Q=Z\?.3T17]VM56^_;44Y3SM?G7__?S]/C]V]7
  1411. XM_^?-W_?;=TQOS>/_]W=52DCWU]-?1U/KWV=3W_?CW]/O2D-%2MG-R_]?[UGG
  1412. XMR6-,1.?`_W?GXV>]O$]%57=)8^M9S+W3/F_916N^WUE'=TU!4VMGO<3=4?_5
  1413. XMQO=9Z\[(XT],5U]K;^_?UW=)6V]7[U<]5<;=0D/_2D'(P\?K;U-?Z__3Q]=;
  1414. XM=]/G6TU56>/_SK_=2SO!M3XV1\[+S#\U/\+76TCCP4L\.]MGV^]OS.=.R;R]
  1415. XM44A-5TQ)QLCWT<3O/49+76M9]__CS]GO8V=G4W<_/DV_Q7?OZ^=OV=U?W<KG
  1416. XM23O=U??+Q?_GM:Y'*27.K\MC6TM9S,=O0SW?OCA"U[>Y428WMK1&+K>MKS@N
  1417. XM-^O'2$^WMBXFX[R_6V]GR>]?[\G3/$C;44@_RK/;/$!+WUM,SUG)3#S_M,7$
  1418. XM]W=33,U?13[GS,YKT\=G2U&]N<5376-/3U-OT>]O4SU,X\;*9TY/S]?/YV?5
  1419. XMO<]13$Q-7>?7V>/5SO]14U?;SV];.$C$M,M(_\]KM[#=*CV_P4`VPL/O7]OW
  1420. XM]^M./TQO3]6_U^_GT>/WW]E%2U=.56M93MG7X]]52MNY9RHNV:O&S[<_,-O'
  1421. XM,RYO0LK#S+QG+C6LJBU'M=U7QE=-VS4TW;O;6UE,1%_3:]_'S,%K-#A)N;7,
  1422. XM3-_#SFM!;U_5-CA.L+Y-,5F^M]].RV\]Y\7;.4'KP+M(6=E51V/W9]^_T4,Y
  1423. XM3,7%VT_O]]-;=_?K03VQK;T_3<I30DS;R=_K=T5'4\G-8TM3;U=18UE&7W?=
  1424. XM9UOK:\G?7UE15UUGW\N_R&]*8^O9_^]K4U%7=UUKZ^_;Y_]90T[G7T9,[]U1
  1425. XMV\;1Z]_OZ^M33%%?3E?5S-%CY]7;V]'/W5=.2TI?V\O'X]E//4_7S-7=V4=,
  1426. XM;V=C4U__S\/9]TD[/L/"]UOGW?]O65E13TSGPLS1[U5*44]1RL?C75M-2DM=
  1427. XMQ\[97U=?W??C_TLY3MO7T<%9V^]-=^OW3$IC;^_WXVM-3O_K745WQL!$,2WC
  1428. XMNJRV6SI7]\?-SD8^1LG*W44]2;['8V_)R7?GSS]&749#=[O,24?=RE53:TP^
  1429. XMW;W`46MK3<R_R^-1OE4N+N>OQ4A$M\+CP;W/,C!-U4TY0TM(S*^Z0RV^K[T^
  1430. XMZ[9*,3O)RU-;OK9%,3RRNULU0N=50V_-QL/5W55$1]_5V6M==\3*76?1PF=*
  1431. XM3,3(23)5S$Q(_\O7]__K=VOWRLW5=^?_7U57U=_G46OC:TQ3Z^?;U4Q+P,1;
  1432. XM-<[O-377]]%W5=7+64],/=?WP,!-2E5;25'C74S*Q]%K245G;UEGW]W$SU-C
  1433. XMZ^/1TUU39V_C;^_;;SO?O5?KQEM?VSY3=_=-RLK'V\W+]TA+ZU=,[]GG4_?W
  1434. XM4T9,8UMO8UGWR=EC7U=O75N_PTM/O;@^5\I--CW!P\[1=TEG[_].67=?9UU,
  1435. XM56?C_UO;RE5#3=/W4=W/X_?*5;^^V;K(03(W2+NZO\933N]93-M=241;ZUEK
  1436. XMR<W1ZU=!W=]?/4?KO-%75?_7RMOK2UOWT<[;6TQ-Q<'$]UL_/$;_9^_=Y_=G
  1437. XMT\]91$_GW_=9:^/?R;W/9U=33T[GZV?CS]_5=V]O54-+9TQ+6\_CY^=,/]?!
  1438. XMS5]7/-^NJC4K1;;32MW74__76=-9U[M)J4XH*].TJ4DC-ZB?+R[333Q5RUU5
  1439. XMUSTPR\I"S;H]/=_'Z]W$V6_?;^_G4TS7U<Y.1$C$TUG5[U$\1%%?W]MK5UW_
  1440. XMT]WKX]GK=UM59^/-W>O,P-]O5U=?76/5PN=9_W=;6U]51&/K44I;6=OKW\K`
  1441. XM/T%=S>_CU=]WP,M+/5O=W>_K34IC9V?;QK[_4T=?55U;6>O5[V/OW^/?WUEC
  1442. XM6U.]QN\T-7>UN,[_2/]W[V];2\_$WTI';UWW:TWOQDE"3[O%V5515]?(7T=K
  1443. XMQ<I73;FR=^MW0$M923W_UVMW:T_=PM,_16OWRUU%Z^/CUTY"X\].1T;?W\?%
  1444. XMQ==)3F?,U^MC3$1*[\?-XU=G]U]17^]76^_%R5E1]\7;46O=T]G_77?=T>?1
  1445. XMRTU"14)%[[K/5]?)W5=?]W=K6?_,ZUM;]_]93U%?Y^_O74-#V<?;5^_/9TU7
  1446. XMX_?_54Y,S,_._U='7]5+4>OG]W=O7U599V]+35WOX]O7QLYG3$W7VW?9U^_W
  1447. XM_[[)6UMC[]W7S6]-2T]9Y]G_6U?_[^/OYTOCSLO1YT=-]]?91TO.Q]]GYT9+
  1448. XMQ-U)Z\KW-3_1O+M;3>O35S\^WVM-S+WO2DJ\REU.3F]O;\S'T_=!54IKW_]!
  1449. XM3<-(NM'+VTM!55=&3L>_RO]?=]'G6TQ9W]7O/V/CWTM+3,G!O^M'65,PQ-LZ
  1450. XMX^LQ)D*XI+4]1VN^73\Z1M^\SM_W4V];R-M7U</1Z^/=44]CXW=,0$KCV>/9
  1451. XMY]7/=TQ98UGWV\[_U<S_Z]/3YUUGT\=+3&?_Q\E&3L*_V4U16___56??W__?
  1452. XMU=]/55O_75E=1]N]KL8_*2#?HZ\K+[VMS5M$5]'7RU<\.5W;V=G5V<[+Y^OC
  1453. XM5UMOWT__S,O/VUL_/D!)T<9W6^O3;__!:T*XN%T[=]=*5<:_]TWOP,XZ1MW*
  1454. XM_^?,]ST^2M'3UT]5_^M?76=K2D71M]4].U%59[V]TTI/9^/;RO=9W>-;;]?K
  1455. XM04?GQ_]GW6M5__?G9UECVUM+56?KR\_O24W1S^?=T=E;4^O&R.-/66MG]]=W
  1456. XM13O)N[WKT4K?S,U;.#"\MT!1T\]K3<.\V6=W=V-OSFL\/UO+P-=&/K>YV3M*
  1457. XM;]W9=W?__V]==UE54U'_]TU7RL'O3%ECX\_$R44V.N>XP/=954Y9_^M?:]_3
  1458. XMS^\]1V/(O<M;67=*3%G3T>/7_V/9S]U+4?]O4U7CT<Y95]W98W=K=^OCV]5;
  1459. XM0T]OV5O3P=-W8^M=77==8]_W_]/C;U=78\S946=GT<_=9W=KW<7,7VMGW>-K
  1460. XM8V-W1%V_VS\U0\J\0S_.TVO+R.M74^O;[V\^/5>VN==#-SBRK[HY+S*SK.<J
  1461. XM0KBWR,+&2BQOL\W3S49GST`^8_];VW=C8V-,449+5W?_:[NTNTQCW_]`.TS1
  1462. XMT^OOV]W-U^=51$W_Q<#,T5]CY^/K6?_O3D]*6\C&6VM#0%7*S<_1]VMC;^O9
  1463. XMYU%)2V-=QKK31CD^6\&[UU'GS$5'[\';33,]:[UK2\2UX[G`8S0^2;:ONSA$
  1464. XM8^/,US1CLTXRLK\\:T<[Q+M+PKW&ZUT__\G$/U'!O=U//T]11T%%Y^??R,?3
  1465. XM33_WWW=12U&[M\MGY\]O75E$14;KQ\G_3%O54S].SLK7=UEKU\_3_VO_X]O;
  1466. XMS\[*V55(6^O;=^//S%]76V=/6U]=3TO/R7?CX^/K6=_-6]]16TK;T\?,5TMC
  1467. XMMO\\3%].;U?;OL7=2DA59T_!PME#,CJYL+HU0KC,,36QO<Y;,#AW8^]11UM5
  1468. XM2F_&P.MO6??!O6]=U5E9W\=C8UE,0?_3ZVMK45%WT<O7U=]=05W7S5]G[^?1
  1469. XMT]_7R<YO5TE(T\[#R^=GVTW/S,G_0%-+.SQ+Q;W+77?5ZUE3/D.^O>\U,#VH
  1470. XMI=$E0JR\/3>_:SW"R<7G73^WNT<][TA*S\M?2]O163\Z2KC-_TG_S=M/.>?5
  1471. XMW<#'R,K=3U7_S^_-U5<]3N/OZ^MO_]_(SE])0$W=V>=WV=',S5<_4=?/Q-=C
  1472. XM65U.V<E;1T_)Q=?/Q-_GZ_=5U]_-4SM!U<-(/O>_W5T^0&_*ZUEKV]=OZ\_?
  1473. XM:W=92%WCU=G?Z_?OY\S744)/W\;.5<I?/TEWT;?*,T3.O]U3Y\I?/D_&Q=U*
  1474. XM4__/4^]GW\G11$MCU<:\2SYCP,S=:SQ":[_1P]]"/#;3M*_/6U7$S/=#0V/,
  1475. XM;TA?[U-9V<)+1E7CS,]WW]'G1V_"MTDV/LMW5=>\PDY,5>?CT=5?1$U1]UUG
  1476. XMZ\SO/5?#U]MW1TQKZ\W`44--9]7-76/=W?=GU<O*_U=.3$O_R<=?3D_3V=OW
  1477. XM33Y/;]7=UUWK=U';S=_KV\U78]W(W6?W:_]51L[`TU?/TT97V]OC8TI57=O_
  1478. XM_U=C=]/GZ[_!W3$L+K6GP$9!RK_CV]%;3TM,X[:M*3]WP-%;=^/+W<QO-SQO
  1479. XMS4T_1VO19^_944Q5[]7)O5^_23AWO;U9.D2QSVM(0TK1TUM%:\EO0N?&V=?5
  1480. XMYUWC]T-':[W73CU+O+]".+N[V4MG[TQCTT@\0=O;WV_OU>])36_G;\W$RM-C
  1481. XMU^-+V<+=RV_C4T)%S=EK6=_1U\C5V\U.0CK7SLGO65W(T5?_[UO)P\;;23W;
  1482. XMRMU,3%U7:\QWS<M/5]%G.SU.3;S!R\K"N>,Z+V/7R/]3:U<_0:^LR#IOO,I.
  1483. XM/415O[WG-DW#Q$I&64`]S\AWT\'!;V-C;U_'7]W#)<^FO:Q3'R*EGZLT1+.V
  1484. XM3S'_Q\$[/>?G2$;?O+I?3V=9.S3=MZNU9S,[=\'&9T%'7V?3TTP_1^??W4A+
  1485. XM4=W#Q$X_1,2]P_?3RN]"2VM10DM=V]/3Q\/-3$AOO<A=.TI1Q<C/8^O`;T0]
  1486. XM4??9S]G5T?]9=UU7U\OG54!![]_5V]G;VW=)7\_*Q-5C8U53U]%=V>?#SELZ
  1487. XM/%WWWUUC5<S*R??=YU]?8_?9SF?G[^/W9U59:[_G2/_OT<[5V=7=3%-C3DU5
  1488. XMZ^O?W^/O___;8TU'W^=GY^O9T\O3]^/?]W?9V]O;V5]!0UO1VUU,Y]7W]]]1
  1489. XM3TQ+2F>YSF?OQ\E!.DS1[V_.U=G-[TE$2&_.U5$_0]7,V<W=V>-99\/K54Y1
  1490. XMS]7;YS\TS:^L02TOO+I?/\&Q/T'1ZSQ*VT95U_?=R7=WWVM):[V\VULX0->X
  1491. XMU4E1SN<^2-==0#YW[U-GU<QCZ^/9[W?GYW??T=-O6^O1V>_=SU=.7\K(S-W9
  1492. XM6TIKT<[G8_?;WUE+0$I;W6==;^/52S]-7UG;S<G-]]7.9V=;U<[C:U=.7<R]
  1493. XMS4U1VSU#NO]`+SZ_N++5/C0YV;B]TUL_2/_*N.?&.3^MK;4G*5FP-S?&0U&Z
  1494. XM/^?"Q?\\/#Y&U<CW2TG?T6=W_\O-Q[C33EU/2<7%]T-KU]]93.OK2TIOQ,G,
  1495. XM3DU956?=7VMGU<[G8UUKZ\>^74E3;W?5V>-K:TU!26.^Q,Y;2$-,]^=14UG5
  1496. XMQ\:_R,X[-SM$SJ^YUTI.RZ^T=S0\54_K-\#-QSLG):J?I"8J3ZW/.]^UN2TJ
  1497. XM/J>N33_(OS@]ML5-/$MWSN?GZUM+W<?94U%5]^==R[BXS5];3T]/65]K2#_1
  1498. XM;V>OI:<G'Q^OGZ,Y/D[&P<\[/FM-5>_/8U\_1T?.LJF\1BPT:\K3UU512L>X
  1499. XMOW=92U'7T?=,1=_5U5_=P\I;3VMW_]=O9U=3X\_5:TYCS\O+W?]=9^_/U6-*
  1500. XM0DE7ZV?K]^=O6TQ-7]__Z]WO9V?GU<[3[VMWX]?_8U%32DU5[\]1Q;S*3T!5
  1501. XMO[KC6U-59V];5=7C:V-=9_];66OWT>?=47?5TW?,V5%.74Y33LW!6TWW]^/C
  1502. XM4]]W34I9W]-=76O`3=/.TT)1MKA5(R;CH<$KOZ'(-C[*53\X,43'NKY`1SY/
  1503. XMX[_K46_$SM]+8]//VV__74,V/>?.S[_%_S9`V]E/3>__5^?3QMO7TVM?_]W9
  1504. XMX]]53]O.T5M?W?=32$Y`/^N^VTX^W\?#545$]^?CYV]?74U9OK_5:UM;S<++
  1505. XM5U/K]V='7TS'SKW)0RLB3J:J.B;WK[@\,T+#QO=,6W?7Z^_7V<?K3?_G]]_O
  1506. XM;V]WZ]?C_^]W755G;U=,6>OW6V_KS]O_7^?9]UUC;^_;Y^_O[^?K5U?KW?_O
  1507. XM]UU=9UWKT>M1/T'WNL5;06?G6]_&W4X_1-W%]TMW:U5-8V/#ON,Q/\K#5T[%
  1508. XMUTQ3V==18\_?Z]7K:V=5;]WC7>/K:U%KX\S5=U-=WU-WW>?3WST^7[/1.6^Y
  1509. XM8T=?2C[_U4U75T5%U_==XUUC8_]O3UO,U=W_65-5[^?_[^/3R=]W757GWW?W
  1510. XMW^OO]V_CS]'3_TM*[\]K9_=59_]94V-;4?_7W_]G75M95V?GWV]CX\7-T>_;
  1511. XM=W=37='GXV?.P%-CZ_?113]9P>=55UWWVTI#:V]C8UU7U<G(X]7/55-79^?/
  1512. XMW?=G=U?W8U==:UW;S_=C;_?WZ^]+6]755S';O+53-SZVO>-34UE?SM5W4<W1
  1513. XMW^_C8TM9[]')TV=356]K]W=97<G555=O3$)7W<QO66MG54Y=W>_WS<K?74Q(
  1514. XM[\_&[]5W9V=WW>/9SV=16V-C[^__[^]?64QK4TEWY]]K7>?C_V?WY^_GU==?
  1515. XMX]U=45_)Q='O]V=W6]_;W5]O_]'CXTY-1>O5U]OO=TI/8]??:U]?4U?_R557
  1516. XMS?]/T<O?]W=G:TM?W]W;U>-G5UEK7^]W6^O?8U-.3%WOY_=KV]MW;VO_=VMC
  1517. XMU\W7V=GGWUUK3T?O7>O79U%?Z\]G6U==Z^=53V_7R6=-3/_K_W=K:]?=V^],
  1518. XM3>?;R,[9U^=?3#]?O\P_/F_&5TEGQ<C?25/W1D!.]\_O3MG(Y\:_24(YQ:JT
  1519. XM,D^[3DG-7U5/.D&_;T?OVTU5P\?OS-]CW5MOZ___75__;V?O_V/OV^_OXV-=
  1520. XM7>O5T^_OU=U355%7=]_CW]EO64Y9;^/GZV-=7]_3[]OK35%+6^O*Q>MO6V_G
  1521. XM7UEW___K_U'WTV_K[V];;UU=YV_GW6/O:U_;[W==65M;1TW3R=%K=_=W:V/G
  1522. XMT=%75W?-RLWGW5LW,=FWNM=OW6?5UVOK7T=,3DI(7V_GS=7*UST^4\3'X^_9
  1523. XMYU]W8U=53./&W6MGU]WG44Y;7V-OO\_O.S0Q_\*TR$H^V<G,34S;YW=KV\9G
  1524. XM/3I.8^/#S_?5Q,+_=]W;9V-'1E4_1G?,OKT\+3,^][:XU5_9WV=C9TQ-3V?;
  1525. XMQ+6]RUM1YUWKW4Y#0=G#O6=.4>O.9V--9^OWS=/C5U]WW>/KX]71:TM'55EW
  1526. XM9TU1T^=K;V?CZTH^6\%G/U?9;__C9V=7]\K9X]];;^=G]__O;VOG=]WG[^O9
  1527. XM[^-;24A%1=W-PM%94U55]TU?64KG5;2\33TN5;:TR-'?Y_]K53`OP[_G15/=
  1528. XM56O3O-U)5]GCW^]W66?57]?57W?GZV_;8VL_0%O5Y]WG[]'O/2U`PJS%2#_?
  1529. XMS.\P/,S`ZT];W\Q?24M/X]552+JWS4!(TU'O9U'%N-]502[$KTQ;1;RPURLF
  1530. XM*N>KI+-/.5G$ZSHRPKIG3\;$_^/C7>__5>O5WW=?:_=O45E9[^OW:]W+[U5;
  1531. XMY]E)0$;5S=EGT<3W=UW=V^?G]UE*[\Q-5=W;W<];4]?O7>MO6TEOS5M+3]73
  1532. XMWUU-14ECYT9)[\?$RE5;]]O;W5UKW^M;]^/KZ]'/8__;[V=KZ]??75E79V]=
  1533. XM34Y;SM'G_U5-5>/=:U5?_^/O]_?WY_=O=V]KZ]7/WV]O;_=96U-W[VM?34SO
  1534. XMV=5.9^=O9^/W=^/?7U'W[_]O:W?OZ]WOU>-O8UO;S.M54__OZVMO9U-145-9
  1535. XM7?]W9TY?4UMK;U_O35/KT]',ZUU+5=W1:V_7R]E1Z]M7=_?_W]?O;UU-45=K
  1536. XM4UEC]^??Y^?=3D7WY]?5]TM#7\'(_U/%O5%5]]]51^?=9VMC=]O?8]7.RUEW
  1537. XM[S<^0;C,3E=9[TM'W=_.S==C3VMW1=7$7TM=7U?GQBPON\7-5]O_V=_C8S]#
  1538. XM[\C945?+;SQ/T=%.8\UK6UOO3TS=__?W]]O9V7=C7^]98_?O=^_;:V]9X^/K
  1539. XM_UO7V?=C549'2N_,VUE,=[S`YTA=YVM=]^_)YV-O2T1+V]G(Q,_?]^/C[VO_
  1540. XM[VM/0$=574U(U<K-Z^_O8V-W:V=/47?9_UOKT<S?8U/WX^/KY^?K;U=W=^O_
  1541. XM8_??_VMG_V-96W?O;W=K5U-==]GG]W?O[]O3UU-=U]5C6T(^1&_1R\R_V4]#
  1542. XM25%9X]WW:VMO45_7U>MO:V?_Y_?O[_=W]^OG]W?GW?=;;]_=V?]14UM?;^/5
  1543. XM=V]523<R1<*LL\\Q+SVXL+A%/$%$4<_/SEU.7=G;Y^]W=]O1:UG3SV]75=WC
  1544. XMR$I"3_=70CUCQ,/)6??W6UE775]=6^O7T]EK:__=V]_WZ^/_X]_W:U]32D=7
  1545. XMS]/KW]W;W=]71DCOW?_?V?]O]^?==U]?:V-79^/G9W?;Y^MO76?GW>=G66_?
  1546. XMW=W_6W?O_UM;4U5O]U=CW=G_44]WU<S7_T];[^OKR,UO5???8V__:TYW6V_-
  1547. XMUU_K:T=$=\O)54]C6VO9[T].6]73W6=52CU;T;S-=U7KR\Q.2&O,WTM(;^=9
  1548. XM5U=CU\YK4]_&9UO'O6=./RMCK[3-0^.UPRPUV;;"]^_/T4A&5=/=3$!'W<_&
  1549. XMZV]5U=/7;^OW6V_G35=CW>/5VU=!16O7]TY!8\F^=TU.X\]W7=G?X]G3SLQ%
  1550. XM/4C%S6]._\_G76_;YV]934Y.2TI3=]O_7>MOZ]]956??T]OW=V=WYW?O]V-?
  1551. XM7?_O]^OO9U=567?7U>/_[W?;V^?_]V=95U57:UMGU^/OSL[K1$I?WV=G]^OO
  1552. XMX^MG;___[]W7V]_G7U%;;_=C6U5?8V-K7W??W^=W9V-K:W=O=^O*UUE35=_.
  1553. XMR-UO64(^/>>_NM%C3/_;T?=93T]776M=76?_Y\[+[V-9[^-GT>/_56-W54M/
  1554. XM9UGGT=OO5VM/W\C?]T]'6\:V=S=9O;?50T!7;]W39TQ99V_5R]$W/M^TU435
  1555. XMOM]#U\).6>=17=M51V-K9^]K7V=567=K=]7W;W=K8\W-W7?CU^/W=^O_;V_W
  1556. XM9V-K6U5;]^_KV>]C=^_W7__K6U]O]V]CX]UK3TA.M=/9*BQGM;_*2BZ\L<MC
  1557. XM6U?+TV-54UW+_V__;^M.U=^[R$(K-].JNCL\W<-52V?763],S]%*.\2UNSX\
  1558. XM3[^^Q%%3T\+7Y___:U==5V?OY^=W_^O3_V]?7V/WZ^MW]^_O;_=G76O_RLSW
  1559. XM5V]O]^OW4U7GZ^M=55_O:V]K=^O?ZV_G]_=GWW=9RM%W__]-55]C4V/7[_?_
  1560. XM:VOKV_?_=VM977=WZ]_G;V]WW]_W]W?C[_]G5^_.S%M"/U/9PM55Z]]C_]WG
  1561. XM3E?WS]/CZ^]G=^?KW\[=9VO_[V=?9VMG8UG_]VMW:UUK:V-O[^-O;^_3W>_W
  1562. XM[^OOX^?O;V_K]_];7?_GZU=;5]=W45=9_]O1WUM39]W7WTM,6^?GZ]GW9U]?
  1563. XM:]/1Y_]G:V=G=V]O7UUK[^OO=V-K=_?O]_?W_V]K_V]O;___=V/_]_==55=G
  1564. XMW\[.8T93U</564;_T\Y?9^?5YU=OW]]966-C5UWO[VMG;VM?7V-W[V]G:^_W
  1565. XM9V_KX]WG;^_K_^_GZW?W]^??XUU976OO:VMO:V=G:___=__W:V=?76=O]_]O
  1566. XM;^_CY^/GX^OW;__K]V]KZ^=G7V=W_W=W:U]C;W=W:V]W=W?_]_?W[^__]^_W
  1567. XM=_?OV5]5]]=O3L[*9TA+3LO(V4M;Y^MO9VMW=VM?8W?_9V_K[VMG[^/=X^__
  1568. XM]^OW9U]C___O[VM;:W=W__]W=_]W=V]O=W=C:_]O8V?_=VMG[]G5YVMO;_?_
  1569. XM__?_]_]K_^?G;V=C8W==6U5=XV=K=^OG[U]98^OK_VMK:]_GY__W=_]G9__W
  1570. XMZ_]K:V]G_^/O4__+SM];14%%S+BRWT(W0__$O]E+05/?S>-53U_WS-U+6]_;
  1571. XM64IWT<]52T_=WVM?V\Y71DS;X___V]?W9VO?T]=12W?9WU=+5]/5_]_.T4(]
  1572. XM2;[,65O7VU%?X^-?75U136=CY\K79V?K=UE/Y]/;5V?WZVM=9^_W:^/775-=
  1573. XMV>=G:__G]V]?9_]W;W?_=_]W____=VOW]_?K;U5OV=M;5UMW=^__=__W_W=W
  1574. XM:V=OZ_]W=W=W]_]W:_?__^O_;_?O]W=?9__CXV]=8___:VMW=U]W_W=K[_?W
  1575. XM9V-=]_=K;^OK:V_O=__W7U]GT]/W7V=O=V]K14K9Q<+,;UW?ZV].3UMK655;
  1576. XM_]MW:__O=VOWY]UK6UO9S<]=4VOKZV]?;]G3W55.5^?=_U%9_^O_;V_O[V=C
  1577. XM8__W;V=K[_]O9__K]UEKU>]K:U_K4UE;U]O=[^-O9U_K;^=W:V-C77=WY]/_
  1578. XM[VM?75%7]]/);TE/=]%W4U71T___W\]75UUC=]_/=U=?=_]W]^]O:^]W[V__
  1579. XM]VM57]'C3T!KQ<]12,[97^O.SV/W[TQ/]]G7ZVM79V]W9UU.U\_56U=;7U53
  1580. XM7^/.V7=966/_Y^]W;V__W>/?W^]O_^OW]_]O:VOO[W=;6U]C75UC_^_O]_?_
  1581. XM;U]5W=%C=]E52=_C;]WC8^OO8__K_VO_W^-W;_]W;V/__V-C7=_C]_?G4\S,
  1582. XM44$YO+7_2<W54=G9=]UO6UM=R\C73#](P+_*7__K54_WV]E?4T]W9U?;S-U?
  1583. XM:VOWV=7_65OO;U]?7VOW]V];:W=K9_?K=_?K]W?__W?_Y]O_=^OW__]W7U=?
  1584. XM8^O;WVM=9^_W=V-G]^_K=UM7__?W_W=O=__G_W?W[W=W[W=W=V]O]_=O:_?O
  1585. XM:V=O=__W]W?W]__GZ_?_=V-5:]WK7V/O_VOW=U?O5_?_[]5C43T]YZ^]0#O9
  1586. XMNE-#6<E5/MO.:U'?V55;_W=G]^MK:]_O=]G=;V=O_U]5____Z^]O;V__]V]G
  1587. XM;__W;V__Y^-?2U^\TVM!1-&U/2_KOKVZN_\\3O]/T\$_2MU745_&XT9WXUO-
  1588. XMQ-MW_V_=[V-G76-K:_?KV_=73U]O:]_=W^_?[U-1[\G3]U%78]_7Q_=?3TY?
  1589. XMW]GC;U]O=V==:^/G;W=K8V-O[^OG7U]G_VMKX^OW]^OGZ^OKY^_GW]WC/3_)
  1590. XMQ]_;W>\].#G_R,;K_]'W03C=Q,1(7>O_6_]G4=_*VW?5UUE13>O;T>?_9V_G
  1591. XM]V=G_V]G7^/W;V-O]_=G=_?_8__=:VMO__?O:V-;9V_WZ]O7Y^/O=^_KW=?O
  1592. XM3E-766=C=_]C:V-K=^_WZ_??]V=G;_??Y^?;W>/_:V=O=W=W]_=K6]W5YTE(
  1593. XM3]G3V?]W8VMC76-K8^O=[U]G;V/WW\[_4??'PTQ)T='_7^_K=W?_5U__[V-;
  1594. XM;_]K8V____?O:V=K____]^_W[]__;VMK=____W?__W?___?O]_]W]^]W=_?K
  1595. XM[_]O]^_W:V_KX^=94VOWXV=G=___=W=K9W?_=_?__^_?X___[]_O=U]G=W=W
  1596. XM_V]KY^?==W=W;VO_:\W/[U];8__OV]]K8U]KX^/O;VMG]_]W9V=W;W=W:V]W
  1597. XM=W?CW=UK7V/_]_]G;_?C]__WZ^MO:V]O_W?_=V]C8VOWX_=W9VMK:VMK__?_
  1598. XM______?_=W=W_W=W_W=C;VMW[^?O___WZ_]W__?___]K9VMK____;V]O=___
  1599. XM=___[^OO]_____]W9V-?=_?OZ^M.0T?!P=M+_]UG75E9Z\KC8UEK:V_W;VOG
  1600. XMV^]G6?______:W?O_V]O;_?O[_____]G=]5C6>?C;VMO7V?_Z^O?W?]WYUU5
  1601. XM6VMG]_=W9V?WX^/K:W?O]^__]V]=5V/5S]UG_]OO75GO;V?_]^?K]VMO=W?_
  1602. XM__=W___W=VO_=W=O=V]K8VMO[U_K=]_CZVM71&_)P%E.7<?-8TIWT=/C:UMC
  1603. XM8TI*9^=W[\[/9V/K[T]*T<?=5UU?_^__]_?7Q6-!1T1$QKB[/CA"Q+WG3D5C
  1604. XMV]5O4U/_W=/9=UOKU]MC75______=VM?=^/G;UWW[V]K;W?GVVM.3\S1=]_7
  1605. XM[___8^_3W6MW;^/K:VMW__]K7V-O_W?_;VMO[_?_=^_W=VMO[_?_;______W
  1606. XM_W?_Z^__=W?W=VMC;W?O_W=W]^MW;V=O:V=W__?_=V_W[_?__W=O=_?_=W?G
  1607. XMZW?_Z_=K_U?_[^_GXV]=5VOKVV]G8_=W_V_W]W?__VM=5__K]_____]W]^OK
  1608. XM_W=W____=_]W[^OK]W?_[_]==W=WZV]CW]E.3V?O]_=O:UG=S=UW;V=!1F^X
  1609. XMOVL_:\+92D+5VU]CU<Y12??=[_?=W5U?[^/_;V=;7]_?_W=W;_?C]U-GX^-W
  1610. XM=V]O;VMW_V/G;V-K8V=W[^/C]^]W]_=G;_]O8V-OZ_?_=_?W]_=W:___=V__
  1611. XM[__W[_=W]^O___=W;W?_]_]W_W?W=V==7V?OZ_?_[_=O;VMK_^/K_W?_]_]W
  1612. XM]_?W=^_O_W=K:V]W=W?__V_______W?___]W]^_C[W=W=^_W_W?___]W____
  1613. XM_W=W__?W]_]O;W?_;VMK;W?______W=O=_____________?K]V=W=^_O8T]5
  1614. XM=]7-;U-WW]_O;V=C:V]C:^OCYVMG=_]W:V]O;V=K=W=O=_?O]___]_]W=W=O
  1615. XM:W?G:U=9_^_9R^M,3MW*:U5/T]-O1&O%U5E*W=-=76]K6UO__^__9VOG]W=W
  1616. XM____]_____?W____]_=W=V]W_^__;____^_W__]W=V]O;V=G:_____?O[__W
  1617. XMZV]O_^_W_V__]___]_]W_W?__W=W;V______=V]K=_]W=___]^OK[_]W;___
  1618. XM__]O=W=G9V_OZ_=W=_]W=_?W;VO_[_]K__]O=V_KY^/_9U=C[]GG=V/_X]UW
  1619. XM65=WW^?_:___=VMO_^__:U]K]_=W;__W]W=W=____W?_[_]K=_?O=W=W____
  1620. XM__]W:W?_____=__W]___=_]O;V___W=W;W?__V]W=V]W__]O=__W=V____=K
  1621. XM;V_W[_=W=___]^_W__=W;V]W__]W:V=G9V=O[^OW=W=O:V]O[^??WUM/64_W
  1622. XMS^-W[]?36TQ7U=?K65E=6^_*VU-+U\S?3V_==UEKZU5KW]OW9UWW]VM?_]]W
  1623. XM8V_;ZV=?:^_O=V__]^__=__O[_?_______]W__]O:VMW_W=O:_________]W
  1624. XM]U_K[V__;_=K7__OZ_]WYV-GX\SO0DK=T7=;:^OC=V]K__]G=_?O:V]OW^];
  1625. XM[^O5Y_=C6UEK=^/G=V-O[]W_8V-K]W?W=V-O[^?W___W[_?W___O]W=W_^?W
  1626. XM]V-GW_=O9VMO;W=W9_?W]_?__^OO_VMO_V]K:W?_____________;___]___
  1627. XM__]W=W=W_W?___]W]_?_=____W?_=W?_=W?W]_]W;W?K]W=W[_=W;]=W:UE7
  1628. XM_]7?6TWOV^MG[^MC6^_W:VO____K[V=O[_]O=^____?W_V]K;___________
  1629. XM_W=K;__W=V]O______?_=V]W[^_W______]W__?__W?O___W__]W=_____]O
  1630. XM=___=W?W[^]W;W?__W=W___________W___W]_]W=__W]W=W__?__W?___]W
  1631. XM;V]W__]W=____V]O;__W_____________________W?_____=_?_=V=O[W=G
  1632. XM7>?*]U'_Y_=C_^]W__]G=^_W=__W;V?W_V]O__?O___O]_____]C:W?_____
  1633. XM;V=G;^?K_______O_V]W_^_O]V]O___W____=W=W_W=W=V=O[_]O;_?WZ^__
  1634. XM9V]W__?KW=/;_U]/7=G(8TI-V]]C[^-K55OOW=UW8V/G[W?_[_=G=_?_:___
  1635. XM=V_W_W=W__]K=V]W]_?_;_]O7^OK_W=C]^M?5>?7W6MC;___=W?W[W=O=___
  1636. XM__?W=__W]_]W__]W__]W;W?_=_____?_=V]O;W?_=W?__W=W____=W=W____
  1637. XM=______W]_=O________________=_____________________?W______]W
  1638. XM=____W?____W____]_______=________W?_]____W?__W=O____________
  1639. XM=W?_]_]W________=W=W=___________________]_?O____=_____]O;W?_
  1640. XM_V]O=W?_______?_:VOWY_]K;_]W__=K:^__;^__=__W_W?_]_?_]_]W;V]K
  1641. XM=__W=W=W=W=W]_]W=V]W]_?W_W=W_____W?____W]W?_]_]O;W?W[^______
  1642. XM___W]_]O=W?_=___=W?W__?_]_?_=W?_____________________________
  1643. XM_W?_______________]W=_____________________]W=__W_W=W___K[_]O
  1644. XM_^______;W=K=__W]____V]O__?_____:V/_]_]W=W=O=_?O]_]K7V]O[]OG
  1645. XM_V?_ZW=K:W?_]_]W:_______________=W=O=____W=W____;W?_________
  1646. XM______________________]W=______________K__?_]_]W_____W?___]W
  1647. XM=W?_____________________]W?_____]W?___]W=___________________
  1648. XM____________=W=W__]W_________W=W=___________________________
  1649. XM______]W______]W=W?___]W=_____]W=____W?_]____W=W=VMO]^?CZV=?
  1650. XM9_?W_W=O:W?_]^_W_W?___]O=__O_V]K_^_W=V]O___W_W=O____]^_W__?_
  1651. XM_____W=O=_______]__W_________________________W?______W=W=___
  1652. XM_W?__________________________________W=W=__W[_=W;____W=O____
  1653. XM=W?__W=W____=W?_______________?_____________=W?_____________
  1654. XM____________________________________________________________
  1655. XM___W___W]_____________]W________________=_____]W____________
  1656. XM_W?______________________________________W=O__?O]V]K=_?W_W=W
  1657. XM______________]W=_____]W______________]W____________________
  1658. XM____________________________________________=________W?_____
  1659. XM_____________________^OW__?_]_______________________________
  1660. XM_______________________________W______________?_____________
  1661. XM________________________________________]___]_?_]_=W]^]O:^-9
  1662. XM____________________________________________________________
  1663. XM____________________________________________________________
  1664. XM____________________________________________________________
  1665. XM____________________________________________________________
  1666. XM____________________________________________________________
  1667. XM____________________________________________________________
  1668. XM____________________________________________________________
  1669. XM____________________________________________________________
  1670. XM____________________________________________________________
  1671. XM____________________________________________________________
  1672. XM____________________________________________________________
  1673. XM____________________________________________________________
  1674. XM____________________________________________________________
  1675. XM____________________________________________________________
  1676. XM____________________________________________________________
  1677. XM____________________________________________________________
  1678. XM____________________________________________________________
  1679. XL____________________________________________________________
  1680. X`
  1681. Xend
  1682. END_OF_FILE
  1683. if test 27680 -ne `wc -c <'sounds/applause.au.uu'`; then
  1684.     echo shar: \"'sounds/applause.au.uu'\" unpacked with wrong size!
  1685. fi
  1686. # end of 'sounds/applause.au.uu'
  1687. fi
  1688. echo shar: End of archive 11 \(of 30\).
  1689. cp /dev/null ark11isdone
  1690. MISSING=""
  1691. 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 27 28 29 30 ; do
  1692.     if test ! -f ark${I}isdone ; then
  1693.     MISSING="${MISSING} ${I}"
  1694.     fi
  1695. done
  1696. if test "${MISSING}" = "" ; then
  1697.     echo You have unpacked all 30 archives.
  1698.     echo "Now execute sdecode.sh to build files."
  1699.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1700. else
  1701.     echo You still need to unpack the following archives:
  1702.     echo "        " ${MISSING}
  1703. fi
  1704. ##  End of shell archive.
  1705. exit 0
  1706.