IMD 1.16: 1/06/2007 13:17:25 FOGCPM.188 --FOGCPM188ANAGRAM CMDu README 1STSCRABBLEWS  !"SCRABBLEWS #-11-18 87 SIGSORT CMD$ANA12759DQF%&'()*+,-./01234ANA12759DQF56789:;<=>?@ABCDANA12759DQFEFGHIJKLMNOPQRSTANA12759DQFUVWXYZ[\]^_`abcdANA12759DQFefghijklmnopqrstANA12759DQFuvwxyz{|}~ANA12759DQFANA12759DQF-CPM188 DOCThis is the disk name. t@@* Installation Notes: Because this program is one that's fun to play around * with and, by its nature, is likely to use a database that gradually increases * in size, I have tried to set things up so the most likely modifications are * easy to make. For purposes of identifying different versions of the * database, the data file has been named ANA?????.DBF to signify it as an * ANAGRAM file with numerals used in place of the question marks (such as * ANA12759.DBF in the original version) to designate the number of records in * the database. The index file is similarly named KEY?????.NDX to easily * associate it with the proper data file. If you are diligent about * changing the names as you add records, you won't get lost with different * versions. To simplify name changing in the program itself, you need to * change the names only in program lines four and five where the data file * and index file names are stored to the memory variables DATAFILE and * INDEXFILE respectively. I have also tried to build in error traps so the * program itself will check to see if the proper datafile and index files * exist before executing. If desired, the program will build its own index * file or you can do it yourself with the command "INDEX ON KEY TO KEY?????". * Just be sure to substitute the correct numerals in the name (if you should * happen to make a mistake, you can RENAME the index file as needed, there is * no need to start over again). Because index files generated by different * versions of dBase may not be compatible with each other, you should NOT use * the REINDEX command. The data file ANA12759.DBF was originally generated * using dBase II. If the program is run under dBase III or a varient, the * file should copied in Standard Data Format (SDF) to a temporary file and * appended into a new database created by dBase III or other database system. * If you would like to add words to the database, just USE ANA????? INDEX * KEY????? and APPEND a record, filling in the word and the alphabetized key. * If you are truly ambitious and want to add several words, the associated * program SIGSORT.CMD will automatically generate the necessary key for * each word, but be sure to use the index file while appending the new words * or to generate a new index after adding a large number of words. * Be sure to insert the correct data file name in SIGSORT.CMD so it will be * working with the right file. To speed up processing, you may want to delete * these notes in your runtime program. I hope you enjoy the program. * John Krahmer, Lubbock, Texas. 806-742-3920. CLEAR ERASE SET TALK OFF * Change the names as needed in the next two lines to reflect changes in * the number of records (words) in the database. STORE 'ANA12759.DBF' TO DATAFILE STORE 'KEY12759.NDX' TO INDEXFILE IF .NOT. FILE ('&DATAFILE') ? "I CAN'T FIND THE DATA FILE "+DATAFILE+". IF YOU HAVE CHANGED THE NAME" ? "OF THE DATAFILE, PLEASE UPDATE THE PROGRAM." CLEAR SET TALK ON RETURN ENDIF IF .NOT. FILE ('&INDEXFILE') STORE F TO CREATE ? 'THE INDEX FILE IS MISSING. DO YOU WANT ME TO CREATE IT? I WILL NEED' ? 'APPROXIMATELY 250K AND SEVERAL MINUTES TO BUILD THE INDEX FILE.' ? INPUT "CREATE FILE (Y/N)?" TO CREATE IF CREATE ERASE SET TALK ON ? 'WORKING -- PLEASE WAIT' USE &DATAFILE INDEX ON KEY TO &INDEXFILE CLEAR DO ANAGRAM3 ELSE CLEAR ERASE SET TALK ON RETURN ENDIF ENDIF SET EXACT ON STORE '$(Q,1,1) <= $(Q,2,1) .AND. $(Q,2,1) <= $(Q,3,1) .AND. $(Q,3,1) <=; $(Q,4,1) .AND. $(Q,4,1) <= $(Q,5,1) .AND. $(Q,5,1) <= $(Q,6,1) .AND.; $(Q,6,1) <= $(Q,7,1) .AND. $(Q,7,1) <= $(Q,8,1) .AND. $(Q,8,1); <= $(Q,9,1)' TO TEST *SET PRINT ON USE &DATAFILE INDEX &INDEXFILE STORE T TO ERROR DO WHILE ERROR ? 'WORD SIGNATURE LOOK-UP PROGRAM' ? ? 'ENTER FOUR TO EIGHT LETTERS' ? ACCEPT "LETTERS?" TO LIST STORE !(LIST) TO STRING STORE !(LIST)+'aaaaaa' TO Q IF LEN(STRING) < 4 .OR. LEN(STRING) > 8 ERASE ? 'STRING MUST BE AT LEAST 4 AND NO MORE THAN 8 LETTERS LONG.' ? ? 'PRESS RETURN TO CONTINUE' SET CONSOLE OFF WAIT SET CONSOLE ON ERASE STORE T TO ERROR ELSE STORE F TO ERROR ENDIF ENDDO IF &TEST STORE T TO ALPHA ? 'THE SIGNATURE IS ALREADY ALPHABETIZED -- BEGINNING SEARCH' ELSE STORE F TO ALPHA ENDIF IF .NOT. ALPHA ? 'WORKING -- PLEASE WAIT' STORE 65 TO WHATCHR STORE STRING TO NEWWORD STORE LEN(TRIM(STRING)) TO LENGTH STORE ' ' TO MKEY DO WHILE WHATCHR < 91 DO WHILE LENGTH > 0 DO CASE CASE @(CHR(WHATCHR),NEWWORD) STORE (@(CHR(WHATCHR),NEWWORD)+1) TO POINTER STORE MKEY+CHR(WHATCHR) TO MKEY IF POINTER > LENGTH STORE 0 TO LENGTH ELSE STORE LENGTH - (POINTER-1) TO LENGTH STORE $(NEWWORD,POINTER) TO NEWWORD ENDIF CASE @(CHR(WHATCHR),NEWWORD)=0 STORE 0 TO LENGTH CASE LEN(TRIM(STRING))=LEN(MKEY-1) STORE 0 TO LENGTH STORE 91 TO WHATCHR ENDCASE ENDDO STORE WHATCHR + 1 TO WHATCHR STORE LEN(TRIM(STRING)) TO LENGTH STORE TRIM(STRING) TO NEWWORD ENDDO STORE $(MKEY,2) TO STRING ? 'THE ALPHABETIZED SIGNATURE IS '+STRING+' -- BEGINNING SEARCH' ENDIF STORE STRING + '........' TO STRING STORE $(STRING,1,1) TO A STORE $(STRING,2,1) TO B STORE $(STRING,3,1) TO C STORE $(STRING,4,1) TO D STORE $(STRING,5,1) TO E STORE $(STRING,6,1) TO F STORE $(STRING,7,1) TO G STORE $(STRING,8,1) TO H IF $(STRING,8,1)<>'.' ? ' *** LOOKING FOR 8 LETTER WORDS ***' FIND &A&B&C&D&E&F&G&H LIST OFF WORD WHILE KEY='&A&B&C&D&E&F&G&H' ENDIF IF $(STRING,7,1)<>'.' ? ' *** LOOKING FOR 7 LETTER WORDS ***' FIND &A&B&C&D&E&F&G LIST OFF WORD WHILE KEY='&A&B&C&D&E&F&G' FIND &A&B&C&D&E&F&H LIST OFF WORD WHILE KEY='&A&B&C&D&E&F&H' FIND &A&B&C&D&E&G&H LIST OFF WORD WHILE KEY='&A&B&C&D&E&G&H' FIND &A&B&C&D&F&G&H LIST OFF WORD WHILE KEY='&A&B&C&D&F&G&H' FIND &A&B&C&E&F&G&H LIST OFF WORD WHILE KEY='&A&B&C&E&F&G&H' FIND &A&B&D&E&F&G&H LIST OFF WORD WHILE KEY='&A&B&D&E&F&G&H' FIND &A&C&D&E&F&G&H LIST OFF WORD WHILE KEY='&A&C&D&E&F&G&H' FIND &B&C&D&E&F&G&H LIST OFF WORD WHILE KEY='&B&C&D&E&F&G&H' ENDIF IF $(STRING,6,1)<>'.' ? ' *** LOOKING FOR 6 LETTER WORDS ***' FIND &A&B&C&D&E&F LIST OFF WORD WHILE KEY='&A&B&C&D&E&F' FIND &A&B&C&D&E&G LIST OFF WORD WHILE KEY='&A&B&C&D&E&G' FIND &A&B&C&D&E&H LIST OFF WORD WHILE KEY='&A&B&C&D&E&H' FIND &A&B&C&D&F&G LIST OFF WORD WHILE KEY='&A&B&C&D&F&G' FIND &A&B&C&D&F&H LIST OFF WORD WHILE KEY='&A&B&C&D&F&H' FIND &A&B&C&D&G&H LIST OFF WORD WHILE KEY='&A&B&C&D&G&H' FIND &A&B&C&E&F&G LIST OFF WORD WHILE KEY='&A&B&C&E&F&G' FIND &A&B&C&E&F&H LIST OFF WORD WHILE KEY='&A&B&C&E&F&H' FIND &A&B&C&E&G&H LIST OFF WORD WHILE KEY='&A&B&C&E&G&H' FIND &A&B&C&F&G&H LIST OFF WORD WHILE KEY='&A&B&C&F&G&H' FIND &A&B&D&E&F&G LIST OFF WORD WHILE KEY='&A&B&D&E&F&G' FIND &A&B&D&E&F&H LIST OFF WORD WHILE KEY='&A&B&D&E&F&H' FIND &A&B&D&E&G&H LIST OFF WORD WHILE KEY='&A&B&D&E&G&H' FIND &A&B&D&F&G&H LIST OFF WORD WHILE KEY='&A&B&D&F&G&H' FIND &A&B&E&F&G&H LIST OFF WORD WHILE KEY='&A&B&E&F&G&H' FIND &A&C&D&E&F&G LIST OFF WORD WHILE KEY='&A&C&D&E&F&G' FIND &A&C&D&E&F&H LIST OFF WORD WHILE KEY='&A&C&D&E&F&H' FIND &A&C&D&E&G&H LIST OFF WORD WHILE KEY='&A&C&D&E&G&H' FIND &A&C&D&F&G&H LIST OFF WORD WHILE KEY='&A&C&D&F&G&H' FIND &A&C&E&F&G&H LIST OFF WORD WHILE KEY='&A&C&E&F&G&H' FIND &A&D&E&F&G&H LIST OFF WORD WHILE KEY='&A&D&E&F&G&H' FIND &B&C&D&E&F&G LIST OFF WORD WHILE KEY='&B&C&D&E&F&G' FIND &B&C&D&E&F&H LIST OFF WORD WHILE KEY='&B&C&D&E&F&H' FIND &B&C&D&E&G&H LIST OFF WORD WHILE KEY='&B&C&D&E&G&H' FIND &B&C&D&F&G&H LIST OFF WORD WHILE KEY='&B&C&D&F&G&H' FIND &B&C&E&F&G&H LIST OFF WORD WHILE KEY='&B&C&E&F&G&H' FIND &B&D&E&F&G&H LIST OFF WORD WHILE KEY='&B&D&E&F&G&H' FIND &C&D&E&F&G&H LIST OFF WORD WHILE KEY='&C&D&E&F&G&H' ENDIF IF $(STRING,5,1)<>'.' ? ' *** LOOKING FOR 5 LETTER WORDS ***' FIND &A&B&C&D&E LIST OFF WORD WHILE KEY='&A&B&C&D&E' FIND &A&B&C&D&F LIST OFF WORD WHILE KEY='&A&B&C&D&F' FIND &A&B&C&D&G LIST OFF WORD WHILE KEY='&A&B&C&D&G' FIND &A&B&C&D&H LIST OFF WORD WHILE KEY='&A&B&C&D&H' FIND &A&B&C&E&F LIST OFF WORD WHILE KEY='&A&B&C&E&F' FIND &A&B&C&E&G LIST OFF WORD WHILE KEY='&A&B&C&E&G' FIND &A&B&C&E&H LIST OFF WORD WHILE KEY='&A&B&C&E&H' FIND &A&B&C&F&G LIST OFF WORD WHILE KEY='&A&B&C&F&G' FIND &A&B&C&F&H LIST OFF WORD WHILE KEY='&A&B&C&F&H' FIND &A&B&C&G&H LIST OFF WORD WHILE KEY='&A&B&C&G&H' FIND &A&B&D&E&F LIST OFF WORD WHILE KEY='&A&B&D&E&F' FIND &A&B&D&E&G LIST OFF WORD WHILE KEY='&A&B&D&E&G' FIND &A&B&D&E&H LIST OFF WORD WHILE KEY='&A&B&D&E&H' FIND &A&B&D&F&G LIST OFF WORD WHILE KEY='&A&B&D&F&G' FIND &A&B&D&F&H LIST OFF WORD WHILE KEY='&A&B&D&F&H' FIND &A&B&D&G&H LIST OFF WORD WHILE KEY='&A&B&D&G&H' FIND &A&B&E&F&G LIST OFF WORD WHILE KEY='&A&B&E&F&G' FIND &A&B&E&F&H LIST OFF WORD WHILE KEY='&A&B&E&F&H' FIND &A&B&E&G&H LIST OFF WORD WHILE KEY='&A&B&E&G&H' FIND &A&B&F&G&H LIST OFF WORD WHILE KEY='&A&B&F&G&H' FIND &A&C&D&E&F LIST OFF WORD WHILE KEY='&A&C&D&E&F' FIND &A&C&D&E&G LIST OFF WORD WHILE KEY='&A&C&D&E&G' FIND &A&C&D&E&H LIST OFF WORD WHILE KEY='&A&C&D&E&H' FIND &A&C&D&F&G LIST OFF WORD WHILE KEY='&A&C&D&F&G' FIND &A&C&D&F&H LIST OFF WORD WHILE KEY='&A&C&D&F&H' FIND &A&C&D&G&H LIST OFF WORD WHILE KEY='&A&C&D&G&H' FIND &A&C&E&F&G LIST OFF WORD WHILE KEY='&A&C&E&F&G' FIND &A&C&E&F&H LIST OFF WORD WHILE KEY='&A&C&E&F&H' FIND &A&C&E&G&H LIST OFF WORD WHILE KEY='&A&C&E&G&H' FIND &A&C&F&G&H LIST OFF WORD WHILE KEY='&A&C&F&G&H' FIND &A&D&E&F&G LIST OFF WORD WHILE KEY='&A&D&E&F&G' FIND &A&D&E&F&H LIST OFF WORD WHILE KEY='&A&D&E&F&H' FIND &A&D&E&G&H LIST OFF WORD WHILE KEY='&A&D&E&G&H' FIND &A&D&F&G&H LIST OFF WORD WHILE KEY='&A&D&F&G&H' FIND &A&E&F&G&H LIST OFF WORD WHILE KEY='&A&E&F&G&H' FIND &B&C&D&E&F LIST OFF WORD WHILE KEY='&B&C&D&E&F' FIND &B&C&D&E&G LIST OFF WORD WHILE KEY='&B&C&D&E&G' FIND &B&C&D&E&H LIST OFF WORD WHILE KEY='&B&C&D&E&H' FIND &B&C&D&F&G LIST OFF WORD WHILE KEY='&B&C&D&F&G' FIND &B&C&D&F&H LIST OFF WORD WHILE KEY='&B&C&D&F&H' FIND &B&C&D&G&H LIST OFF WORD WHILE KEY='&B&C&D&G&H' FIND &B&C&E&F&G LIST OFF WORD WHILE KEY='&B&C&E&F&G' FIND &B&C&E&F&H LIST OFF WORD WHILE KEY='&B&C&E&F&H' FIND &B&C&E&G&H LIST OFF WORD WHILE KEY='&B&C&E&G&H' FIND &B&C&F&G&H LIST OFF WORD WHILE KEY='&B&C&F&G&H' FIND &B&D&E&F&G LIST OFF WORD WHILE KEY='&B&D&E&F&G' FIND &B&D&E&F&H LIST OFF WORD WHILE KEY='&B&D&E&F&H' FIND &B&D&E&G&H LIST OFF WORD WHILE KEY='&B&D&E&G&H' FIND &B&D&F&G&H LIST OFF WORD WHILE KEY='&B&D&F&G&H' FIND &B&E&F&G&H LIST OFF WORD WHILE KEY='&B&E&F&G&H' FIND &C&D&E&F&G LIST OFF WORD WHILE KEY='&C&D&E&F&G' FIND &C&D&E&F&H LIST OFF WORD WHILE KEY='&C&D&E&F&H' FIND &C&D&E&G&H LIST OFF WORD WHILE KEY='&C&D&E&G&H' FIND &C&D&F&G&H LIST OFF WORD WHILE KEY='&C&D&F&G&H' FIND &C&E&F&G&H LIST OFF WORD WHILE KEY='&C&E&F&G&H' FIND &D&E&F&G&H LIST OFF WORD WHILE KEY='&D&E&F&G&H' ENDIF IF $(STRING,4,1)<>'.' ? ' *** LOOKING FOR 4 LETTER WORDS ***' FIND &A&B&C&D LIST OFF WORD WHILE KEY='&A&B&C&D' FIND &A&B&C&E LIST OFF WORD WHILE KEY='&A&B&C&E' FIND &A&B&C&F LIST OFF WORD WHILE KEY='&A&B&C&F' FIND &A&B&C&G LIST OFF WORD WHILE KEY='&A&B&C&G' FIND &A&B&C&H LIST OFF WORD WHILE KEY='&A&B&C&H' FIND &A&B&D&E LIST OFF WORD WHILE KEY='&A&B&D&E' FIND &A&B&D&F LIST OFF WORD WHILE KEY='&A&B&D&F' FIND &A&B&D&G LIST OFF WORD WHILE KEY='&A&B&D&G' FIND &A&B&D&H LIST OFF WORD WHILE KEY='&A&B&D&H' FIND &A&B&E&F LIST OFF WORD WHILE KEY='&A&B&E&F' FIND &A&B&E&G LIST OFF WORD WHILE KEY='&A&B&E&G' FIND &A&B&E&H LIST OFF WORD WHILE KEY='&A&B&E&H' FIND &A&B&F&G LIST OFF WORD WHILE KEY='&A&B&F&G' FIND &A&B&F&H LIST OFF WORD WHILE KEY='&A&B&F&H' FIND &A&B&G&H LIST OFF WORD WHILE KEY='&A&B&G&H' FIND &A&C&D&E LIST OFF WORD WHILE KEY='&A&C&D&E' FIND &A&C&D&F LIST OFF WORD WHILE KEY='&A&C&D&F' FIND &A&C&D&G LIST OFF WORD WHILE KEY='&A&C&D&G' FIND &A&C&D&H LIST OFF WORD WHILE KEY='&A&C&D&H' FIND &A&C&E&F LIST OFF WORD WHILE KEY='&A&C&E&F' FIND &A&C&E&G LIST OFF WORD WHILE KEY='&A&C&E&G' FIND &A&C&E&H LIST OFF WORD WHILE KEY='&A&C&E&H' FIND &A&C&F&G LIST OFF WORD WHILE KEY='&A&C&F&G' FIND &A&C&F&H LIST OFF WORD WHILE KEY='&A&C&F&H' FIND &A&D&E&F LIST OFF WORD WHILE KEY='&A&D&E&F' FIND &A&D&E&G LIST OFF WORD WHILE KEY='&A&D&E&G' FIND &A&D&E&H LIST OFF WORD WHILE KEY='&A&D&E&H' FIND &A&D&F&G LIST OFF WORD WHILE KEY='&A&D&F&G' FIND &A&D&F&H LIST OFF WORD WHILE KEY='&A&D&F&H' FIND &A&E&F&G LIST OFF WORD WHILE KEY='&A&E&F&G' FIND &A&E&F&H LIST OFF WORD WHILE KEY='&A&E&F&H' FIND &A&E&G&H LIST OFF WORD WHILE KEY='&A&E&G&H' FIND &A&F&G&H LIST OFF WORD WHILE KEY='&A&F&G&H' FIND &B&C&D&E LIST OFF WORD WHILE KEY='&B&C&D&E' FIND &B&C&D&F LIST OFF WORD WHILE KEY='&B&C&D&F' FIND &B&C&D&G LIST OFF WORD WHILE KEY='&B&C&D&G' FIND &B&C&D&H LIST OFF WORD WHILE KEY='&B&C&D&H' FIND &B&C&E&F LIST OFF WORD WHILE KEY='&B&C&E&F' FIND &B&C&E&G LIST OFF WORD WHILE KEY='&B&C&E&G' FIND &B&C&E&H LIST OFF WORD WHILE KEY='&B&C&E&H' FIND &B&C&F&G LIST OFF WORD WHILE KEY='&B&C&F&G' FIND &B&C&F&H LIST OFF WORD WHILE KEY='&B&C&F&H' FIND &B&C&G&H LIST OFF WORD WHILE KEY='&B&C&G&H' FIND &B&D&E&F LIST OFF WORD WHILE KEY='&B&D&E&F' FIND &B&D&E&G LIST OFF WORD WHILE KEY='&B&D&E&G' FIND &B&D&F&G LIST OFF WORD WHILE KEY='&B&D&F&G' FIND &B&D&F&H LIST OFF WORD WHILE KEY='&B&D&F&H' FIND &B&D&G&H LIST OFF WORD WHILE KEY='&B&D&G&H' FIND &B&E&F&G LIST OFF WORD WHILE KEY='&B&E&F&G' FIND &B&E&F&H LIST OFF WORD WHILE KEY='&B&E&F&H' FIND &B&E&G&H LIST OFF WORD WHILE KEY='&B&E&G&H' FIND &B&F&G&H LIST OFF WORD WHILE KEY='&B&F&G&H' FIND &C&D&E&F LIST OFF WORD WHILE KEY='&C&D&E&F' FIND &C&D&E&G LIST OFF WORD WHILE KEY='&C&D&E&G' FIND &C&D&E&H LIST OFF WORD WHILE KEY='&C&D&E&H' FIND &C&D&F&G LIST OFF WORD WHILE KEY='&C&D&F&G' FIND &C&D&F&H LIST OFF WORD WHILE KEY='&C&D&F&H' FIND &C&D&G&H LIST OFF WORD WHILE KEY='&C&D&G&H' FIND &C&E&F&G LIST OFF WORD WHILE KEY='&C&E&F&G' FIND &C&E&F&H LIST OFF WORD WHILE KEY='&C&E&F&H' FIND &C&E&G&H LIST OFF WORD WHILE KEY='&C&E&G&H' FIND &C&F&G&H LIST OFF WORD WHILE KEY='&C&F&G&H' FIND &D&E&F&G LIST OFF WORD WHILE KEY='&D&E&F&G' FIND &D&E&F&H LIST OFF WORD WHILE KEY='&D&E&F&H' FIND &D&E&G&H LIST OFF WORD WHILE KEY='&D&E&G&H' FIND &D&F&G&H LIST OFF WORD WHILE KEY='&D&F&G&H' FIND &E&D&F&G LIST OFF WORD WHILE KEY='&E&D&F&G' FIND &E&D&F&H LIST OFF WORD WHILE KEY='&E&D&F&H' FIND &E&D&G&H LIST OFF WORD WHILE KEY='&E&D&G&H' FIND &E&F&G&H LIST OFF WORD WHILE KEY='&E&F&G&H' ENDIF CLEAR INPUT "CONTINUE (Y/N)?" TO CONTINUE IF CONTINUE CLEAR DO ANAGRAM3 ELSE RELEASE ALL CLEAR ERASE *SET PRINT OFF SET TALK ON SET EXACT OFF ENDIF file A:UNARC16.COM) $ USER NOTE FOR ACCOMPANYING LIBRARY FILES The data files for this program are squeezed with Dave Rand's NewSWeeP program because of their length. When unsqueezed they will require about 492K of disk space, making a hard disk mandatory for use. I recommend that they be extracted to an empty user area, along with dBASE II, to use the .CMD files. I do not know if the programs will run on dBASE III or later versions of dBASE, but would appreciate hearing if they do. The file named SCRABBLE.WS describes both the techniques behind this program and the use of the program. The file named KEY12759.NDX is a dBASE II index (included because of the time it takes to generate the index, given the peculiar nature of the database) and reindexing may be needed if run under dBASE III or a later version. L~~w#~2L~wcIH~K~p2L!"L>2L*L~=2LK~2L͛KoK>*Lw!"L2L=2L!"LÛI͛KoK͢K͢J'LͫIH~< SCRABBLE, ANYONE? John Krahmer INTRODUCTION My wife is a word game wizard. She can regularly beat me at Scrabble, Boggle, Anagrams, Crossword Puzzles or any other game requiring the manipulation of letters. I don't even bother watching Wheel of Fortune with her; when she's in the room, the show doesn't even have a Neilson rating. Perhaps because of this untarnished record of consecutive losses, I occasionally gave some thought to the idea of a computer program that would give me enough help to at least be a respectable opponent. She never had any objection to my use of such a program, probably because of her boredom with playing against an inferior, but I always ran into the stumbling block of combinations and permutations. THE PROBLEM It is the theory of combinations and permutations that says a poker player has only one chance in 2,598,960 of getting a straight flush in the first five cards that are dealt (and this is without regard to the order in which the cards are dealt). As applied to words, the order of the letters becomes important as well and the number of permutations takes a quantum leap. Not only would the simple generation of the permutations take a long time but, since not all sequences of letters are also words, there is the added difficulty of distinguishing words from non- words. I toyed with the idea of using a spelling checker to identify legitimate words from a list of letter combinations, but the number of possible permutations made that idea ridiculous, not to mention the difficulty of modifying a spelling checker to find words that were spelled correctly instead of incorrectly. The problem seemed insurmountable until I happened upon the ingenious concept of "word signatures." (See Scientific American, Vol. 251, No. 4, pp. 20-21 (Oct. 1984)). THE SOLUTION A "word signature" is simply the alphabetical re-arrangement of the letters contained in any given word. For example, the word signature for the word, "reaction," is "aceinort." As it happens the word, "creation," has the same word signature. Thus, with the combination of letters forming the word signature "aceinort," at least two legitimate words can be made by using all eight letters. If less than eight letters are used, the words "certain, nectar, action, carton, ornate, ration, erotic, canoe, ocean, enact, trace, tonic, cane, race, care, iron and torn" can be formed (among others). The idea of word signatures meant that I did not have to be concerned with all possible combinations after all. I only had to know a list of letters in alphabetical order to determine any word or words that could be made with those letters, provided I had a database of words linked to the word signatures. It began to look like dBASE might be the answer to the problem of creating a viable Scrabble aid. By combining a data base of legitimate words with an index keyed to word signatures, I could take any given combination of letters and quickly access the words by entering the word signature and using the dBASE FIND command. My difficulty now became how to create a database of words without going through the drudgery of typing in a long list of words and word signatures. CREATING THE DATABASE The simplest way of doing this seemed to be by using a spelling checker to output the contents of its dictionary to a disk file but, alas, my spelling checker would only send its contents to a printer, not to a disk file. Undaunted by this limitation, I bought some plugs and cable from a local computer store and wired my two Osborne CP/M machines together and "printed" the dictionary from one computer to a disk file on the other (MS-DOS users might be able to use the redirection capability of DOS to do the same thing on one machine). The resulting disk file was then read into a dBASE II .DBF file with a single field named "Word" by using the Standard Data Format (SDF) option. Because my purpose was to create a database that would be useful in playing Scrabble, I arbitrarily DELETED all words of more than eight letters because a player normally has only seven letters in a "hand" and can usually link those letters to only one letter already played on the game board. There seemed little need for words of more than eight letters. Words of three letters or less were also DELETED because they are easy to find and there was no point in unnecessarily increasing the size of the database. The database ended up with 12,759 words. Since the game of Scrabble is really a varient of the class of word games described as "anagrams," the name ANA12759.DBF suggested itself as a good way to identify the file as an anagram database with a specified number of words contained as individual records. The name could then be changed to accurately reflect the addition of more words and help insure using the most current version of the database. GENERATING THE WORD SIGNATURES As the next step, I APPENDED the words to another dBASE II file containing two fields with a length of eight characters each, one named "Word" and the other named "Key," and ran the 12,759 words in the resulting .DBF file through a dBASE II command file to generate the word signatures and REPLACE the "Key" field in the data base with the proper signature. This command file appears below in Figure 1 under the title SIGSORT.CMD. While the command file is fairly short, it has some interesting aspects because of the nested loops that perform the internal sorting of letters within strings, a technique that might be useful for other applications. Following the standard lines to clear the system, set defaults and use a named database, the command file stores the ASCII value of a capital "A" (65 decimal) to a memory variable called WHATCHAR and the length of the word to be sorted to a memory variable called LENGTH. A space character was stored to the memory variable MKEY just to establish that location. I added a non-functional line at that point to write a screen message that all variables were loaded just to keep track of the processing sequence (debugging). The next several lines run through two nested loops that do two main things. First, so long as the length of the word is not exceeded, the command file keeps testing each letter in the word in sequential order against the letter stored in WHATCHR to determine if the letter appears one or more times in the word. If the letter does appear, it is stored in the first non-blank location in the MKEY memory variable. Second, when the length of the word is exceeded, the program increments the ASCII value of the search letter by one (i.e., "A" increments to "B" by adding 1 to the decimal value) and the sequential search is performed again with the last search being for the letter "Z" (90 decimal). To speed up the processing a little bit, a CASE statement is used to test the word with the dBASE @ function (i.e., "does this character appear in this string" function) and a negative response immediately causes the command file to move on to the next letter in the alphabet. The last part of the program takes the rearranged word and replaces the word signature with the alphabetized letters contained in MKEY. This command file will be useful if you create your own word database and need to generate the necessary word signatures. It will also be useful if you want to add large numbers of words to the original database in ANA12759.DBF and need to sort the letters of each word before you APPEND them to the original database. (The original database and the programs described in this article are available on disk in the FOG Library. One small word of warning is necessary about the use of SIGSORT: It takes about six seconds to sort each word into a word signature. If you multiply six seconds by several thousand words, it is readily apparent that the processing time must be measured in hours for a sizable database. Fortunately, the processing time can be calculated in advance and a database can be split into separate parts for overnight processing, with the parts reassembled into a whole when all of the word signatures have been generated. It took about 24 hours to generate the signatures for ANA12759.DBF. An interesting experiment would be a comparison of processing times for SIGSORT with compiled versions of dBASE .CMD or .PRG files on different hardware configurations. USING THE DATABASE AND THE WORD SIGNATURES The last step was to write a command file to USE ANA12759 to FIND each word signature that would form a word contained in any given combination of letters. This command file appears below in Figure 2 under the name ANAGRAM.CMD. Oddly enough this was the easiest part of the job because the command file was highly repetitive in its search logic. The beginning point, of course, was to index the database on KEY (the word signature) to take advantage of the speed of the dBASE FIND function. I originally did this directly from the dot prompt, but later modified the command file to generate the index file automatically if it is missing when the command file is run. Because the database is one that is likely to grow in size by the addition of more words and word signatures over a period of time, the only lines that need to be changed to reflect these additions appear in lines 4 and 5 of the command file. If you have added words to the database without having the index file in USE, just change the name of the database and erase the outdated index file. The command file will ask if you want a new index created and a "Yes" answer will generate the file for you. After selecting the database and index file for USE (or generating the index file if needed), the command file goes through a series of error traps and tests. The first IF/ENDIF tests for the existence of the database itself, primarily to be sure the name has not been changed from that expected by the command file. The next IF/ENDIF tests for the index file and asks if the user wants to create the index file if it is not found (again, a simple failure to change the name of the index file may be the reason the file is not found). Following these two file verifications, a long command string is stored to the memory variable TEST to determine if the letters that are entered are already in alphabetical order. The program runs a little bit faster if the letters are entered alphabetically, but this is not critical to the operation. One more error test checks the length of the entered string to be sure it is between four and eight letters long, to be compatible with the word lengths contained in the database. At this point , the program begins a word signature search if the search string is already in alphabetical order or runs through an alphabetizing loop if the letters are not already alphabetized. The search pattern itself is simply a process of storing each letter in the search string to a separate memory variable (with periods used for padding) and then using the FIND command to test each possible pattern to see if the database contains a word formed from the permutation. For ease of calculating patterns, these memory variables are named "A", "B", "C", etc. This violates the usual dBASE custom of naming memory variables with meaningful names, but the need to manipulate the possible permutations made the use of such names useful in the context of this program. The search sequence itself is tedious, but simple. The search for a string of eight letters is illustrative. If the eighth letter is not a period (causing an abort of that search sequence), the program attempts to FIND a word signature that matches the letters contained in memory variables "A" through "H" by combining those variables in a macro sequence (i.e., &A&B&C...etc.). If a match is found, the word formed by the letters in the word signature is displayed. The program then proceeds through a search for seven letter words by doing a FIND for all combinations of seven letters that can be derived from eight letters, provided that the seven letters are kept in alphabetical order. It is at this point that the concept of word signatures proves its worth in word searches. Because the order of the letters is important in forming a word, a complete set of permutations would require fifty-six searches. By using word signatures, the number of searches is reduced to eight. As a look at the program will demonstrate, this reduction factor becomes even more important as the searches for six, five and four letter combinations proceeds. Without the underlying theory of word signatures, the program would quickly become unmanageable. PROCESSING TIME If this program does nothing else, it certainly proves the speed of the dBASE II FIND command. A search for all possible words of four to eight letters that can be formed from the word signature "aceinort" takes about two and one-half minutes on an Osborne 4 with a Westwind/Trantor hard disk using the ANA12759 database. I do not have access to other equipment for comparison tests, but such comparisons would be of interest. Compiled versions of dBASE would no doubt be much faster. The search time will increase when more words can be formed from a given word signature because the program must perform a screen write as an intervening step between searches. Pascal experts might be able to use the idea of word signaures to develop a "stand-alone" program that performs similar functions. I wonder how fast that would be? ODD RESULTS When running the program, you will probably find that the same word sometimes appears more than once in the list of possible words. This is not an error, but a function of the search process that treats a letter in a particular position in a word signature as being different from the same letter in a another position in the same word signature. For example, the word "data" would show up three times if the search string were entered as "database" because the word signature is "aaabdest" and a search for four letter words would sequentially identify the various "a" combinations. PROGRAM USES Besides being a useful tool for Scrabble players like me who tend to read words like "aceinort" literally, the program is great for solving anagram puzzles. It has also been of interest in testing letter combinations derived from various word games. Merely having a database composed of words has been useful in finding words where letter locations are important by using the the dBASE "LIST for $(WORD,)="?" .AND. $(WORD,)="?" .AND. etc.," While this is fairly slow, it does solve Wheel of Fortune and Hangman puzzles in a reasonable time. Beyond such miscellaneous uses, the program has been a lot of fun for my eight year old daughter (who happens to be named Ana, perhaps the best reason of all for naming the database ANA12759). She loves reading and playing word games and has enjoyed using the program to solve anagrams and to find words that can be made from different letter combinations. I have no way to measure a difference, but I think her spelling has improved by using the program as a game. One more use, equally difficult to measure, is the simple fact that some programs allow people to enjoy themselves in ways that were difficult or impossible before personal computers were generally available. There is something intriguing about typing in a random sequence of letters and letting the computer list the wor ds that can be formed from the combination of letters. I have a suspicion that semantics, linguistics analysis and encryption theory can somehow be tied into the concept of word signatures. It is an idea that deserves further exploration. I hope you enjoy the program. By the way, my wife can still beat me at Scrabble, but the scores are closer. 1.td`봇^Ԅw?yc($^Cal>wevKZ4p0)8T"mxcCza۲)AE2K]XHvjt`:albas]L'ֻrtʟrU; b5sq+u%7lEgQNXa5']ʭnfC{tٳsI+^ aL,\A/0,2L0 04Sӻ{2 o>Vx0G/1 F(b4S|-d4f'{F3TKyZ<:*txDG^=PNp݃>xP4s S0!p";w;"S`HǾfD+#Ea:iʨWch0pI{pʩׂ̯]y-k¨o@Ȇxʐ,h@B`)up8Qn3<&[(.0!WJ1{6H A97(j$ Pn ,f,+2,ʒ\ˊY -iŒaZ\<>ȋl@ Q2uLDFH6d.!ћ,| r:<'XFF~CLEAR SET TALK OFF ERASE USE ANA12759 DO WHILE .NOT. EOF STORE 65 TO WHATCHAR REPLACE WORD WITH !(WORD) STORE WORD TO NEWWORD STORE LEN(TRIM(WORD)) TO LENGTH STORE ' ' TO MKEY ? 'VARIABLES LOADED' DO WHILE WHATCHAR < 91 DO WHILE LENGTH > 0 DO CASE CASE @(CHR(WHATCHAR),NEWWORD) STORE (@(CHR(WHATCHAR),NEWWORD)+1) TO POINTER STORE MKEY+CHR(WHATCHAR) TO MKEY IF POINTER > LENGTH STORE 0 TO LENGTH ELSE STORE LENGTH - (POINTER-1) TO LENGTH STORE $(NEWWORD,POINTER) TO NEWWORD ENDIF CASE @(CHR(WHATCHAR),NEWWORD)=0 STORE 0 TO LENGTH CASE LEN(TRIM(WORD))=LEN(MKEY-1) STORE 0 TO LENGTH STORE 91 TO WHATCHAR ENDCASE ENDDO STORE WHATCHAR + 1 TO WHATCHAR STORE TRIM(WORD) TO NEWWORD STORE LEN(TRIM(WORD)) TO LENGTH ENDDO ? 'RECORD NUMBER ',# ? 'MKEY IS ',MKEY REPLACE KEY WITH $(MKEY,2) SKIP ENDDO SET TALK ON CLEAR RETURN @vƒANA12759.DBF, o! $#%"&'*)(+(hZhZAn,hE G+7 hrhu}pX>,HKX]7HԇSÛf}o胮/KkyAYThR}4T>/>)|8fyepc> nԇZa(Ka->ܣ9ׇYևT>ܠ z& X (K(>ɗ'ч ᩓw^#'!ޓ>|$>.a=h}u֍!.vz !vj}؃DYbcp aև|_?dC>PCRYóz$Qׇ?7'ych}ndY7_> od}CևFfC+}PHj}H >H"VÊe/K>EyAX!EH|}xM1i}T} QF h{ ~"Q}8[[_uvnu7vfno_n֮,>P>PYukZwjߩ,[w[;pkAuk[{R~f~fYȭ]@ukVwkl[{wvuko֭]7ҭ~k7ukoRYWխKukJn[Oݭ=!Z6įCnmϺ)Z6vkB"ܚenwDZ˭])֊֭e֊Uv}eWY]?GgY9ˣYu?u;O~]Nv֟|5'u<]ZFեdR%u{EZVo[+U@Dݢ-4n_ѺE[hr^Qh OhG/n?(G6>GG,.6Tq3[72-*K<%ܺ TnI/n.[ Y 7uK:qzwJ4[ɷn_iRnI'L&fݒN47[ҤnI'V5&uK:Q2ݪM̺eGt#[7-gG&n)ˣۤ2- ?=$- ?t0떄Yw$֭P2[J,K,>z\}@ukj}e龶,|t_;G_ӯ;|߃Z_WYbzX/ek=,bZjuRYZjk) ek)_K.RZJZ>2[_+ˣeߩ,}Nף-ܚv=¬G[8GD},} Y!k ~VY_N9/4nݮGT_h/4pCT h}I/4I,}I|G$ HBIiҳEkekU_uצTtkS_FT_׬ܬSY;G_w_;_ T_wl}=,}ܨ  (K_p<k=h}Ce(ġן a֗8$~z&]aR_nCNk@>&ek1d}X9i}M>?rz淾^sR&k5IkY_DSªh0}鍜5Ki_O݈2 5Zw(K7 ȺFnouAe~]AuxKYoI醡 d Cck0tt~z-qRj0x 8@n7V0nƍzøQ7@uÀԺeohG7ujݍs,ݸҍ{)K"E ]Yq(qWBqg8, }\]חG_eUkyt] U,]WG_ez6uU^)ֱeeytݲr!D>a rFP]?'Gz Z8 "G_@d]cs=uW=[=Ak_QoP]Ak7(]THӺUFw{d]#_ȺFR{DR]xV ⓯kL57k525ϗ,y>[=eS:2ʏyl,яǦIzH-[E~9YNOZ^AleDyc|O?A?}x|^Q~Գ,dy<чя>8Q eXG?:)~t`lp֏N,LʣW}sZ?Xρ9oflfYy3[s,K?Gs~j}S~~zNsӻ?RKe\*~%ϹDs.R~Eʣs_\s.9p9ϹsͲsYkf4[_(K?Gķ(K?G^p=n9fys26=dlg2z62gI&kPYq.G?,.KnysQn{ˣ+VY:WG?Ó٩~}u_lx[,GY>G?OP>?AC H*K?4_g|.!%!C!47׳E I'Hԏz gQ~ں DY Rf',}szu-H9t-D}st_+9_ ]YpݱnmP >np WoȹaRo>waAۃYַ݀^wEۇZwA7|݇׳`_VtG_QJj}TifYn7$$opY:G.:&ӺFYvvշ+Z(K߮7$@Y&ַ|Ym/G nvm?fYv< rzv"QD~Yo)ʣo"p)Z?u:1duc4L$uc]D}]PݾPv]z.7 H?>PuXO@(K Qǯ>_@yt,p1X:01YМxVH:`q<htӺ٠,tu׳A9}_7A7_u|YOGIz~u?Y}ytGзpw:5Y:5c׬?e1f@ ʣs~sDǬå3ܠ!"tH㗯DG"i,ut`Twޠ:[?o@e@Z](R[t ]+\:- hh肹7Kf^+zu@Wd]@:]f}XpMu0狴>E̲t0_ ny[kIv<+u07[w@L,Ldx!{PYAwl̲]~_:>f{Y9ן}S??{P}Ogr_g~=[hߣ,}{d#[{e~Z}X+;?)Xu_gE~\}?_gˣ_z}?Y=1Ͼ رwW wߩ}|}{h~u#[u#nQ?{Lw=䗯zQ} :=,}߬߻$z݉D}c;gLjmbs pR[whh=|(CQ>mQ>o݇?Q>dYݮsyt;GagW[wkgοZ(K;n,K;9%[AeTFYc+n{yt(<޳,?闯z'e#2I:_#&e:U_#tYI:QU!bR؁1G\,F #.߈D#Dy,ndyH}eA8'HӍsYR{n_OPAj/ՃԞO'Aj%wkhՃ4u$*K$nU#AkD MʺF&QAY=(O~]ZIeiUҭjGO:|} ~`kd=g~}e9Y=7,=g 7>GzGw2S]!ˣ/K_Y=n zNfy*ֱN!sѧe[?{Z'nϤsP'ƷG管Ytq'D뙿 }?[f=>2zIeG&g~/_IlDz?yg~ c=,3%Kzc S3E|,=SįgP"Sԓ>4:L']М}VTOV}M' ?DYz?I"aSHzGl-YNknuKjפϚD|?i>O?$|ԺYQuzNdz,ORyt[yRt7[.ݲ,}I邟tX.NqVouf}{:۹u3QY:n&jݮDnOwsՉN[w;%*K'r;nODnYw;M։\uW *K'r_DTm'So{:j}==_?Չ>ObYN,*Qyt"o5҉z_RԉnpȬ[ b:QtIJN$[ edj[=;uaI/ԭ%ѺXnLwYKaѺX:>,=l],}v+Xzҗ^Q],$ʣ+R TᒨtRa$̺o@uER8ItTHQ.,Dytگ=E"$ZI +$tA$7>H /2]N ӻvD]Ѕ$̺Y{0[$6h},]ـO\OY뙔Gxט>y?IYA| &eY'8&O>r_8&G~G9O>,&'UҤ>Qu4i}պ"eOZRRGi5}iA}:އnuo`v>5{tp;`Orp;h}?N v:;,y Np}Xnsv<=\\,nq惝nF,K4v>؟&up;Mvznbo}]vx,i NM>5 [Pg9נ<|/K8q >Ycqp8qrp8z8;Yca=e98 >` efygyg5胞2jp=Z)>)aP=J2jG~ZF >U>eO<>0[~fY>UXPuh?`~d?YkU}X|<~ч)?sOpNR;9O {!}8~Υևs.ĽlF?'҇s< > ۽e98)K@yu@Yu@*>,(>CvpX< XvpXZz(a)>,*a)e}X Iల,}XqpC582jpZc(+>@Y8 Y͹aVȲ4_>ô<02jpN}SW)0h})DYS\Na;0=HtpfY0,j}XP|><@Y Om2j4۞v<ԺՈ[> ?DWð>r>Z(ˣe۩0؟F_e(o'̲<+} ҇Q8,iyae1~e9xL?Z~Q4҇idy<<QF eDL>,0;x\Lndvt4";x8na7<<YF T}*h}*ˣe,}Xq>doIdQ'y+e郝<Nsya2jp,}4j}X?SYNxVvp 4ǽvoP9҇9<N3> 3h,>$Qj}XOT}>|D|XA>>|$Q;8чY> vp"\Q;8և?De98UvpY$Q;8Q>`=@,>YF =Zg9\>؟n`lw{>ܲWya}5,Kgyrc 2҇fyާчQe9O,}i}+>VF ۯևeY[ʣe e9CY(>|Q{p}OtxU>8Uvx#rxև#D{(X!=pX!{dYqxO*K><IT;GʨZrx豈cjwʲ.H?}$]o( û Ie9[V[h ` , p;۷nYoo7`/GCRzNiYޭh_q<볌~ֿf;"ݾ׍(ÿQF P((Q?˨ ?srxC,7ƍoFYo>a a҇Pأ1cqd;<ƿac\c;g''(_!)?r?<E~ ts.H;9Yßqs̲<.vx|5|vsgnß;a;i?)E)ʲ$ܲ\`lUPF KwXi3P;?I>'_eL#ÿFd;|YGqȏiiDe9T;wrv5rakf;|,f;|_zX'ʨ.kX7 n>|YS}dvx 7OYO*'h *p DD7oCg O&qɇYtx[)=cXz;؟vxjpͲA蠞2jP_5r|Y)דe9patPk}=f;5}=ivе>a(ARª<Kԏz:(M|[RžX7,cOkR;(zA0;`Af;(FƪHY:8N˨Ae9N<zXOy89eԠjzNYzq(Xh=GUρm=G/z\$;97vs,='a>(Y*R(,;, zf^i=Ͳtǣ>{*(e9,,e9T >YV(uI4R;פ>rxM*n TRAʨA>5rPt5];(:t_^v8ne郝8+;=Dvvz,vJwNݩ>Z/K֟8_Op|09[ۗ8~>?[YǷ7s6ֳA;iY0=P0}?=@pOO$u8l}Ȳ痥<Ǔ҇TIǓX$u8'r8NTQ;Getq8W,p}z];)n_>?>D>-K~zpIXPrX<)ac=9wYϖpVY<_?a)a=r<GFYqDyP(͹f=)r8GB@e9 Q# aQapDa pDe9'EyWIcFyUp=aaևu#rT>ܤ8\OUߤvdqnp=InRT}TF IpS7<w~,; KpYk.lz,|^pkpYu2jͲ_<["r7Ey8epjznYWG;e9\=vzpzՓe9Y{VyֹephFY,`vg9,9?p3;Cq8ʨϥ,ܤ8m(ð2jðpW; [݆,an႗GQt^k < n5\X>pk=ܲ.,aapaeY npp˨gY7po(h "r<85˨iyQýS>؟ޛ>po;;5\CF{:,{OϽN7votwn>p4rޛqw؆vYޭ<۽epope9ܻ)X7ݲ,,ýPMaIpoG7^*ýTF үvX/p/e9Ry9a7,{,!Wa+ X xXXpl7EYWYh&! SN1\0! *%QF W-~xh.,)E"qnp.rp.9Yù"YH5\#냽U<GY}y.ϲ&8\ E_5%`%2Ú/K9ì7ͲqiQC~!j},p:e9S}? jp;}JO#C8>`A1UcT҇Qp]ZẲaidYzׇs(CB>(D`>(YC҇Fy§?,!|)D;[ QC8v !";*KDyaeÂȲa ,!<,}8O|ݺƤ'_>|L>cև?11!|aև>l}IYOIvܲƤ<)KN qw;>؟,x/Ca}!a>-K~qw4:>O#!ާ4";4[~YC'>|$IY>2ևrw>A4aA4g}9!~a}QC۹e9Ŀ?,rXQ_ xXX!:vXe9?ogrte$vtf;,5hbCq>G}X#!cևun"~?!(C\=^ύh/7w?e9ĝ~OoDYq7"!.vx,`{,w8ĽK +ޕ,!07NFn۽e9ĥ,!.~qi!3u ) ";0 B:E ,!.:H;E@+@!.0+HC\ Hd;DrdY7)C\$F"e9aFv52E;*DyB\)"_ϑB"g;0<gyp2jzVYK(г>:z=гAYKO%K.D;=Tqg(pD53dYIQq8z|DYvx|R V0ęazD535raASsD5s>v笋\8e9ssDqSvsD;sB=hqY9,8l(aĶo{Ķ+X7E;mϲ=EyĶe9l0 e9DyW~ )A:a H|;<> r0-D5~O!DY<5pYF A\Ӂ\f;XB b=d)AĻh},x|"D;av~Z(Aj,,և(A1r8!88@2ja=(A|C(A(XBȲ RAPY$ ".7B e9diIe9D($<`HD$e;D&DqaQSw !vYg80(v(A';|2E;?LQ,aNaAj,,I^3IH=f;Ia R3WHH*C(;`$"|;Ie9DfyRe DnLA?:؟D;:'H @$ʨA}B;%e9 pDAt!;M"(CqGG ,a*v ,AYf5t С+ݯvX/С+AC:t Vе/|;?Yևzn/Kh}=TlݮO*KƗGoQ a(:qeYOsʣs(jݮ?,Ѻs,9Z?犬sn9Ynhl(gպ]~cn̲~6L6ȬsCmZ=7Z~ݾsC?ݾYۗGQַooQַ<2bpX7k}no{YZo{mȺmlonmZv\X7[۞ev۳DYZuBYZnfϺ]uX[uXn:7:,,.0ˣu ߺ}(KIn_!jì+l\j\*KfY0ˣu_nnywOpuٺei<,CPk&u0/nYu pl>`ݭnde]OݭZ뻒tzZߕ[=we=Z{ugOZSOLQ;G;Qwr[Z;B[=w upwj邏ם&tuON7Zw*K;Ⱥ{$wu{h${D|=DO,-ĤÅ 7zXϬZUݮ(RnZevEGGe=~Qn#zGDw,Z7ĩ7NzL'2k=>GGۏ̲ݾZ|-QuFCnB8W:7Z:n@Lj=QpVܨ؟Z؟nz7nAuFzZЏ} H2k=B?5"[fY0ˣqDa*`X!¬6TQփn [Aei=B-Hj u փ,FRy/Kh=&ZcRcѺIYZ[zLp ZOnlGe,KY#7nz#ZϹnT֓ʣۤ2z#n:K+$֓gɤz55ZOʲtIz ?=)z ?t0k=2IfnZ'?f=Id:.۳Z';[;SyNvsܭϡZ';ԭ9Nv[sRk쬀Z<+P7Ȭu(KTGGPk{ԺKN:+M:eytTFY{vOei|QYZVd֦ei]Zx&QEiIQE~YѺ_)Һg.7@Z+h$uk5I酺U$Zt7IZ lOL, !oF}H_),G@e}CPYe׳>P?ʲI>!HMm-Z~Z'~ڏD~v0k?ZAjohq(-+Y<~Y+dvVȲkY<56w;Q;Fng,K;yzʣL<=fYٷ>؟h>؟ٷ,^ۮκkg[3쯺gh`?  eignZ;;Ϻ}Od@ -jgYn~ImY/v<2ξi| w v{;}{Pkg#GR쁿uxU=g>#[;{`Y!jgYYCɬY[Y(v~yvg jg-[Yv_u~hAev*v9Z;{PnH*K;{~Y9ˣ=nYvlYvTugl칕yhgOIeigOz۟!'i۟5jgOR2ΚDfTTFىχ}Aى[<+{Yy/v~Qcg7[;SYʣWݮZ;?OˣN?O[;~yN?yY;*`k:ooW?O/4[kfYZG;O4S,K;GY9ʣWzsvCo'DzL? vldkȲ,K;YYv~<72οgӤڟuKj&YL?4ڟglei,v?'G;RL*K;?RHeG~vHY\xV@Z;u|YokgӲviyCYY!YQYˣc־11[;7fͲUvzʣ,ٮyV=Y;Y`z jg=,G;9jzNkg=G[<cvs̲nfϺY7x3ϺAByBeg/KBy Yhg(;]?뾷v}WϪﵳYv=ˣ5g=YvˮYOΚ>'v։0zbb۟ڟZl|5z[,K;F/Khn/R|2YHkФIeiФB$qoۍs\P[kg?Oh,v<=v],Z;vBdk~ei5ei5'(`kꁨհB֪jX֪Fհxz"DZ,^p Vˣ}2**K^D'?T{C}1 =u', `_֮@fk0Ҟ'Ҟ~s|LDyc,K{~'ǴĬ=joYOYڣvZG{N:==j Z:=P{Zz5<ڣ5 =Yuz6jْjnNjZճQѷnl݆<ڣ]gkm`_= 9׳EҞKsiܤ֞K~؟ܠsiVzR4gksҞ+VYu(\eil:WeiT\ў@Y)\n"ei`(C`OhӲvzDyGة=ˣ#({gY?)ʣ=bҞmڳ)~׳E#cZ=gKaڳ0,-> ʣ="O$Od=Z;ei ;v|HAQ'Dk۹,G{Οuk<=ϧ}ܬ~,ݞ^Ȳ#FzRYI^OSw{nRk'}Hj$+ܤIٺT:G({~n_*K{pbKNYnoRy7ˣۋjݮ^G+\C; /R[Tkuzwj,Kk7ˣˣ]({ׯk-ϲoG{ˮꭽK kKva[*v-Z,zW7j[7&0[o,5־a(K{ Cp^@} ^n%Jzwx ? ^?+ܛwYoNj|Z;TznYګ'YU(VQ*X]ozUWWk+ܲW!*,N<ڟ2޳ʣ]QFY{'ծ?7cvsͲ9w{Gei9N_ΥsRs.?&s?>snst}z=k\(K{hρ{[{Vρ{k﹠Y{Mzޤ{.(EW{5s,7ʣ熯v2jv7Z{ Ckso{n(`Q{ύl7,=b֞ (K{ k7EkӏtFm(ne68>RYڻ nYڻ np[{A`n`_7Y{/[Fٻvꃵ?n~/_wevvͲwcvͲw,KhTK͸AvoPkfܠvo$MmYZ-njԭճM,6/KvˣvmmsXvmܬ`m[{aծ6@mpw(oܤڻm߶w۔Zv,ݶ 6,ݶ  ڻmi϶f6~ܞm+j 6w}o%ڻm>o wRڻfnpww=n{n/뷻GvO=ngvm?mڻzlwo nlpڻNwϣ}ke^{=Ͳwo~oڻ7۽{maw~j{m]ܻڻGf|=n$Z{]/~;ڻ>oww __~OnÝ}?ukmk j+\j:ykjݩ>=Z7Z{~@Z7ZpZ{~PZp#Z 7[{`oZhOo?ܠ VDk-ei/ߠvp[{a=pºm%,Dk/,T.^hne/}n`|gi G־7Ϭ}nfk/vp[{P7ˮ7^04ZC7 QKzRVklpoq, {E#.5 `7hC/ހ~?umiÍ h9pE4" j\jxKiܤ }^K_Rk/->j.!Z{mIᢝ$j/>Mj9>zY{!C-VTp3R*dIfk/Y{!Ɂ$Í$Q{!i큛,j$ ) n^H7)j/>op#ErKuktk&QrUK@n&^v݉j/ê]pj=PIT{>&Qk/'}DS%B ޾\芨{Dk/$Q{-pn(<-H :y 7hR{=iI&_p'0o1ܘ^| }A^|PڇI Gڇ;A_>܉Y_vÝ&j*\DwR{ar½,hQ֮[ީ~k_w{Np-){WP${YvzoG{,K;,S_]-K{h{,Gb=pok=l9ei=ܛY{ɲ,޽<{2ˣQei}{~YzE{}h}w݃,fenN;,wu[{w2[{wSbIz$w7oY{w<~QUQFKs7V]7<_(ϲ#ˣ1-vz7{yw2oq{#joY[w,K{cڻG7O܈7-ڿڿI7B `Y{#FFjA7',_T{sSZͲ7<ڛTFٛt֞dIYfRy7Il_MIbLKKDBk^Wع,( <^_|Ek W^qVYu( zjW@7Ek*K DyW]Dk}AW}}$jLp3I^nH[D@a fkMei2[ YEyW[,U]|{^lbZwei_o^Qz#DkeiWA<+>M7Y{E1k fkHeiH*eiˣ;)<84cR|8~ƤN>~ծɇnLj#[7rRN>&ei/ZR"n׹XYF"pv"fYڋ D^W,K{iG{1[^t i_fhCyFeÇW}hm0(`6NҭFyvni6N?4vnO#6N[u Qn%vzp;֭F _[O 7,Aцtk 2k ֭Iei 2[FY6|+n(l 6AԆo]ptцg!,m8L?gTgʣ=$(+ !j!_'H֊C"~'HZqHħIB \X֊}V85.DYZ*Ktъ}.Ҋ=ˣSQV"n ZCyl2ʊX[(K+ˣe,ъ,KDhxIVDjHQVDhHQVD0koD "ԭ Z u$Z+\!*D1bRɯ֮1)K+bڏ"& +Vjg"gvVV$e֮$֊vI,HۇFIwfh Gܬ%>2 :OC$ Z{(K+(ˣMeD eiG~$h RXHV)X!D IhM{,cGkv1Қ|I,iZ?nY9fiυ5@&-KkhMPn0[kZZ Ҭ5ʣM2˨paXrZfYbi(z^d\Yq1} l})Y5̲afY4%oRY.?_})ٺs,ou_\9Uog-c0 |2jj}߶\m n7(6(o~\/@|ˣm/oC7r~ۣ,oY}mYF-ev=`nz(`?Z!r9؏.ٺ]Y*]XBeaekYh}=(?CdeU_v9ࣀ}aˣ2jy*K_<. QcZ}MZӇO!ryL~ZS.GeZ_'rٮhQȮeO~,}ޡ,ӷ>* ;~!4aF㰞ʨh7,t#;Ԯ(rXTrXO]oYk?z@]@e]zV׷v-Vׯ_VgZzK۵B[z=['ݮ׳e[ݜ׍>?]o5] 7jWIiyez;ͲYz=[]o/kz{<>ݮ(|z{~ٵ@Nvߠ7V~!ei_Kxzdx, z,׿qX>K# uv ]o Ԯ7*ծ7T]ovCro)·P(¯o( ϮC!^o`U7~@]oP8ovƍ]ol7rqcnt.V}7BpFe7ZF]oTz, Zo `qZ88,qz,qd^,Jfy\-k=K4w_'?n?fy\U_X]ן4ry%>,k=C?I/=pZ[^Gӻ]z♺z]ϔ'돆mBtG׿N>r뉜tɇC^Py\v#r(G^Xn?eL,j}ߠ,o/t氲oZ_nFoJ]7o׿nYkuv~ֳBYۅlop,׃i}(ڵr=g,׃ne^7(ҷ.zpEC~Y v= If<*i}*@ IԮҤ\I ַk(``QT]l=,߃~XZaYʮ{wSYw=˳S~?7=f,oݳ,7^Ԯo*z{&u~,ߝ=>v:cҮC'Xi.NqNs=,];\ Rtu'wAf~'ap=e>?hd׿M^ndׇN]\:յ5&g׿FNiVZT!]6tvGRYYFRedR>?&,#'b,#'],#sX!r}*_,Bv}*">Cv=VlקƷ_#r}jZٮOϮv}j\FԤvfRYiy\?2j}N,O3}F}5_v}X+}׿I/pl~]\A]I$_,>Iz$]If>)odvnݮ,ד۵gzr=Ce\/__u=דԮ'Wh}zzK]De/ֳ$zzK7AQ?ԥzpKou_Xh:}a"OyZ-z=.z=I]Wk\GV=.sx_\ѥ~,}Է_uoV}-K} nvY4~y뵌ZjR*K-9}ݮWv%_nz%RKNnku%n RKzv¥vk<,~i׿,˥OqRì ]֮U.}ʲ\Iqa| C,/ѥ]o.5 )ڥXr)_,&u)z5r) Tv)V*˅U<.J~ jblVM*˥0 fمUv)z.Y,NIK3lft$.|K5ڥ .ͼgIf _kf.MrvBR&9P})$Q4ɓk&Q&9]$K,٥ IԥI7Ko$Q4)ܒۥD]^#YR&ZK5KB$-L"ѥI"K#IKS5SRsY5+ǥd&KnY.DqzQK'rIy\:(tkLڥlk,N>5r.|P^&etY5'q4)˥]߮\:Nڥ]WINt}vWItK%LtzU҉nVIY.((KYM.hꅥ,K'7׮vD]I:=f1ѡkCgR]vZ2j];ڵ~zr];}j饲\N,,کܮ5av]K7Z *u-v{Yv]Kv VldopIt݅,z| jǷ,]Xw-ngy\Z_\1>x"=Mue o<7'nRYYFra[=GVQ+|>ɇa}$uT U_덠vQ_oDP R nPH*ˣ/e W}8Y*DW8z A Z_n 0v,K_8,Y#<_]?2ٮϮHTBdv#q} e z]r(+,kDy\e^# 5,AqkA 5H/BPWA.C#,W9e(+_]hW9 xas Bv9eBaZKqT/:Pft eBt2jѮ}W ¾GWrƤ2j ,V027ut]&6. .|Sz_eo5rIf}Aiv.n.GY??Y'/Kǧ<я=~뉤1Yc[DP!ʨ_|?DR X"e=Af4d{~y,OY=? F{'5cz,T?VȲ|O*Ie{GTIPHjߓ>Y,ɇuQT#[|'c*wTF0*aXAX,.nv|˨?߲|;7|pYozl3^}{njYnpo^Yko<ͺL2۷INj$/q2Uk YGL_8g_X1V(_:o,/^]_,))Ǫ@/%pt]7,)ȮI/an?NܮOuv | -0,0/aP0RFRl0eq7To7(q#}gib8ceIcIeǺݤ%McI>6w*;񱹓:c̾T_L,@}3yV*W<Ӝ}<ϚԾd+AehRY4T[ _=gY$uz?N2I/_\j )E"n"eg}?Qcvfg}dOdYYԮTRYC[U[ _\ꟷRM-ݨ?7B-=Agc,Y ف>SФ_I4韟<,g9IUj*?u8?csG_??>pe^\h#֗?<￞7_7oN_ m>g%">X78AMq8c݂_7jL_4fWf7Q׍Mc % Kz!_777=m=?Ϟn{fg'nmk|eۮ\,s_lw7~:k~a\3g{oE>=W׿n;do;LX7o8}l$η>(ί> >t@->AY>痯gy6o7Z n=>?0ine}?p3`o|kFY>ظngg+cr1@aG,䆯1UkCy|X]Ap+@Y>,] ۇu>@fnwÍl֍nd֍Xp#"e.RVeeD(XB7 }, Yb>|`E`ǿchcY*@·X+dz } >͹g=|CL> >น} 72,Ѿ| >?Uh_ܲ|@sͲ|4p暿54T 5>i_}8| p4}=TG~=ԇپn@fY>ؔ nه)p3\Q[e?hBڟ,BˮY!ρe_ч_<>o!R_PY>>P,!<>ǯg A}(A}l!ss [@e@+i1@x2) jHZzd@d}A}=,(ީA>PDf( >Ped qaほO0Q&}D_aR" 7Ť}hW9ep'fy|abQ-u/~ZUXj?kRY>͠?+PY8?sSŹl+̲|w!E?q+',}OOw?$&^IO|_s2iPaRFA+Ƀ9Oeg 9O,&'do 1O(HOH$&GyI,cbǟ|M_11ü<ٟ4)?QKz*\',&WI=Lʨ\yN,wRrs'=_]N&wKe }y|nI}@17GЯ?}G }}Sn})m?_?ێ}϶'>zw4AGoWk׳D__v}_YeoS/9zSkwB_~To)Ig?}Y>zY&K}vvπj~k5ї壷J%eү}VIǪ@qlGoX_@>z{e?}}AGoE~kS/GoE])зފGoE*`X!>Y@>~,I+>$ }o;/GNֳvBGa5>KDGAe<>,з~}Y>ϯ.?' uP*oR?&oP B_^ϗkRY&/^~ukk+$>zMRU! }&eI+WB_F=z,$%]S/GImk_//G;Î,~Z'o;/G_v=˝o)k$)z>OY}y|k=sv}C~%쉾}C~>K3At7}Ʒ|Ư} ;_쉾~?j쫞?wG>}~R_ }s= }~n|}s?w}~?7>#~A=}Y>ZwBGߠG>e}o7u=ѷ~+=7E<˻G }.з~GO]@Y]}@?/GOz_oѓW B>zZ\BGO7DSxY/-S}[S,HBGO!w r ыCe~N}?lIIo17#o*,|C8,7_X,7ʮ=io~4˨7?gM2ﳼfkp,}xGÇaq|>q, Bm54!f}F\>5ݮ7peWY]oGgY}#ˣ,ݾAp~Zwk)Kíoݾ, zL![ܺ5BYn<52ܒ^[CRk[nd7Z-0ָAfk,KFRy4ܒSwkV28$eWYZoGgYz#ˣK P)n) 4\X@k,K7dy4\'DkHQ,Ph75\>o(+1 5\z{RYIxORVH񞔭IeiSy72isPka15)H*;$ZDo$H5~aF0kZQƯ?oh_NYA5,S*(5`׿1>,(K)+ʲ\FGQhq,}Ɖlo`=G翁@?Yhgy72<TF PW 7@YNy|2s.ҾqEs.}㜛HkPosl8pͲ4Py|Pe[7Vo~>ٲ5~SPxP7 m`,xZ (K~߀,K*7h׿QȮ"[c{7 (#W׿ei|YoD =COPk|LMZcr}FL߈4>I'~ =I£IxsY7f*ƓծcxoYj<,7Dy4^ebi}qDY?(#&x,@ʣ'FR:oݾP:7ZC=mz, u*n(Qe9Q >Ȳ4t+7R־SZ *\j ]|zеGzCOuZV=PCחQ?JzCYC\o)Y]h ]oɲ4aiY~oQ~eY $o M*KC 4aJPl c֤4 , C,Ry47Ax|I5Ϥ gUg&x{uj Y YFE|ei( !ZCϾ5Rb V5Pƪг =eWY7GCgY'ˣGnSX@Yzp5h9ejzNYzGei9 V=ZCɲ4,<z2гeYz,hT =A5G =zh6[cCfY ~ =P ?ꁤ ~L7TYC1놞fk(8د75Vy\Be(vei(,e`UPX 8Uʲ\BGC elfY o(@f |C!ʣao(Yg~ P 4GV4ǯo`?o`PP;5k )9Ƭ Yk1BPМ?ޘU!Ƭ 5}C, iy4t eP2+e,KCe[ "ZC;5Dkh*Fy448f09 54~{迡Dkh~~C,74<~54wCȽkRCCV(KCc+nQF1[CfY|Adز, "ˣTFRy44֭'Мˣ1kQ]o̚eihΟf9+xVl ͙\I9ei̚fy44S/P)Fh M*&Q!NkzH725<TFJ]o(QYJk`U j |y|C'e7Y CϝP>oA[C }YWY7}y4gY<^Vei(zF@_Cѡ;Ѓ]ka0Yqkuխ]8ˣQq>5p wqgYOGFY'ʣq|eoLOy4O?[cz,S,ݘ<Ƿ/Kl8}ٲ,Xqe@y4q@kˣg/8]8_Ɖh_7Nq<>[Dq<pz Zxe|<sU_o'[xΟ7sc19i8vz klݘOeiiY1=Y9֍,K8G7Qq2%7s/QeI*qZ8GDq7N5o qԺqDY'7Z7΍IYǑA(gY'ˣq~)_SF~kq8 q,C8q8sY1,Yyڵ޸Q,o,Y, g7Z)[Fs(]sҸg}s,{Gvqndkܳpm{znkܣN_CϥָGoYz-=hL-{ƿ1=ިq4ҘѸgJ~ߘs="qνHYZos/Rs7ι7dsM59fY\<Vy\2ʸη, 2\, >sp3kܻ2-{W2h{ʣq-{ϯvq-KasoqQ55=sYϽ,KܛѸʣq/Qƽ49>K5\T^R5½\7$q/!oԸ[(K㆛e <7__7Z7] QƍAWvXָa,7ʣqjzFY77sCԸa77gk߸eiܰ:znԸapnƍUq2n|y|Fe=|7nD?77z7n$ոo{,/߸I5n|Ro܈$ƍOʾq#ZӟosjG1ix7qkqoRJ}7O1i |<7voqoQ a |#ָ7 *K~ʾo$ XoLZei{<7qc]oLoqcz A5nL,,ƍsj75nlnQƍOnqcsL7n5nlN *Kuc7_zcQƍ}cei>nYƦk`Fkز,FG&׍qcӍHQFoLodkܠhܠ2ʸAsY * ҧYoոAj5 Afk Tgq#2 ʲ4n$G 7H H5nY 2ˣqCleil7Dy4n  c/F$Rfi =7,'kɲ5nGƍ43/488WQ>7SԸVY.(~u7ָGpC2\Q XavpCq+D+<7De\YƍѸ"nvoqE?pD+֘o(K㊠9k7Dk\G\2._e޸ˣq+| 7},EoQ5?fy4- nIĻ}#Dpo`=x{ oT#"FtCOG#|7(FeioE)ກuhpߺ},pnL@jPjpҗ<beˈeiZ_oYFO5gcid/FQF\FG#ݺFk[c5_ 8a#5ݷtei?>K#]k?>K#]k?:o`@W#^L}`־1COjT#Й&4oAF|eYo9ߘ#5s>fߘO9oƼAdx*oQF<  7Frehei*Fy4BVP4B1z +PlP'GuLbsPYb㗯<;Yޟ%X!ZqEc,1dy -~xR[z,9?s,~PS*},o*K@l ,Pc-{.6{ݞ 2eV?z[y|E?6oe?6 Co-Y'H-$82I?9fb)2 ?c@ٓYI2[7l|ͤ@eX#VֱBRYb<ºkacX2r-fyjPy4Rՠ_z+%V, I+v n1V*VϷY)K_]Yib|0T+빷,USFa=Wc=e,KdyĺmjXum-Vce1c=fhc(K>Fd5v=e5Nyzgw-<75\<k,K'3}=>Y||"l7DeUYdUn1P|V,K|<,ǯec3,xgI->i>'Sc:s2fde]yj}=>,#>ۯgky?z6(>2 Cr=S]뱞GG뉲GGv=]dYKwazG=l{X϶gmz=hC끤%c=As?[1}5,G|Ͻ9۽fw3[|{Ͳf sCHHQ|ne 7lfYs'ssR\>,h Q>֓$Z|n1,1[|&̲G](>pD `Hq(<ίz| Z GǀQz HY<:>~{'Y0<>,ðgv7wz|nf:::=w,>,, ,]y]Ͳ<>YFcf.Knyeg=[<2 _n]q{(|ký,˅]s/R|e^<{Y e(+17Rݳ,Խz̲ėfų^*K|p_,!#"V HQ/ Q|ElO} ;1ܘ%1ܘx FLFNZ|(.RF@%HyCyGÇW}hq0(`8|ȲGGn,>}VHXo(__GyWk=#qD8|}G%_@+/\_+D×SO/q(7,A+c(8\![ e÷x2 oGE8|˲tEGf1D-U0Dy^!a0[T![9)K>Q2X&f'fY:YqYYFpSsY#ǁ+D8^Dq( -P,UeB%V,8t/X(peX(8tu=}f šy4&c=Фc$šTQ8Wc )`DšDf5̲ġНc=]Cѡ;f0ѡkq\t 7#Íu1ȲqGk߈qYF-b7̲qVx7#{_]{qƤ,q;{#'-jGY⸻. w,K|#<⸙,>72vn-oqva!~| 7Dq\+0Hb/K|wbW,8سweN,ߘGw}|nLǝ1);lIYHy72 E>7)K>8. qS@#_] qYHq\dύDE,1@##Rɲ7)8.Bs%1(pa0a!̲!v=!SOCQQno7R؆-DCl5g Qbo{,q$#1R, HC$ÁLw A,,} -KVQ,zNbe8SG,>W?-,Eg*X!SO*I$QXrv=VBחz( ?ìDgS}SFͮWg=e9FyY] YD;ƺYoGg5BP;ƮPUavv,K5<ήafyэQcp;u1OOg?]xc>pq|9elSyz>s,K89uAvsˣQ*>*f?󡲜G?P'<~&_ONrmhm}>~-:}dmlg(ٷ㗯yۣoY}޲Vy5C5;q݇ghg59>YρkwÚpoge=ݮ:;,+ 2Dg~!N}'}}YakgZ|vvXj}wkV;;,\_xVvvX[_?(a_~>|d;;}Y@gz~ޠúkKV5찲,}͐qvXT_?CR;;yrck 2 fy9y0;;x2jvZ_g(x(+:ƳxK|nL:;,K3dy<(ar}}a߳}{>w}Ͳy8{8`g3[92rn>7,gFևFd;{k2jX!rX|z"c}~(c1kf;{cfY >=Vκg#;{,{}wjgx9챐{5Hge98{l-ʨcy=6C1-D;{l3EfgZnpv0>3Df;{=ʨ#̲9,GeYgYi?GҤ=&sdҤ\}=|?̲=N*'=3$I|ϐٓYOΞI=,K8; }| }YNv.KLqv]?Nv0<T?Ddgϳuv?S5;*K_?Sy|HGYAqv,K98U_?vv @ l}$QO<ϓ2jCY0)OpxVk|'qvU[Y)y}́,gG籲kDΎˣY,gGB&ΎNgte9;:|2;g=} 67h+YO?'Bܬ1}!7~@:?2j~? x~hnPYf|l<{5Z_^e?Y(sQ{s=p 8=,8GY#v~*K9Qdz¤'fY<3Nߒڟr,? Y*.eoG:|2;?2j?Y8? >g_Lx+)x5_ 7E;FyY_3?kdk{lFȲY#g)?Gubkֳ9eܲ[?S?r=e%<|2jj||(vC1v+>9{f?{g8?/K?Cy9y:YO1(O'r,#9ʨc}(c)dzBʲ\?Gese9R2AfWhg(󍲜?>4rxR[?kP;<Ae9<4ϳ!?Y:lJϺq7ʨ~,mz,珫p,珫nn7?<YF1vTr Y!:*9ϚD\n~6ͲId&ZκNoNok=kP/g-f]gEκYovWPzIϲ\?kYnU,gsyeԬxװϳFg< }<e9+?YY|/7rg}dF=$_|nR{³|Rnvg,5qg](/?[F|fyy,>,=ܬY5]nYM= 9(sv>^,{E~Ϲ|ϹHv>D|n$=fy5˨nvrۗǟ[Fw.sX?oC|?gn>>|?:}Nv;|k||yn}ܻmetgY,>N:nvۧҳuIty{ |G<H=rct7w{,ޮY绩vwӣ?f1YvͲ呂[<, 7, t̟$O23$/Y?5|a]?O|q|+D 7r{<nx>ýf 7~u F;_F 7Ȳ]qQW|:bvh{W8kGcyzo5;ծ|T:{i<7|T8ǯƤC?nL:G?IYYfY"fy/7&H;_\/r~s/rp.9Y󹉔Yi҇yIX|G,:X|D;s2jaa,_ϢƿϢ,g.f9+vgZe,T:= YSsD5͡,}@Yl根):A| Dg9(>$bsPt?]g9> bs R,|;|6Q؆c|6a,b뚷-hg*5&,6]j˘U7av.%sͪ (HŶj&rۦg6,e9o7DyvCfn$bqE۽Bt^me,=rq`_D; Xk !Y_):  ʨYh,g8!: ijavl !̲PyD5 _H,>ڟ!H,>?C$v@ xV,,gHqη,g|v|"E;8 Qye97[#Y_]?khgY#R0rfyE!"U!UbU(|ek[uG_eS^Oy~47_zI^$UQt_sz=lul},K]Y^inMn ?u=vmA~\϶ݠ u@n%SuۀY6_u@n[jSY궻Fe|Gu]#{PAe_Vun{^ίl{u?ԏnȾn{hu{~*Yey~W׫mouۏ~U϶g~n|_vhuۏYz,(TvmAvߠnwV淯ݳ,uoznϾnwluo*`ݳ7nTK݉~.mGf T V=4/np?^m;nwIwknwIuN>_GN.N~_϶hu׳홢L vfuE|!R]A¬[ nU.U-ݾ*Ф _ P|tʣ&v RTa7Ra_^!R>+@ Z Ie`hg2JοZ~V(K;g,KzU־*dY*XM`%*XM}e 9U־*PY*أzZ{~ h]=b}z EݾܲTw}f`呂-VnlW`_D !ʣzQW*d׿PjW(K@zTXP֣/ ˣz] UXR(K^ *,uRVauzU~֮WlZ]ZZTRa)~X4ޒ] AUXH* ( ƇxCnDo*ph *ԾT Y]oh CYP %PdVZCu(K7l*ojz`TV8jP=@q}Y*7 nqc㆞ nTZo7`> nDtC!ʣ|Q#U oPHQ H`Uq(VH0TfUVaRa~@UaPϪ*:(u%P0͡> Z%SWUPR?@R%U[j+T@~h-ݰhU_]h DF~*U@#l 0Razp uTqX/=ep,KfyT8Oezʣn@eN+|+@GP-Ve 8Ue pW`y p'N&U, eu+ TIG'NBvVmk* h vU+KF dY*If҆?W*[j+$B}Lj򭈷 A+DRY*Z TzUȲTH]] B*xVV!ce UHuu)KسUHMjU!R!5zUȤ*&eU!YR<IUȻn7[}=U]G kZ {dIB}IUHr$QZ$=@R`ɪ$QBX D )$QZ=$R!š_@B"EY*_])ZWH*ϾBdV!E(` )@nu@T ou T 8c=TzXzTPae+@R@WV} *Kzc" QT-} }ػ nP"@U7jCo*}@ T ~U>&~@Ф [ӭdVtsz @<*\*(~׵^*P(XD(W^HTa[_0)K_^a*L|}WTaKª*L/Va\ j_hR &U<ЍW4# VaAֿBФ Oj_!iR O&U|ҍW4DWDW׫MZ&U\_p' 7'U鷯ST3I0gkI&L>_ܜLx֗B ez2Jád)R3.VL*1Y~+QJ)FZݯ*e%GcoI*K0RoLƇWMYq;}j>)%ӧG3MjѸԢq{l}hn%W1FSh\OytEs(4mZ_foY͖euE7E <̺fwtG{yD=_he#~MDY\NJ"Z4YMd,vQ4.h0: a%G<:D(4]yt4ЕQhY4hѼ+Gsn h! dyD4{_]͟c9,hhf|L㣙Fc]hQh> E15L,h>MYh><>2 ͧȲ|4,;Q?+s'e暆8\a%k@sY4׼"[405c90͢fG472 8X՗Rh_1Qшk=F#X]Ѥ(K4ba܅Ѣ oـDшV]h(1FsDY>hNPei_шFl+eFc֪9lfYZE#F<9,Јm8l,шme9ٮ(hĶG4.(4bl(K4b?G!v\h6EFl{%mOQ$F%o  Q4<>e|Qhhh,G4SeSDY+HQhDhRh"I%7͍< aQhDC!H*hDF$ٲhDyD#~+$ѢIj5M0[4"-$̲D#&z9 &:g>̲zl^-)PPFM>YN2;t/G,{W:Y=O?tN?0i,$Դ? ߩs"۩U@;s,uzNǩ[uzn5sqXgѩ8\"SUN*cK̲*,:Taů:h +ròLJ?dYnFy<>U֟G}s#Íύ_)_ev)ӻ,xNˣ))v@{N,NOmQ_DY_#kl񥟭דey|eyu:eeׇ0<:}_sX1K=Bey\Wy:>?=egYOOۗGQǷjT7w=Po{yemϲY*Qaj}?Pa)zpza_Z΍k7z1u_ӳA8,K_</ʨY<,c|@8LͲ<8߳<ٳ:痥ٳ<`=(1 =',IG(GYx<2xοZ_?,9+:@3oYxRyTFOTǓp끤xRL*ev>TӗGCeqcY3@&8=P,GYx> j''8)^qQYˇsD |D sv> ;r~> z\?=.`Y_BG3)OnMhέzrRC֍sRǑ?'i#O?z@z28O"eq$R]O@@̲<Yq,O4򸩀[z,к ̲Y{*c=yO*KT;dO,Ly|rR}=oI ў$=oIħ?$z~/OyPʮ| XӞz}nYY,kB6Yaʨ> X0{du?Y2|fyYFo,̲~gy>'=OX'>˓1G'rR']z&ey~d&fY,p<nG=ʣ2,szP;0ۣ!_d{>/@}O2{Nˣ)֮)ˣvk@{N,NOǣ+ғe_q2Cy|=PF}Ȳ|=gy|=YF}Q_(_SF5|濡dGPӣgi=jz5t{٨G **]o衲GL}< j>'zϤYΪGL,2ۣxl',N}8_^G__::Uuz}cg@fN?uz<>,U'*Nm(: z(ˣprгxt,=[ǣۗ׳QG7T=ǣүW=G7%ـztSVlIeytˣm/nvm/ˣ[(,/K_z</ʨ@{ޣQGWY(<(G,_Dy< پ,ˣY<>QGZXDn(ˣXd{Qʨ0u:=vNQ*bh4R<{^llpE^(zQG/|f_,K=p<ݳ<ٳ:xzf{m"z!ڣh ]R=h<Е]QōVE;DYM*zʨIzhCz ,&=Zz G>@$hC@&GpꁤhNz z4|9ɒz4)RO&ǣQ'<d(}_O=JNzGI9V=@ԣ!QQY%Qo_!*ˣD^Ib٣ׇs&ɗ3)N~z=xtl_ϙeytY''DX,U}[FWkey/\_X\_YxCy:Wܲ>ps+biy{˨sW~z-sTwzuz.Kwe9=fys#'ey,ܜs' zN\dt8"eRE>~uH{.HE>s#<MB\8:.Ҟ,ϹY5sx9L=*KxG;=:NuzBGة~}$#TYsafYfy<šaQG`Y1}c-#0#ծ?,EY g QGlǯa-DH=Gl{y<.ʨ#=l{xxQ;x/؟=YQGβR#οj'D{D|y:"t<S\!#iL!zDq>)ʨ#>?$$,O0E !ЛeyL\X6[',unnng_nϺA7§۟u˷t_V7_}~roeelfy|gon»? us,bX[gk7jb 9o@e9'n1`=[᢯z\ϯrs=-rs= Uz66h7W(Q+|Yqsܗ +u=e@'ufKh>ɬ?-l7Gs,v}meTuAYn~|:Y/g+6?e,ߺ}=[Yn~CXeQX7/VFmm~Z,ͷOl,|.ycyxzA98  "9, ӧ 9|yߠ^L>n=_lpaw׼0 h7t n[w'AR75Y =nzu׳AYnSU_:egp,}qs/zvsH@[ gQu?h7o,7<f~,϶W}/]ױn{G,6 1o}EYnvsY(yvgE[<+u(+qz6nX!X7l7ou(CAdy(-ݢ<"k W[1h[DYnӏtv>-,7SERyLpth7N: 4ҧ[dy<9O "y:~ǺEtU_[DyYEqȹ,}"摳>EvAfEYO1bc'IyaA~߂}dHvsL-29 e9c-HݜD([ O>NݾNts)W69zV׍@nn_>fe 7l!}X,oaelfYnoQ]x>G>u *ۇR[$z̾-l0 ")|dAdYn eAM_]ln (`g覠Qu2jSO]ln_Yn릠تn Ū@Yn DR7iyeԦp,uqSdnpn Tu*6e(o_7 QϾn$M}=[l4u4F eiY߰o̪[v(-gYnh¿+-E7M즹nGR7,eQfjYf~[,M3|_lz>_lɲf*b 2M3BU7z!U7ɲf^r)i缞4,K2iRy-4ɧ_nII>}I4ɧ:2&}[$INޤvӤ-%uӤP?zHI!tL"M̲-,o_LQ_][h7%zȾnDzЗM?uKqS Ū/Mѓ$зu(-ܲܮcn],Kfyl,;Q2ճ]2AUvuv-ک:]_oSvvן_]lc=nwvnvׇnP>],I&v']$RC|CuRC?ۍnw f0evͲǣvC%>qo/_?o,oIeM*դnpjn$nxnv*lYڵl,{z6vʲ\gY{Yl,=nRYnCgKe6T(7@b%\efy.xعn n;n n.,7[_\, O7vͲ Y of4r7rtAvAFFR 8Qۅc .vs,v!neۅ7BG72roe9opf%.МM* v*k]Yk7v2rmqQ۽pg{Kev]w톟( ?FYn7(gAf~nvcKeۍ2jw1vpn7(ĺn7"voRۍndYn7OgAe ַAe 1nPYCd[gnvm7nfynfL,i&&QM:f{dvOY.ҟll7,KGvr4dn$%RYn¯^&%8nhN}.MrϾn7innvoPy.$$v醢 t.v7rD,{v\\Q+`e6)r,7$v+nD+~uD]nD+&ܮ( n]7!ClpCnW(` (4]qfCc>%!]AsvDYnwgv/IpއI;U;)۝@&,9)۝v'ql_DX7.Q@vb"e])6ahMQX|֟M&2rMqq}8(Mq6n0G0ƿo,7Go!r+bh7Yo,8_l!Ͽ$CSvf7 WgD x @t~&OYBMho,7-Bt>>,E7S,[}YMu(K}кN߳<:YF֭UAp?DP tnG\uHYG\䗯<"p%R,x)KYu=dIfY:$B p,I/qp7'|@'|_!i҂?u?$Zp?x&g a"[e .HwH|,L#Dӻ?VI'fyte8:-(e`>?ϰ#e /Iygه)&-|L̲|YCRXZ@R eI<>$Qܘp)HB /+qI}$ / QO~[0)KGYCL#<2܀pi{ GYC GY1#<LG<>$RF#i=C&!GrsH /@|; tίz=ЂQÀU@AG ecY,+DyWH*KP;Yڟ#GS(@Ok_Nd@vze jۻ}n޾* TxVgųN3xdxlTM偤/(m8g/e(<óT`I'} ,A沜#j+{YR\XnP\}[Fny;Q2Ηny;|g;e wle w_bpZ ka-ܕq2 (K_p,gY>7)IK>R |8f}8plᒇ{plnYpI/KTd粴3\*pΟ?MjҗLJKe\S,pWYK.}M*piVų\jo+\*KWzK-\RY 7KjŪ _ UT ̲K p,^h^*K poR W@y+Bsp#E wN(?e<Ѥ7iR?;Cf6| ܘD,"L7p? dyH^U7.:t?pѡ+K[ =Q D b/Dyv R2ۥ@,K?ecH-Mn_R9es0k9 6aQF؆v B%m5 B6|d R >s Sg-O "EAlN>F Q Eb'S;DC( "!R%)Dg,AD*b- ߇A$>+@,$(DfY0#BYkG0}.y,#ˣ2:Keu,}I:eyTF>а._xO%M2;Yfu7fYAIx> f-}4hү4z4o);Gs;Nc=zᱞ[w8uXG0V=p{FhptNzs>poY!wpCZҊ57R17r!?&#'C~L>!?&˲C7wHr{&I!, Fށ\ARYށ\. YnR{^ZZ{Z;[ w'kZ맵wOkڻ ,"<^kE/kkl,}tpn+wͲA]KlKfY޵Ykkǻ|fz]+Z7˨lޛ,Q׽QFu#rYa T0.0V05a5 nC~ n0> Fy0n0>VkپaȲ1;2n{ C CoY^PQ7kj?Ҿa5 ozV5 s{ #7T0r c,z #1kI0M5,߀KD}MYoy2UxdyszeU^7K;=>Yӳ{CY?p=,ןIsn Wdu{SwLRyRu7%]nJGp˨ n bpqf{Inp. po{;2z5˨ t#KecRwwŷwG[˨?j?ܽ,ݣ,XAc{lͲCݳAAWz*ܠFRYްǪ5߈=V]ް֮Yo /eycןeyc}Qo_]F7և^nDocvf{c}dFdYX /a c7gyYFenAmb 젹9 ndo`EX:Y7Y Ծ *@~ }__bXc7zCBlow 7?ܠp(4uѯ BKGY|#۟o$v.vTx$`, })x#EuEo)+hK/|X^ACO} IÍ$WI$+kD{0[{YWrk%-u/x{ \e$^Ae7H+?kd(^"QW5&h |0K{I q{^A DY^AǓ&hH@ :@zG~n@+$̲SSM"^AGzhk$z7I :N;=% :z0{mwb۽$z7I$+hޝHvAٻ' ǿ|=AWP7H 3Yo^AM"QWPכ$+(u}IWPnۍ$ܬ$f{!n@+Qj ,Oys'eԝ8酺½4i<>Iu'Y7'N>ߘQwN>?FNz'ַwݘN>'IɇNnޠIvoLz'K| 1i8yw1/_Ic~oĤwq|{L;8Nz.˘N>v{dNz'PN>BׯG,ύGȜN>?I#ݳ9A;H4|PY ; OoФwA=KnФwA41;{?,&7Ĥw1GdN>ӟ1Az_qEʨ|ǿQQe.R/r=\<^>R/>H,/ pdyHuћ} Y/n/vkٳ}}-εӺ]svמeء,1qweavwYx򸻮K2jw=ez,]Ϟqw {!NhwW8e {,]aWة]>꯰+G+H;Vة+P'u2jw_=rw,K=<7:K4۞^ulw?_^F~SNeʣm/v?YYF~RٳY~4lAfYQo|;uwp^givw>֧۟gw/Qß?z?gYe{gY:=,*qwP;vNap7qGw,{Qj}=T):V݁l ,wʲtؓG}/vQq#[},׷(gK=&WGGw})={x*I==r~]gO==n{ǺGYTq{PwI9>YٺAfY=ʨc=r~=,wc1ͲYw)fݧ{ f{GqOY{oݣ,w*Q==ȧ?#j}Tك݃Ԟwz=݃p+AA {$uc~ ,wAAG$u,K#<dAfy=P+IIoYޝzwvw w$~TS\hTj}NT}{DP؃ݝHNXa'jwG!rw_{_S"?[=S"p+)' vt>HG)v7}8_nv~;ukfw7M,w7wg;(þN>Kc>P?Aa粴?Q;]ayl-{P7=?[="b? })̾g}l=ez(+=Rtлz(CRk׫=]zvМ۟u,Csg#GGv@##;?m)TǦ}Hj<}ꭿe&uLj>=,##?rx#G W؃D ~ |t|PͲgIeIYgRyܟ٩ѽUϾ>Aaֻ>_^¯v w/}pw>_e9߻SyK7=,9<ȲGfᩀ {dL~z4fYLAꪰ':ܲt]np,]ݏ(`z8dY=~,Nq?N~v?H~H;S@=,hoώ(xGI~['~g{P㤀XIAlgDD?{q<2j?n׬_?Yq?{e7?g4iS7مM\z`7n~{07,iIm'qt^gGW^^F}?{yU_~ޗX{:ؓϞeU_gv?Y?{fTXGv㳗~~_]σY{~lNfYG}8_^诲\g/яl_Yk)൰{s<SKYIq?WןD 끻u?)Hjן#e(b=pwE,)vZvzvQ#WEa bE#pyge~ƿ㳋v?c̣E#p%>{dzڏ؆ζ l{v?blGlmOQ^gwQ#,˳)~?h#.r?vGV,se)ʨȽܻ#f_G|hkOݩ,kOYӻ']*vvwQ]Yݳo񷻗Q-gySyS'};~lAfY)Tȱܝ_*KSyܯzS_+=ݯ}+=_RX*P wO*j~Y=~5Yռ*ܻgYW¯ j^*ܻg~y˨N~ :~GY{%=~{=wt|w|ys2j,=~o{YOfk,e޽ڿw({$qܻY {=_{}ծ;˲wQw\pw~]!pwwͲ;KY8{Q+weߠx2jA>݃ߠAe P{vAz!# :f{d~•\AG7(Trݳ<7~u=o*UwO~SI'wOtٿ{7S{f1=w4ߤx2jII~~TM.I&Yv=ߤI&j=,#,G&MR wOj97{Rߤc&}O~,IqI"H~# iKN{w/9O{$~w'/=Ppw/VޝrtNI,wO*K]wܯsYw,_,H(˿{ qǯ0y="#-}u_=5_uY{z#=v`fy=2j7~,p#̲͏f 0=vp?}=__ok==_v=={Ud+A^{#=ޮRz݃={P>>GYۯcv7>c(={D{7te=}x ;=шc4{G?{vymi~u#=~m񛊭۶hxp몯}v={w7[},|o%{${|>P=>?&ul3,{|毮=2=>{Dfg~d 3C)gx{DYb#{|푢SlGajxzXa#=="OGu'c=Df{eO\O1iIO(aI>c{D׻GIx<f/KGyC֮=r}#r jeiuGyCWzvzZ=v]_u*GyC?}#,OʾIyuC/mnG [ { i_avY {dL {dv*K=<@^ajPA G$uRX` Ie(K{DyCo(w {hnGfYyU{dYyCBVfC'N_݃&:Q2Mve{L򸇢|]yCjr;pއݣ{c0=q/q;(Xq[?ݣlwh]w~f=2==[=ݣ{\+k.~|a=wqb lKد]w ˮw=î{w i=Rtu qv=D߀G5>o=2=G5ZCT{\C)k#WZܻou=-owqq|Gdv;4̪w[}4wjhRGsH\,w=ܻG4#=knww|nݻ{ү۽{Pۥ#{o=S}*=ӯq>~An;lw߃qHjpȲP{eiܻGy^CX=(GGYqGw8査f=qifԟ{}~ʟGRM?~q߿w#=~{={߻=vN_GPMW[zv_-ٿIѿR==.Hq=+qw$jIwLq{,q)ܒۻGu+VY({\>i#It+1CwR2j;ǤԾNmѢ-N?j_hhjd_h'-NYӃ0[>+$#B~u+$Z>}_-B׃6 E[(S_m"Ѣ-ʣMB[(}YM<-裯hh:h_1)K֪^I/BѕGE[+ݯW:t-BѡSXmqClv!mq/$#}s&Qť/˿h(hKmeE;I%>+\DpED> Z> 1|Z *aP0h$paen<(t>c(KQGn?"2~ۏ,VVOeUL u,íֺ-,í&n52NˣiQvԺiPYiidy _e"cRvB4|})K5 _^#Kn/Om[Fy _z7,×ğ/HQq7enPyt# 7#oD$eYI1yQF_eqp(p[X!2gytYF*4ʨp]Y_نʲ1\Oyt=QFQuz p=q}/=7z,]Ody ׃Yw=mt W(eTppiur 7 +K Wz(pq7+(:V6\!"cYfy Y᚟FfYk*:V6\S!mWYin,9m9fY9ae٣`=D÷W-2|ˣo{Q@u`j÷݃}#ey- ;(aeS,nuSl!7,w]eK(.%ӗd6|uҳنﺲ{dY{eߠjw*Q;$QF?fYg?Dd6<5̲ Ϲ<YF|iex3Dl8}y*WYNeI1 '57TNjde8)ֱBPY޲tA1B 7,I/q7p# ': *pQNt>"p jWdH!oǤ,' +Ĥ, ep,fG4˨pt7ov.K?Gyw;?Gv9w;+`gh[*KTү]Am[Rn+5-pnjRn?2WyQFO4G?,}}d}GdKY_'6ޗ RBd}eY,K_fyw C;vhCe_Q2'l( tmE׿@x?DkcY~?[x?tFPe{yߣ=,=ʣDQZeyᗯmg*Lӷ>eY#<ίa=sßlY~ja,guX'D?=6~oihsZNes~]D㭟uDt{x[ee xSAm}|Ԙuˮg1i}|gɧ}9i}CPY:?d6~fk#,ݣ,GVOݾ6*}k5,үAmϴ )(x;ˮ)h=[ݾ-x{_Do־eoo֮eoo_vx{c}e퍕oDȷ7"E|߈Ioô7bb6;gAKɮJ$xKjoh[ei?Bx+"~,E㗽NvƯ9w5_[e3#2q}d֮eU6~ Y#EUv=Vܻr7ie#c߈2*,#<߈(G#7>zFleo(|o(DY h P0o((7*@48o8AmqRDR7Σ|ƉDx־݈7nlֿ݈7ۍ6W9ߘ#7!2!xC|7v!2 m!O)xCF(xC䯮#R)xC~+D7DYcWhBeVQX/zF^>Vm<֤IǚcH2T88"xcq #ߟW B! eP_!ʨx,W, A IGZ&,Ѽ_v=K4AGM$hگW47x4W/͍ƣ ֿ?oeqU_'?NImqRX58=pt'h??^c=,Kfy?nf"Ͳ?gy"|=,Od69>ӇslQn@4_GmY1־Ȳ?]z,㏾z,,Ĥ?_YIbX͹YOdY< ?c=fBDYo׿n\!Dko] G`_8?{hwA ƣ->hGhhG&ƣ-4vhֿ!W#R4>W?,C@Y>D~YiVz6>mNuHj|ZeV]9"NNdYoY-@?DRY,#rz9i|~L>eDTTS׷_#2>u=WƧ.O]5R e OMj_#2>5Ȥ=]ndY=6>ZFN7Ty#2+¾)[#-#_Hjs~az{d6> ,TF'j$e|cHjtHI3O$Kj|ҍHjnZ7"I IO d_#IYTSjD(~I)eD&6>)2>m<_OPYƓ+ AeO׿BP>_!OW6>WƓƷAeO5xPU!O7ATtkApuAm<[ۏ j)ީASOGII$2D$O" $xz7D/@$x>DƋ1~o{L2~~Z?1)Y4~~"'m%}bO>}|<,!b=KI'ODN?ﳌI?_YFj#hReM?G R}z}YjiDki'k,'5rO4«4~?I?ɷIYOt_c2i'wƤ,'wzcOT?)ܘ4~rnФ,'ЯnФ{&sc2i'L~sc2iI'L>ύL?_!&1X@2X|Dxj,Pk!mw}Yoǘ-}?ofYln x lc6iyނ̲٤ySkY 14oy"lCB; 72t.dAFCA#˨PѾFjhg2*+ݮY#vhQvlYvڟ5P;02gl> S,N,G7ʨеڵ^!2tZ'2tٵ^Od<(BGY׈>]Y,kdy ]r=( FeR+'DCnV(P|Y'cq>7DeAР2*_z52c\R 3%5< q <  3xdxlTXWY.1R2VAfC+)ey- \BQBe(`\U e"c(+DP_zȲ TQ,FRy ݿz= }2*4"ch~kdT-VȲ iyid_zFehN,u14fY4,HQ5 ϲ|JOzDYNIy 'bb?ٺIYN>5bRC'پF,*nQq}eY1l\_u_7ۯo72o um\77,z(:Vm\,KYzRYד~Hjzvp#qW; oeahoDY060|fwp+h_QF>rY e9((qKe9TkNoQqWkOoe\;hOoDYƵӧe\;}ڟHjک~־NodNp-)hiNͲfyDYv>BeaP 1 saHц< 1qaQ!֗!ʨٮ?!̲ t{Ah8߾ae_zCeG2*ByTQFPծWQ!Η?!ʨWY?!cQ"Dy q>,Cϲ)c[Bem8eb B4Ķ9m цnv#Dy v)2ĶmQFmQ!]dBepͺClC.BQ!>e#) Xe6\h n Y!RQ!que71;AB!OY1DqeTHQ!rlLQ!rVųBhCd)2D:"S!2!]!hI ]I,C$mF(I?$2D'D"(`"I4DY$?$1D>\rt;-nYFiifyLu>,zh},~b>Z_#2}OԦudYu~?٦/ͭ[fY/Mj}i&e$nj&5},}4cϬd٦_,ҍ?fo42(K#<TƓIfYfo$e<,1z,1VuR!t]їf<, }sGױlh]ύ,t=7Ff'dt*KWH* +dRYOd~|:Yӏr_'C?_Od6x42|y?YFϲ?1|n6lHjӏNuדL?ۅ72PyTFT釲,dRyL?d$<A$a6$L?_''m2*}{L Y6}Ϸg۳,ӷ|l{fG;ֳMKjn $`I/UtdUH"ʣ/2*:٦ʲ1Y <:,AtW$dde:;$}5}lz\sdyLn٦\},IIԦBYBRyL'o524֭j$iuC3lIӻ$h:XnHfI$2]/K< kfyLKҗ("?Nߺ?IYO1M80GN̦OqM|yI>U>'1}Y>QceDg+dNh]o,'7o,td$ȯtD)tdszΖHlzNe"MG|YìHM,˴j[k_!2}H*iW6K>)v[?oYi>k-M;Qmt;M;{Z;{,ϽmZ}_kM̦iFش0~ծ7m{VYunǴ_k٦w/K{1٦w޻geڻYڿ{Ǵ7l_odyL{WkȲL{㳵#,PXFiop#۴7nhKvnoRYtu&5%*K{<"~ծM{I< 7I4$2Eί&Ҧ ߆>?[dӆev,ioYi_u~lӆu{diw+Mgv̲LNv[;GR6ls$M[ȲL/lx߲n6m۹ϑmCdYe׳Ȧ6mx6oxLjDWݯvk+|EX]D|5RkϺ[l72?o]$5?Dfc=?',uAROx[dR7Uo  "|p!,FFRN7ndRaeT>vCdYR] |XY!?d|eYCp~͇T}m> 726RLLJ2*}I=虜{RY-exo%Ȳ̏%_!~ P?Ȳl522?Lv ndYv!lcIm~LI6?&4i~L,#'1?&9)|9)1Qˮ4?&j?F1Q}9ictF$M 7Yz!_&ͧ>؟&t }øIeO0o7|TF)>VH6HcLoOe>':?Dm>D':?Dm>Q@5^'?y(Iy̟<&mCl'e9)?9i'>IYO>DNO>|)|WYDc>QHyG>L,>VH,(Q腟@_90ÜfYvZniǜ}}Y9cξ~Y9l}Y9Rglsu|)˜}]䗯M9H|36g_1kmξ̲5Ysvҍ9<eƜIeclfY/Ky1g>,s>S\dzN!ۜ}j4c~NY|Nǜsn"m~Esn&ҜPY|cξG,rm8>|ۗeyٷ77泥hd>CY9e?YsW=2gϞfgeξ+:ls#cZ_?GeeY!cZ>O#cl}FfY챗{dyc {dQy6gfǞ{de>sRsɯ9)˜}xVIOp:2'ّS>DcQsdy=?"{d?GfYg=ٜp m fY iǜu/YF@?{Rs}{9g6gwgUlκgYκgǜ5,ge;kdRY欓ge:g4g|dȜ9_;-K;Ooǜ]?Oo9_;U:iv̲\kslw-]kie7˨gY|3c,1{e9OTI1{IYޤ|/e;ߛIe|,rџG9}ȟGfsp=ݳ,gǜN~>Oݓݑ0ý{$Ҝo|Y|#c7>۟ode7,I1|#9ߠ 7ڜoGIm7~IԜo1;If vIe 2FY9_*M*rpD%, 7Dse9L*9_qVsSeW~>7R4+,$cWЯohs0nhWP$Q9ɯv|sR9ɟssR9ɟ_>7'Nd>7s|' xV9isHyo"eT盉4独D|_&R9_F"eE>?Dڜ/Yo$|fҜ/&b9_D 76@Yp)9_$DE,盉ǜ/b|1c0m}BdYrYs_c9"sϑYa'E0ka'EsPgHQF,<IYкn@,9DyY}H",D^" S2* Xu m*L,u 1up*{{G3˨YFCYBdyLMh_#25#ɒTTFgYfRyL,IeT*.V$jSI8DMEOsYΚ<9Y3 }Y',5 YSp>DצʨTtr&,_3ѕǜ:}YOcN~~T9uhT9uO#ڜ:}L*˜:):)$9$5.OܤwR[:ݓڜ>ٹ?O2Ove,e,yNdyvP?=mW(KYVlYFmU_-<룾@dǁ$<@Rǁc=I{ygW}l+`z`߳y|ϲg˓9i}<ɲ>Dy~'-oTsoImn׳eenzp ܔ沜uK*]\vN,,vtYGFenwu6;5r4cn۽Ie۽4Z?o&5{iy7۽4s>۽Ifs4FRXxKQ 1>[6,N!cinY ntR1dz@~YO!cO?[)dea2*W}={ ر{6,K=<&%/K, W}6(`z"d Ied_nϐԄiYO!cTcdW׳6ݷ]Y&,!ѵ ?VD54 , j0MP8oz G=˨ݳ,p82*< l/ˇYn(bm *KTnЯIm RXn$5 *KI<&\kOVͲk197Ikɬ}IfNˣ,Skz2>eOo&y4Nofy̻Hߧ ll{fYeG#[=22n_Ϟmo_6jefVNti{fYBl=DsUYFo{evr3*gyZr6\z4R+W,ٮ=Ͳ)?g=G9 {6?'?g,VY=cK gs|ؓc[YGo=,s?>?ҾYsW=,sWk=򘻮vez#]zݳ<殟egue:ݳ<_zY}eSzΞ1w=W9{9 {6w='[=g,ʣžeT ~Z{e |=\e {>W32wPXX,򘻂Y {1w ?#2w ?Y׳GfRGRY殡kI]C)G&+}YI1w7yCϞ$)` {59>=,s?/_?=>{labz`~֍܏z`O*܏}#Գ'܏RzL*ܯ==ܯU=ՓgeweӻgyNڟݳ,sw,/oݳ,s?~-Y_{lsd{32{,=c!q=Es{̲/n=lYߠ{$o w~{dRY~<=?wO/eY=cW=ܯ{(nY#G"e{8r~G"=,K#{~4l}L,s=,s{dnYb=2C { {dsx="ǵ'ӻGRs+{$=_I#EYpaeXq)ʨGSQ({(rW=2h",a1wm",1wT{$h > ND[*K_h(|E;R4~t՗SsZ?eh ?7)D[8_hG&[#EY&W}=ڑM)&hGhm9>)2Neh'h 'N"D[8ч?ڑDpdHY&‘lLe-ާeh/_SS4SSSm-ONQx?|S4D[%)5>%ڙ]m@+$h zЎMFy=hGh-4U#Ieч2*ɇ2ɇYdRvZnI14[L*$_*-IIne醑T0>o&9I1㤲LrL*$GR$Q\,]!<&BIeeI15uL*$@tHB&T|ӤLg?ͤLeciY$$?_ӓ&*`:=$?l}z2,scIe I47n&}"Mm/K~ۓ$_ۓۮ{R|۳mϤLrXe cXkA$5a f}XdIK $/ȤLr@;$+$ϷgO*$TF%yعu;GRY&yϑIMYs$mǺ[}m7$/KH*IdRY&y(:V6cZ>fIfY&ydYzdRyLHA#$DI+D5ɃDIt~I$#,<&GҤ,<& رB$MeD1W듨,?IdIN&QY&9mjec$jB]&Qn&QI$&9oHe$hDI$2I?h}gK$7ˣ'eTZ_de 6,K$<&I1}1}$Il}}YIӲ&ǤiL*ˤS'<&@RO'2}+K-<&oKj޷ImnԤl$,OYT>=ڤ|ٓڤ?{&GYGRyL_]2ڤPX![y-JmmImoYeRyLzzj_$Iߓʨ_]&+ Ԥ߳,Ϥ{^3MH*ˤ==&}XDR>,"<&}1"l~e4)IOBʨGDRN4,$54 M*Ij}PHj0YГdIjoГTIj_]oIjo:-,sczMC$*$Ѫ-II#RϖIB4I%VH*I lBYI?Wؓ$TF%iį׈6I#0V&iث{Dh4,52<&)ٹ&QY&)]?k5IΟg$jҵӲӛT]?ImҵSlN&5ivz3,$,sc=Iet7sMjvNv3I,nRyL>L*ˤ fYM2cҽ,׽I1Sޤtݓڤ{wݓtx2*&}}6 wߓt,˻gRyLo$I7,FRyL]#,n|#2~F&I7p6Vۍtcۍ6Ɩv#2fۍ$,ney#,IWPY$1 :fM"aIwe7iRIL?IHtGtIb6"7 )ˤZ"Igr6)ާ|O#I>O#ڤxZ-2)޷_HjRoY-2Mj#2))DmR<`IԤ#YRY&gZ,I)DRB-V#2)҇}H&Z:Id6)t}^#,BgkdRªIM 5}C#,B߾N#,B}F&ISUIM bH*ˤPY&6"lB=cRIez#M ?G&Ik{$5)tVȤL |IL (` 4iRlb̍e$ Iq׷o$eR?TIq~z#M;OodRwNFRӞs#,k97pFRY&nDR>&>p#lRɷ#iRI!촵He$Ѥ[ $2I qHeT_IMà+$&a7D&$D$u=$hz\DIb鯮$$5D$vMe$қIM,˕$$VHfaa$$ WFha(` II00YIbw%6Il5?[h$QĶg$2I.K I<& _]$$TD<& l!He0ƞ$6Iڥ{($hI,D,]$̲L2ϗ$<&IfY&Gs'6DYRwXM1_Z)evX)6ŐA%6@O('sDl'IebpK>H"H!2 bpaH!b1d!2hS $&mq!beq3C@6֮m k?~m k,Y I)-hSع<9ENv4EYS\u )vei<jnhSЮ,Sp̵@ )VǕ)ʨeTJaF(kFh ȾaDhSگ}m Pah e0f Ma"oB)GY:1qdL'1$Ѧ1N$B.?nIju}zm \X!EyLT5IQ)|8IMd=k&P|M1үv&LtI,S(Lm ,K$QSYӓ,)yhHQ)y8l":=R6Ŷymfb~-EYض-RemEhSlRۖ$2Ŷ)eu2I)BmpSemkMv!mp3Ebe2* Ns}!I)`p߇!I4 [} R)`"hSr)̲Lͬ/fE @#eT )(R)@LGLxI)(z Ie ,R1"S) #d2*SI,S@ drh Ie {YžBGY)cch#EY?|Hx{D=Re}?ebߏZgS4žx=)bߏ~}MlϾ02žߠ}$Ѧw#DS}m}kLR4}=R))#E"xFhc"Y)ڏLe"#Ie"hD2*Enn߈m0rވMOoDh0p ),G"v=e"_cM/c)")6E`~b=)+b)q̲<,)bn)]$!"MgHMٳGmC_LWZp#RɛGY)b)&fS#RL̦ɛُL111щ)&Nb2iSD'kL"&:7"dP<-IMz3E"|'KIPW$&\~Mis.~D&[y-2*mO<&۞o{&Ro{"fY&{y=2*,}Dc"ۯ-ic i"[E&RY=J_O,DTu&eDީ,;}G&!M?VHB;be"e"{YD>=i?Vi"{{&RSY'!1z賄$M>,# iOzDHc$!f?eIHY&埓HyLN"m"~@"MD2ߩ,OBc"jPYDԠcГm"jPfRVuKJD}E&Dt0V6He[&RQX^$&z=4\X!V,Ui" 8[e",D"1D"m"GcHќuH欀 H̲dDYLDοY&dOfD9s&&r^Du{"m"7VYDnl׍L,e7)܀DĐ)iZf<LJ>af<>)̦ ne6ܣvzf܆{n٦="44)߶H2ͦN'f9op4ͦtnݓ6m=̦ +7fӄ iis ffӄݓ4}됄,4C)̲L3L22߲ͤ%K24di3q'M]DgbiDWG|>I*K<>!*K@-9LˣO(r~S*Kr~dI-9L,} IW,>Z$߿=v*vHۉZm'X7؉J>JW 2K%=8P ZzXq=PEW?PYz]dG!,a}b,!pcVzH*= @?QYhIeIY(z/H*z7g *@s?C%=PCGzWdn-=DYV *cծ-,cSgǦ-Zؔ>u$*}lYERypuA-}_n>GB"'J1Af#PkPGa T7eRKaGY"I񓨌Oծ$*K$5̾IdI OʲLH![HB_=? }yGOЗQiw:^"GOzzзI翞$B_zeI<ң' [}l-,iv(>Q4;L)Pya~4;L qܘHfv<J4[T4;G(ܺgοܮgHy2fG~~&,i~D-?G7,ߘ#ͯQ?kPy5Y#,iyK*K@eKfinPKYo$濡7]if 2˒{e?G?~0;AfK_|Z?BgA-g ji#͟ϚIeIg2(N:HG: jiV;$N4>Sfc:=d4eƬTi֟|֤IK,<+Gy֤Y|lҬPg*hVeg*4+lT4+Lr)PyYaџu A- ӏYIYa:Ҭ0v)$% lg=@fYҬYZ5VYY#+5k$%IDeIFY#̖f Y!JAd%͚q֤2y>o7,ie9 *4߀lgT4eI+ Qo~Y|#W|I%W+L&(W5M9<_~#4j}T4kA9WϑAT4;= AT㝲s$QKsTilH*K㑲9)4d֘5̖sY *KC~sJs9Yωɷ?kФ,i(`x jIL,-) J|y|=TFϲ|=IPEzGzNPY*z(Czʒt>u *Km[$ۗ׍(WY׍#3lTپ̲$>uK*\GM1TFfK)n@eI ]TW$jIaѾN!,Iaz}$<*YFv;%+bUwjI|zʒt{REY't݉ʒ4<Q,kPy$ϲ|Hw{H*i(BPYfo_3I%ik$ђ|=D呔gz,*.Qt=,&QyIotk稜r,}]2#7< *]=Qϥ2_z=ʒ\;}(˟¥HΥ2p 7J|8D{Ny$Z,¥HT<+\.?҅,p(wZREx2=E\{OܻTdY{#K^2_{ʒ,{#]mYZ;GZ?ufkIeIwnR{$jpv{w_Tt]+}o}Wןݳ<=S=I-ݰsYGaڟo$tߠ2nlQK7< *t#7@p#t 2n"$tD|Fn_o(x3]3,f~%%L\p3K~%*tϯsZG;t1\"K~s,oe%*tΗDy+v|It?kI+쬀-.x.K<_呮CpIt?xA+IDtE$("~o(K"4v#ItEhRFMJI$JX%]ce}HBZȯ\ )t?eR"s| ~u |( 7)]#ۿ%]#\B(dYMB#]r}V{RՖK#]3M2( _n?_ODR)\vz '[IeI e A~+_Wj)\ RG+D$cURRYQypuD-+eITeT)|o{PKۮ{P)|/_=!n} B̖mA-D!"JJuH!7% "J{y=}U_A-G=Z R+` T ߳,}H9ϑT)\l޺oA,)|?Aɟ_OФ>'&ɟIKᓏ|H'dGMRY=,(̲H2#*K_T)ޗX!yp#xOI)Hf)ީ,T,H*t=Z{= ;-m8RvFPYR<ع?CPYR<IxXe#v=DRYR|GRt=ABdz",)z :i}T:|YABvxA@(+BA5DKvZVABô2KvzuzZ ˮ *iVTjfkud%*T),_#IlIei$($0ծǘDYXT ђYq(H(酪%-{YIGpl$ʒ6_֟DKbG?[hIlQֳnvDy$Cو(KDE~z QIgY>$H^NB% P-VeIODYk%' I$bP$Z1(|I$(F(HĴ Xd |0(qCoAnNg#l!*]mQ|p>և? R#_H+`P_>WHQ h, qOn х Q|Y? ʣ{ޡnV=Q D+m` ^Q kg$D+G 1i\!ʣ}cQc]c!*`}nVw_)*`} nzny\pE%`]܅Vz+RzL Xr=Q,qv,K|cfC ,<,+h ??P BTO1)Kkn((KRY $ʣ.e)gbƁ+*1f̾f}}f+`~U_?CV U5nl5tY0ˣP pEyݿ**@/d7EY Pŷe)@B7EY P* $(J $R.V PʲTHQY $(@',"ŤЈ $ QԟnhLVt R.+VyϹe)QNs@pׁ+R~Z 8N[;=pEY 8NWTvjNa67`)*>&?@ISE쮫>S!&x?e) >}$Qk9pCT@cB, ,On7RL gf?)R@*_gkbRH!* ɇ>$Q)ۇH!R2ۥ@,K_@< ծW QHOYQ|=0+Y:pIBO@ ā~zH g@ @4}HY @nlpbVr.+Ҋ}xևIؗӷ~'Qb_N{hŎ=D+}糋I>Y,>9,>߳5o.Ra,~@(bpևe)y|z<֬} !V~1?q("n1VQ"}8'EYteSGe7i8)DY?R"?G2JGG("?g2J.K<~O QE ?ǬBHzEL"Ee)Y\}&QF zH=z DQ2z ң辯zHkQt֫*hIvH ("Qǯ  PHT}HĭhRNߺۧIYN:]OvI/[KNZ[ v*|N n7!&e9qtbbv8&ıbR'N\<¤1[,'~Ф''z&e,_!'qZ%ӾK?dR?'& &911;tu t1kL:n~9i'C8XjvMɇk1C }Ccbc@ nФ|?rR'G,'74rb }9i'ndN:HGqz&|cbQIYN>O$I;I2jIX&áAv4ǿ4)&OW/Mrt?4)ˉ@A!hNtAvC8}INt>荠I'j]:Ar|d5r}D*LvdY)zIy(@UФ7Iy(qEb7RL:ѩn&e9LʨezΤrR' hNSz`bljsiN_^ϥI'zσ}zҤ=O4)ˉޣЪ= Y7'D+XbR XYBL:DC,OD 1i'$} hk$I; qE$!&h@Ĥ/9)&:''DScvP=91ۉ^hU,'z! 7sN4R5iR'J^5iN40V4DSFUo$MډҍTIN4UͤIYN45iR'OzRLr,]MDɏ骇hbvGѽ N|Sn@vBINt,dR':u.3Z?eIy\GINt\*KN/Kz'qrjz\]q靔Qˇ>s'KNjZ=p'cnwNx.Mʨ=ϥI;s&CY&M1\1i'?#nI;/Mʨɥ_eҤ[ RDױ*LG)RF!>U~Għ H,Għ uS@3->=Hj} e~HY"~ uzi?+>="~Y>=G)~RF!~ίן%<Re$R?,<"<BG!D/_)>>|CRāʣ!e@Z_%@ q,K$<"< B-i$n>oF"E<,K3x$E?1qDH8c"E|QO~ GY)O>?V R'e<">Qc RO,G,}=<",A_7%~h6?By/pw,BHGyBÇ {1'EC+"eG=̲,{i$R;9iɯ)K}LD'Y ->l?'HY"\0AZW; )K,'RF!?$}t$E~-ܵ+ - YGծD~vDu֮*)"+r'Riy"e?]n1[>\r ,Ke?M<"{yߑ2 pŽ+HyD^ϊ+c<R>5D^LY )KkY )g>5 iXe^){?EZծD,X -qi?<9H9YN"y@HNwB( eI2 ?D"x,_IRde?<">%2{eHyDfg "Sy2 ~s)2RzAZd?'D3 e2?Ye?R=s$"f9EWH?xs)2? EfsYyV<"/˟ $$,Y?"— HyDf0Y,Y8뎔QȬ}uuȬ uϲuO<")YO 5ί"QxV=HYd;D5BY"",g&RYs?42"D5{$"?HYg=IH̚t~$!EfM:?$ȬeRYYDf?Ȭ9wU]yAWF!CgEСkYѡSxV"GE{,>)|1ew+v2 rwG#2߻+`<+ܻ#E{l{Do~Y|)֮)R/)]v,KDCYW@#WW@ZD׃^U">rR]Ԯ$,]z -\R]4gfMB!?,A#Ɨ7)|AQϯX"zVy\z2 ѳS]z"zG^O eYzѳP=)g]zb%geY.=GD!Nk9)KD)zRF!z!N =,"zVW=gCZDQU)(bsi="s,="Y=&e$R=y7DPyCH_z=%~sCYDjz,URF! kp\V@ZDa~/CR]Xiu<ӗD(MYlQXiEDEK&ʲ\ GDa] @QXA(,,bGD+ eYHyDpy H(_z%p1V@ZDgYbD#0-:B:,.V -+@ e(G iPŪi, Q}%@W$Et#e\;RpUaGHh*HyD4|濞Dh|k$R'{"fy@2 \wkn7D4<&RF!$b%QHyD4?}$,͹<ΚHhο&RHY"!NYO E4,K3(ٹ,GDΟ?k"Jsy2 QW8k )4xdARDih ,ygys )4+*R|uK$Q+d"JY5 )%2R<":,ל Qt+K1a81/?H3lܜ e͡,}GnǬ .b7HyD.v=@>~H #n$"V\ H TRF!E(]Ew=^,{qXց{",uo"weE{){CE=^,K*RF!7 7,׍D#r@(ƴ_|  ˣQH@Z$|?Hv ߳,}D#NsYG$fC7$"Ns?!eiYڟRx;un4"vvOix;F -o >)R$ڟ!Dο!"I" ikHBē?!EB1>c'"x% kNR$uz )TIHyDB$,P*QH(}Y! 5DB#H(}%J X %X" )JW"E.K 7lc7R$.c-,!+L H\B 1呂uvt;YMU}YF}=5=VH<P,LȲt4ˣG,LGW1tp+b{G0(={>0k1[Y{@YC|PX¬Yfy4ej9fYc=s.91s,4ˣgW}v5*zhk1[S,0kꟕz=iyG,̋<~2 bt[Xѡ+Kt X]—LJBw,n+덷oPY]=St~ٵA5 }0fU*GcUae̲h,KHT(@1PSnZw4)Y -HyDn@yHz#H,obGF +,r#,F"HH*IHyDn\ B#rf=ww/Q¯\M'1$Ѧ1N$B.?nIju}zm \X!EyLT5IQ)|8IMd=k&P|M1үv&LtI,S(Lm ,K$QSYӓ,)yhHQ)y8l":=R6Ŷymfb~-EYض-RemEhSlRۖ$2Ŷ)eu2I)BmpSemkMv!mp3Ebe2* Ns}!I)`p߇!I4 [} R)`"hSr)̲Lͬ/fE @#eT )(R)@LGLxI)(z Ie ,R1"S) #d2*SI,S@ drh Ie {YžBGY)cch#EY?|Hx{D=Re}?ebߏZgS4žx=)bߏ~}MlϾ02žߠ}$Ѧw#DS}m}kLR4}=R))#E"xFhc"Y)ڏLe"#Ie"hD2*Enn߈ This is the release date of the disk. Ygݳ57rg}dF=$_|nR{³|Rnvg,5qg](/?[F|fyy,>,=ܬY5]nYM= 9(sv Fog Library Disk FOG-CPM.188 Copyright (1987) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Disk 1 of 2. ANAGRAM for word puzzle fans who have dBASE II. Filename Description -11-18 .87 This is the r"elease date of the disk. -CPM188 .DOC This is the description of the disk contents. ANAGRAM .CMD 226D 15K [Anagram 1 of 6] John Krahmer's program to help you with word games, crossword puzzles, etc. Written for dBASE II. The .DBF and .NDX files have been squeezed to conserve disk space. You will need NewSWeeP or a similar utility to extract the files. SCRABBLE.WS is a discussion of the program design. README .1ST 1CD6 1K [Anagram 2 of 6] SCRABBLE.WS 525C 17K [Anagram 3 of 6] SIGSORT .CMD A07A 1K [Anagram 4 of 6] ANA12759.DQF 6DFB 116K [Anagram 5 of 6] ams you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Disk 1 of 2. ANAGRAM for word puzzle fans who have dBASE II. Filename Description -11-18 .87 This is the r#$%&'