X7$ ?BOOT-U-No boot on volume ߋtv @ƎJkQJO$kQ+O$SRT11A DECRT11A ۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m%d3'%dv'3'EyLX3'EyLk3'EyL[3'EyLv83'EyLLy .EyLk* .EyLk .m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m   @ƎMICROVMS MICROVMS08 SYSTEM DECFILE11B Ih~ MICROVMS.&[SYS0.SYSEXE]SYSLOAWSD.EXE;1.3 MICROVMS.NBACKUP/VERIFY _DUB0: _DUA1:[000000]MICROVMS/SAVESET/IMAGE/INTERCHANGE/NOREWIND SYSTEM @ƎY4.4 _::  _DUA1: V4.4 ~   $ /***************************************************************************** compd.c dictionary compress/decompress V1.0 copyright Harold Z. Bencowitz changed most recently 31-oct-86 ****************************************************************************** description: compd is a program to compress word lists into dictionaries and decompress them back into a word list. it is written in whitesmith's C to run on rt11 and tsx+. it has been tested on v5.3 and v6.01 respectively. a word list is defined as a file containing one word per line in alphabetical order and containing only the characters a through z and '. words in the input file are compressed by preceding each word with an ascii character 0 - @ indicating that the first 0 - 16 characters of a word are the same as the preceding word. only the first different character and the following ones are listed in the dictionary. the dictionary has approximately 66 characters per line. operating instructions: instructions are also explained by the help (\h) command. the operator is prompted by '*' from the rt11 command string interpretor (csi). in response enter: [outfile1][,outfile2][,outfile3]=infile1[,infile2][,infile3][/o][/p] all but the first input file and the first output file are ignored. if no output file is specified, the output file default is *.dic where the name is that of the input file. the default input filetype is .wrd. one of two manditory (not both) options must be specified. options are: /d (decompress) and /c (compress). revision history: v1.0 completed 31-oct-86 limitations: word list files must be alphabetized, all in lower case, and each word separated by including the last word. no ascii character < 141 octal 97 ascii (a) may be used except for '. the default file types work completely for compression only. for decompression, the correct default file type is applied to the output file only but not to the input file. installation and building: compile compd.c and link with hclib.obj (my c library) and clib (whitesmith's c library). implementation notes: ttt *****************************************************************************/ #include #include #define WRAPSIZE 66 #define NBUFFERS 4 #define WORDPERBLOCK 256 #define BYTEPERBLOCK 512 #define MAXWORD 80 #define INCHAN 14 #define OUTCHAN 15 _main() { char in_files[6][15], out_files[3][15], opts[10]; char *cpystr(); static char deftype[12]={'W','R','D','D','I','C','D','I','C','D','I','C'}; register int i; int min; int compress(), decompress(), greet(), rtcsi(), option(), help(); int instr(); long sec, tics(); /* * start */ greet("\t\tcompress/decompress word lists into dictionaries\tV1.0\n"); errfmt("enter \"/H\" for help\n\n"); /* * main body of program */ FOREVER { /* * get and interpret command line */ label1: rtcsi(out_files, in_files, deftype, opts); tics(); if(option(opts, 'H')) { /* help selected */ help(); goto label1; } if(in_files[0][0] == '\0') { errfmt("comp - no input file name entered\n"); goto label1; } if(!option(opts, 'C') && !option(opts, 'D')) { errfmt("comp - either option C or D must be specified\n"); goto label1; } if(option(opts, 'C') && option(opts, 'D')) { errfmt("comp - options C and D are mutually exclusive\n"); goto label1; } if(out_files[0][0] == '\0') { /* default output name */ cpystr(out_files[0], in_files[0], NULL); i = instr(out_files[0], "."); if(option(opts, 'C')) cpystr(&out_files[0][i], ".DIC", NULL); else cpystr(&out_files[0][i], ".WRD", NULL); } /* * compress */ if(option(opts, 'C')) compress(in_files[0], out_files[0]); /* * decompress */ if(option(opts, 'D')) decompress(in_files[0], out_files[0]); /* * time the run */ sec = tics() / 60; min = sec / 60; sec -= min * 60; errfmt("elapsed time %i:%l\n", min, sec); } } /****************************************************************************/ int help() /* to review help text, edit file spell.hlp */ { errfmt("\n\t\t\t compd\t\tv1.0\n\nThis program takes a word"); errfmt(" list and compresses it into a dictionary or\ndecompress"); errfmt("es a dictionary into a word list. a dictionary is list o"); errfmt("f words with\nall characters in lower case, containing o"); errfmt("nly characters a - z and '. each\nword is separated by c"); errfmt("arriage return/line feed and the words are in\nalphabeti"); errfmt("cal order. a dictionary is made by preceding each word w"); errfmt("ith an ascii\ncharacter 0 - @ indicating that 0 - 16 of "); errfmt("the leading characters are the\nsame as the preceding wo"); errfmt("rd. only the characters including and trailing the\nfirs"); errfmt("t one different from the preceding word are then placed "); errfmt("in the dictionary\nfile. a new line is started approxima"); errfmt("tely every 66 characters. The rt11\ncommand string inter"); errfmt("pretor is used. Up to three output files and up to six\n"); errfmt("input files can be specified in the command string, howe"); errfmt("ver all but the first \noutput file and the first input "); errfmt("file are ignored. for compression the default \ninput fi"); errfmt("letype is .wrd and the default output filetype is .dic. "); errfmt("for\ndecompression the default output filetype is .wrd. "); errfmt("Note that if the input\nfiletype (.dic) must be entered."); errfmt(" exactly one option (of /c and /d) must be\nselected by "); errfmt("including \"/o\" anywhere in the command string where \""); errfmt("a\" represent\na single character option indicator.\n\n\t"); errfmt("\t\t[op1]=ip1[/o]\n\n/h type this help message\t/c compre"); errfmt("ss\t\t/d decompress\n"); } /****************************************************************************/ int getword(channel, wrdbuf, n) /* get a word from the file open on channel number channel (bopen()) and write it to char[] wrdbuf limiting length to maxword characters. n must be the number of blocks in the file when getword() is called the first time and must be zero afterward. the input file must have each word terminated by '\n' even if it is the last word. if a word is cut off at maxword characters, a character is lost and the remainder becomes a new word. */ char *wrdbuf; int channel, n; { register char c; register int i; static int nbuff, flag, block, nblocks, p_buff, p_char; int bread(); extern char dbuff[NBUFFERS][BYTEPERBLOCK]; /* * first call to this file */ if(n > 0) { nbuff = 0; nblocks = n; block = 0; bread(channel, &dbuff[0][0], WORDPERBLOCK, block++, 0);/* .readw */ for(i = 1; i < NBUFFERS && i < nblocks; i++) bread(channel, &dbuff[i][0], WORDPERBLOCK, block++, 0);/*.read*/ p_buff = p_char = 0; } /* * test for end of file */ if(dbuff[p_buff][p_char] == '\0' || nbuff >= nblocks) return(EOF); /* * read in the word */ for(i = 0;(c = dbuff[p_buff][p_char]) > '\015' && i < MAXWORD - 1;) { wrdbuf[i++] = c; if(c == '\0') return(EOF); if(++p_char >= BYTEPERBLOCK) { if(block < nblocks) bread(channel, &dbuff[p_buff][0], WORDPERBLOCK, block++, 1); p_char = 0; nbuff++; p_buff++; if(p_buff >= NBUFFERS) p_buff = 0; } } wrdbuf[i] = '\0'; /* * set pointers for next word */ p_char += 2; if(p_char >= BYTEPERBLOCK) { p_char %= BYTEPERBLOCK; if(block < nblocks) bread(channel, &dbuff[p_buff][0], WORDPERBLOCK, block++, 1); nbuff++; p_buff++; if(p_buff >= NBUFFERS) p_buff = 0; } return(1); } /***************************************************************************/ int decompress(input, output) /* decompress the dictionary file input to a word list file output. */ char *input, *output; { char wrdbuf[MAXWORD]; register int c, cp = 0; FIO *fopen(), *fclose(), *fcreate(); extern FIO fpo, fpi; /* * open/create input/output files */ if(!fopen(&fpi, input, READ)) { /* open input file */ errfmt("comp - unable to open input file %p\n", input); fclose(&fpi); return; } if(!fcreate(&fpo, output, WRITE)) { /* create output file */ errfmt("comp - unable to create output file %p\n", output); fclose(&fpi); fclose(&fpo); return; } errfmt("decompressing input dictionary file %p into file %p\n", \ input, output); /* * test the file */ c = getc(&fpi); if(c != '0') { errfmt("comp - %p is not a dictionary file\n", input); return; } wrdbuf[0] = '\0'; /* * get the words */ FOREVER { c = getc(&fpi); if(c == EOF) { if(cp > 0) { wrdbuf[cp] = '\0'; putword(&fpo, wrdbuf, MAXWORD); } fclose(&fpi); fclose(&fpo); return; } if(c >= '0' && c <= '@') { wrdbuf[cp] = '\0'; putword(&fpo, wrdbuf, MAXWORD); cp = c - '0'; } else if(c == '\n' || c > 'z' || (c < 'a' && c != '\'')) ; else { wrdbuf[cp++] = c; if(cp >= MAXWORD) cp = 0; } } } /***************************************************************************/ int compress(input, output) /* compress the words in the file named input and write the output to the file named output. */ char *input, *output; { char wrdbuf[2][MAXWORD]; register int x = 1, kount = 0, i; int y = 0, nblocks; int getword(), bopen(), bclose(); FIO *fcreate(), *fclose(); extern FIO fpo; /* * open/create input/output files */ if((nblocks = bopen(INCHAN, input)) >= 0) { errfmt("comp - unable to open input file %p\n", input); return; } if(!fcreate(&fpo, output, WRITE)) { /* create output file */ errfmt("comp - unable to create output file %p\n", output); bclose(INCHAN); fclose(&fpo); return; } errfmt("compressing input file %p into dictionary file %p\n", \ input, output); nblocks = -nblocks; wrdbuf[1][0] = '\0'; /* * main loop */ FOREVER { /* * reset word indices */ if(x == 0) { y = 0; x++; } else { x = 0; y++; } /* * get a word from the input file, finish up if EOF */ if(getword(INCHAN, wrdbuf[x], nblocks) == EOF) { bclose(INCHAN); fclose(&fpo); return; } nblocks = 0; /* set to zero after the first call */ /* * find out how many common characters */ for(i = 0; i <= 15 && wrdbuf[x][i] != '\0'; i++) { if(wrdbuf[x][i] != wrdbuf[y][i]) break; } /* * test for two identical words */ if(wrdbuf[x][i] == '\0') continue; /* * output the code character */ putc(&fpo, i + 48); kount++; /* * output the remaining characters */ for( ; wrdbuf[x][i] != '\0'; i++) { putc(&fpo, wrdbuf[x][i]); kount++; } /* * break up the output file into lines */ if(kount >= WRAPSIZE) { putc(&fpo, '\n'); kount = 0; } } } /***************************************************************************/ /* external definitions */ int xxx = 0; /* neccessary to prevent odd address ofr dbuff */ char dbuff[NBUFFERS][BYTEPERBLOCK] = { 0 }; FIO fpi = {0}, fpo = {0}; XM> -@A6AU@ & ~w eh6 4{6 BNei5NasNa e HiNa &  V6 CiNa  DiNa  %6 CiNa  DiNa  5 s' NasNa %5sNa : CiNa l  5sNaa %CiNa D NesNa h  5sNaa ~ %DiNa  NesNa  Lf&<& bdfdfb<&  fAfWp<A 5bud bfdfbff5 | ew2f ; f ; ^ u; V =; N ; F : > : 6 \: . $: & 9  9  {9  C9   9 8 8 b8 )8 7 7 7 K7 7 6 6 w\ w B 37 .w.7 . . .V=f ^e• ( .% v. r.WpfeV=f (e R.Wp@eV=mF.ȋ -4.8. 7 4.0.,. .Wp@eV=m.!  O  @m 0wz @`e---M- rw----E- --WpfeV=f de/ ------t- p-l-WpfeV=f $e7 T- F- J--F-7 >- *- .--*-7 "-w e  fVE  % N< VE $ f^G % N< VE ^G w@ NfJ< ~ %VE !0N$< ` 5VE ! *@e`PNa^G ^%!0 !@@e`PNa^G 2%eVE D ^G < ! !z!a!' @a0 P w R e\ĕ 5 XN  5VN-= f^G J % N= Z  ^G wNf< 4 %@V 5V5 5 X  XNVWpPfNaeZ V%  ^G < 5 V WpPAa@eZ`ȋWpPAa@eZ`AXWpPAa@eZ` WpPAa@eZ`ȋ e0^G WpPAa@eZ`ȋWpPAa@eZ`^G  B ^G  wfefIN N N ww DB̋  w|w jDBÕ  f 2  f w<feNe \ I f@A77 5uw7w6@Aww e  @ae5WpfNm  = NeNa   WpNNmWpf Nae d  WpNNm Nae 8 •  @m  aAEH a5  @ `w   f Ne  I <wfeNef  NNafe %  NVJ  ׭N)J  ׭NI  w:feNef 0 Nefe > 5 x NJ < @ ׭ZNJ  Dwf W- 5 N fff fe e K ׭J ׭J wXf W- 5 N fff fe Xe K Z׭|aK B׭lAK 2\ww  @55= wfw5w555&  KKww neBC! @ bb@ be K @    5u5 ww @w fzvU@wnfwfe:f  5@@mȋNf " =@ 5`= .f  5@e5Nf  =@e5Nefe  =@e5@@m.NNm fNm ~  =wfeN@e& @:Ne@e& Ne@e& z @. Ne f ^ @0 f %N 05 @@m.@@mW:@=w<w " @C r(@AA@ r(5@C r(@AA@ r(=5 W-@@mȋ@@m' @@m w@@mȕ @@m @@me@H@@m @@me H@@meHw &B@eˋҔ we@&& HBF21EI1LUI E4Uf Nef& ew1 L     v1p1w DD K& K - -e a& %4  L& 4  P  ww  W-@&f % N&f % ww  W-@&f % N&f % wTw BD K&  e4&& @ %4 K& R  Eww D̋ Bʋ  @@w  &fw  A@   N 5 5 N    @ C B B-C- BC    5 uwTw ,Dʋ w$w DB K& T -  a a& % -wa& %4 w D  Wp(N &   ` w\w JD!  %a!zew4%A!Ze!$!.%0!9ew Duʋw w DuC @w w N 5 wb5 e V 2  @w DBCnN e w ̥09Wp `@e  w eDˋ ע%  !&f %Ӌw ע-5 ע+ Ne Na 0%5 ע. Ne Na` %עa עhעoעu Wh•5Wo• Wu• עx5 wעb @ e 5@ e 5 wTu-@@5w:עp@ e 5N 25 wu-@@5wעf%@e5NN@ &&&&Na 8e 5@ e5 wעd+@e5%@@ &&&&Na e 5@ e5 wJעcעs עiעl'%עl(Wa>@ 55 M@e@mH@Av5ui@e5@ e 5Wa4עc4uO@e5@ &&Na e5@ e5 4@e5@ e5 % @t5uעcEEfNa  %5 u- Naf %  Nff % wLu-w@Naf % f Nf $%ww (  a& %(ww DB K& L4  & & f e 4  P(7J( H(" 7:(ww Nff %5  L& : weF f N& f %w   '%   G' e@"  ,@ & 5K J &fR'e "e &' FIw N 05C #   C - . EE  %@wb ע עע @  @ j 50@ EE2 r El2 E@2 2 /5K <  vf&e e5W-  2 @  w w  e r    w N 45C 'ע 7  $52C 6ע 7L @% ` @w    ~ Nf %@ĕ5!a   %`5w DB` 3e ww Dce e `ww Nf  ~L& ww eD! EeL e! " ##e  se)-#7 #5 7!#~#N 57 h# 5N 5  w@e= 8#w-0#w(#@@m-#@@m7# fe  w z@e 7!"-" "L6#~L& @wR "4 7"7!" "7" 6"  2  4 2 f %  AWp@eLww  !  " ."ww eD Wp@L5% ̋ wlWp@eL5:̋ : Nf 5 2L 5D5.̋ Nf ` 5Nefe D 5.5  5̋ Nf  5NeNa %   f Na x%   Na&e z%5@w4 Na& Z%5W- @ W-  & Na&e e5@3   33 3  3  A v   3s  ) 7w \eDC  EE   l9@w EE4 t E@4 Em4 J G Ȕe t   e@ EE5u EE@A  & vf&e e  w44 ww D ̋ʋ w& %f  8L N N 6L  $ww N 5& tt W-  tmtm t  @mAm@ 4t @w>w ,eD@Av @A  5uҕ-   @ 5 u @Av @A@A N ffff  Ve`ffff e0@ Jʥ9e'  wVw DD   @ 5ӕ-@E   @ 5B- N 5r& %` 5r@e0 ˥9e'  ww D5EE  E `   & vf&e |e w2w eDu55ԕ-@@m5%N 5&Na he 5Nf Na %5`   @e`  ԕ0  ԕ.  @e` ԕeu 5  ԕ0  ԕ-@ 5ԕ+%dA rde0A rduA r e0A r @e0@ww eDCuӕ-55@e5& "e 5@a5%NNa %5`u-@@`u ӕ0 ӕ. Ae@ 0   ӕ0  Ae@ 0 @ww D u-@m5@  `9`ȕ0   ̕1B `ȕ0 `wZw HE`@mAE@`5N 8 - $ ew&fw @ A   @ C B B-C- BC 5 uw&fw B C   B A @ @-A- @A 5 uww feD u55u%57?  bt50" for help compress/decompress word lists into dictionaries V1.0 ss /d decompress [op1]=ip1[/o] /h type this help message /c comprea" represent a single character option indicator. including "/o" anywhere in the command string where " exactly one option (of /c and /d) must be selected by Note that if the input filetype (.dic) must be entered.for decompression the default output filetype is .wrd. letype is .wrd and the default output filetype is .dic. file are ignored. for compression the default input fiver all but the first output file and the first input input files can be specified in the command string, howepretor is used. Up to three output files and up to six tely every 66 characters. The rt11 command string interin the dictionary file. a new line is started approximat one different from the preceding word are then placed rd. only the characters including and trailing the firsthe leading characters are the same as the preceding woith an ascii character 0 - @ indicating that 0 - 16 of cal order. a dictionary is made by preceding each word warriage return/line feed and the words are in alphabetinly characters a - z and '. each word is separated by cf words with all characters in lower case, containing oes a dictionary into a word list. a dictionary is list o list and compresses it into a dictionary or decompress compd v1.0 This program takes a wordcomp - %p is not a dictionary file decompressing input dictionary file %p into file %p comp - unable to create output file %p comp - unable to open input file %p compressing input file %p into dictionary file %p comp - unable to create output file %p comp - unable to open input file %p ================================================================================ tics - failed unable to close file - duplicate files unable to create file %p - protected file present unable to create file %p - not enough space unable to create file %p - channel already open unable to open file %p - file not found unable to open file %p - channel already open read error - channel not open read error - hardware error read error - attempted read past EOF write error - channel not open write error - hardware error write error - attempted write past EOF ZMLKNULL FIO pointerKunchecked conditionKread error Lwrite errorbad free callDK : @ BCG@M [u+pLno memoryLerror /***************************************************************************** spell.c spelling checker V2.3 copyright Harold Z. Bencowitz changed most recently 13-feb-87 ****************************************************************************** description: spell is a spelling checker written in whitesmith's C which runs on rt11 and tsx+. it has been tested on v5.3 and v6.01 respectively. words in the input file are compared to one or more dictionaries (files of alphabetized words) and an alphabetized list of the unmatched words is sent to the output file(s). the output list can list each word as many times as it is used or optionally only once. spell can be used as a tool to alphabetize a list of words (eg a dictionary) or to produce an alphabetized list of the words in a text file without comparing to a dictionary. operating instructions: instructions are also explained by the help (\h) command. the operator is prompted by '*' from the rt11 command string interpretor (csi). in response enter: [outfile1][,outfile2][,outfile3]=infile1[,infile2][,infile3][/o][/p] where there can be 0-3 output files (can be tt:, lp: etc) and 1-6 input files. if none is specified the output file default is *.spl where the name is that of input file 1. input files 2-6 are optional dictionaries (in addition to the main dictionary sy:spell.wrd). the default input filetype is .wrd for both the file being checked and user dictionaries. note that if a device name is specified in the output or input file lists, that device is used as the default device for any other files in the same list. the default dictionary is sy:spell.dic. there are several options which can be combined in any combination (except with /h help, the rest of the command is ignored). other options are: /d (do not use the default dictionary), /u (unique - output file contains unique words ie only one copy of each unmatched word), /r (runoff - ignores lines in the input file starting with '.', /i (input file is a word list, ie one word per line), and /s (shell sort - much faster for input files already sorted or nearly sorted, eg a dictionary). spell can be used (if no dictionary specified and /d option) to convert a text file to an alphabetized list of the words contained or to alphabetize a list of words. possible future changes: a display in context feature, possibly with automatic dictionary updates will be considered. revision history: v1.1 completed 16-oct-83 v1.2 completed 06-sep-86 minor code changes for compatibility with newer versions of Whitesmith's v2.0 completed 31-oct-86 a complete revision with most of the code rewritten. the basic algorithm was completely changed to read input file into memory and access dictionaries from disk (opposite to v1.2). bugs fixed in input of hyphenated words. bugs fixed in handling of runoff files. default output filetype added. timing added. quick sort added. faster copy routine added. char/word optimized. default dictionaries combined into one. output routine changed. new faster input routine to read dictionary files. v2.1 completed 11-dec-86 all input/output routines rewritten. external sort (merge added). words less than 2 characters excluded. enter/leave and other changes for improved error handling. v2.2 completed 19-dec-86 /i option for faster input of word lists. better quicksort. default dictionary compressed. bugs in getword() and hgetc() fixed. strip out common words in load(). v2.3 completed 13-feb-87 use of memory altered to use all of memory without fixed char/word ratio (pointer array grows down from memtop). bug in sp_out() fixed. skip most dictionary word comparisons. bugs in hopen() and merge() fixed. limitations: the default dictionary must be on SY: and in compressed format. before compression it must be in the user dictionary format. user dictionary files must be alphabetized, all in lower case, and each word separated by including the last word. only a - z and ' characters may be used. the output list of words is always alphabetized and can not be obtained in order of appearance. uppercase letters are converted to lower case before comparing to the dictionaries. words can not be displayed in context. there is no limit to the size of the input file and the dictionary files other than available disk space. there is no specific terminal requirement. installation and building: compile spell.c and link with hclib.obj (my c library) and clib (whitesmith's c library). to install place spell.sav wherever you wish and the default dictionary (spell.dic) on the systems disk (sy:). spell.dic can be replaced by any ascii file list of words containing only alphabetic characters (a-z) in lower case and the apostrophe character (') with each word separated by carriage return-line feed (ie '\n') and in alphabetical order if this list is compressed using program compd.sav. it is probably easier to use this default dictionary and either add words to it as needed or else put additional words into special user dictionaries (format as above but not compressed), although if a large user dictionary is to be used it may be faster to add the words to spell.dic since a compressed dictionary is read faster. implementation notes: the program sizes available memory at run time and uses all of it to store words. as the input file is read it is parsed to remove all characters but ' and a-z. upper case letters are converted to lower case. hyphenated words at the end of a line are joined. hyphenated words within a line are treated as two separate words. runoff '.' commands are ignored if option /r is selected. the input words are loaded into memory. unless /d is specified each input word is compared to a list of the most common english words and not loaded if matched. words of less than 2 characters are also not loaded. the number of words and characters loaded will not include those rejected because of a match or one character. if the input file is a word list it will be loaded faster with the /i option which uses getword() instead of parsing the file a character at a time. the words are then alphabetized. quick sort is used but shell sort (option /s) is twice as fast if the words are close to alphabetical. if option /u is selected, duplicate words are removed. remaining words in memory are then compared to the default dictionary (unless option /d selected) and any other dictionaries specified. the routine which reads the dictionary files makes very strict assumptions about the format of the file as described above. dictionary files must only contain a-z [lower case], ', , and . unless /d or /i is selected, the input words are compared to a list of common words and rejected if matched before loading them into memory. spell can be used as a tool to prepare dictionaries since its output is in the correct format. the output is written to a temporary disk file. this file is copied to the specified output files or renamed if on the same disk. ttt *****************************************************************************/ #include #include #define NBUFFERS 2 #define WORDPERBLOCK 256 #define BYTEPERBLOCK 512 #define MAXWORD 32 #define OFFSET 0 #define LOWCHAN 8 #define NCHAN 6 #define READ 1 #define WRITE 2 #define MERGEORDER 5 #define MINCHAR 2 typedef struct hio { int chan; /* channel number */ char mode; /* mode, READ or WRITE or NULL (not open) */ char ugetc; /* start of block unget character */ int nblocks; /* number of blocks in the file */ int block; /* next block to read or write */ int bkount; /* number of blocks completed */ int p_buff; /* pointer to which buffer is active */ int p_char; /* pointer to next character */ char dbuff[NBUFFERS][BYTEPERBLOCK]; /* buffers */ } HIO; _main() { int loop(), limits(), greet(); unsigned int enter(); extern unsigned pbot, membot, memtop; /* * start */ greet("\t\tspelling checker for rt-11 and tsx+\t\tV2.3\n"); errfmt("enter \"/H\" for help\n\n"); /* * get memory limits, divide available high memory into space * for pointers to dictionary words (pwrd) and space for * characters (ie actual words). membot is the address just * above the program image, pointers start here. */ limits(OFFSET, &pbot, &membot, &memtop); /* size memory */ if((membot % 2) == 1) membot += 1; if((memtop % 2) == 1) memtop -= 1; /* * main body of program */ FOREVER enter(&loop); } /****************************************************************************/ int loop() /* "the main" operating part of the program */ { char in_files[6][15], out_files[3][15], opts[10]; static char temp_file[] = "DK:TEMP00.TMP"; static char deftype[12]={'W','R','D','S','P','L','S','P','L','S','P','L'}; char *gname(), *cpystr(); int ropt, min, flag, kount; int leave(), tmp_out(), load(), rtcsi(), option(), help(); int quickr(), cmpwrd(), shell(), r_alpord(), exchange(), sp_out(); int ext_sort(), hopen(), hclose(), hcreate(); register int i; long ltics, sec, tics(); unsigned totalc, nwords, unique(); extern char **pwrd; extern HIO hfiles[]; /* * */ FOREVER { /* * get and interpret command line */ label1: rtcsi(out_files, in_files, deftype, opts); ltics = tics(); if(option(opts, 'H')) { /* help selected */ help(); goto label1; } if(in_files[0][0] == '\0') { errfmt("spell - no input file name entered\n"); goto label1; } if(out_files[0][0] == '\0') { /* default output name */ cpystr(out_files[0], in_files[0], NULL); i = instr(out_files[0], "."); cpystr(&out_files[0][i], ".SPL", NULL); } /* * open input files */ if(!hopen(&hfiles[0], in_files[0])) { /* open input file */ errfmt("spell - unable to open input file %p\n",in_files[0]); hclose(&hfiles[0]); goto label1; } /* * load input into memory, alphabetize, unique, compare */ flag = NO; /* YES if all of input file read in */ kount = 0; while(!flag) { /* * create temporary output file */ if(!hcreate(&hfiles[1],gname(temp_file,kount),0)){ errfmt("spell - unable to create temporary output file\n"); hclose(&hfiles[0]); hclose(&hfiles[1]); goto label1; } /* * parse input file and load into memory */ flag = load(&hfiles[0], &nwords, &totalc, kount, \ option(opts, 'D'), option(opts, 'R'), option(opts, 'I')); errfmt("%i words (%i characters) loaded into memory\n",\ nwords, totalc); kount++; /* increment number of loads */ /* * set address of word array */ pwrd = memtop - 2 * (nwords - 1); /* * alphabetize */ if(option(opts, 'S')) shell(nwords, r_alpord, exchange, 0); else quickr(nwords, r_alpord, exchange, 0); /* * strip down to unique words */ if(option(opts, 'U')) unique(nwords); /* * check spelling against dictionaries */ if(!option(opts, 'D')) cmpwrd("SY:SPELL.DIC", in_files[0], nwords, YES); for(i = 1; in_files[i][0] > '\0'; i++) cmpwrd(in_files[i], in_files[0], nwords, NO); /* * write remaining unmatched words to temporary file */ tmp_out(&hfiles[1], nwords); /* * close output file */ if(!hclose(&hfiles[1])) { errfmt("spell - unable to close temporary file\n"); leave(); } } /* * close input file */ if(!hclose(&hfiles[0])) { errfmt("spell - unable to close input file\n"); leave(); } /* * alphabetize and unique output file if > 1 batch of input */ if(kount > 1) ext_sort(--kount, temp_file, option(opts, 'U')); /* * send output to the output files */ sp_out(temp_file, out_files, in_files[0]); /* * time the run */ sec = tics() / 60; min = sec / 60; sec -= min * 60; errfmt("elapsed time %i:%l\n", min, sec); } } /****************************************************************************/ char *gname(file_name, n) /* returns file name in file_name where the name is tempNN.tmp. the "NN" represents n which is constrained to be < 100. */ register char *file_name; int n; { unsigned decode(); decode(file_name + 7, 2, "%+02i", n); return(file_name); } /****************************************************************************/ int tmp_out(f_p, nwords) /* write the words in memory to a temporary file */ HIO *f_p; int nwords; { register char *pc, **pw; int putword(); extern unsigned memtop; for(pw = memtop; nwords-- > 0; pw--) { /* while words left */ if(*pw != NULL) { /* if a good word */ pc = *pw; /* initialize pointer */ putword(f_p, pc); } } } /****************************************************************************/ int help() /* to review help text, edit file spell.hlp */ { errfmt("\t\t\t spell v2.3\n\nThis program matches text or a"); errfmt(" list of words against up to 7 dictionary files.\nThe ou"); errfmt("tput is an alphabetized list of words not found in any d"); errfmt("ictionary. Words\nfrom the input file are defined as str"); errfmt("ings of characters a - z and ' termina-\nted by any othe"); errfmt("r character (all other characters are ignored). Upper ca"); errfmt("se\nletters are converted to lower case. If a hyphen end"); errfmt("s a line, the word is\njoined. The rt11 command string i"); errfmt("nterpretor is used. Up to three output and\n6 input file"); errfmt("s can be specified. input files 2-6 are dictionaries aga"); errfmt("inst which\nto check input file 1. the default dictionar"); errfmt("y is dk:spell.dic in compressed\nascii format. Other dic"); errfmt("tionaries are ASCII files containing alphabetical word\n"); errfmt("lists (one word per line). the default input filetype is"); errfmt(" .wrd and the default\noutput filetype is .spl. Note tha"); errfmt("t if a device name is given in either the\ninput or outp"); errfmt("ut file list, that device is the default for the remaind"); errfmt("er of the\ncommand string (ie not dk:). options can be s"); errfmt("elected by including \"/O\" any-\nwhere in the command s"); errfmt("tring where \"O\" represents a single character option.\n"); errfmt("\n[op1][,op2][,op3]=ip1[,ip2][,ip3][,ip4][,ip5][,ip6][/O]"); errfmt("\n\n/D do not use the default dictionary\t/S shell sort ("); errfmt("faster if presorted)\n/H type this help message\t\t/U un"); errfmt("ique, list output words once only\n/I input file in dict"); errfmt("ionary format (one word per line), for faster input\n/R "); errfmt("input file in runoff format (ignore lines starting with "); errfmt("'.')\n"); } /****************************************************************************/ unsigned unique(nwords) /* strip out duplicate words */ unsigned nwords; { char **pw2; register char **pw; register int i, k; int alpho(); extern char **pwrd; /* * start, no words skipped yet, pointers adjacent */ pw2 = pw = pwrd; pw++; for(i = 1; i < nwords; pw++, i++) { k = alpho(*pw, *pw2); if(k == 0) *pw = NULL; else pw2 = pw; } } /****************************************************************************/ int load(f_p, nwords, totalc, n, dopt, ropt, iopt) /* read the input file into memory, returns YES if the entire file is in, NO otherwise. nwords and totalc are the numbers of words and characters loaded respectively. if iot is YES, the input file is assumed to be a dictionary and loaded with a faster algorithm. ropt indicates a runoff file in which case lines beginning with '.' are ignored. dopt indicates whether or not the /d option is active. */ HIO *f_p; unsigned *nwords, *totalc; int n, dopt, ropt, iopt; { register char c, *pc, **pw; static char lastc; int wflag; int wlist(), hgetc(), hungetc(); unsigned nc; extern unsigned membot, memtop; /* * set up pointers */ *totalc = nc = 0; *nwords = 0; pc = membot; pw = memtop; /* * read in a word */ if(n == 0) /* initialize first call to load */ lastc = '\n'; if(iopt) { FOREVER { if((nc = getword(f_p, pc)) == EOF) return(YES); else { *pw-- = pc++; pc += nc; *totalc += nc; (*nwords)++; if(pc + MAXWORD >= pw) return(NO); } } } FOREVER { wflag = NO; while(nc < MAXWORD - 1) { label1: c = hgetc(f_p); if(c == EOF) { if(wflag == YES) { *totalc += nc; *pc = '\0'; (*nwords)++; } return(YES); } if(c >= 'A' && c <= 'Z') /* convert lower case to upper */ c += 32; if((c >= 'a' && c <= 'z') || c == '\'') { if(wflag == NO) { /* store address of word */ *pw-- = pc; } *pc++ = c; /* store character */ nc++; wflag = YES; /* in word */ } else if(c == '-' && wflag == YES) { /* hyphenation */ if((c = hgetc(f_p)) != '\n') { /* not at end of line */ hungetc(f_p, c); lastc = '-'; /* this line not currently needed */ break; } else { while((c = hgetc(f_p)) == ' ' || c == '\t' || c == '\n') ; hungetc(f_p, c); c = '\n'; } } else if(c == '.' && ropt == TRUE && lastc == '\n') { while((c= hgetc(f_p)) != '\n') {/* deal with runoff option */ if(c == EOF) { /*burn rest of line */ if(wflag == YES) { *totalc += nc; *pc = '\0'; (*nwords)++; } return(YES); } } if(wflag == YES) break; } else if(wflag == YES) { /* if word delimiter */ lastc = c; break; } lastc = c; } *pc++ = '\0'; if(nc < MINCHAR || (!dopt && wlist(*(pw+1)))) { nc = 0; /* word too small */ pw++; /* reset pointers */ pc = *pw; } else { *totalc += nc; nc = 0; (*nwords)++; if(pc + MAXWORD >= pw) return(NO); } } } /****************************************************************************/ int r_alpord(i, j) /* compares two words as to reverse alphabetic order. i and j are the array indexes (for pwrd) which point at the two words to compare. returns < 0 if word[i] < word[j]; 0 if they are the same word; or > 0 if word[i] > word[j]. */ unsigned i, j; { register char *s, *t; extern char **pwrd; s = pwrd[i]; t = pwrd[j]; for( ; *s == *t; s++, t++) { if(*s == '\0') return(0); } return(*t - *s); } /****************************************************************************/ int alpord(i, j) /* compares two words as to alphabetic order. i and j are the array indexes (for pwrd) which point at the two words to compare. returns < 0 if word[i] < word[j]; 0 if they are the same word; or > 0 if word[i] > word[j]. */ unsigned i, j; { register char *s, *t; extern char **pwrd; s = pwrd[i]; t = pwrd[j]; for( ; *s == *t; s++, t++) { if(*s == '\0') return(0); } return(*s - *t); } /****************************************************************************/ int exchange(i, j) /* exchanges two word in memory by exchanging the order in which their addresses are stored in pwrd. i and j are the pwrd indexes of the two word to be exchanged. */ unsigned i, j; { register char *t; extern char **pwrd; t = pwrd[i]; pwrd[i] = pwrd[j]; pwrd[j] = t; } /****************************************************************************/ int sp_out(filename, out_files, infile) /* send result to the specified output files. the results are in the file named filename. if it is already on the appropriate device, it is renamed instead of copied. */ char *filename, *infile; char out_files[3][15]; { char *cpystr(); int channel, inchan, outchan, copyok = YES; register int rnflag = NO, i, k; int leave(), remove(), rename(), same_device(), copy(); extern char chan_n[]; /* * */ for(i = 0; i < 3; i++) { if(out_files[i][0] == '\0') break; if((i==2||out_files[i+1][0]=='\0')&&same_device(filename,out_files[i])>=0){ for(k = 0; k < NCHAN; k++) { if(chan_n[k] == NO) { channel = k + LOWCHAN; break; } } if(k >= NCHAN) { errfmt("spell - channel not available for output file rename\n"); leave(); } rename(filename, out_files[i], channel); rnflag = YES; } else { for(k = 0; k < NCHAN; k++) { if(chan_n[k] == NO) { inchan = k + LOWCHAN; break; } } for(k++; k < NCHAN; k++) { if(chan_n[k] == NO) { outchan = k + LOWCHAN; break; } } if(k >= NCHAN) { errfmt("spell - channels not available for output file copy\n"); leave(); } if(!copy(filename, out_files[i], inchan, outchan)) copyok = NO; } } if(rnflag == NO && copyok == YES) remove(filename); return(YES); } /****************************************************************************/ int copy(fname1, fname2, inchan, outchan) /* copies file fname1 to file fname2 block by block returns 1 if successful and 0 if not. */ char *fname1, *fname2; int inchan, outchan; { int buff[WORDPERBLOCK]; register int i, nblocks; int leave(), bread(), bwrite(), bopen(), bcreate(), bclose(); /* * open input file */ if((nblocks = bopen(inchan, fname1)) >= 0) { /* open input file */ errfmt("spell - unable to open input file %p\n", fname1); bclose(inchan); leave(); } nblocks = -nblocks; /* * create output file */ if(bcreate(outchan, fname2, nblocks) >= 0) { /* create output file */ errfmt("spell - unable to create output file %p\n", fname2); bclose(inchan); bclose(outchan); leave(); } /* * copy (read, write) */ for(i = 0; i < nblocks; i++) { if(bread(inchan, buff, WORDPERBLOCK, i, 0)>=0 || \ bwrite(outchan, buff, WORDPERBLOCK, i, 0)>=0) { errfmt("spell - unable to copy output file\n"); bclose(inchan); bclose(outchan); leave(); } } /* * close up */ bclose(inchan); bclose(outchan); return(YES); } /****************************************************************************/ int same_device(fname1, fname2) /* compares two strings up to the first ":". if they are equal and each contain ":", returns 1; if one string starts with "DK:" and the other contains no ":", returns 1; if strings are equal without ":", returns 0; and otherwise returns -1. used to determine if two filenames start with the same device name. the two filenames are converted to upper case before starting. */ register char *fname1, *fname2; { int i, c; unsigned instr(), substr(); /* * convert filenames to upper case */ for(i = 0; (c = fname1[i]) != '\0'; i++) { if(c <= 'z' && c >= 'a') fname1[i] -= 32; } for(i = 0; (c = fname2[i]) != '\0'; i++) { if(c <= 'z' && c >= 'a') fname2[i] -= 32; } /* * one is "DK:", the other no device */ if(substr(fname1, "DK:") == 0 && fname1[0] != '\0'\ && fname2[instr(fname2, ":")] == '\0') return(1); if(substr(fname2, "DK:") == 0 && fname2[0] != '\0'\ && fname1[instr(fname1, ":")] == '\0') return(1); /* * equal to the ":"? */ for( ; *fname1 == *fname2; fname1++, fname2++) { if(*fname1 == '\0') { if(*fname2 == '\0') return(0); return(-1); } if(*fname1 == ':') return(1); } /* * unequal */ return(-1); } /***************************************************************************/ int cmpwrd(dict, in_file, nwords, cdic) /* compare the words in memory to those in dictionary dict. assumes that dict contains a list of alphabetized words containing lower case letters and ' only and each separated by \n. returns nothing. */ char *dict, in_file; unsigned nwords; int cdic; { register char **pw; char wrdbuf[MAXWORD]; register int i; int nchar = 0, same_chars = 0; int leave(), bclose(), new_alpho(), getword(), hopen(), hclose(); int getdw(); extern char **pwrd; extern unsigned memtop; extern HIO hfiles[]; if(!hopen(&hfiles[2], dict)) { errfmt("spell - unable to open dictionary file %p\n", dict); bclose(hfiles[0].chan); leave(); } errfmt("comparing input file %p to dictionary %p\n", in_file, dict); pw = memtop; if(cdic) { if(getdw(&hfiles[2], wrdbuf) == EOF) /* get dict word */ return; } else if(getword(&hfiles[2], wrdbuf) == EOF) /* get dict word */ return; while(*pw == NULL) { pw--; if(pw < pwrd) { hclose(&hfiles[2]); return; } } FOREVER { i = new_alpho(*pw, wrdbuf, &nchar); if(i <= 0) { if(i == 0) *pw = NULL; pw--; while(*pw == NULL) { pw--; if(pw < pwrd) break; } if(pw < pwrd) break; } else { if(cdic) { while((same_chars = getdw(&hfiles[2], wrdbuf)) > nchar) ; if(same_chars == EOF) break; } else if(getword(&hfiles[2], wrdbuf) == EOF) /* get dict word */ break; } } hclose(&hfiles[2]); } /****************************************************************************/ int hgetc(x) /* get a character from the file with HIO of x. use of this routine will not precisely duplicate the input file if it contains a carriage return (13, octal 15) alone without a line feed (10, octal 12) since all CRs are ignored. */ HIO *x; { char junk; register int c, tempc; int getsub(), leave(); /* * get character and test for end of file */ if(x->mode != READ) leave(); if(!x->nblocks) return(EOF); /* * unget character? */ if(x->p_char < 0) c = x->ugetc; /* start of block unget character */ else c = x->dbuff[x->p_buff][x->p_char]; /* * if beginning of file go until good character */ if(!x->p_char && !x->bkount) { while(c == '\0' || c == '\015') { if(++(x->p_char) >= BYTEPERBLOCK) { if(getsub(x, 0, &junk)) return(c); } c = x->dbuff[x->p_buff][x->p_char]; } } /* * leave pointer on next character */ for(tempc = '\0'; tempc == '\0' || tempc == '\015'; ) { if(++(x->p_char) >= BYTEPERBLOCK) { if(getsub(x, 0, &junk)) return(c); } tempc = x->dbuff[x->p_buff][x->p_char]; } return(c); } /****************************************************************************/ int getsub(x, n, wbuf) /* subroutine used by getword() and getdw() */ HIO *x; int n; char *wbuf; { int bread(), bclose(), leave(); x->bkount++; if(x->block >= x->nblocks) { if(x->bkount >= x->nblocks) { wbuf[n] = '\0'; x->nblocks = 0; return(YES); } } else { if(bread(x->chan,&x->dbuff[x->p_buff][0],WORDPERBLOCK,x->block++,0)>=0){ errfmt("spell - unable to read\n"); bclose(x->chan); leave(); } } x->p_char = 0; if(++x->p_buff >= NBUFFERS) x->p_buff = 0; return(NO); } /****************************************************************************/ int getdw(x, wrdbuf) /* get a word from the READ file opened with HIO x and copy it to char wrdbuf[] limiting length to MAXWORD characters. the input file must be in compressed dictionary format ie each word preceded by a single character '0' - '@' indicating the number of beginning characters in common with the previous word (alphabetized). if the word exceeds MAXWORD it is truncated and the extra characters are ignored. returns EOF or number of characters unchanged form the previous word (excluding the '\0'). this may be 0 even though a valid word is returned (EOF must be negative!). leave() called on all errors. */ HIO *x; char *wrdbuf; { static char tbuf[MAXWORD]; register char c; register int k, i; int same_chars; int getsub(), leave(); /* * test for READ file and end of file */ if(x->mode != READ) leave(); if(!x->nblocks) return(EOF); c = x->dbuff[x->p_buff][x->p_char]; /* * get first character */ if(c < '0' || c > '@') { errfmt("spell - improper dictionary, not compressed format\n"); leave(); } /* * copy same characters from temporary buffer */ for(i = 0, k = c - '0'; i < k; i++) wrdbuf[i] = tbuf[i]; same_chars = i; /* * get new characters */ for(c = 'a'; (c >= 'a' || c == '\'') && i < MAXWORD - 1; ) { if(++(x->p_char) >= BYTEPERBLOCK) { if(getsub(x, i, wrdbuf)) return(same_chars); } c=x->dbuff[x->p_buff][x->p_char]; tbuf[i] = wrdbuf[i] = c; i++; } wrdbuf[--i] = '\0'; /* * set pointers for next word */ while((c = x->dbuff[x->p_buff][x->p_char]) < '0' || c > '@') { if(++(x->p_char) >= BYTEPERBLOCK) { if(getsub(x, i, wrdbuf)) return(same_chars); } } return(same_chars); } /****************************************************************************/ int getword(x, wrdbuf) /* get a word from the READ file opened with HIO x and copy it to char wrdbuf[] limiting length to MAXWORD characters. the input file must have each word terminated by '\n' even if it is the last word. if a word is cut off at MAXWORD characters and the remainder becomes a new word. returns EOF or the number of characters excluding the '\0'. if there is any error leave() is called. */ HIO *x; char *wrdbuf; { register char c; register int i; int getsub(), leave(); /* * test for READ file and end of file */ if(x->mode != READ) leave(); if(!x->nblocks) return(EOF); /* * read in the word */ for(i=0;(c=x->dbuff[x->p_buff][x->p_char])>'\015' && ip_char) >= BYTEPERBLOCK) { if(getsub(x, i, wrdbuf)) return(i); } } wrdbuf[i] = '\0'; /* * set pointers for next word */ while(((c=x->dbuff[x->p_buff][x->p_char])<'a'||c>'z') && c!='\'') { if(++(x->p_char) >= BYTEPERBLOCK) { if(getsub(x, i, wrdbuf)) return(i); } } /* * finish */ return(i); } /****************************************************************************/ int hopen(x, fname) /* open a file for buffered i/o */ HIO *x; char *fname; { register int i; int bopen(), bclose(), bread(); extern char chan_n[]; /* * test if this HIO is unused */ if(x->mode != NO) return(NO); /* * initialize file parameters */ for(i = 0; i < NCHAN; i++) { if(chan_n[i] == NO) { x->chan = i + LOWCHAN; break; } } if(i >= NCHAN) { errfmt("no channel available\n"); return(NO); } x->bkount = x->block = x->p_buff = x->p_char = 0; /* * issue lookup emt */ if((i = bopen(x->chan, fname)) > 0) return(NO); /* if 0 blocks, it will succeed */ x->nblocks = -i; /* * initialize (read to) buffers */ for(i = 0; i < NBUFFERS && i < x->nblocks; i++) { if(bread(x->chan,&x->dbuff[i][0],WORDPERBLOCK,(x->block)++, 0)>=0){ bclose(x->chan); return(NO); } } x->mode = READ; chan_n[x->chan - LOWCHAN] = YES; return(YES); } /****************************************************************************/ int putword(x, word) /* write a word to the WRITE file created with HIO x. each word is terminated with '\n'. returns YES or NO (proper file not created. */ HIO *x; char *word; { register int flag, i; int leave(), bclose(), bwrite(); /* * test for WRITE file */ if(x->mode != WRITE) leave(); /* * copy word into buffer, write buffer when full */ flag = NO; for(i = 0; word[i] != '\0' && i < MAXWORD-1; i++) { x->dbuff[x->p_buff][x->p_char++] = word[i]; if(x->p_char >= BYTEPERBLOCK) { flag = YES; x->p_char = 0; x->p_buff++; if(x->p_buff >= NBUFFERS) x->p_buff = 0; } } for(i = 0; i < 2; i++) { if(!i) x->dbuff[x->p_buff][x->p_char++] = '\015'; else x->dbuff[x->p_buff][x->p_char++] = '\012'; if(x->p_char >= BYTEPERBLOCK) { flag = YES; x->p_char = 0; x->p_buff++; if(x->p_buff >= NBUFFERS) x->p_buff = 0; } } if(flag) { i = (!x->p_buff ? NBUFFERS - 1: x->p_buff - 1); if(bwrite(x->chan, &x->dbuff[i][0], WORDPERBLOCK, x->block++, 0)>=0) { errfmt("spell - unable to write\n"); bclose(x->chan); leave(); } } return(YES); } /****************************************************************************/ int hcreate(x, fname, nb) /* create a buffer file of nblocks */ HIO *x; char *fname; unsigned nb; { register int i; int bcreate(); extern char chan_n[]; /* * test if this HIO unused */ if(x->mode != NO) return(NO); /* * initialize file parameters */ for(i = 0; i < NCHAN; i++) { if(chan_n[i] == NO) { x->chan = i + LOWCHAN; break; } } if(i >= NCHAN) { errfmt("no channel available\n"); return(NO); } x->nblocks = nb; x->block = x->p_buff = x->p_char = 0; /* * create file, .enter */ if((bcreate(x->chan, fname, nb)) >= 0) return(NO); x->mode = WRITE; chan_n[x->chan - LOWCHAN] = YES; return(YES); } /****************************************************************************/ int hclose(x) /* close a buffered file */ HIO *x; { int bclose(), bwrite(); extern char chan_n[]; /* * finish with output buffer, zero and write */ if(x->mode == NULL) return(NO); if(x->mode == WRITE && x->p_char > 0) { for( ; x->p_char < BYTEPERBLOCK; x->p_char++) x->dbuff[x->p_buff][x->p_char] = '\0'; if(bwrite(x->chan, &x->dbuff[x->p_buff][0], WORDPERBLOCK, x->block, 0) >= 0) { errfmt("spell - unable to write\n"); bclose(x->chan); return(NO); } } /* * close file */ if(bclose(x->chan) >= 0) return(NO); else { x->mode = 0; chan_n[x->chan - LOWCHAN] = NO; /* release channel number */ return(YES); } } /****************************************************************************/ int hungetc(x, c) /* unget a character to file of HIO x */ HIO *x; int c; { if(x->p_char > 0) { (x->p_char)--; x->dbuff[x->p_buff][x->p_char] = c; } else if(x->p_char == 0) { (x->p_char)--; x->ugetc = c; } else x->ugetc = c; } /****************************************************************************/ int gremov(low, lim, fname) /* deletes temporary files numbered from low to lim inclusively; names are tempNN.tmp. */ int low, lim; char *fname; { char *gname(); register int i; int remove(), hclose(); extern HIO hfiles[]; for(i = 0; i <= lim - low; i++) { if(!hclose(&hfiles[i])) errfmt("spell - unable to close temporary file\n"); else if(remove(gname(fname, low + i)) != 0) errfmt("spell - unable to remove temporary file\n"); } } /****************************************************************************/ int ext_sort(high, fname, unique) /* perform external merged sort on the temporary output files to combine them into a single final output file. high is the number of temporary files-1. fname is the address of a string into which to deposit the name of the final file. */ int high; char *fname; int unique; { char *gname(); register int i, low, lim; int leave(), gremov(), merge(), hopen(), hclose(), hcreate(); extern HIO hfiles[]; /* * merge the temporary files */ for(low = 0; low < high; low += MERGEORDER) { lim = min(low + MERGEORDER - 1, high); for(i = low; i <= lim; i++) { if(!hopen(&hfiles[i - low], gname(fname, i))) { errfmt("spell - unable to open temporary output files\n"); leave(); } } high++; if(!hcreate(&hfiles[MERGEORDER], gname(fname, high), 0)) { errfmt("spell - unable to create merge file\n"); leave(); } merge(lim - low + 1, unique); if(!hclose(&hfiles[MERGEORDER])) /* close output file */ errfmt("spell - unable to close merge file\n"); gremov(low, lim, fname); /* delete temporary files */ } gname(fname, high); } /****************************************************************************/ int merge(nfiles, unique) /* merges n files together. */ int nfiles, unique; { char lastwd[MAXWORD], *cpystr(); register int i, nf = 0; int alpord(), shell(), exchange(); int reheap(), getword(), putword(), alpho(); char *cc; extern char **pwrd; extern unsigned membot; extern HIO hfiles[]; /* * set up pointers */ if((memtop - membot) < (MAXWORD * MERGEORDER + MERGEORDER)) { errfmt("spell - inadequate memory for merge\n"); return; } pwrd = membot; cc = membot + 4 * MERGEORDER; /* initialize char pointer */ /* * start the heap set up */ for(i = 0; i < nfiles; i++) { if(getword(&hfiles[i], &cc[MAXWORD * i]) > 0) pwrd[nf++] = &cc[MAXWORD * i]; } /* * sort the heap */ shell(nf, alpord, exchange, 0); /* * output top line from heap and replace */ lastwd[0] = '\0'; /* initialize last word */ while(nf > 0) { if(unique) { if(alpho(lastwd, pwrd[0]) != 0) { putword(&hfiles[MERGEORDER], pwrd[0]); cpystr(lastwd, pwrd[0], NULL); } } else putword(&hfiles[MERGEORDER], pwrd[0]); i = (pwrd[0] - cc) / MAXWORD; if(getword(&hfiles[i], pwrd[0]) == EOF) pwrd[0] = pwrd[nf-- - 1]; reheap(nf, alpord, exchange); } } /****************************************************************************/ int reheap(nf, pord, pexch) /* reorder the heap after putting a new member in the first slot. nf is the number of members in the heap. pord is the address of a comparison function returning < 0 if the first argument is less than the second, > 0 if the second argument is less than the first, or 0 if the two arguments are equal. pexch is the address of a function which will exchange its two arguments. */ int nf; int (*pord)(), (*pexch)(); { register int i, j; for(i = 1; i * 2 <= nf; i = j) { j = i * 2; if(j < nf) { if((*pord)(j - 1, j) > 0) j += 1; } if((*pord)(i - 1, j - 1) <= 0) break; (*pexch)(i - 1, j - 1); } } /****************************************************************************/ int quickr(u, pord, pexch, l) /* recursive quicksort. based on "Programming Pearls" page 175. pord is a routine with compares two items and pexch exchanges them. each is called with two arguments which are the indices (0 - n-1) of the items. u is the index of the last item. l is the index of the first item (offset). */ register int u; int l; int (*pord)(), (*pexch)(); { /* float rng(); int sd1 = 69, sd2 = 1594; */ register int i, m; u--; if(u - l > 15) { /* (*pexch)(l, l + (int)((float) (u-l+1) * rng(&sd1, &sd2))); */ (*pexch)(l, (u + l) / 2); m = l; for(i = l + 1; i <= u; i++) { if((*pord)(i, l) < 0) { (*pexch)(++m, i); } } (*pexch)(l, m); quickr(m, pord, pexch, l); quickr(u+1, pord, pexch, m+1); } else shell(u - l + 1, pord, pexch, l); } /****************************************************************************/ int wlist(s) /* test whether the word in the string s is present in the list contained in this subroutine. */ char *s; { int alpho(), bin_search(); static *wl[] = { "about", "after", "all", "also", "an", "and", "any", "are", "as", "at", "be", "been", "before", "but", "by", "can", "could", "did", "do", "does", "down", "each", "for", "from", "go", "had", "has", "have", "he", "her", "him", "his", "how", "if", "in", "into", "is", "it", "its", "like", "many", "may", "me", "more", "much", "my", "new", "no", "not", "now", "of", "off", "on", "one", "or", "other", "our", "out", "over", "right", "said", "see", "she", "so", "some", "than", "that", "the", "their", "them", "then", "there", "these", "they", "this", "time", "to", "too", "two", "up", "use", "was", "we", "were", "what", "when", "where", "which", "who", "will", "with", "would", "you", "your" }; /* static char *wl[] = { "about", "after", "again", "all", "along", "also", "always", "an", "and", "another", "any", "are", "around", "as", "asked", "at", "away", "back", "be", "because", "been", "before", "below", "between", "big", "both", "but", "by", "came", "can", "come", "could", "day", "did", "do", "does", "don't", "down", "each", "end", "even", "every", "few", "find", "first", "for", "found", "from", "get", "give", "go", "good", "great", "had", "has", "have", "he", "help", "her", "here", "him", "his", "home", "how", "if", "in", "into", "is", "it", "its", "just", "know", "large", "last", "left", "like", "long", "look", "made", "make", "man", "many", "may", "me", "men", "might", "more", "most", "mr", "much", "must", "my", "name", "never", "new", "next", "no", "not", "now", "number", "of", "off", "often", "old", "on", "one", "only", "or", "other", "our", "out", "over", "own", "part", "place", "put", "read", "right", "said", "same", "saw", "say", "see", "set", "she", "should", "show", "small", "so", "some", "still", "such", "take", "tell", "than", "that", "the", "their", "them", "then", "there", "these", "they", "things", "think", "this", "those", "three", "through", "time", "to", "too", "two", "under", "up", "us", "use", "used", "very", "was", "way", "we", "well", "went", "were", "what", "when", "where", "which", "while", "who", "why", "will", "with", "word", "work", "would", "write", "years", "you", "your" }; n181 */ return(bin_search(s, wl, alpho, 0, 93)); } /****************************************************************************/ int bin_search(s, wl, pcomp, l, u) /* binary search routine for a string s. l is the index of the first (low) array member and u is the index of the last (upper) array member. */ int (*pcomp)(); char *s, *wl[]; register int l; int u; { register int k, pivot; while (l <= u) { pivot = (l + u) / 2; k = (*pcomp)(wl[pivot], s); if(k == 0) return(YES); else if(k < 0) l = pivot + 1; else /* (k > 0) */ u = pivot - 1; } return(NO); } /****************************************************************************/ int new_alpho(s, t, n) /* compares two strings s and t as to alphabetic order. returns < 0 if s < t, 0 if they are equal, or > 0 if s > t. n is changed to the index of the character first mismatched. */ register char *s, *t; int *n; { register int k; for(k = 0; s[k] == t[k]; k++) { if(s[k] == '\0') return(0); } *n = k; return(s[k] - t[k]); } /***************************************************************************/ /* external definitions */ char chan_n[NCHAN] = { 0 }; char **pwrd = NULL; unsigned pwsize = 0, pbot = NULL, membot = NULL, memtop = NULL; HIO hfiles[MERGEORDER + 1] = { 0 }; C0aah2rdvark8s3on1ba3ca4k4terial4uses3ft3lone7s3ndon7ed7ing7ment;s7sC3se5d6ly5ment9s5r6s5s4h5ed7ly6s5ing5ment9s4ing3table4e5d5ment9s5r6sB5s4ing5s4toir2be4s5s6es4y5s3ot5s6hip9s3reviate:d:s9ing:ons4rd6ance:s8t9ly6ed6ing9ly7on9ists2meC4s2ne2ock3lyte7s3nite3rn5s3ustic8al:ly8ian8s2quaint8anceal>ist>sly;or=s4rability7le9ness8y6l7s7ty6tion5e6d6r7s6s5ing8ly4ssibilityC8le:ness7on9s7ve4t5s5tance:s6ed8ly6ing4x5ed6s5ing5ture9s3onish8ed9rE:s9s8ing;ly8ments:r;s:s9ing5vate9d9s8ingD;ly9on;s4egate9d9s8ing9on;al;s9ve;ly5ss7ed8s7ing8on:s8ve:ly:ness9ityB7or9s4ieve8d9ly8ment8s7ing2hast2ile5ly5ness4ities6y3ng3tate7d8ly7sB6ing7on9al9s7ve6o7r8s2lare3eam4t3itter3ow2nate5ic7ally6on3es3ize6dD5ing3ostic8ism8s3us2o3g4ue3n4al4ic5es5st7ic9al;ly5ze7d7s6ing9ly4y3raE5e5phobia:c5s3uti6s2raphia4rian8ism8s3ee5ability7le9ness8y5d5ing5mentE9s5s3ibusiness4culturals9e:dB:r:s9ing7y5retto:s6o7s4le6s5ic5uia4mande4n5town4rgen8ic8s6ic7es7stC9s6y4viate9d9s8ing9on;s8or:s4y5s5way8s3hallows4eal3iaceous5nce8s4edC5s4gator9s4terate:d:s9ing:onlys8ress3er5gris5s3iance4dexterity8rously7s3heim3l4cite4ecta7s5mma8tic5ptic4gesiaD8c9s6tic4ity4ly4og6ic8al:ly7es7st7ze9d9s8ing6ous9ly9ness6ue8s6y4ysesC6is6t7s5tic8al:ly8ity8s5zabilitiess;y8morphicC?ally>sm>ze@d@s?ing8sophy3i4aircraft5nxiety4bacterial6llistic5ioticB:ally:s5odies7y4c5atalyst5hrist:s5ipant8table9e:d:s9ing:ons;ive6rivative5iuretic5otal9ly7e8s4electron4fertilityE5reeze:s4gen7ic9ally9ity7s5lobulin5ravity5ua4hero8es8ic:ally5istamineB=ss5honalC:ly8ies8y5odal7e8an8s6etic6llution6verty5roton5yretic;s4quarian;ismC;s9es8y7te9d9s8ing9on;s6e7d7ly7ness7s6ing7ties8y4s5epsis7tic:ally:sC6rum5ocial:ly5pasmodic5tatic5ymmetric4tank5heses8is7tic:als9ing5ssed4ise7d7s6ing5ze7d7s6ing4oach8abilities>y:le8ed9sB8ing5bate9d8ing9on;s5priate;d;ly;ness;s:ing;on=s;ve:orly;st=s:y5ic7ally6sm8s7t8icH8s5ngel9s4bishop:ric=s:s4deacon:s5iocese;s5ucal7hess;es8y6ke8s4ed5nemiesE8y5ology5r6ies6s6y5s5type9s8icals;s3ute6lyF6ness2under2ylum6s3mmetric:als;or=s9ities;y4or6ed7ss9es6ial7ng7tarian=ism=s9tiveI=ly=ness8ies8y7zation=s8e9d9r:s9s8ing6s7hip3ism5tic8ally3o4bahn5iographerB>sal@ly=ess;y8phage=s7um2d3die6s4y3e4n3ge5d5r6ed6ing6s5s3inage3land7s4y3mintonC4outh8ed8ing8s3ness2ffin4le6d6ment:s6r7s6s5ing8ly8ness2g3asse4telleF9s3el5s3ful6s3gage7s4ed5r6s4ier6st5ly5ness6g4y3hdad3pipe7r8s7s3s3uetteB8s2h3ama6s5ian8s3rain4ein2il4able4ed5e5r6s4iff7s5ng5wick9s4ment4orD5ut4s5man6en3t4ed5r6s4ing4s3ze2ja2ke4d4lite4r5's5ies5s6field5y4s3ingC2laclava4klava4laika9s4nce7d7r8s7s6ing4s3boa4riggan3conied8s6y3d4erI6dash5st4head8s4ing5sh4ly4ness4win3e4d4ful7ly7ness4r5s4s3ing3k4an6izationD=s8e9d9s8ing6s4ed5r6s4ier6st5ness6g4s4y3l4ad6eer9s6ic7st6ries7y6s5stB7ed7ing7s4ed5rina9s5t6ic6s4ing5stic9ally9ians9e:d:s9ing4oin3ed4l5s4r5ies5s5y3fin4ront3head3ie4ngC3knot3l4ed5g6ged5r6s4ful4ine7s6g4s3man3s4prit4tring9s3wow3yer2x3carC6s3ed4r5s4s3ful6s3ier5st4ness5g3like3wood3y2y3's3ar5d5s3cott7ed8r9sC7ing7s3d3friend9s3hood3ish6ly6ness3ne3s4enberries:y2zeman3o1ra3bbleD7d6ing3ce5d5let8s5r6s5s4hial4ing7ly4ken6t7ed7ing7s5ish8ness4t5eal7teD3d4ded5ing4enton4ford4ley4s4ycardia3e3g4gadocio;s6rt8s5ed6r7s6st5ingD5y4s3hma6n7ism7s5in3id5ed6r7s5ing5s4l5le4n5child5ier7st6ness6sh5lessC9ly9ness5power5s6ick6tem7orm:er:ing:s5teaser;s5wash9ed:r:s9ing5y4seD6d6s5ing3ke5d5less5man5s4ing4y3mble7s6ier8st6y3n4ch6ed7s6ing4d5ed6isC6nburg6r7s5ies6ng6sh8ed9r:s9s8ing5on5s5y4s4t3s4h5er6st5ly5ness4iliaD4s5ard5ier8e9s7st6ly6ness5y3t4s4tiness6sh5le7d6ing5y3unfels3va5do7esE7s4e5d5ly5r6y5s6t4ing4o5ed6s5ing5s4ura3w4l5ed6r7s5ier7st6ng5s5y4n5ierB7st6ly6ness5y3y4ed4ing4s3ze5d5n6ed6ing6ly6ness5r6s5s4ier7s5l6ian9sC5ng4os4zaville2each6ed7s6ing4d5able5basket6oard5ed5fruit5ing5s6tuffB:s5th5winner;s4k5able6ge6way5down9s5er7s5fast9s5ing5neck5out5pointD:s5s5throughs7genic7provocation7scopes:zes8ed7y5room9s5y3ude6tte5ia4se6sD5trophobia=c3w4s3y4ton2ean5ed5ing5s4r5ed6r6st5ing5ly5s3ment3o3velandC5r2iff5ord4ton3mate7s4b5ed5s3nic6al8ly6ian9s6s4t5on3p4ped5ing4s2ockC5ed5ing5s5wise3nic3se5d5ly5ness5r5s4ing4ure3t4h5ed6s5ing4s4ted3ud5sB5y2ub4bed5ing4s3msy3ster7s2yde1oach5ed6s5ing3l4esce8d8s4s3rse6r6stC3st5ed5ing5s3t4ed4ing4s3uthor8ed8s3x4ial2chlea3kpit7s4tail8s3onut7sB2d3e4d4ine4r5s4s3ing2efficient;s3ur2ffee2gnitive2here6d6nce7t8ly6sI5ing4sion2il4ed4ing4s3n4cide8d8nt:s8s7ing4ed4s2ld4s3ette3gate3in3laborateE;s:ing;on=s;ve:ord>s=ion@s6lateral6ry6st8ed8ing8s5ibute:d:s9ing:onBs5na2sine3t4a4lyC4s2te3tage7s4on6s2ugh5ed5ing5s3ld5n't4ee3ncil7s4t5ed6r7act7balancedB7clockwise7part;s7s5ies6ng5ries6y5s5y3ple6d6r6s5ing3rage4se6s4t5edB6ous9ly9ness5ing5s2variance7tes3entry4r5age8s5ed5ing5s3ina2w3boy6sB3girl7s3orker8s3s2zumel1rack5ed6r7s5ing5s3ft5s5y3ig3ndall4e5d5s3shC5ed6s5ing3ter3wl5ed5ing5s2eam5ed5s4se6d6s4te6d6s5ing7ine6on8s5ure8sD3dit6s3ek3ighton3scent8s3w4ed4s2ied4s3me5a6n5s3ses4is3teria7on4ic6alB8ly6ism9s6s5que8s2oatia7n8s3ix3oked3p4ped4s3ss5e6d6s5ing3uch3wd5edB5ing5s2ude5ly3ise6d6r7s6s5ing3mble7d7s6ing3sh5ed6s5ing4t5s3z2y3ingB3ptographic3stal7s1uba4n5s3e4d4s3ic2cumber8s2e3d3s2ff4ed4s2lture7sC2mberland6some3ulate7ing8on8ve2p3board8s3s2racao3e4d4s3ing4ous7ly3lG4ed4ing4s3rent7ly7s3se5d4or3t4ain7ed7ing7s4is3ve5d5s4ing2shion7s3todianF9s6y5m6arily8y6er8s6ization8e9d9s8ing6s2t3aneous3e3off6s3s3ting2yahogaB1yanide4otic2cle5d5s4ic6al5ng4opropane2linder8s6rical2nthia2pher6sB3rus2ril3us2stic1zechoslovakia>n?s0d'alene3zur1ad3s2ilies4y3ries4yB3sy2kar3ota2le3las2mage6d6s5ing4scus3e3on3p4ed4ing2n3a3bury3ce5d5sC4ing3ger6ous9ly6s4le6d6s5ing3iel6le4sh3ny3ube3zig2phne2rcy3ien3k4enB6ed4ly4ness4room8s3la4ene3rell3t4ed4ing4mouth4s3win2sh4ed5s4ing2taB4base8s3e4d4s3ing2ughter8s2ve4nport3id2wn4ed4ing4s2y3s3time4on6a1eF2activating3d4locks5y4space3f3l4er6s4ing4s4t3n4na3r4born4s3th5s3uvilleC2bate6d6s5ing3bie3orah3ra3t4or4s3ug5ged6ing5s2cade6s4tur4y5ed5ing5sB3eased4it4lerate9ion4mber4nt6s3ibel7s4de6d6s5ing4mal7s4phered4sionE8ed8s6ve3k4ed4s3laration;s6e7d7s6ing4ine7d7s6ing3ode6d6r6s5ing4mpressB:ed;s:ion4ngestant4rate8d8s7ing3rease8d8s7ing5ment9ed9ing9s2dicateE8d8s7ing3uce6d6s2em4ed4s3p4ened6s5r5st4ly3r2face6d6s5ing4ult7ed7s3eatB6ed6s4ct6ive9ly6s4nce7s5d6ed7r8s6ing6s4rred3ibrillate;ion4cienciesC9y6t7s4nable5e6d6s5ing6te8ly7ion:s8ve:ly3lated4ection2gradation;s6eC7d7s6ing4ee6s2hydrate9d9s8ing6ogenase2irdre2laware4y5ed5ing5s3egateE8d8s4te6d6rious6s5ing6on8s3hi3iberate:s9ing:ons:s4ssociateing?on6fort5nnect:ed:ing:s6tinuation:e;d;s:ing;tiess9e:d:s9ing7ly7sC8hip;s6te8d8s7ing8on:al:s8ve7or9s5ic7ally7ness7s5osity6us8ly8ness4sD5ee6s5is4t5ic7al9ly7ist:s7s5s4va5ieve3ial6ity6ly4culate:d4e5s4tal7iaC7ly7s5ive5ourinary4us6es3oa4cidal7e4me6s4type8s7ic9al;ly3re5s3t4eelB7ism7ly7ness4ian5le7s6ities8y5sic4le6d6folk6man9liness:y7en6ness6rE6s7t6woman9en5ing5y4rification7y5y4s3uflect9ed9ing:ons9ed9ing9or;s9s4ication;s6it8ly5ed6s4y5ingD3ort6ance8t9ly6ed6ing6s4se6d6s5ing5sible4tence3ractical4ess7ed8s7ingD8on:s8ve4oper8ly5ve7d7ment;s7s6ing3ulse7s6ive9ly1n2ability3ccuraciesE9y8te:ly4tivate:d:s9ing7e3dequate:ly4vertent;ly3ppropriate=ly2cessantB9ly3h4es3idence9s7t8ally8s4sion8s3lined4ude7d7s6ing5sion7ve9ly3omeC6s5ing5patibilities>y:le6lete:ly4nclusive5sequential6istent5tinenceC:t;ly5venience=ss;t4ordination4rporate;d;s:ing;on5rect9ly3rease8d8sF7ing:ly5ment9al;ly9ed9ing9s3ur5red5s2decision8ve4ed4finite:ly4nt6ationC;s6ed6ing6s4pendence:t;ly4x5ed5ing3ia5n6a7polis6s4cate8d8s7ing8on:sB7or9s5es4es4gnantly4rect8ly4stinguishable4vidual:izationsC9e:d:s9ing7ly7s6te8d8s7ing8on:s8ve:s2ject6ed6ing7on9s6s3ure6d6s5iesE6ng5y2k3ed3s2let5s2n3er5most3s4bruck3uendo8s2operative3rganic2patientC9s3ut5s2quire7d7s6ing5sitive2sane6ly3ect6s5ure7ities9y4nsible4rt6edE6ing7on9s6s4t3ide6s4ght7ful7s5nificant4stant6ing3oluble4mnia8c9s3pectB7ed7ing8on:s7s4irate8ion8ory6e7d7s6ing3tall7ations9ed:r;s9ing9s5relatednC:ionship6upt9ed9ing:onlys;y3plach2ill3shna2ona4e6E5r4or2ugerrand:s2ypton1u2dos3u3zu2lak3tur2mquat7s2ng2rd4ish6tan4s3ganaC3sk3t3u2sh2wait6i1vass1wacha3jalein3nza3shiorkor1yat2le2mograph2oto5D2rie0la2b3anon7ese3el5ed5led6ing5s3or5atories9y5ious5s3rador3s2ck4edB4ing4s3tate4ic2dder6s3en3ies3y2fayette2g3os2hore2id2ke4s2mb4da4s3eC3ont3p4s2na3cashire6ter4e3d4ed4ing7s4s3e4s3guage8s3ka3sing2os2plandgC2ramie3edo3ge5ly5r5st3ry3s3yngeal6oscopy5x2s3er5s3t4ed4ing4ly4s2tch>C5es3e4ly4ncy4r5al4st3he3in5s3ter4ice7s3via2uderdale3gh5ed5ing5s5tersB3nch6ed7s6ing4der7ed7s5ries6y3ra4el5n3sanne2vatories7y2w3n3rence3sD3yer6s2y3er5s3out6s2zy1dh1ead4er6s4ing4s3f3gue6s3kage4ed4s3n4ed4s3rnE5ed5ing5s3se4t3ther3ve5nworth5s4ing2cture7d7r7s2d3ge5s2e3ward2ft4mostlD2g3al3end6s3islation9ve;s3s2iden3gh3la2na3d4s3gth6s6y3ient4ngrad3oreC3t2o3n4ard4e3pold2promatous5sy2roy2sion6s3lie3otho3s4en6ed5r4on6s3t3F4er2t3's3hargic7y3s3ter6s4ing4uce2vel5s4r5s2w3is5ton2xington2yden1hasaH2otse1iabilities8y3ison2beria3rarian7es6y3ya5n2cense7d7s6ing6ure2docaineC2e3chtenstein=er3ge3s2fe4saving5tyle9s3t4ed4ing4s2ght5ed6r7s5ing5lyeB5ning5s2ke4d4lihood:s5y4ned4s4wise2la3lian2ma3b4s3erick3it5ation:sD5ed5ing5less5s3oges2ncoln3da4en4say3e4ar6ity6ly4d4n5s4s3ger6s4uisticB:s3iment8s3k4age7s4ed4ing4s2on4el4s2p3s4tick2quid6ation;s6s2sa3bonF3t4ed5n6ed7r8s6ing4ing7s4s2t3er5al7ly7s6ry6ture5s3huania3igation3teredE4le2ve4d4ly4r5pool4s3ing1lewellyn2oyd1oa3d4able4ed5r4ing4s3n4ed4s2bariD3e4s3ster7s2cal5e6s5ized5ly5s4te6d5ing6on8s3k4ed4ing4s2dging7s3i2ftyC2g3arithm9ic;ally9s3book3ic5al7ly4stic3s2ire3s2la3ita2mas3bardy3ondyD2ndon6derry3e4ly3g4er5st4itudinal2ok4ed4ing4s3p4ed4s3se5ly4ing2renzoE4tta3raine2s3e3ing3s4es3t2t3s3ty2ud4ly4speaker;s3is5e5iana5ville3rdesrC2ve4d4ly4s2w3ell4r5ed5ing4st3ly3s1td1ubbock2cas3erne3ian4lle4nda4uslB3k4y3y2ella2fkin2is2ke2mber3p4ed4s2nch5es3g4es4s2re4s2sitania2therC2xembourg:er6urg9er3urious9ly1ydell3ia2ing2le2mphocytes2nchburg3donsG3n2ons0ma2artin2bel2cadamia4o4roni3edonia3hine7ry7s4u3kinac3on3roscopiceC2d3agascar4m5s3e4ira4line3ge3ison3ras4e4id2gazine8s3ellan3gie3ic5lyeB3nesium5t6ic7zed6s4ification5tude9s2il4ed4ing7s3n4e4ly4tain8ed8ingE8s5enance4z2jor5ca5ity2kalu3e4rs4s4up3ing2lacca4ga6sy4wi4y5a5sia3colm8C3distribution5ve3e4s3function;ed;ing;s3i4gnancy3practice3ta2ma4's4s4D3mals4oth2n3's3age6able6d6ment6r7s3cha5ester5uria9n:s3datory4y3euverB8s3ganese3hattan3ifestation=s8ed5old8s4la4pulate:d:s9ing:ons8gramss9e:d:s9ing7ly7ness7sdB5e6d6s2ugatuck4ht6ier8st7ly7ness6s6y3sea6te8d8s7ing:ly5ous8ly8nessB3tical8ly5li6us8es2vajo6s4l4rre3e4l5s4s3ies4gabilities;y7le8y6te8dC8s7ing8on:als9e:d:r;s:s9ingD7ly7ness7s5ino8s5on7s6phil:s2vada3er5more5theless3ille3us2w3ark3bornF7s4urg3comer8s3el5s4r4st3fangled:ness4ound8land3ish3ly5wed8s3ness3portB3s4agent4boy7s5reak4cast8er:s8ing8s4dealer4ier6st5ness4less6tter:sF4magazines5tting4inding5odegradable5ting4lackvC4ook4reakable4usiness3cancelable8rous6didacy:te5rcinogenic6diac6eerlE5sh4e5llular5ntral4halance9t:ly6racter5emical4itizen4lassical4oerciverC5gnitive5llapsible7ectible8ge9iate5m6bat9ants6mercial=lysB7issioned8ttalory6tinctive5viding4rinker:s8ing5ying4urable3esB4conomic4ducational4ffective4lastic5ected8ive8ric4mergency5piricalE4nforceabilityslyC4ked5id4lip4moker9s4ocial4peaking6cialist=s8fic;ally7ulative5ortingaB4tandard6rter5eroid:al5ick5op5udent4ubscriber=s;ing5ch5it5pport:erB:ing4wimmer4yllabic5mpathizer5stem3target5xable4eaching5chnicals9ward=s4on3walk5y4egian9s4ich4ood2se4band5leedE9s4clip8s4d4gay4piece9s4s4y3h4er6s3ier5st4ly4ness5g3talgia8c9ally4rilbC7s5um7s3y2t3ability5le7ness6y4rial6es6zations;s9ve;ly;ness8or:s8s2tain6ability8le6ed7r8s6ing6ment6s3ect6ed3rudeC7d7s6ing5sion9s7ve9ly9ness3und4rate7ion7or4se6ly6ness6r6st2verse7lysC3iate7d7s6ing7on9s6or8s4ous7ly7ness1cala2casion8al:ly8ed8s3ident8al4E:ly4pital3lude7d7s6ing5sion9s7ve3ult6ation6ism8t9s4pancies8y7t8s6tion6B:alal@ly=st?ss=ic2iate6s3ne5d5r6s5s4g4ing5on7ated;lyB;ness9ivelyBly;st=s:y2ogenic6yB3tund7ity2phan6age9s6ed6ing6s4eus4ic6ally2son2thodontia:c;s:stly:y5pedic:ally:s9st;s5tic8ssE2ville2well6ian2yx4es1sage3ka2car5s3illate9d9s8ing9on;s8or:s:y6oscoperBst@s=y4ith3sclerosis2tawa3er5s3o4man7s3umwa1ubliettebD9s2ch4es2ght2ija2nce5s2r3s4elf6ves2st4ed5r6s4ing4s2t3achieve:d:s9ingF5t4ge6s3back5lance:d:s9ing5rgain:ed:ing:s4id6ding6s4luff8ed8ing8s4oardC8s5und5x4rag6ve5eak8s6d6ed8ing8s4uilding;s5lk5rst8s3cast7s5tch5ught9D4harge9d9s4lass8ed9s8ing5imb4oach8ed9s8ing5me7s6pete5unt4ries5op7pedC8ing7s6ss5y3dance8d8s7ing5ted4ebate5liver5sign9ed9ing9s4id5stance;dgC;s:ing4o5es5ing5ne5or7s8man;ship9en8y4raw5ess8ed9s8ing5ink6ve8s4uel9D3earn5t4r5most5wear3face7d6ing5ll4ield8er:s8s5ght8ing6ure5sh5t6s6tedC8r9s7ing4lank8ed8ing8s5ow7s5y4ought5x6ed7s6ing3gain5s4eneral:ed:ing4E:s4o5es5ing4rew5oss6w7ing7n7s7th9s4uess8ed9s8ing5n3haul4it4ouse8s4untD5stle9d9s8ing3ing6s3jump7ed7ing7s3kick7ed7s3laid5nd7er9s7ish:ly:nessC7s5st7ed7ing7s5w6ed6ing6ry6s5y6ing6s4et6s4ier5ne7d7s6ing5ve7d7s6ingC4ook7s4ying3man6euver6ipulate=d=s5rch5tch4ode7d6ing5st4uscle3numberB9ed9ing9s3organize3pace5ss5tient:s4erform:ed:ing:s4itch4lay7ed7ingB7s4oint5ll7ed7ing7s5rt5st7s5ur7ed7ing7s4ray5ice5oduce:d:s9ing6miseB:d4ull5nch8ed9s8ing5t6s6ted7ing3race5ge7d7ous:ly:ness7s6ing5n6k5teC4e5ach8ed9s8ing4idden6e7r8s7s6ing5gger9s6ht8ly5val4oar5de5w4un6ning3C6s5sh3s4ail7ed7ing7s4cheme9d9s8ing5ore4ell7ing7s5t4hine8d8s7ing5onelB6ot8ing6t6ut4ide7r8ness8s7s5ght5ng5t5ze7d7s4kate8d8s5irt8s4mart8edC8ing8s4oar5ld6e4parkle:d:s9ing5eak6nd7t5oken9ly9ness5read9ing9s6intlE4tand8ing;ly6re6tion6y5ood5retch:ed6ip8ped9ing8s4wim3take5lk4hink8inglB8s5row4rade4urn3vote3wait5lk5rd7ly7ness7s5tch4ear7ing7s5igh8ed8ingF8s4it6s6ted7ing4ork7ed7ing7s6n4restle5ite3yell4ield2zel3o1va3l4ly4nessH4s3rial6n5es4y3te4ion7s2en4proof4s3r4abound6undance=s;t5ccentuate6hieverHd5harge:d:s9ing5ivilized5laim7ssification;y6oud9ed9ing9s5oach7tE8s6me8r8s7ing7mercialization@e@ed@es8it:ment7pensate>d>s=ing>on@s=oryeC8lex9icate>d>s=ing6ncentrate7fidences6ote8ional6phasis;ze=d=ss5valuation5xaggerate>d>seE=ing>on6cite6erciseally5rchestrate6ganize4paid6ss8es6y7ing7ment7s5ersuade5lan8t7yE8ed8ing8s6us5opulated>s8ulatey4ssC4ways3ient7's7ly7s8'3ricia6k4ol6s3tern7s4y3uxent2ul4a4ette4ine4o3setD5d5s4ing2ve4d4s3ing2wtucket2y3ers3ing3ment7s3s1ea3ce5fully4h5es3k4edC4ing4s3nut6s3r4l4s3s2cos3toral3uliar8ity2dernales3ro2ekskill3l4ed4s3E3nemunde3r4s2g3gy3s2king2n3alized8s5ties6y3ce4il6s3ding3elope4trationnE3nies4sylvania4y3obscot3s4acola3tobarbital5xide3zance2ople6s3ria2pperuC6s2r3ceive8d8s5nt7age:s5ptable7ion:s7ual:ly4h4utaneousic>y3ura6l2ot4able4s4ted6r7s5ing2uck5s3g4ged5ing4s4C3ral3s4h2ymouth1neumatic5onia6tachograph7horax1ocatello3ket6s3ono6s3D2d3s2em4s3t4ry4s2int5e6d6r7s5ing5s3soning6ous2land4r5ity3e4s3ice6manB7en6woman9en5ies5y4o5myelitis4sh6ed7s6ing4tical9ly3len4y3ycythemiaB4ethylene4gon7al7s4nesia4somnographic>y4thene2merania3pano4eii2ncaB3d4s3tchartrain4iac3y2ol4ed4ing4s3r4er4ly2p3corn3s3ular6tion:s2rchF5es3e4s3k3t4able4er4ion7s4land4rayed4s5mouth4ugal6uese2se4d4s3ing4tionH8al:ly8ed8ing8s6ve8ly3sess7es7ing8on:s4ibilities:y6le7y3t4bronchodilatorB4doctoral4graduate4humous:ly4mortem4poned4s4treatment4ulated8ing2tB3assium4to6es3ent6ial9ly7ometer=s3omac4si3sdam2ultry3nd5s3r4ed4ingG4s2wder6ed6ing3er5ed5ful5s1pm1racticable8l9ly7e8s3irie7s2eamble5plifierkF3bronchodilator3calculated5ution4ede7d7nce8t7s6ing4ious5se7ly6ion4ludeC8s3defined5termined4ict7able7ed7ing8on:s8ve7or7s5spose:d4ominant;lylE3existing3face4er6able9y6ence8tial6ing6red6s4ix3gnancies8y3liminariesG:y3mature9ly4ise7s3paration;s6e7d7s6ing4onderance4rocessed:ing:or3scottrB5ribe9d9s7ptions8ed9s7y8ing6tatively6t7sD7te5illion;s5s5uple9d9s9t:s8ing3p4ped5ing4s5ter8s4u3re5s4k5ier7st6lyC6ness5s5y4t3sling3t4claim4e4rent4s4tance9s5ed6r7s5ing3ver6ed6ing9lygC6s3xote6ic8al:ly3z4master4zed6r7s6s5ical9ly9ness6ng2m2o3in4t5s3ndam6D4set3rum6s3ta5bilities:y6le8ness5s5tion9s4e5d5r6s5s4h4idian5ent8s5ngC0rabat3bit6s2ce4d4mic4s3hel3ial4ne5g3k4ed4ing4s2dial5n6s5te7d7s6ing8E7on4o5graph:s5isotopes9ed9ing9sE4nsider:ing:s6tituted7ructed;ing4rd6ed7r8s6ing9s6s4unted5rse4ver7ablesC7ed7ing7s7y3reate8s7ional4uit7ed7s3tal5ngular4ification7ed8r3urrent8D5sive9ly2d3ding3efinable7e7ing4sign3irect8ed8ing4stributess9ed9ing9s4int7s4ocess9ed:s5duce9d9s8ibility:le;y9ng3tileyC7s3utation:s2quest7ed7ing7s4ire7d7ment;s7s6ing2record8ed2schedule:dbE:s4ue6d6s3earch8er:s9s8ing5t6ing4mbled4rvation;s6e7d7s6oir9s4t5s5tingeB3huffle9d9s3ide6d6nce9s8y7t8s6s5ual6e4gn6ation;s6ed6s4st6ance8t6orD8s6s3olution:s5ve7d7s6ing4nant6tors4rt6ing4urce8s3pecify6t7ed7ive:lyB7s4iration;s8or:s:y4ond7ed7ing7s6se8s7ibilities=y9le3t4art7ed7s4edF4ful4ing4less4ore7d7s6ing4rained8t5ict8ed8ing9on;s9ve8s4s4udied3ubmittC9ed4lt6ant6ed6ing6s4me6d6s5ing5ption4rrect9ed2tain6ed6s3ention3inallC4re6d6s3rievable8l7e8d8s4ograde5spectively4y3urn6ed6ing6s3ype6d5ingrC2uben3se5d4ing2veal6ed6ing6s4nue7s4rberation5sal8s6e7d7s6ible7ng7oniE5t6ed6s3iew6ed7r8's8s6ing6s4se6d6s5ing6on8s3olutionariess8ed9s7y5y3ulate8d8s7ing8on:s5taneousCs9ed:r9ing9s5ient9ly9s6stor:s6t7ion:s7s5kei5lateB9d9s8ion;s5missionism>sve=orG?s4dilatation9es9ion9or;s4line4motor4pressin9or;s4spasm8tic4tocin4vagaluB3sal6age6s3t4itude4ly4ness4y2t3ic5an5inal8te:d9ing:on9or3s3ted4ingD2udeville:s9ian3ghn3lt5ed6r7s5ing5s5y3nt5ed6r7s5ful5ing8ly5s5y2vasorC6ur2ward2x1cr1d1eal4er4y2ctor6cardiogram6ed6ial7ng6s2da4lia4nta7s4s6C3ette2e3p4s3r4ed4ies5ngly4s4y2ga4n5ism4s3etable9s8y6l6rian:ism:s6telC8d8s7ing8on:als=inous5m6o5t6icB4table9ness8y5e5ies5y3juice3meil4icelli6ide6ular9te;d:ion8ite5formI6uge5lion9s6lion:s5n6ous9ly4ont7er9s5uth8s3na5cle6ular:ism:ly:s5l6ization9F8e9d9s8ing6ly5tion4e4icle5er7s5ssage4on3o4na5ica8s3ruca7e6ose3sa5illesB5l5nt5tile9ly9ness8ities:y4e5d5s5t4icle8s6ular5fication=s7ed8r9s8sD6y7ing5ng5on7al7s4o5s4t5s4us3t4ebra8e8l8s8te:s5x6es4ical8ity8ly8nessB8s6es6il8lium5ginous;ly6o7es7s4u3vain4e3y2sical6nt8s6te8d8s7ing8onB5le7s5ular9ity9ly8te:d:s9ing:on3per6al6s6tilian8ne4id5ne3sel6s3t4aB5l6ly6s4ed5e6s4iary5bular8e9d9s5ge7s6ial9ly5ng4like4ment8al8s4riesB5y6man7en4s4ure7d7s6ing3uvian8ite6us2t3ch5es5ling3eran7s5inarians;s8or8s3o2xen5ish8ly8ness5s2zard6s3cacha3ier6ate6ialE6s7hip3or3sla1ladimir2si1ocable5ular9ies9y4l5ic7ally6sm7t8s6ty6zation4Bs6t7s5ier7st6ng8s5letree5oorwill including the last word. only a - z and ' characters may be used. user dictionaries are compressed into dictionaries using program compd. the instructions for this program are in on-line help. the output list of words (from spell) is always alphabetized and can not be obtained in order of appearance. uppercase letters are converted to lower case before comparing to the dictionaries. words can not be displayed in context. there is no limit to the size of the input file and the dictionary files other than available disk space. there is no specific terminal requirement. installation and building: compile spell.c and link with hclib.obj (my c library) and clib (whitesmith's c library). to install place spell.sav wherever you wish and the default dictionary (spell.dic) on the systems disk (sy:). spell.dic can be replaced by any ascii file list of words containing only alphabetic characters (a-z) in lower case and the apostrophe character (') with each word separated by carriage return-line feed (ie '\n') and in alphabetical order if this list is compressed using program compd.sav. it is probably easier to use this default dictionary and either add words to it as needed or else put additional words into special user dictionaries (format as above but not compressed), although if a large user dictionary is to be used it may be faster to add the words to spell.dic since a compressed dictionary is read faster. implementation notes: the program sizes available memory at run time and uses all of it to store words. as the input file is read it is parsed to remove all characters but ' and a-z. upper case letters are converted to lower case. hyphenated words at the end of a line are joined. hyphenated words within a line are treated as two separate words. runoff '.' commands are ignored if option /r is selected. the input words are loaded into memory. unless /d is specified each input word is compared to a list of the most common english words and not loaded if matched. words of less than 2 characters are also not loaded. the number of words and characters loaded will not include those rejected because of a match or one character. if the input file is a word list it will be loaded faster with the /i option which uses getword() instead of parsing the file a character at a time. the words are then alphabetized. quick sort is used but shell sort (option /s) is twice as fast if the words are close to alphabetical. if option /u is selected, duplicate words are removed. remaining words in memory are then compared to the default dictionary (unless option /d selected) and any other dictionaries specified. the routine which reads the dictionary files makes very strict assumptions about the format of the file as described above. dictionary files must only contain a-z [lower case], ', , and . unless /d or /i is selected, the input words are compared to a list of common words and rejected if matched before loading them into memory. spell can be used as a tool to prepare dictionaries since its output is in the correct format. the output is written to a temporary disk file. this file is copied to the specified output files or renamed if on the same disk. ~n -bbU@ & P#f "E 4E #QQQ& eF rW  FF rW  F "w !eZNei]ENasNa e 5\u^HiNa   ^hF t"s NasNa !%fFsNa "  aFsNaa %NeQ l Ne9F " Q x5 b5 ` b f`OE h%&U % F !Q 8U 0wQ $ w}E ! !wrIiNa  RiNa %&DiNa %&f`VNaTNaQ Je 5bNVfTE 4!% `EAT e@7ESiNa L  RfT e  RfT \eUiNa  NT xDiNa  fTNaE eĕWpAa fTNaWpfNae Ze NTU U  w<E 0  w,W-`UiNa R OE `f` %NesNaOE % Df&<& b XZfZfX<& H dAdWp<A 5XuZ XfZfXfdiE eww hDNFa ewRw @@C@   f t w&f L K K jK 2K J J J QJ J I I pI 7I H H H VH  H G G xyG pCG h G `F XF PF HwFw , "B5e•  N&    w5e w e5 }= AA  Q< $f $ 5W- HBm}m e  ߇ w5 W-N !!W-&}m W-w. w2 x w"w!A !Ze !a!z!' !-W-N ! 4f  -;; 7);!.5W-1׭; -N ! -!W-,}m %N ! ! ! f ĕ W-7:wW-w5 ew}m5 e  wh ww @ m?@ m? ̋ @w w @ m?@ m? ̋ @w| w d@ mV?@ mJ?A m@?H@ m4?w@w .e  WpAmɋ wW-w N w   WpAmɋWpNNmf   Qe5  %Q/e5  }L  j NWpfNmf %ĕ  Qe5   HL 4  NfWpfNmf e 5 ww eNf   NM  N   ff % NL  N N  l ! &Naf e  &Naf e  N :N 2w&L $N N   w eDB5 @m5W-z%W-a!@m H5 @m5W-z%W-a!@m H 4M&  ̋2M  `ȋ .M  ʋ ,M&  aȋw, ̋ ʋ  :w e5 5 NY 0 NbM  ;  Nf8M %; NeY    NeY   wt 7!V;Y NeNa&  %    NeY 0 5u- 7!:7!:ц NeY P  Y VW-w  @ @ D@ @@ Wp@e@`A@l @ @  !  + ='@ , Ne& f ~% w @ Wp@e@`A@l @ , Ne& f 0% @ Wp@e@`A@l f @ @A1,@A1,2@@m@0 7 @& fe@ WpN`f de M .N $ @0 @ , @0 ww  @ @ K@ Wp@e@`A@l !0!@M   e @`ȜM ĕa!a!' @ , *Nf % @w6 @m@ Wp@e@`A@l !0!@.@ Wp@e@`A@l @`3M @ , Nf % @@w @ t@ / @ Wp@e@`A@l !   @m@ , Nf v% w@`@ Wp@e@`A@l !a!z!'@ , Nf % w @  !Qe=! M  wt @ABC3   pNf  @ p !$@0! @& feWpN`f  e N @@Q w @   @`ȋ4 1@ Wp@e@`AC `A`H@, 0ĕ@0 @ @,  @0   M@ Wp@e@`AC `ȕ L  c@ @  @& feWpN`f L e <N N z1 @ Wp@e@`AC `ȕ @, ĕ@0 @ @, @0 w$w @  !Qe=! 0N  w @p@AB2  p Nff %  @@Qw v@ -@ @ @, @eAC p`A@l @ N & ' w @&fe@ WpN`f e FN N  @0@0Qw @ @ @eAC p`A@l H@ @ @p@pwT w B  @@!WpNeQ N ,w Naf   aN w  +e5 e@!$f H WpfeQ )O "Nf  w  ff %&f B% N ^ >  N * f N 0 N %ew  e 00 4O [000e5 5! Wp NNmWpfeQ ; m05Wp Am}, R Je5  b0Na ^ N0f  >0Na  %  w: $0f t 0@ r 0WpfeQ h   em/?/R %w ĕ 5    `   w  a   a  w h D @  $@m  rf  C @  N   6   /N ff&N ew f  N ff de ffa Je f ]& $\Of ew w D 5! @m  rN @m&    wR   5 w * DB `` `ȋ  ``A@w w  @,F(F= wfwFwFFF&  jjww eBC! @ bb@ be K @    5u5 w<w *@w,f|U@wtlww DB ̋ @w fe0jN N N ww DB̋  wfeNe & j z@A"E E 5uwEw E@AwHw . 5 @ 5,jW- W-@ j@m @@m ! `  w  `  w e  @ae5WpfNm  = NeNa  WpNNmWpf Nae *  WpNNm Nae  •  @m  aAEH a5  @ `w   fe5W@5WB@B5Nef  Nef x Nefe  k B׭j *׭j ׭rj bwf Ne b 0k 6wfeNef  NNafe @%  Nk  ׭Nk l ׭NXk V wNfeNef D Nefe  5 rNl  @ w׭NNk  8f W- 5 N fff fe Je }l ׭`l ~׭Al nwhf W- 5 N fff fe e l "׭rl ׭bl Rwfe:f  5@@mȋNf  =@ 5`= .f | 5@e5Nf  =@e5Nefe t =@e5@@m.NNm ,fNm 6  =wfeN@e& @:Ne@e& Ne@e& z @. Ne f ^ @0 f %N t5 @@m.@@mW:@=w<w " @C r(@AA@ r(5@C r(@AA@ r(=5 W-@@mȋ@@m' @@m w@@mȕ @@m @@me@H@@m @@me H@@meHw &B@eˋҔ we@&& HBFw DBC 4-  @wfeuu5 Ne fNa, e@w??EI?UI EUf   m& % N  p?wf w`? m& ( wf Nef08 ew*? .     >>w D̋ Bʋ  @@wt  &fw V A@   N 5 5 N    @ C B B-C- BC    5 uww Dʋ ww D  Wp(N &   ` ww D!  %a!zew|%A!Ze!$!.%0!9ef  f %w$w Duʋw w DuC @w f N ff &f eww ~ !  < @ 55 M@e@mH@Av5ui@e5@ e 5Wa4עc4uO@e5@ &&Na e5@ e5 4@e5@ e5 % @t5uעcEEfNa 8%5 u- Naf %  Nff % wLu-w@Naf % eF    6%   G5 e@"  ,@ & 5,m &f5e "e v5 FIw  C@@m 5 @ȢD@5 @w @@- @ w N 45C 'ע 7  $52C 6ע 7Bm R% ` @w   |  h Nf %@ĕ5!a   %`5w DB` 3e wrw `Dce e `wHw 6Nf  ln& L ww eD! EeHm e! " V3N3e  se)-$37 35 7!3 3N 57 2 5N 5  wT@e= 2w-2w2@@m-2@@m72 fe  w @e 7!r2-n2 Nm3ln& @w J24 7@27!:2 427.2 6"2  2  4 2 f %  AWp@ebmwJw 0N 5 8w5 e t 2  @w eDC  EE   9@w EE4 t E@4 Em4 J G Ȕe t   e@ EE5u EE@A  & vf&e de  w44 ww nD ̋ʋ wb& %f 0 ^m N N \m  Fw w eD@Av @A  5uҕ-   @ 5 u @Av @A@A N ffff  Ve`ffff *e0@ Jʥ9e'  w0w D   @ 5ӕ-@E   @ 5B- N 5r& %` 5r@e0 ˥9e'  ww eDu55ԕ-@@m5%N 5&Na e 5Nf Na %5`   @e`  ԕ0  ԕ.  @e` ԕeu 5  ԕ0  ԕ-@ 5ԕ+%dA rde0A rduA r e0A r @e0@wDw 2eDCuӕ-55@e5& e 5@a5%NNa %5`u-@@`u ӕ0 ӕ. Ae@ 0   ӕ0  Ae@ 0 @w:w (D u-@m5@  `9`ȕ0   ̕1B `ȕ0 `ww E`@mAE@`5N  - ewr&fw \@ A   @ C B B-C- BC 5 uw8&fw B C   B A @ @-A- @A 5 uww D5EE  E `   & vf&e e wRw @eD u55u%57*?*  bt50*ng5t0*n5 t`W WuS572*5555u5@e0 57*w)@,*  t0*n557)555 t57)57)5    ԕ0 wrt11 Edition 2.2: Copyright (c) 1978, 1983 by Whitesmiths, Ltd. all rights reservedenter "/H" for help spelling checker for rt-11 and tsx+ V2.3 DK:TEMP00.TMPWRDSPLSPLSPLelapsed time %i:%l spell - unable to close input file spell - unable to close temporary file SY:SPELL.DIC%i words (%i characters) loaded into memory spell - unable to create temporary output file spell - unable to open input file %p .SPL.spell - no input file name entered %+02i'.') input file in runoff format (ignore lines starting with ionary format (one word per line), for faster input /R ique, list output words once only /I input file in dictfaster if presorted) /H type this help message /U un /D do not use the default dictionary /S shell sort ( [op1][,op2][,op3]=ip1[,ip2][,ip3][,ip4][,ip5][,ip6][/O]tring where "O" represents a single character option. elected by including "/O" any- where in the command ser of the command string (ie not dk:). options can be sut file list, that device is the default for the remaindt if a device name is given in either the input or outp .wrd and the default output filetype is .spl. Note thalists (one word per line). the default input filetype istionaries are ASCII files containing alphabetical word y is dk:spell.dic in compressed ascii format. Other dicinst which to check input file 1. the default dictionars can be specified. input files 2-6 are dictionaries aganterpretor is used. Up to three output and 6 input files a line, the word is joined. The rt11 command string ise letters are converted to lower case. If a hyphen endr character (all other characters are ignored). Upper caings of characters a - z and ' termina- ted by any otheictionary. Words from the input file are defined as strtput is an alphabetized list of words not found in any d list of words against up to 7 dictionary files. The ou spell v2.3 This program matches text or aspell - channels not available for output file copy spell - channel not available for output file rename spell - unable to copy output file spell - unable to create output file %p spell - unable to open input file %p :DK::DK:comparing input file %p to dictionary %p spell - unable to open dictionary file %p spell - unable to read spell - improper dictionary, not compressed format no channel available spell - unable to write no channel available spell - unable to write spell - unable to remove temporary file spell - unable to close temporary file spell - unable to close merge file spell - unable to create merge file spell - unable to open temporary output files spell - inadequate memory for merge QQQQQQQQQQQ}QvQrQoQkQeQaQ^QYQTQOQKQFQCQ?Q;Q6Q3Q/Q+Q'Q#Q QQQQQQ QQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPP~PxPsPnPiPfPbP^P[PWPSPPPKPFPAP;P5P1P,P'P!PPPyouryouwouldwithwillwhowhichwherewhenwhatwerewewasuseuptwotoototimethistheythesetherethenthemtheirthethatthansomesosheseesaidrightoveroutourotheroroneonoffofnownotnonewmymuchmorememaymanylikeitsitisintoinifhowhishimherhehavehashadgofromforeachdowndoesdodidcouldcanbybutbeforebeenbeatasareanyandanalsoallafterabout n ================================================================================ tics - failed  (ylE q&TsY )rename - protected file already exists rename - invalid operation rename - file not found rename - channel already open unable to close file - duplicate files unable to create file %p - protected file present unable to create file %p - not enough space unable to create file %p - channel already open unable to open file %p - file not found unable to open file %p - channel already open read error - channel not open read error - hardware error read error - attempted read past EOF write error - channel not open write error - hardware error write error - attempted write past EOF mbad leave call.DK.munchecked condition bad free call :  @ BCG@M [u+pnnno memoryznerrorabove above access add add added added added added added addition additional algorithm alphabetic alphabetical alphabetical alphabetize alphabetize alphabetize alphabetized alphabetized alphabetized alphabetized alphabetized alphabetized alphabetized already altered although always apostrophe appearance array ascii assumptions automatic available available basic because being bencowitz better both bug bugs bugs bugs bugs building carriage case case case case case case changed changed changed changes changes changes char char character character character characters characters characters characters characters characters checked checker checker clib close code code combination combined combined command command command commands common common common compared compared compared compared comparing comparing comparisons compatibility compd compd compile complete completed completed completed completed completed completed completely compressed compressed compressed compressed compressed compressed compression contain contained containing contains context context convert converted converted copied copy copy copyright correct cr cr csi dec dec default default default default default default default default default default default default described description development device device device dic dic dic dic dictionaries dictionaries dictionaries dictionaries dictionaries dictionaries dictionaries dictionaries dictionaries dictionaries dictionaries dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary dictionary disk disk disk disk disk display displayed duplicate easier eg eg eg either else end english enter enter error etc except excluded explained external fast faster faster faster faster faster faster faster feature feb feb feed file file file file file file file file file file file file file file file file file file file file files files files files files files files files files files files files files filetype filetype fixed fixed fixed fixed fixed fixed format format format format format future getword getword grows handling handling harold hclib help help help hgetc history hopen hyphenated hyphenated hyphenated ie ie ie ignored ignored ignores implementation improved include including infile infile infile input input input input input input input input input input input input input input input input input input input input install installation instead instructions instructions instructions interpretor joined large last leave less less letters letters lf lf library library limit limitations line line line line line lines link list list list list list list list list list list list list list list list list lists lists load loaded loaded loaded loaded loaded loading lower lower lower lower lower lp main makes match matched matched memory memory memory memory memory memory memory memtop merge merge minor most most most most must must must must n' name name nearly needed newer none note notes number obj obtained oct oct once only only only only only operating operator opposite optimized option option option option option option option optional optionally options options options order order outfile outfile outfile output output output output output output output output output output output output output parsed parsing per place pointer possible possibly prepare probably produce program program program program prompted put quick quick quicksort ratio read read read read reads recently rejected rejected remaining remove removed renamed replaced requirement respectively response rest return revision revision rewritten rewritten routine routine routine routine routines rt rt run runoff runoff runoff runs same same sav sav selected selected selected selected sent sep separate separated separated several shell shell since since size sizes skip sort sort sort sort sort sorted sorted sp space special specific specified specified specified specified specified specified spell spell spell spell spell spell spell spell spell spell spell spell spell spelling spelling spl starting store strict string strip sy sy sy sy systems temporary terminal tested text text those times timing tool tool treated tsx tt twice under unique unique unless unless unless unmatched unmatched updates upper uppercase used used used used used used used used user user user user user user user uses uses using using versions very wherever whitesmith's whitesmith's whitesmith's wish within without without word word word word word word word word word word word word word word words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words wrd wrd written written C0aah2rdvark8s3on1ba3ca4k4terial4uses3ft3lone7s3ndon7ed7ing7ment;s7sC3se5d6ly5ment9s5r6s5s4h5ed7ly6s5ing5ment9s4ing3table4e5d5ment9s5r6sB5s4ing5s4toir2be4s5s6es4y5s3ot5s6hip9s3reviate:d:s9ing:ons4rd6ance:s8t9ly6ed6ing9ly7on9ists2meC4s2ne2ock3lyte7s3nite3rn5s3ustic8al:ly8ian8s2quaint8anceal>ist>sly;or=s4rability7le9ness8y6l7s7ty6tion5e6d6r7s6s5ing8ly4ssibilityC8le:ness7on9s7ve4t5s5tance:s6ed8ly6ing4x5ed6s5ing5ture9s3onish8ed9rE:s9s8ing;ly8ments:r;s:s9ing5vate9d9s8ingD;ly9on;s4egate9d9s8ing9on;al;s9ve;ly5ss7ed8s7ing8on:s8ve:ly:ness9ityB7or9s4ieve8d9ly8ment8s7ing2hast2ile5ly5ness4ities6y3ng3tate7d8ly7sB6ing7on9al9s7ve6o7r8s2lare3eam4t3itter3ow2nate5ic7ally6on3es3ize6dD5ing3ostic8ism8s3us2o3g4ue3n4al4ic5es5st7ic9al;ly5ze7d7s6ing9ly4y3raE5e5phobia:c5s3uti6s2raphia4rian8ism8s3ee5ability7le9ness8y5d5ing5mentE9s5s3ibusiness4culturals9e:dB:r:s9ing7y5retto:s6o7s4le6s5ic5uia4mande4n5town4rgen8ic8s6ic7es7stC9s6y4viate9d9s8ing9on;s8or:s4y5s5way8s3hallows4eal3iaceous5nce8s4edC5s4gator9s4terate:d:s9ing:onlys8ress3er5gris5s3iance4dexterity8rously7s3heim3l4cite4ecta7s5mma8tic5ptic4gesiaD8c9s6tic4ity4ly4og6ic8al:ly7es7st7ze9d9s8ing6ous9ly9ness6ue8s6y4ysesC6is6t7s5tic8al:ly8ity8s5zabilitiess;y8morphicC?ally>sm>ze@d@s?ing8sophy3i4aircraft5nxiety4bacterial6llistic5ioticB:ally:s5odies7y4c5atalyst5hrist:s5ipant8table9e:d:s9ing:ons;ive6rivative5iuretic5otal9ly7e8s4electron4fertilityE5reeze:s4gen7ic9ally9ity7s5lobulin5ravity5ua4hero8es8ic:ally5istamineB=ss5honalC:ly8ies8y5odal7e8an8s6etic6llution6verty5roton5yretic;s4quarian;ismC;s9es8y7te9d9s8ing9on;s6e7d7ly7ness7s6ing7ties8y4s5epsis7tic:ally:sC6rum5ocial:ly5pasmodic5tatic5ymmetric4tank5heses8is7tic:als9ing5ssed4ise7d7s6ing5ze7d7s6ing4oach8abilities>y:le8ed9sB8ing5bate9d8ing9on;s5priate;d;ly;ness;s:ing;on=s;ve:orly;st=s:y5ic7ally6sm8s7t8icH8s5ngel9s4bishop:ric=s:s4deacon:s5iocese;s5ucal7hess;es8y6ke8s4ed5nemiesE8y5ology5r6ies6s6y5s5type9s8icals;s3ute6lyF6ness2under2ylum6s3mmetric:als;or=s9ities;y4or6ed7ss9es6ial7ng7tarian=ism=s9tiveI=ly=ness8ies8y7zation=s8e9d9r:s9s8ing6s7hip3ism5tic8ally3o4bahn5iographerB>sal@ly=ess;y8phage=s7um2d3die6s4y3e4n3ge5d5r6ed6ing6s5s3inage3land7s4y3mintonC4outh8ed8ing8s3ness2ffin4le6d6ment:s6r7s6s5ing8ly8ness2g3asse4telleF9s3el5s3ful6s3gage7s4ed5r6s4ier6st5ly5ness6g4y3hdad3pipe7r8s7s3s3uetteB8s2h3ama6s5ian8s3rain4ein2il4able4ed5e5r6s4iff7s5ng5wick9s4ment4orD5ut4s5man6en3t4ed5r6s4ing4s3ze2ja2ke4d4lite4r5's5ies5s6field5y4s3ingC2laclava4klava4laika9s4nce7d7r8s7s6ing4s3boa4riggan3conied8s6y3d4erI6dash5st4head8s4ing5sh4ly4ness4win3e4d4ful7ly7ness4r5s4s3ing3k4an6izationD=s8e9d9s8ing6s4ed5r6s4ier6st5ness6g4s4y3l4ad6eer9s6ic7st6ries7y6s5stB7ed7ing7s4ed5rina9s5t6ic6s4ing5stic9ally9ians9e:d:s9ing4oin3ed4l5s4r5ies5s5y3fin4ront3head3ie4ngC3knot3l4ed5g6ged5r6s4ful4ine7s6g4s3man3s4prit4tring9s3wow3yer2x3carC6s3ed4r5s4s3ful6s3ier5st4ness5g3like3wood3y2y3's3ar5d5s3cott7ed8r9sC7ing7s3d3friend9s3hood3ish6ly6ness3ne3s4enberries:y2zeman3o1ra3bbleD7d6ing3ce5d5let8s5r6s5s4hial4ing7ly4ken6t7ed7ing7s5ish8ness4t5eal7teD3d4ded5ing4enton4ford4ley4s4ycardia3e3g4gadocio;s6rt8s5ed6r7s6st5ingD5y4s3hma6n7ism7s5in3id5ed6r7s5ing5s4l5le4n5child5ier7st6ness6sh5lessC9ly9ness5power5s6ick6tem7orm:er:ing:s5teaser;s5wash9ed:r:s9ing5y4seD6d6s5ing3ke5d5less5man5s4ing4y3mble7s6ier8st6y3n4ch6ed7s6ing4d5ed6isC6nburg6r7s5ies6ng6sh8ed9r:s9s8ing5on5s5y4s4t3s4h5er6st5ly5ness4iliaD4s5ard5ier8e9s7st6ly6ness5y3t4s4tiness6sh5le7d6ing5y3unfels3va5do7esE7s4e5d5ly5r6y5s6t4ing4o5ed6s5ing5s4ura3w4l5ed6r7s5ier7st6ng5s5y4n5ierB7st6ly6ness5y3y4ed4ing4s3ze5d5n6ed6ing6ly6ness5r6s5s4ier7s5l6ian9sC5ng4os4zaville2each6ed7s6ing4d5able5basket6oard5ed5fruit5ing5s6tuffB:s5th5winner;s4k5able6ge6way5down9s5er7s5fast9s5ing5neck5out5pointD:s5s5throughs7genic7provocation7scopes:zes8ed7y5room9s5y3ude6tte5ia4se6sD5trophobia=c3w4s3y4ton2ean5ed5ing5s4r5ed6r6st5ing5ly5s3ment3o3velandC5r2iff5ord4ton3mate7s4b5ed5s3nic6al8ly6ian9s6s4t5on3p4ped5ing4s2ockC5ed5ing5s5wise3nic3se5d5ly5ness5r5s4ing4ure3t4h5ed6s5ing4s4ted3ud5sB5y2ub4bed5ing4s3msy3ster7s2yde1oach5ed6s5ing3l4esce8d8s4s3rse6r6stC3st5ed5ing5s3t4ed4ing4s3uthor8ed8s3x4ial2chlea3kpit7s4tail8s3onut7sB2d3e4d4ine4r5s4s3ing2efficient;s3ur2ffee2gnitive2here6d6nce7t8ly6sI5ing4sion2il4ed4ing4s3n4cide8d8nt:s8s7ing4ed4s2ld4s3ette3gate3in3laborateE;s:ing;on=s;ve:ord>s=ion@s6lateral6ry6st8ed8ing8s5ibute:d:s9ing:onBs5na2sine3t4a4lyC4s2te3tage7s4on6s2ugh5ed5ing5s3ld5n't4ee3ncil7s4t5ed6r7act7balancedB7clockwise7part;s7s5ies6ng5ries6y5s5y3ple6d6r6s5ing3rage4se6s4t5edB6ous9ly9ness5ing5s2variance7tes3entry4r5age8s5ed5ing5s3ina2w3boy6sB3girl7s3orker8s3s2zumel1rack5ed6r7s5ing5s3ft5s5y3ig3ndall4e5d5s3shC5ed6s5ing3ter3wl5ed5ing5s2eam5ed5s4se6d6s4te6d6s5ing7ine6on8s5ure8sD3dit6s3ek3ighton3scent8s3w4ed4s2ied4s3me5a6n5s3ses4is3teria7on4ic6alB8ly6ism9s6s5que8s2oatia7n8s3ix3oked3p4ped4s3ss5e6d6s5ing3uch3wd5edB5ing5s2ude5ly3ise6d6r7s6s5ing3mble7d7s6ing3sh5ed6s5ing4t5s3z2y3ingB3ptographic3stal7s1uba4n5s3e4d4s3ic2cumber8s2e3d3s2ff4ed4s2lture7sC2mberland6some3ulate7ing8on8ve2p3board8s3s2racao3e4d4s3ing4ous7ly3lG4ed4ing4s3rent7ly7s3se5d4or3t4ain7ed7ing7s4is3ve5d5s4ing2shion7s3todianF9s6y5m6arily8y6er8s6ization8e9d9s8ing6s2t3aneous3e3off6s3s3ting2yahogaB1yanide4otic2cle5d5s4ic6al5ng4opropane2linder8s6rical2nthia2pher6sB3rus2ril3us2stic1zechoslovakia>n?s0d'alene3zur1ad3s2ilies4y3ries4yB3sy2kar3ota2le3las2mage6d6s5ing4scus3e3on3p4ed4ing2n3a3bury3ce5d5sC4ing3ger6ous9ly6s4le6d6s5ing3iel6le4sh3ny3ube3zig2phne2rcy3ien3k4enB6ed4ly4ness4room8s3la4ene3rell3t4ed4ing4mouth4s3win2sh4ed5s4ing2taB4base8s3e4d4s3ing2ughter8s2ve4nport3id2wn4ed4ing4s2y3s3time4on6a1eF2activating3d4locks5y4space3f3l4er6s4ing4s4t3n4na3r4born4s3th5s3uvilleC2bate6d6s5ing3bie3orah3ra3t4or4s3ug5ged6ing5s2cade6s4tur4y5ed5ing5sB3eased4it4lerate9ion4mber4nt6s3ibel7s4de6d6s5ing4mal7s4phered4sionE8ed8s6ve3k4ed4s3laration;s6e7d7s6ing4ine7d7s6ing3ode6d6r6s5ing4mpressB:ed;s:ion4ngestant4rate8d8s7ing3rease8d8s7ing5ment9ed9ing9s2dicateE8d8s7ing3uce6d6s2em4ed4s3p4ened6s5r5st4ly3r2face6d6s5ing4ult7ed7s3eatB6ed6s4ct6ive9ly6s4nce7s5d6ed7r8s6ing6s4rred3ibrillate;ion4cienciesC9y6t7s4nable5e6d6s5ing6te8ly7ion:s8ve:ly3lated4ection2gradation;s6eC7d7s6ing4ee6s2hydrate9d9s8ing6ogenase2irdre2laware4y5ed5ing5s3egateE8d8s4te6d6rious6s5ing6on8s3hi3iberate:s9ing:ons:s4ssociateing?on6fort5nnect:ed:ing:s6tinuation:e;d;s:ing;tiess:r;s:s9ing5vate9d9s8ingD;ly9on;s4egate9d9s8ing9on;al;s9ve;ly5ss7ed8s7ing8on:s8ve:ly:ness9ityB7or9s4ieve8d9ly8ment8s7ing2hast2ile5ly5ness4ities6y3ng3tate7d8ly7sB6ing7on9al9s7ve6o7r8s2lare3eam4t3itter3ow2nate5ic7ally6on3es3ize6dD5ing3ostic8ism8s3us2o3g4ue3n4al4ic5es5st7ic9al;ly5ze7d7s6ing9ly4y3raE5e5phobia:c5s3uti6s2raphia4rian8ism8s3ee5ability7le9ness8y5d5ing5mentE9s5s3ibusiness4culturals9e:dB:r:s9ing7y5retto:s6o7s4le6s5ic5uia4mande4n5town4rgen8ic8s6ic7es7stC9s6y4viate9d9s8ing9on;s8or:s4y5s5way8s3hallows4eal3iaceous5nce8s4edC5s4gator9s4terate:d:s9ing:onlys8ress3er5gris5s3iance4dexterity8rously7s3heim3l4cite4ecta7s5mma8tic5ptic4gesiaD8c9s6tic4ity4ly4og6ic8al:ly7es7st7ze9d9s8ing6ous9ly9ness6ue8s6y4ysesC6is6t7s5tic8al:ly8ity8s5zabilitiess;y8morphicC?ally>sm>ze@d@s?ing8sophy3i4aircraft5nxiety4bacterial6llistic5ioticB:ally:s5odies7y4c5atalyst5hrist:s5ipant8table9e:d:s9ing:ons;ive6rivative5iuretic5otal9ly7e8s4electron4fertilityE5reeze:s4gen7ic9ally9ity7s5lobulin5ravity5ua4hero8es8ic:ally5istamineB=ss5honalC:ly8ies8y5odal7e8an8s6etic6llution6verty5roton5yretic;s4quarian;ismC;s9es8y7te9d9s8ing9on;s6e7d7ly7ness7s6ing7ties8y4s5epsis7tic:ally:sC6rum5ocial:ly5pasmodic5tatic5ymmetric4tank5heses8is7tic:als9ing5ssed4ise7d7s6ing5ze7d7s6ing4oach8abilities>y:le8ed9sB8ing5bate9d8ing9on;s5priate;d;ly;ness;s:ing;on=s;ve:orly;st=s:y5ic7ally6sm8s7t8icH8s5ngel9s4bishop:ric=s:s4deacon:s5iocese;s5ucal7hess;es8y6ke8s4ed5nemiesE8y5ology5r6ies6s6y5s5type9s8icals;s3ute6lyF6ness2under2ylum6s3mmetric:als;or=s9ities;y4or6ed7ss9es6ial7ng7tarian=ism=s9tiveI=ly=ness8ies8y7zation=s8e9d9r:s9s8ing6s7hip3ism5tic8ally3o4bahn5iographerB>sal@ly=ess;y8phage=s7um2d3die6s4y3e4n3ge5d5r6ed6ing6s5s3inage3land7s4y3mintonC4outh8ed8ing8s3ness2ffin4le6d6ment:s6r7s6s5ing8ly8ness2g3asse4telleF9s3el5s3ful6s3gage7s4ed5r6s4ier6st5ly5ness6g4y3hdad3pipe7r8s7s3s3uetteB8s2h3ama6s5ian8s3rain4ein2il4able4ed5e5r6s4iff7s5ng5wick9s4ment4orD5ut4s5man6en3t4ed5r6s4ing4s3ze2ja2ke4d4lite4r5's5ies5s6field5y4s3ingC2laclava4klava4laika9s4nce7d7r8s7s6ing4s3boa4riggan3conied8s6y3d4erI6dash5st4head8s4ing5sh4ly4ness4win3e4d4ful7ly7ness4r5s4s3ing3k4an6izationD=s8e9d9s8ing6s4ed5r6s4ier6st5ness6g4s4y3l4ad6eer9s6ic7st6ries7y6s5stB7ed7ing7s4ed5rina9s5t6ic6s4ing5stic9ally9ians9e:d:s9ing4oin3ed4l5s4r5ies5s5y3fin4ront3head3ie4ngC3knot3l4ed5g6ged5r6s4ful4ine7s6g4s3man3s4prit4tring9s3wow3yer2x3carC6s3ed4r5s4s3ful6s3ier5st4ness5g3like3wood3y2y3's3ar5d5s3cott7ed8r9sC7ing7s3d3friend9s3hood3ish6ly6ness3ne3s4enberries:y2zeman3o1ra3bbleD7d6ing3ce5d5let8s5r6s5s4hial4ing7ly4ken6t7ed7ing7s5ish8ness4t5eal7teD3d4ded5ing4enton4ford4ley4s4ycardia3e3g4gadocio;s6rt8s5ed6r7s6st5ingD5y4s3hma6n7ism7s5in3id5ed6r7s5ing5s4l5le4n5child5ier7st6ness6sh5lessC9ly9ness5power5s6ick6tem7orm:er:ing:s5teaser;s5wash9ed:r:s9ing5y4seD6d6s5ing3ke5d5less5man5s4ing4y3mble7s6ier8st6y3n4ch6ed7s6ing4d5ed6isC6nburg6r7s5ies6ng6sh8ed9r:s9s8ing5on5s5y4s4t3s4h5er6st5ly5ness4iliaD4s5ard5ier8e9s7st6ly6ness5y3t4s4tiness6sh5le7d6ing5y3unfels3va5do7esE7s4e5d5ly5r6y5s6t4ing4o5ed6s5ing5s4ura3w4l5ed6r7s5ier7st6ng5s5y4n5ierB7st6ly6ness5y3y4ed4ing4s3ze5d5n6ed6ing6ly6ness5r6s5s4ier7s5l6ian9sC5ng4os4zaville2each6ed7s6ing4d5able5basket6oard5ed5fruit5ing5s6tuffB:s5th5winner;s4k5able6ge6way5down9s5er7s5fast9s5ing5neck5out5pointD:s5s5throughs7genic7provocation7scopes:zes8ed7y5room9s5y3ude6tte5ia4se6sD5trophobia=c3w4s3y4ton2ean5ed5ing5s4r5ed6r6st5ing5ly5s3ment3o3velandC5r2iff5ord4ton3mate7s4b5ed5s3nic6al8ly6ian9s6s4t5on3p4ped5ing4s2ockC5ed5ing5s5wise3nic3se5d5ly5ness5r5s4ing4ure3t4h5ed6s5ing4s4ted3ud5sB5y2ub4bed5ing4s3msy3ster7s2yde1oach5ed6s5ing3l4esce8d8s4s3rse6r6stC3st5ed5ing5s3t4ed4ing4s3uthor8ed8s3x4ial2chlea3kpit7s4tail8s3onut7sB2d3e4d4ine4r5s4s3ing2efficient;s3ur2ffee2gnitive2here6d6nce7t8ly6sI5ing4sion2il4ed4ing4s3n4cide8d8nt:s8s7ing4ed4s2ld4s3ette3gate3in3laborateE;s:ing;on=s;ve:ord>s=ion@s6lateral6ry6st8ed8ing8s5ibute:d:s9ing:onBs5na2sine3t4a4lyC4s2te3tage7s4on6s2ugh5ed5ing5s3ld5n't4ee3ncil7s4t5ed6r7act7balancedB7clockwise7part;s7s5ies6ng5ries6y5s5y3ple6d6r6s5ing3rage4se6s4t5edB6ous9ly9ness5ing5s2variance7tes3entry4r5age8s5ed5ing5s3ina2w3boy6sB3girl7s3orker8s3s2zumel1rack5ed6r7s5ing5s3ft5s5y3ig3ndall4e5d5s3shC5ed6s5ing3ter3wl5ed5ing5s2eam5ed5s4se6d6s4te6d6s5ing7ine6on8s5ure8sD3dit6s3ek3ighton3scent8s3w4ed4s2ied4s3me5a6n5s3ses4is3teria7on4ic6alB8ly6ism9s6s5que8s2oatia7n8s3ix3oked3p4ped4s3ss5e6d6s5ing3uch3wd5edB5ing5s2ude5ly3ise6d6r7s6s5ing3mble7d7s6ing3sh5ed6s5ing4t5s3z2y3ingB3ptographic3stal7s1uba4n5s3e4d4s3ic2cumber8s2e3d3s2ff4ed4s2lture7sC2mberland6some3ulate7ing8on8ve2p3board8s3s2racao3e4d4s3ing4ous7ly3lG4ed4ing4s3rent7ly7s3se5d4or3t4ain7ed7ing7s4is3ve5d5s4ing2shion7s3todianF9s6y5m6arily8y6er8s6ization8e9d9s8ing6s2t3aneous3e3off6s3s3ting2yahogaB1yanide4otic2cle5d5s4ic6al5ng4opropane2linder8s6rical2nthia2pher6sB3rus2ril3us2stic1zechoslovakia>n?s0d'alene3zur1ad3s2ilies4y3ries4yB3sy2kar3ota2le3las2mage6d6s5ing4scus3e3on3p4ed4ing2n3a3bury3ce5d5sC4ing3ger6ous9ly6s4le6d6s5ing3iel6le4sh3ny3ube3zig2phne2rcy3ien3k4enB6ed4ly4ness4room8s3la4ene3rell3t4ed4ing4mouth4s3win2sh4ed5s4ing2taB4base8s3e4d4s3ing2ughter8s2ve4nport3id2wn4ed4ing4s2y3s3time4on6a1eF2activating3d4locks5y4space3f3l4er6s4ing4s4t3n4na3r4born4s3th5s3uvilleC2bate6d6s5ing3bie3orah3ra3t4or4s3ug5ged6ing5s2cade6s4tur4y5ed5ing5sB3eased4it4lerate9ion4mber4nt6s3ibel7s4de6d6s5ing4mal7s4phered4sionE8ed8s6ve3k4ed4s3laration;s6e7d7s6ing4ine7d7s6ing3ode6d6r6s5ing4mpressB:ed;s:ion4ngestant4rate8d8s7ing3rease8d8s7ing5ment9ed9ing9s2dicateE8d8s7ing3uce6d6s2em4ed4s3p4ened6s5r5st4ly3r2face6d6s5ing4ult7ed7s3eatB6ed6s4ct6ive9ly6s4nce7s5d6ed7r8s6ing6s4rred3ibrillate;ion4cienciesC9y6t7s4nable5e6d6s5ing6te8ly7ion:s8ve:ly3lated4ection2gradation;s6eC7d7s6ing4ee6s2hydrate9d9s8ing6ogenase2irdre2laware4y5ed5ing5s3egateE8d8s4te6d6rious6s5ing6on8s3hi3iberate:s9ing:ons:s4ssociateing?on6fort5nnect:ed:ing:s6tinuation:e;d;s:ing;tiess9e:d:s9ing7ly7sC8hip;s6te8d8s7ing8on:al:s8ve7or9s5ic7ally7ness7s5osity6us8ly8ness4sD5ee6s5is4t5ic7al9ly7ist:s7s5s4va5ieve3ial6ity6ly4culate:d4e5s4tal7iaC7ly7s5ive5ourinary4us6es3oa4cidal7e4me6s4type8s7ic9al;ly3re5s3t4eelB7ism7ly7ness4ian5le7s6ities8y5sic4le6d6folk6man9liness:y7en6ness6rE6s7t6woman9en5ing5y4rification7y5y4s3uflect9ed9ing:ons9ed9ing9or;s9s4ication;s6it8ly5ed6s4y5ingD3ort6ance8t9ly6ed6ing6s4se6d6s5ing5sible4tence3ractical4ess7ed8s7ingD8on:s8ve4oper8ly5ve7d7ment;s7s6ing3ulse7s6ive9ly1n2ability3ccuraciesE9y8te:ly4tivate:d:s9ing7e3dequate:ly4vertent;ly3ppropriate=ly2cessantB9ly3h4es3idence9s7t8ally8s4sion8s3lined4ude7d7s6ing5sion7ve9ly3omeC6s5ing5patibilities>y:le6lete:ly4nclusive5sequential6istent5tinenceC:t;ly5venience=ss;t4ordination4rporate;d;s:ing;on5rect9ly3rease8d8sF7ing:ly5ment9al;ly9ed9ing9s3ur5red5s2decision8ve4ed4finite:ly4nt6ationC;s6ed6ing6s4pendence:t;ly4x5ed5ing3ia5n6a7polis6s4cate8d8s7ing8on:sB7or9s5es4es4gnantly4rect8ly4stinguishable4vidual:izationsC9e:d:s9ing7ly7s6te8d8s7ing8on:s8ve:s2ject6ed6ing7on9s6s3ure6d6s5iesE6ng5y2k3ed3s2let5s2n3er5most3s4bruck3uendo8s2operative3rganic2patientC9s3ut5s2quire7d7s6ing5sitive2sane6ly3ect6s5ure7ities9y4nsible4rt6edE6ing7on9s6s4t3ide6s4ght7ful7s5nificant4stant6ing3oluble4mnia8c9s3pectB7ed7ing8on:s7s4irate8ion8ory6e7d7s6ing3tall7ations9ed:r;s9ing9s5relatednC:ionship6upt9ed9ing:onlys;y3plach2ill3shna2ona4e6E5r4or2ugerrand:s2ypton1u2dos3u3zu2lak3tur2mquat7s2ng2rd4ish6tan4s3ganaC3sk3t3u2sh2wait6i1vass1wacha3jalein3nza3shiorkor1yat2le2mograph2oto5D2rie0la2b3anon7ese3el5ed5led6ing5s3or5atories9y5ious5s3rador3s2ck4edB4ing4s3tate4ic2dder6s3en3ies3y2fayette2g3os2hore2id2ke4s2mb4da4s3eC3ont3p4s2na3cashire6ter4e3d4ed4ing7s4s3e4s3guage8s3ka3sing2os2plandgC2ramie3edo3ge5ly5r5st3ry3s3yngeal6oscopy5x2s3er5s3t4ed4ing4ly4s2tch>C5es3e4ly4ncy4r5al4st3he3in5s3ter4ice7s3via2uderdale3gh5ed5ing5s5tersB3nch6ed7s6ing4der7ed7s5ries6y3ra4el5n3sanne2vatories7y2w3n3rence3sD3yer6s2y3er5s3out6s2zy1dh1ead4er6s4ing4s3f3gue6s3kage4ed4s3n4ed4s3rnE5ed5ing5s3se4t3ther3ve5nworth5s4ing2cture7d7r7s2d3ge5s2e3ward2ft4mostlD2g3al3end6s3islation9ve;s3s2iden3gh3la2na3d4s3gth6s6y3ient4ngrad3oreC3t2o3n4ard4e3pold2promatous5sy2roy2sion6s3lie3otho3s4en6ed5r4on6s3t3F4er2t3's3hargic7y3s3ter6s4ing4uce2vel5s4r5s2w3is5ton2xington2yden1hasaH2otse1iabilities8y3ison2beria3rarian7es6y3ya5n2cense7d7s6ing6ure2docaineC2e3chtenstein=er3ge3s2fe4saving5tyle9s3t4ed4ing4s2ght5ed6r7s5ing5lyeB5ning5s2ke4d4lihood:s5y4ned4s4wise2la3lian2ma3b4s3erick3it5ation:sD5ed5ing5less5s3oges2ncoln3da4en4say3e4ar6ity6ly4d4n5s4s3ger6s4uisticB:s3iment8s3k4age7s4ed4ing4s2on4el4s2p3s4tick2quid6ation;s6s2sa3bonF3t4ed5n6ed7r8s6ing4ing7s4s2t3er5al7ly7s6ry6ture5s3huania3igation3teredE4le2ve4d4ly4r5pool4s3ing1lewellyn2oyd1oa3d4able4ed5r4ing4s3n4ed4s2bariD3e4s3ster7s2cal5e6s5ized5ly5s4te6d5ing6on8s3k4ed4ing4s2dging7s3i2ftyC2g3arithm9ic;ally9s3book3ic5al7ly4stic3s2ire3s2la3ita2mas3bardy3ondyD2ndon6derry3e4ly3g4er5st4itudinal2ok4ed4ing4s3p4ed4s3se5ly4ing2renzoE4tta3raine2s3e3ing3s4es3t2t3s3ty2ud4ly4speaker;s3is5e5iana5ville3rdesrC2ve4d4ly4s2w3ell4r5ed5ing4st3ly3s1td1ubbock2cas3erne3ian4lle4nda4uslB3k4y3y2ella2fkin2is2ke2mber3p4ed4s2nch5es3g4es4s2re4s2sitania2therC2xembourg:er6urg9er3urious9ly1ydell3ia2ing2le2mphocytes2nchburg3donsG3n2ons0ma2artin2bel2cadamia4o4roni3edonia3hine7ry7s4u3kinac3on3roscopiceC2d3agascar4m5s3e4ira4line3ge3ison3ras4e4id2gazine8s3ellan3gie3ic5lyeB3nesium5t6ic7zed6s4ification5tude9s2il4ed4ing7s3n4e4ly4tain8ed8ingE8s5enance4z2jor5ca5ity2kalu3e4rs4s4up3ing2lacca4ga6sy4wi4y5a5sia3colm8C3distribution5ve3e4s3function;ed;ing;s3i4gnancy3practice3ta2ma4's4s4D3mals4oth2n3's3age6able6d6ment6r7s3cha5ester5uria9n:s3datory4y3euverB8s3ganese3hattan3ifestation=s8ed5old8s4la4pulate:d:s9ing:ons8gramss9e:d:s9ing7ly7ness7sdB5e6d6s2ugatuck4ht6ier8st7ly7ness6s6y3sea6te8d8s7ing:ly5ous8ly8nessB3tical8ly5li6us8es2vajo6s4l4rre3e4l5s4s3ies4gabilities;y7le8y6te8dC8s7ing8on:als9e:d:r;s:s9ingD7ly7ness7s5ino8s5on7s6phil:s2vada3er5more5theless3ille3us2w3ark3bornF7s4urg3comer8s3el5s4r4st3fangled:ness4ound8land3ish3ly5wed8s3ness3portB3s4agent4boy7s5reak4cast8er:s8ing8s4dealer4ier6st5ness4less6tter:sF4magazines5tting4inding5odegradable5ting4lackvC4ook4reakable4usiness3cancelable8rous6didacy:te5rcinogenic6diac6eerlE5sh4e5llular5ntral4halance9t:ly6racter5emical4itizen4lassical4oerciverC5gnitive5llapsible7ectible8ge9iate5m6bat9ants6mercial=lysB7issioned8ttalory6tinctive5viding4rinker:s8ing5ying4urable3esB4conomic4ducational4ffective4lastic5ected8ive8ric4mergency5piricalE4nforceabilityslyC4ked5id4lip4moker9s4ocial4peaking6cialist=s8fic;ally7ulative5ortingaB4tandard6rter5eroid:al5ick5op5udent4ubscriber=s;ing5ch5it5pport:erB:ing4wimmer4yllabic5mpathizer5stem3target5xable4eaching5chnicals9ward=s4on3walk5y4egian9s4ich4ood2se4band5leedE9s4clip8s4d4gay4piece9s4s4y3h4er6s3ier5st4ly4ness5g3talgia8c9ally4rilbC7s5um7s3y2t3ability5le7ness6y4rial6es6zations;s9ve;ly;ness8or:s8s2tain6ability8le6ed7r8s6ing6ment6s3ect6ed3rudeC7d7s6ing5sion9s7ve9ly9ness3und4rate7ion7or4se6ly6ness6r6st2verse7lysC3iate7d7s6ing7on9s6or8s4ous7ly7ness1cala2casion8al:ly8ed8s3ident8al4E:ly4pital3lude7d7s6ing5sion9s7ve3ult6ation6ism8t9s4pancies8y7t8s6tion6B:alal@ly=st?ss=ic2iate6s3ne5d5r6s5s4g4ing5on7ated;lyB;ness9ivelyBly;st=s:y2ogenic6yB3tund7ity2phan6age9s6ed6ing6s4eus4ic6ally2son2thodontia:c;s:stly:y5pedic:ally:s9st;s5tic8ssE2ville2well6ian2yx4es1sage3ka2car5s3illate9d9s8ing9on;s8or:s:y6oscoperBst@s=y4ith3sclerosis2tawa3er5s3o4man7s3umwa1ubliettebD9s2ch4es2ght2ija2nce5s2r3s4elf6ves2st4ed5r6s4ing4s2t3achieve:d:s9ingF5t4ge6s3back5lance:d:s9ing5rgain:ed:ing:s4id6ding6s4luff8ed8ing8s4oardC8s5und5x4rag6ve5eak8s6d6ed8ing8s4uilding;s5lk5rst8s3cast7s5tch5ught9D4harge9d9s4lass8ed9s8ing5imb4oach8ed9s8ing5me7s6pete5unt4ries5op7pedC8ing7s6ss5y3dance8d8s7ing5ted4ebate5liver5sign9ed9ing9s4id5stance;dgC;s:ing4o5es5ing5ne5or7s8man;ship9en8y4raw5ess8ed9s8ing5ink6ve8s4uel9D3earn5t4r5most5wear3face7d6ing5ll4ield8er:s8s5ght8ing6ure5sh5t6s6tedC8r9s7ing4lank8ed8ing8s5ow7s5y4ought5x6ed7s6ing3gain5s4eneral:ed:ing4E:s4o5es5ing4rew5oss6w7ing7n7s7th9s4uess8ed9s8ing5n3haul4it4ouse8s4untD5stle9d9s8ing3ing6s3jump7ed7ing7s3kick7ed7s3laid5nd7er9s7ish:ly:nessC7s5st7ed7ing7s5w6ed6ing6ry6s5y6ing6s4et6s4ier5ne7d7s6ing5ve7d7s6ingC4ook7s4ying3man6euver6ipulate=d=s5rch5tch4ode7d6ing5st4uscle3numberB9ed9ing9s3organize3pace5ss5tient:s4erform:ed:ing:s4itch4lay7ed7ingB7s4oint5ll7ed7ing7s5rt5st7s5ur7ed7ing7s4ray5ice5oduce:d:s9ing6miseB:d4ull5nch8ed9s8ing5t6s6ted7ing3race5ge7d7ous:ly:ness7s6ing5n6k5teC4e5ach8ed9s8ing4idden6e7r8s7s6ing5gger9s6ht8ly5val4oar5de5w4un6ning3C6s5sh3s4ail7ed7ing7s4cheme9d9s8ing5ore4ell7ing7s5t4hine8d8s7ing5onelB6ot8ing6t6ut4ide7r8ness8s7s5ght5ng5t5ze7d7s4kate8d8s5irt8s4mart8edC8ing8s4oar5ld6e4parkle:d:s9ing5eak6nd7t5oken9ly9ness5read9ing9s6intlE4tand8ing;ly6re6tion6y5ood5retch:ed6ip8ped9ing8s4wim3take5lk4hink8inglB8s5row4rade4urn3vote3wait5lk5rd7ly7ness7s5tch4ear7ing7s5igh8ed8ingF8s4it6s6ted7ing4ork7ed7ing7s6n4restle5ite3yell4ield2zel3o1va3l4ly4nessH4s3rial6n5es4y3te4ion7s2en4proof4s3r4abound6undance=s;t5ccentuate6hieverHd5harge:d:s9ing5ivilized5laim7ssification;y6oud9ed9ing9s5oach7tE8s6me8r8s7ing7mercialization@e@ed@es8it:ment7pensate>d>s=ing>on@s=oryeC8lex9icate>d>s=ing6ncentrate7fidences6ote8ional6phasis;ze=d=ss5valuation5xaggerate>d>seE=ing>on6cite6erciseally5rchestrate6ganize4paid6ss8es6y7ing7ment7s5ersuade5lan8t7yE8ed8ing8s6us5opulated>s8ulatey4ssC4ways3ient7's7ly7s8'3ricia6k4ol6s3tern7s4y3uxent2ul4a4ette4ine4o3setD5d5s4ing2ve4d4s3ing2wtucket2y3ers3ing3ment7s3s1ea3ce5fully4h5es3k4edC4ing4s3nut6s3r4l4s3s2cos3toral3uliar8ity2dernales3ro2ekskill3l4ed4s3E3nemunde3r4s2g3gy3s2king2n3alized8s5ties6y3ce4il6s3ding3elope4trationnE3nies4sylvania4y3obscot3s4acola3tobarbital5xide3zance2ople6s3ria2pperuC6s2r3ceive8d8s5nt7age:s5ptable7ion:s7ual:ly4h4utaneousic>y3ura6l2ot4able4s4ted6r7s5ing2uck5s3g4ged5ing4s4C3ral3s4h2ymouth1neumatic5onia6tachograph7horax1ocatello3ket6s3ono6s3D2d3s2em4s3t4ry4s2int5e6d6r7s5ing5s3soning6ous2land4r5ity3e4s3ice6manB7en6woman9en5ies5y4o5myelitis4sh6ed7s6ing4tical9ly3len4y3ycythemiaB4ethylene4gon7al7s4nesia4somnographic>y4thene2merania3pano4eii2ncaB3d4s3tchartrain4iac3y2ol4ed4ing4s3r4er4ly2p3corn3s3ular6tion:s2rchF5es3e4s3k3t4able4er4ion7s4land4rayed4s5mouth4ugal6uese2se4d4s3ing4tionH8al:ly8ed8ing8s6ve8ly3sess7es7ing8on:s4ibilities:y6le7y3t4bronchodilatorB4doctoral4graduate4humous:ly4mortem4poned4s4treatment4ulated8ing2tB3assium4to6es3ent6ial9ly7ometer=s3omac4si3sdam2ultry3nd5s3r4ed4ingG4s2wder6ed6ing3er5ed5ful5s1pm1racticable8l9ly7e8s3irie7s2eamble5plifierkF3bronchodilator3calculated5ution4ede7d7nce8t7s6ing4ious5se7ly6ion4ludeC8s3defined5termined4ict7able7ed7ing8on:s8ve7or7s5spose:d4ominant;lylE3existing3face4er6able9y6ence8tial6ing6red6s4ix3gnancies8y3liminariesG:y3mature9ly4ise7s3paration;s6e7d7s6ing4onderance4rocessed:ing:or3scottrB5ribe9d9s7ptions8ed9s7y8ing6tatively6t7sD7te5illion;s5s5uple9d9s9t:s8ing3p4ped5ing4s5ter8s4u3re5s4k5ier7st6lyC6ness5s5y4t3sling3t4claim4e4rent4s4tance9s5ed6r7s5ing3ver6ed6ing9lygC6s3xote6ic8al:ly3z4master4zed6r7s6s5ical9ly9ness6ng2m2o3in4t5s3ndam6D4set3rum6s3ta5bilities:y6le8ness5s5tion9s4e5d5r6s5s4h4idian5ent8s5ngC0rabat3bit6s2ce4d4mic4s3hel3ial4ne5g3k4ed4ing4s2dial5n6s5te7d7s6ing8E7on4o5graph:s5isotopes9ed9ing9sE4nsider:ing:s6tituted7ructed;ing4rd6ed7r8s6ing9s6s4unted5rse4ver7ablesC7ed7ing7s7y3reate8s7ional4uit7ed7s3tal5ngular4ification7ed8r3urrent8D5sive9ly2d3ding3efinable7e7ing4sign3irect8ed8ing4stributess9ed9ing9s4int7s4ocess9ed:s5duce9d9s8ibility:le;y9ng3tileyC7s3utation:s2quest7ed7ing7s4ire7d7ment;s7s6ing2record8ed2schedule:dbE:s4ue6d6s3earch8er:s9s8ing5t6ing4mbled4rvation;s6e7d7s6oir9s4t5s5tingeB3huffle9d9s3ide6d6nce9s8y7t8s6s5ual6e4gn6ation;s6ed6s4st6ance8t6orD8s6s3olution:s5ve7d7s6ing4nant6tors4rt6ing4urce8s3pecify6t7ed7ive:lyB7s4iration;s8or:s:y4ond7ed7ing7s6se8s7ibilities=y9le3t4art7ed7s4edF4ful4ing4less4ore7d7s6ing4rained8t5ict8ed8ing9on;s9ve8s4s4udied3ubmittC9ed4lt6ant6ed6ing6s4me6d6s5ing5ption4rrect9ed2tain6ed6s3ention3inallC4re6d6s3rievable8l7e8d8s4ograde5spectively4y3urn6ed6ing6s3ype6d5ingrC2uben3se5d4ing2veal6ed6ing6s4nue7s4rberation5sal8s6e7d7s6ible7ng7oniE5t6ed6s3iew6ed7r8's8s6ing6s4se6d6s5ing6on8s3olutionariess8ed9s7y5y3ulate8d8s7ing8on:s5taneousCs9ed:r9ing9s5ient9ly9s6stor:s6t7ion:s7s5kei5lateB9d9s8ion;s5missionism>sve=orG?s4dilatation9es9ion9or;s4line4motor4pressin9or;s4spasm8tic4tocin4vagaluB3sal6age6s3t4itude4ly4ness4y2t3ic5an5inal8te:d9ing:on9or3s3ted4ingD2udeville:s9ian3ghn3lt5ed6r7s5ing5s5y3nt5ed6r7s5ful5ing8ly5s5y2vasorC6ur2ward2x1cr1d1eal4er4y2ctor6cardiogram6ed6ial7ng6s2da4lia4nta7s4s6C3ette2e3p4s3r4ed4ies5ngly4s4y2ga4n5ism4s3etable9s8y6l6rian:ism:s6telC8d8s7ing8on:al