amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (03/16/91)
Submitted-by: barrett@server.cs.jhu.edu Posting-number: Volume 91, Issue 065 Archive-name: midi/mp-1.0/part02 #!/bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 2 (of 2)." # Contents: MP.DOC MP.uu # Wrapped by tadguy@ab20 on Fri Mar 15 14:25:14 1991 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'MP.DOC' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'MP.DOC'\" else echo shar: Extracting \"'MP.DOC'\" \(16064 characters\) sed "s/^X//" >'MP.DOC' <<'END_OF_FILE' XMP: A MIDI Playground XAuthor: Daniel J. Barrett, barrett@cs.jhu.edu. XNo Copyright: 100% Public Domain. X Please share this program with others. X XRequirements: A Commodore Amiga. XOptional: A MIDI Interface on your serial port. X 1 or more MIDI instruments. X (Without MIDI, this program is not very useful, except X perhaps as a source code example for serial port X programming and parsing input.) X XLegal stuff: Use this program entirely at your own risk. The author X bears no responsibility for any damage or data loss you X may incur through the use or misuse of this program. X X XGETTING QUICK HELP X X At the command line, type: X X 1> mp ? X XTABLE OF CONTENTS X XLine Section X=========================================================================== X 18 Getting quick help X 24 Table of contents X 46 What is MP? X 77 What is MP not? X 84 MP concepts X118 A first exercise X132 Formal usage instructions for MP X162 The input text language X237 Practicing with the text language X264 Using the file input/output options to make new windows X277 Using redirection X306 Translating binary data to/from text X318 Using an alternate MIDI interface X359 Problems you may have with MP X425 Notes about the source code X457 Notes about the program's internals (and limitations) X X XWHAT IS MP? X X Have you ever wanted to see what MIDI data your instrument is Xtransmitting? Have you ever wanted to send your own MIDI data to your XMIDI instrument? Then MP is for you!! X X MP (MIDI Playground) is a versatile tool for sending, receiving, Xand storing MIDI data. It has many uses: X X o Learning about MIDI. X X o Discovering your instrument's system exclusive data X format. X X o Testing your instrument's MIDI capabilities. X X o Acting as a patch librarian. (VERY VERY basic, though.) X X o Helping you write MIDI software. X X Essentially, MP is a "translator" program that understands 3 Xdata formats and translates between any pair: X X (1) English text X (2) Binary data X (3) MIDI data X XFormats (2) and (3) are really the same, but (2) is stored in files on your XAmiga, and (3) is transmitted via your MIDI interface. X X XWHAT IS MP NOT? X X MP is not a sequencer. It does not store any kind of timing Xinformation. MP simply sends and receives bytes in the order they are Xgiven. X X XMP CONCEPTS X X Like I said, MP translates between text, binary data, and MIDI Xdata. All you need to do is: X X (1) Choose a format for the input. X (2) Choose a format for the output. X (The input and output formats can be the same if you like.) X (3) Run MP. X XFor example, you can ask MP to use "text" as input and "MIDI" as output. XThis lets you type text in a very easy-to-learn language, and it immediately Xgets sent out as MIDI data. If you reverse these choices (input=MIDI, Xoutput=text), you can watch MIDI data appear on your screen in a simple Xbut readable format. X X Another use would be to use "MIDI" as input and "binary" as output. XThis lets you press keys and buttons on your instrument, and have all Xthe data stored in binary format in an Amiga file. To send the data back Xto the instrument, just use "binary" for input and "MIDI" for output! X X Yet another use is for MP to translate between binary data and Xreadable text. This can help you to understand the contents of a binary XMIDI file, or to create binary MIDI files by typing simple text commands. X(Note: this facility will work with ANY binary files, not just those Xcontaining MIDI data.) X X You can also ask MP to translate from one format to the same Xformat! For example, it can read MIDI data and "echo" it back to the Xsending instrument (translating MIDI to MIDI), copy binary files (translating Xbinary to binary), or let you practice with its text language (text to Xtext). X X XA FIRST EXERCISE X X Let's ask MP to translate from MIDI into text. Make sure your XMIDI synthesizer is hooked up properly to your Amiga. Type: X X 1> mp -im -ot X X(This asks MP to use MIDI input (-im) and text output (-ot).) X X Now go to your instrument and play notes, press buttons, turn Xdials, etc. You should see things appearing on your Amiga screen! To Xexit the program, type ^C (control-C) on the Amiga. X X XFORMAL USAGE INSTRUCTIONS FOR MP X X MP's syntax is: X X 1> mp -i{tbm} -o{tbm} [-g infile] [-p outfile] X XThe flags "-i" and "-o" are mandatory (they MUST appear, in any order). XThe flag "-i" represents input, and "-o" represents output. You also Xmust fill in the "[choice]" specifying text, binary, or MIDI. The syntax Xis: X X t Text X b Binary data X m MIDI X XFor example, to read text from the keyboard and send to MIDI: X X 1> mp -it -om X XTo read MIDI data and convert it to text: X X 1> mp -ot -im X XIf you would like to GET your input from a file (not the keyboard), you may Xspecify a file name with the -g option. Similarly, the -p option allows Xyou to PUT the output into a file (rather than the screen). The -g and -p Xoptions have no meaning, obviously, if your input and output are MIDI, Xrespectively. X X XTHE INPUT TEXT LANGUAGE X X If you do not already know what MIDI code looks like (for Xexample, hexadecimal 90 means "Note On, MIDI channel 0"), then this Xsection might not be useful to you yet. But feel free to try! X X MP understands many different kinds of text input. To use the Xtext input feature, you must learn a very simple syntax. If you are a XC programmer, you will recognize some of this language and feel right Xat home. (Don't worry... you don't have to be a C programmer to use MP! XIt will take a little practice, though.) X X MP understands NUMBERS (between 0 and 255) in: X X - Base 10 (decimal or "normal" numbers) X Just type the number normally. X Example: 123 X X - Base 8 (octal) X Precede the number with a zero. X Example: 024 X X - Base 16 (hexadecimal) X Precede the number with an "H" or the symbol "0x". X If the number begins with A through F, you can skip the X above symbols. X Examples: 0x2A H44 F7 X X - Base 2 (binary) X Precede the number with a "#". X Example: #10010110 X X All special symbols (such as "H", "0x", and the hexadecimal numbers X from A...F) are case-insensitive. That means capital and small X letters are equivalent. X XMP understands CHARACTERS as: X X - Individual characters. X Enclose in single quotes, like 'x'. X X - Character strings. X Enclose in double quotes, like "this is a string". X X C special characters (like '\n') are recognized both as individual X characters and in strings. X X If you type a RETURN in the middle of a string, it is interpreted X as a space character. (If you want a real newline character, use X \n.) If a string is too long to fit on your screen, break it into X 2 strings (or more), each surrounded by double-quotes. X X X All of these numbers/characters are automatically converted into Xbytes. As a result, you cannot specify a number with value greater than X255 (base 10) or less than 0. If you do, you will get an error message. X X MP also has a "comment" symbol. This lets you type text that is Xignored by MP. Any text following a semicolon (";") is ignored until Xthe end of the line. (This is just like the Amiga CLI comment symbol.) X(Of course, this does not occur if the semicolon is part of a character Xconstant or string.) X Why is a comment symbol useful? You can put text language commands Xin a file and send it to your MIDI instrument. Comments allow you to Xdocument the meaning of the contents of the file. For example: X X ; Send a C major chord on MIDI channel 0 X 0x90 60 127 64 127 67 127 X X X EVERY INDIVIDUAL NUMBER/CHARACTER/STRING/COMMENT THAT YOU TYPE XMUST BE SEPARATED FROM ITS NEIGHBORS BY WHITESPACE (blanks, tabs, newlines). XYes, even comments. This may change in a later version of the program. X X XPRACTICING WITH THE TEXT LANGUAGE X X Type the command: X X 1> mp -it -ot X XThis tells MP to translate from text into text, totally bypassing MIDI. XAs you type in the text language, you will see your data interpreted by XMP. To end MP, type control-C (^C). X X When you feel comfortable with the text language, try sending some Xdata to your synthesizer. Type: X X 1> mp -it -om X XHere is some data: X X H90 60 100 X XThis tells the instrument to play Middle C (note 60) at volume (velocity) X100, assuming the instrument is on MIDI channel 0. To turn off the note: X X H80 60 0 X XTo end MP, type control-C (^C). X X XUSING THE FILE INPUT/OUTPUT OPTIONS TO MAKE NEW WINDOWS X X On the Amiga, you can specify a NEW WINDOW as a file, rather than Xan actual disk file. The syntax is found in your AmigaDOS manual, under Xthe NewCLI or NewShell command. For example, to print your output in Xa 640x100 window, positioned at screen location (20,25), with window name X"MP-IN", you would use: X X 1> mp ... -g "CON:20/25/640/100/MP-IN" ... X XDo similarly for output windows, but use -p instead of -g. X X XUSING REDIRECTION X X You can use the CLI's INPUT REDIRECTION symbol to get input from a Xfile instead of from the keyboard. See your AmigaDOS manual for more details. XThe syntax is: X < filename X Xand it must appear immediately after the command name (MP). For example: X X 1> mp < infile -it -om X Xto send text data (translated to MIDI) from the file "infile" to the XMIDI instrument. X X Some sample input files are included with this program. X X You may also use the CLI's OUTPUT REDIRECTION symbol to send output Xto a file instead of to the screen. See your AmigaDOS manual for more Xdetails. The syntax is: X X > filename X Xand it must appear immediately after the command name (MP). For example: X X 1> mp > outfile -im -ot X Xto capture MIDI data (translated to text) into the file "outfile". X X XTRANSLATING BINARY DATA TO/FROM TEXT X X Suppose you have a binary file that you want to translate to Xtext. (It does not even have to be a MIDI data file!!) Just type: X X 1> mp < binaryFile -ib -ot X XIf you prefer to save your text results in a file, type: X X 1> mp < binaryFile > textFile -ib -ot X X XUSING AN ALTERNATE MIDI INTERFACE X X By default, the MP assumes that your MIDI interface Xis connected to your Amiga's internal serial port. If this is Xnot the case, you can override this by using an Amiga environment Xvariable and the SetEnv command. (See your Amiga documentation for Xfull details about SetEnv.) X X The name of the environment variable is MP_MIDI_DEVICE, and its Xvalue must be of the following format: X X 1) The name of the MIDI device driver, located in the X DEVS: directory of your system disk. It should be X something like "midi.device" or "serial2.device". X X 2) One colon character (':'). X X 3) The unit number for the device. If you have only X 1 port using the device, your unit number is probably X zero. X X Example: midi.device:2 X X Suppose you want to set up MP to use unit 3 the device X"AltMidi.device". Type: X X 1> SetEnv MP_MIDI_DEVICE AltMidi.device:3 X XTo check that the value was set correctly, type: X X 1> GetEnv MP_MIDI_DEVICE X X If you are using a MIDI interface attached to your internal Xserial, port, YOU MAY IGNORE ALL OF THIS STUFF. By default, MP uses Xunit 0 of the device "serial.device". X X I cannot guarantee that MP will work with whatever alternate device Xdriver you choose. But I have tested the environment variable mechanism Xitself, and it works. X X XPROBLEMS YOU MAY HAVE WITH MP X X I have tested these programs fairly well on my own equipment: XAmiga 1000, Golden Hawk MIDI Gold interface, and an Oberheim Matrix-12. XIf the program doesn't work for you, first check: X X(?) Is the file "serial.device" in the DEVS: directory of your system X disk? If not, MP will refuse to run, and you will see an error X message like one of these: X X Cannot create a message port. X Cannot create an extended I/O request. X Cannot open the MIDI device. X Cannot set the serial parameters. X X Boot your Amiga with an original Workbench disk and try again. X X(?) Are you running a version of the Amiga operating system that is X older than 1.3? MP should work with some or all earlier X versions, but I have not tested this. X X(?) Are your MIDI cables connected properly? Remember that MIDI OUT X must always be connected to MIDI IN, and vice-versa. X X SYNTHESIZER COMPUTER X ----------- -------- X MIDI IN <-------------------> MIDI OUT X MIDI OUT <-------------------> MIDI IN X X(?) Are you using the program correctly? Double-check the instructions X above. X X(?) Are you running another program that uses the serial port, such as X a communications program, printing program, or another MIDI program? X If so, this other program may be using the serial port. (MP X uses the serial port in "shared" mode so it doesn't hog the X serial port.) Exit your other programs and try again. If it X still doesn't work, reboot to make sure that your other programs X didn't accidently leave the serial port "locked". X X Some programs allow you to "release" their hold on the serial port X without exiting. (Example: Music-X.) This may be enough to allow X MP to run. X X If you run MP with the "-im" format (input from MIDI), you cannot X run MP a second time simultaneously. This is because the Amiga X serial port initialization routines will fail if there is another X program reading the serial port. X X(?) Are you running any other programs simultaneously with MP? X It is possible that a badly-written program could X interfere with the operation of other programs. Boot your Amiga X with an original Workbench disk and try again. X X(?) Is your synthesizer turned on? Seriously. This has happened X to me. :-) X XIf you are doing everything right, then there may be a bug in the Xprogram. For example, MP should NEVER crash your Amiga. If you Xbelieve that there is a bug, please contact me (electronic mail is Xpreferred). But first, try to reproduce the bug consistently. Can Xyou find a particular set of actions, keystrokes, etc., that ALWAYS Xmake the program crash? If you can, then I will be able to find the Xbug faster. X X XNOTES ABOUT THE SOURCE CODE X X The file "text.c" contains a good example of using a finite Xautomaton to read the text language and translate it into bytes. The Xcode is fairly robust and easy to modify. For example, I was able to Xadd "binary number" support in about 3 minutes, and "string" support in Xabout 10 minutes. X The theory of finite automata is extremely important for programmers, Xbut it can seem very "theoretical" at first. Believe me, it helps you Xwrite correct programs that are easy to modify later. X X The file "serial.c" contains serial port code that you are welcome Xto use. The function "DoTheIO()" implements asynchronous I/O in a very Xmultitasking-friendly way. The function "FastSerialRead()" is patterned Xafter Commodore's recommended method for reading the serial port quickly. XThe method is documented in the AMIGA ROM KERNEL REFERENCE MANUAL: XLIBRARIES AND DEVICES, for version 1.3 of the Amiga Operating System. X X The file "main.c" contains examples of using pointers to functions Xand pointers-to-pointers to functions. (The functions themselves are Xdefined in "iofunctions.c".) X X The file "getopt.c" contains my version of the powerful and useful XUNIX "getopt()" function. This gives the programmer a standard interface Xfor reading command-line options (flags) from the user. I have used this Xfile (unchanged) in a dozen programs. X X The "Makefile" is pretty generic. If you want to add a new Xfile to the program, just append its name (and its object file's name) Xto the SRC and OBJ macros, and type "make". X X XNOTES ABOUT THE PROGRAM'S INTERNALS (AND LIMITATIONS) X X MP uses a very inefficient method for sending MIDI data and Xreading/writing files: one byte at a time. This could definitely be Xmade faster, but takes some cleverness (and some internal buffering). XMP does read MIDI data very efficiently, though. X X This limitation is due to the byte-oriented nature of this program. XAlso, when the user is typing text, he/she wants immediate feedback from Xa MIDI device. I'm sure there is a better way to do this than my method. X X I did not build this program for large data transfers. It is Xmainly for transmitting small amounts of data for diagnostic purposes. XThis is why I have released the program before its I/O routines are Ximproved. END_OF_FILE if test 16064 -ne `wc -c <'MP.DOC'`; then echo shar: \"'MP.DOC'\" unpacked with wrong size! fi # end of 'MP.DOC' fi if test -f 'MP.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'MP.uu'\" else echo shar: Extracting \"'MP.uu'\" \(22805 characters\) sed "s/^X//" >'MP.uu' <<'END_OF_FILE' Xbegin 644 MP XM```#\P`````````#``````````(```\&```"&P````$```/I```/!D[Z(=Q(\ XMYS`@)"\`$!8O`!0D;P`62FR``F<>2&R``B\*'P,O`DZZ!=@"@````/]/[P`.- XM3-\$#$YU#((````_9@I.N@9*<``0`V#H#`,`!&82#((````B9@HY?``!@`)PQ XM!�+PH?`R\"80P"@````/]/[P`*8+Q(YS`@)"\`$!8O`!0D;P`6<``0`V``9 XM`18O"B\"3KH!(@*`````_U!/3-\$#$YU+P).N@7,`H````#_6$]@ZB\*+P).^ XMN@'(`H````#_4$]@V"\*+P).N@(,`H````#_4$]@QB\*+P).N@)0`H````#_F XM4$]@M"\*+P).N@*0`H````#_4$]@HB\*+P).N@.``H````#_4$]@D"\*+P).6 XMN@0D`H````#_4$]@`/]^+PHO`DZZ`M("@````/]03V``_VHO"B\"3KH"\`*`T XM````_U!/8`#_5B\*+P).N@0*`H````#_4$]@`/]"'SP`#R\*+P).N@0*`H``` XM``#_3^\`"F``_RAP`!`#8`#_(``"_\C_R/_(_M[^]/\$_TS_%O\H_SK_<O^&N XM``+_7O^:_ZX,0``19`K00#`[`-1.^P``8`#^ZDCG("`D+P`,)&\`$$'L@#\0] XM,"@`2(`(```$9PAP!$S?!`1.=0R"````.V8$<`5@[@R"````(V8$<`M@X@R"A XM````)V8$<`Y@U@R"````,&8$<`=@RB\"3KH>D@R`````2%A/9@1P"6"V0>R`8 XM/Q`P*`!(@`@```)G#B`"!(`````P%(!P!F"80>R`/Q`P*`!(@`@```-G,$'LQ XM@#\0,"@`2(`(```"9PH@`@2`````,&`.+P).NAXV!(`````W6$\4@'`*8`#_* XM6G`"8`#_5$CG(``D+P`(0>R`/Q`P*`!(@`@```)G)A\\``9(>``*($)(:/_0H XM+R\`%DZZ`BX"@````/]/[P`.3-\`!$YU0>R`/Q`P*`!(@`@```1G!'`!8.9PE XM`F#B2.<@`"0O``@,@@```#!M+@R"````-VXF'SP`"$AX``@@0DAH_]`O+P`6@ XM3KH!V`*`````_T_O``Y,WP`$3G5![(`_$#`H`$B`"```!&<$<`%@YG`"8.)(F XMYR``)"\`"$'L@#\0,"@`2(`(```#9S9![(`_$#`H`$B`"````F<*(`($@```C XM`#!@#B\"3KH=/`2`````-UA/(&\`#!"`<`I,WP`$3G5P`F#V2.<@`"0O``A!< XM[(`_$#`H`$B`"````V=*'SP`"DAX`!!![(`_$#`H`$B`"````F<*(`($@```) XM`#!@#B\"3KH<XEA/!(`````W+P`O+P`63KH!#`*`````_T_O``Y,WP`$3G5!O XM[(`_$#`H`$B`"```!&<$<`%@YG`"8.)(YR``)"\`"`R"````,&<(#((````Q3 XM9A8@`@2`````,"!O``P0@'`,3-\`!$YU<`)@]DCG(``D+P`(#((````P9P@,6 XM@@```#%F)A\\``Q(>``"($)(:/_0+R\`%DZZ`(0"@````/]/[P`.3-\`!$YU( XM0>R`/Q`P*`!(@`@```1G!'`!8.9P`F#B2.<@`"0O``@O`DZZ'!(,@````%A8+ XM3V8(<`E,WP`$3G4,@@```#!M&@R"````-VX2(`($@````#`@;P`,$(!P"C XM0>R`/Q`P*`!(@`@```1G!'`!8,1P`F#`2.<P("1O`!`D+P`4)B\`&"(#(#P`Q XM``#_3KHQ/G(`$A*P@6P(<`-,WP0,3G4B`W``$!).NB>4%(!P`!`2(CP```#_? XMDH*P@6\$<`-@VG``$!+0@A2`<``0+P`<8,I(YR``)"\`"`R"````7&8(<!!,@ XMWP`$3G4@;P`,$()P#V#P#*\````G``1F!'`!8`)P`@*`````_TYU2.<@("0O] XM``PD;P`0(`)@.D(28'`4O``'8&H4O``(8&04O``,8%X4O``*8%@4O``-8%(4; XMO``)8$P4O``+8$84@F!"<`),WP0$3G4$@````")G[%N`9^@$@`````EGL@2`? XM````+&?86X!GJE.`9ZQ9@&>N48!GL%F`9[)5@&>T58!GMF"^<``0+P`48+A(H XMYR`@)"\`#"1O`!)P`!`O`!!@5@R"````(F8.(&\`%D)0<`1,WP0$3G4,@@``S XM`%QF!'`18.Y![(`_$#`H`$B`"```!&<$<"!@`B`"%(!P`6#2'SP``2\*+P).' XMNO\8`H````#_3^\`"F"Z64!GI@1```UGWF"N#*\````*``1F!'`$8`)P!0*`^ XM````_TYU2'@`_TAZ`!!(;(%L3KH:A$_O``Q.=4E.4%54"4U%04Y)3D<*,2TY@ XM+BXN"41E8VEM86P@;G5M8F5R+@HP+BXN"4]C=&%L(&YU;6)E<BX*,'@N+BX)U XM2&5X861E8VEM86P@;G5M8F5R("AC87-E+6EN<V5N<VET:79E*2X*2"XN+@E($ XM97AA9&5C:6UA;"!N=6UB97(@*&-A<V4M:6YS96YS:71I=F4I+@I!+48N+BX)@ XM2&5X861E8VEM86P@;G5M8F5R("AC87-E+6EN<V5N<VET:79E*2X*(RXN+@E"9 XM:6YA<GD@;G5M8F5R+@HG>"<)5&AE(&-H87)A8W1E<B`G>"<N("!#(&-H87)AW XM8W1E<B!S>6YT87@@;&EK92!<;B!A;F0@7'0@:7,@=F%L:60N"B(N+BXB"4$@# XM=&5X="!S=')I;F<N("`H3F5W;&EN97,@='5R;B!I;G1O('-P86-E(&-H87)AE XM8W1E<G,N*0I,87)G97-T(&QE9V%L(&EN<'5T('9A;'5E(&ES("5L9"`H8F%S5 XM92`Q,"DN"D%L;"!V86QU97,@;75S="!B92!S97!A<F%T960@8GD@=VAI=&5SH XM<&%C92X*"@!(YR`@%"\`#"1O``YP`!`"+P!P`!`"+P!P`!`"+P!(>@!B+PI.X XMNABH+PH?`F%^$`)(@$'L@#\0,```2(`"0`#'3^\`&F<4<``0`B\`2'H`42\*: XM3KH8>D_O``P@4K'J``1D#B!24I(0O``*<`!P"F`,2'@`"B\*3KHK&E!/3-\$' XM!$YU1&5C("4S;&0L($]C="`E,VQO+"!(97@@)3-L6``L($-H87(@)R5C)P``- XM3E7_]DCG,`!T`'``$"T`"'(!Y:$F`,:!2H-G!'`!8`)P``8``#!R")*"0>W_R XM]Q&`&/]2@@R"````"&W.0BW__TAM__=(>@`6+RT`"DZZ%]1/[P`,3-\`#$Y=Y XM3G4L($)I;B`E<P``2.<P("8O`!`D;P`42H-F#"\*3KH43C0`6$]@#"\*+P-.- XMNA1$-`!03TI"9P1P`&`"<!0O`$ZZ,)983TS?!`Q.=4CG(`!T`"!O``A","@`( XM4H(,@@````-M[D'L@4`B;P`,(HA![(%6(F\`$"*((&\`%$*0(&\`&$*03-\`= XM!$YU2.<`("1O``@,$@!M9P@,*@!M``%F&A\J``).N@)<2D!43V8(<`!,WP0`Z XM3G5.N@2X+R\`$"\O`!`O"F$:#!(`;4_O``QG"`PJ`&T``68$3KH$0G`!8-!.F XM5?_R2.<@,"1M``PF;0`0+RT`"$AM__)(;?_V2&W_^DZZ`.!/[P`02&W__R\*) XM(&W_^DZ0%``,```$4$]G?A`"2(!(P&!D'RW__R\+(&W_]DZ07$]@8DAZ`&PO@ XM"TZZ%HH?+?__+PH@;?_R3I!/[P`.8$9(>@!7+PM.NA9N'RW__R\*(&W_\DZ0" XM3^\`#F`J'RW__R\*(&W_\DZ02'H`22\+3KH61D_O``Y@#E-`9YA30&>D4T!G" XMOD`#_;DS?#`1.74YU15)23U(*`%9!3%5%(%1/3R!"24<@*&]V97)F;&]WY XM*0H`06X@=6YK;F]W;B!E<G)O<B!O8V-U<G)E9"X*``!(YS`P)&\`%"9O`!@D2 XM+P`<)B\`("!#$!!(@$C`8$!!^@D0)(A!^@I6(D(BB&!"0?H)S"2(0?H*NB)"= XM(HA@,D'Z"'(DB$'Z"J0B0B*(8")!^@C@)(A!^@HF(D(BB&`2!$``8F?*!$``K XM"V?47T!GL&#>($,0*``!2(!(P&`@0?H)1B:(8"I!^@FT)HA@(D'Z"(`FB&`:[ XM0?H)+B:(8!($0`!B9^($0``+9^1?0&?08.9,WPP,3G4@+P`&(&\`"A&O``0(W XM`!\O``1A!%1/3G5(YR``%"\`"`P"`'1G#`P"`&)G!@P"`&UF!'`!8`)P`$S?< XM``1.=4CG`"`D;P`(2A)G"DHJ``%G!'`!8`)P`$S?!`!.=4ZZ`BA(>``43KHM. XMW%A/3G5.5?O\2.<`($AZ`7!(;?P`3KHKJD*M^_Q(>@%N3KH3W"1`2H!/[P`,V XM9R!(;?O\2&W\`"\*3KH#C$I`3^\`#&8*<`!,WP0`3EU.=4*G0J=.NB`@*4"`( XM!%!/9A9(>@$[2&R!;$ZZ%&).N@&R<`!03V#2".P``(`/2'@`4B\L@`1.NB#DX XM*4"`"%!/9A9(>@$?2&R!;$ZZ%#).N@&"<`!03V"B".P``8`/(&R`"!%\`"``^ XM3W(`(FR`""`M^_Q![?P`+&R(#$ZN_D1*@&<B+RW[_$AM_`!(>@#]2&R!;$ZZN XM$^I.N@$Z<`!/[P`08`#_6`CL``*`#R!L@`@1?``0`$]*+0`(9R8@;(`((7SWN XM]_?W`$0@;(`((7SW]_?W`$@@;(`(T?P```!/"-``!B!L@`@A?```>A(`/"!L1 XM@`A"J``X(&R`"#%\``L`'")L@`@L;(@,3J[^.$J`9QA(>@"C2&R!;$ZZ$V9.D XMN@"V<`!03V``_M8([``#@`]P`6``_LIS97)I86PN9&5V:6-E`$U07TU)1$E?N XM1$5624-%`$-A;FYO="!C<F5A=&4@<&]R=`H`0V%N;F]T(&-R96%T92!E>'1EC XM;F1E9"!)+T\@<W1R=6-T=7)E"@!#86YN;W0@;W!E;B!S97)I86P@9&5V:6-E" XM("(E<R(L('5N:70@)60N"@!#86YN;W0@<V5T('-E<FEA;"!P87)A;65T97)SL XM+@H`""P``H`/9R9A2B)L@`@L;(@,3J[^(")L@`@L;(@,3J[^)B)L@`@L;(@,U XM3J[^/@@L``&`#V<*+RR`"$ZZ'U983P@L``"`#V<*+RR`!$ZZ'JI83TYU(&R`- XM"#%\``4`'")L@`@L;(@,3J[^.$YU(&R`"#%\``D`'")L@`@L;(@,3J[^."!LS XM@`@@*``@3G4@;(`(,7P``@`<(&R`""%O``0`*"!L@`@A;P`(`"1.=2!L@`@QZ XM?``#`!P@;(`((6\`!``H(&R`""%O``@`)$YU2.<X`'0`(&R`!'``$"@`#W(!3 XMX:$H`0C$``PB;(`(+&R(#$ZN_C(@!"QLB`Q.KO[")@`(`P`,9P1T_V`H(FR`N XM""QLB`Q.KOXL2H!G%B)L@`@L;(@,3J[^)B!L@`@D*``@8`)@PB)L@`@L;(@,) XM3J[^(")L@`@L;(@,3J[^)B`"3-\`'$YU2.<@("1O``Q.NO\2)`!O-@R"```$J XM`&P$(`)@!B`\```$`"\`+PI.NO\4(FR`""QLB`Q.KOXX(&R`""`H`"!03TS?5 XM!`1.=4AX``$O"DZZ_NY.NO\J4$]@Z$CG`#`D;P`,)F\`$"`*9PY*$F<*#!(`^ XM.F<$%MI@[D(3#!(`.F8&2BH``6862'H`1DAL@6Q.NA#.<`!03TS?#`!.=5**A XM+PI.N@#:2D!83V822'H`?$AL@6Q.NA"J<`!03V#:+PI.NA98(&\`&""`<`%8M XM3V#(66]U<B!-241)(&1E=FEC92!N86UE("AV87)I86)L92!-4%]-241)7T1%O XM5DE#12D@:7,@;6ES<VEN9R!A(&-O;&]N"F%N9"]O<B!A('5N:70@;G5M8F5RY XM+@H`66]U<B!-241)(&1E=FEC92!U;FET(&YU;6)E<B`H=F%R:6%B;&4@35!?M XM34E$25]$159)0T4I(&UU<W0@8F4*82!P;W-I=&EV92!I;G1E9V5R+@H`2.<`> XM("1O``@@"F<$2A)F"'``3-\$`$YU2A)G'!`22(!![(`_$#```$B`"````F8$M XM<`!@WE**8.!P`6#60JR`$"`L@!2PKP`$;`XO+P`,+R\`#&$(4$].=7#_8/I(< XMYP`@)&\`""`L@!3E@"!R"``,$``M9DP@+(`<(BR`%.6!('(8`!`P"`%(@$C`O XM*4"($&<P#*P````MB!!F#%*L@!1P_TS?!`!.=2\LB!!(;(`42&R`'"\O`!@OJ XM"F$*3^\`%&#@</]@W$CG.#`F;P`8)&\`("0O`"0F+P`H4I(O`R\O`"!.N@^8@ XM*`!03V<L($0,*``Z``%F#"\*+P(O"V$T3^\`#"\*+P(O"TZZ`6`@`T_O``Q,H XMWPP<3G4O`TAX``%A>"\*+P(O"TZZ`4)P/T_O`!1@X$CG(#`F;P`0)&\`%"0OD XM`!@@0B!0(!+E@")S"`!*,8@!9Q0@0B`2Y8`@4-'S"`!2B"E(@!!@)"`2Y8!*2 XMLP@$9PX@$N6`*7,(!(`04I)@#"\LB!!(>``"80Y03R!"0I!2DDS?#`1.=4CG; XM,``F+P`,)"\`$$JL@!AG4@R#`````688+RR`("\"2'H`@$AL@6Q.N@XB3^\`. XM$&`R#(,````"9A@O+(`D+P)(>@!H2&R!;$ZZ#@)/[P`08!(O`DAZ`%Q(;(%LT XM3KH-[D_O``Q,WP`,3G5);&QE9V%L(&]P=&EO;BX*`$%N(&%R9W5M96YT(&ES@ XM(')E<75I<F5D+"!B=70@;6ES<VEN9RX*`"TE8SH@)7,`+25C.B`E<P`M)6,ZG XM(&%N('5N:VYO=VX@97)R;W(@;V-C=7)R960*`$CG(#`F;P`0)&\`%"0O`!@@` XM$N6`2K,(`&<F(!+E@"!S"``,$``M9A@@0B!0(!+E@")S"`!*,8@!9@92DB!"^ XM0I!,WPP$3G4@+(`LL*R`*&T22&R#`DZZ^\@I0(`H0JR`+%A/#*S_____@"AFC XM#$*L@"Q"K(`H<`1.=4JL@"AN#$*L@"Q"K(`H<`)@["`L@"Q2K(`L0>R#`B)O> XM``@2L`@`<`%@U$AX``%(;P`,3KKZSDZZ^NH,@`````%03V8$<`%@`G``3G5(; XMYS`P)&\`%"9O`!AT!$(3#`(``6="#`(``F<\#`(``V<V(%*QZ@`$9`H@4E*26 XM<``0$&`(+PI.NA-66$\F``R`_____V<2+PL?`B\#3KKK3A0`3^\`"F"X#`(`` XM`68(<`%,WPP,3G4,@_____]F"@P"``1F!'`$8.@,@_____]F!'`"8-P,`@`#- XM9@1P`V#2%H-P`F#,2.<`("1O``A2K(`P+RR`,$AZ`!PO"DZZ#`HO"A\O`!Q./ XMNO,R3^\`$DS?!`!.=3PE-FQD/B`@(`!(YR`@)&\`#"!2L>H`!&0*(%)2DG``Y XM$!!@""\*3KH2I%A/)``,@/____]G#B!O`!`0@G`!3-\$!$YU<`1@]DCG("`D\ XM;P`,%"\`$"!2L>H`!&0,(%)2DA""<``0`F`.<``0`B\`+PI.NAY&4$\,@/__F XM__]G!'`!8`)P`$S?!`1.=4CG("`D;P`,<``0+P`00>R`/Q`P``!(@`@```1G6 XM!DS?!`1.=2!2L>H`!&0*(%)2DG``$!!@""\*3KH2"%A/)``,@/____]G$D'L= XM@#\0,"@`2(`(```$9@)@R@R"_____V<*+PHO`DZZ"RA03V"P3KKXHDYU3G5(, XMYP`P)F\`#$'L@6PD2$AZ`:`O"TAZ`4XO"DZZ"MA(>`!P2'@`9TAX`&](>`!I^ XM+PM(>@&"+PI.N@J\2'H!MB\*3KH*LD_O`#1(>@'B+PI.N@JD2'@`:4AZ`?DO6 XM"DZZ"I9(>`!O2'H"&2\*3KH*B$AX`&](>`!I2'H"-2\*3KH*=DAZ`E8O"DZZ^ XM"FQ/[P`X2'@`=$AZ`E8O"DZZ"EI(>`!B2'H":B\*3KH*3$AX`&U(>@)\+PI.Z XMN@H^2'@`9TAZ`HTO"DZZ"C!(>`!P2'H"M"\*3KH*(D_O`#Q(>@+9+PI.N@H4` XM2'H"^$AX`'!(>`!B2'@`;TAX`&U(>`!I+PM(>@+!+PI.N@GP2'@`;4AX`&](P XM>`!T2'@`:2\+2'H"[B\*3KH)U$_O`$A(>`!T2'@`:2\+2'H##B\*3KH)O$AZ7 XM`S$O"DZZ";)(>`!T2'@`:4AX`#](>@,^+PI.N@F<3^\`,$S?#`!.=4U)1$D@@ XM4&QA>6=R;W5N9"`H)7,I+"!V97)S:6]N("5S+"!B>2!$86YI96P@0F%R<F5T, XM="X@(#$P,"4E(%!U8FQI8R!$;VUA:6XA"@`Q+C``57-A9V4Z("5S("TE8SQ&L XM3U)-050^("TE8SQ&3U)-050^(%LM)6,@:6YF:6QE72!;+25C(&]U=&9I;&5=B XM"@!4:&4@<')O9W)A;2!Q=6ET<R!A="!E;F0M;V8M9FEL92P@;W(@=VAE;B!>Q XM0R!I<R!P<F5S<V5D+@H`"E1H92!F;&%G<R!M87D@87!P96%R(&EN(&%N>2!O3 XM<F1E<CH*``DM)6,)4W!E8VEF>2!T:&4@:6YP=70@9F]R;6%T+B`@(%M-04Y$N XM051/4EE="@`)+25C"5-P96-I9GD@=&AE(&]U='!U="!F;W)M870N("!;34%.0 XM1$%43U)970H`"0DB+25C(B!A;F0@(BTE8R(@;75S="!%04-((&)E(&9O;&QON XM=V5D(&)Y`"!E>&%C=&QY(&]N92!O9CH*``D)"25C"51E>'0@*')E861A8FQEY XM(&)Y(&AU;6%N<RDN"@`)"0DE8PE":6YA<GD@9&%T82`H9F]R(&9I;&5S*2X*V XM``D)"25C"4U)1$D@*'5S:6YG($U)1$D@<&]R="DN"@`)+25C"4=E="!D871AG XM(&9R;VT@=&AI<R!F:6QE+B`@("!;1&5F875L=#UK97EB;V%R9%T*``DM)6,)V XM4'5T(&1A=&$@:6YT;R!T:&ES(&9I;&4N("`@(%M$969A=6QT/7-C<F5E;ET*7 XM``I%>&%M<&QE<SH*``DE<R`M)6,E8R`M)6,E8R`M)6,@9&%T80DE<PH`4F5AZ XM9"!-241)("8@<'5T(&ET(&EN=&\@8FEN87)Y(&9I;&4@(F1A=&$B+@`))7,@/ XM+25C)6,@+25C)6,)"5)E860@='EP960@=&5X="P@<V5N9"!T;R!-241)("AF] XM=6XA*2X*``HB)7,@+25C)6,B('5N9&5R<W1A;F1S(&1E8VEM86PL(&]C=&%L! XM+"!H97@L`"!B:6YA<GDL(&-H87)A8W1E<G,L(&%N9"!S=')I;F=S+@H`1F]R6 XM(&1E=&%I;',L('1Y<&4@)6,@=VAI;&4@:6X@(BTE8R5C(B!M;V1E+@H``"\OH XM``1(>@`02&R!;$ZZ!BA/[P`,3G50;&5A<V4@='EP92`B)7,@/R(@9F]R(&ENO XM<W1R=6-T:6]N<RX*`$CG`#`F;P`,+R\`$"\+3KH-FB1`2H!03V86+PLO+P`8F XM2'H`%DAL@6Q.N@703^\`$"`*3-\,`$YU0V%N;F]T("5S('1H92!F:6QE("(EK XM<R(L"@!(YR`@)&\`#"\"=/XB"BQLB!1.KO^L)!\D`&<2(@(L;(@43J[_IG`!- XM3-\$!$YU<`!@]DY5_`!(YR`@)&T`"'0!+PIAO$I`6$]G6$AZ`*<O"DAZ`')(\ XM;(%L3KH%3DAL@6Q.NA>&2&R!0$AX`_](;?P`3KH$U$J`3^\`(&<B$"W\`$B`T XM2,`O`$ZZ!*(,@````%E83V<$<`%@`G``-`!@`G0!8`)T`$I"9Q(O"DAZ`%E(A XM;(%L3KH$]$_O``PP`DS?!`1.74YU1FEL92`B)7,B(&%L<F5A9'D@97AI<W1ST XM+@I/5D525U))5$4@:70_(%LE<UTZ(`!997,O3F\L(%)%5%523CU.;P`E<R!NN XM;W0@;W9E<G=R:71T96XN"@H``$CG,#`F;P`4)&\`&"0O`!PF+P`@(`IG!$H2& XM9@I![(%6(D,BB&`P+PI.NO[L2D!83V<(<`!,WPP,3G5(>@!.2'H`2"\*3KK^M XM3"!#((!/[P`,9@1P`&#>(`MG!$H39@I![(%`(D(BB&`<2'H`*$AZ`"(O"TZZ< XM_AX@0B"`3^\`#&8$<`!@L'`!8*QW`'=R:71E`'(`<F5A9```2.<P,"1O`!0F; XM;P`8)"\`'"8O`"`@"F<00>R!0+7(9P@O"DZZ&!183R`+9Q!![(%6M\AG""\+( XM3KH8`%A/2H)G""\"3KH9Y%A/2H-G""\#3KH9V%A/3-\,#$YU2.<`,"9O``PD7 XM;P`0(`IG&DH29Q8O"DZZ%9Y83U*`+P!.NAHD)H!83V8(<`!,WPP`3G4O"B\3% XM3KH:6'`!4$]@['``3G5.5?_L2.<@("0M``@D;0`,2&W_\$AM__1(;?_X2&W_H XM_$AM_^U.NNNT#((````!3^\`%&<:#((````"9AY(>@#"+RH`!$ZZ`ZQ*@%!/[ XM9@PO$DZZ^!!83V```(A(;?_P2&W_]$AM_^TO"B\"3KH`XDI`3^\`%&882'H`O XMBDAL@6Q.N@+6+Q).NOR:3^\`#&!22&W_^$AM__PO+?_P+RW_]$ZZ_BI*0$_O4 XM`!!F`F`T("R`%+"";!A(>@!V2&R!;$ZZ`I@O$DZZ_%Q/[P`,8!0O+?_X+RW_J XM_$AM_^U.NNL^3^\`#"\M__`O+?_T+RW_^"\M__Q.NOYP3^\`$$S?!`1.74YU! XM/P!4:&5R92!I<R!A;B!E<G)O<B!I;B!Y;W5R(&]P=&EO;G,O9FQA9W,N"@!9+ XM;W4@9V%V92!M92!T;V\@;6%N>2!A<F=U;65N=',N"@``2.<^,"@O`"`F;P`D; XM)&\`*"HO`"PL+P`P=`%(;(`T+PLO!$ZZ\CXF``R`_____T_O``QG``#L(`-@; XM``#$,`)(P$H29@1R`6`"<@#`@30`+PI"IR!L@!`?$$ZZ['S$0$_O``I@``"X! XM,`)(P$HJ``%F!'(!8`)R`,"!-``O"DAX``$@;(`0'Q!.NNQ.Q$!/[P`*8```( XMBC`"2,`@;(`02A!G!'(!8`)R`,"!-``O+(`0+P5.NOV\Q$!03V!B,`)(P"!LL XM@!!*$&<$<@%@`G(`P($T`"\L@!`O!DZZ_9;$0%!/8#PP`DC`2BH``F8$<@%@X XM`G(`P($T`%(J``)@(G0`8!X$@````&=GCE6`9P#_,EV`9P#_5E.`9Z11@&?&= XM8-Y@`/[\2D)G$"\*3KKK[$I`6$]G!'`!8`)P`$S?#'Q.=4CG`"!A%B\O``A." XMN@;\)$!A,"`*6$],WP0`3G63R2QLB`Q.KO[:*4"'`B!LAP(I:`"XAP8@;(<"" XM(7S_____`+A.=2!LAP(A;(<&`+A.=2`O``0,@````&!C#@R`````>F(&!(``@ XM```@3G5(YS`R+&\`&"8O`!PD;P`@)DY3@V]&(%*QZ@`$9`H@4E*2<``0$&`(7 XM+PI.N@<.6$\D``R`_____V<.%H)2BPR"````"F;,8!2WSF<(""H``0`-9@APC XM`$S?3`Q.=4(3(`Y@]$CG("!![P`4)$@O"B\O`!0O+P`43KH-#B0`(`)/[P`,, XM3-\$!$YU2.<@("0O``PD;P`0#(+_____9Q(@"F<.2FH`#&<(""H``@`,9PAP7 XM_TS?!`1.=4JJ``AF""\*3KH58%A/(%*QZ@`(9A`@:@`$L>H`"&+84I(E4@`$1 XM0>H`#`BH``$``4'J``P(T``$4Y(@4A""<``0`F"V3OH$%DSO`P``!+/(9PQP_ XM`!`8L!E6R/_Z9@1P`$YU8P1P`4YU</].=6%P0^R#`D7L@P*UR68.,CP!6FL(; XM=``BPE')__PI3X@8+'@`!"E.B`Q(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?SN XM7TYS0_H`($ZN_F@I0(@49@PN/``#@`=.KO^48`1.N@`:4$].=61O<RYL:6)R> XM87)Y`$GY``!__DYU2.<`,"9O`!`O#B(\``$``#`L@O@O`4C`(@#CB-"!XX@BG XM'RQLB`Q.KO\Z+%\I0(@<9AY(YP$&F\TN/``!```L;(@,3J[_E$S?8(`N;(@8E XM3G4@;(@<0F@`!"!LB!PQ?``!`!`@;(@<,7P``0`*(&R(&"`LB!B0J``$4(`I$ XM0(@@(&R((""\34%.6"\.D\DL;(@,3J[^VBQ?)$!*J@"L9S(O"R\O`!`O"DZZ6 XM`.PI?`````&()"!LB!Q8B`!0@``@;(@<T?P````*`%"``$_O``Q@5B\.0>H`= XM7"QLB`Q.KOZ`+%\O#D'J`%PL;(@,3J[^C"Q?*4"(*"!LB"A*J``D9R(O#B!L+ XMB"@@:``D(A`L;(@43J[_@BQ?+RR(*"\*3KH">%!/*6R(*(@L+PXL;(@43J[_4 XMRBQ?(&R('""`+PXL;(@43J[_Q"Q?(&R('"%```9*J@"D9R1(YR`")#P```/M[ XM0?H`-"((+&R(%$ZN_^),WT`$(&R('"%```PO+(@L+RR(,$ZZY8I03R\`3KH6[ XM3EA/3-\,`$YU*@!(YS@R)B\`'"@O`"`F;P`D($-*J`"L9Q0@0R`H`*SE@"Q`W XM("X`$.6`)$!@!"1L@OH0$DB`2,#0A%2`*4"(-"\.<@`@+(@T+&R(#$ZN_SHL: XM7RE`B#AF!DS?3!Q.=1`22(!(P"0`+P)!Z@`!+P@O+(@X3KH%LDAZ`48@0M'LV XMB#@O"$ZZ$Z8O!"\++RR(.$ZZ`3`@;(@X0C`H`"E\`````8@P)$+5[(@X4HHFF XM2D_O`"`0$DB`2,`D``R`````(&<@#((````)9Q@,@@````QG$`R"````#6<(B XM#((````*9@12BF#,#!(`(&UV#!(`(F8J4HH0&DB`2,`D`&<<%L(,@@```")FF XM$`P2`")F!%**8`9"*___8`)@VF`X$!I(@$C`)`!G+`R"````(&<D#((````)< XM9QP,@@````QG%`R"````#6<,#((````*9P06PF#*0AM*@F8"4XI2K(@P8`#_N XM4D(3+PYR`"`LB##E@%B`+&R(#$ZN_SHL7RE`B"QF"$*LB#!@`/[4=``D;(@XJ XM8!H@`N6`(&R(+"&*"``O"DZZ#;+5P%**6$]2@K2LB#!MX"`"Y8`@;(@L0K`(& XM`&``_IP@`$SO`P``!"`((B\`#$H89OQ3B!#95\G__`2!``$``&KR0B!.=2!O: XM``1P`!(O``L0&+`!5\C_^F<$<`!.=5-((`A.=4CG.#(F;P`<*"\`("\.<`!#& XM^@#$+&R(#$ZN_=@L7RE`B#QF!DS?3!Q.=2\.($0@:``D(&@`!"QLB#Q.KO^R7 XM+%\D0$J`9W@O#D/Z`)D@:@`V+&R(/$ZN_Z`L7RQ`2H!G4$CG(`(D/````^TB= XM+P`$+&R(%$ZN_^),WT`$)@!G,B`#Y8`D`"!")V@`"`"D)T,`G$CG(`(D/```R XM`^U!^@!.(@@L;(@43J[_XDS?0`0G0`"@+PX@2BQLB#Q.KO^F+%\O#B)LB#PL4 XM;(@,3J[^8BQ?0JR(/&``_U!I8V]N+FQI8G)A<GD`5TE.1$]7`"H`2.<P("1OH XM`!`0$DB`#$``(&<*$!)(@`Q```EF!%**8.AV`!`22(`,0``M9@9V`5**8`P0X XM$DB`#$``*V8"4HIT`&`:(`(B`.6(T('CB!(:2(%(P="!)``$@@```#`0$DB`# XM0>R`/Q`P``!(@`@```)FTDJ#9P8@`D2`8`(@`DS?!`Q.=4CG`#(L;P`0+PY.O XMN@O4#(````#\6$]C"'``3-],`$YU2'H`<DALAPI.NA"0+PY(;(<*3KH";DAZZ XM`&%(;(<*3KH!-"1`2H!/[P`89@1P`&#*0>R'"B9((%*QZ@`$9`H@4E*2<``0L XM$&`(+PI.N@`P6$\6@`P``/]G"E*+0>R("K?(9=0O"DZZ#8)"$T'LAPH@"%A/H XM8(9%3E8Z`'(``$CG,#`D;P`4(`IG%G``,"H`#"8`9PP(`P`*9@8(`P`#9PAPU XM_TS?#`Q.=2!2L>H`!&4``)I*J@`(9@@O"DZZ#JA83S`J``P"0`"@9S!![(%`J XM)DAP`#`K``P"@```0"`,@```0"!F""\+3KH*_EA/U_P````60>R"^+?(9=9!] XMZ@`,`E"O_R\J`!`O*@`($"H`#DB`2,`O`$ZZ`WPD`$_O``QN'$J"9@1P`F`"0 XM<`1!Z@`,<@`R$("!,(!P_V``_V@DJ@`(($+1Z@`()4@`!"!24I)P`!`08`#_W XM3DAX__].N@#N+P`O+P`0+R\`$$ZZ``A/[P`03G5(YSPR+&\`("1O`"0F;P`HZ XM*"\`+"8\```$`!`22(!(P"H`#(````!R9@XD/```$``F/````@!@*`R%````D XM=V8()#P``!,!8!@,A0```&%F""0\```9`6`(<`!,WTP\3G52BA`22(`,0``KV XM9@P0*@`!2(`,0`!B9PP0$DB`#$``8F8*4HH(PP`$"((`#!`22(`,0``K9AH@@ XM`@B````D``C"``$@`P*`___Y_R8`",,`"R`.9PPO`B\.3KH`L"@`4$]*A&V4M XM#(0````4;(P71``.-T,`#"`+8()(YP`@0>R!0"1(2FH`#&<8U?P````60>R"6 XM^+7(9@AP`$S?!`!.=6#B0FH`%$*20JH`!$*J``@@"F#F3.\#```$(`A*&&;\= XM4T@0V6;\3G5,[P,```0@""(O``Q@`A#95\G__&<,!($``0``:O!.=4(84<G_? XM_`2!``$``&KR3G4O+P`(2'@#`2\O``QA!D_O``Q.=4CG/C(F;P`D*B\`*$ZZ* XM#Y8D;(@<=@!@$B`#(@#CB-"!XXA*L@@`9Q!2@S!L@OBQPV[F>`A@``$J"`4`S XM"6=02.<@`G3_(@LL;(@43J[_K$S?0`0L`&<X+PXB!BQLB!1.KO^F+%\O#B(+U XM+&R(%$ZN_[@L7TJ`9A@O#BQLB!1.KO]\+%\H``R`````S68``-1(YR`")#P`9 XM``/M(@LL;(@43J[_XDS?0`0D`$J"9@``E`@%``AF!G@!8```J$CG(`(D/```Z XM`^XB"RQLB!1.KO_B3-]`!"0`9A`O#BQLB!1.KO]\+%\H`&!Z+PYP(4/Z`+PL@ XM;(@,3J[]V"Q?+$!*@&<0+PXB5RQLB`Q.KOYB+%]@,$CG,`)V`4'Z`)XD""(7X XM+&R(%$ZN_]!,WT`,2.<P`G;_=``B%RQLB!1.KO^^3-]`#&`L(`4"@```!0`,A XM@```!0!F'"\.(@(L;(@43J[_W"Q?>`4I1(A`</],WTQ\3G4@`R(`XXC0@>.(! XM)8((`"`#(@#CB-"!XX@UA0@$"`4`"V<62.<P`G8!=``B%RQLB!1.KO^^3-]`3 XM#"`#8+YD;W,N;&EB<F%R>0```$CG,#`D+P`4)F\`&$ZZ#>`@`B(`XXC0@>.(Y XM)$#5[(@<2H)M##!L@OBQPF\$2I)F$"E\`````XA`</],WPP,3G4P*@`$2,`"I XM@`````,,@`````%F#"E\````!HA`</]@VDCG,`(F+P`H)`LB$BQLB!1.KO_6D XM3-]`#"8`#(#_____9A0O#BQLB!1.KO]\+%\I0(A`</]@I"`#8*!(YW``-`'$Q XMP"8!2$/&P$A#0D/4@TA`P,%(0$)`T(),WP`.3G5(YR`P)F\`$"\.</\L;(@,\ XM3J[^MBQ?)``,@/____]F"'``3-\,!$YU+PXB/``!``%P(BQLB`Q.KO\Z+%\D" XM0$J`9A(O#B`"+&R(#$ZN_K`L7W``8,XE2P`*%6\`%P`)%7P`!``(0BH`#A5"L XM``\O#I/)+&R(#$ZN_MHL7R5``!`@"V<0+PXB2BQLB`Q.KOZ>+%]@#$'J`!0O< XM"$ZZ!>I83R`*8(!(YP`@)&\`"$JJ``IG#B\.(DHL;(@,3J[^F"Q?%7P`_P`(7 XM)7S_____`!0O#G``$"H`#RQLB`Q.KOZP+%\O#G`B(DHL;(@,3J[_+BQ?3-\$2 XM`$YU2.<@,"9O`!`D+P`4(`MF"'``3-\,!$YU+PXB/``!``$@`BQLB`Q.KO\ZU XM+%\D0$J`9@1P`&#<%7P`!0`(-4(`$B5+``X@"F#*2.<`("1O``@@"F8&3-\$W XM`$YU%7P`_P`()7S_____`!0E?/____\`&"\.<``P*@`2(DHL;(@,3J[_+BQ?F XM8,Y.5?WT2.<_,B9M``@L;0`0?@`D;0`,%A)F"B`'3-],_$Y=3G52B@P#`"5G8 XM0B0'(%.QZP`$9`P@4U*3$(-P`!`#8`YP`!`#+P`O"TZZ!5103PR`_____V<`G XM!'A2@A829@0@`F"X4HH,`P`E9L(N`G@`*WP````@__P6&G``$`-@:`C$``!@E XM\@C$``%@[`C$``)@Y@C$``-@X$WN``0D+O_\2H)L!@C$``!$@A8:8%8K?```7 XM`##__'0`8!@@`N>`<@`2`]"!T(+0@B0`!((````P%AIP`!`#0>R`/Q`P``!(= XM@`@```)FU&`<!$``(&>>5T!GH%]`9Z)30&>,54!G@E=`9ZQ@LBM"__@D/```S XM?<8,`P`N9EX6&@P#`"IF%DWN``0D+O_\2H)L!B0\``!]QA8:8#!T`&`8(`+G+ XM@'(`$@/0@=""T((D``2"````,!8:<``0`T'L@#\0,```2(`(```"9M0,@@``/ XM?<9G""M\````(/_\*@(,`P!H9@8(Q``'8!8,`P!L9@8(Q``&8`H,`P!,9@8(^ XMQ``(%AHK2@`,<``0`V```9Y@``,J"`0`!V<,3>X`!"!N__PPAV`<"`0`!F<,2 XM3>X`!"!N__P@AV`*3>X`!"!N__P@AW0`8``!LDWN``0D;O_\+PI.N@,0)``,? XMA0``?<983V<&M(5O`B0%8``!CDWN``06+O__0>W]^"1($(-T`6```7AT"&`0[ XM`$0`2'9X=!!@!@C$``1T"@P#`%AF"$'Z`J0@"&`&0?H"K2`(*T#]]`@$``9G= XM"DWN``0L+O_\8!@(!``$9PI-[@`$+"[__&`(3>X`!"PN__P(!``$9PI*AFP&J XM1(8(Q``%0>W_^"1(#(4``'W&9@)Z`4J&9@1*A6<<(`8B`DZZ!9P@;?WT%3`(M XM`"`&(@).N@68+`!FY$'M__B1RB0("`0``V=N#`,`;V842H)G"@P2`#!G"+2%@ XM;00J`E*%8%0,`P!X9P8,`P!89DA*@F=$#!(`,&<^M(5L$$'M_?JQRF0(%3P`M XM,%*"8.P(!```9AP,K0```##__&82(`)4@+"M__AL""HM__A5A6#*%0,5/``PC XM5(*TA6P00>W]^+'*9`@5/``P4H)@[&!,!$``)6<`_L($0``S9P#^T@1```MG6 XM`/ZJ4T!G`/[(6T!G`/["6T!G`/Y`4T!G`/ZH4T!G`/ZF5T!G`/YB54!G`/ZHH XM5T!G`/Z:8`#^&@@$``1G*`@$``5G!A4\`"U@&@@$``%G!A4\`"M@#@@$``)G\ XM!A4\`"!@`E."4H+>@@@$``!F``"0#*T````P__QF0@@$``1G/#`$`D``)F<T: XM(%.QZP`$9`X@4U*3$)IP`!`J__]@#G``$!HO`"\+3KH!I%!/#(#_____9P``; XMR%.M__A3@F`T(%.QZP`$9!`@4U*3$*W__W``$"W__V`0<``0+?__+P`O"TZZY XM`6I03PR`_____V<``(Y2AR`M__A3K?_XL()NP"H"(`)3@DJ`9RX@4['K``1DT XM#B!34I,0FG``$"K__V`.<``0&B\`+PM.N@$D4$\,@/____]G2&#*"`0``&<\% XM)`5@+"!3L>L`!&0.(%-2DQ"\`"!P`'`@8`Q(>``@+PM.N@#N4$\,@/____]G( XM$E*'("W_^%.M__BP@F[(8`#[1'#_8`#[2#`Q,C,T-38W.#E!0D-$148`,#$RT XM,S0U-C<X.6%B8V1E9@`@;P`$(`A*&&;\4TB1P"`(3G4@;P`$((A8D$*H``0A7 XM2``(3G5(YP`@)&\`""`*9D1![(%`)$A*:@`,9R8P*@`,`D`""&8<2'C__R\*C XM3KH`6@R`_____U!/9@AP_TS?!`!.==7\````%D'L@OBUR&7&<`!@Z$AX__\OS XM"DZZ`"Q03V#:2.<`($'L@4`D2"\*3KH!F%A/U?P````60>R"^+7(9>I,WP0`* XM3G5(YSP@)&\`&"@O`!P@"F<``6HT*@`,9P`!8@@"``EF``%:"`(``V8``5)!W XMZ@`,`E#O_4JJ``AF'`R$_____V8(<`!,WP0\3G4O"DZZ`JXT*@`,6$\(`@`.D XM9C0@4K'J``AC'DAX``$@$I"J``0O`!`J``Y(@$C`+P!.N@0H3^\`#"2J``@@+ XM:@`0T=(E2``$#(3_____9@1V`&`"%@0@$I"J``@J`#`"`D``H&=&#(3_____A XM9QH@4E*2$(-!Z@`,"-``!C000?K_%"E(B$12A0R$_____V<,#`,`"F<&NJH`. XM$&4$>/]@#"52``1P`!`#8`#_4@@"``YG*$J%9QPO!2\J``@0*@`.2(!(P"\`@ XM3KH$6K"%3^\`#&9.0>H`#`B0``8,A/____]F$B2J``@E:@`(``1P`!`#8`#_% XM"D'Z_IXI2(A$0>H`#`C0``8DJ@`((&H`$-'2)4@`!"!24I(0@W``$`-@`/[>? XM0>H`#`CH``(``25J``@`!"2J``AP_V``_L1.5?_V2.<X("1M``AT`"`*9P9*Y XM:@`,9@IP_TS?!!Q.74YU""H``0`,9@HO"DZZ_<Z$@%A/$"H`#DB`2,`O`$ZZ# XM!AZ$@`@J````#5A/9PHO*@`(3KH!G%A/2FH`%&=22'H`;DAM__=.N@)*."H`^ XM%'8`4$]P`#`$<@I.N@"`!H`````P<@>2@T'M__<1@!@`2$1"1$A$B/P`"E*#C XM#(,````%;=!"+?__2&W_]TZZ`P983T*20JH`!$*J``A":@`,2H)G!G#_8`#_8 XM5'``8`#_3E1-4`!(YT@`0H1*@&H$1(!21$J!:@9$@0I$``%A/DI$9P)$@$S?% XM`!)*@$YU2.=(`$*$2H!J!$2`4D1*@6H"1(%A&B`!8-@O`6$2(`$B'TJ`3G4O_ XM`6$&(A]*@$YU2.<P`$A!2D%F($A!-@$T`$)`2$"`PR(`2$`R`H+#,`%"04A!0 XM3-\`#$YU2$$F`2(`0D%(04A`0D!T#]"`TX&V@6($DH-20%'*__),WP`,3G5(; XMYR`@)&\`#'1!$"H`#DB`2,`O`$ZZ`3!*@%A/9P1T(6`(0>R!;+7(9Q@E?```+ XM!```$$AX!`!.N@"V)4``"%A/9A0E?`````$`$$'J``\E2``(-#P`@$'J``QP< XM`#`0,@)(P8"!,(`E:@`(``0DJ@`(3-\$!$YU2.<`,BQO`!"7RR1LB$A@#$'JZ XM``B]R&<.)DHD4B`*9O!,WTP`3G4@"V<$)I)@!"E2B$@O#B`J``10@")*+&R(& XM#$ZN_RXL7V#82.<`,"1LB$A@&"92+PX@*@`$4(`B2BQLB`Q.KO\N+%\D2R`*G XM9N1"K(A(3-\,`$YU2.<@("0O``Q*@F8(<`!,WP0$3G4O#G(`(`)0@"QLB`Q.+ XMKO\Z+%\D0$J`9@1P`&#>0?K_GBE(B$PDK(A()4(`!"E*B$@@"E"`8,1,[P,`_ XM``0@"!#99OQ.=4CG("`D+P`,(`(B`..(T('CB"1`U>R('$J";0PP;(+XL<)OY XM!$J29A`I?`````.(0'#_3-\$!$YU+PX@`B(`XXC0@>.((&R('"(P"``L;(@41 XM3J[_*"Q?2H!G!'`!8`)P`.<P("0O`!!.N@%J(`(B`..(T('CB"1`U>R(# XM'$J";0PP;(+XL<)O!$J29A`I?`````.(0'#_3-\$#$YU2.<P`B`O`"13@"8`9 XM)"\`("(2+&R(%$ZN_[Y,WT`,)@`,@/____]F%"\.+&R(%$ZN_WPL7RE`B$!P' XM_V"^2.<P`G8`=``B$BQLB!1.KO^^3-]`#&"F2.<`("1O``@O#B(*+&R(%$ZN) XM_[@L7TJ`9A@O#BQLB!1.KO]\+%\I0(A`</],WP0`3G5P`&#V2.<P,"0O`!0FQ XM;P`83KH`H"`"(@#CB-"!XX@D0-7LB!Q*@FT,,&R"^+'";P1*DF80*7P````#> XMB$!P_TS?#`Q.=3`J``0"0``#9@PI?`````:(0'#_8.0(*@`#``1G%DCG,`)V% XM`70`(A(L;(@43J[_ODS?0`Q(YS`")B\`*"0+(A(L;(@43J[_T$S?0`PF``R`V XM_____V84+PXL;(@43J[_?"Q?*4"(0'#_8)`@`V",2.<@`"\.(CP``!``<``L> XM;(@,3J[^SBQ?)``(```,9Q)*K(@D9@@@`DS?``1.=4ZZTB!P`&#R2JR(4&<4M XM(&R(4"!H``1.D"!LB%`I4(A08.9*K(A$9P8@;(A$3I`O+P`$3KH`!EA/3G5(0 XMYS``)B\`#$JLB!QG-'0`8`HO`DZZ`4I83U*",&R"^+'";NXO#C`L@OA(P"(`L XMXXC0@>.((FR('"QLB`Q.KO\N+%]*K(A,9P8@;(A,3I!*K(+^9Q`O#B(L@OXL2 XM;(@43J[_IBQ?2JR(5&<((&R(5""LB%A*K(A<9Q`O#B)LB%PL;(@,3J[^8BQ?< XM2JR(8&<0+PXB;(A@+&R(#$ZN_F(L7TJLB&1G$"\.(FR(9"QLB`Q.KOYB+%]*( XMK(AH9Q`O#B)LB&@L;(@,3J[^8BQ?2.<`!BQX``0(+@`$`2EG$$OZ``A.KO_B# XM8`9"I_-?3G,J7TJLB"AF-$JLB#AG+"\.("R(-")LB#@L;(@,3J[_+BQ?+PX@$ XM+(@PY8!8@")LB"PL;(@,3J[_+BQ?8!PO#BQLB`Q.KO]\+%\O#B)LB"@L;(@,1 XM3J[^ABQ?+PXB;(@4+&R(#$ZN_F(L7R`#+FR(&$YU3-\`#$YU2.<@("0O``P@- XM`B(`XXC0@>.()$#5[(@<2H)M##!L@OBQPF\$2I)F$"E\`````XA`</],WP0$Y XM3G4P*@`$`D"``&8.+PXB$BQLB!1.KO_<+%]"DG``8-P``````^P````!````. XM`0``(E(````````#\@```^H```#``````````````````````````````0``8 XM``$````````3/```$TT```````````````!I.F\Z9SIP.G@``"`@("`@("`@_ XM(#`P,#`P("`@("`@("`@("`@("`@("`@D$!`0$!`0$!`0$!`0$!`0`P,#`P,< XM#`P,#`Q`0$!`0$!`"0D)"0D)`0$!`0$!`0$!`0$!`0$!`0$!`0%`0$!`0$`*0 XM"@H*"@H"`@("`@("`@("`@("`@("`@("`D!`0$`@````````````````````Z XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM`````````````````````````````````````````````````@````````$`# XM``````````````````0``0`````!```````````````````$``(``````0``- XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````%``````````````#[`````(`````````'@```"(`% X3```````#\@```^L````!```#\@``9 X`` Xend Xsize 16264 END_OF_FILE if test 22805 -ne `wc -c <'MP.uu'`; then echo shar: \"'MP.uu'\" unpacked with wrong size! fi # end of 'MP.uu' fi echo shar: End of archive 2 \(of 2\). cp /dev/null ark2isdone MISSING="" for I in 1 2 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked both archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>. Mail comments to the moderator at <amiga-request@uunet.uu.net>. Post requests for sources, and general discussion to comp.sys.amiga.misc.